<?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>202560</bug_id>
          
          <creation_ts>2019-10-03 22:33:29 -0700</creation_ts>
          <short_desc>[WebAuthn] Move the mock testing entrance to Internals</short_desc>
          <delta_ts>2019-10-09 16:07:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</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>
          
          <blocked>182769</blocked>
    
    <blocked>202565</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>alex.gaynor</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1576723</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-03 22:33:29 -0700</bug_when>
    <thetext>Figure out a way to bridge the current mock test infra into API test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576724</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-03 22:33:47 -0700</bug_when>
    <thetext>&lt;rdar://problem/55973793&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578066</commentid>
    <comment_count>2</comment_count>
      <attachid>380496</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-08 20:27:31 -0700</bug_when>
    <thetext>Created attachment 380496
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578147</commentid>
    <comment_count>3</comment_count>
      <attachid>380518</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-09 01:53:03 -0700</bug_when>
    <thetext>Created attachment 380518
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578149</commentid>
    <comment_count>4</comment_count>
      <attachid>380520</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-09 01:59:58 -0700</bug_when>
    <thetext>Created attachment 380520
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578324</commentid>
    <comment_count>5</comment_count>
      <attachid>380550</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-09 11:56:22 -0700</bug_when>
    <thetext>Created attachment 380550
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578341</commentid>
    <comment_count>6</comment_count>
      <attachid>380555</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-09 12:26:05 -0700</bug_when>
    <thetext>Created attachment 380555
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578344</commentid>
    <comment_count>7</comment_count>
      <attachid>380555</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-09 12:29:59 -0700</bug_when>
    <thetext>Comment on attachment 380555
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=380555&amp;action=review

&gt; Source/WebCore/ChangeLog:9
&gt; +        This patch moves TestRunner.setWebAuthenticationMockConfiguration to

Could you please explain the motivation behind this change? I looked at the patch and it is really not obvious to me why the new approach is better, considering that you need to IPC the UIProcess from WebCore using the ChromeClient now.
TestRunner makes the IPC to the UIProcess trivial for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578346</commentid>
    <comment_count>8</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-09 12:32:40 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; Comment on attachment 380555 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=380555&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        This patch moves TestRunner.setWebAuthenticationMockConfiguration to
&gt; 
&gt; Could you please explain the motivation behind this change? I looked at the
&gt; patch and it is really not obvious to me why the new approach is better,
&gt; considering that you need to IPC the UIProcess from WebCore using the
&gt; ChromeClient now.
&gt; TestRunner makes the IPC to the UIProcess trivial for you.

I need to use the mock infrastructure in API tests. I should add it to the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578363</commentid>
    <comment_count>9</comment_count>
      <attachid>380555</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-09 13:20:00 -0700</bug_when>
    <thetext>Comment on attachment 380555
Patch

r=me but please improve change log before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578398</commentid>
    <comment_count>10</comment_count>
      <attachid>380572</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-09 14:53:42 -0700</bug_when>
    <thetext>Created attachment 380572
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578402</commentid>
    <comment_count>11</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-09 14:54:05 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #9)
&gt; Comment on attachment 380555 [details]
&gt; Patch
&gt; 
&gt; r=me but please improve change log before landing.

Thanks, Chris. Fixed the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578441</commentid>
    <comment_count>12</comment_count>
      <attachid>380572</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-09 16:03:15 -0700</bug_when>
    <thetext>Comment on attachment 380572
Patch for landing

Clearing flags on attachment: 380572

Committed r250940: &lt;https://trac.webkit.org/changeset/250940&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380496</attachid>
            <date>2019-10-08 20:27:31 -0700</date>
            <delta_ts>2019-10-09 01:53:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202560-20191008202731.patch</filename>
            <type>text/plain</type>
            <size>193995</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwODQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjdlY2QzMmRjNGJhYTMx
NmYxNTg0MmY3OWVkMTBiNjQ3YWZlZWU5ZC4uYjcxNDhmYzEzZTVkZDE4NzY4ZGU2NGE4NWE3MDNl
ZjBhYzc3MTk3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE5LTEwLTA4ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBNb3Zl
IHRoZSBtb2NrIHRlc3RpbmcgZW50cmFuY2UgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NjAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzU1OTczNzkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgVGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlv
bk1vY2tDb25maWd1cmF0aW9uIHRvCisgICAgICAgIEludGVybmFscy5zZXRNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uIGFuZCByZW1vdmVzIHRoZSBvbGQKKyAgICAgICAgZW50cmFu
Y2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IHVwZGF0ZXMgb24gZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlD
cmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmg6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24pOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbik6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5pZGw6CisgICAgICAgICogdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbjo6TG9jYWxDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TG9jYWxDb25maWd1
cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbjo6SGlkQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENvbmZpZ3Vy
YXRpb246OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uOjpOZmNDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29uZmlndXJh
dGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIHRlc3RpbmcvTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGw6IEFkZGVkLgorCiAyMDE5LTEwLTA4
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBzdXJlIEFj
dGl2ZURPTU9iamVjdCBwcm9wZXJseSBkZWFscyB3aXRoIGRldGFjaGVkIGRvY3VtZW50cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBlYWU1ZTlhZWZhYjMxMmNkOGY4OWRmODU0NTM1MmNiMGYwZmFhYTQwLi5hNjU3NTJj
YTA1ZDViOWE3MzJhNTU3OWRiMDViNzYwZWRjNGJiZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUy
IEBACisyMDE5LTEwLTA4ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dlYkF1dGhuXSBNb3ZlIHRoZSBtb2NrIHRlc3RpbmcgZW50cmFuY2UgdG8gSW50ZXJu
YWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1
NjAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1OTczNzkzPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRXZWJBdXRo
ZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U6OmNyZWF0ZU1vY2spOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJhbnNw
b3J0U2VydmljZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2Nr
L01vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tBdXRo
ZW50aWNhdG9yTWFuYWdlcjo6TW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrQXV0aGVudGljYXRvck1hbmFnZXIu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tIaWRDb25uZWN0aW9uOjpzZW5kKToK
KyAgICAgICAgKFdlYktpdDo6TW9ja0hpZENvbm5lY3Rpb246OnJlZ2lzdGVyRGF0YVJlY2VpdmVk
Q2FsbGJhY2tJbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tIaWRDb25uZWN0aW9uOjpw
YXJzZVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpNb2NrSGlkQ29ubmVjdGlvbjo6ZmVlZFJl
cG9ydHMpOgorICAgICAgICAoV2ViS2l0OjpNb2NrSGlkQ29ubmVjdGlvbjo6c2hvdWxkQ29udGlu
dWVGZWVkUmVwb3J0cyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01v
Y2svTW9ja0hpZENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrSGlkU2VydmljZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tIaWRT
ZXJ2aWNlOjpNb2NrSGlkU2VydmljZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL01vY2svTW9ja0hpZFNlcnZpY2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbToKKyAgICAg
ICAgKFdlYktpdDo6TW9ja0xvY2FsQ29ubmVjdGlvbjo6TW9ja0xvY2FsQ29ubmVjdGlvbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsU2Vydmlj
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2Nh
bFNlcnZpY2UubW06CisgICAgICAgIChXZWJLaXQ6Ok1vY2tMb2NhbFNlcnZpY2U6Ok1vY2tMb2Nh
bFNlcnZpY2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01v
Y2tOZmNTZXJ2aWNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01v
Y2svTW9ja05mY1NlcnZpY2UubW06CisgICAgICAgIChXZWJLaXQ6Ok1vY2tOZmNTZXJ2aWNlOjpN
b2NrTmZjU2VydmljZSk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tOZmNTZXJ2aWNlOjpwbGF0Zm9y
bVN0YXJ0RGlzY292ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6TW9ja05mY1NlcnZpY2U6OmRldGVj
dFRhZ3MgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2Nr
L01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpzZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpzZXRNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oOgorCiAyMDE5LTEwLTA4ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJz
bGluZ0Bzb255LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBSZXN0YWJpbGl6ZSBub24tdW5p
ZmllZCBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0CmluZGV4IGVmNDM0MGE2MjgxYjQzYWU1OWY1NjU5MzYyNDZlMmMzMjMzMjhlOTYuLmYz
MjA4NTVhNTNiNjg4YmUzYzMwOTc2MTg4ODNjNjMxNTA4NGZhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTA4OSw2ICsxMDg5LDcg
QEAgJChQUk9KRUNUX0RJUikvdGVzdGluZy9Nb2NrUGF5bWVudEFkZHJlc3MuaWRsCiAkKFBST0pF
Q1RfRElSKS90ZXN0aW5nL01vY2tQYXltZW50Q29udGFjdEZpZWxkcy5pZGwKICQoUFJPSkVDVF9E
SVIpL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5pZGwKICQoUFJPSkVDVF9ESVIpL3Rl
c3RpbmcvTW9ja1BheW1lbnRFcnJvci5pZGwKKyQoUFJPSkVDVF9ESVIpL3Rlc3RpbmcvTW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGwKICQoUFJPSkVDVF9ESVIpL3Rlc3Rpbmcv
U2VydmljZVdvcmtlckludGVybmFscy5pZGwKICQoUFJPSkVDVF9ESVIpL3Rlc3RpbmcvVHlwZUNv
bnZlcnNpb25zLmlkbAogJChQUk9KRUNUX0RJUikvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5pZGwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5k
ZXggMDkwOWQ3YjFmYmZkODUyZDI2YmZiMWJmNWIxY2MxMzQ2OTI5YjRkOC4uMTYyZDQ0ZDg0OTMz
MTU1YzAxMDY1ODE2MjY1YThiNDc1NDJjMDcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTEwNTksNiArMTA1OSw4IEBAICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTW9ja1BheW1lbnRDb29y
ZGluYXRvci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTTW9ja1BheW1lbnRDb29yZGluYXRvci5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU01vY2tQYXltZW50RXJyb3IuY3BwCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01vY2tQYXltZW50RXJyb3IuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTW91c2VFdmVudC5jcHAK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTW91c2VFdmVu
dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01vdXNl
RXZlbnRJbml0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggYzBhNGYwMDc0
ZDFhNjJhNTdiNWNkYzhjNDRkZjBmN2JmMjViNDIxNS4uOGU3N2U2ZDBmYTU2ZmExMzBhYjdkOGIy
NmY0YmEwZTQ4ZWNlY2NlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMDc2
LDYgKzEwNzYsNyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5n
L01vY2tQYXltZW50Q29udGFjdEZpZWxkcy5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9N
b2NrUGF5bWVudENvb3JkaW5hdG9yLmlkbCBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL01vY2tQ
YXltZW50RXJyb3IuaWRsIFwKKyAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbi5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9TZXJ2aWNl
V29ya2VySW50ZXJuYWxzLmlkbCBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL1R5cGVDb252ZXJz
aW9ucy5pZGwgXAogICAgICQoV2ViQ29yZSkvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5pZGwgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVk
ZW50aWFsQ3JlYXRpb25PcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaAppbmRleCAzNzJkZjFiOTRlOGJm
NjQwMjMzMGU1NDVlZDQ3NTY4MGI3NDIzZGE1Li5kOGM3YmJiM2M1ZDc5MjdmOTE1Y2Y0ZWU2NzIw
ZDI4ZGZjMGM4YzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaApA
QCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIlB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9y
LmgiCiAjaW5jbHVkZSAiUHVibGljS2V5Q3JlZGVudGlhbFR5cGUuaCIKICNpbmNsdWRlICJVc2Vy
VmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3Bp
ZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggN2EzYTliZGFlZjg3Mzk5YzA4ZjliM2ZiMzI3ZjBmNzVjODQ5NGU0Yy4uZTM3M2M4MTlhOWJk
NTMzYWExZDExNzcxZWJhM2E0ODBmM2YzOWZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTczOCw2ICsxNzM4LDEwIEBACiAJ
CTU3MTUyQjZFMjFDRDk5NUQwMDBDMzdDQSAvKiBVMmZDb21tYW5kQ29uc3RydWN0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTUyQjZDMjFDRDk5
NUMwMDBDMzdDQSAvKiBVMmZDb21tYW5kQ29uc3RydWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NzE1MkI3QzIxREQ4QkExMDAwQzM3Q0Eg
LyogVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU3MTUyQjdBMjFERDhCQTEwMDBDMzdDQSAvKiBVMmZSZXNwb25zZUNv
bnZlcnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTU3MTUyQjgwMjFEREE1ODEwMDBDMzdDQSAvKiBXZWJBdXRoZW50aWNhdGlvblV0aWxzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE1MkI3RTIx
RERBNTgxMDAwQzM3Q0EgLyogV2ViQXV0aGVudGljYXRpb25VdGlscy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU3MTU2MTBCMjM0QzFCNDkwMDhG
QzdBQiAvKiBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE1NjEwODIzNEMxQjMxMDA4RkM3
QUIgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oICovOyB9OworCQk1NzE1
NjEwQzIzNEMxQ0ExMDA4RkM3QUIgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcxNTYx
MDgyMzRDMUIzMTAwOEZDN0FCIC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1NzE1
NjExNDIzNEM3RkQ2MDA4RkM3QUIgLyogSlNNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
MTU2MTExMjM0QzdGQkMwMDhGQzdBQiAvKiBKU01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24uY3BwICovOyB9OworCQk1NzE1NjExNTIzNEM3RkRDMDA4RkM3QUIgLyogSlNNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE1NjExMDIzNEM3RkJDMDA4RkM3QUIgLyogSlNNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggKi87IH07CiAJCTU3MUYyMTg5MURBNTdDNTQw
MDVDOUVGRCAvKiBKU1N1YnRsZUNyeXB0by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTcxRjIxODgxREE1N0M1NDAwNUM5RUZEIC8qIEpTU3VidGxlQ3J5
cHRvLmggKi87IH07CiAJCTU3MjA5M0QzMUREQ0VCOUEwMDMxMEFCMCAvKiBDcnlwdG9BbGdvcml0
aG1BZXNDYmNDZmJQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3MjA5M0QyMUREQ0VCOUEwMDMxMEFCMCAvKiBDcnlwdG9BbGdvcml0aG1BZXND
YmNDZmJQYXJhbXMuaCAqLzsgfTsKIAkJNTcyMUE5ODcxRUNFNTNCMTAwODEyOTVBIC8qIENyeXB0
b0RpZ2VzdEFsZ29yaXRobS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTcyMUE5ODYxRUNFNTNCMTAwODEyOTVBIC8qIENyeXB0b0RpZ2VzdEFsZ29yaXRo
bS5oICovOyB9OwpAQCAtODYwNSw2ICs4NjA5LDEwIEBACiAJCTU3MTUyQjdCMjFERDhCQTEwMDBD
MzdDQSAvKiBVMmZSZXNwb25zZUNvbnZlcnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVMmZS
ZXNwb25zZUNvbnZlcnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MTUy
QjdFMjFEREE1ODEwMDBDMzdDQSAvKiBXZWJBdXRoZW50aWNhdGlvblV0aWxzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTcxNTJCN0YyMUREQTU4MTAwMEMzN0NBIC8qIFdlYkF1dGhlbnRpY2F0aW9uVXRpbHMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXV0aGVudGljYXRpb25VdGlscy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MTU2MTA4MjM0QzFCMzEwMDhGQzdBQiAvKiBNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTcxNTYxMEQyMzRDNzQ4MTAwOEZDN0FCIC8qIE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzE1NjEx
MDIzNEM3RkJDMDA4RkM3QUIgLyogSlNNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzE1NjEx
MTIzNEM3RkJDMDA4RkM3QUIgLyogSlNNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU3MUYyMTg4MURBNTdDNTQwMDVDOUVGRCAvKiBKU1N1YnRsZUNyeXB0by5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N1YnRsZUNyeXB0by5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1NzFGMjE4QTFEQTU3QzdBMDA1QzlFRkQgLyogSlNTdWJ0bGVDcnlwdG8u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTdWJ0bGVDcnlwdG8u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzIwOTNEMTFERENFQTRCMDAzMTBB
QjAgLyogQWVzQ2JjQ2ZiUGFyYW1zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBZXNDYmNDZmJQYXJhbXMuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc4OTIsNiArMTc5MDAsOCBAQAogCQkJCUExQ0JF
RjYzMUY5RjExMjkwMDI4REU3QyAvKiBNb2NrUGF5bWVudE1ldGhvZC5oICovLAogCQkJCUExNDA2
MTg5MUUyRUNBMEEwMDMyQjM0RSAvKiBNb2NrUHJldmlld0xvYWRlckNsaWVudC5jcHAgKi8sCiAJ
CQkJQTE0MDYxOEExRTJFQ0EwQTAwMzJCMzRFIC8qIE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50Lmgg
Ki8sCisJCQkJNTcxNTYxMDgyMzRDMUIzMTAwOEZDN0FCIC8qIE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24uaCAqLywKKwkJCQk1NzE1NjEwRDIzNEM3NDgxMDA4RkM3QUIgLyogTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGwgKi8sCiAJCQkJNDE3RjBEODAxRkZF
RTE0RjAwOEVGMzAzIC8qIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwICovLAogCQkJCTQxN0Yw
RDdFMUZGRUUxNEUwMDhFRjMwMyAvKiBTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggKi8sCiAJCQkJ
NDE3RjBEODExRkZFRTE1MDAwOEVGMzAzIC8qIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsICov
LApAQCAtMTc5MzIsNiArMTc5NDIsOCBAQAogCQkJCUExNDZEMzE4MUY5OUJDQkEwMEQyOTE5NiAv
KiBKU01vY2tQYXltZW50Q29vcmRpbmF0b3IuaCAqLywKIAkJCQlBMUJCODVCNDIxNTlCMzg5MDA2
N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCAqLywKIAkJCQlBMUJCODVCNTIxNTlCMzhB
MDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggKi8sCisJCQkJNTcxNTYxMTEyMzRDN0ZC
QzAwOEZDN0FCIC8qIEpTTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5jcHAgKi8s
CisJCQkJNTcxNTYxMTAyMzRDN0ZCQzAwOEZDN0FCIC8qIEpTTW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbi5oICovLAogCQkJCTQyN0RBNzFCMTM3MzVERkEwMDdDNTdGQiAvKiBKU1Nl
cnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwICovLAogCQkJCTQyN0RBNzFDMTM3MzVERkEwMDdDNTdG
QiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCAqLywKIAkJCQlFQkY1MTIxQTE2OTY0OTZD
MDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuY3BwICovLApAQCAtMjg0MjUsNiArMjg0Mzcs
NyBAQAogCQkJCUExMDRFQzVFMjIwQTNFNEUwMENCRjY3QSAvKiBKU01vY2tQYXltZW50Q29udGFj
dEZpZWxkcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE0NkQzMUIxRjk5QkNGQjAwRDI5MTk2IC8q
IEpTTW9ja1BheW1lbnRDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFCQjg1Qjky
MTU5QjNBRTAwNjdFMDdEIC8qIEpTTW9ja1BheW1lbnRFcnJvci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTcxNTYxMTUyMzRDN0ZEQzAwOEZDN0FCIC8qIEpTTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDI3REE3MUUxMzczNURGQTAwN0M1N0ZC
IC8qIEpTU2VydmljZVdvcmtlckludGVybmFscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRUJGNTEy
MUQxNjk2NDk2QzAwNTZCRDI1IC8qIEpTVHlwZUNvbnZlcnNpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDREMyNkI0MTE2MEE4Q0NFMDAyNjc1N0IgLyogTGVnYWN5TW9ja0NETS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yODQ0Miw2ICsyODQ1NSw3IEBACiAJCQkJQTFBRkVERTYxRjhCRkY2RDAwODcw
MTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUExQ0JF
RjY0MUY5RjExMjkwMDI4REU3QyAvKiBNb2NrUGF5bWVudE1ldGhvZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTE0MDYxOEMxRTJFQ0EwQTAwMzJCMzRFIC8qIE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzE1NjEwQjIzNEMxQjQ5MDA4RkM3QUIgLyogTW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUE1RjNC
OEQxNkNDMzNEMTAwNDU1RUIwIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBMTc2M0YzRjFFMjA1MjM0MDAxRDU4REUgLyogV2ViQXJjaGl2ZUR1
bXBTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTgxNUMxRjEzODMxOTgzMDA1N0FBQTQg
LyogV2ViQ29yZVRlc3RTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKQEAgLTMxMDIxLDYgKzMxMDM1
LDcgQEAKIAkJCQkwN0VFNzZFRjFCRUE2MTk4MDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjJCMDE3MTgyMDU0MDcwMEYyQjQyNCAv
KiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGMkIwMTkx
ODIwNTQwNzAwRjJCNDI0IC8qIE1vY2tUcmFja3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3MTU2
MTBDMjM0QzFDQTEwMDhGQzdBQiAvKiBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDNkQ3NEFENTA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5
U2VsZWN0aW9uTGlzdExldmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDlBMDFGRTFFM0QwQkRE
MDA2QjBENEMgLyogTW9kdWxlRmV0Y2hGYWlsdXJlS2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTMyMDFDMUExRjhFODIxMzAwNzZBMDMyIC8qIE1vZHVsZUZldGNoUGFyYW1ldGVycy5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zMjk4NCw2ICszMjk5OSw3IEBACiAJCQkJQTEwNEVDNUQyMjBBM0U0QjAw
Q0JGNjdBIC8qIEpTTW9ja1BheW1lbnRDb250YWN0RmllbGRzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUExNDZEMzFBMUY5OUJDRjgwMEQyOTE5NiAvKiBKU01vY2tQYXltZW50Q29vcmRpbmF0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFCQjg1QjgyMTU5QjNBNDAwNjdFMDdEIC8qIEpTTW9j
a1BheW1lbnRFcnJvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1NzE1NjExNDIzNEM3RkQ2MDA4
RkM3QUIgLyogSlNNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQyN0RBNzFEMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJ
bnRlcm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRUJGNTEyMUMxNjk2NDk2QzAwNTZCRDI1
IC8qIEpTVHlwZUNvbnZlcnNpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQzI2QjQwMTYw
QThDQzYwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggZmRkYjE4NjgyYmU3ZTFmNjZhZWRhYWI2OGNiYmM0
NDgwODI4MDQ2ZS4uMzUwNWQ0NDA1NDFjM2Y0OWQ4NjY1YjQ1NjNiZWVmYWVmZjY0ZDQ4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0xMTAsNiArMTEwLDcgQEAgY2xhc3MgTWVk
aWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s7CiBzdHJ1Y3QgQ29u
dGVudFJ1bGVMaXN0UmVzdWx0czsKIHN0cnVjdCBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzOwog
c3RydWN0IEdyYXBoaWNzRGV2aWNlQWRhcHRlcjsKK3N0cnVjdCBNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uOwogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw7CiBzdHJ1Y3Qg
Vmlld3BvcnRBcmd1bWVudHM7CiBzdHJ1Y3QgV2luZG93RmVhdHVyZXM7CkBAIC01MTAsNiArNTEx
LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgdXNlcklzSW50ZXJhY3RpbmcoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VySXNJbnRlcmFjdGlu
Zyhib29sKSB7IH0KIAorI2lmIEVOQUJMRShXRUJfQVVUSE4pCisgICAgdmlydHVhbCB2b2lkIHNl
dE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oY29uc3QgTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbiYpIHsgfQorI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIH5DaHJvbWVDbGllbnQoKSA9IGRlZmF1bHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCmluZGV4IGZmNDA5NjllZDY5ZjUzMjkxMWRjNmU0Zjc2YzJjNDE0YzMzODMxYWEu
LjZkYTFjZjNhMTMxZWQ4NWQwMzM0NzM4NGRjZTdhZGJhNDRiZWVmZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTUyMzQsNCArNTIzNCwxNyBAQCB2b2lkIEludGVybmFs
czo6YWRkUHJlZmV0Y2hMb2FkRXZlbnRMaXN0ZW5lcihIVE1MTGlua0VsZW1lbnQmIGxpbmssIFJl
ZlB0cjxFdmVudAogICAgIH0KIH0KIAorI2lmIEVOQUJMRShXRUJfQVVUSE4pCit2b2lkIEludGVy
bmFsczo6c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihjb25zdCBNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQoreworICAgIGF1dG8q
IGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAg
ICAgcmV0dXJuOworICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAgIGlmICgh
cGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnNldE1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7Cit9CisjZW5k
aWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
aW5kZXggODE2NTk1YzVmNjM5ZjA5NGMwY2E2ZDZlZTNjY2M3MDRkYTdjM2RlNS4uYzEzNGRlZmRh
YWYxNDBiYTk3ZDNkZTQ1MDBjNDk3NGFlNGM1NTZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCkBAIC0xMTIsNiArMTEyLDggQEAgY2xhc3MgU2VydmljZVdvcmtlcjsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVycmVkOwogCitzdHJ1Y3Qg
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjsKKwogY2xhc3MgSW50ZXJuYWxzIGZp
bmFsIDogcHVibGljIFJlZkNvdW50ZWQ8SW50ZXJuYWxzPiwgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlcgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgLCBwcml2YXRlIFJl
YWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyCkBAIC04ODQsNiArODg2LDEwIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgYWRkUHJlZmV0Y2hMb2FkRXZlbnRMaXN0ZW5lcihIVE1MTGlua0VsZW1lbnQm
LCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJik7CiAKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAg
IHZvaWQgc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihjb25zdCBNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBJbnRlcm5hbHMoRG9jdW1lbnQmKTsKICAgICBEb2N1bWVudCogY29udGV4dERvY3Vt
ZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggNDY4ZWYy
MzFkNzRlMTk4NjVjMDQ5NDNiMjdjMjY0YzYxNmVhZmI5YS4uNGUzYTQxMmExNGM4MmFiNDJjMzIy
NDU4OWQwMjY4OGNkNTZhZTA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApA
QCAtNzk0LDQgKzc5NCw2IEBAIGVudW0gQ29tcG9zaXRpbmdQb2xpY3kgewogICAgIFRleHRJbmRp
Y2F0b3JJbmZvIHRleHRJbmRpY2F0b3JGb3JSYW5nZShSYW5nZSByYW5nZSwgVGV4dEluZGljYXRv
ck9wdGlvbnMgb3B0aW9ucyk7CiAKICAgICB2b2lkIGFkZFByZWZldGNoTG9hZEV2ZW50TGlzdGVu
ZXIoSFRNTExpbmtFbGVtZW50IGxpbmssIEV2ZW50TGlzdGVuZXI/IGNhbGxiYWNrKTsKKworICAg
IFtDb25kaXRpb25hbD1XRUJfQVVUSE5dIHZvaWQgc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbihNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRp
b24pOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzQ1MGYyNTY3NmFjMTI3
YzYzNDljZmVjNmU5YTBmYzU2MzRkZTdlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oCkBAIC0wLDAg
KzEsMjkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FV
VEhOKQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbiB7CisgICAgZW51bSBjbGFzcyBIaWRTdGFnZSA6IGJvb2wgewor
ICAgICAgICBJbmZvLAorICAgICAgICBSZXF1ZXN0CisgICAgfTsKKworICAgIGVudW0gY2xhc3Mg
SGlkU3ViU3RhZ2UgOiBib29sIHsKKyAgICAgICAgSW5pdCwKKyAgICAgICAgTXNnCisgICAgfTsK
KworICAgIGVudW0gY2xhc3MgSGlkRXJyb3IgOiB1aW50OF90IHsKKyAgICAgICAgU3VjY2VzcywK
KyAgICAgICAgRGF0YU5vdFNlbnQsCisgICAgICAgIEVtcHR5UmVwb3J0LAorICAgICAgICBXcm9u
Z0NoYW5uZWxJZCwKKyAgICAgICAgTWFsaWNpb3VzUGF5bG9hZCwKKyAgICAgICAgVW5zdXBwb3J0
ZWRPcHRpb25zLAorICAgICAgICBXcm9uZ05vbmNlCisgICAgfTsKKworICAgIGVudW0gY2xhc3Mg
TmZjRXJyb3IgOiB1aW50OF90IHsKKyAgICAgICAgU3VjY2VzcywKKyAgICAgICAgTm9UYWdzLAor
ICAgICAgICBXcm9uZ1RhZ1R5cGUsCisgICAgICAgIE5vQ29ubmVjdGlvbnMsCisgICAgICAgIE1h
bGljaW91c1BheWxvYWQKKyAgICB9OworCisgICAgc3RydWN0IExvY2FsQ29uZmlndXJhdGlvbiB7
CisgICAgICAgIGJvb2wgYWNjZXB0QXV0aGVudGljYXRpb24geyBmYWxzZSB9OworICAgICAgICBi
b29sIGFjY2VwdEF0dGVzdGF0aW9uIHsgZmFsc2UgfTsKKyAgICAgICAgU3RyaW5nIHByaXZhdGVL
ZXlCYXNlNjQ7CisgICAgICAgIFN0cmluZyB1c2VyQ2VydGlmaWNhdGVCYXNlNjQ7CisgICAgICAg
IFN0cmluZyBpbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0OworICAgICAgICBTdHJpbmcg
cHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDsKKworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxMb2NhbENvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNv
ZGVyJik7CisgICAgfTsKKworICAgIHN0cnVjdCBIaWRDb25maWd1cmF0aW9uIHsKKyAgICAgICAg
VmVjdG9yPFN0cmluZz4gcGF5bG9hZEJhc2U2NDsKKyAgICAgICAgSGlkU3RhZ2Ugc3RhZ2UgeyBI
aWRTdGFnZTo6SW5mbyB9OworICAgICAgICBIaWRTdWJTdGFnZSBzdWJTdGFnZSB7IEhpZFN1YlN0
YWdlOjpJbml0IH07CisgICAgICAgIEhpZEVycm9yIGVycm9yIHsgSGlkRXJyb3I6OlN1Y2Nlc3Mg
fTsKKyAgICAgICAgYm9vbCBpc1UyZiB7IGZhbHNlIH07CisgICAgICAgIGJvb2wga2VlcEFsaXZl
IHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBmYXN0RGF0YUFycml2YWwgeyBmYWxzZSB9OworICAg
ICAgICBib29sIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEgeyBmYWxzZSB9OworICAgICAgICBib29s
IGNhbkRvd25ncmFkZSB7IGZhbHNlIH07CisKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SGlkQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXIm
KTsKKyAgICB9OworCisgICAgc3RydWN0IE5mY0NvbmZpZ3VyYXRpb24geworICAgICAgICBOZmNF
cnJvciBlcnJvciB7IE5mY0Vycm9yOjpTdWNjZXNzIH07CisgICAgICAgIFZlY3RvcjxTdHJpbmc+
IHBheWxvYWRCYXNlNjQ7CisgICAgICAgIGJvb2wgbXVsdGlwbGVUYWdzIHsgZmFsc2UgfTsKKwor
ICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CisgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxOZmND
b25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYpOworICAgIH07CisKKyAgICBib29sIHNpbGVu
dEZhaWx1cmUgeyBmYWxzZSB9OworICAgIE9wdGlvbmFsPExvY2FsQ29uZmlndXJhdGlvbj4gbG9j
YWw7CisgICAgT3B0aW9uYWw8SGlkQ29uZmlndXJhdGlvbj4gaGlkOworICAgIE9wdGlvbmFsPE5m
Y0NvbmZpZ3VyYXRpb24+IG5mYzsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgT3B0aW9uYWw8TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbj4gZGVjb2RlKERl
Y29kZXImKTsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkxvY2FsQ29uZmlndXJhdGlvbjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBhY2NlcHRBdXRoZW50aWNhdGlv
biA8PCBhY2NlcHRBdHRlc3RhdGlvbiA8PCBwcml2YXRlS2V5QmFzZTY0IDw8IHVzZXJDZXJ0aWZp
Y2F0ZUJhc2U2NCA8PCBpbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0IDw8IHByZWZlcnJl
ZFVzZXJoYW5kbGVCYXNlNjQ7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25h
bDxNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpMb2NhbENvbmZpZ3VyYXRpb24+
IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkxvY2FsQ29uZmlndXJhdGlvbjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbjo6TG9jYWxDb25maWd1cmF0aW9uIHJlc3VsdDsKKworICAgIE9wdGlvbmFsPGJv
b2w+IGFjY2VwdEF1dGhlbnRpY2F0aW9uOworICAgIGRlY29kZXIgPj4gYWNjZXB0QXV0aGVudGlj
YXRpb247CisgICAgaWYgKCFhY2NlcHRBdXRoZW50aWNhdGlvbikKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXN1bHQuYWNjZXB0QXV0aGVudGljYXRpb24gPSAqYWNjZXB0QXV0
aGVudGljYXRpb247CisKKyAgICBPcHRpb25hbDxib29sPiBhY2NlcHRBdHRlc3RhdGlvbjsKKyAg
ICBkZWNvZGVyID4+IGFjY2VwdEF0dGVzdGF0aW9uOworICAgIGlmICghYWNjZXB0QXR0ZXN0YXRp
b24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVzdWx0LmFjY2VwdEF0dGVz
dGF0aW9uID0gKmFjY2VwdEF0dGVzdGF0aW9uOworCisgICAgT3B0aW9uYWw8U3RyaW5nPiBwcml2
YXRlS2V5QmFzZTY0OworICAgIGRlY29kZXIgPj4gcHJpdmF0ZUtleUJhc2U2NDsKKyAgICBpZiAo
IXByaXZhdGVLZXlCYXNlNjQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVz
dWx0LnByaXZhdGVLZXlCYXNlNjQgPSBXVEZNb3ZlKCpwcml2YXRlS2V5QmFzZTY0KTsKKworICAg
IE9wdGlvbmFsPFN0cmluZz4gdXNlckNlcnRpZmljYXRlQmFzZTY0OworICAgIGRlY29kZXIgPj4g
dXNlckNlcnRpZmljYXRlQmFzZTY0OworICAgIGlmICghdXNlckNlcnRpZmljYXRlQmFzZTY0KQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJlc3VsdC51c2VyQ2VydGlmaWNhdGVC
YXNlNjQgPSBXVEZNb3ZlKCp1c2VyQ2VydGlmaWNhdGVCYXNlNjQpOworCisgICAgT3B0aW9uYWw8
U3RyaW5nPiBpbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0OworICAgIGRlY29kZXIgPj4g
aW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NDsKKyAgICBpZiAoIWludGVybWVkaWF0ZUNB
Q2VydGlmaWNhdGVCYXNlNjQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVz
dWx0LmludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQgPSBXVEZNb3ZlKCppbnRlcm1lZGlh
dGVDQUNlcnRpZmljYXRlQmFzZTY0KTsKKworICAgIE9wdGlvbmFsPFN0cmluZz4gcHJlZmVycmVk
VXNlcmhhbmRsZUJhc2U2NDsKKyAgICBkZWNvZGVyID4+IHByZWZlcnJlZFVzZXJoYW5kbGVCYXNl
NjQ7CisgICAgaWYgKCFwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0KQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJlc3VsdC5wcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0ID0gV1RG
TW92ZSgqcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NCk7CisKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uOjpIaWRDb25maWd1cmF0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHBheWxvYWRCYXNlNjQgPDwgc3RhZ2UgPDwgc3ViU3Rh
Z2UgPDwgZXJyb3IgPDwgaXNVMmYgPDwga2VlcEFsaXZlIDw8IGZhc3REYXRhQXJyaXZhbCA8PCBj
b250aW51ZUFmdGVyRXJyb3JEYXRhIDw8IGNhbkRvd25ncmFkZTsKK30KKwordGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KK09wdGlvbmFsPE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246
OkhpZENvbmZpZ3VyYXRpb24+IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Okhp
ZENvbmZpZ3VyYXRpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENvbmZpZ3VyYXRpb24gcmVzdWx0OworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBheWxvYWRCYXNlNjQpKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHJlc3VsdC5zdGFn
ZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZUVudW0ocmVzdWx0LnN1YlN0YWdlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXN1bHQuZXJyb3IpKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzVTJmKSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5rZWVwQWxpdmUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LmZhc3REYXRhQXJyaXZhbCkpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY29udGludWVBZnRlckVy
cm9yRGF0YSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQuY2FuRG93bmdyYWRlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9p
ZCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmNDb25maWd1cmF0aW9uOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGVycm9yIDw8
IHBheWxvYWRCYXNlNjQgPDwgbXVsdGlwbGVUYWdzOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgorT3B0aW9uYWw8TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29u
ZmlndXJhdGlvbj4gTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29uZmln
dXJhdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29uZmlndXJhdGlvbiByZXN1bHQ7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LmVycm9yKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wYXlsb2FkQmFzZTY0KSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5tdWx0aXBsZVRhZ3MpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAor
eworICAgIGVuY29kZXIgPDwgc2lsZW50RmFpbHVyZSA8PCBsb2NhbCA8PCBoaWQgPDwgbmZjOwor
fQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbj4gTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbiByZXN1bHQ7CisKKyAgICBPcHRpb25hbDxib29sPiBzaWxlbnRGYWlsdXJlOworICAg
IGRlY29kZXIgPj4gc2lsZW50RmFpbHVyZTsKKyAgICBpZiAoIXNpbGVudEZhaWx1cmUpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVzdWx0LnNpbGVudEZhaWx1cmUgPSAqc2ls
ZW50RmFpbHVyZTsKKworICAgIE9wdGlvbmFsPE9wdGlvbmFsPExvY2FsQ29uZmlndXJhdGlvbj4+
IGxvY2FsOworICAgIGRlY29kZXIgPj4gbG9jYWw7CisgICAgaWYgKCFsb2NhbCkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXN1bHQubG9jYWwgPSBXVEZNb3ZlKCpsb2NhbCk7
CisKKyAgICBPcHRpb25hbDxPcHRpb25hbDxIaWRDb25maWd1cmF0aW9uPj4gaGlkOworICAgIGRl
Y29kZXIgPj4gaGlkOworICAgIGlmICghaGlkKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJlc3VsdC5oaWQgPSBXVEZNb3ZlKCpoaWQpOworCisgICAgT3B0aW9uYWw8T3B0aW9u
YWw8TmZjQ29uZmlndXJhdGlvbj4+IG5mYzsKKyAgICBkZWNvZGVyID4+IG5mYzsKKyAgICBpZiAo
IW5mYykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXN1bHQubmZjID0gV1RG
TW92ZSgqbmZjKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkU3RhZ2U+IHsK
KyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRTdGFnZSwKKyAgICAgICAgV2ViQ29yZTo6
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkU3RhZ2U6OkluZm8sCisgICAg
ICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZFN0YWdl
OjpSZXF1ZXN0CisgICAgPjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2Vi
Q29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkU3ViU3RhZ2U+IHsK
KyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRTdWJTdGFnZSwKKyAgICAgICAgV2ViQ29y
ZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkU3ViU3RhZ2U6OkluaXQs
CisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Okhp
ZFN1YlN0YWdlOjpNc2cKKyAgICA+OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0
czxXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRFcnJvcj4g
eworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZEVycm9yLAorICAgICAgICBXZWJDb3Jl
OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRFcnJvcjo6U3VjY2VzcywK
KyAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlk
RXJyb3I6OkRhdGFOb3RTZW50LAorICAgICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uOjpIaWRFcnJvcjo6RW1wdHlSZXBvcnQsCisgICAgICAgIFdlYkNvcmU6
Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZEVycm9yOjpXcm9uZ0NoYW5u
ZWxJZCwKKyAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bjo6SGlkRXJyb3I6Ok1hbGljaW91c1BheWxvYWQsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZEVycm9yOjpVbnN1cHBvcnRlZE9wdGlvbnMs
CisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Okhp
ZEVycm9yOjpXcm9uZ05vbmNlCisgICAgPjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1U
cmFpdHM8V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjRXJy
b3I+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmNFcnJvciwKKyAgICAgICAgV2Vi
Q29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjRXJyb3I6OlN1Y2Nl
c3MsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246
Ok5mY0Vycm9yOjpOb1RhZ3MsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb246Ok5mY0Vycm9yOjpXcm9uZ1RhZ1R5cGUsCisgICAgICAgIFdlYkNvcmU6
Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mY0Vycm9yOjpOb0Nvbm5lY3Rp
b25zLAorICAgICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
OjpOZmNFcnJvcjo6TWFsaWNpb3VzUGF5bG9hZAorICAgID47Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXVEYKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaWRsIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iZGViODYxY2M5ZTZjNGM2MjdhMDczMmQ3YWU2YTc0NTY3OWE2ZmRk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uLmlkbApAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
K1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVUSE4sCitdIGVudW0gTW9ja0hpZFN0YWdlIHsKKyAg
ICAiaW5mbyIsCisgICAgInJlcXVlc3QiCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FV
VEhOLAorXSBlbnVtIE1vY2tIaWRTdWJTdGFnZSB7CisgICAgImluaXQiLAorICAgICJtc2ciCit9
OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVVEhOLAorXSBlbnVtIE1vY2tIaWRFcnJvciB7
CisgICAgInN1Y2Nlc3MiLAorICAgICJkYXRhLW5vdC1zZW50IiwKKyAgICAiZW1wdHktcmVwb3J0
IiwKKyAgICAid3JvbmctY2hhbm5lbC1pZCIsCisgICAgIm1hbGljaW91cy1wYXlsb2FkIiwKKyAg
ICAidW5zdXBwb3J0ZWQtb3B0aW9ucyIsCisgICAgIndyb25nLW5vbmNlIgorfTsKKworWworICAg
IENvbmRpdGlvbmFsPVdFQl9BVVRITiwKK10gZW51bSBNb2NrTmZjRXJyb3IgeworICAgICJzdWNj
ZXNzIiwKKyAgICAibm8tdGFncyIsCisgICAgIndyb25nLXRhZy10eXBlIiwKKyAgICAibm8tY29u
bmVjdGlvbnMiLAorICAgICJtYWxpY2lvdXMtcGF5bG9hZCIKK307CisKK1sKKyAgICBDb25kaXRp
b25hbD1XRUJfQVVUSE4sCitdIGRpY3Rpb25hcnkgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbiB7CisgICAgYm9vbGVhbiBzaWxlbnRGYWlsdXJlID0gZmFsc2U7CisgICAgTW9ja0xv
Y2FsQ29uZmlndXJhdGlvbiBsb2NhbDsKKyAgICBNb2NrSGlkQ29uZmlndXJhdGlvbiBoaWQ7Cisg
ICAgTW9ja05mY0NvbmZpZ3VyYXRpb24gbmZjOworfTsKKworWworICAgIENvbmRpdGlvbmFsPVdF
Ql9BVVRITiwKK10gZGljdGlvbmFyeSBNb2NrTG9jYWxDb25maWd1cmF0aW9uIHsKKyAgICBib29s
ZWFuIGFjY2VwdEF1dGhlbnRpY2F0aW9uID0gZmFsc2U7CisgICAgYm9vbGVhbiBhY2NlcHRBdHRl
c3RhdGlvbiA9IGZhbHNlOworICAgIERPTVN0cmluZyBwcml2YXRlS2V5QmFzZTY0OworICAgIERP
TVN0cmluZyB1c2VyQ2VydGlmaWNhdGVCYXNlNjQ7CisgICAgRE9NU3RyaW5nIGludGVybWVkaWF0
ZUNBQ2VydGlmaWNhdGVCYXNlNjQ7CisgICAgRE9NU3RyaW5nIHByZWZlcnJlZFVzZXJoYW5kbGVC
YXNlNjQ7Cit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVVEhOLAorXSBkaWN0aW9uYXJ5
IE1vY2tIaWRDb25maWd1cmF0aW9uIHsKKyAgICBzZXF1ZW5jZTxET01TdHJpbmc+IHBheWxvYWRC
YXNlNjQ7CisgICAgTW9ja0hpZFN0YWdlIHN0YWdlID0gImluZm8iOworICAgIE1vY2tIaWRTdWJT
dGFnZSBzdWJTdGFnZSA9ICJpbml0IjsKKyAgICBNb2NrSGlkRXJyb3IgZXJyb3IgPSAic3VjY2Vz
cyI7CisgICAgYm9vbGVhbiBpc1UyZiA9IGZhbHNlOworICAgIGJvb2xlYW4ga2VlcEFsaXZlID0g
ZmFsc2U7CisgICAgYm9vbGVhbiBmYXN0RGF0YUFycml2YWwgPSBmYWxzZTsKKyAgICBib29sZWFu
IGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEgPSBmYWxzZTsKKyAgICBib29sZWFuIGNhbkRvd25ncmFk
ZSA9IGZhbHNlOworfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVVRITiwKK10gZGljdGlv
bmFyeSBNb2NrTmZjQ29uZmlndXJhdGlvbiB7CisgICAgTW9ja05mY0Vycm9yIGVycm9yID0gInN1
Y2Nlc3MiOworICAgIHNlcXVlbmNlPERPTVN0cmluZz4gcGF5bG9hZEJhc2U2NDsKKyAgICBib29s
ZWFuIG11bHRpcGxlVGFncyA9IGZhbHNlOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IDlkN2ZhN2Qz
N2M2NmExZjJkOWVjNDhjOTdlNTFiYzZmZDcwYTc3YTQuLmI1NTY5Njg3YzVlODYzZjg0MGZkYmQy
MDU4ODk5NjViYmU3YjkyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAj
aW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIKLSNp
bmNsdWRlICJNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAi
U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAj
aW5jbHVkZSAiV0tEaWN0aW9uYXJ5LmgiCkBAIC00Myw2ICs0Miw3IEBACiAjaW5jbHVkZSAiV2Vi
c2l0ZURhdGFSZWNvcmQuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVk
ZSAiV2Vic2l0ZURhdGFUeXBlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0NhbGxiYWNrQWdncmVnYXRvci5o
PgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIApAQCAtNjU4LDEwOCArNjU4LDYgQEAgdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVDbGVhckFsbERldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbnMoV0tXZWJz
aXRlRGF0YVN0b3JlUmUKICNlbmRpZgogfQogCi12b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFdl
YkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgV0tEaWN0aW9uYXJ5UmVmIGNvbmZpZ3VyYXRpb25SZWYpCi17Ci0jaWYgRU5B
QkxFKFdFQl9BVVRITikKLSAgICBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24gY29uZmlndXJhdGlvbjsKLQotICAgIGlmIChhdXRvIHNpbGVudEZhaWx1cmVSZWYgPSBz
dGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoY29uZmln
dXJhdGlvblJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2lsZW50
RmFpbHVyZSIpKS5nZXQoKSkpKQotICAgICAgICBjb25maWd1cmF0aW9uLnNpbGVudEZhaWx1cmUg
PSBXS0Jvb2xlYW5HZXRWYWx1ZShzaWxlbnRGYWlsdXJlUmVmKTsKLQotICAgIGlmIChhdXRvIGxv
Y2FsUmVmID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVt
Rm9yS2V5KGNvbmZpZ3VyYXRpb25SZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIkxvY2FsIikpLmdldCgpKSkpIHsKLSAgICAgICAgV2ViS2l0OjpNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uOjpMb2NhbCBsb2NhbDsKLSAgICAgICAgbG9jYWwuYWNjZXB0
QXV0aGVudGljYXRpb24gPSBXS0Jvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxXS0Jvb2xlYW5S
ZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobG9jYWxSZWYsIGFkb3B0V0soV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIkFjY2VwdEF1dGhlbnRpY2F0aW9uIikpLmdldCgpKSkpOwot
ICAgICAgICBsb2NhbC5hY2NlcHRBdHRlc3RhdGlvbiA9IFdLQm9vbGVhbkdldFZhbHVlKHN0YXRp
Y19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShsb2NhbFJlZiwg
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQWNjZXB0QXR0ZXN0YXRpb24i
KSkuZ2V0KCkpKSk7Ci0gICAgICAgIGlmIChsb2NhbC5hY2NlcHRBdHRlc3RhdGlvbikgewotICAg
ICAgICAgICAgbG9jYWwucHJpdmF0ZUtleUJhc2U2NCA9IFdlYktpdDo6dG9JbXBsKHN0YXRpY19j
YXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGxvY2FsUmVmLCBhZG9w
dFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJQcml2YXRlS2V5QmFzZTY0IikpLmdl
dCgpKSkpLT5zdHJpbmcoKTsKLSAgICAgICAgICAgIGxvY2FsLnVzZXJDZXJ0aWZpY2F0ZUJhc2U2
NCA9IFdlYktpdDo6dG9JbXBsKHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlH
ZXRJdGVtRm9yS2V5KGxvY2FsUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJVc2VyQ2VydGlmaWNhdGVCYXNlNjQiKSkuZ2V0KCkpKSktPnN0cmluZygpOwotICAgICAg
ICAgICAgbG9jYWwuaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NCA9IFdlYktpdDo6dG9J
bXBsKHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGxv
Y2FsUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJJbnRlcm1lZGlh
dGVDQUNlcnRpZmljYXRlQmFzZTY0IikpLmdldCgpKSkpLT5zdHJpbmcoKTsKLSAgICAgICAgfQot
ICAgICAgICBpZiAoYXV0byBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0UmVmID0gc3RhdGljX2Nh
c3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobG9jYWxSZWYsIGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlByZWZlcnJlZFVzZXJoYW5kbGVCYXNl
NjQiKSkuZ2V0KCkpKSkKLSAgICAgICAgICAgIGxvY2FsLnByZWZlcnJlZFVzZXJoYW5kbGVCYXNl
NjQgPSBXZWJLaXQ6OnRvSW1wbChwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0UmVmKS0+c3RyaW5n
KCk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24ubG9jYWwgPSBXVEZNb3ZlKGxvY2FsKTsKLSAgICB9
Ci0KLSAgICBpZiAoYXV0byBoaWRSZWYgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KFdL
RGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoY29uZmlndXJhdGlvblJlZiwgYWRvcHRXSyhXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSGlkIikpLmdldCgpKSkpIHsKLSAgICAgICAgV2ViS2l0
OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWQgaGlkOwotCi0gICAgICAg
IGF1dG8gc3RhZ2UgPSBXZWJLaXQ6OnRvSW1wbChzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tE
aWN0aW9uYXJ5R2V0SXRlbUZvcktleShoaWRSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIlN0YWdlIikpLmdldCgpKSkpLT5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHN0
YWdlID09ICJpbmZvIikKLSAgICAgICAgICAgIGhpZC5zdGFnZSA9IFdlYktpdDo6TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpTdGFnZTo6SW5mbzsKLSAgICAgICAgZWxz
ZSBpZiAoc3RhZ2UgPT0gInJlcXVlc3QiKQotICAgICAgICAgICAgaGlkLnN0YWdlID0gV2ViS2l0
OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OlN0YWdlOjpSZXF1ZXN0
OwotCi0gICAgICAgIGF1dG8gc3ViU3RhZ2UgPSBXZWJLaXQ6OnRvSW1wbChzdGF0aWNfY2FzdDxX
S1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShoaWRSZWYsIGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlN1YlN0YWdlIikpLmdldCgpKSkpLT5zdHJpbmco
KTsKLSAgICAgICAgaWYgKHN1YlN0YWdlID09ICJpbml0IikKLSAgICAgICAgICAgIGhpZC5zdWJT
dGFnZSA9IFdlYktpdDo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpT
dWJTdGFnZTo6SW5pdDsKLSAgICAgICAgZWxzZSBpZiAoc3ViU3RhZ2UgPT0gIm1zZyIpCi0gICAg
ICAgICAgICBoaWQuc3ViU3RhZ2UgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb246OkhpZDo6U3ViU3RhZ2U6Ok1zZzsKLQotICAgICAgICBhdXRvIGVycm9yID0gV2Vi
S2l0Ojp0b0ltcGwoc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1G
b3JLZXkoaGlkUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFcnJv
ciIpKS5nZXQoKSkpKS0+c3RyaW5nKCk7Ci0gICAgICAgIGlmIChlcnJvciA9PSAic3VjY2VzcyIp
Ci0gICAgICAgICAgICBoaWQuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb246OkhpZDo6RXJyb3I6OlN1Y2Nlc3M7Ci0gICAgICAgIGVsc2UgaWYgKGVycm9y
ID09ICJkYXRhLW5vdC1zZW50IikKLSAgICAgICAgICAgIGhpZC5lcnJvciA9IFdlYktpdDo6TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpFcnJvcjo6RGF0YU5vdFNlbnQ7
Ci0gICAgICAgIGVsc2UgaWYgKGVycm9yID09ICJlbXB0eS1yZXBvcnQiKQotICAgICAgICAgICAg
aGlkLmVycm9yID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpI
aWQ6OkVycm9yOjpFbXB0eVJlcG9ydDsKLSAgICAgICAgZWxzZSBpZiAoZXJyb3IgPT0gIndyb25n
LWNoYW5uZWwtaWQiKQotICAgICAgICAgICAgaGlkLmVycm9yID0gV2ViS2l0OjpNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OkVycm9yOjpXcm9uZ0NoYW5uZWxJZDsKLSAg
ICAgICAgZWxzZSBpZiAoZXJyb3IgPT0gIm1hbGljaW91cy1wYXlsb2FkIikKLSAgICAgICAgICAg
IGhpZC5lcnJvciA9IFdlYktpdDo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6
SGlkOjpFcnJvcjo6TWFsaWNpb3VzUGF5bG9hZDsKLSAgICAgICAgZWxzZSBpZiAoZXJyb3IgPT0g
InVuc3VwcG9ydGVkLW9wdGlvbnMiKQotICAgICAgICAgICAgaGlkLmVycm9yID0gV2ViS2l0OjpN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OkVycm9yOjpVbnN1cHBvcnRl
ZE9wdGlvbnM7Ci0gICAgICAgIGVsc2UgaWYgKGVycm9yID09ICJ3cm9uZy1ub25jZSIpCi0gICAg
ICAgICAgICBoaWQuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb246OkhpZDo6RXJyb3I6Oldyb25nTm9uY2U7Ci0KLSAgICAgICAgaWYgKGF1dG8gcGF5bG9h
ZEJhc2U2NCA9IHN0YXRpY19jYXN0PFdLQXJyYXlSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JL
ZXkoaGlkUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJQYXlsb2Fk
QmFzZTY0IikpLmdldCgpKSkpCi0gICAgICAgICAgICBoaWQucGF5bG9hZEJhc2U2NCA9IFdlYktp
dDo6dG9JbXBsKHBheWxvYWRCYXNlNjQpLT50b1N0cmluZ1ZlY3RvcigpOwotCi0gICAgICAgIGlm
IChhdXRvIGlzVTJmID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJ
dGVtRm9yS2V5KGhpZFJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
SXNVMmYiKSkuZ2V0KCkpKSkKLSAgICAgICAgICAgIGhpZC5pc1UyZiA9IFdLQm9vbGVhbkdldFZh
bHVlKGlzVTJmKTsKLQotICAgICAgICBpZiAoYXV0byBrZWVwQWxpdmUgPSBzdGF0aWNfY2FzdDxX
S0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaGlkUmVmLCBhZG9wdFdLKFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJLZWVwQWxpdmUiKSkuZ2V0KCkpKSkKLSAgICAg
ICAgICAgIGhpZC5rZWVwQWxpdmUgPSBXS0Jvb2xlYW5HZXRWYWx1ZShrZWVwQWxpdmUpOwotCi0g
ICAgICAgIGlmIChhdXRvIGZhc3REYXRhQXJyaXZhbCA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJl
Zj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShoaWRSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIkZhc3REYXRhQXJyaXZhbCIpKS5nZXQoKSkpKQotICAgICAgICAg
ICAgaGlkLmZhc3REYXRhQXJyaXZhbCA9IFdLQm9vbGVhbkdldFZhbHVlKGZhc3REYXRhQXJyaXZh
bCk7Ci0KLSAgICAgICAgaWYgKGF1dG8gY29udGludWVBZnRlckVycm9yRGF0YSA9IHN0YXRpY19j
YXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShoaWRSZWYsIGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEi
KSkuZ2V0KCkpKSkKLSAgICAgICAgICAgIGhpZC5jb250aW51ZUFmdGVyRXJyb3JEYXRhID0gV0tC
b29sZWFuR2V0VmFsdWUoY29udGludWVBZnRlckVycm9yRGF0YSk7Ci0KLSAgICAgICAgaWYgKGF1
dG8gY2FuRG93bmdyYWRlID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlH
ZXRJdGVtRm9yS2V5KGhpZFJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiQ2FuRG93bmdyYWRlIikpLmdldCgpKSkpCi0gICAgICAgICAgICBoaWQuY2FuRG93bmdyYWRl
ID0gV0tCb29sZWFuR2V0VmFsdWUoY2FuRG93bmdyYWRlKTsKLQotICAgICAgICBjb25maWd1cmF0
aW9uLmhpZCA9IFdURk1vdmUoaGlkKTsKLSAgICB9Ci0KLSAgICBpZiAoYXV0byBuZmNSZWYgPSBz
dGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoY29u
ZmlndXJhdGlvblJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTmZj
IikpLmdldCgpKSkpIHsKLSAgICAgICAgV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uOjpOZmMgbmZjOwotCi0gICAgICAgIGF1dG8gZXJyb3IgPSBXZWJLaXQ6OnRvSW1w
bChzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShuZmNS
ZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkVycm9yIikpLmdldCgp
KSkpLT5zdHJpbmcoKTsKLSAgICAgICAgaWYgKGVycm9yID09ICJzdWNjZXNzIikKLSAgICAgICAg
ICAgIG5mYy5lcnJvciA9IFdlYktpdDo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bjo6TmZjOjpFcnJvcjo6U3VjY2VzczsKLSAgICAgICAgZWxzZSBpZiAoZXJyb3IgPT0gIm5vLXRh
Z3MiKQotICAgICAgICAgICAgbmZjLmVycm9yID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uOjpOZmM6OkVycm9yOjpOb1RhZ3M7Ci0gICAgICAgIGVsc2UgaWYgKGVy
cm9yID09ICJ3cm9uZy10YWctdHlwZSIpCi0gICAgICAgICAgICBuZmMuZXJyb3IgPSBXZWJLaXQ6
Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mYzo6RXJyb3I6Oldyb25nVGFn
VHlwZTsKLSAgICAgICAgZWxzZSBpZiAoZXJyb3IgPT0gIm5vLWNvbm5lY3Rpb25zIikKLSAgICAg
ICAgICAgIG5mYy5lcnJvciA9IFdlYktpdDo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbjo6TmZjOjpFcnJvcjo6Tm9Db25uZWN0aW9uczsKLSAgICAgICAgZWxzZSBpZiAoZXJyb3Ig
PT0gIm1hbGljaW91cy1wYXlsb2FkIikKLSAgICAgICAgICAgIG5mYy5lcnJvciA9IFdlYktpdDo6
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjOjpFcnJvcjo6TWFsaWNpb3Vz
UGF5bG9hZDsKLQotICAgICAgICBpZiAoYXV0byBwYXlsb2FkQmFzZTY0ID0gc3RhdGljX2Nhc3Q8
V0tBcnJheVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShuZmNSZWYsIGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlBheWxvYWRCYXNlNjQiKSkuZ2V0KCkpKSkKLSAg
ICAgICAgICAgIG5mYy5wYXlsb2FkQmFzZTY0ID0gV2ViS2l0Ojp0b0ltcGwocGF5bG9hZEJhc2U2
NCktPnRvU3RyaW5nVmVjdG9yKCk7Ci0KLSAgICAgICAgaWYgKGF1dG8gbXVsdGlwbGVUYWdzID0g
c3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG5mY1Jl
ZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTXVsdGlwbGVUYWdzIikp
LmdldCgpKSkpCi0gICAgICAgICAgICBuZmMubXVsdGlwbGVUYWdzID0gV0tCb29sZWFuR2V0VmFs
dWUobXVsdGlwbGVUYWdzKTsKLQotICAgICAgICBjb25maWd1cmF0aW9uLm5mYyA9IFdURk1vdmUo
bmZjKTsKLSAgICB9Ci0KLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpOwot
I2VuZGlmCi19Ci0KIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRp
b25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0
b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVDbGVhckFkQ2xpY2tBdHRy
aWJ1dGlvbnNUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAg
ICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMgPSBXZWJLaXQ6
OldlYnNpdGVEYXRhVHlwZTo6QWRDbGlja0F0dHJpYnV0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKaW5kZXggYzFm
OTkwYjM1YTdiMjY2MjQxNWZlNmYxOGU5MDI4MzkzODA4ODJlZS4uZWY0MzM5ODYwNDRhYTExNDUx
NTdmOWM3YmRiZmFkYjRiZGFmZGYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKQEAgLTE0Myw4ICsxNDMsNiBAQCBX
S19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KFdLV2Vic2l0ZQogCiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRQZXJPcmlnaW5TdG9yYWdlUXVvdGEoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgdWludDY0X3QgcXVvdGEpIFdLX0NfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVO
VChXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uU2V0UGVyT3JpZ2luU3RvcmFnZVF1b3Rh
KTsKIAotV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0V2ViQXV0aGVudGljYXRp
b25Nb2NrQ29uZmlndXJhdGlvbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBX
S0RpY3Rpb25hcnlSZWYgY29uZmlndXJhdGlvbik7Ci0KIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZUNsZWFyQWxsRGV2aWNlT3JpZW50YXRpb25QZXJtaXNzaW9ucyhXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmKTsKIAogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0
YVN0b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1
bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZp
Y2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRvclRyYW5zcG9ydFNlcnZpY2UuY3BwCmluZGV4IDdhMGY4ZjliMTFkMzQyZTFkNDRkYWVj
MTQ5YjE0ZmNhMGExMmQzNDguLmU4MTAzOWI2ZGNiNDBjNTYyNTVkNzdmNGRlZmRlOTZmMWU0ZDRl
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5j
cHAKQEAgLTUzLDcgKzUzLDcgQEAgVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2
aWNlPiBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZTo6Y3JlYXRlKFcKICAgICB9CiB9CiAK
LVVuaXF1ZVJlZjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZT4gQXV0aGVudGljYXRvclRy
YW5zcG9ydFNlcnZpY2U6OmNyZWF0ZU1vY2soV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9y
dCB0cmFuc3BvcnQsIE9ic2VydmVyJiBvYnNlcnZlciwgY29uc3QgTW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK1VuaXF1ZVJlZjxBdXRoZW50aWNhdG9y
VHJhbnNwb3J0U2VydmljZT4gQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U6OmNyZWF0ZU1v
Y2soV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydCB0cmFuc3BvcnQsIE9ic2VydmVyJiBv
YnNlcnZlciwgY29uc3QgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
biYgY29uZmlndXJhdGlvbikKIHsKICAgICBzd2l0Y2ggKHRyYW5zcG9ydCkgewogICAgIGNhc2Ug
V2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6SW50ZXJuYWw6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJh
bnNwb3J0U2VydmljZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2UuaAppbmRleCA2Y2U0NjE4NzhkYmEyYWU2
MGU3NTY2M2U5N2IxYmRmYjcyNGQ0ZmRlLi4wOTA4NGFiOGE3Yzc5MDkwNTE3ZjJlNzJlYjdhNTQ2
ZDlhZDI2ZWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2
aWNlLmgKQEAgLTMxLDEyICszMSwxNCBAQAogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIEF1dGhlbnRpY2F0b3I7CiAKLXN0cnVjdCBNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uOwotCiBjbGFzcyBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZSA6IHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZT4gewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1dGhl
bnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlKTsKQEAgLTQ5LDcgKzUxLDcgQEAgcHVibGljOgogICAg
IH07CiAKICAgICBzdGF0aWMgVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNl
PiBjcmVhdGUoV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydCwgT2JzZXJ2ZXImKTsKLSAg
ICBzdGF0aWMgVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPiBjcmVhdGVN
b2NrKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQsIE9ic2VydmVyJiwgY29uc3QgTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYpOworICAgIHN0YXRpYyBVbmlxdWVSZWY8
QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U+IGNyZWF0ZU1vY2soV2ViQ29yZTo6QXV0aGVu
dGljYXRvclRyYW5zcG9ydCwgT2JzZXJ2ZXImLCBjb25zdCBXZWJDb3JlOjpNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uJik7CiAKICAgICB2aXJ0dWFsIH5BdXRoZW50aWNhdG9yVHJh
bnNwb3J0U2VydmljZSgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrQXV0aGVudGljYXRvck1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2Nr
QXV0aGVudGljYXRvck1hbmFnZXIuY3BwCmluZGV4IDA4NGM5YmUyM2ZiMGFiZDk1NjNkZjkxZmM2
NjZlMTFmMTM1MTA2YzYuLmY4ZmYyZDY3NjRiZDdhNWQxNGFiY2IxNjAzNTJkY2QxZDEwYTZmYzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01v
Y2svTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5jcHAK
QEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLU1vY2tBdXRoZW50aWNh
dG9yTWFuYWdlcjo6TW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyKE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQorTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2Vy
OjpNb2NrQXV0aGVudGljYXRvck1hbmFnZXIoV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX3Rlc3RDb25maWd1cmF0aW9u
KFdURk1vdmUoY29uZmlndXJhdGlvbikpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tBdXRoZW50aWNhdG9yTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2Nr
QXV0aGVudGljYXRvck1hbmFnZXIuaAppbmRleCA4NWQ4MDA5OTU2NjRlYTVlY2Q5MmE0ZWMwNDU3
N2RhYWFlYTUwOTlhLi5hOGViODBhNTdhNzdmYmIxNmRkMTYwODJhOTI4M2U4YTk5NWVkOTQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2Nr
L01vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKQEAgLTI4
LDIyICsyOCwyMiBAQAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJBdXRoZW50
aWNhdG9yTWFuYWdlci5oIgotI2luY2x1ZGUgIk1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE1vY2tBdXRoZW50aWNhdG9y
TWFuYWdlciBmaW5hbCA6IHB1YmxpYyBBdXRoZW50aWNhdG9yTWFuYWdlciB7CiBwdWJsaWM6Ci0g
ICAgZXhwbGljaXQgTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyKE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24mJik7CisgICAgZXhwbGljaXQgTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2Vy
KFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mJik7CiAKICAgICBi
b29sIGlzTW9jaygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHNldFRl
c3RDb25maWd1cmF0aW9uKE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mJiBjb25m
aWd1cmF0aW9uKSB7IG1fdGVzdENvbmZpZ3VyYXRpb24gPSBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24p
OyB9CisgICAgdm9pZCBzZXRUZXN0Q29uZmlndXJhdGlvbihXZWJDb3JlOjpNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikgeyBtX3Rlc3RDb25maWd1cmF0
aW9uID0gV1RGTW92ZShjb25maWd1cmF0aW9uKTsgfQogCiBwcml2YXRlOgogICAgIFVuaXF1ZVJl
ZjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZT4gY3JlYXRlU2VydmljZShXZWJDb3JlOjpB
dXRoZW50aWNhdG9yVHJhbnNwb3J0LCBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZTo6T2Jz
ZXJ2ZXImKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHJlc3BvbmRSZWNlaXZlZEludGVybmFsKFJl
c3BvbmQmJikgZmluYWw7CiAKLSAgICBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
IG1fdGVzdENvbmZpZ3VyYXRpb247CisgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbiBtX3Rlc3RDb25maWd1cmF0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3BwCmluZGV4IDhlMGZl
NTI2ZDIwNmVkYzBiYzM3ZTg2ZTRhYWY0ZWQ1ZDk3YTRlZjMuLjY1ODQ2NmRlN2IxMzFlYmU1NGU2
NzFmNjcwNDNjN2ZmZTZjNTM2OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rp
b24uY3BwCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgTW9ja0hpZCA9IE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb246OkhpZDsKK3VzaW5nIE1vY2sgPSBXZWJDb3JlOjpNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBu
YW1lc3BhY2UgY2JvcjsKIHVzaW5nIG5hbWVzcGFjZSBmaWRvOwpAQCAtODIsNyArODIsNyBAQCB2
b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpzZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIERhdGFT
ZW50Q2FsbGJhY2smJiBjYWxsYmFjawogICAgICAgICAgICAgd2Vha1RoaXMtPmFzc2VtYmxlUmVx
dWVzdChXVEZNb3ZlKGRhdGEpKTsKIAogICAgICAgICAgICAgYXV0byBzZW50ID0gRGF0YVNlbnQ6
OlllczsKLSAgICAgICAgICAgIGlmICh3ZWFrVGhpcy0+c3RhZ2VzTWF0Y2goKSAmJiB3ZWFrVGhp
cy0+bV9jb25maWd1cmF0aW9uLmhpZC0+ZXJyb3IgPT0gTW9ja0hpZDo6RXJyb3I6OkRhdGFOb3RT
ZW50KQorICAgICAgICAgICAgaWYgKHdlYWtUaGlzLT5zdGFnZXNNYXRjaCgpICYmIHdlYWtUaGlz
LT5tX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBNb2NrOjpIaWRFcnJvcjo6RGF0YU5vdFNl
bnQpCiAgICAgICAgICAgICAgICAgc2VudCA9IERhdGFTZW50OjpObzsKICAgICAgICAgICAgIGNh
bGxiYWNrKHNlbnQpOwogICAgICAgICB9KTsKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBNb2NrSGlk
Q29ubmVjdGlvbjo6c2VuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBEYXRhU2VudENhbGxiYWNr
JiYgY2FsbGJhY2sKIAogdm9pZCBNb2NrSGlkQ29ubmVjdGlvbjo6cmVnaXN0ZXJEYXRhUmVjZWl2
ZWRDYWxsYmFja0ludGVybmFsKCkKIHsKLSAgICBpZiAoc3RhZ2VzTWF0Y2goKSAmJiBtX2NvbmZp
Z3VyYXRpb24uaGlkLT5lcnJvciA9PSBNb2NrSGlkOjpFcnJvcjo6RW1wdHlSZXBvcnQpIHsKKyAg
ICBpZiAoc3RhZ2VzTWF0Y2goKSAmJiBtX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBNb2Nr
OjpIaWRFcnJvcjo6RW1wdHlSZXBvcnQpIHsKICAgICAgICAgcmVjZWl2ZVJlcG9ydCh7IH0pOwog
ICAgICAgICBzaG91bGRDb250aW51ZUZlZWRSZXBvcnRzKCk7CiAgICAgICAgIHJldHVybjsKQEAg
LTEyMywxNCArMTIzLDE0IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OnBhcnNlUmVxdWVzdCgp
CiAgICAgLy8gU2V0IHN0YWdlcy4KICAgICBpZiAobV9yZXF1ZXN0TWVzc2FnZS0+Y21kKCkgPT0g
Rmlkb0hpZERldmljZUNvbW1hbmQ6OmtJbml0KSB7CiAgICAgICAgIGF1dG8gcHJldmlvdXNTdWJT
dGFnZSA9IG1fc3ViU3RhZ2U7Ci0gICAgICAgIG1fc3ViU3RhZ2UgPSBNb2NrSGlkOjpTdWJTdGFn
ZTo6SW5pdDsKLSAgICAgICAgaWYgKHByZXZpb3VzU3ViU3RhZ2UgPT0gTW9ja0hpZDo6U3ViU3Rh
Z2U6Ok1zZykKLSAgICAgICAgICAgIG1fc3RhZ2UgPSBNb2NrSGlkOjpTdGFnZTo6UmVxdWVzdDsK
KyAgICAgICAgbV9zdWJTdGFnZSA9IE1vY2s6OkhpZFN1YlN0YWdlOjpJbml0OworICAgICAgICBp
ZiAocHJldmlvdXNTdWJTdGFnZSA9PSBNb2NrOjpIaWRTdWJTdGFnZTo6TXNnKQorICAgICAgICAg
ICAgbV9zdGFnZSA9IE1vY2s6OkhpZFN0YWdlOjpSZXF1ZXN0OwogICAgIH0KICAgICBpZiAobV9y
ZXF1ZXN0TWVzc2FnZS0+Y21kKCkgPT0gRmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYm9yIHx8IG1f
cmVxdWVzdE1lc3NhZ2UtPmNtZCgpID09IEZpZG9IaWREZXZpY2VDb21tYW5kOjprTXNnKQotICAg
ICAgICBtX3N1YlN0YWdlID0gTW9ja0hpZDo6U3ViU3RhZ2U6Ok1zZzsKKyAgICAgICAgbV9zdWJT
dGFnZSA9IE1vY2s6OkhpZFN1YlN0YWdlOjpNc2c7CiAKLSAgICBpZiAobV9zdGFnZSA9PSBNb2Nr
SGlkOjpTdGFnZTo6UmVxdWVzdCAmJiBtX3N1YlN0YWdlID09IE1vY2tIaWQ6OlN1YlN0YWdlOjpN
c2cpIHsKKyAgICBpZiAobV9zdGFnZSA9PSBNb2NrOjpIaWRTdGFnZTo6UmVxdWVzdCAmJiBtX3N1
YlN0YWdlID09IE1vY2s6OkhpZFN1YlN0YWdlOjpNc2cpIHsKICAgICAgICAgLy8gTWFrZSBzdXJl
IHdlIGlzc3VlIGRpZmZlcmVudCBtc2cgY21kIGZvciBDVEFQIGFuZCBVMkYuCiAgICAgICAgIGlm
IChtX2NvbmZpZ3VyYXRpb24uaGlkLT5jYW5Eb3duZ3JhZGUgJiYgIW1fY29uZmlndXJhdGlvbi5o
aWQtPmlzVTJmKQogICAgICAgICAgICAgbV9jb25maWd1cmF0aW9uLmhpZC0+aXNVMmYgPSBtX3Jl
cXVlc3RNZXNzYWdlLT5jbWQoKSA9PSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a01zZzsKQEAgLTE3
Niw3ICsxNzYsNyBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpwYXJzZVJlcXVlc3QoKQogICAg
IH0KIAogICAgIC8vIFN0b3JlIG5vbmNlLgotICAgIGlmIChtX3N1YlN0YWdlID09IE1vY2tIaWQ6
OlN1YlN0YWdlOjpJbml0KSB7CisgICAgaWYgKG1fc3ViU3RhZ2UgPT0gTW9jazo6SGlkU3ViU3Rh
Z2U6OkluaXQpIHsKICAgICAgICAgbV9ub25jZSA9IG1fcmVxdWVzdE1lc3NhZ2UtPmdldE1lc3Nh
Z2VQYXlsb2FkKCk7CiAgICAgICAgIEFTU0VSVChtX25vbmNlLnNpemUoKSA9PSBrSGlkSW5pdE5v
bmNlTGVuZ3RoKTsKICAgICB9CkBAIC0xOTEsMTcgKzE5MSwxNyBAQCB2b2lkIE1vY2tIaWRDb25u
ZWN0aW9uOjpmZWVkUmVwb3J0cygpCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIE1vY2tIaWRDb25u
ZWN0aW9uSW50ZXJuYWw7CiAKLSAgICBpZiAobV9zdWJTdGFnZSA9PSBNb2NrSGlkOjpTdWJTdGFn
ZTo6SW5pdCkgeworICAgIGlmIChtX3N1YlN0YWdlID09IE1vY2s6OkhpZFN1YlN0YWdlOjpJbml0
KSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBwYXlsb2FkOwogICAgICAgICBwYXlsb2FkLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoa0hpZEluaXRSZXNwb25zZVNpemUpOwogICAgICAgICBwYXls
b2FkLmFwcGVuZFZlY3RvcihtX25vbmNlKTsKICAgICAgICAgc2l6ZV90IHdyaXRlUG9zaXRpb24g
PSBwYXlsb2FkLnNpemUoKTsKLSAgICAgICAgaWYgKHN0YWdlc01hdGNoKCkgJiYgbV9jb25maWd1
cmF0aW9uLmhpZC0+ZXJyb3IgPT0gTW9ja0hpZDo6RXJyb3I6Oldyb25nTm9uY2UpCisgICAgICAg
IGlmIChzdGFnZXNNYXRjaCgpICYmIG1fY29uZmlndXJhdGlvbi5oaWQtPmVycm9yID09IE1vY2s6
OkhpZEVycm9yOjpXcm9uZ05vbmNlKQogICAgICAgICAgICAgcGF5bG9hZFswXS0tOwogICAgICAg
ICBwYXlsb2FkLmdyb3coa0hpZEluaXRSZXNwb25zZVNpemUpOwogICAgICAgICBjcnlwdG9ncmFw
aGljYWxseVJhbmRvbVZhbHVlcyhwYXlsb2FkLmRhdGEoKSArIHdyaXRlUG9zaXRpb24sIEN0YXBD
aGFubmVsSWRTaXplKTsKICAgICAgICAgYXV0byBjaGFubmVsID0ga0hpZEJyb2FkY2FzdENoYW5u
ZWw7Ci0gICAgICAgIGlmIChzdGFnZXNNYXRjaCgpICYmIG1fY29uZmlndXJhdGlvbi5oaWQtPmVy
cm9yID09IE1vY2tIaWQ6OkVycm9yOjpXcm9uZ0NoYW5uZWxJZCkKKyAgICAgICAgaWYgKHN0YWdl
c01hdGNoKCkgJiYgbV9jb25maWd1cmF0aW9uLmhpZC0+ZXJyb3IgPT0gTW9jazo6SGlkRXJyb3I6
Oldyb25nQ2hhbm5lbElkKQogICAgICAgICAgICAgY2hhbm5lbC0tOwogICAgICAgICBGaWRvSGlk
SW5pdFBhY2tldCBpbml0UGFja2V0KGNoYW5uZWwsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprSW5p
dCwgV1RGTW92ZShwYXlsb2FkKSwgcGF5bG9hZC5zaXplKCkpOwogICAgICAgICByZWNlaXZlUmVw
b3J0KGluaXRQYWNrZXQuZ2V0U2VyaWFsaXplZERhdGEoKSk7CkBAIC0yMTAsMTQgKzIxMCwxNCBA
QCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpmZWVkUmVwb3J0cygpCiAgICAgfQogCiAgICAgT3B0
aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+IG1lc3NhZ2U7Ci0gICAgaWYgKG1fc3RhZ2UgPT0gTW9ja0hp
ZDo6U3RhZ2U6OkluZm8gJiYgbV9zdWJTdGFnZSA9PSBNb2NrSGlkOjpTdWJTdGFnZTo6TXNnKSB7
CisgICAgaWYgKG1fc3RhZ2UgPT0gTW9jazo6SGlkU3RhZ2U6OkluZm8gJiYgbV9zdWJTdGFnZSA9
PSBNb2NrOjpIaWRTdWJTdGFnZTo6TXNnKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBpbmZv
RGF0YTsKICAgICAgICAgaWYgKG1fY29uZmlndXJhdGlvbi5oaWQtPmNhbkRvd25ncmFkZSkKICAg
ICAgICAgICAgIGluZm9EYXRhID0gZW5jb2RlQXNDQk9SKEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVz
cG9uc2UoeyBQcm90b2NvbFZlcnNpb246OmtDdGFwLCBQcm90b2NvbFZlcnNpb246OmtVMmYgfSwg
VmVjdG9yPHVpbnQ4X3Q+KGFhZ3VpZExlbmd0aCwgMHUpKSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGluZm9EYXRhID0gZW5jb2RlQXNDQk9SKEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9u
c2UoeyBQcm90b2NvbFZlcnNpb246OmtDdGFwIH0sIFZlY3Rvcjx1aW50OF90PihhYWd1aWRMZW5n
dGgsIDB1KSkpOwogICAgICAgICBpbmZvRGF0YS5pbnNlcnQoMCwgc3RhdGljX2Nhc3Q8dWludDhf
dD4oQ3RhcERldmljZVJlc3BvbnNlQ29kZTo6a1N1Y2Nlc3MpKTsgLy8gUHJlcGVuZCBzdGF0dXMg
Y29kZS4KLSAgICAgICAgaWYgKHN0YWdlc01hdGNoKCkgJiYgbV9jb25maWd1cmF0aW9uLmhpZC0+
ZXJyb3IgPT0gTW9ja0hpZDo6RXJyb3I6Oldyb25nQ2hhbm5lbElkKQorICAgICAgICBpZiAoc3Rh
Z2VzTWF0Y2goKSAmJiBtX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBNb2NrOjpIaWRFcnJv
cjo6V3JvbmdDaGFubmVsSWQpCiAgICAgICAgICAgICBtZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6
OmNyZWF0ZShtX2N1cnJlbnRDaGFubmVsIC0gMSwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYm9y
LCBpbmZvRGF0YSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaWYgKCFtX2NvbmZpZ3Vy
YXRpb24uaGlkLT5pc1UyZikKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIE1vY2tIaWRDb25uZWN0
aW9uOjpmZWVkUmVwb3J0cygpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAobV9zdGFnZSA9
PSBNb2NrSGlkOjpTdGFnZTo6UmVxdWVzdCAmJiBtX3N1YlN0YWdlID09IE1vY2tIaWQ6OlN1YlN0
YWdlOjpNc2cpIHsKKyAgICBpZiAobV9zdGFnZSA9PSBNb2NrOjpIaWRTdGFnZTo6UmVxdWVzdCAm
JiBtX3N1YlN0YWdlID09IE1vY2s6OkhpZFN1YlN0YWdlOjpNc2cpIHsKICAgICAgICAgaWYgKG1f
Y29uZmlndXJhdGlvbi5oaWQtPmtlZXBBbGl2ZSkgewogICAgICAgICAgICAgbV9jb25maWd1cmF0
aW9uLmhpZC0+a2VlcEFsaXZlID0gZmFsc2U7CiAgICAgICAgICAgICBGaWRvSGlkSW5pdFBhY2tl
dCBpbml0UGFja2V0KG1fY3VycmVudENoYW5uZWwsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprS2Vl
cEFsaXZlLCB7IEN0YXBLZWVwQWxpdmVTdGF0dXNQcm9jZXNzaW5nIH0sIDEpOwpAQCAtMjM1LDcg
KzIzNSw3IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OmZlZWRSZXBvcnRzKCkKICAgICAgICAg
ICAgIGNvbnRpbnVlRmVlZFJlcG9ydHMoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQotICAgICAgICBpZiAoc3RhZ2VzTWF0Y2goKSAmJiBtX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJv
ciA9PSBNb2NrSGlkOjpFcnJvcjo6VW5zdXBwb3J0ZWRPcHRpb25zICYmIChtX3JlcXVpcmVSZXNp
ZGVudEtleSB8fCBtX3JlcXVpcmVVc2VyVmVyaWZpY2F0aW9uKSkKKyAgICAgICAgaWYgKHN0YWdl
c01hdGNoKCkgJiYgbV9jb25maWd1cmF0aW9uLmhpZC0+ZXJyb3IgPT0gTW9jazo6SGlkRXJyb3I6
OlVuc3VwcG9ydGVkT3B0aW9ucyAmJiAobV9yZXF1aXJlUmVzaWRlbnRLZXkgfHwgbV9yZXF1aXJl
VXNlclZlcmlmaWNhdGlvbikpCiAgICAgICAgICAgICBtZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6
OmNyZWF0ZShtX2N1cnJlbnRDaGFubmVsLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0Nib3IsIHsg
c3RhdGljX2Nhc3Q8dWludDhfdD4oQ3RhcERldmljZVJlc3BvbnNlQ29kZTo6a0N0YXAyRXJyVW5z
dXBwb3J0ZWRPcHRpb24pIH0pOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFZlY3Rvcjx1
aW50OF90PiBwYXlsb2FkOwpAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rp
b246OmZlZWRSZXBvcnRzKCkKICAgICBib29sIGlzRmlyc3QgPSB0cnVlOwogICAgIHdoaWxlICht
ZXNzYWdlLT5udW1QYWNrZXRzKCkpIHsKICAgICAgICAgYXV0byByZXBvcnQgPSBtZXNzYWdlLT5w
b3BOZXh0UGFja2V0KCk7Ci0gICAgICAgIGlmICghaXNGaXJzdCAmJiBzdGFnZXNNYXRjaCgpICYm
IG1fY29uZmlndXJhdGlvbi5oaWQtPmVycm9yID09IE1vY2tIaWQ6OkVycm9yOjpXcm9uZ0NoYW5u
ZWxJZCkKKyAgICAgICAgaWYgKCFpc0ZpcnN0ICYmIHN0YWdlc01hdGNoKCkgJiYgbV9jb25maWd1
cmF0aW9uLmhpZC0+ZXJyb3IgPT0gTW9jazo6SGlkRXJyb3I6Oldyb25nQ2hhbm5lbElkKQogICAg
ICAgICAgICAgcmVwb3J0ID0gRmlkb0hpZENvbnRpbnVhdGlvblBhY2tldChtX2N1cnJlbnRDaGFu
bmVsIC0gMSwgMCwgeyB9KS5nZXRTZXJpYWxpemVkRGF0YSgpOwogICAgICAgICAvLyBQYWNrZXRz
IGFyZSBmZWVkIGFzeW5jaHJvbm91c2x5IHRvIG1pbWljIGFjdHVhbCBkYXRhIHRyYW5zbWlzc2lv
bi4KICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtyZXBvcnQgPSBXVEZNb3ZlKHJl
cG9ydCksIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSgpIG11dGFibGUgewpAQCAtMjc2
LDcgKzI3Niw3IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OnNob3VsZENvbnRpbnVlRmVlZFJl
cG9ydHMoKQogICAgIGlmICghbV9jb25maWd1cmF0aW9uLmhpZC0+Y29udGludWVBZnRlckVycm9y
RGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fY29uZmlndXJhdGlvbi5oaWQtPmNvbnRpbnVl
QWZ0ZXJFcnJvckRhdGEgPSBmYWxzZTsKLSAgICBtX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9
IE1vY2tIaWQ6OkVycm9yOjpTdWNjZXNzOworICAgIG1fY29uZmlndXJhdGlvbi5oaWQtPmVycm9y
ID0gTW9jazo6SGlkRXJyb3I6OlN1Y2Nlc3M7CiAgICAgY29udGludWVGZWVkUmVwb3J0cygpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmgKaW5kZXggMzc4ODY2ZjM2OGFl
ODRiNmZjNTljZWM3MGVhNmUzNDgzOWY3ZTFhNi4uNDA4MzZkMjgzZmRlMDE1MjVmNTY5ZTA3Mjk2
ODE5Njg3ZTE3ZTBkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uaApAQCAt
MjgsOCArMjgsOCBAQAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJIaWRDb25u
ZWN0aW9uLmgiCi0jaW5jbHVkZSAiTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvRmlkb0hpZE1lc3NhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAvLyBBY2NvcmRpbmcgdG8gZGlmZmVyZW50IGNvbWJpbmF0aW9ucyBvZiBlcnJv
ciBhbmQgc3RhZ2VzLCBlcnJvciB3aWxsIG1hbmlmZXN0IGRpZmZlcmVudGx5LgogY2xhc3MgTW9j
a0hpZENvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TW9ja0hpZENvbm5l
Y3Rpb24+LCBwdWJsaWMgSGlkQ29ubmVjdGlvbiB7CiBwdWJsaWM6Ci0gICAgTW9ja0hpZENvbm5l
Y3Rpb24oSU9ISUREZXZpY2VSZWYsIGNvbnN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24mKTsKKyAgICBNb2NrSGlkQ29ubmVjdGlvbihJT0hJRERldmljZVJlZiwgY29uc3QgV2Vi
Q29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYpOwogCiBwcml2YXRlOgog
ICAgIHZvaWQgc2VuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBEYXRhU2VudENhbGxiYWNrJiYp
IGZpbmFsOwpAQCAtNjAsMTAgKzYwLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzaG91bGRDb250
aW51ZUZlZWRSZXBvcnRzKCk7CiAgICAgdm9pZCBjb250aW51ZUZlZWRSZXBvcnRzKCk7CiAKLSAg
ICBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKKyAg
ICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uIG1fY29uZmlndXJh
dGlvbjsKICAgICBPcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4gbV9yZXF1ZXN0TWVzc2Fn
ZTsKLSAgICBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OlN0YWdlIG1f
c3RhZ2UgeyBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OlN0YWdlOjpJ
bmZvIH07Ci0gICAgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpTdWJT
dGFnZSBtX3N1YlN0YWdlIHsgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlk
OjpTdWJTdGFnZTo6SW5pdCB9OworICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb246OkhpZFN0YWdlIG1fc3RhZ2UgeyBNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uOjpIaWRTdGFnZTo6SW5mbyB9OworICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZFN1YlN0YWdlIG1fc3ViU3RhZ2UgeyBNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRTdWJTdGFnZTo6SW5pdCB9OwogICAgIHVpbnQz
Ml90IG1fY3VycmVudENoYW5uZWwgeyBmaWRvOjprSGlkQnJvYWRjYXN0Q2hhbm5lbCB9OwogICAg
IGJvb2wgbV9yZXF1aXJlUmVzaWRlbnRLZXkgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9yZXF1aXJl
VXNlclZlcmlmaWNhdGlvbiAgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkU2VydmljZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRTZXJ2aWNl
LmNwcAppbmRleCAyNGNjMzZiMmNkNTM0ZDRmMjUyZDNmZjA2OGM5YjQ5N2E2YTkyNTU5Li44NTA1
Zjc1Y2U5YmJlZjE4YmIyOWM2NGY2MjhkYjBhZDE3ODViZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRTZXJ2aWNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01v
Y2tIaWRTZXJ2aWNlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotTW9ja0hpZFNlcnZpY2U6Ok1vY2tIaWRTZXJ2aWNlKE9ic2VydmVyJiBvYnNlcnZlciwgY29u
c3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK01v
Y2tIaWRTZXJ2aWNlOjpNb2NrSGlkU2VydmljZShPYnNlcnZlciYgb2JzZXJ2ZXIsIGNvbnN0IFdl
YkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24p
CiAgICAgOiBIaWRTZXJ2aWNlKG9ic2VydmVyKQogICAgICwgbV9jb25maWd1cmF0aW9uKGNvbmZp
Z3VyYXRpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRTZXJ2aWNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRTZXJ2aWNlLmgKaW5kZXggY2JlMDE1ZWYw
ZDQ1OGI5MDc5NWJiOTQxM2ZjYTUyYjhiNDllNjNlMS4uYmUxZWFkNjE3OTg2YTkzOWU2YWMyZmI0
MmEzNzhhMjk5YzU4NzZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkU2VydmljZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZFNlcnZpY2UuaApAQCAtMjgs
MTIgKzI4LDEwIEBACiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAogI2luY2x1ZGUgIkhpZFNlcnZp
Y2UuaCIKLSNpbmNsdWRlICJNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbjsKLQogY2xhc3MgTW9ja0hpZFNlcnZpY2UgZmluYWwgOiBwdWJsaWMgSGlkU2Vydmlj
ZSB7CiBwdWJsaWM6CiAgICAgTW9ja0hpZFNlcnZpY2UoT2JzZXJ2ZXImLCBjb25zdCBNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJik7CkBAIC00Miw3ICs0MCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBwbGF0Zm9ybVN0YXJ0RGlzY292ZXJ5KCkgZmluYWw7CiAgICAgVW5pcXVlUmVm
PEhpZENvbm5lY3Rpb24+IGNyZWF0ZUhpZENvbm5lY3Rpb24oSU9ISUREZXZpY2VSZWYpIGNvbnN0
IGZpbmFsOwogCi0gICAgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZp
Z3VyYXRpb247CisgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
biBtX2NvbmZpZ3VyYXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xv
Y2FsQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmgKaW5kZXggMzFhZDcxYTMxMjdiYWFhNDY2Yzcy
OWRhNWJmNGQxZDUyYjRlMWFhNC4uMzU1OWI4MGViOTgyODBhMDFjMTUwYWM0MjJhNDNjMjNlY2Qz
YWQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmgKQEAgLTI4LDEz
ICsyOCwxMyBAQAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJMb2NhbENvbm5l
Y3Rpb24uaCIKLSNpbmNsdWRlICJNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBNb2NrTG9jYWxDb25uZWN0aW9uIGZpbmFs
IDogcHVibGljIExvY2FsQ29ubmVjdGlvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgTW9ja0xv
Y2FsQ29ubmVjdGlvbihjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJik7
CisgICAgZXhwbGljaXQgTW9ja0xvY2FsQ29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBnZXRV
c2VyQ29uc2VudChjb25zdCBTdHJpbmcmIHJlYXNvbiwgVXNlckNvbnNlbnRDYWxsYmFjayYmKSBj
b25zdCBmaW5hbDsKQEAgLTQyLDcgKzQyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldEF0dGVz
dGF0aW9uKGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgU3RyaW5nJiB1c2VybmFtZSwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBBdHRlc3RhdGlvbkNhbGxiYWNrJiYpIGNvbnN0IGZpbmFs
OwogICAgIE5TRGljdGlvbmFyeSAqc2VsZWN0Q3JlZGVudGlhbChjb25zdCBOU0FycmF5ICopIGNv
bnN0IGZpbmFsOwogCi0gICAgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBtX2Nv
bmZpZ3VyYXRpb247CisgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbiBtX2NvbmZpZ3VyYXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9j
a0xvY2FsQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQppbmRleCA1NzFlY2NhN2U0ZjQ3MGZj
NjliNDFjZGQyNjAzOWNiOTI3MWQ0YTBhLi5jZGIxYWEzNDI1ZjllOGNmYzYyOGYyNWJlYTJhNzI1
MGU5N2FlODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tCkBA
IC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1Nb2NrTG9jYWxDb25uZWN0
aW9uOjpNb2NrTG9jYWxDb25uZWN0aW9uKGNvbnN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCitNb2NrTG9jYWxDb25uZWN0aW9uOjpNb2NrTG9jYWxD
b25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24mIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikK
IHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL01vY2svTW9ja0xvY2FsU2VydmljZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxTZXJ2aWNlLmgKaW5kZXggN2ViOGYyMTRiYzA0
ZTdkZmZiMTAxMGE2ODJmNGYxMTEwYzYzMjc2MS4uOTE2OWJkNzYyMzJmMDBmOWMwMjRjYTQxMGNh
NGUwYzk1N2I5MzI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxTZXJ2aWNlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxTZXJ2aWNlLmgKQEAgLTI4
LDIxICsyOCwxOSBAQAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJMb2NhbFNl
cnZpY2UuaCIKLSNpbmNsdWRlICJNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbjsKLQogY2xhc3MgTW9ja0xvY2FsU2VydmljZSBmaW5hbCA6IHB1YmxpYyBMb2Nh
bFNlcnZpY2UgewogcHVibGljOgotICAgIE1vY2tMb2NhbFNlcnZpY2UoT2JzZXJ2ZXImLCBjb25z
dCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJik7CisgICAgTW9ja0xvY2FsU2Vy
dmljZShPYnNlcnZlciYsIGNvbnN0IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24mKTsKIAogcHJpdmF0ZToKICAgICBib29sIHBsYXRmb3JtU3RhcnREaXNjb3Zlcnko
KSBjb25zdCBmaW5hbDsKICAgICBVbmlxdWVSZWY8TG9jYWxDb25uZWN0aW9uPiBjcmVhdGVMb2Nh
bENvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKIAotICAgIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9uOworICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9uOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Nb2NrL01vY2tMb2NhbFNlcnZpY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbFNlcnZpY2UubW0KaW5kZXggMWViMDEw
MmVjZTc3NjFmMzM0ZTQwYjU1NGFjMTg4MWY5MzM3ZDk5Yi4uZmVjMTkyN2RlNWRjYTA0NWIxMDFi
MzY1NjEyM2E5ZWE1NTdhN2YxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxTZXJ2aWNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsU2VydmljZS5t
bQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotTW9ja0xvY2FsU2Vy
dmljZTo6TW9ja0xvY2FsU2VydmljZShPYnNlcnZlciYgb2JzZXJ2ZXIsIGNvbnN0IE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCitNb2NrTG9jYWxTZXJ2
aWNlOjpNb2NrTG9jYWxTZXJ2aWNlKE9ic2VydmVyJiBvYnNlcnZlciwgY29uc3QgV2ViQ29yZTo6
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICA6
IExvY2FsU2VydmljZShvYnNlcnZlcikKICAgICAsIG1fY29uZmlndXJhdGlvbihjb25maWd1cmF0
aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrTmZjU2VydmljZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vTW9jay9Nb2NrTmZjU2VydmljZS5oCmluZGV4IDEzMmNkZTRkNmI2NmRh
YzMxYWNjNjI5NmM1ZTk5ODI2YTI2YjMzMDIuLjlmZDFjOWI0MTBiODIzMmI0ZDM1ZTBlMTI4Njdm
ZDM2NDZkNTY2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL01vY2svTW9ja05mY1NlcnZpY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLmgKQEAgLTI3LDE4ICsy
NywxNiBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAotI2luY2x1ZGUgIk1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJOZmNTZXJ2aWNlLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg+CiAKIE9C
SkNfQ0xBU1MgTlNEYXRhOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RydWN0IE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb247Ci0KIGNsYXNzIE1vY2tOZmNTZXJ2aWNlIGZpbmFs
IDogcHVibGljIE5mY1NlcnZpY2UgewogcHVibGljOgotICAgIE1vY2tOZmNTZXJ2aWNlKE9ic2Vy
dmVyJiwgY29uc3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYpOworICAgIE1v
Y2tOZmNTZXJ2aWNlKE9ic2VydmVyJiwgY29uc3QgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbiYpOwogCiAgICAgTlNEYXRhKiB0cmFuc2NlaXZlKCk7CiAKQEAgLTQ3
LDcgKzQ1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGV0ZWN0VGFncygpIGNvbnN0OwogCi0g
ICAgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247Cisg
ICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3Vy
YXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja05mY1NlcnZpY2UubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNT
ZXJ2aWNlLm1tCmluZGV4IGNhM2RlMjEwMjJiM2EzOTEyNzgwYmEwNzFiMWZkZDY0NmRjOWJhNGEu
LmNhNTIyYzVlM2EzZDI4ZDQyMDU1ODM3MmIxNTcxZjcxM2UzN2QxYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja05mY1NlcnZp
Y2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9j
ay9Nb2NrTmZjU2VydmljZS5tbQpAQCAtMTA4LDcgKzEwOCw3IEBAIEBlbmQKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgZmlkbzsKLXVzaW5nIE1vY2tOZmMgPSBNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmM7Cit1c2luZyBNb2NrID0gV2ViQ29yZTo6
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjsKIAogI2lmIEhBVkUoTkVBUl9GSUVM
RCkKIApAQCAtMTQzLDcgKzE0Myw3IEBAIHN0YXRpYyBOU0RhdGEqIE5GUmVhZGVyU2Vzc2lvblRy
YW5zY2VpdmUoaWQsIFNFTCwgTlNEYXRhICopCiAKICNlbmRpZiAvLyBIQVZFKE5FQVJfRklFTEQp
CiAKLU1vY2tOZmNTZXJ2aWNlOjpNb2NrTmZjU2VydmljZShPYnNlcnZlciYgb2JzZXJ2ZXIsIGNv
bnN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCitN
b2NrTmZjU2VydmljZTo6TW9ja05mY1NlcnZpY2UoT2JzZXJ2ZXImIG9ic2VydmVyLCBjb25zdCBX
ZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9u
KQogICAgIDogTmZjU2VydmljZShvYnNlcnZlcikKICAgICAsIG1fY29uZmlndXJhdGlvbihjb25m
aWd1cmF0aW9uKQogewpAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgTW9ja05mY1NlcnZpY2U6OnBs
YXRmb3JtU3RhcnREaXNjb3ZlcnkoKQogICAgICAgICBtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24o
bWV0aG9kVG9Td2l6emxlMSwgKElNUClORlJlYWRlclNlc3Npb25TZXREZWxlZ2F0ZSk7CiAKICAg
ICAgICAgTWV0aG9kIG1ldGhvZFRvU3dpenpsZTIgPSBjbGFzc19nZXRJbnN0YW5jZU1ldGhvZChn
ZXRORlJlYWRlclNlc3Npb25DbGFzcygpLCBAc2VsZWN0b3IoY29ubmVjdFRhZzopKTsKLSAgICAg
ICAgaWYgKG1fY29uZmlndXJhdGlvbi5uZmMtPmVycm9yID09IE1vY2tOZmM6OkVycm9yOjpOb0Nv
bm5lY3Rpb25zKQorICAgICAgICBpZiAobV9jb25maWd1cmF0aW9uLm5mYy0+ZXJyb3IgPT0gTW9j
azo6TmZjRXJyb3I6Ok5vQ29ubmVjdGlvbnMpCiAgICAgICAgICAgICBtZXRob2Rfc2V0SW1wbGVt
ZW50YXRpb24obWV0aG9kVG9Td2l6emxlMiwgKElNUClORlJlYWRlclNlc3Npb25Db25uZWN0VGFn
RmFpbCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlv
bihtZXRob2RUb1N3aXp6bGUyLCAoSU1QKU5GUmVhZGVyU2Vzc2lvbkNvbm5lY3RUYWcpOwpAQCAt
MTk0LDEyICsxOTQsMTIgQEAgdm9pZCBNb2NrTmZjU2VydmljZTo6cGxhdGZvcm1TdGFydERpc2Nv
dmVyeSgpCiB2b2lkIE1vY2tOZmNTZXJ2aWNlOjpkZXRlY3RUYWdzKCkgY29uc3QKIHsKICNpZiBI
QVZFKE5FQVJfRklFTEQpCi0gICAgaWYgKG1fY29uZmlndXJhdGlvbi5uZmMtPmVycm9yID09IE1v
Y2tOZmM6OkVycm9yOjpOb1RhZ3MpCisgICAgaWYgKG1fY29uZmlndXJhdGlvbi5uZmMtPmVycm9y
ID09IE1vY2s6Ok5mY0Vycm9yOjpOb1RhZ3MpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8g
Y2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIoW2NvbmZpZ3VyYXRpb24gPSBtX2NvbmZpZ3VyYXRpb25d
IHsKICAgICAgICAgYXV0byB0YWdzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0XSk7Ci0gICAgICAgIGlmIChjb25maWd1cmF0aW9uLm5mYy0+ZXJyb3IgPT0gTW9ja05mYzo6
RXJyb3I6Oldyb25nVGFnVHlwZSB8fCBjb25maWd1cmF0aW9uLm5mYy0+bXVsdGlwbGVUYWdzKQor
ICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5uZmMtPmVycm9yID09IE1vY2s6Ok5mY0Vycm9yOjpX
cm9uZ1RhZ1R5cGUgfHwgY29uZmlndXJhdGlvbi5uZmMtPm11bHRpcGxlVGFncykKICAgICAgICAg
ICAgIFt0YWdzIGFkZE9iamVjdDphZG9wdE5TKFtbV0tNb2NrTkZUYWcgYWxsb2NdIGluaXRXaXRo
VHlwZTpORlRhZ1R5cGVVbmtub3duXSkuZ2V0KCldOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBbdGFncyBhZGRPYmplY3Q6YWRvcHROUyhbW1dLTW9ja05GVGFnIGFsbG9jXSBpbml0V2l0aFR5
cGU6TkZUYWdUeXBlR2VuZXJpYzRBXSkuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOTEzZTg1YzE4ZTNhYzZhN2U5NWU3ZDQ2M2IwMzlhNjU5YjllOTZh
Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0KLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uIHsKLSAgICBzdHJ1Y3QgTG9jYWwgewot
ICAgICAgICBib29sIGFjY2VwdEF1dGhlbnRpY2F0aW9uIHsgZmFsc2UgfTsKLSAgICAgICAgYm9v
bCBhY2NlcHRBdHRlc3RhdGlvbiB7IGZhbHNlIH07Ci0gICAgICAgIFN0cmluZyBwcml2YXRlS2V5
QmFzZTY0OwotICAgICAgICBTdHJpbmcgdXNlckNlcnRpZmljYXRlQmFzZTY0OwotICAgICAgICBT
dHJpbmcgaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NDsKLSAgICAgICAgU3RyaW5nIHBy
ZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ7Ci0gICAgfTsKLQotICAgIHN0cnVjdCBIaWQgewotICAg
ICAgICBlbnVtIGNsYXNzIFN0YWdlIDogYm9vbCB7Ci0gICAgICAgICAgICBJbmZvLAotICAgICAg
ICAgICAgUmVxdWVzdAotICAgICAgICB9OwotCi0gICAgICAgIGVudW0gY2xhc3MgU3ViU3RhZ2Ug
OiBib29sIHsKLSAgICAgICAgICAgIEluaXQsCi0gICAgICAgICAgICBNc2cKLSAgICAgICAgfTsK
LQotICAgICAgICBlbnVtIGNsYXNzIEVycm9yIDogdWludDhfdCB7Ci0gICAgICAgICAgICBTdWNj
ZXNzLAotICAgICAgICAgICAgRGF0YU5vdFNlbnQsCi0gICAgICAgICAgICBFbXB0eVJlcG9ydCwK
LSAgICAgICAgICAgIFdyb25nQ2hhbm5lbElkLAotICAgICAgICAgICAgTWFsaWNpb3VzUGF5bG9h
ZCwKLSAgICAgICAgICAgIFVuc3VwcG9ydGVkT3B0aW9ucywKLSAgICAgICAgICAgIFdyb25nTm9u
Y2UKLSAgICAgICAgfTsKLQotICAgICAgICBWZWN0b3I8U3RyaW5nPiBwYXlsb2FkQmFzZTY0Owot
ICAgICAgICBTdGFnZSBzdGFnZSB7IFN0YWdlOjpJbmZvIH07Ci0gICAgICAgIFN1YlN0YWdlIHN1
YlN0YWdlIHsgU3ViU3RhZ2U6OkluaXQgfTsKLSAgICAgICAgRXJyb3IgZXJyb3IgeyBFcnJvcjo6
U3VjY2VzcyB9OwotICAgICAgICBib29sIGlzVTJmIHsgZmFsc2UgfTsKLSAgICAgICAgYm9vbCBr
ZWVwQWxpdmUgeyBmYWxzZSB9OwotICAgICAgICBib29sIGZhc3REYXRhQXJyaXZhbCB7IGZhbHNl
IH07Ci0gICAgICAgIGJvb2wgY29udGludWVBZnRlckVycm9yRGF0YSB7IGZhbHNlIH07Ci0gICAg
ICAgIGJvb2wgY2FuRG93bmdyYWRlIHsgZmFsc2UgfTsKLSAgICB9OwotCi0gICAgc3RydWN0IE5m
YyB7Ci0gICAgICAgIGVudW0gY2xhc3MgRXJyb3IgOiB1aW50OF90IHsKLSAgICAgICAgICAgIFN1
Y2Nlc3MsCi0gICAgICAgICAgICBOb1RhZ3MsCi0gICAgICAgICAgICBXcm9uZ1RhZ1R5cGUsCi0g
ICAgICAgICAgICBOb0Nvbm5lY3Rpb25zLAotICAgICAgICAgICAgTWFsaWNpb3VzUGF5bG9hZAot
ICAgICAgICB9OwotCi0gICAgICAgIEVycm9yIGVycm9yIHsgRXJyb3I6OlN1Y2Nlc3MgfTsKLSAg
ICAgICAgVmVjdG9yPFN0cmluZz4gcGF5bG9hZEJhc2U2NDsKLSAgICAgICAgYm9vbCBtdWx0aXBs
ZVRhZ3MgeyBmYWxzZSB9OwotICAgIH07Ci0KLSAgICBib29sIHNpbGVudEZhaWx1cmUgeyBmYWxz
ZSB9OwotICAgIE9wdGlvbmFsPExvY2FsPiBsb2NhbDsKLSAgICBPcHRpb25hbDxIaWQ+IGhpZDsK
LSAgICBPcHRpb25hbDxOZmM+IG5mYzsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IDA0MTgyYjk4Y2EyMDdmYzIyYTc0ZGUxOTEwNjdkNTg1NTZiYjg0NmEu
LjMzNzI5MGRjMTE3MjE2OTU5NDJmMDVhZjZlMDk5YmEwM2M0NzI0MTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtOTM5Miw2ICs5MzkyLDEzIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JTT0F1dGhvcml6YXRpb25Mb2FkKGNvbnN0IFN0
cmluZyYgZXh0ZW5zaW9uLCBDCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfQVVUSE4pCit2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3sKKyAg
ICBtX3dlYnNpdGVEYXRhU3RvcmUtPnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24oV1RGTW92ZShjb25maWd1cmF0aW9uKSk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICN1bmRlZiBNRVJHRV9XSEVFTF9FVkVOVFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggYTQxNjk3Y2Q1MWViYzlhZDIzNWM3NWE1ZjMxZjNiNmJkYWU4
ODAxMy4uYzU4YzFkZDMwNTE3ZDhlZDg2ZjdlYTQyNzNiZDVkMmNkZmY2ZWY1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTIxMyw2ICsyMTMsNyBAQCBzdHJ1Y3Qg
RXhjZXB0aW9uRGV0YWlsczsKIHN0cnVjdCBGaWxlQ2hvb3NlclNldHRpbmdzOwogc3RydWN0IEds
b2JhbFdpbmRvd0lkZW50aWZpZXI7CiBzdHJ1Y3QgTWVkaWFTdHJlYW1SZXF1ZXN0Oworc3RydWN0
IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb247CiBzdHJ1Y3QgUHJld2FybUluZm9y
bWF0aW9uOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIHN0cnVjdCBTaGFyZURhdGE7CkBA
IC0xNTg3LDYgKzE1ODgsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBtYXliZUluaXRpYWxpemVT
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKFdlYlByb2Nlc3NQcm94eSYsIGNvbnN0IFVSTCYsIGNvbnN0
IFVSTCYgcmVzb3VyY2VEaXJlY3RvcnlVUkwsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwog
CisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICB2b2lkIHNldE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24oV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
biYmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50Jiwg
V2ViUHJvY2Vzc1Byb3h5JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZv
aWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZGM2NTI3NjZjMjhjNDhmZGJhOTE1YjRmNzcx
NDU2OWY4MDRmYTNjNC4uODM5MzdkMjA0ZThkMGJkOGMyYTA1NzgxMWI1NzIzNDJjMGNhNjA2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgpAQCAtNTc0LDQgKzU3NCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjaWYgSEFW
RShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCiAgICAgRGlkQ3JlYXRlQ29udGV4dEZvclZp
c2liaWxpdHlQcm9wYWdhdGlvbihXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCBjb250ZXh0
SUQpOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIFNldE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oc3RydWN0IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbik7CisjZW5kaWYKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApp
bmRleCA0ZDQ5MDkxYTc4N2I3ZmQ1YTgzZWYwM2Y3NmZjZmNkYzljZDZlMWU1Li45NGRlOWVlY2Yz
YzU4OTNmOWZhOTJkMmNmYzUzMzE5MDM0ZjI3YmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC02NCw2ICs2
NCw4IEBAIGNsYXNzIEhUVFBDb29raWVTdG9yZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IFJlZ2lzdHJhYmxlRG9tYWluOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CisKK3N0cnVjdCBNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTc4LDcgKzgwLDYgQEAgY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogY2xhc3MgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YUZldGNoT3B0aW9u
OwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGU7Ci1zdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbjsKIHN0cnVjdCBXZWJzaXRlRGF0YVJlY29yZDsKIHN0cnVjdCBXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVyczsKIApAQCAtMjUyLDcgKzI1Myw3IEBAIHB1YmxpYzoKIAog
I2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAgQXV0aGVudGljYXRvck1hbmFnZXImIGF1dGhlbnRp
Y2F0b3JNYW5hZ2VyKCkgeyByZXR1cm4gbV9hdXRoZW50aWNhdG9yTWFuYWdlci5nZXQoKTsgfQot
ICAgIHZvaWQgc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uJiYpOworICAgIHZvaWQgc2V0TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbihXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uJiYpOwogI2VuZGlmCiAKICAgICB2b2lkIGRpZENyZWF0ZU5ldHdvcmtQcm9jZXNzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBkYWFhMTdlYjZiY2IyNjY0ODY0NDg0NTVjYTYxZWJiNGUyZGM4ZDdlLi4wY2E3NDFjYjBjNDBk
NmFiMWRhNmYzZDkyYTI3ZTA1ZDFlZmIzN2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNzMsNyArMTA3Myw2IEBACiAJCTU3RENF
REIxMjE0QzYwNDgwMDE2Qjg0NyAvKiBBdXRoZW50aWNhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRUQ4QjIxNDg1QkQ3MDAxNkI4NDcgLyog
QXV0aGVudGljYXRvci5oICovOyB9OwogCQk1N0RDRURCMjIxNEM2MDRDMDAxNkI4NDcgLyogV2Vi
QXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VEQTYyMTQ5RjlEQTAwMTZCODQ3IC8qIFdlYkF1dGhlbnRp
Y2F0aW9uUmVxdWVzdERhdGEuaCAqLzsgfTsKIAkJNTdEQ0VEQjMyMTRDNjA1MzAwMTZCODQ3IC8q
IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzYwODI5NTIwMkJEOEJBMDAxMTY2NzggLyogV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaCAqLzsgfTsKLQkJNTdEQ0VEQkYyMTRGMERD
RjAwMTZCODQ3IC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFREJFMjE0Q0EwMUIw
MDE2Qjg0NyAvKiBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggKi87IH07CiAJ
CTU3RENFREMzMjE0RjExNEMwMDE2Qjg0NyAvKiBNb2NrTG9jYWxTZXJ2aWNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRURDMTIxNEYxMTRDMDAx
NkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5oICovOyB9OwogCQk1N0RDRURDNzIxNEYxODMwMDAx
NkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VEQzUyMTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2Nh
bENvbm5lY3Rpb24uaCAqLzsgfTsKIAkJNTdEQ0VEQ0IyMTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tB
dXRoZW50aWNhdG9yTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTdEQ0VEQzkyMTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9y
TWFuYWdlci5oICovOyB9OwpAQCAtMzU2NCw3ICszNTYzLDYgQEAKIAkJNTdEQ0VEQTcyMTRBNTY4
QjAwMTZCODQ3IC8qIExvY2FsQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbENvbm5l
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdEQ0VEQTgyMTRBNTY4QjAw
MTZCODQ3IC8qIExvY2FsQ29ubmVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvY2Fs
Q29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdEQ0VEQUEyMTRC
OUI0MzAwMTZCODQ3IC8qIERldmljZUlkZW50aXR5U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERldmlj
ZUlkZW50aXR5U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3RENFREJFMjE0
Q0EwMUIwMDE2Qjg0NyAvKiBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdEQ0VEQzEyMTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tM
b2NhbFNlcnZpY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0xvY2FsU2VydmljZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1N0RDRURDMjIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xv
Y2FsU2VydmljZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1vY2tMb2NhbFNlcnZpY2UubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3RENFREM1MjE0RjE4MzAwMDE2Qjg0NyAv
KiBNb2NrTG9jYWxDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tMb2NhbENvbm5lY3Rp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcxNDMsNyArNzE0MSw2IEBACiAJ
CQkJNTdEQ0VEQzIyMTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tMb2NhbFNlcnZpY2UubW0gKi8sCiAJ
CQkJNTdCODI2NEEyMzA2MDNDMTAwQjcyRUIwIC8qIE1vY2tOZmNTZXJ2aWNlLmggKi8sCiAJCQkJ
NTdCODI2NEIyMzA2MDNDMTAwQjcyRUIwIC8qIE1vY2tOZmNTZXJ2aWNlLm1tICovLAotCQkJCTU3
RENFREJFMjE0Q0EwMUIwMDE2Qjg0NyAvKiBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IE1vY2s7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwpAQCAtOTU4Miw3ICs5NTc5LDYgQEAKIAkJCQk1N0RDRURDNzIxNEYxODMwMDAxNkI4NDcg
LyogTW9ja0xvY2FsQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQzMyMTRG
MTE0QzAwMTZCODQ3IC8qIE1vY2tMb2NhbFNlcnZpY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3
QjgyNjRDMjMwNjAzQzEwMEI3MkVCMCAvKiBNb2NrTmZjU2VydmljZS5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJNTdEQ0VEQkYyMTRGMERDRjAwMTZCODQ3IC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUMwRTNBQTdDMTIwOUU4M0MwMEE0OUQw
MSAvKiBNb2R1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENTAzNjZCMUJDREUxNzkwMEUyMEJC
MyAvKiBOYXRpdmVXZWJHZXN0dXJlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2MzE3MkNG
MThCNDY5NDkwMDY1QjlDMyAvKiBOYXRpdmVXZWJUb3VjaEV2ZW50LmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggMjlmMjUzMDczMTIzZjFlN2FkMmI5YWE1N2NlYjM0
NTk3YTgwZTdhOC4uZjhlYzA4Yzc4MzIzNzk5MDE1YzExNDEwYmIwNDE4ZTZjNjIxMzg3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTc3LDYgKzc3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0hUTUxQYXJzZXJJZGlvbXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ljb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05v
dEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgpAQCAtMTM1Nyw0ICsxMzU4LDExIEBAIHZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjpzZXRVc2VySXNJbnRlcmFjdGluZyhib29sIHVzZXJJc0ludGVyYWN0aW5n
KQogICAgIG1fcGFnZS5zZXRVc2VySXNJbnRlcmFjdGluZyh1c2VySXNJbnRlcmFjdGluZyk7CiB9
CiAKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNldE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oY29uc3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK3sKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpTZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKGNv
bmZpZ3VyYXRpb24pKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaAppbmRleCA3N2ZlMzA3NjA1Zjg1ZDNhZDg1NzFkODI1ZGRkZTE1YzY3M2E3ODIw
Li45OTkxOGM3MDA0OTVjMTBmMWFhOTc0YjFjNmM1NzA3YjAyZmFkMWU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCkBAIC0zODEsNiArMzgxLDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCB1c2VySXNJbnRl
cmFjdGluZygpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2V0VXNlcklzSW50ZXJhY3RpbmcoYm9v
bCkgZmluYWw7CiAKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIHZvaWQgc2V0TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uJikgZmluYWw7CisjZW5kaWYKKwogICAgIFN0cmluZyBtX2NhY2hl
ZFRvb2xUaXA7CiAgICAgbXV0YWJsZSBSZWZQdHI8V2ViRnJhbWU+IG1fY2FjaGVkRnJhbWVTZXRM
YXJnZXN0RnJhbWU7CiAgICAgbXV0YWJsZSBib29sIG1fY2FjaGVkTWFpbkZyYW1lSGFzSG9yaXpv
bnRhbFNjcm9sbGJhciB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggNzQyM2FjYTJjOWU4MTI5MGU4MDQzZjE1ZDE5M2UxMTlhZDNh
MTM3ZS4uOWY2OTVhZjc1NDNjYTM2YmI3YTkxZWM0Nzg1YTIxOTg1YjZhMjg4YSAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBA
CisyMDE5LTEwLTA4ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW1dlYkF1dGhuXSBNb3ZlIHRoZSBtb2NrIHRlc3RpbmcgZW50cmFuY2UgdG8gSW50ZXJuYWxz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NjAK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1OTczNzkzPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVy
OjpzZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24pOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdU
Ujo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUpOgorCiAyMDE5LTEwLTA4ICBNYXR0IExld2lzICA8amxld2lzM0BhcHBsZS5jb20+
CiAKICAgICAgICAgRml4aW5nIHRoZSB0cmlnZ2VyYWJsZSB0ZW1wbGF0ZXMgaW4gdGhlIGNvbmZp
ZyBmb3IgY2F0YWxpbmEuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCA3NjE4MTJiNmQw
MWMzYzliM2EzMjI1ZTVmNWJkNWFhMGJhMmNkNTljLi4wYWMzMzQzYjU3YTBmZTJlMGQ5NjM4ODA5
NWJhZThiNmU4ZTQ2YzZjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTM5MCw4ICsz
OTAsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAKICAgICB2b2lkIHNlbmREaXNwbGF5Q29u
ZmlndXJhdGlvbkNoYW5nZWRNZXNzYWdlRm9yVGVzdGluZygpOwogCi0gICAgLy8gV2ViQXV0aE4K
LSAgICB2b2lkIHNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24ob2JqZWN0IGNv
bmZpZ3VyYXRpb24pOworICAgIC8vIFdlYkF1dGhuCiAgICAgdm9pZCBhZGRUZXN0S2V5VG9LZXlj
aGFpbihET01TdHJpbmcgcHJpdmF0ZUtleUJhc2U2NCwgRE9NU3RyaW5nIGF0dHJMYWJlbCwgRE9N
U3RyaW5nIGFwcGxpY2F0aW9uVGFnQmFzZTY0KTsKICAgICB2b2lkIGNsZWFuVXBLZXljaGFpbihE
T01TdHJpbmcgYXR0ckxhYmVsLCBvcHRpb25hbCBET01TdHJpbmcgYXBwbGljYXRpb25UYWdCYXNl
NjQpOwogICAgIGJvb2xlYW4ga2V5RXhpc3RzSW5LZXljaGFpbihET01TdHJpbmcgYXR0ckxhYmVs
LCBET01TdHJpbmcgYXBwbGljYXRpb25UYWdCYXNlNjQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggNmEzYTMxYTE5
ZTkyZTYwNWY2M2E2NTJmMTc4YjI2YWJhYjU3MDgyMC4uZDUxMGVlNDYyZjk3MjJjNTBhYWJlMzQ3
ZTBjMzJjYTk4NWRkZDllNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0yNjI4LDMwMSArMjYyOCw3IEBAIHZvaWQg
VGVzdFJ1bm5lcjo6c2VuZERpc3BsYXlDb25maWd1cmF0aW9uQ2hhbmdlZE1lc3NhZ2VGb3JUZXN0
aW5nKCkKICAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6
OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0
cik7CiB9CiAKLS8vIFdlYkF1dGhOCi12b2lkIFRlc3RSdW5uZXI6OnNldFdlYkF1dGhlbnRpY2F0
aW9uTW9ja0NvbmZpZ3VyYXRpb24oSlNWYWx1ZVJlZiBjb25maWd1cmF0aW9uVmFsdWUpCi17Ci0g
ICAgYXV0byYgaW5qZWN0ZWRCdW5kbGUgPSBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCk7Ci0g
ICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUo
aW5qZWN0ZWRCdW5kbGUucGFnZSgpLT5wYWdlKCkpOwotICAgIEpTQ29udGV4dFJlZiBjb250ZXh0
ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7Ci0gICAgaWYg
KCFKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgY29uZmlndXJhdGlvblZhbHVlKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIEpTT2JqZWN0UmVmIGNvbmZpZ3VyYXRpb24gPSBKU1ZhbHVlVG9PYmplY3Qo
Y29udGV4dCwgY29uZmlndXJhdGlvblZhbHVlLCAwKTsKLQotICAgIFZlY3RvcjxXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4+IGNvbmZpZ3VyYXRpb25LZXlzOwotICAgIFZlY3RvcjxXS1JldGFpblB0
cjxXS1R5cGVSZWY+PiBjb25maWd1cmF0aW9uVmFsdWVzOwotCi0gICAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IHNpbGVudEZhaWx1cmVQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJzaWxlbnRGYWlsdXJlIikpOwotICAgIEpTVmFsdWVSZWYgc2lsZW50
RmFpbHVyZVZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBjb25maWd1cmF0aW9u
LCBzaWxlbnRGYWlsdXJlUHJvcGVydHlOYW1lLmdldCgpLCAwKTsKLSAgICBpZiAoIUpTVmFsdWVJ
c1VuZGVmaW5lZChjb250ZXh0LCBzaWxlbnRGYWlsdXJlVmFsdWUpKSB7Ci0gICAgICAgIGlmICgh
SlNWYWx1ZUlzQm9vbGVhbihjb250ZXh0LCBzaWxlbnRGYWlsdXJlVmFsdWUpKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBib29sIHNpbGVudEZhaWx1cmUgPSBKU1ZhbHVlVG9Cb29sZWFu
KGNvbnRleHQsIHNpbGVudEZhaWx1cmVWYWx1ZSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb25LZXlz
LmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTaWxlbnRGYWls
dXJlIikpKTsKLSAgICAgICAgY29uZmlndXJhdGlvblZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jv
b2xlYW5DcmVhdGUoc2lsZW50RmFpbHVyZSkpLmdldCgpKTsKLSAgICB9Ci0KLSAgICBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gbG9jYWxQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJsb2NhbCIpKTsKLSAgICBKU1ZhbHVlUmVmIGxvY2FsVmFsdWUgPSBK
U09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGNvbmZpZ3VyYXRpb24sIGxvY2FsUHJvcGVydHlO
YW1lLmdldCgpLCAwKTsKLSAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCBsb2Nh
bFZhbHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChjb250ZXh0LCBsb2NhbFZhbHVlKSkgewotICAgICAg
ICBpZiAoIUpTVmFsdWVJc09iamVjdChjb250ZXh0LCBsb2NhbFZhbHVlKSkKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgSlNPYmplY3RSZWYgbG9jYWwgPSBKU1ZhbHVlVG9PYmplY3QoY29u
dGV4dCwgbG9jYWxWYWx1ZSwgMCk7Ci0KLSAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IGFjY2VwdEF1dGhlbnRpY2F0aW9uUHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiYWNjZXB0QXV0aGVudGljYXRpb24iKSk7Ci0gICAgICAgIEpTVmFsdWVS
ZWYgYWNjZXB0QXV0aGVudGljYXRpb25WYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4
dCwgbG9jYWwsIGFjY2VwdEF1dGhlbnRpY2F0aW9uUHJvcGVydHlOYW1lLmdldCgpLCAwKTsKLSAg
ICAgICAgaWYgKCFKU1ZhbHVlSXNCb29sZWFuKGNvbnRleHQsIGFjY2VwdEF1dGhlbnRpY2F0aW9u
VmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBib29sIGFjY2VwdEF1dGhlbnRp
Y2F0aW9uID0gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhY2NlcHRBdXRoZW50aWNhdGlvblZh
bHVlKTsKLQotICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYWNjZXB0QXR0ZXN0YXRp
b25Qcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJhY2Nl
cHRBdHRlc3RhdGlvbiIpKTsKLSAgICAgICAgSlNWYWx1ZVJlZiBhY2NlcHRBdHRlc3RhdGlvblZh
bHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBsb2NhbCwgYWNjZXB0QXR0ZXN0YXRp
b25Qcm9wZXJ0eU5hbWUuZ2V0KCksIDApOwotICAgICAgICBpZiAoIUpTVmFsdWVJc0Jvb2xlYW4o
Y29udGV4dCwgYWNjZXB0QXR0ZXN0YXRpb25WYWx1ZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIGJvb2wgYWNjZXB0QXR0ZXN0YXRpb24gPSBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQs
IGFjY2VwdEF0dGVzdGF0aW9uVmFsdWUpOwotCi0gICAgICAgIFZlY3RvcjxXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4+IGxvY2FsS2V5czsKLSAgICAgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLVHlw
ZVJlZj4+IGxvY2FsVmFsdWVzOwotICAgICAgICBsb2NhbEtleXMuYXBwZW5kKGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkFjY2VwdEF1dGhlbnRpY2F0aW9uIikpKTsKLSAg
ICAgICAgbG9jYWxWYWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGFjY2VwdEF1
dGhlbnRpY2F0aW9uKSkuZ2V0KCkpOwotICAgICAgICBsb2NhbEtleXMuYXBwZW5kKGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkFjY2VwdEF0dGVzdGF0aW9uIikpKTsKLSAg
ICAgICAgbG9jYWxWYWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGFjY2VwdEF0
dGVzdGF0aW9uKSkuZ2V0KCkpOwotCi0gICAgICAgIGlmIChhY2NlcHRBdHRlc3RhdGlvbikgewot
ICAgICAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHByaXZhdGVLZXlCYXNlNjRQcm9w
ZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJwcml2YXRlS2V5
QmFzZTY0IikpOwotICAgICAgICAgICAgSlNWYWx1ZVJlZiBwcml2YXRlS2V5QmFzZTY0VmFsdWUg
PSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGxvY2FsLCBwcml2YXRlS2V5QmFzZTY0UHJv
cGVydHlOYW1lLmdldCgpLCAwKTsKLSAgICAgICAgICAgIGlmICghSlNWYWx1ZUlzU3RyaW5nKGNv
bnRleHQsIHByaXZhdGVLZXlCYXNlNjRWYWx1ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gdXNlckNlcnRpZmljYXRlQmFz
ZTY0UHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygidXNl
ckNlcnRpZmljYXRlQmFzZTY0IikpOwotICAgICAgICAgICAgSlNWYWx1ZVJlZiB1c2VyQ2VydGlm
aWNhdGVCYXNlNjRWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgbG9jYWwsIHVz
ZXJDZXJ0aWZpY2F0ZUJhc2U2NFByb3BlcnR5TmFtZS5nZXQoKSwgMCk7Ci0gICAgICAgICAgICBp
ZiAoIUpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCB1c2VyQ2VydGlmaWNhdGVCYXNlNjRWYWx1ZSkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NFByb3BlcnR5TmFtZShBZG9w
dCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImludGVybWVkaWF0ZUNBQ2VydGlmaWNh
dGVCYXNlNjQiKSk7Ci0gICAgICAgICAgICBKU1ZhbHVlUmVmIGludGVybWVkaWF0ZUNBQ2VydGlm
aWNhdGVCYXNlNjRWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgbG9jYWwsIGlu
dGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjRQcm9wZXJ0eU5hbWUuZ2V0KCksIDApOwotICAg
ICAgICAgICAgaWYgKCFKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgaW50ZXJtZWRpYXRlQ0FDZXJ0
aWZpY2F0ZUJhc2U2NFZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
ICAgIGxvY2FsS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiUHJpdmF0ZUtleUJhc2U2NCIpKSk7Ci0gICAgICAgICAgICBsb2NhbFZhbHVlcy5hcHBlbmQo
dG9XSyhhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHByaXZhdGVLZXlCYXNlNjRW
YWx1ZSwgMCkpLmdldCgpKSk7Ci0gICAgICAgICAgICBsb2NhbEtleXMuYXBwZW5kKGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlVzZXJDZXJ0aWZpY2F0ZUJhc2U2NCIpKSk7
Ci0gICAgICAgICAgICBsb2NhbFZhbHVlcy5hcHBlbmQodG9XSyhhZG9wdChKU1ZhbHVlVG9TdHJp
bmdDb3B5KGNvbnRleHQsIHVzZXJDZXJ0aWZpY2F0ZUJhc2U2NFZhbHVlLCAwKSkuZ2V0KCkpKTsK
LSAgICAgICAgICAgIGxvY2FsS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiSW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NCIpKSk7Ci0gICAgICAg
ICAgICBsb2NhbFZhbHVlcy5hcHBlbmQodG9XSyhhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNv
bnRleHQsIGludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjRWYWx1ZSwgMCkpLmdldCgpKSk7
Ci0gICAgICAgIH0KLQotICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcHJlZmVycmVk
VXNlcmhhbmRsZUJhc2U2NFByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoInByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQiKSk7Ci0gICAgICAgIEpTVmFsdWVS
ZWYgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NFZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShj
b250ZXh0LCBsb2NhbCwgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NFByb3BlcnR5TmFtZS5nZXQo
KSwgMCk7Ci0gICAgICAgIGlmICghSlNWYWx1ZUlzVW5kZWZpbmVkKGNvbnRleHQsIHByZWZlcnJl
ZFVzZXJoYW5kbGVCYXNlNjRWYWx1ZSkgJiYgIUpTVmFsdWVJc051bGwoY29udGV4dCwgcHJlZmVy
cmVkVXNlcmhhbmRsZUJhc2U2NFZhbHVlKSkgewotICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNT
dHJpbmcoY29udGV4dCwgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NFZhbHVlKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGxvY2FsS2V5cy5hcHBlbmQoYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NCIp
KSk7Ci0gICAgICAgICAgICBsb2NhbFZhbHVlcy5hcHBlbmQodG9XSyhhZG9wdChKU1ZhbHVlVG9T
dHJpbmdDb3B5KGNvbnRleHQsIHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjRWYWx1ZSwgMCkpLmdl
dCgpKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBWZWN0b3I8V0tTdHJpbmdSZWY+IHJhd0xvY2Fs
S2V5czsKLSAgICAgICAgVmVjdG9yPFdLVHlwZVJlZj4gcmF3TG9jYWxWYWx1ZXM7Ci0gICAgICAg
IHJhd0xvY2FsS2V5cy5yZXNpemUobG9jYWxLZXlzLnNpemUoKSk7Ci0gICAgICAgIHJhd0xvY2Fs
VmFsdWVzLnJlc2l6ZShsb2NhbFZhbHVlcy5zaXplKCkpOwotICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGxvY2FsS2V5cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgcmF3TG9jYWxL
ZXlzW2ldID0gbG9jYWxLZXlzW2ldLmdldCgpOwotICAgICAgICAgICAgcmF3TG9jYWxWYWx1ZXNb
aV0gPSBsb2NhbFZhbHVlc1tpXS5nZXQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbmZpZ3Vy
YXRpb25LZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJM
b2NhbCIpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb25WYWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tE
aWN0aW9uYXJ5Q3JlYXRlKHJhd0xvY2FsS2V5cy5kYXRhKCksIHJhd0xvY2FsVmFsdWVzLmRhdGEo
KSwgcmF3TG9jYWxLZXlzLnNpemUoKSkpKTsKLSAgICB9Ci0KLSAgICBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gaGlkUHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiaGlkIikpOwotICAgIEpTVmFsdWVSZWYgaGlkVmFsdWUgPSBKU09iamVjdEdldFByb3Bl
cnR5KGNvbnRleHQsIGNvbmZpZ3VyYXRpb24sIGhpZFByb3BlcnR5TmFtZS5nZXQoKSwgMCk7Ci0g
ICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgaGlkVmFsdWUpICYmICFKU1ZhbHVl
SXNOdWxsKGNvbnRleHQsIGhpZFZhbHVlKSkgewotICAgICAgICBpZiAoIUpTVmFsdWVJc09iamVj
dChjb250ZXh0LCBoaWRWYWx1ZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEpTT2Jq
ZWN0UmVmIGhpZCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBoaWRWYWx1ZSwgMCk7Ci0KLSAg
ICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0YWdlUHJvcGVydHlOYW1lKEFkb3B0LCBK
U1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygic3RhZ2UiKSk7Ci0gICAgICAgIEpTVmFsdWVS
ZWYgc3RhZ2VWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgaGlkLCBzdGFnZVBy
b3BlcnR5TmFtZS5nZXQoKSwgMCk7Ci0gICAgICAgIGlmICghSlNWYWx1ZUlzU3RyaW5nKGNvbnRl
eHQsIHN0YWdlVmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBzdWJTdGFnZVByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoInN1YlN0YWdlIikpOwotICAgICAgICBKU1ZhbHVlUmVmIHN1YlN0
YWdlVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGhpZCwgc3ViU3RhZ2VQcm9w
ZXJ0eU5hbWUuZ2V0KCksIDApOwotICAgICAgICBpZiAoIUpTVmFsdWVJc1N0cmluZyhjb250ZXh0
LCBzdWJTdGFnZVZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gZXJyb3JQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJlcnJvciIpKTsKLSAgICAgICAgSlNWYWx1ZVJlZiBlcnJvclZhbHVl
ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBoaWQsIGVycm9yUHJvcGVydHlOYW1lLmdl
dCgpLCAwKTsKLSAgICAgICAgaWYgKCFKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgZXJyb3JWYWx1
ZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPj4gaGlkS2V5czsKLSAgICAgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLVHlwZVJl
Zj4+IGhpZFZhbHVlczsKLSAgICAgICAgaGlkS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3RhZ2UiKSkpOwotICAgICAgICBoaWRWYWx1ZXMuYXBwZW5k
KHRvV0soYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBzdGFnZVZhbHVlLCAwKSku
Z2V0KCkpKTsKLSAgICAgICAgaGlkS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiU3ViU3RhZ2UiKSkpOwotICAgICAgICBoaWRWYWx1ZXMuYXBwZW5kKHRv
V0soYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBzdWJTdGFnZVZhbHVlLCAwKSku
Z2V0KCkpKTsKLSAgICAgICAgaGlkS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiRXJyb3IiKSkpOwotICAgICAgICBoaWRWYWx1ZXMuYXBwZW5kKHRvV0so
YWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBlcnJvclZhbHVlLCAwKSkuZ2V0KCkp
KTsKLQotICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGF5bG9hZEJhc2U2NFByb3Bl
cnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInBheWxvYWRCYXNl
NjQiKSk7Ci0gICAgICAgIEpTVmFsdWVSZWYgcGF5bG9hZEJhc2U2NFZhbHVlID0gSlNPYmplY3RH
ZXRQcm9wZXJ0eShjb250ZXh0LCBoaWQsIHBheWxvYWRCYXNlNjRQcm9wZXJ0eU5hbWUuZ2V0KCks
IDApOwotICAgICAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCBwYXlsb2FkQmFz
ZTY0VmFsdWUpICYmICFKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1ZSkp
IHsKLSAgICAgICAgICAgIGlmICghSlNWYWx1ZUlzQXJyYXkoY29udGV4dCwgcGF5bG9hZEJhc2U2
NFZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIEpTT2JqZWN0
UmVmIHBheWxvYWRCYXNlNjQgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgcGF5bG9hZEJhc2U2
NFZhbHVlLCBudWxscHRyKTsKLSAgICAgICAgICAgIHN0YXRpYyBhdXRvIGxlbmd0aFByb3BlcnR5
ID0gYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImxlbmd0aCIpKTsKLSAgICAg
ICAgICAgIEpTVmFsdWVSZWYgcGF5bG9hZEJhc2U2NExlbmd0aFZhbHVlID0gSlNPYmplY3RHZXRQ
cm9wZXJ0eShjb250ZXh0LCBwYXlsb2FkQmFzZTY0LCBsZW5ndGhQcm9wZXJ0eS5nZXQoKSwgbnVs
bHB0cik7Ci0gICAgICAgICAgICBpZiAoIUpTVmFsdWVJc051bWJlcihjb250ZXh0LCBwYXlsb2Fk
QmFzZTY0TGVuZ3RoVmFsdWUpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAg
ICAgYXV0byBwYXlsb2FkQmFzZTY0cyA9IGFkb3B0V0soV0tNdXRhYmxlQXJyYXlDcmVhdGUoKSk7
Ci0gICAgICAgICAgICBhdXRvIHBheWxvYWRCYXNlNjRMZW5ndGggPSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBwYXlsb2FkQmFzZTY0TGVuZ3RoVmFsdWUsIG51
bGxwdHIpKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGF5bG9hZEJhc2U2
NExlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBwYXlsb2FkQmFzZTY0
VmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5QXRJbmRleChjb250ZXh0LCBwYXlsb2FkQmFzZTY0
LCBpLCBudWxscHRyKTsKLSAgICAgICAgICAgICAgICBpZiAoIUpTVmFsdWVJc1N0cmluZyhjb250
ZXh0LCBwYXlsb2FkQmFzZTY0VmFsdWUpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShwYXlsb2FkQmFzZTY0cy5nZXQoKSwg
dG9XSyhhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1
ZSwgMCkpLmdldCgpKS5nZXQoKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGhpZEtl
eXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlBheWxvYWRC
YXNlNjQiKSkpOwotICAgICAgICAgICAgaGlkVmFsdWVzLmFwcGVuZChwYXlsb2FkQmFzZTY0cyk7
Ci0gICAgICAgIH0KLQotICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gaXNVMmZQcm9w
ZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJpc1UyZiIpKTsK
LSAgICAgICAgSlNWYWx1ZVJlZiBpc1UyZlZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250
ZXh0LCBoaWQsIGlzVTJmUHJvcGVydHlOYW1lLmdldCgpLCAwKTsKLSAgICAgICAgaWYgKCFKU1Zh
bHVlSXNVbmRlZmluZWQoY29udGV4dCwgaXNVMmZWYWx1ZSkgJiYgIUpTVmFsdWVJc051bGwoY29u
dGV4dCwgaXNVMmZWYWx1ZSkpIHsKLSAgICAgICAgICAgIGlmICghSlNWYWx1ZUlzQm9vbGVhbihj
b250ZXh0LCBpc1UyZlZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICBib29sIGlzVTJmID0gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBpc1UyZlZhbHVlKTsKLSAg
ICAgICAgICAgIGhpZEtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIklzVTJmIikpKTsKLSAgICAgICAgICAgIGhpZFZhbHVlcy5hcHBlbmQoYWRvcHRXSyhX
S0Jvb2xlYW5DcmVhdGUoaXNVMmYpKS5nZXQoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4ga2VlcEFsaXZlUHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygia2VlcEFsaXZlIikpOwotICAgICAgICBKU1ZhbHVlUmVm
IGtlZXBBbGl2ZVZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBoaWQsIGtlZXBB
bGl2ZVByb3BlcnR5TmFtZS5nZXQoKSwgMCk7Ci0gICAgICAgIGlmICghSlNWYWx1ZUlzVW5kZWZp
bmVkKGNvbnRleHQsIGtlZXBBbGl2ZVZhbHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChjb250ZXh0LCBr
ZWVwQWxpdmVWYWx1ZSkpIHsKLSAgICAgICAgICAgIGlmICghSlNWYWx1ZUlzQm9vbGVhbihjb250
ZXh0LCBrZWVwQWxpdmVWYWx1ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgYm9vbCBrZWVwQWxpdmUgPSBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGtlZXBBbGl2ZVZh
bHVlKTsKLSAgICAgICAgICAgIGhpZEtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIktlZXBBbGl2ZSIpKSk7Ci0gICAgICAgICAgICBoaWRWYWx1ZXMuYXBw
ZW5kKGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGtlZXBBbGl2ZSkpLmdldCgpKTsKLSAgICAgICAg
fQotCi0gICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBmYXN0RGF0YUFycml2YWxQcm9w
ZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJmYXN0RGF0YUFy
cml2YWwiKSk7Ci0gICAgICAgIEpTVmFsdWVSZWYgZmFzdERhdGFBcnJpdmFsVmFsdWUgPSBKU09i
amVjdEdldFByb3BlcnR5KGNvbnRleHQsIGhpZCwgZmFzdERhdGFBcnJpdmFsUHJvcGVydHlOYW1l
LmdldCgpLCAwKTsKLSAgICAgICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgZmFz
dERhdGFBcnJpdmFsVmFsdWUpICYmICFKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIGZhc3REYXRhQXJy
aXZhbFZhbHVlKSkgewotICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNCb29sZWFuKGNvbnRleHQs
IGZhc3REYXRhQXJyaXZhbFZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICBib29sIGZhc3REYXRhQXJyaXZhbCA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgZmFz
dERhdGFBcnJpdmFsVmFsdWUpOwotICAgICAgICAgICAgaGlkS2V5cy5hcHBlbmQoYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRmFzdERhdGFBcnJpdmFsIikpKTsKLSAgICAg
ICAgICAgIGhpZFZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoZmFzdERhdGFB
cnJpdmFsKSkuZ2V0KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGFQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJjb250aW51ZUFmdGVyRXJyb3JEYXRhIikpOwotICAgICAg
ICBKU1ZhbHVlUmVmIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGFWYWx1ZSA9IEpTT2JqZWN0R2V0UHJv
cGVydHkoY29udGV4dCwgaGlkLCBjb250aW51ZUFmdGVyRXJyb3JEYXRhUHJvcGVydHlOYW1lLmdl
dCgpLCAwKTsKLSAgICAgICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgY29udGlu
dWVBZnRlckVycm9yRGF0YVZhbHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChjb250ZXh0LCBjb250aW51
ZUFmdGVyRXJyb3JEYXRhVmFsdWUpKSB7Ci0gICAgICAgICAgICBpZiAoIUpTVmFsdWVJc0Jvb2xl
YW4oY29udGV4dCwgY29udGludWVBZnRlckVycm9yRGF0YVZhbHVlKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICBib29sIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEgPSBKU1Zh
bHVlVG9Cb29sZWFuKGNvbnRleHQsIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGFWYWx1ZSk7Ci0gICAg
ICAgICAgICBoaWRLZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJDb250aW51ZUFmdGVyRXJyb3JEYXRhIikpKTsKLSAgICAgICAgICAgIGhpZFZhbHVlcy5h
cHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoY29udGludWVBZnRlckVycm9yRGF0YSkpLmdl
dCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjYW5E
b3duZ3JhZGVQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJjYW5Eb3duZ3JhZGUiKSk7Ci0gICAgICAgIEpTVmFsdWVSZWYgY2FuRG93bmdyYWRlVmFsdWUg
PSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGhpZCwgY2FuRG93bmdyYWRlUHJvcGVydHlO
YW1lLmdldCgpLCAwKTsKLSAgICAgICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwg
Y2FuRG93bmdyYWRlVmFsdWUpICYmICFKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIGNhbkRvd25ncmFk
ZVZhbHVlKSkgewotICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNCb29sZWFuKGNvbnRleHQsIGNh
bkRvd25ncmFkZVZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBi
b29sIGNhbkRvd25ncmFkZSA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgY2FuRG93bmdyYWRl
VmFsdWUpOwotICAgICAgICAgICAgaGlkS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiQ2FuRG93bmdyYWRlIikpKTsKLSAgICAgICAgICAgIGhpZFZhbHVl
cy5hcHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoY2FuRG93bmdyYWRlKSkuZ2V0KCkpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgVmVjdG9yPFdLU3RyaW5nUmVmPiByYXdIaWRLZXlzOwotICAg
ICAgICBWZWN0b3I8V0tUeXBlUmVmPiByYXdIaWRWYWx1ZXM7Ci0gICAgICAgIHJhd0hpZEtleXMu
cmVzaXplKGhpZEtleXMuc2l6ZSgpKTsKLSAgICAgICAgcmF3SGlkVmFsdWVzLnJlc2l6ZShoaWRW
YWx1ZXMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBoaWRLZXlzLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgICAgICByYXdIaWRLZXlzW2ldID0gaGlkS2V5c1tpXS5nZXQo
KTsKLSAgICAgICAgICAgIHJhd0hpZFZhbHVlc1tpXSA9IGhpZFZhbHVlc1tpXS5nZXQoKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGNvbmZpZ3VyYXRpb25LZXlzLmFwcGVuZChhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIaWQiKSkpOwotICAgICAgICBjb25maWd1cmF0aW9u
VmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLRGljdGlvbmFyeUNyZWF0ZShyYXdIaWRLZXlzLmRhdGEo
KSwgcmF3SGlkVmFsdWVzLmRhdGEoKSwgcmF3SGlkS2V5cy5zaXplKCkpKSk7Ci0gICAgfQotCi0g
ICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IG5mY1Byb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIm5mYyIpKTsKLSAgICBKU1ZhbHVlUmVmIG5mY1ZhbHVl
ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBjb25maWd1cmF0aW9uLCBuZmNQcm9wZXJ0
eU5hbWUuZ2V0KCksIDApOwotICAgIGlmICghSlNWYWx1ZUlzVW5kZWZpbmVkKGNvbnRleHQsIG5m
Y1ZhbHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChjb250ZXh0LCBuZmNWYWx1ZSkpIHsKLSAgICAgICAg
aWYgKCFKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgbmZjVmFsdWUpKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBKU09iamVjdFJlZiBuZmMgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwg
bmZjVmFsdWUsIDApOwotCi0gICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBlcnJvclBy
b3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImVycm9yIikp
OwotICAgICAgICBKU1ZhbHVlUmVmIGVycm9yVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNv
bnRleHQsIG5mYywgZXJyb3JQcm9wZXJ0eU5hbWUuZ2V0KCksIDApOwotICAgICAgICBpZiAoIUpT
VmFsdWVJc1N0cmluZyhjb250ZXh0LCBlcnJvclZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+PiBuZmNLZXlzOwotICAg
ICAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tUeXBlUmVmPj4gbmZjVmFsdWVzOwotICAgICAgICBu
ZmNLZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFcnJv
ciIpKSk7Ci0gICAgICAgIG5mY1ZhbHVlcy5hcHBlbmQodG9XSyhhZG9wdChKU1ZhbHVlVG9TdHJp
bmdDb3B5KGNvbnRleHQsIGVycm9yVmFsdWUsIDApKS5nZXQoKSkpOwotCi0gICAgICAgIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBwYXlsb2FkQmFzZTY0UHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygicGF5bG9hZEJhc2U2NCIpKTsKLSAgICAgICAgSlNW
YWx1ZVJlZiBwYXlsb2FkQmFzZTY0VmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQs
IG5mYywgcGF5bG9hZEJhc2U2NFByb3BlcnR5TmFtZS5nZXQoKSwgMCk7Ci0gICAgICAgIGlmICgh
SlNWYWx1ZUlzVW5kZWZpbmVkKGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1ZSkgJiYgIUpTVmFs
dWVJc051bGwoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlKSkgewotICAgICAgICAgICAgaWYg
KCFKU1ZhbHVlSXNBcnJheShjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFsdWUpKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgSlNPYmplY3RSZWYgcGF5bG9hZEJhc2U2NCA9
IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFsdWUsIG51bGxwdHIpOwot
ICAgICAgICAgICAgc3RhdGljIGF1dG8gbGVuZ3RoUHJvcGVydHkgPSBhZG9wdChKU1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygibGVuZ3RoIikpOwotICAgICAgICAgICAgSlNWYWx1ZVJlZiBw
YXlsb2FkQmFzZTY0TGVuZ3RoVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIHBh
eWxvYWRCYXNlNjQsIGxlbmd0aFByb3BlcnR5LmdldCgpLCBudWxscHRyKTsKLSAgICAgICAgICAg
IGlmICghSlNWYWx1ZUlzTnVtYmVyKGNvbnRleHQsIHBheWxvYWRCYXNlNjRMZW5ndGhWYWx1ZSkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBhdXRvIHBheWxvYWRCYXNl
NjRzID0gYWRvcHRXSyhXS011dGFibGVBcnJheUNyZWF0ZSgpKTsKLSAgICAgICAgICAgIGF1dG8g
cGF5bG9hZEJhc2U2NExlbmd0aCA9IHN0YXRpY19jYXN0PHNpemVfdD4oSlNWYWx1ZVRvTnVtYmVy
KGNvbnRleHQsIHBheWxvYWRCYXNlNjRMZW5ndGhWYWx1ZSwgbnVsbHB0cikpOwotICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXlsb2FkQmFzZTY0TGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgICAgICAgICBKU1ZhbHVlUmVmIHBheWxvYWRCYXNlNjRWYWx1ZSA9IEpTT2JqZWN0R2V0
UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIHBheWxvYWRCYXNlNjQsIGksIG51bGxwdHIpOwotICAg
ICAgICAgICAgICAgIGlmICghSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIHBheWxvYWRCYXNlNjRW
YWx1ZSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIFdL
QXJyYXlBcHBlbmRJdGVtKHBheWxvYWRCYXNlNjRzLmdldCgpLCB0b1dLKGFkb3B0KEpTVmFsdWVU
b1N0cmluZ0NvcHkoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlLCAwKSkuZ2V0KCkpLmdldCgp
KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbmZjS2V5cy5hcHBlbmQoYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUGF5bG9hZEJhc2U2NCIpKSk7Ci0gICAgICAg
ICAgICBuZmNWYWx1ZXMuYXBwZW5kKHBheWxvYWRCYXNlNjRzKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBtdWx0aXBsZVRhZ3NQcm9wZXJ0eU5hbWUoQWRv
cHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJtdWx0aXBsZVRhZ3MiKSk7Ci0gICAg
ICAgIEpTVmFsdWVSZWYgbXVsdGlwbGVUYWdzVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNv
bnRleHQsIG5mYywgbXVsdGlwbGVUYWdzUHJvcGVydHlOYW1lLmdldCgpLCAwKTsKLSAgICAgICAg
aWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgbXVsdGlwbGVUYWdzVmFsdWUpICYmICFK
U1ZhbHVlSXNOdWxsKGNvbnRleHQsIG11bHRpcGxlVGFnc1ZhbHVlKSkgewotICAgICAgICAgICAg
aWYgKCFKU1ZhbHVlSXNCb29sZWFuKGNvbnRleHQsIG11bHRpcGxlVGFnc1ZhbHVlKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBib29sIG11bHRpcGxlVGFncyA9IEpTVmFs
dWVUb0Jvb2xlYW4oY29udGV4dCwgbXVsdGlwbGVUYWdzVmFsdWUpOwotICAgICAgICAgICAgbmZj
S2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTXVsdGlw
bGVUYWdzIikpKTsKLSAgICAgICAgICAgIG5mY1ZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jvb2xl
YW5DcmVhdGUobXVsdGlwbGVUYWdzKSkuZ2V0KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgVmVj
dG9yPFdLU3RyaW5nUmVmPiByYXdOZmNLZXlzOwotICAgICAgICBWZWN0b3I8V0tUeXBlUmVmPiBy
YXdOZmNWYWx1ZXM7Ci0gICAgICAgIHJhd05mY0tleXMucmVzaXplKG5mY0tleXMuc2l6ZSgpKTsK
LSAgICAgICAgcmF3TmZjVmFsdWVzLnJlc2l6ZShuZmNWYWx1ZXMuc2l6ZSgpKTsKLSAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZmNLZXlzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAg
ICByYXdOZmNLZXlzW2ldID0gbmZjS2V5c1tpXS5nZXQoKTsKLSAgICAgICAgICAgIHJhd05mY1Zh
bHVlc1tpXSA9IG5mY1ZhbHVlc1tpXS5nZXQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbmZp
Z3VyYXRpb25LZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJOZmMiKSkpOwotICAgICAgICBjb25maWd1cmF0aW9uVmFsdWVzLmFwcGVuZChhZG9wdFdLKFdL
RGljdGlvbmFyeUNyZWF0ZShyYXdOZmNLZXlzLmRhdGEoKSwgcmF3TmZjVmFsdWVzLmRhdGEoKSwg
cmF3TmZjS2V5cy5zaXplKCkpKSk7Ci0gICAgfQotCi0gICAgVmVjdG9yPFdLU3RyaW5nUmVmPiBy
YXdDb25maWd1cmF0aW9uS2V5czsKLSAgICBWZWN0b3I8V0tUeXBlUmVmPiByYXdDb25maWd1cmF0
aW9uVmFsdWVzOwotICAgIHJhd0NvbmZpZ3VyYXRpb25LZXlzLnJlc2l6ZShjb25maWd1cmF0aW9u
S2V5cy5zaXplKCkpOwotICAgIHJhd0NvbmZpZ3VyYXRpb25WYWx1ZXMucmVzaXplKGNvbmZpZ3Vy
YXRpb25WYWx1ZXMuc2l6ZSgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbmZpZ3Vy
YXRpb25LZXlzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHJhd0NvbmZpZ3VyYXRpb25LZXlzW2ld
ID0gY29uZmlndXJhdGlvbktleXNbaV0uZ2V0KCk7Ci0gICAgICAgIHJhd0NvbmZpZ3VyYXRpb25W
YWx1ZXNbaV0gPSBjb25maWd1cmF0aW9uVmFsdWVzW2ldLmdldCgpOwotICAgIH0KLQotICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIlNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24i
KSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tEaWN0aW9uYXJ5UmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0
V0soV0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd0NvbmZpZ3VyYXRpb25LZXlzLmRhdGEoKSwgcmF3Q29u
ZmlndXJhdGlvblZhbHVlcy5kYXRhKCksIHJhd0NvbmZpZ3VyYXRpb25LZXlzLnNpemUoKSkpOwot
ICAgIAotICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShpbmplY3RlZEJ1bmRsZS5i
dW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsK
LX0KLQorLy8gV2ViQXV0aG4KIHZvaWQgVGVzdFJ1bm5lcjo6YWRkVGVzdEtleVRvS2V5Y2hhaW4o
SlNTdHJpbmdSZWYgcHJpdmF0ZUtleUJhc2U2NCwgSlNTdHJpbmdSZWYgYXR0ckxhYmVsLCBKU1N0
cmluZ1JlZiBhcHBsaWNhdGlvblRhZ0Jhc2U2NCkKIHsKICAgICBWZWN0b3I8V0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+PiBrZXlzOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCAyNTI2NDNmYmEzOTMxNzE4NGM4YTcxZjgzMDA0
ZWEwM2UzMWE3NWZiLi5hNmNmYTY4NjM1OGNmMjQ0NTU4NjhiMDZkMTJjMDVkMTgwMDFjOWVjIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuaApAQCAtNDkwLDggKzQ5MCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2VuZERpc3BsYXlD
b25maWd1cmF0aW9uQ2hhbmdlZE1lc3NhZ2VGb3JUZXN0aW5nKCk7CiAKLSAgICAvLyBXZWJBdXRo
TgotICAgIHZvaWQgc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihKU1ZhbHVl
UmVmKTsKICAgICAvLyBGSVhNRSgxODk4NzYpCiAgICAgdm9pZCBhZGRUZXN0S2V5VG9LZXljaGFp
bihKU1N0cmluZ1JlZiBwcml2YXRlS2V5QmFzZTY0LCBKU1N0cmluZ1JlZiBhdHRyTGFiZWwsIEpT
U3RyaW5nUmVmIGFwcGxpY2F0aW9uVGFnQmFzZTY0KTsKICAgICB2b2lkIGNsZWFuVXBLZXljaGFp
bihKU1N0cmluZ1JlZiBhdHRyTGFiZWwsIEpTU3RyaW5nUmVmIGFwcGxpY2F0aW9uVGFnQmFzZTY0
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggN2NkMTky
YWUzODM2OTVjMjkxMjc2MzFkMWExNDE0ZjZmMTE1NzkxZC4uNzkyMjk0YWU0M2IzNDAxYWMzMDQ2
N2E0OWEyNjdiMjAxMjdmOWIyYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAKQEAgLTM2MTQsMTEgKzM2MTQsNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzZW5k
RGlzcGxheUNvbmZpZ3VyYXRpb25DaGFuZ2VkTWVzc2FnZUZvclRlc3RpbmcoKQogICAgIFdLU2Vu
ZERpc3BsYXlDb25maWd1cmF0aW9uQ2hhbmdlZE1lc3NhZ2VGb3JUZXN0aW5nKHBsYXRmb3JtQ29u
dGV4dCgpKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbihXS0RpY3Rpb25hcnlSZWYgY29uZmlndXJhdGlvbikKLXsKLSAgICBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKFRl
c3RDb250cm9sbGVyOjp3ZWJzaXRlRGF0YVN0b3JlKCksIGNvbmZpZ3VyYXRpb24pOwotfQotCiBz
dHJ1Y3QgQWRDbGlja0F0dHJpYnV0aW9uU3RyaW5nUmVzdWx0Q2FsbGJhY2tDb250ZXh0IHsKICAg
ICBleHBsaWNpdCBBZENsaWNrQXR0cmlidXRpb25TdHJpbmdSZXN1bHRDYWxsYmFja0NvbnRleHQo
VGVzdENvbnRyb2xsZXImIGNvbnRyb2xsZXIpCiAgICAgICAgIDogdGVzdENvbnRyb2xsZXIoY29u
dHJvbGxlcikKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCAzYzcx
NTE5MmZiYmI2N2U0YmFhNTI1YzVmZmZjMTNjYTQ2ZWI4ZmVjLi4xNDQzZDZkOTI2NDJlOTYxMzNl
NThhNGVhZThkMjYzZDg4NzBlYjMxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oCkBAIC0yOTQsNyArMjk0LDYgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgc2VuZERp
c3BsYXlDb25maWd1cmF0aW9uQ2hhbmdlZE1lc3NhZ2VGb3JUZXN0aW5nKCk7CiAKLSAgICB2b2lk
IHNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oV0tEaWN0aW9uYXJ5UmVmKTsK
ICAgICB2b2lkIGFkZFRlc3RLZXlUb0tleWNoYWluKGNvbnN0IFN0cmluZyYgcHJpdmF0ZUtleUJh
c2U2NCwgY29uc3QgU3RyaW5nJiBhdHRyTGFiZWwsIGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25U
YWdCYXNlNjQpOwogICAgIHZvaWQgY2xlYW5VcEtleWNoYWluKGNvbnN0IFN0cmluZyYgYXR0ckxh
YmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVGFnQmFzZTY0KTsKICAgICBib29sIGtleUV4
aXN0c0luS2V5Y2hhaW4oY29uc3QgU3RyaW5nJiBhdHRyTGFiZWwsIGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpb25UYWdCYXNlNjQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcAppbmRleCAwZDEyZTcwNDRkNTAxMjM5NjJlNGMyZTAzM2UxNzBlY2E1MTFkZWFiLi4zNTZk
MzNiYzkyMjE2OTY0ZTQ4OTU0ODA1MzI4OWU3NDQ4NDAzNWU4IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTYyMywxMiArMTYyMyw2IEBAIFdLUmV0YWlu
UHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3Nh
Z2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0V2ViQXV0aGVu
dGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbiIpKSB7Ci0gICAgICAgIEFTU0VSVChXS0dldFR5cGVJ
RChtZXNzYWdlQm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOwotICAgICAgICBUZXN0
Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbihzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KSk7Ci0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIH0KLQogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKG1lc3NhZ2VOYW1lLCAiQWRkVGVzdEtleVRvS2V5Y2hhaW4iKSkgewogICAgICAgICBB
U1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRGljdGlvbmFyeUdldFR5cGVJRCgp
KTsKICAgICAgICAgV0tEaWN0aW9uYXJ5UmVmIHRlc3RLZXlEaWN0aW9uYXJ5ID0gc3RhdGljX2Nh
c3Q8V0tEaWN0aW9uYXJ5UmVmPihtZXNzYWdlQm9keSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNmQyN2I4YjdhOWExZjZj
NDllYTY4ZjU5OWJjNjgwMGE2ZmVjYjkxMC4uN2U4OWY2ZWU0MWZmNDlhODQwYzkwZmI0YWI0MzJl
M2QwMWIyNjE2OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE5LTEwLTA4ICBKaWV3ZW4gVGFu
ICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBNb3ZlIHRoZSBt
b2NrIHRlc3RpbmcgZW50cmFuY2UgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NjAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU1OTczNzkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtZmFpbHVyZS5odHRwcy5odG1sOgorICAg
ICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLXN1Y2Nlc3MuaHR0cHMuaHRtbDoKKyAg
ICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0dHBzLmh0bWw6Cisg
ICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vaWRsLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWhpZC1z
aWxlbnQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtaGlkLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2Fs
LXNpbGVudC5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sOgorICAgICAgICAq
IGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1u
ZmMuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLXNpbGVudC5odHRwcy5odG1sOgorICAgICAgICAq
IGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11
MmYuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0
bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNy
ZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy5odG1sOgor
ICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUt
c3VjY2Vzcy11MmYuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1sOgorICAg
ICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVy
ZS1oaWQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLmh0bWw6CisgICAgICAg
ICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxv
Y2FsLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWdldC1mYWlsdXJlLW5mYy5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYtc2lsZW50Lmh0
dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWdldC1mYWlsdXJlLXUyZi5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS5odHRwcy5odG1sOgorICAgICAg
ICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1o
aWQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbmZjLmh0dHBzLmh0
bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdl
dC1zdWNjZXNzLXUyZi5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3Jl
c291cmNlcy9wdWJsaWMta2V5LWNyZWRlbnRpYWwtaXAtYWRkcmVzcy5odHRwcy5odG1sOgorCiAy
MDE5LTEwLTA4ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgdGVzdCBnYXJkZW5pbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL2N0YXAtaGlkLWZhaWx1cmUuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLWZhaWx1cmUuaHR0cHMuaHRtbAppbmRleCA0ZjBmZDZh
YTA2NjA5Yzk0MzUxNmY5ZTc2YTgzNzZjYWE2ZGE5MmQ5Li45ZDUzZTFkNDQwMjE3MWJjZDQ4N2Yx
MTJlNjA2NDI2NmFmZmYwZWRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9jdGFwLWhpZC1mYWlsdXJlLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vY3RhcC1oaWQtZmFpbHVyZS5odHRwcy5odG1sCkBAIC0yMSw1MCArMjEsNTAg
QEAKICAgICB9OwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50
aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdl
OiAiaW5pdCIsIGVycm9yOiAiZGF0YS1ub3Qtc2VudCIgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogImluaXQi
LCBlcnJvcjogImRhdGEtbm90LXNlbnQiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVq
ZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShk
ZWZhdWx0T3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJDVEFQIEhJ
RCB3aXRoIGluaXQgc3ViIHN0YWdlIGRhdGEgbm90IHNlbnQgZXJyb3IgaW4gYSBtb2NrIGhpZCBh
dXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKLSAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJB
dXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1
YlN0YWdlOiAiaW5pdCIsIGVycm9yOiAiZW1wdHktcmVwb3J0IiB9IH0pOworICAgICAgICBpZiAo
d2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAi
aW5pdCIsIGVycm9yOiAiZW1wdHktcmVwb3J0IiB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlz
ZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVh
dGUoZGVmYXVsdE9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiQ1RB
UCBISUQgd2l0aCBpbml0IHN1YiBzdGFnZSBlbXB0eSByZXBvcnQgZXJyb3IgaW4gYSBtb2NrIGhp
ZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRX
ZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIs
IHN1YlN0YWdlOiAiaW5pdCIsIGVycm9yOiAid3JvbmctY2hhbm5lbC1pZCIgfSB9KTsKKyAgICAg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJT
dGFnZTogImluaXQiLCBlcnJvcjogIndyb25nLWNoYW5uZWwtaWQiIH0gfSk7CiAgICAgICAgIHJl
dHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwog
ICAgIH0sICJDVEFQIEhJRCB3aXRoIGluaXQgc3ViIHN0YWdlIHdyb25nIGNoYW5uZWwgaWQgZXJy
b3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1
bmN0aW9uKHQpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAiaW5pdCIsIGVycm9yOiAid3Jvbmctbm9uY2UiIH0g
fSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxz
LnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJp
bmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJ3cm9uZy1ub25jZSIgfSB9KTsKICAgICAg
ICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3Iu
Y3JlZGVudGlhbHMuY3JlYXRlKGRlZmF1bHRPcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQu
Iik7CiAgICAgfSwgIkNUQVAgSElEIHdpdGggaW5pdCBzdWIgc3RhZ2Ugd3Jvbmcgbm9uY2UgZXJy
b3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1
bmN0aW9uKHQpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJkYXRhLW5vdC1zZW50IiB9
IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFs
cy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAi
aW5mbyIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJkYXRhLW5vdC1zZW50IiB9IH0pOwogICAg
ICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRv
ci5jcmVkZW50aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91
dC4iKTsKICAgICB9LCAiQ1RBUCBISUQgd2l0aCBtc2cgc3ViIHN0YWdlIGRhdGEgbm90IHNlbnQg
ZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0
KGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlk
OiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJlbXB0eS1yZXBvcnQi
IH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJu
YWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6
ICJpbmZvIiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogImVtcHR5LXJlcG9ydCIgfSB9KTsKICAg
ICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0
b3IuY3JlZGVudGlhbHMuY3JlYXRlKGRlZmF1bHRPcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBv
dXQuIik7CiAgICAgfSwgIkNUQVAgSElEIHdpdGggbXNnIHN1YiBzdGFnZSBlbXB0eSByZXBvcnQg
ZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0
KGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlk
OiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ3cm9uZy1jaGFubmVs
LWlkIiB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGlu
dGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0
YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ3cm9uZy1jaGFubmVsLWlkIiB9
IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIs
IG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlvbnMpLCAiT3BlcmF0aW9u
IHRpbWVkIG91dC4iKTsKICAgICB9LCAiQ1RBUCBISUQgd2l0aCBtc2cgc3ViIHN0YWdlIHdyb25n
IGNoYW5uZWwgaWQgZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAg
cHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1
cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6
ICJ3cm9uZy1jaGFubmVsLWlkIiwgcGF5bG9hZEJhc2U2NDpbdGVzdER1bW15TWVzc2FnZVBheWxv
YWRCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAg
ICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6
IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIndyb25nLWNoYW5u
ZWwtaWQiLCBwYXlsb2FkQmFzZTY0Olt0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJhc2U2NF0gfSB9
KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGRlZmF1bHRPcHRpb25zKSwgIlVua25vd24gaW50ZXJu
YWwgZXJyb3IuIEVycm9yIGNvZGU6IDE4Iik7CiAgICAgfSwgIkNUQVAgSElEIHdpdGggcmVxdWVz
dDo6bXNnIHN0YWdlIHdyb25nIGNoYW5uZWwgaWQgZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50
aWNhdG9yLiIpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9jdGFwLWhpZC1zdWNjZXNzLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9jdGFwLWhpZC1zdWNjZXNzLmh0dHBzLmh0bWwKaW5kZXggOGU1ZDA5NWU1ZmQ5
ODNmYWFhYzRkN2UzYTQ2MmIwY2NkZDk3ZDYwNS4uYjZmOTFmOGMzZWZhNjkwNzY4ZTc3ZTVkZGIw
MzM5YTQwYzdkOTk3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
Y3RhcC1oaWQtc3VjY2Vzcy5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL2N0YXAtaGlkLXN1Y2Nlc3MuaHR0cHMuaHRtbApAQCAtMjAsOCArMjAsOCBAQAogICAg
IH07CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJt
c2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdENyZWF0aW9uTWVzc2Fn
ZUJhc2U2NF0sIGtlZXBBbGl2ZTogdHJ1ZSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVy
bmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJy
b3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRd
LCBrZWVwQWxpdmU6IHRydWUgfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50
aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAg
ICAgICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCB1bmRlZmluZWQpOwogICAgICAgICAg
ICAgYXNzZXJ0X25vdF9lcXVhbHMoY3JlZGVudGlhbCwgbnVsbCk7CkBAIC0yOSw4ICsyOSw4IEBA
CiAgICAgfSwgIkNUQVAgSElEIHdpdGgga2VlcCBhbGl2ZSBtZXNzYWdlIGluIGEgbW9jayBoaWQg
YXV0aGVudGljYXRvci4iKTsKIAogICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7Ci0gICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2Vi
QXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3Qi
LCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0
Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSwgZmFzdERhdGFBcnJpdmFsOiB0cnVlIH0gfSk7CisgICAg
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwg
c3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdENy
ZWF0aW9uTWVzc2FnZUJhc2U2NF0sIGZhc3REYXRhQXJyaXZhbDogdHJ1ZSB9IH0pOwogICAgICAg
ICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucykudGhl
bihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRp
YWwsIHVuZGVmaW5lZCk7CiAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFs
LCBudWxsKTsKQEAgLTM4LDggKzM4LDggQEAKICAgICB9LCAiQ1RBUCBISUQgd2l0aCBmYXN0IGRh
dGEgYXJyaXZhbCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKICAgICBwcm9taXNl
X3Rlc3QoZnVuY3Rpb24odCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24o
eyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJlbXB0eS1y
ZXBvcnQiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NF0sIGNvbnRp
bnVlQWZ0ZXJFcnJvckRhdGE6IHRydWUgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogImluaXQiLCBlcnJvcjog
ImVtcHR5LXJlcG9ydCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0
XSwgY29udGludWVBZnRlckVycm9yRGF0YTogdHJ1ZSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucykudGhlbihjcmVkZW50aWFs
ID0+IHsKICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIHVuZGVmaW5l
ZCk7CiAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCBudWxsKTsKQEAg
LTQ3LDggKzQ3LDggQEAKICAgICB9LCAiQ1RBUCBISUQgd2l0aCBjb250aW51ZSBhZnRlciBlbXB0
eSByZXBvcnQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlzZV90
ZXN0KGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsg
aGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAiaW5pdCIsIGVycm9yOiAid3JvbmctY2hh
bm5lbC1pZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSwgY29u
dGludWVBZnRlckVycm9yRGF0YTogdHJ1ZSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVy
bmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAiaW5pdCIsIGVycm9y
OiAid3JvbmctY2hhbm5lbC1pZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdl
QmFzZTY0XSwgY29udGludWVBZnRlckVycm9yRGF0YTogdHJ1ZSB9IH0pOwogICAgICAgICByZXR1
cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucykudGhlbihjcmVk
ZW50aWFsID0+IHsKICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIHVu
ZGVmaW5lZCk7CiAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCBudWxs
KTsKQEAgLTU2LDggKzU2LDggQEAKICAgICB9LCAiQ1RBUCBISUQgd2l0aCBjb250aW51ZSBhZnRl
ciB3cm9uZyBjaGFubmVsIGlkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIAogICAg
IHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogImluaXQiLCBlcnJvcjog
Indyb25nLW5vbmNlIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRd
LCBjb250aW51ZUFmdGVyRXJyb3JEYXRhOiB0cnVlIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0Iiwg
ZXJyb3I6ICJ3cm9uZy1ub25jZSIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdl
QmFzZTY0XSwgY29udGludWVBZnRlckVycm9yRGF0YTogdHJ1ZSB9IH0pOwogICAgICAgICByZXR1
cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucykudGhlbihjcmVk
ZW50aWFsID0+IHsKICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIHVu
ZGVmaW5lZCk7CiAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCBudWxs
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtbmZjLWZh
aWx1cmUuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtbmZj
LWZhaWx1cmUuaHR0cHMuaHRtbAppbmRleCA1YzBiMWI4YWU0Njg4N2Y1ZmJhNWIxMzNiODgyZjRl
NjQ5ZDhhZDI0Li4yMDUwNjBhYzY3ZjRiMzJjNzAzMGM4MzhmMmVjZTE0MGEyMjNmNGFjIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0
dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1uZmMtZmFp
bHVyZS5odHRwcy5odG1sCkBAIC0yMSwxNCArMjEsMTQgQEAKICAgICB9OwogCiAgICAgcHJvbWlz
ZV90ZXN0KGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9u
KHsgbmZjOiB7IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0Olt0ZXN0
TmZjVTJmVmVyc2lvbkJhc2U2NCwgIiJdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNl
NjQ6W3Rlc3ROZmNVMmZWZXJzaW9uQmFzZTY0LCAiIl0gfSB9KTsKICAgICAgICAgcmV0dXJuIHBy
b21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Y3JlYXRlKGRlZmF1bHRPcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwg
IkNUQVAgTkZDIHdpdGggZW1wdHkgYXBkdSByZXNwb25zZSBpbiBhIG1vY2sgbmZjIGF1dGhlbnRp
Y2F0b3IuIik7CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewotICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRp
Y2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9h
ZCIsIHBheWxvYWRCYXNlNjQ6W3Rlc3ROZmNVMmZWZXJzaW9uQmFzZTY0LCB0ZXN0VTJmQXBkdVdy
b25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJh
c2U2NDpbdGVzdE5mY1UyZlZlcnNpb25CYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJl
c3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5v
dEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlv
bnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiQ1RBUCBORkMgd2l0aCB3cm9u
ZyBkYXRhIGVycm9yIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKIDwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vaWRsLmh0dHBzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9pZGwuaHR0cHMuaHRtbAppbmRleCBkYzEy
YjcyMjRiMWUwZmQwNjg1Nzk3MDUwYWNjOWVmZmI5ODVjZjYxLi4wOWFmY2IwZTE2ZTQ3MzgxMDhi
NWU5YzgwNWZhZjdjYjk3ZmU0ZDk4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9pZGwuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9pZGwuaHR0cHMuaHRtbApAQCAtNTIsOCArNTIsOCBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgKCkg
PT4gewogICAgICAgICB9CiAgICAgfTsKICAgICAvLyBBIG1vY2sgYXR0ZXN0YXRpb24gb2JqZWN0
Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1
dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwg
c3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdENy
ZWF0aW9uTWVzc2FnZUJhc2U2NF0gfSB9KTsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBo
aWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3Mi
LCBwYXlsb2FkQmFzZTY0OiBbdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NF0gfSB9KTsKICAgICBj
cmVhdGVkQ3JlZGVudGlhbCA9IGF3YWl0IG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoY3Jl
YXRpb25PcHRpb25zKTsKIAogICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zID0gewpAQCAtNjEsOCAr
NjEsOCBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4gewogICAgICAgICAgICAgY2hhbGxlbmdl
OiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiksCiAgICAgICAgIH0KICAgICB9OwotICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNh
dGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdl
OiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RBc3NlcnRpb25N
ZXNzYWdlQmFzZTY0XSB9IH0pOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBp
bnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBz
dGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxv
YWRCYXNlNjQ6IFt0ZXN0QXNzZXJ0aW9uTWVzc2FnZUJhc2U2NF0gfSB9KTsKICAgICByZXF1ZXN0
ZWRDcmVkZW50aWFsID0gYXdhaXQgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChyZXF1ZXN0T3B0
aW9ucyk7CiAKICAgICBpZGxBcnJheS5hZGRfb2JqZWN0cyh7IlB1YmxpY0tleUNyZWRlbnRpYWwi
OiBbImNyZWF0ZWRDcmVkZW50aWFsIl0sICJBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZSI6IFsiY3JlYXRlZENyZWRlbnRpYWwucmVzcG9uc2UiXSwgIkF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZSI6IFsicmVxdWVzdGVkQ3JlZGVudGlhbC5yZXNwb25zZSJdfSk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWhpZC1zaWxl
bnQuaHR0cHMuaHRtbAppbmRleCA2NmI1ZGE0ZjM5OTJjZWNmNjE3OGI3ZjZiNjNiZjY3ZTc4ZDg1
MjM2Li5mMzU4NjZhNmUzNjE2NjVhMzI1MGVlZDU5NGJjNDBkYTJkMGI2ZDJkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3Jl
YXRlLWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1oaWQtc2ls
ZW50Lmh0dHBzLmh0bWwKQEAgLTIxLDggKzIxLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAg
fTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJl
OiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
Im1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3REdW1teU1lc3NhZ2VQYXls
b2FkQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAg
ICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2ls
ZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNn
IiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0RHVtbXlN
ZXNzYWdlUGF5bG9hZEJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3Rz
KHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlv
bnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbY3JlYXRlXV0gd2l0aCBtYWxpY2lvdXMgcGF5bG9hZCBpbiBhIG1vY2sgaGlkIGF1dGhl
bnRpY2F0b3IuIik7CiAKQEAgLTQ0LDggKzQ0LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAg
fTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJl
OiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
InVuc3VwcG9ydGVkLW9wdGlvbnMiIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
KQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3Vi
U3RhZ2U6ICJtc2ciLCBlcnJvcjogInVuc3VwcG9ydGVkLW9wdGlvbnMiIH0gfSk7CiAgICAgICAg
IHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAg
fSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdW5zdXBwb3J0ZWQgb3B0
aW9ucyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTY3LDggKzY3LDggQEAK
ICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwg
c3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInVuc3VwcG9ydGVkLW9wdGlvbnMiIH0gfSk7CisgICAg
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6
IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInVuc3VwcG9ydGVk
LW9wdGlvbnMiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxs
b3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJh
dGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0
ZV1dIHdpdGggdW5zdXBwb3J0ZWQgb3B0aW9ucyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3Iu
IDIiKTsKIApAQCAtOTAsOCArOTAsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUs
IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAidW5zdXBw
b3J0ZWQtb3B0aW9ucyIgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAg
ICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7
IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTog
Im1zZyIsIGVycm9yOiAidW5zdXBwb3J0ZWQtb3B0aW9ucyIgfSB9KTsKICAgICAgICAgcmV0dXJu
IHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlh
bHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtaXhlZCBvcHRpb25zIGluIGEgbW9j
ayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtMTExLDggKzExMSw4IEBACiAgICAgICAgICAg
IH0KICAgICAgICB9OwogCi0gICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6
IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1w
YXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJyQ3JlZGVudGlhbEV4Y2x1ZGVkT25s
eVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7
IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNp
b3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEN0YXBFcnJDcmVkZW50aWFsRXhjbHVk
ZWRPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3Rz
KHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0
aW9ucyksICJBdCBsZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBl
eGNsdWRlQ3JlZGVudGlhbHMgbGlzdCBpbiB0aGUgYXV0aGVudGljYXRvci4iKTsKICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIEludmFsaWRTdGF0ZUVycm9yIGlu
IGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1m
YWlsdXJlLWhpZC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWhpZC5odHRwcy5odG1sCmluZGV4IDJm
ODM3YzY2MzI2Yjg3ZmY3YTkyODdhYjE3MDJkYWQzNDAwNjZkZjAuLjEwY2ZlYWRmZTU2MjZiYzg0
ZjlmMGVjMjkwNDBhYTkyZDdiYjg5MjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1oaWQuaHR0cHMu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtY3JlYXRlLWZhaWx1cmUtaGlkLmh0dHBzLmh0bWwKQEAgLTUsOCArNSw4IEBACiA8c2Ny
aXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogICAgIC8v
IERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGl0IGlm
IHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KLSAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9y
OiAibWFsaWNpb3VzLXBheWxvYWQiIH0gfSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsg
aGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lv
dXMtcGF5bG9hZCIgfSB9KTsKIAogICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CiAgICAg
ICAgIGNvbnN0IG9wdGlvbnMgPSB7CkBAIC00NSw4ICs0NSw4IEBACiAgICAgICAgICAgICB9CiAg
ICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5
bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJhc2U2NF0gfSB9
KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMu
c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJl
cXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXls
b2FkQmFzZTY0OiBbdGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjRdIH0gfSk7CiAgICAgICAg
IHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIEVycm9yIGNv
ZGU6IDI1NSIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRo
IG1hbGljaW91cyBwYXlsb2FkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAt
NjcsOCArNjcsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGlj
YXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFn
ZTogIm1zZyIsIGVycm9yOiAidW5zdXBwb3J0ZWQtb3B0aW9ucyIgfSB9KTsKKyAgICAgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFn
ZTogIm1zZyIsIGVycm9yOiAidW5zdXBwb3J0ZWQtb3B0aW9ucyIgfSB9KTsKICAgICAgICAgcmV0
dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlh
bHMuY3JlYXRlKG9wdGlvbnMpLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTog
NDMiKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1bnN1
cHBvcnRlZCBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtODks
OCArODksOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRp
b25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTog
Im1zZyIsIGVycm9yOiAidW5zdXBwb3J0ZWQtb3B0aW9ucyIgfSB9KTsKKyAgICAgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTog
Im1zZyIsIGVycm9yOiAidW5zdXBwb3J0ZWQtb3B0aW9ucyIgfSB9KTsKICAgICAgICAgcmV0dXJu
IHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Y3JlYXRlKG9wdGlvbnMpLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogNDMi
KTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1bnN1cHBv
cnRlZCBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gMiIpOwogCkBAIC0xMTIs
OCArMTEyLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0
aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6
ICJtc2ciLCBlcnJvcjogInVuc3VwcG9ydGVkLW9wdGlvbnMiIH0gfSk7CisgICAgICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6
ICJtc2ciLCBlcnJvcjogInVuc3VwcG9ydGVkLW9wdGlvbnMiIH0gfSk7CiAgICAgICAgIHJldHVy
biBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWl4ZWQgb3B0aW9ucyBpbiBhIG1v
Y2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTEzNCw4ICsxMzQsOCBAQAogICAgICAgICAg
ICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7
IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAidW5zdXBw
b3J0ZWQtb3B0aW9ucyIgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAg
ICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7
IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAidW5zdXBw
b3J0ZWQtb3B0aW9ucyIgfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJV
bmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiVW5r
bm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogNDMiKTsKICAgICB9LCAiUHVibGljS2V5
Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtaXhlZCBvcHRpb25zIGluIGEgbW9jayBoaWQg
YXV0aGVudGljYXRvci4gMiIpOwogCkBAIC0xNTUsOCArMTU1LDggQEAKICAgICAgICAgICAgIH0K
ICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6
IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1w
YXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJyQ3JlZGVudGlhbEV4Y2x1ZGVkT25s
eVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
KHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxp
Y2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3RhcEVyckNyZWRlbnRpYWxFeGNs
dWRlZE9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWpl
Y3RzKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUo
b3B0aW9ucyksICJBdCBsZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRo
ZSBleGNsdWRlQ3JlZGVudGlhbHMgbGlzdCBpbiB0aGUgYXV0aGVudGljYXRvci4iKTsKICAgICB9
LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBJbnZhbGlkU3RhdGVFcnJv
ciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVh
dGUtZmFpbHVyZS1sb2NhbC1zaWxlbnQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC1zaWxl
bnQuaHR0cHMuaHRtbAppbmRleCA2YTAwYmVkZTZkZDliZTc4MzA2YWU3ZDQwZTc1ZmVkM2JjNGNh
YzJkLi40ZGNmNGEyOTRkOWZlNzNjN2MyMTZmOGZkMTk0ZTMyNjY3YTc2OGU2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3Jl
YXRlLWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2Fs
LXNpbGVudC5odHRwcy5odG1sCkBAIC05LDggKzksOCBAQAogICAgICAgICBjb25zdCBwcml2YXRl
S2V5QmFzZTY0ID0gYXdhaXQgZ2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7CiAgICAgICAgIGNv
bnN0IGNyZWRlbnRpYWxJRCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChwcml2YXRlS2V5
QmFzZTY0KTsKICAgICAgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5l
ZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgotICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdl
YkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBs
b2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0dGVzdGF0aW9uOiBm
YWxzZSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGlu
dGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFp
bHVyZTogdHJ1ZSwgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IGZhbHNlLCBhY2NlcHRB
dHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKIAogICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAg
ICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewpAQCAtMTIxLDggKzEyMSw4IEBACiAgICAgICAg
ICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fTsKLSAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRG
YWlsdXJlOiB0cnVlLCBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0
QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRp
Y2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKICAgICAgICAgICAg
IHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAg
ICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHNpbGVudCBmYWls
dXJlIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiA1Iik7CiAKQEAgLTE0Miw4ICsxNDIs
OCBAQAogICAgICAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlv
bjogdHJ1ZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisgICAgICAgICAgICBpZiAo
d2luZG93LmludGVybmFscykgeworICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgbG9jYWw6
IHsgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9
IH0pOwogICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4ocHJp
dmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3Ii
LCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVk
IG91dC4iKS50aGVuKCgpID0+IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5odHRwcy5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWNyZWF0ZS1mYWlsdXJlLWxvY2FsLmh0dHBzLmh0bWwKaW5kZXggYzNjOTM3MjY0NGIzODE0Y2I0
YTM0NWMzNTE5NjEzODc4ZWVlMjQ1My4uMzljN2VjN2ZhYzU0ZGY3MTdkYjM3YWEwODQ5NTdkNzQw
YzI3MmU1NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLmh0dHBzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1m
YWlsdXJlLWxvY2FsLmh0dHBzLmh0bWwKQEAgLTksOCArOSw4IEBACiAgICAgICAgIGNvbnN0IHBy
aXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKICAgICAg
ICAgY29uc3QgY3JlZGVudGlhbElEID0gYXdhaXQgY2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZh
dGVLZXlCYXNlNjQpOwogICAgICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVz
dHMgbmVlZCB0byBvdmVycmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24u
Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIu
c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1
dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisgICAg
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNh
dGlvbjogZmFsc2UsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOwogCiAgICAgICAgIHBy
b21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CkBAIC0xMTYs
OCArMTE2LDggQEAKICAgICAgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlw
ZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfTsKLSAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBsb2Nh
bDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNl
IH0gfSk7CisgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgICAg
ICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2Fs
OiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2Ug
fSB9KTsKICAgICAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9y
IiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIlVua25vd24gaW50ZXJu
YWwgZXJyb3IuIik7CiAgICAgICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVd
XSB3aXRob3V0IGF0dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOwog
CkBAIC0xMzYsOCArMTM2LDggQEAKICAgICAgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFt
czogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dCiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3Rh
dGlvbjogZmFsc2UgfSB9KTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Cisg
ICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0QXR0ZXN0
YXRpb246IGZhbHNlIH0gfSk7CiAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5
VG9LZXljaGFpbihwcml2YXRlS2V5QmFzZTY0LCB0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVu
a25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJVbmtu
b3duIGludGVybmFsIGVycm9yLiIpLnRoZW4oKCkgPT4gewpAQCAtMTY0LDggKzE2NCw4IEBACiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGlj
YXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBm
YWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmludGVybmFscykKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBm
YWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CiAgICAgICAgICAgICByZXR1cm4g
cHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgICAgICB9LCAi
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB0aW1lb3V0IGluIGEgbW9jayBs
b2NhbCBhdXRoZW50aWNhdG9yLiIpOwogICAgIH0pKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUt
bmZjLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwKaW5kZXggNDgyNDg1NzMz
YzVhZjM3MjM4MzIxYjZmMjRiMjIwMzRkZmVkNGI3MS4uMjUzNTNmMDkyNjhhYTU3MWI4N2ZkMmIx
MTUzZWM4NmQ4NjJmMTQ1YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1j
cmVhdGUtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbApAQCAtNSw4ICs1LDggQEAKIDxzY3JpcHQgc3Jj
PSIuL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAgICAgLy8gRGVmYXVs
dCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaXQgaWYgdGhleSBu
ZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9u
KHsgbmZjOiB7IGVycm9yOiAibm8tdGFncyIgfSB9KTsKKyAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24oeyBuZmM6IHsgZXJyb3I6ICJuby10YWdzIiB9IH0pOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1
bmN0aW9uKHQpIHsKICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKQEAgLTY2LDggKzY2LDggQEAK
ICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJ3cm9uZy10YWctdHlwZSIgfSB9KTsKKyAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogIndyb25nLXRhZy10eXBl
IiB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJv
ciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGlt
ZWQgb3V0LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRo
IHdyb25nIHRhZyB0eXBlIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKIApAQCAtODgs
OCArODgsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRp
b25Nb2NrQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogIm5vLWNvbm5lY3Rpb25zIiB9IH0p
OworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5z
ZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAibm8t
Y29ubmVjdGlvbnMiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90
QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9w
ZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2Ny
ZWF0ZV1dIHdpdGggbm8gY29ubmVjdGlvbnMgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIp
OwogCkBAIC0xMTAsOCArMTEwLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdl
YkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJtYWxpY2lv
dXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFsgXSB9IH0pOworICAgICAgICBpZiAod2luZG93
LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXls
b2FkQmFzZTY0OiBbIF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJO
b3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAi
T3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Y3JlYXRlXV0gd2l0aCBudWxsIHZlcnNpb24gaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIp
OwogCkBAIC0xMzIsOCArMTMyLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdl
YkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJtYWxpY2lv
dXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6W3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0
XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVy
bmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9y
OiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0Olt0ZXN0RHVtbXlNZXNzYWdlUGF5
bG9hZEJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RB
bGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3Bl
cmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3Jl
YXRlXV0gd2l0aCB3cm9uZyB2ZXJzaW9uIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVy
ZS11MmYtc2lsZW50Lmh0dHBzLmh0bWwKaW5kZXggYWVkOTdjMjU2NjE2MjlkYjlhYzcwMzhlMTcx
N2M0NDg0OGVmNmFkNC4uN2U3MDRmN2UxMWNkZTMzMTA0OTAxNGM5MzM3ZjZkYWQ5MWNjOGEzYyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1
cmUtdTJmLXNpbGVudC5odHRwcy5odG1sCkBAIC0yMSw4ICsyMSw4IEBACiAgICAgICAgICAgICB9
CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2ls
ZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNn
IiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0
OiBbIkFRPT0iXSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAg
ICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2ls
ZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNn
IiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0
OiBbIkFRPT0iXSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFs
bG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVy
YXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVh
dGVdXSB3aXRoIG1hbGZvcm1lZCBBUERVIHBheWxvYWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNh
dG9yLiIpOwogCkBAIC00Myw4ICs0Myw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAK
LSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1
ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxp
Y2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVO
b0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVy
bmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIs
IHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVl
LCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9
IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIs
IG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQg
b3V0LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1h
bGZvcm1lZCBVMkYgcmVnaXN0ZXIgcmVzcG9uc2UgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9y
LiIpOwogCkBAIC02NSw4ICs2NSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRX
ZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwg
aGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lv
dXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVJbnNO
b3RTdXBwb3J0ZWRPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6
IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNw
b25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RB
bGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3Bl
cmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3Jl
YXRlXV0gd2l0aCByZWdpc3RlciBjb21tYW5kIGVycm9yIGluIGEgbW9jayBoaWQgYXV0aGVudGlj
YXRvci4iKTsKIApAQCAtODgsOCArODgsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9Owog
Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIu
c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRy
dWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFs
aWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1
Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5
UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
eyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6
ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRC
YXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1
SW5zTm90U3VwcG9ydGVkT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4g
cHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGJvZ3VzIGNvbW1hbmQgZXJyb3IgaW4g
YSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC0xMTAsOCArMTEwLDggQEAKICAgICAg
ICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRp
b24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3Rh
Z2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxv
YWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZB
cGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVl
c3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjog
dHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2
NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICBy
ZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIkludmFsaWRTdGF0ZUVycm9yIiwgbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkF0IGxlYXN0IG9uZSBjcmVkZW50aWFsIG1hdGNo
ZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBsaXN0IGluIHRoZSBhdXRoZW50
aWNhdG9yLiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRo
IGZpcnN0IGV4Y2x1ZGUgY3JlZGVudGlhbCBtYXRjaGVkIGluIGEgbW9jayBoaWQgYXV0aGVudGlj
YXRvci4iKTsKIApAQCAtMTMzLDggKzEzMyw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07
CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTog
dHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJt
YWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFw
ZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNw
b25zZUJhc2U2NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwor
ICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwg
aGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lv
dXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9u
Z0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJh
c2U2NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAg
ICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIkludmFsaWRTdGF0ZUVycm9yIiwgbmF2aWdhdG9y
LmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkF0IGxlYXN0IG9uZSBjcmVkZW50aWFsIG1h
dGNoZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBsaXN0IGluIHRoZSBhdXRo
ZW50aWNhdG9yLiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3
aXRoIHNlY29uZCBleGNsdWRlIGNyZWRlbnRpYWwgbWF0Y2hlZCBpbiBhIG1vY2sgaGlkIGF1dGhl
bnRpY2F0b3IuIik7CiAKQEAgLTE1Niw4ICsxNTYsOCBAQAogICAgICAgICAgICAgfQogICAgICAg
ICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RS
dW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1
cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9y
OiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RV
MmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFw
ZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNv
bmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJv
ck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJT
dGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5
bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25z
ZUJhc2U2NCwgdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFz
ZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQs
IHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0
dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAi
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBmaXJzdCBleGNsdWRlIGNyZWRl
bnRpYWwgbWF0Y2hlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIFRlc3Qgb2YgdXNlciBw
cmVzZW5jZS4iKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi5odHRwcy5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWNyZWF0ZS1mYWlsdXJlLXUyZi5odHRwcy5odG1sCmluZGV4IDE1N2Q5ZTg4YTA2YmVkNDZjN2Q0
ZmQ4NWUxNjAxY2UyYWVjZjQyM2QuLjk0N2RjZmYyYmY1MDlkM2ZhZmEwNTUwNDI1Yzc5OTAxMTIz
NDhjNmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1
cmUtdTJmLmh0dHBzLmh0bWwKQEAgLTIwLDggKzIwLDggQEAKICAgICAgICAgICAgIH0KICAgICAg
ICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3Rh
Z2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2Fk
IiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFsiQVE9PSJdIH0gfSk7CisgICAgICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3Rh
Z2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxv
YWRCYXNlNjQ6IFsiQVE9PSJdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0
LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwg
IkNvdWxkbid0IHBhcnNlIHRoZSBBUERVIHJlc3BvbnNlLiIpOwogICAgIH0sICJQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hbGZvcm1lZCBBUERVIHBheWxvYWQgaW4gYSBt
b2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC00MSw4ICs0MSw4IEBACiAgICAgICAgICAg
ICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsg
aGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lv
dXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vy
cm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6
ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUy
ZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJv
bWlzZVJlamVjdHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVh
dGUob3B0aW9ucyksICJDb3VsZG4ndCBwYXJzZSB0aGUgVTJGIHJlZ2lzdGVyIHJlc3BvbnNlLiIp
OwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hbGZvcm1l
ZCBVMkYgcmVnaXN0ZXIgcmVzcG9uc2UgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwog
CkBAIC02Miw4ICs2Miw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRo
ZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1
YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBw
YXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5UmVzcG9uc2VCYXNl
NjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50
ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3Rh
Z2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2Fk
IiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRl
ZE9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3Rz
KHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMp
LCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogMjc5MDQiKTsKICAgICB9LCAi
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCByZWdpc3RlciBjb21tYW5kIGVy
cm9yIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtODQsOCArODQsOCBAQAog
ICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9y
OiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RV
MmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVJbnNOb3RTdXBwb3J0
ZWRPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
KQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
Im1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJm
QXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1SW5zTm90U3VwcG9ydGVk
T25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHMo
dCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyks
ICJVbmtub3duIGludGVybmFsIGVycm9yLiBFcnJvciBjb2RlOiAyNzkwNCIpOwogICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGJvZ3VzIGNvbW1hbmQgZXJyb3Ig
aW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC0xMDYsOCArMTA2LDggQEAKICAg
ICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
Im1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJm
QXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNw
b25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAg
ICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhp
ZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3Vz
LXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJv
ck9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0
XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIkludmFsaWRTdGF0ZUVy
cm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkF0IGxlYXN0IG9u
ZSBjcmVkZW50aWFsIG1hdGNoZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBs
aXN0IGluIHRoZSBhdXRoZW50aWNhdG9yLiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tjcmVhdGVdXSB3aXRoIGZpcnN0IGV4Y2x1ZGUgY3JlZGVudGlhbCBtYXRjaGVkIGluIGEg
bW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtMTI5LDggKzEyOSw4IEBACiAgICAgICAg
ICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9u
KHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxp
Y2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVX
cm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25z
ZUJhc2U2NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAg
ICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIs
IHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVl
LCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQs
IHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVOb0Vycm9y
T25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHMo
dCwgIkludmFsaWRTdGF0ZUVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRp
b25zKSwgIkF0IGxlYXN0IG9uZSBjcmVkZW50aWFsIG1hdGNoZXMgYW4gZW50cnkgb2YgdGhlIGV4
Y2x1ZGVDcmVkZW50aWFscyBsaXN0IGluIHRoZSBhdXRoZW50aWNhdG9yLiIpOwogICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHNlY29uZCBleGNsdWRlIGNyZWRl
bnRpYWwgbWF0Y2hlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTE1MSw4
ICsxNTEsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRp
b25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTog
Im1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJh
c2U2NDogW3Rlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2
NCwgdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0
ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RV
MmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1z
ZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2
NDogW3Rlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwg
dGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0
VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZB
cGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21p
c2VSZWplY3RzKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5j
cmVhdGUob3B0aW9ucyksICJBdCBsZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5
IG9mIHRoZSBleGNsdWRlQ3JlZGVudGlhbHMgbGlzdCBpbiB0aGUgYXV0aGVudGljYXRvci4iKTsK
ICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBmaXJzdCBleGNs
dWRlIGNyZWRlbnRpYWwgbWF0Y2hlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIFRlc3Qg
b2YgdXNlciBwcmVzZW5jZS4iKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLmh0
dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtY3JlYXRlLWZhaWx1cmUuaHR0cHMuaHRtbAppbmRleCA0NjQyYTViYTBmYmU3YThiM2M4
YWRmZjUzOTY5OTU1YjBjNWQ2NmNiLi41ZThmNWI4MTJiZTU3NjNjMzFiYzVkMmRmYzg5NGMwOTUw
ZjU3ODkzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUu
aHR0cHMuaHRtbApAQCAtNSw4ICs1LDggQEAKIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy91dGls
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRp
b24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1
cmF0aW9uLgotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5z
ZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgfSk7CisgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uKHsgfSk7CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewogICAg
ICAgICBjb25zdCBvcHRpb25zID0gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sCmluZGV4IDZhOGMzNTgxM2VlMmFkNzI3YmJj
NTY2MTFhOGIyY2I5MGFkYmFmNjQuLjU0NDZmNTU3MGYyOWQ1MzQ2YWY3ODdjZjU2NGM5M2U1Njcw
YWY3MGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nl
c3MtaGlkLmh0dHBzLmh0bWwKQEAgLTYsOCArNiw4IEBACiA8c2NyaXB0IHNyYz0iLi9yZXNvdXJj
ZXMvY2Jvci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogICAgIC8vIERlZmF1bHQgbW9jayBjb25m
aWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQg
Y29uZmlndXJhdGlvbi4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RS
dW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFn
ZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRC
YXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSB9IH0pOworICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVy
cm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0
XSB9IH0pOwogCiAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICBjb25zdCBvcHRpb25z
ID0gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3Mt
bG9jYWwuaHR0cHMuaHRtbAppbmRleCBlNTFiYTVmZGU2YThlZjRmNDkwODY3ZmFiYWZjN2JiZDU3
MmU0ZWVlLi4wODhlODYzMThkMWJlOGEwNDQ1N2Q0MTE4YjNkMWFmODgzZGMwMmM3IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbG9jYWwuaHR0
cHMuaHRtbApAQCAtMTAsOCArMTAsOCBAQAogICAgICAgICBjb25zdCBwcml2YXRlS2V5QmFzZTY0
ID0gYXdhaXQgZ2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7CiAgICAgICAgIGNvbnN0IGNyZWRl
bnRpYWxJRCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChwcml2YXRlS2V5QmFzZTY0KTsK
ICAgICAgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3Zl
cnJpZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgotICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRp
Y2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeworICAgICAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uKHsKICAgICAgICAgICAgICAgICBsb2NhbDogewogICAgICAgICAgICAgICAgICAgICBhY2Nl
cHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgYWNjZXB0QXR0ZXN0
YXRpb246IHRydWUsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbmZjLmh0dHBzLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1
Y2Nlc3MtbmZjLmh0dHBzLmh0bWwKaW5kZXggOGQyMmU1NDRkNGFiOTUwOTk1MjU3ZmE2YjllMGU1
ZjAyYzg2MTU1ZC4uODJkMDcwNjE4YjNlMDMzYzM0OGE3NzQyYzEwYWY2ZWMxMWM2NjM1NiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1uZmMuaHR0
cHMuaHRtbApAQCAtNiw4ICs2LDggQEAKIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy9jYm9yLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQ+CiAgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24u
IFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0
aW9uLgotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRX
ZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAic3VjY2Vz
cyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0TmZjQ3RhcFZlcnNpb25CYXNlNjQsIHRlc3RHZXRJbmZv
UmVzcG9uc2VBcGR1QmFzZTY0LCB0ZXN0Q3JlYXRpb25NZXNzYWdlQXBkdUJhc2U2NF0gfSB9KTsK
KyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5
bG9hZEJhc2U2NDogW3Rlc3ROZmNDdGFwVmVyc2lvbkJhc2U2NCwgdGVzdEdldEluZm9SZXNwb25z
ZUFwZHVCYXNlNjQsIHRlc3RDcmVhdGlvbk1lc3NhZ2VBcGR1QmFzZTY0XSB9IH0pOwogCiAgICAg
cHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICBjb25zdCBvcHRpb25zID0gewpAQCAtNzEsOCAr
NzEsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0
OiBbdGVzdE5mY0N0YXBWZXJzaW9uQmFzZTY0LCB0ZXN0R2V0SW5mb1Jlc3BvbnNlQXBkdUJhc2U2
NCwgdGVzdENyZWF0aW9uTWVzc2FnZUFwZHVCYXNlNjRdLCBtdWx0aXBsZVRhZ3M6IHRydWUgfSB9
KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMu
c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogInN1
Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdE5mY0N0YXBWZXJzaW9uQmFzZTY0LCB0ZXN0R2V0
SW5mb1Jlc3BvbnNlQXBkdUJhc2U2NCwgdGVzdENyZWF0aW9uTWVzc2FnZUFwZHVCYXNlNjRdLCBt
dWx0aXBsZVRhZ3M6IHRydWUgfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50
aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIGNo
ZWNrQ3RhcE1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKQEAg
LTk1LDggKzk1LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRp
Y2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9h
ZEJhc2U2NDogW3Rlc3ROZmNVMmZWZXJzaW9uQmFzZTY0LCB0ZXN0VTJmQXBkdUluc05vdFN1cHBv
cnRlZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7Cisg
ICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNz
IiwgcGF5bG9hZEJhc2U2NDogW3Rlc3ROZmNVMmZWZXJzaW9uQmFzZTY0LCB0ZXN0VTJmQXBkdUlu
c05vdFN1cHBvcnRlZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2Vd
IH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlv
bnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBjaGVja1UyZk1ha2VDcmVkZW50
aWFsUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vz
cy11MmYuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbAppbmRleCA0N2Q4YmQ0
NDk0NzVhZDQ1MzllN2EzOWFiMTJjMzlkMjM0NmM3YTNjLi5jMmJjOGY1MjZiNzQwMjExYjE5NDk3
MzA1NzAxNWI1ZDEwYWU2NTdhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWNyZWF0ZS1zdWNjZXNzLXUyZi5odHRwcy5odG1sCkBAIC0yMSw4ICsyMSw4IEBACiAgICAgICAg
ICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9u
KHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNj
ZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmUmVnaXN0ZXJSZXNwb25z
ZV0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRl
cm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFn
ZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0
cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7CiAgICAg
ICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3Jl
ZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBjaGVja1UyZk1ha2VDcmVkZW50aWFsUmVzdWx0KGNy
ZWRlbnRpYWwpOwogICAgICAgICB9KTsKQEAgLTQ1LDggKzQ1LDggQEAKICAgICAgICAgICAgIH0K
ICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6
IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBp
c1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3Bv
bnNlQmFzZTY0LCB0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKKyAgICAgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTog
Im1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVz
dFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZSZWdpc3RlclJlc3Bv
bnNlXSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShv
cHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgY2hlY2tVMmZNYWtlQ3Jl
ZGVudGlhbFJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7CkBAIC02OSw4ICs2OSw4IEBA
CiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25m
aWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJy
b3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdy
b25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9u
c2VCYXNlNjQsIHRlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOworICAgICAgICBpZiAod2lu
ZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAi
bXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0
VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFP
bmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOwogICAgICAg
ICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRl
bnRpYWwgPT4gewogICAgICAgICAgICAgY2hlY2tVMmZNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVk
ZW50aWFsKTsKICAgICAgICAgfSk7CkBAIC05Miw4ICs5Miw4IEBACiAgICAgICAgICAgICB9CiAg
ICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNV
MmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2Zp
ZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9u
bHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7CisgICAgICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3Vi
U3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2
NDogW3Rlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwg
dGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0
VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAg
IGNoZWNrVTJmTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwpA
QCAtMTE2LDggKzExNiw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRo
ZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1
YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNl
NjQ6IFt0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIs
IGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlJl
Z2lzdGVyUmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlh
bHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBjaGVj
a1UyZk1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKQEAgLTE0
MCw4ICsxNDAsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGlj
YXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFn
ZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBb
dGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJv
cjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZSZWdpc3Rl
clJlc3BvbnNlXSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNy
ZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgY2hlY2tVMmZN
YWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsLCBmYWxzZSk7CiAgICAgICAgIH0pOwpAQCAt
MTY0LDggKzE2NCw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50
aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0
YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6
IFt0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVy
cm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlJlZ2lz
dGVyUmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Y3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBjaGVja1Uy
Zk1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwsIGZhbHNlKTsKICAgICAgICAgfSk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtZ2V0LWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC1zaWxl
bnQuaHR0cHMuaHRtbAppbmRleCBlODVjMmM4NGFmNzIyZDc1MTljNTVlYzdjNWNlNmM1MDA2MzZh
YzIwLi4zOGY0MDc0OWU5NWFlMDViYzkyN2YxZGNiYjNjYjllMWQ5MjFlNzcyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0
LWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQtc2lsZW50Lmh0
dHBzLmh0bWwKQEAgLTEyLDggKzEyLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVl
LCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGlj
aW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFz
ZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGlu
dGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFp
bHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJy
b3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0RHVtbXlNZXNzYWdl
UGF5bG9hZEJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJO
b3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiT3Bl
cmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0
XV0gd2l0aCBtYWxpY2lvdXMgcGF5bG9hZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7
CiAKQEAgLTI2LDggKzI2LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1
dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6
IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInVuc3VwcG9ydGVk
LW9wdGlvbnMiIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAg
ICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxl
bnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ci
LCBlcnJvcjogInVuc3VwcG9ydGVkLW9wdGlvbnMiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9t
aXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdl
dChvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2dldF1dIHdpdGggdW5zdXBwb3J0ZWQgb3B0aW9ucyBpbiBhIG1vY2sgaGlk
IGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTM5LDggKzM5LDggQEAKICAgICAgICAgICAgIH0KICAg
ICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRG
YWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBl
cnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52
YWxpZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVl
c3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2Fk
QmFzZTY0OiBbdGVzdEN0YXBFcnJJbnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNlQmFzZTY0XSB9IH0p
OwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5h
dmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIp
OwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIGludmFsaWQgY3Jl
ZGVudGlhbCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTUyLDggKzUyLDgg
QEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0Nv
bmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0
Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgY2FuRG93bmdy
YWRlOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEN0YXBFcnJJbnZhbGlkQ3JlZGVudGlhbFJl
c3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAg
ICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsg
c2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAi
bXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGNhbkRvd25ncmFkZTogdHJ1ZSwgcGF5
bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2NF0g
fSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3Ii
LCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91
dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBhdXRoZW50
aWNhdG9yIGRvd25ncmFkZSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTY2
LDggKzY2LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0
aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6
ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwg
Y2FuRG93bmdyYWRlOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEN0YXBFcnJJbnZhbGlkQ3Jl
ZGVudGlhbFJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1
YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGNhbkRvd25ncmFkZTog
dHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENyZWRlbnRpYWxSZXNwb25z
ZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxv
d2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiT3BlcmF0aW9u
IHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0
aCBhdXRoZW50aWNhdG9yIGRvd25ncmFkZSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIDIi
KTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC5odHRwcy5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJl
LWhpZC5odHRwcy5odG1sCmluZGV4IDU0ODVmMzcwZDY3OTcxZTIyMzVkOGQ5YTg3MmVhYjM0Zjlj
NTY2ZjcuLjAwMjJlYTkwYjA3NmFmZTJjNDY0YmY3NmYyNWQ0OWI1M2NhNDgxYjkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1n
ZXQtZmFpbHVyZS1oaWQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLmh0dHBzLmh0bWwKQEAg
LTUsOCArNSw4IEBACiA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0PgogICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVk
IHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KLSAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGlj
YXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFn
ZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiIH0gfSk7CisgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwg
ZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIgfSB9KTsKIAogICAgIHByb21pc2VfdGVzdCh0ID0+
IHsKICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKQEAgLTMxLDggKzMxLDggQEAKICAgICAgICAg
ICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24o
eyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGlj
aW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFz
ZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGlu
dGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0
YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9h
ZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJhc2U2NF0gfSB9KTsK
ICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0
b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJy
b3IgY29kZTogMjU1Iik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdp
dGggbWFsaWNpb3VzIHBheWxvYWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBA
IC00NCw4ICs0NCw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50
aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0
YWdlOiAibXNnIiwgZXJyb3I6ICJ1bnN1cHBvcnRlZC1vcHRpb25zIiB9IH0pOworICAgICAgICBp
ZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0
YWdlOiAibXNnIiwgZXJyb3I6ICJ1bnN1cHBvcnRlZC1vcHRpb25zIiB9IH0pOwogICAgICAgICBy
ZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50
aWFscy5nZXQob3B0aW9ucyksICJVbmtub3duIGludGVybmFsIGVycm9yLiBFcnJvciBjb2RlOiA0
MyIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIHVuc3VwcG9y
dGVkIG9wdGlvbnMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC01Niw4ICs1
Niw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1v
Y2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNn
IiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3RhcEVy
ckludmFsaWRDcmVkZW50aWFsUmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJt
c2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFw
RXJySW52YWxpZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJu
IHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Z2V0KG9wdGlvbnMpLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogMzQiKTsK
ICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBhdXRoZW50aWNhdG9y
IGRvd25ncmFkZSBmYWlsZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC02
OSw4ICs2OSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNh
dGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdl
OiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGNhbkRvd25ncmFkZTogdHJ1ZSwg
cGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2
NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRl
cm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFn
ZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQi
LCBjYW5Eb3duZ3JhZGU6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3RhcEVyckludmFsaWRD
cmVkZW50aWFsUmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVq
ZWN0cyh0LCAiTm90U3VwcG9ydGVkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9w
dGlvbnMpLCAiQ2Fubm90IGNvbnZlcnQgdGhlIHJlcXVlc3QgdG8gVTJGIGNvbW1hbmQuIik7CiAg
ICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggYXV0aGVudGljYXRvciBk
b3duZ3JhZGUgc3VjY2VlZGVkIGFuZCB0aGVuIFUyRiBmYWlsZWQgaW4gYSBtb2NrIGhpZCBhdXRo
ZW50aWNhdG9yLiAyIik7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC1zaWxl
bnQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC1zaWxlbnQuaHR0cHMuaHRtbAppbmRleCA4NDNi
YTg2ZjFmOWE3Y2RiOTRhYmJhNmM2NzQzYzAyZTljMzNkZjVhLi5mMDJjMjU1ZTg4MjQwNDc0ZjEy
MjJjMTJiMDY1YzZiOWY4ZTk5ZjMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0
dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWdldC1mYWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy5odG1sCkBAIC05LDggKzks
OCBAQAogICAgICAgICBjb25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQgZ2VuZXJhdGVQcml2
YXRlS2V5QmFzZTY0KCk7CiAgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJRCA9IGF3YWl0IGNhbGN1
bGF0ZUNyZWRlbnRpYWxJRChwcml2YXRlS2V5QmFzZTY0KTsKICAgICAgICAgLy8gRGVmYXVsdCBt
b2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRp
ZmZlcmVudCBjb25maWd1cmF0aW9uLgotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRp
b24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjog
ZmFsc2UsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSwgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2
NDogdXNlcmhhbmRsZUJhc2U2NCB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246
IGZhbHNlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UsIHByZWZlcnJlZFVzZXJoYW5kbGVCYXNl
NjQ6IHVzZXJoYW5kbGVCYXNlNjQgfSB9KTsKIAogICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7
CiAgICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxvY2Fs
Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbAppbmRleCBlYTBlMmE0NmJmMDUx
YTBmZTc4YWFmMjQwY2Y3MjhjN2E3ZjQ0MmRhLi4zZTRmNDk5MDZjMzJlNGU4OTUyNThmNjY4M2Ew
ZmJlYTQ5OTc3OWVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZh
aWx1cmUtbG9jYWwuaHR0cHMuaHRtbApAQCAtOSw4ICs5LDggQEAKICAgICAgICAgY29uc3QgcHJp
dmF0ZUtleUJhc2U2NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOwogICAgICAg
ICBjb25zdCBjcmVkZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0
ZUtleUJhc2U2NCk7CiAgICAgICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0
cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4K
LSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0
aGVudGljYXRpb246IGZhbHNlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UsIHByZWZlcnJlZFVz
ZXJoYW5kbGVCYXNlNjQ6IHVzZXJoYW5kbGVCYXNlNjQgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwg
YWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlLCBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0OiB1c2Vy
aGFuZGxlQmFzZTY0IH0gfSk7CiAKICAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAg
ICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1uZmMuaHR0cHMuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1n
ZXQtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbAppbmRleCBkYjY0ODc0ZmZmNWQ4MWZlN2I2MTQ0Mzlm
NzI2MjlhOTlkMDAyNTEzLi4yNzVlZTY2ZTI2Mjg3OTE3YWFkZTljZTUzZTRlOTI3NDdiZGE2MDRl
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLW5mYy5odHRw
cy5odG1sCkBAIC01LDggKzUsOCBAQAogPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdD4KICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4g
VGVzdHMgbmVlZCB0byBvdmVycmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRp
b24uCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLnNldFdl
YkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJtYWxpY2lv
dXMtcGF5bG9hZCIgfSB9KTsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50
ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJy
b3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIgfSB9KTsKIAogICAgIHByb21pc2VfdGVzdCh0ID0+IHsK
ICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYtc2lsZW50
Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLXNpbGVudC5odHRwcy5odG1sCmluZGV4IDhhN2NkOGE1
YmI5MWQ4MWIxNDc2YWRkN2M0MmQwMTM2M2IwZDZjN2EuLmFlNWJiZGQzZTM4YjRkZGY0YmIwNjQz
ZTlmZDUwM2FmNzk4ZDIzYmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWdldC1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMuaHRtbApAQCAtMTMsOCArMTMsOCBAQAog
ICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBz
dWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwg
cGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9
KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMu
c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRy
dWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFs
aWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1
Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VS
ZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9w
dGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbZ2V0XV0gd2l0aCBtYWxmb3JtZWQgc2lnbiByZXNwb25zZSBpbiBhIG1vY2sgaGlk
IGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTI3LDggKzI3LDggQEAKICAgICAgICAgICAgIH0KICAg
ICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRG
YWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBl
cnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0
ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFn
ZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQi
LCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJl
c3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5v
dEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVy
YXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRd
XSB3aXRoIG5vIG1hdGNoZWQgYWxsb3cgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGhpZCBhdXRoZW50
aWNhdG9yLiIpOwogCkBAIC00MSw4ICs0MSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07
CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTog
dHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJt
YWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFw
ZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJl
c3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAg
ICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsg
c2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAi
bXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFz
ZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1
V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlz
ZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQo
b3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVk
ZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgYWxsb3cgY3JlZGVudGlhbHMgaW4gYSBt
b2NrIGhpZCBhdXRoZW50aWNhdG9yLiAyIik7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVy
ZS11MmYuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYuaHR0cHMuaHRtbAppbmRleCA2NDkxMzc4Mjg0
ZWI2N2ExOWU3ZDYwNWU2ODcwMDBkYTY0MWViZGU2Li41ZDFkMzAwZTY4ODU2ODQ0OWQxZGYzZTg0
NmZkNmUyMmFkOGEyNDAyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLmh0dHBzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1m
YWlsdXJlLXUyZi5odHRwcy5odG1sCkBAIC0xMiw4ICsxMiw4IEBACiAgICAgICAgICAgICB9CiAg
ICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5
bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25s
eVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
KHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxp
Y2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVO
b0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJl
amVjdHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9u
cyksICJDb3VsZG4ndCBwYXJzZSB0aGUgVTJGIHNpZ24gcmVzcG9uc2UuIik7CiAgICAgfSwgIlB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbWFsZm9ybWVkIHNpZ24gcmVzcG9uc2Ug
aW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC0yNSw4ICsyNSw4IEBACiAgICAg
ICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0
aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJt
YWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFw
ZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ci
LCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6
IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAg
cmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiTm8gY3JlZGVudGlhbHMgZnJvbSB0aGUgYWxsb3dDcmVk
ZW50aWFscyBsaXN0IGlzIGZvdW5kIGluIHRoZSBhdXRoZW50aWNhdG9yLiIpOwogICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgYWxsb3cgY3JlZGVu
dGlhbHMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC0zOCw4ICszOCw4IEBA
CiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25m
aWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJy
b3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVz
dFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRh
T25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJt
YWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFw
ZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJl
c3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5v
dEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJObyBj
cmVkZW50aWFscyBmcm9tIHRoZSBhbGxvd0NyZWRlbnRpYWxzIGxpc3QgaXMgZm91bmQgaW4gdGhl
IGF1dGhlbnRpY2F0b3IuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1d
IHdpdGggbm8gbWF0Y2hlZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRp
Y2F0b3IuIDIiKTsKIApAQCAtNTMsOCArNTMsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9
OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTog
InJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBp
c1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3Bv
bnNlQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsK
KyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVl
c3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjog
dHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFz
ZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAg
ICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3Iu
Y3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiTm8gY3JlZGVudGlhbHMgZnJvbSB0aGUgYWxsb3dD
cmVkZW50aWFscyBsaXN0IGlzIGZvdW5kIGluIHRoZSBhdXRoZW50aWNhdG9yLiIpOwogICAgIH0s
ICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgYWxsb3cgY3Jl
ZGVudGlhbHMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAoQXBwSUQpIik7CiAKQEAgLTY3
LDggKzY3LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0
aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6
ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRC
YXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFw
ZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJl
c3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NF0gfSB9
KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMu
c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJl
cXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1Uy
ZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNl
QmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFw
ZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJl
c3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5v
dEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJObyBj
cmVkZW50aWFscyBmcm9tIHRoZSBhbGxvd0NyZWRlbnRpYWxzIGxpc3QgaXMgZm91bmQgaW4gdGhl
IGF1dGhlbnRpY2F0b3IuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1d
IHdpdGggbm8gbWF0Y2hlZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRp
Y2F0b3IuIDIgKEFwcElEKSIpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUuaHR0cHMu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1nZXQtZmFpbHVyZS5odHRwcy5odG1sCmluZGV4IGUyZjk1ZDY3ZDhkOGY3NGQ1OTY5ZjM1OGRh
Y2RmZTFhMzM1YjRkMjIuLmNmMThmZjc3ZWYzM2ZhMzI0MzIwZDNjNWIzYWM2NGRhOWVhNDI4MzIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1nZXQtZmFpbHVyZS5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS5odHRwcy5odG1sCkBA
IC01LDggKzUsOCBAQAogPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0
PgogPHNjcmlwdD4KICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVl
ZCB0byBvdmVycmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRp
Y2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyB9KTsKKyAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
eyB9KTsKIAogICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29uc3Qgb3B0aW9ucyA9
IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMu
aHRtbAppbmRleCBkOWIyMmI0MmE5ZDc2MjAwMjE0MTIxMGM0NWQ2OGNmYTZkMWI5NTM2Li4wY2Yw
M2U3ZGQ2ZTkxOTBiN2Y1NmY3YjkwZWM5MzljMGUyYWRlZGIxIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3Mt
aGlkLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWhpZC5odHRwcy5odG1sCkBAIC01LDggKzUsOCBA
QAogPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4K
ICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlk
ZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0Nv
bmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBl
cnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEFzc2VydGlvbk1lc3NhZ2VCYXNl
NjRdIH0gfSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5z
ZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVx
dWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDog
W3Rlc3RBc3NlcnRpb25NZXNzYWdlQmFzZTY0XSB9IH0pOwogCiAgICAgcHJvbWlzZV90ZXN0KHQg
PT4gewogICAgICAgICBjb25zdCBvcHRpb25zID0gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWxvY2Fs
Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbAppbmRleCBlMTgyMDk0OGY3N2U1
YjdmODQ0Mzk4ZTlkMGZmNjcwNmM1OGVmNzQzLi45MzYwYWZiOGY1NTgyNzU4NDNmOTAwMzQ1N2M3
MGU4N2M0Mzc2Y2JmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1
Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbApAQCAtOSw4ICs5LDggQEAKICAgICAgICAgY29uc3QgcHJp
dmF0ZUtleUJhc2U2NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOwogICAgICAg
ICBjb25zdCBjcmVkZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0
ZUtleUJhc2U2NCk7CiAgICAgICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0
cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4K
LSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0
aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSwgcHJlZmVycmVkVXNl
cmhhbmRsZUJhc2U2NDogdXNlcmhhbmRsZUJhc2U2NCB9IH0pOworICAgICAgICBpZiAod2luZG93
LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsIGFj
Y2VwdEF0dGVzdGF0aW9uOiBmYWxzZSwgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDogdXNlcmhh
bmRsZUJhc2U2NCB9IH0pOwogCiAgICAgICAgIGZ1bmN0aW9uIGNoZWNrUmVzdWx0KGNyZWRlbnRp
YWwpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1uZmMuaHR0cHMuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vz
cy1uZmMuaHR0cHMuaHRtbAppbmRleCBmYzdjNmFhMzU1ZThjZmRiYjU0MzNkZTFkYmNlNTVlYjVj
NWU2NDEzLi5jYzA1MGRhMWMzZDEzNDUxMWYxZTE4N2E3NmFjNTYzOWIxOWQ0MTg2IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Z2V0LXN1Y2Nlc3MtbmZjLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLW5mYy5odHRwcy5odG1sCkBA
IC01LDggKzUsOCBAQAogPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0
PgogPHNjcmlwdD4KICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVl
ZCB0byBvdmVycmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRp
Y2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9h
ZEJhc2U2NDogW3Rlc3ROZmNDdGFwVmVyc2lvbkJhc2U2NCwgdGVzdEdldEluZm9SZXNwb25zZUFw
ZHVCYXNlNjQsIHRlc3RBc3NlcnRpb25NZXNzYWdlQXBkdUJhc2U2NF0gfSB9KTsKKyAgICBpZiAo
d2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2
NDogW3Rlc3ROZmNDdGFwVmVyc2lvbkJhc2U2NCwgdGVzdEdldEluZm9SZXNwb25zZUFwZHVCYXNl
NjQsIHRlc3RBc3NlcnRpb25NZXNzYWdlQXBkdUJhc2U2NF0gfSB9KTsKIAogICAgIHByb21pc2Vf
dGVzdCh0ID0+IHsKICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKQEAgLTMwLDggKzMwLDggQEAK
ICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RO
ZmNVMmZWZXJzaW9uQmFzZTY0LCB0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNwb25z
ZUJhc2U2NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBb
dGVzdE5mY1UyZlZlcnNpb25CYXNlNjQsIHRlc3RVMmZBcGR1SW5zTm90U3VwcG9ydGVkT25seVJl
c3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOwogICAgICAgICByZXR1cm4g
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewog
ICAgICAgICAgICAgcmV0dXJuIGNoZWNrVTJmR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwp
OwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vz
cy11MmYuaHR0cHMuaHRtbAppbmRleCA5NWIyZDFiMmUxOTRlZjJkM2U4MWM0ODY5ZTk0NzVmY2Yw
ZDQzZDdlLi4wZjAwMDhhYjU0M2Y1YWQ3NWJjYzU3ODQzY2RmYTU1ZDljYjQ1ZmEzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Z2V0LXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLXUyZi5odHRwcy5odG1sCkBA
IC0xMyw4ICsxMyw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50
aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0
YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6
IFt0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6
ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmU2lnblJlc3Bv
bnNlXSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRp
b25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgcmV0dXJuIGNoZWNrVTJmR2V0
QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKQEAgLTI5LDggKzI5LDgg
QEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0Nv
bmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBl
cnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1
V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOwor
ICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVz
dCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxv
YWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUy
ZlNpZ25SZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIHJldHVybiBj
aGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7CkBAIC00
NSw4ICs0NSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNh
dGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdl
OiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0
ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RV
MmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNp
Z25SZXNwb25zZV0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAg
ICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhp
ZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIs
IGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0
aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2Zp
ZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CiAgICAgICAg
IHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlh
bCA9PiB7CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tVMmZHZXRBc3NlcnRpb25SZXN1bHQoY3Jl
ZGVudGlhbCk7CiAgICAgICAgIH0pOwpAQCAtNjMsOCArNjMsOCBAQAogICAgICAgICAgICAgfQog
ICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlz
VTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKKyAg
ICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3Qi
LCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2Fk
QmFzZTY0OiBbdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmln
YXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAg
ICAgICAgIHJldHVybiBjaGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsKTsKICAg
ICAgICAgfSk7CkBAIC04MCw4ICs4MCw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAK
LSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVx
dWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBh
eWxvYWRCYXNlNjQ6IFt0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOworICAgICAgICBpZiAod2lu
ZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAi
bXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0
VTJmU2lnblJlc3BvbnNlXSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgcmV0dXJu
IGNoZWNrVTJmR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKQEAg
LTk3LDggKzk3LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRp
Y2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3Rh
Z2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDog
W3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3Bv
bnNlXSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGlu
dGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0
YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6
IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJh
c2U2NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRv
ci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAg
ICAgIHJldHVybiBjaGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsLCB0cnVlKTsK
ICAgICAgICAgfSk7CkBAIC0xMTUsOCArMTE1LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAg
fTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6
ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1
ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0
LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6
ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25n
RGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKICAgICAg
ICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50
aWFsID0+IHsKICAgICAgICAgICAgIHJldHVybiBjaGVja1UyZkdldEFzc2VydGlvblJlc3VsdChj
cmVkZW50aWFsLCB0cnVlLCAiN2VhYmM1Y2MzMjUxYmRjNTkxMTVlZjg3YjVmN2VlNzRjYjAzNzQ3
ZTM5YmE4MzQxNzQ4NTY1Y2MxMjljMDcxOSIpOwogICAgICAgICB9KTsKQEAgLTEzMiw4ICsxMzIs
OCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2Nr
Q29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIs
IGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFw
ZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJl
c3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOworICAgICAgICBpZiAod2lu
ZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAi
bXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0
VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFP
bmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJl
dHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9
PiB7CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tVMmZHZXRBc3NlcnRpb25SZXN1bHQoY3JlZGVu
dGlhbCk7CiAgICAgICAgIH0pOwpAQCAtMTQ5LDggKzE0OSw4IEBACiAgICAgICAgICAgICB9CiAg
ICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNV
MmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25z
ZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZB
cGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0p
OworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5z
ZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVx
dWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBh
eWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVz
dFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRh
T25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOwogICAgICAgICBy
ZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwg
PT4gewogICAgICAgICAgICAgcmV0dXJuIGNoZWNrVTJmR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRl
bnRpYWwsIHRydWUpOwogICAgICAgICB9KTsKQEAgLTE2Niw4ICsxNjYsOCBAQAogICAgICAgICAg
ICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7
IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2Vz
cyIsIGNhbkRvd25ncmFkZTogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxp
ZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKKyAg
ICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3Qi
LCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGNhbkRvd25ncmFkZTogdHJ1ZSwg
cGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2
NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5j
cmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAg
IHJldHVybiBjaGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAg
fSk7CkBAIC0xODMsOCArMTgzLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdl
YkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0
Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBjYW5Eb3duZ3JhZGU6IHRydWUs
IHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9uc2VCYXNl
NjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJl
c3BvbnNlXSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAg
IGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgY2Fu
RG93bmdyYWRlOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEN0YXBFcnJJbnZhbGlkQ3JlZGVu
dGlhbFJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2
NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5j
cmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAg
IHJldHVybiBjaGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsLCB0cnVlLCAiN2Vh
YmM1Y2MzMjUxYmRjNTkxMTVlZjg3YjVmN2VlNzRjYjAzNzQ3ZTM5YmE4MzQxNzQ4NTY1Y2MxMjlj
MDcxOSIpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3Jlc291cmNlcy9wdWJsaWMta2V5LWNyZWRlbnRpYWwtaXAtYWRkcmVzcy5odHRwcy5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1pcC1hZGRyZXNzLmh0dHBzLmh0bWwKaW5kZXggNmRlM2E5NDM1MDRiZjRmZjk5
MjNmNzg0NmFkZDg3NTQzNDY4ZDBjZC4uODExODNjMGNkY2NmYWZlYjBhYjVmZjQzY2Q1Yzc1YzNi
YjFhMmJmMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3Vy
Y2VzL3B1YmxpYy1rZXktY3JlZGVudGlhbC1pcC1hZGRyZXNzLmh0dHBzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1pcC1hZGRyZXNzLmh0dHBzLmh0bWwKQEAgLTUsOCArNSw4IEBACiA8c2NyaXB0IHNyYz0idXRp
bC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0
aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmln
dXJhdGlvbi4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIu
c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IH0pOworICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbih7IH0pOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKICAg
ICAgICAgY29uc3Qgb3B0aW9ucyA9IHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380518</attachid>
            <date>2019-10-09 01:53:03 -0700</date>
            <delta_ts>2019-10-09 01:54:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202560-20191009015302.patch</filename>
            <type>text/plain</type>
            <size>210861</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwODg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDdiNTBlOWJlZTAyOGQ1
YjQ5OGY3ZmZkOGMwZjAzNjZiOGE5NzgxNi4uOTQxMzIwYzUyYzg4YjAzNTM2ODMzMGY5YzhiOWRm
ZDFhM2VhYmQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDE5LTEwLTA4ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBNb3Zl
IHRoZSBtb2NrIHRlc3RpbmcgZW50cmFuY2UgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NjAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzU1OTczNzkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgVGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlv
bk1vY2tDb25maWd1cmF0aW9uIHRvCisgICAgICAgIEludGVybmFscy5zZXRNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uIGFuZCByZW1vdmVzIHRoZSBvbGQKKyAgICAgICAgZW50cmFu
Y2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IHVwZGF0ZXMgb24gZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlD
cmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmg6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24pOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbik6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5pZGw6CisgICAgICAgICogdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbjo6TG9jYWxDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TG9jYWxDb25maWd1
cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbjo6SGlkQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENvbmZpZ3Vy
YXRpb246OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uOjpOZmNDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29uZmlndXJh
dGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIHRlc3RpbmcvTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGw6IEFkZGVkLgorCisyMDE5LTEwLTA4
ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgUGFydGlhbGx5
IHVuZG8gcjI1MDgxMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAyNzE1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjA4NDI4Nz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBUaGlzIHBhdGNoIGNoYW5nZXMg
dGhlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSB0byBhbHdheXMgd3JhcCBDcnlwdG9LZXkgb2JqZWN0
cyBhZ2Fpbi4KKyAgICAgICAgQ3J5cHRvS2V5IG9iamVjdHMgY291bGQgYmVsb25nIHRvIGFuIGFy
cmF5IG9yIGFub3RoZXIgb2JqZWN0LiBJbiB0aG9zZSBjYXNlcywgSURCT2JqZWN0U3RvcmUKKyAg
ICAgICAgY2Fubm90IHNldCB0aGUgZmxhZyBmb3IgdGhlIGVtYmVkZGVkIENyeXB0b2tleSBvYmpl
Y3RzLiBOZWl0aGVyIGNhbiBwb3N0TWVzc2FnZSB0byB1bnNldAorICAgICAgICB0aGUgZmxhZy4g
VGhlcmVmb3JlLCB0aGVyZSBpcyBubyB3YXkgdG8gc2VwYXJhdGUgdGhlIHNlcmlhbGl6YXRpb24g
cHJvY2VzcyBpbnRvIHR3byBhbmQKKyAgICAgICAgdGhpcyBwYXRjaCByZXN0b3JlcyB0aGUgb2xk
IGJlaGF2aW91ci4gSG93ZXZlciwgdGhlIGhhcmRlbmluZyBwYXJ0IG9mIHIyNTA4MTEgaXMga2Vw
dAorICAgICAgICBhbmQgdGhlcmVmb3JlIHRoZSBjcmFzaCBzaG91bGQgc3RpbGwgYmUgcHJldmVu
dGVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0LCB1cGRhdGVkIGV4aXN0aW5nIHRlc3QKKworICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlOjpwdXRPckFkZCk6CisgICAgICAgIChXZWJDb3JlOjpKU0M6
OnNldElzV3JhcHBpbmdSZXF1aXJlZEZvckNyeXB0b0tleSk6IERlbGV0ZWQuCisgICAgICAgICog
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNsb25lU2VyaWFsaXplcjo6ZHVtcElmVGVybWluYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2xv
bmVEZXNlcmlhbGl6ZXI6OnJlYWRUZXJtaW5hbCk6CisgICAgICAgICogY3J5cHRvL0NyeXB0b0tl
eS5oOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5OjphbGxvd3MgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvS2V5Ojppc1dyYXBwaW5nUmVxdWlyZWQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5OjpzZXRJc1dyYXBwaW5nUmVxdWlyZWQpOiBE
ZWxldGVkLgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oOgorCiAyMDE5LTEwLTA4ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDYW52YXM6IG1vZGlmaWNhdGlvbnMgdG8g
c2hhZGVyIG1vZHVsZXMgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIHZlcnRleC9mcmFnbWVudCBzaGFk
ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDc1NTQ4NGYyY2Y3MGY3ZDE2ZTdmM2Q0NGQwZGQxMGJmMzBhZjRlNTgu
LjU0ZGZiMTI2YWI4ZTBjMDllMjg5YWE5NzE0NzUzNzJkZjNkNmE3ZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTIgQEAKKzIwMTktMTAtMDggIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNv
bT4KKworICAgICAgICBbV2ViQXV0aG5dIE1vdmUgdGhlIG1vY2sgdGVzdGluZyBlbnRyYW5jZSB0
byBJbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMjU2MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU5NzM3OTM+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZTo6Y3JlYXRl
TW9jayk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
b3JUcmFuc3BvcnRTZXJ2aWNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL01vY2svTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyOjpNb2NrQXV0aGVudGljYXRvck1hbmFnZXIpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tBdXRoZW50aWNhdG9y
TWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01v
Y2tIaWRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TW9ja0hpZENvbm5lY3Rpb246
OnNlbmQpOgorICAgICAgICAoV2ViS2l0OjpNb2NrSGlkQ29ubmVjdGlvbjo6cmVnaXN0ZXJEYXRh
UmVjZWl2ZWRDYWxsYmFja0ludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6TW9ja0hpZENvbm5l
Y3Rpb246OnBhcnNlUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tIaWRDb25uZWN0aW9u
OjpmZWVkUmVwb3J0cyk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tIaWRDb25uZWN0aW9uOjpzaG91
bGRDb250aW51ZUZlZWRSZXBvcnRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRTZXJ2aWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TW9ja0hpZFNlcnZpY2U6Ok1vY2tIaWRTZXJ2aWNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkU2VydmljZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1t
OgorICAgICAgICAoV2ViS2l0OjpNb2NrTG9jYWxDb25uZWN0aW9uOjpNb2NrTG9jYWxDb25uZWN0
aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9j
YWxTZXJ2aWNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2sv
TW9ja0xvY2FsU2VydmljZS5tbToKKyAgICAgICAgKFdlYktpdDo6TW9ja0xvY2FsU2VydmljZTo6
TW9ja0xvY2FsU2VydmljZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L01vY2svTW9ja05mY1NlcnZpY2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrTmZjU2VydmljZS5tbToKKyAgICAgICAgKFdlYktpdDo6TW9ja05mY1Nl
cnZpY2U6Ok1vY2tOZmNTZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6TW9ja05mY1NlcnZpY2U6
OnBsYXRmb3JtU3RhcnREaXNjb3ZlcnkpOgorICAgICAgICAoV2ViS2l0OjpNb2NrTmZjU2Vydmlj
ZTo6ZGV0ZWN0VGFncyBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL01vY2svTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oOiBSZW1vdmVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnNldE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisKIDIwMTktMTAtMDggIEFuZHkgRXN0ZXMgIDxhZXN0
ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEFkZCBhIGZhc3QgcGF0aCB0aGF0IGF2b2lk
cyBoaXQgdGVzdGluZyBkdXJpbmcgY29udGV4dCBtZW51IGludGVyYWN0aW9ucyBvbiBlbGVtZW50
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5k
ZXggZWY0MzQwYTYyODFiNDNhZTU5ZjU2NTkzNjI0NmUyYzMyMzMyOGU5Ni4uZjMyMDg1NWE1M2I2
ODhiZTNjMzA5NzYxODg4M2M2MzE1MDg0ZmFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xMDg5LDYgKzEwODksNyBAQCAkKFBST0pF
Q1RfRElSKS90ZXN0aW5nL01vY2tQYXltZW50QWRkcmVzcy5pZGwKICQoUFJPSkVDVF9ESVIpL3Rl
c3RpbmcvTW9ja1BheW1lbnRDb250YWN0RmllbGRzLmlkbAogJChQUk9KRUNUX0RJUikvdGVzdGlu
Zy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmlkbAogJChQUk9KRUNUX0RJUikvdGVzdGluZy9Nb2Nr
UGF5bWVudEVycm9yLmlkbAorJChQUk9KRUNUX0RJUikvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uLmlkbAogJChQUk9KRUNUX0RJUikvdGVzdGluZy9TZXJ2aWNlV29y
a2VySW50ZXJuYWxzLmlkbAogJChQUk9KRUNUX0RJUikvdGVzdGluZy9UeXBlQ29udmVyc2lvbnMu
aWRsCiAkKFBST0pFQ1RfRElSKS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmlkbApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCAwOTA5ZDdi
MWZiZmQ4NTJkMjZiZmIxYmY1YjFjYzEzNDY5MjliNGQ4Li4xNjJkNDRkODQ5MzMxNTVjMDEwNjU4
MTYyNjVhOGI0NzU0MmMwNzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTA1OSw2ICsxMDU5LDggQEAgJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNw
cAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNb2NrUGF5
bWVudENvb3JkaW5hdG9yLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTTW9ja1BheW1lbnRFcnJvci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTTW9ja1BheW1lbnRFcnJvci5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24uY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNb3VzZUV2ZW50LmNwcAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNb3VzZUV2ZW50LmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTW91c2VFdmVudEluaXQu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBjMGE0ZjAwNzRkMWE2MmE1N2I1
Y2RjOGM0NGRmMGY3YmYyNWI0MjE1Li44ZTc3ZTZkMGZhNTZmYTEzMGFiN2Q4YjI2ZjRiYTBlNDhl
Y2VjY2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTEwNzYsNiArMTA3Niw3
IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvTW9ja1BheW1l
bnRDb250YWN0RmllbGRzLmlkbCBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL01vY2tQYXltZW50
Q29vcmRpbmF0b3IuaWRsIFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvTW9ja1BheW1lbnRFcnJv
ci5pZGwgXAorICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRl
cm5hbHMuaWRsIFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvVHlwZUNvbnZlcnNpb25zLmlkbCBc
CiAgICAgJChXZWJDb3JlKS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmlkbCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXgg
MGJkZGVmNWI5ODE4ZDcwM2M0ZGE4M2VhNWY4OTU0ZjJiNzZkYTJjMy4uYTU5N2FjMTliNjNiODg4
YzEyMmY5MjgzYTdkY2EyZWY5NzRmZWUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtNTEsMjYgKzUxLDkgQEAKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9Mb2NrZXIuaD4KIAotI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQotI2luY2x1ZGUgIkpTQ3J5cHRv
S2V5LmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAotI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQotbmFtZXNwYWNlIHsKLXN0YXRpYyBpbmxpbmUg
dm9pZCBzZXRJc1dyYXBwaW5nUmVxdWlyZWRGb3JDcnlwdG9LZXkoVk0mIHZtLCBjb25zdCBKU1Zh
bHVlJiB2YWx1ZSkKLXsKLSAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVy
bjsKLSAgICBhdXRvKiBvYmogPSBhc09iamVjdCh2YWx1ZSk7Ci0gICAgaWYgKGF1dG8qIGtleSA9
IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQodm0sIG9iaikpCi0gICAgICAgIGtleS0+c2V0SXNXcmFw
cGluZ1JlcXVpcmVkKCk7Ci19Ci19Ci0jZW5kaWYKLQogSURCT2JqZWN0U3RvcmU6OklEQk9iamVj
dFN0b3JlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IElEQk9iamVjdFN0
b3JlSW5mbyYgaW5mbywgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogICAgIDogQWN0aXZl
RE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwgbV9pbmZvKGluZm8pCkBAIC0zNTYsOSArMzM5LDYg
QEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6cHV0T3JBZGQo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZQogICAgIGlmIChtX3RyYW5zYWN0aW9uLmlzUmVhZE9u
bHkoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFJlYWRvbmx5RXJyb3IsICJGYWlsZWQg
dG8gc3RvcmUgcmVjb3JkIGluIGFuIElEQk9iamVjdFN0b3JlOiBUaGUgdHJhbnNhY3Rpb24gaXMg
cmVhZC1vbmx5LiJfcyB9OwogCi0jaWYgRU5BQkxFKFdFQl9DUllQVE8pCi0gICAgc2V0SXNXcmFw
cGluZ1JlcXVpcmVkRm9yQ3J5cHRvS2V5KHZtLCB2YWx1ZSk7Ci0jZW5kaWYKICAgICBhdXRvIHNl
cmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCB2YWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IERhdGFDbG9uZUVycm9yLCAiRmFpbGVkIHRvIHN0b3JlIHJlY29yZCBpbiBh
biBJREJPYmplY3RTdG9yZTogQW4gb2JqZWN0IGNvdWxkIG5vdCBiZSBjbG9uZWQuIl9zIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRl
bnRpYWxDcmVhdGlvbk9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oCmluZGV4IDM3MmRmMWI5NGU4YmY2
NDAyMzMwZTU0NWVkNDc1NjgwYjc0MjNkYTUuLmQ4YzdiYmIzYzVkNzkyN2Y5MTVjZjRlZTY3MjBk
MjhkZmMwYzhjMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oCkBA
IC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3Iu
aCIKICNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsVHlwZS5oIgogI2luY2x1ZGUgIlVzZXJW
ZXJpZmljYXRpb25SZXF1aXJlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGll
ci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA3YTNhOWJkYWVmODczOTljMDhmOWIzZmIzMjdmMGY3NWM4NDk0ZTRjLi5lMzczYzgxOWE5YmQ1
MzNhYTFkMTE3NzFlYmEzYTQ4MGYzZjM5ZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzM4LDYgKzE3MzgsMTAgQEAKIAkJ
NTcxNTJCNkUyMUNEOTk1RDAwMEMzN0NBIC8qIFUyZkNvbW1hbmRDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcxNTJCNkMyMUNEOTk1
QzAwMEMzN0NBIC8qIFUyZkNvbW1hbmRDb25zdHJ1Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3MTUyQjdDMjFERDhCQTEwMDBDMzdDQSAv
KiBVMmZSZXNwb25zZUNvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTcxNTJCN0EyMUREOEJBMTAwMEMzN0NBIC8qIFUyZlJlc3BvbnNlQ29u
dmVydGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTcxNTJCODAyMUREQTU4MTAwMEMzN0NBIC8qIFdlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTUyQjdFMjFE
REE1ODEwMDBDMzdDQSAvKiBXZWJBdXRoZW50aWNhdGlvblV0aWxzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTcxNTYxMEIyMzRDMUI0OTAwOEZD
N0FCIC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTU2MTA4MjM0QzFCMzEwMDhGQzdB
QiAvKiBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggKi87IH07CisJCTU3MTU2
MTBDMjM0QzFDQTEwMDhGQzdBQiAvKiBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE1NjEw
ODIzNEMxQjMxMDA4RkM3QUIgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU3MTU2
MTE0MjM0QzdGRDYwMDhGQzdBQiAvKiBKU01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcx
NTYxMTEyMzRDN0ZCQzAwOEZDN0FCIC8qIEpTTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbi5jcHAgKi87IH07CisJCTU3MTU2MTE1MjM0QzdGREMwMDhGQzdBQiAvKiBKU01vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTU2MTEwMjM0QzdGQkMwMDhGQzdBQiAvKiBKU01vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCAqLzsgfTsKIAkJNTcxRjIxODkxREE1N0M1NDAw
NUM5RUZEIC8qIEpTU3VidGxlQ3J5cHRvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NzFGMjE4ODFEQTU3QzU0MDA1QzlFRkQgLyogSlNTdWJ0bGVDcnlw
dG8uaCAqLzsgfTsKIAkJNTcyMDkzRDMxRERDRUI5QTAwMzEwQUIwIC8qIENyeXB0b0FsZ29yaXRo
bUFlc0NiY0NmYlBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTcyMDkzRDIxRERDRUI5QTAwMzEwQUIwIC8qIENyeXB0b0FsZ29yaXRobUFlc0Ni
Y0NmYlBhcmFtcy5oICovOyB9OwogCQk1NzIxQTk4NzFFQ0U1M0IxMDA4MTI5NUEgLyogQ3J5cHRv
RGlnZXN0QWxnb3JpdGhtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NzIxQTk4NjFFQ0U1M0IxMDA4MTI5NUEgLyogQ3J5cHRvRGlnZXN0QWxnb3JpdGht
LmggKi87IH07CkBAIC04NjA1LDYgKzg2MDksMTAgQEAKIAkJNTcxNTJCN0IyMUREOEJBMTAwMEMz
N0NBIC8qIFUyZlJlc3BvbnNlQ29udmVydGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFUyZlJl
c3BvbnNlQ29udmVydGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcxNTJC
N0UyMUREQTU4MTAwMEMzN0NBIC8qIFdlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViQXV0aGVudGljYXRpb25VdGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NzE1MkI3RjIxRERBNTgxMDAwQzM3Q0EgLyogV2ViQXV0aGVudGljYXRpb25VdGlscy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTcxNTYxMDgyMzRDMUIzMTAwOEZDN0FCIC8qIE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1NzE1NjEwRDIzNEM3NDgxMDA4RkM3QUIgLyogTW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MTU2MTEw
MjM0QzdGQkMwMDhGQzdBQiAvKiBKU01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MTU2MTEx
MjM0QzdGQkMwMDhGQzdBQiAvKiBKU01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTcxRjIxODgxREE1N0M1NDAwNUM5RUZEIC8qIEpTU3VidGxlQ3J5cHRvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3VidGxlQ3J5cHRvLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTU3MUYyMThBMURBNTdDN0EwMDVDOUVGRCAvKiBKU1N1YnRsZUNyeXB0by5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1N1YnRsZUNyeXB0by5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MjA5M0QxMUREQ0VBNEIwMDMxMEFC
MCAvKiBBZXNDYmNDZmJQYXJhbXMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFlc0NiY0NmYlBhcmFtcy5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzg5Miw2ICsxNzkwMCw4IEBACiAJCQkJQTFDQkVG
NjMxRjlGMTEyOTAwMjhERTdDIC8qIE1vY2tQYXltZW50TWV0aG9kLmggKi8sCiAJCQkJQTE0MDYx
ODkxRTJFQ0EwQTAwMzJCMzRFIC8qIE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCAqLywKIAkJ
CQlBMTQwNjE4QTFFMkVDQTBBMDAzMkIzNEUgLyogTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQuaCAq
LywKKwkJCQk1NzE1NjEwODIzNEMxQjMxMDA4RkM3QUIgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbi5oICovLAorCQkJCTU3MTU2MTBEMjM0Qzc0ODEwMDhGQzdBQiAvKiBNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmlkbCAqLywKIAkJCQk0MTdGMEQ4MDFGRkVF
MTRGMDA4RUYzMDMgLyogU2VydmljZVdvcmtlckludGVybmFscy5jcHAgKi8sCiAJCQkJNDE3RjBE
N0UxRkZFRTE0RTAwOEVGMzAzIC8qIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCAqLywKIAkJCQk0
MTdGMEQ4MTFGRkVFMTUwMDA4RUYzMDMgLyogU2VydmljZVdvcmtlckludGVybmFscy5pZGwgKi8s
CkBAIC0xNzkzMiw2ICsxNzk0Miw4IEBACiAJCQkJQTE0NkQzMTgxRjk5QkNCQTAwRDI5MTk2IC8q
IEpTTW9ja1BheW1lbnRDb29yZGluYXRvci5oICovLAogCQkJCUExQkI4NUI0MjE1OUIzODkwMDY3
RTA3RCAvKiBKU01vY2tQYXltZW50RXJyb3IuY3BwICovLAogCQkJCUExQkI4NUI1MjE1OUIzOEEw
MDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJyb3IuaCAqLywKKwkJCQk1NzE1NjExMTIzNEM3RkJD
MDA4RkM3QUIgLyogSlNNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmNwcCAqLywK
KwkJCQk1NzE1NjExMDIzNEM3RkJDMDA4RkM3QUIgLyogSlNNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uLmggKi8sCiAJCQkJNDI3REE3MUIxMzczNURGQTAwN0M1N0ZCIC8qIEpTU2Vy
dmljZVdvcmtlckludGVybmFscy5jcHAgKi8sCiAJCQkJNDI3REE3MUMxMzczNURGQTAwN0M1N0ZC
IC8qIEpTU2VydmljZVdvcmtlckludGVybmFscy5oICovLAogCQkJCUVCRjUxMjFBMTY5NjQ5NkMw
MDU2QkQyNSAvKiBKU1R5cGVDb252ZXJzaW9ucy5jcHAgKi8sCkBAIC0yODQyNSw2ICsyODQzNyw3
IEBACiAJCQkJQTEwNEVDNUUyMjBBM0U0RTAwQ0JGNjdBIC8qIEpTTW9ja1BheW1lbnRDb250YWN0
RmllbGRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTQ2RDMxQjFGOTlCQ0ZCMDBEMjkxOTYgLyog
SlNNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUJCODVCOTIx
NTlCM0FFMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1NzE1NjExNTIzNEM3RkRDMDA4RkM3QUIgLyogSlNNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MjdEQTcxRTEzNzM1REZBMDA3QzU3RkIg
LyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFQkY1MTIx
RDE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNEQzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmggaW4gSGVhZGVy
cyAqLywKQEAgLTI4NDQyLDYgKzI4NDU1LDcgQEAKIAkJCQlBMUFGRURFNjFGOEJGRjZEMDA4NzAx
M0YgLyogTW9ja1BheW1lbnRDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFDQkVG
NjQxRjlGMTEyOTAwMjhERTdDIC8qIE1vY2tQYXltZW50TWV0aG9kLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBMTQwNjE4QzFFMkVDQTBBMDAzMkIzNEUgLyogTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTU3MTU2MTBCMjM0QzFCNDkwMDhGQzdBQiAvKiBNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQTVGM0I4
RDE2Q0MzM0QxMDA0NTVFQjAgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suaCBpbiBI
ZWFkZXJzICovLAogCQkJCUExNzYzRjNGMUUyMDUyMzQwMDFENThERSAvKiBXZWJBcmNoaXZlRHVt
cFN1cHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxODE1QzFGMTM4MzE5ODMwMDU3QUFBNCAv
KiBXZWJDb3JlVGVzdFN1cHBvcnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzEwMjEsNiArMzEwMzUs
NyBAQAogCQkJCTA3RUU3NkVGMUJFQTYxOTgwMEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGMkIwMTcxODIwNTQwNzAwRjJCNDI0IC8q
IE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYyQjAxOTE4
MjA1NDA3MDBGMkI0MjQgLyogTW9ja1RyYWNrcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTcxNTYx
MEMyMzRDMUNBMTAwOEZDN0FCIC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCUM2RDc0QUQ1MDlBQTI4MkUwMDBCMEE1MiAvKiBNb2RpZnlT
ZWxlY3Rpb25MaXN0TGV2ZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwOUEwMUZFMUUzRDBCREQw
MDZCMEQ0QyAvKiBNb2R1bGVGZXRjaEZhaWx1cmVLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
MzIwMUMxQTFGOEU4MjEzMDA3NkEwMzIgLyogTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmggaW4gSGVh
ZGVycyAqLywKQEAgLTMyOTg0LDYgKzMyOTk5LDcgQEAKIAkJCQlBMTA0RUM1RDIyMEEzRTRCMDBD
QkY2N0EgLyogSlNNb2NrUGF5bWVudENvbnRhY3RGaWVsZHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTE0NkQzMUExRjk5QkNGODAwRDI5MTk2IC8qIEpTTW9ja1BheW1lbnRDb29yZGluYXRvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUJCODVCODIxNTlCM0E0MDA2N0UwN0QgLyogSlNNb2Nr
UGF5bWVudEVycm9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU3MTU2MTE0MjM0QzdGRDYwMDhG
QzdBQiAvKiBKU01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDI3REE3MUQxMzczNURGQTAwN0M1N0ZCIC8qIEpTU2VydmljZVdvcmtlcklu
dGVybmFscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFQkY1MTIxQzE2OTY0OTZDMDA1NkJEMjUg
LyogSlNUeXBlQ29udmVyc2lvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RDMjZCNDAxNjBB
OENDNjAwMjY3NTdCIC8qIExlZ2FjeU1vY2tDRE0uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApp
bmRleCBkMzQzNmM2MGM5MmVkZjdjZDk1NzFiNzg1NTU2M2E3N2ZmYzFhZmYzLi4zYjAwMGI4ODEw
MDNkMmI0OTE1YjA4NDc4ZmJhYzk5MzIzMGY1YTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTE2Nyw5ICsxNjcs
NiBAQCBlbnVtIFNlcmlhbGl6YXRpb25UYWcgewogICAgIFJUQ0NlcnRpZmljYXRlVGFnID0gNDQs
CiAjZW5kaWYKICAgICBJbWFnZUJpdG1hcFRhZyA9IDQ1LAotI2lmIEVOQUJMRShXRUJfQ1JZUFRP
KQotICAgIFVud3JhcHBlZENyeXB0b0tleVRhZyA9IDQ2LAotI2VuZGlmCiAgICAgRXJyb3JUYWcg
PSAyNTUKIH07CiAKQEAgLTM1Myw3ICszNTAsNiBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
aW5nRGF0YUlzOEJpdEZsYWcgPSAweDgwMDAwMDAwOwogICogICAgfCBJbWFnZUJpdG1hcFRyYW5z
ZmVyVGFnIDx2YWx1ZTp1aW50MzJfdD4KICAqICAgIHwgUlRDQ2VydGlmaWNhdGVUYWcKICAqICAg
IHwgSW1hZ2VCaXRtYXBUYWcgPG9yaWdpbkNsZWFuOnVpbnQ4X3Q+IDxsb2dpY2FsV2lkdGg6aW50
MzJfdD4gPGxvZ2ljYWxIZWlnaHQ6aW50MzJfdD4gPHJlc29sdXRpb25TY2FsZTpkb3VibGU+IDxi
eXRlTGVuZ3RoOnVpbnQzMl90Pig8aW1hZ2VCeXRlRGF0YTp1aW50OF90PikKLSAqICAgIHwgVW53
cmFwcGVkQ3J5cHRvS2V5VGFnIDx1bndyYXBwZWRLZXlMZW5ndGg6dWludDMyX3Q+IDxmYWN0b3I6
Ynl0ZXt1bndyYXBwZWRLZXlMZW5ndGh9PgogICoKICAqIEluc2lkZSBjZXJ0aWZpY2F0ZSwgZGF0
YSBpcyBzZXJpYWxpemVkIGluIHRoaXMgZm9ybWF0IGFzIHBlciBzcGVjOgogICoKQEAgLTEwODcs
MTAgKzEwODMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogI2lmIEVOQUJMRShXRUJfQ1JZ
UFRPKQogICAgICAgICAgICAgaWYgKGF1dG8qIGtleSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQo
dm0sIG9iaikpIHsKLSAgICAgICAgICAgICAgICBpZiAoa2V5LT5pc1dyYXBwaW5nUmVxdWlyZWQo
KSkKLSAgICAgICAgICAgICAgICAgICAgd3JpdGUoQ3J5cHRvS2V5VGFnKTsKLSAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHdyaXRlKFVud3JhcHBlZENyeXB0b0tleVRh
Zyk7CisgICAgICAgICAgICAgICAgd3JpdGUoQ3J5cHRvS2V5VGFnKTsKICAgICAgICAgICAgICAg
ICBWZWN0b3I8dWludDhfdD4gc2VyaWFsaXplZEtleTsKICAgICAgICAgICAgICAgICBWZWN0b3I8
U3RyaW5nPiBkdW1teUJsb2JVUkxzOwogICAgICAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8TWVz
c2FnZVBvcnQ+PiBkdW1teU1lc3NhZ2VQb3J0czsKQEAgLTExMDUsMTQgKzEwOTgsMTAgQEAgcHJp
dmF0ZToKICNlbmRpZgogICAgICAgICAgICAgICAgICAgICBkdW1teUJsb2JVUkxzLCBzZXJpYWxp
emVkS2V5LCBTZXJpYWxpemF0aW9uQ29udGV4dDo6RGVmYXVsdCwgZHVtbXlTaGFyZWRCdWZmZXJz
KTsKICAgICAgICAgICAgICAgICByYXdLZXlTZXJpYWxpemVyLndyaXRlKGtleSk7Ci0gICAgICAg
ICAgICAgICAgaWYgKGtleS0+aXNXcmFwcGluZ1JlcXVpcmVkKCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHdyYXBwZWRLZXk7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICghd3JhcENyeXB0b0tleShtX2V4ZWMsIHNlcmlhbGl6ZWRLZXksIHdyYXBwZWRLZXkpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICB3
cml0ZSh3cmFwcGVkS2V5KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHdyaXRlKHNlcmlhbGl6ZWRLZXkpOworICAg
ICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiB3cmFwcGVkS2V5OworICAgICAgICAgICAgICAg
IGlmICghd3JhcENyeXB0b0tleShtX2V4ZWMsIHNlcmlhbGl6ZWRLZXksIHdyYXBwZWRLZXkpKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgd3JpdGUo
d3JhcHBlZEtleSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9
CiAjZW5kaWYKQEAgLTMxMDMsMjggKzMwOTIsNiBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgICAg
IGNhc2UgSW1hZ2VCaXRtYXBUYWc6CiAgICAgICAgICAgICByZXR1cm4gcmVhZEltYWdlQml0bWFw
KCk7Ci0jaWYgRU5BQkxFKFdFQl9DUllQVE8pCi0gICAgICAgIGNhc2UgVW53cmFwcGVkQ3J5cHRv
S2V5VGFnOiB7Ci0gICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gc2VyaWFsaXplZEtleTsKLSAg
ICAgICAgICAgIGlmICghcmVhZChzZXJpYWxpemVkS2V5KSkgewotICAgICAgICAgICAgICAgIGZh
aWwoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgSlNWYWx1ZSBjcnlwdG9LZXk7Ci0gICAgICAgICAgICBWZWN0b3I8UmVmUHRy
PE1lc3NhZ2VQb3J0Pj4gZHVtbXlNZXNzYWdlUG9ydHM7Ci0gICAgICAgICAgICBDbG9uZURlc2Vy
aWFsaXplciByYXdLZXlEZXNlcmlhbGl6ZXIobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgZHVtbXlN
ZXNzYWdlUG9ydHMsIG51bGxwdHIsIHsgfSwKLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAg
ICAgICAgICAgICAgbnVsbHB0ciwKLSNlbmRpZgotICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWRL
ZXkpOwotICAgICAgICAgICAgaWYgKCFyYXdLZXlEZXNlcmlhbGl6ZXIucmVhZENyeXB0b0tleShj
cnlwdG9LZXkpKSB7Ci0gICAgICAgICAgICAgICAgZmFpbCgpOwotICAgICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX2djQnVmZmVyLmFw
cGVuZFdpdGhDcmFzaE9uT3ZlcmZsb3coY3J5cHRvS2V5KTsKLSAgICAgICAgICAgIHJldHVybiBj
cnlwdG9LZXk7Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgbV9wdHItLTsgLy8gUHVzaCB0aGUgdGFnIGJhY2sKICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5LmggYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5LmgKaW5kZXggMzg2NWQyOTBlMzUyOTdjNzc3
OGVhOGZjMTk1MTcwNTZiNWViZDAxNy4uMGViYzU3MjA0NGY5MmYwOTliYTA1YzM0MmU5ZGU3MTE2
MjgxMTEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuaApAQCAtNzIsOCArNzIsNiBAQCBw
dWJsaWM6CiAgICAgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzQml0bWFwKCkgY29uc3QgeyBy
ZXR1cm4gbV91c2FnZXM7IH0KICAgICB2b2lkIHNldFVzYWdlc0JpdG1hcChDcnlwdG9LZXlVc2Fn
ZUJpdG1hcCB1c2FnZSkgeyBtX3VzYWdlcyA9IHVzYWdlOyB9OwogICAgIGJvb2wgYWxsb3dzKENy
eXB0b0tleVVzYWdlQml0bWFwIHVzYWdlKSBjb25zdCB7IHJldHVybiB1c2FnZSA9PSAobV91c2Fn
ZXMgJiB1c2FnZSk7IH0KLSAgICBib29sIGlzV3JhcHBpbmdSZXF1aXJlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNXcmFwcGluZ1JlcXVpcmVkOyB9Ci0gICAgdm9pZCBzZXRJc1dyYXBwaW5nUmVxdWly
ZWQoKSB7IG1faXNXcmFwcGluZ1JlcXVpcmVkID0gdHJ1ZTsgfQogCiAgICAgc3RhdGljIFZlY3Rv
cjx1aW50OF90PiByYW5kb21EYXRhKHNpemVfdCk7CiAKQEAgLTgyLDcgKzgwLDYgQEAgcHJpdmF0
ZToKICAgICBUeXBlIG1fdHlwZTsKICAgICBib29sIG1fZXh0cmFjdGFibGU7CiAgICAgQ3J5cHRv
S2V5VXNhZ2VCaXRtYXAgbV91c2FnZXM7Ci0gICAgYm9vbCBtX2lzV3JhcHBpbmdSZXF1aXJlZCB7
IGZhbHNlIH07CiB9OwogCiBpbmxpbmUgYXV0byBDcnlwdG9LZXk6OnR5cGUoKSBjb25zdCAtPiBU
eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCAw
ZmJlYzU0MDJkYjg0MTFjNDAzNjg5NWEwZmI5N2YyYmU2OGUxODI5Li4zOTdlMThjMmUyZDA4ZjZm
ZWRhZjA0ODhlOWM0ZjM3MmM5NzhhMzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgKQEAgLTIyMSw3ICsyMjEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXREYXRhYmFzZUNvbnRleHQoRGF0YWJhc2VDb250ZXh0Kik7CiAKICNpZiBFTkFCTEUoV0VCX0NS
WVBUTykKLSAgICAvLyBUaGVzZSB0d28gbWV0aG9kcyBhcmUgdXNlZCB3aGVuIENyeXB0b0tleXMg
YXJlIHNlcmlhbGl6ZWQgaW50byBJbmRleGVkREIuCisgICAgLy8gVGhlc2UgdHdvIG1ldGhvZHMg
YXJlIHVzZWQgd2hlbiBDcnlwdG9LZXlzIGFyZSBzZXJpYWxpemVkIGludG8gSW5kZXhlZERCLiBB
cyBhIHNpZGUgZWZmZWN0LCBpdCBpcyBhbHNvCisgICAgLy8gdXNlZCBmb3IgdGhpbmdzIHRoYXQg
dXRpbGl6ZSB0aGUgc2FtZSBzdHJ1Y3R1cmUgY2xvbmUgYWxnb3JpdGhtLCBmb3IgZXhhbXBsZSwg
bWVzc2FnZSBwYXNzaW5nIGJldHdlZW4KKyAgICAvLyB3b3JrZXIgYW5kIGRvY3VtZW50LgogICAg
IHZpcnR1YWwgYm9vbCB3cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBW
ZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXkpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgdW53cmFw
Q3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSwgVmVjdG9yPHVpbnQ4
X3Q+JiBrZXkpID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXgg
ZmRkYjE4NjgyYmU3ZTFmNjZhZWRhYWI2OGNiYmM0NDgwODI4MDQ2ZS4uMzUwNWQ0NDA1NDFjM2Y0
OWQ4NjY1YjQ1NjNiZWVmYWVmZjY0ZDQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5o
CkBAIC0xMTAsNiArMTEwLDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3Np
bmdQbHVnaW5zQ2FsbGJhY2s7CiBzdHJ1Y3QgQ29udGVudFJ1bGVMaXN0UmVzdWx0czsKIHN0cnVj
dCBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzOwogc3RydWN0IEdyYXBoaWNzRGV2aWNlQWRhcHRl
cjsKK3N0cnVjdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOwogc3RydWN0IFNo
YXJlRGF0YVdpdGhQYXJzZWRVUkw7CiBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7CiBzdHJ1Y3Qg
V2luZG93RmVhdHVyZXM7CkBAIC01MTAsNiArNTExLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgdXNlcklzSW50ZXJhY3RpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgdm9pZCBzZXRVc2VySXNJbnRlcmFjdGluZyhib29sKSB7IH0KIAorI2lmIEVOQUJMRShX
RUJfQVVUSE4pCisgICAgdmlydHVhbCB2b2lkIHNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24oY29uc3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYpIHsgfQor
I2VuZGlmCisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5DaHJvbWVDbGllbnQoKSA9IGRlZmF1
bHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGZmNDA5NjllZDY5
ZjUzMjkxMWRjNmU0Zjc2YzJjNDE0YzMzODMxYWEuLjZkYTFjZjNhMTMxZWQ4NWQwMzM0NzM4NGRj
ZTdhZGJhNDRiZWVmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTUy
MzQsNCArNTIzNCwxNyBAQCB2b2lkIEludGVybmFsczo6YWRkUHJlZmV0Y2hMb2FkRXZlbnRMaXN0
ZW5lcihIVE1MTGlua0VsZW1lbnQmIGxpbmssIFJlZlB0cjxFdmVudAogICAgIH0KIH0KIAorI2lm
IEVOQUJMRShXRUJfQVVUSE4pCit2b2lkIEludGVybmFsczo6c2V0TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbihjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
JiBjb25maWd1cmF0aW9uKQoreworICAgIGF1dG8qIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50
KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8qIHBhZ2Ug
PSBkb2N1bWVudC0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAg
IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24oY29uZmlndXJhdGlvbik7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggODE2NTk1YzVmNjM5ZjA5NGMwY2E2
ZDZlZTNjY2M3MDRkYTdjM2RlNS4uYzEzNGRlZmRhYWYxNDBiYTk3ZDNkZTQ1MDBjNDk3NGFlNGM1
NTZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xMTIsNiArMTEyLDggQEAg
Y2xhc3MgU2VydmljZVdvcmtlcjsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3Mg
RE9NUHJvbWlzZURlZmVycmVkOwogCitzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbjsKKwogY2xhc3MgSW50ZXJuYWxzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8SW50
ZXJuYWxzPiwgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcgogI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCiAgICAgLCBwcml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVy
CkBAIC04ODQsNiArODg2LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkUHJlZmV0Y2hMb2Fk
RXZlbnRMaXN0ZW5lcihIVE1MTGlua0VsZW1lbnQmLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJik7
CiAKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIHZvaWQgc2V0TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbihjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
Jik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbHMoRG9jdW1lbnQm
KTsKICAgICBEb2N1bWVudCogY29udGV4dERvY3VtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwKaW5kZXggNDY4ZWYyMzFkNzRlMTk4NjVjMDQ5NDNiMjdjMjY0YzYx
NmVhZmI5YS4uNGUzYTQxMmExNGM4MmFiNDJjMzIyNDU4OWQwMjY4OGNkNTZhZTA0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNzk0LDQgKzc5NCw2IEBAIGVudW0gQ29t
cG9zaXRpbmdQb2xpY3kgewogICAgIFRleHRJbmRpY2F0b3JJbmZvIHRleHRJbmRpY2F0b3JGb3JS
YW5nZShSYW5nZSByYW5nZSwgVGV4dEluZGljYXRvck9wdGlvbnMgb3B0aW9ucyk7CiAKICAgICB2
b2lkIGFkZFByZWZldGNoTG9hZEV2ZW50TGlzdGVuZXIoSFRNTExpbmtFbGVtZW50IGxpbmssIEV2
ZW50TGlzdGVuZXI/IGNhbGxiYWNrKTsKKworICAgIFtDb25kaXRpb25hbD1XRUJfQVVUSE5dIHZv
aWQgc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzQ1MGYyNTY3NmFjMTI3YzYzNDljZmVjNmU5YTBmYzU2MzRkZTdlNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsMjkzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiB7CisgICAg
ZW51bSBjbGFzcyBIaWRTdGFnZSA6IGJvb2wgeworICAgICAgICBJbmZvLAorICAgICAgICBSZXF1
ZXN0CisgICAgfTsKKworICAgIGVudW0gY2xhc3MgSGlkU3ViU3RhZ2UgOiBib29sIHsKKyAgICAg
ICAgSW5pdCwKKyAgICAgICAgTXNnCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgSGlkRXJyb3Ig
OiB1aW50OF90IHsKKyAgICAgICAgU3VjY2VzcywKKyAgICAgICAgRGF0YU5vdFNlbnQsCisgICAg
ICAgIEVtcHR5UmVwb3J0LAorICAgICAgICBXcm9uZ0NoYW5uZWxJZCwKKyAgICAgICAgTWFsaWNp
b3VzUGF5bG9hZCwKKyAgICAgICAgVW5zdXBwb3J0ZWRPcHRpb25zLAorICAgICAgICBXcm9uZ05v
bmNlCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgTmZjRXJyb3IgOiB1aW50OF90IHsKKyAgICAg
ICAgU3VjY2VzcywKKyAgICAgICAgTm9UYWdzLAorICAgICAgICBXcm9uZ1RhZ1R5cGUsCisgICAg
ICAgIE5vQ29ubmVjdGlvbnMsCisgICAgICAgIE1hbGljaW91c1BheWxvYWQKKyAgICB9OworCisg
ICAgc3RydWN0IExvY2FsQ29uZmlndXJhdGlvbiB7CisgICAgICAgIGJvb2wgYWNjZXB0QXV0aGVu
dGljYXRpb24geyBmYWxzZSB9OworICAgICAgICBib29sIGFjY2VwdEF0dGVzdGF0aW9uIHsgZmFs
c2UgfTsKKyAgICAgICAgU3RyaW5nIHByaXZhdGVLZXlCYXNlNjQ7CisgICAgICAgIFN0cmluZyB1
c2VyQ2VydGlmaWNhdGVCYXNlNjQ7CisgICAgICAgIFN0cmluZyBpbnRlcm1lZGlhdGVDQUNlcnRp
ZmljYXRlQmFzZTY0OworICAgICAgICBTdHJpbmcgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDsK
KworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7CisgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxM
b2NhbENvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJik7CisgICAgfTsKKworICAgIHN0cnVj
dCBIaWRDb25maWd1cmF0aW9uIHsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gcGF5bG9hZEJhc2U2
NDsKKyAgICAgICAgSGlkU3RhZ2Ugc3RhZ2UgeyBIaWRTdGFnZTo6SW5mbyB9OworICAgICAgICBI
aWRTdWJTdGFnZSBzdWJTdGFnZSB7IEhpZFN1YlN0YWdlOjpJbml0IH07CisgICAgICAgIEhpZEVy
cm9yIGVycm9yIHsgSGlkRXJyb3I6OlN1Y2Nlc3MgfTsKKyAgICAgICAgYm9vbCBpc1UyZiB7IGZh
bHNlIH07CisgICAgICAgIGJvb2wga2VlcEFsaXZlIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBm
YXN0RGF0YUFycml2YWwgeyBmYWxzZSB9OworICAgICAgICBib29sIGNvbnRpbnVlQWZ0ZXJFcnJv
ckRhdGEgeyBmYWxzZSB9OworICAgICAgICBib29sIGNhbkRvd25ncmFkZSB7IGZhbHNlIH07CisK
KyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SGlk
Q29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB9OworCisgICAgc3RydWN0IE5m
Y0NvbmZpZ3VyYXRpb24geworICAgICAgICBOZmNFcnJvciBlcnJvciB7IE5mY0Vycm9yOjpTdWNj
ZXNzIH07CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBheWxvYWRCYXNlNjQ7CisgICAgICAgIGJv
b2wgbXVsdGlwbGVUYWdzIHsgZmFsc2UgfTsKKworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxOZmNDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2Rl
ciYpOworICAgIH07CisKKyAgICBib29sIHNpbGVudEZhaWx1cmUgeyBmYWxzZSB9OworICAgIE9w
dGlvbmFsPExvY2FsQ29uZmlndXJhdGlvbj4gbG9jYWw7CisgICAgT3B0aW9uYWw8SGlkQ29uZmln
dXJhdGlvbj4gaGlkOworICAgIE9wdGlvbmFsPE5mY0NvbmZpZ3VyYXRpb24+IG5mYzsKKworICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPGNs
YXNzIEVuY29kZXI+Cit2b2lkIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Okxv
Y2FsQ29uZmlndXJhdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAg
ZW5jb2RlciA8PCBhY2NlcHRBdXRoZW50aWNhdGlvbiA8PCBhY2NlcHRBdHRlc3RhdGlvbiA8PCBw
cml2YXRlS2V5QmFzZTY0IDw8IHVzZXJDZXJ0aWZpY2F0ZUJhc2U2NCA8PCBpbnRlcm1lZGlhdGVD
QUNlcnRpZmljYXRlQmFzZTY0IDw8IHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ7Cit9CisKK3Rl
bXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uOjpMb2NhbENvbmZpZ3VyYXRpb24+IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb246OkxvY2FsQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7
CisgICAgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TG9jYWxDb25maWd1cmF0
aW9uIHJlc3VsdDsKKworICAgIE9wdGlvbmFsPGJvb2w+IGFjY2VwdEF1dGhlbnRpY2F0aW9uOwor
ICAgIGRlY29kZXIgPj4gYWNjZXB0QXV0aGVudGljYXRpb247CisgICAgaWYgKCFhY2NlcHRBdXRo
ZW50aWNhdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXN1bHQuYWNj
ZXB0QXV0aGVudGljYXRpb24gPSAqYWNjZXB0QXV0aGVudGljYXRpb247CisKKyAgICBPcHRpb25h
bDxib29sPiBhY2NlcHRBdHRlc3RhdGlvbjsKKyAgICBkZWNvZGVyID4+IGFjY2VwdEF0dGVzdGF0
aW9uOworICAgIGlmICghYWNjZXB0QXR0ZXN0YXRpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmVzdWx0LmFjY2VwdEF0dGVzdGF0aW9uID0gKmFjY2VwdEF0dGVzdGF0aW9u
OworCisgICAgT3B0aW9uYWw8U3RyaW5nPiBwcml2YXRlS2V5QmFzZTY0OworICAgIGRlY29kZXIg
Pj4gcHJpdmF0ZUtleUJhc2U2NDsKKyAgICBpZiAoIXByaXZhdGVLZXlCYXNlNjQpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVzdWx0LnByaXZhdGVLZXlCYXNlNjQgPSBXVEZN
b3ZlKCpwcml2YXRlS2V5QmFzZTY0KTsKKworICAgIE9wdGlvbmFsPFN0cmluZz4gdXNlckNlcnRp
ZmljYXRlQmFzZTY0OworICAgIGRlY29kZXIgPj4gdXNlckNlcnRpZmljYXRlQmFzZTY0OworICAg
IGlmICghdXNlckNlcnRpZmljYXRlQmFzZTY0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJlc3VsdC51c2VyQ2VydGlmaWNhdGVCYXNlNjQgPSBXVEZNb3ZlKCp1c2VyQ2VydGlm
aWNhdGVCYXNlNjQpOworCisgICAgT3B0aW9uYWw8U3RyaW5nPiBpbnRlcm1lZGlhdGVDQUNlcnRp
ZmljYXRlQmFzZTY0OworICAgIGRlY29kZXIgPj4gaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJh
c2U2NDsKKyAgICBpZiAoIWludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVzdWx0LmludGVybWVkaWF0ZUNBQ2VydGlmaWNh
dGVCYXNlNjQgPSBXVEZNb3ZlKCppbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0KTsKKwor
ICAgIE9wdGlvbmFsPFN0cmluZz4gcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDsKKyAgICBkZWNv
ZGVyID4+IHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ7CisgICAgaWYgKCFwcmVmZXJyZWRVc2Vy
aGFuZGxlQmFzZTY0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJlc3VsdC5w
cmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0ID0gV1RGTW92ZSgqcHJlZmVycmVkVXNlcmhhbmRsZUJh
c2U2NCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
Pgordm9pZCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRDb25maWd1cmF0
aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHBh
eWxvYWRCYXNlNjQgPDwgc3RhZ2UgPDwgc3ViU3RhZ2UgPDwgZXJyb3IgPDwgaXNVMmYgPDwga2Vl
cEFsaXZlIDw8IGZhc3REYXRhQXJyaXZhbCA8PCBjb250aW51ZUFmdGVyRXJyb3JEYXRhIDw8IGNh
bkRvd25ncmFkZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENvbmZpZ3VyYXRpb24+IE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENvbmZpZ3VyYXRpb246OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQoreworICAgIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246
OkhpZENvbmZpZ3VyYXRpb24gcmVzdWx0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
LnBheWxvYWRCYXNlNjQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGVFbnVtKHJlc3VsdC5zdGFnZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LnN1YlN0YWdlKSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShy
ZXN1bHQuZXJyb3IpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LmlzVTJmKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5rZWVwQWxpdmUpKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmZhc3REYXRh
QXJyaXZhbCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQuY29udGludWVBZnRlckVycm9yRGF0YSkpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2FuRG93bmdyYWRl
KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
Cit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uOjpOZmNDb25maWd1cmF0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKK3sKKyAgICBlbmNvZGVyIDw8IGVycm9yIDw8IHBheWxvYWRCYXNlNjQgPDwgbXVsdGlwbGVU
YWdzOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8TW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29uZmlndXJhdGlvbj4gTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit7CisgICAgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29u
ZmlndXJhdGlvbiByZXN1bHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LmVy
cm9yKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5wYXlsb2FkQmFzZTY0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tdWx0aXBsZVRhZ3MpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RlbXBsYXRlPGNs
YXNzIEVuY29kZXI+Cit2b2lkIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgc2lsZW50RmFp
bHVyZSA8PCBsb2NhbCA8PCBoaWQgPDwgbmZjOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PgorT3B0aW9uYWw8TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbj4gTW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7Cisg
ICAgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiByZXN1bHQ7CisKKyAgICBPcHRp
b25hbDxib29sPiBzaWxlbnRGYWlsdXJlOworICAgIGRlY29kZXIgPj4gc2lsZW50RmFpbHVyZTsK
KyAgICBpZiAoIXNpbGVudEZhaWx1cmUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmVzdWx0LnNpbGVudEZhaWx1cmUgPSAqc2lsZW50RmFpbHVyZTsKKworICAgIE9wdGlvbmFs
PE9wdGlvbmFsPExvY2FsQ29uZmlndXJhdGlvbj4+IGxvY2FsOworICAgIGRlY29kZXIgPj4gbG9j
YWw7CisgICAgaWYgKCFsb2NhbCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBy
ZXN1bHQubG9jYWwgPSBXVEZNb3ZlKCpsb2NhbCk7CisKKyAgICBPcHRpb25hbDxPcHRpb25hbDxI
aWRDb25maWd1cmF0aW9uPj4gaGlkOworICAgIGRlY29kZXIgPj4gaGlkOworICAgIGlmICghaGlk
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJlc3VsdC5oaWQgPSBXVEZNb3Zl
KCpoaWQpOworCisgICAgT3B0aW9uYWw8T3B0aW9uYWw8TmZjQ29uZmlndXJhdGlvbj4+IG5mYzsK
KyAgICBkZWNvZGVyID4+IG5mYzsKKyAgICBpZiAoIW5mYykKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXN1bHQubmZjID0gV1RGTW92ZSgqbmZjKTsKKworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisK
K3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbjo6SGlkU3RhZ2U+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFs
dWVzPAorICAgICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
OjpIaWRTdGFnZSwKKyAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbjo6SGlkU3RhZ2U6OkluZm8sCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZFN0YWdlOjpSZXF1ZXN0CisgICAgPjsKK307CisKK3Rl
bXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbjo6SGlkU3ViU3RhZ2U+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFs
dWVzPAorICAgICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
OjpIaWRTdWJTdGFnZSwKKyAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbjo6SGlkU3ViU3RhZ2U6OkluaXQsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZFN1YlN0YWdlOjpNc2cKKyAgICA+OworfTsK
KwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uOjpIaWRFcnJvcj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1W
YWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b246OkhpZEVycm9yLAorICAgICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uOjpIaWRFcnJvcjo6U3VjY2VzcywKKyAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkRXJyb3I6OkRhdGFOb3RTZW50LAorICAgICAg
ICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRFcnJvcjo6
RW1wdHlSZXBvcnQsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb246OkhpZEVycm9yOjpXcm9uZ0NoYW5uZWxJZCwKKyAgICAgICAgV2ViQ29yZTo6TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkRXJyb3I6Ok1hbGljaW91c1BheWxv
YWQsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246
OkhpZEVycm9yOjpVbnN1cHBvcnRlZE9wdGlvbnMsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZEVycm9yOjpXcm9uZ05vbmNlCisgICAgPjsK
K307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjRXJyb3I+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBF
bnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uOjpOZmNFcnJvciwKKyAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbjo6TmZjRXJyb3I6OlN1Y2Nlc3MsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mY0Vycm9yOjpOb1RhZ3MsCisgICAgICAg
IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mY0Vycm9yOjpX
cm9uZ1RhZ1R5cGUsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb246Ok5mY0Vycm9yOjpOb0Nvbm5lY3Rpb25zLAorICAgICAgICBXZWJDb3JlOjpNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmNFcnJvcjo6TWFsaWNpb3VzUGF5bG9h
ZAorICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZGViODYxY2M5
ZTZjNGM2MjdhMDczMmQ3YWU2YTc0NTY3OWE2ZmRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmlkbApA
QCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVU
SE4sCitdIGVudW0gTW9ja0hpZFN0YWdlIHsKKyAgICAiaW5mbyIsCisgICAgInJlcXVlc3QiCit9
OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVVEhOLAorXSBlbnVtIE1vY2tIaWRTdWJTdGFn
ZSB7CisgICAgImluaXQiLAorICAgICJtc2ciCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VC
X0FVVEhOLAorXSBlbnVtIE1vY2tIaWRFcnJvciB7CisgICAgInN1Y2Nlc3MiLAorICAgICJkYXRh
LW5vdC1zZW50IiwKKyAgICAiZW1wdHktcmVwb3J0IiwKKyAgICAid3JvbmctY2hhbm5lbC1pZCIs
CisgICAgIm1hbGljaW91cy1wYXlsb2FkIiwKKyAgICAidW5zdXBwb3J0ZWQtb3B0aW9ucyIsCisg
ICAgIndyb25nLW5vbmNlIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVVRITiwKK10g
ZW51bSBNb2NrTmZjRXJyb3IgeworICAgICJzdWNjZXNzIiwKKyAgICAibm8tdGFncyIsCisgICAg
Indyb25nLXRhZy10eXBlIiwKKyAgICAibm8tY29ubmVjdGlvbnMiLAorICAgICJtYWxpY2lvdXMt
cGF5bG9hZCIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVUSE4sCitdIGRpY3Rpb25h
cnkgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiB7CisgICAgYm9vbGVhbiBzaWxl
bnRGYWlsdXJlID0gZmFsc2U7CisgICAgTW9ja0xvY2FsQ29uZmlndXJhdGlvbiBsb2NhbDsKKyAg
ICBNb2NrSGlkQ29uZmlndXJhdGlvbiBoaWQ7CisgICAgTW9ja05mY0NvbmZpZ3VyYXRpb24gbmZj
OworfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVVRITiwKK10gZGljdGlvbmFyeSBNb2Nr
TG9jYWxDb25maWd1cmF0aW9uIHsKKyAgICBib29sZWFuIGFjY2VwdEF1dGhlbnRpY2F0aW9uID0g
ZmFsc2U7CisgICAgYm9vbGVhbiBhY2NlcHRBdHRlc3RhdGlvbiA9IGZhbHNlOworICAgIERPTVN0
cmluZyBwcml2YXRlS2V5QmFzZTY0OworICAgIERPTVN0cmluZyB1c2VyQ2VydGlmaWNhdGVCYXNl
NjQ7CisgICAgRE9NU3RyaW5nIGludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQ7CisgICAg
RE9NU3RyaW5nIHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ7Cit9OworCitbCisgICAgQ29uZGl0
aW9uYWw9V0VCX0FVVEhOLAorXSBkaWN0aW9uYXJ5IE1vY2tIaWRDb25maWd1cmF0aW9uIHsKKyAg
ICBzZXF1ZW5jZTxET01TdHJpbmc+IHBheWxvYWRCYXNlNjQ7CisgICAgTW9ja0hpZFN0YWdlIHN0
YWdlID0gImluZm8iOworICAgIE1vY2tIaWRTdWJTdGFnZSBzdWJTdGFnZSA9ICJpbml0IjsKKyAg
ICBNb2NrSGlkRXJyb3IgZXJyb3IgPSAic3VjY2VzcyI7CisgICAgYm9vbGVhbiBpc1UyZiA9IGZh
bHNlOworICAgIGJvb2xlYW4ga2VlcEFsaXZlID0gZmFsc2U7CisgICAgYm9vbGVhbiBmYXN0RGF0
YUFycml2YWwgPSBmYWxzZTsKKyAgICBib29sZWFuIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEgPSBm
YWxzZTsKKyAgICBib29sZWFuIGNhbkRvd25ncmFkZSA9IGZhbHNlOworfTsKKworWworICAgIENv
bmRpdGlvbmFsPVdFQl9BVVRITiwKK10gZGljdGlvbmFyeSBNb2NrTmZjQ29uZmlndXJhdGlvbiB7
CisgICAgTW9ja05mY0Vycm9yIGVycm9yID0gInN1Y2Nlc3MiOworICAgIHNlcXVlbmNlPERPTVN0
cmluZz4gcGF5bG9hZEJhc2U2NDsKKyAgICBib29sZWFuIG11bHRpcGxlVGFncyA9IGZhbHNlOwor
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuY3BwCmluZGV4IDlkN2ZhN2QzN2M2NmExZjJkOWVjNDhjOTdlNTFiYzZmZDcw
YTc3YTQuLmI1NTY5Njg3YzVlODYzZjg0MGZkYmQyMDU4ODk5NjViYmU3YjkyM2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNs
dWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIKLSNpbmNsdWRlICJNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNz
LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tEaWN0aW9uYXJ5LmgiCkBA
IC00Myw2ICs0Miw3IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFSZWNvcmQuaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg+CiAjaW5j
bHVkZSA8d3RmL0NhbGxiYWNrQWdncmVnYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIApA
QCAtNjU4LDEwOCArNjU4LDYgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVDbGVhckFsbERldmlj
ZU9yaWVudGF0aW9uUGVybWlzc2lvbnMoV0tXZWJzaXRlRGF0YVN0b3JlUmUKICNlbmRpZgogfQog
Ci12b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tEaWN0aW9uYXJ5UmVm
IGNvbmZpZ3VyYXRpb25SZWYpCi17Ci0jaWYgRU5BQkxFKFdFQl9BVVRITikKLSAgICBXZWJLaXQ6
Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKLQotICAg
IGlmIChhdXRvIHNpbGVudEZhaWx1cmVSZWYgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdL
RGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoY29uZmlndXJhdGlvblJlZiwgYWRvcHRXSyhXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2lsZW50RmFpbHVyZSIpKS5nZXQoKSkpKQotICAgICAg
ICBjb25maWd1cmF0aW9uLnNpbGVudEZhaWx1cmUgPSBXS0Jvb2xlYW5HZXRWYWx1ZShzaWxlbnRG
YWlsdXJlUmVmKTsKLQotICAgIGlmIChhdXRvIGxvY2FsUmVmID0gc3RhdGljX2Nhc3Q8V0tEaWN0
aW9uYXJ5UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGNvbmZpZ3VyYXRpb25SZWYsIGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkxvY2FsIikpLmdldCgpKSkpIHsK
LSAgICAgICAgV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpMb2Nh
bCBsb2NhbDsKLSAgICAgICAgbG9jYWwuYWNjZXB0QXV0aGVudGljYXRpb24gPSBXS0Jvb2xlYW5H
ZXRWYWx1ZShzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JL
ZXkobG9jYWxSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkFjY2Vw
dEF1dGhlbnRpY2F0aW9uIikpLmdldCgpKSkpOwotICAgICAgICBsb2NhbC5hY2NlcHRBdHRlc3Rh
dGlvbiA9IFdLQm9vbGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0
aW9uYXJ5R2V0SXRlbUZvcktleShsb2NhbFJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiQWNjZXB0QXR0ZXN0YXRpb24iKSkuZ2V0KCkpKSk7Ci0gICAgICAgIGlmIChs
b2NhbC5hY2NlcHRBdHRlc3RhdGlvbikgewotICAgICAgICAgICAgbG9jYWwucHJpdmF0ZUtleUJh
c2U2NCA9IFdlYktpdDo6dG9JbXBsKHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25h
cnlHZXRJdGVtRm9yS2V5KGxvY2FsUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJQcml2YXRlS2V5QmFzZTY0IikpLmdldCgpKSkpLT5zdHJpbmcoKTsKLSAgICAgICAg
ICAgIGxvY2FsLnVzZXJDZXJ0aWZpY2F0ZUJhc2U2NCA9IFdlYktpdDo6dG9JbXBsKHN0YXRpY19j
YXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGxvY2FsUmVmLCBhZG9w
dFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJVc2VyQ2VydGlmaWNhdGVCYXNlNjQi
KSkuZ2V0KCkpKSktPnN0cmluZygpOwotICAgICAgICAgICAgbG9jYWwuaW50ZXJtZWRpYXRlQ0FD
ZXJ0aWZpY2F0ZUJhc2U2NCA9IFdlYktpdDo6dG9JbXBsKHN0YXRpY19jYXN0PFdLU3RyaW5nUmVm
PihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGxvY2FsUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJJbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0IikpLmdl
dCgpKSkpLT5zdHJpbmcoKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoYXV0byBwcmVmZXJyZWRV
c2VyaGFuZGxlQmFzZTY0UmVmID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFy
eUdldEl0ZW1Gb3JLZXkobG9jYWxSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIlByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQiKSkuZ2V0KCkpKSkKLSAgICAgICAgICAg
IGxvY2FsLnByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQgPSBXZWJLaXQ6OnRvSW1wbChwcmVmZXJy
ZWRVc2VyaGFuZGxlQmFzZTY0UmVmKS0+c3RyaW5nKCk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24u
bG9jYWwgPSBXVEZNb3ZlKGxvY2FsKTsKLSAgICB9Ci0KLSAgICBpZiAoYXV0byBoaWRSZWYgPSBz
dGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoY29u
ZmlndXJhdGlvblJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSGlk
IikpLmdldCgpKSkpIHsKLSAgICAgICAgV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uOjpIaWQgaGlkOwotCi0gICAgICAgIGF1dG8gc3RhZ2UgPSBXZWJLaXQ6OnRvSW1w
bChzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShoaWRS
ZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlN0YWdlIikpLmdldCgp
KSkpLT5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHN0YWdlID09ICJpbmZvIikKLSAgICAgICAgICAg
IGhpZC5zdGFnZSA9IFdlYktpdDo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6
SGlkOjpTdGFnZTo6SW5mbzsKLSAgICAgICAgZWxzZSBpZiAoc3RhZ2UgPT0gInJlcXVlc3QiKQot
ICAgICAgICAgICAgaGlkLnN0YWdlID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uOjpIaWQ6OlN0YWdlOjpSZXF1ZXN0OwotCi0gICAgICAgIGF1dG8gc3ViU3RhZ2Ug
PSBXZWJLaXQ6OnRvSW1wbChzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0
SXRlbUZvcktleShoaWRSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IlN1YlN0YWdlIikpLmdldCgpKSkpLT5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHN1YlN0YWdlID09
ICJpbml0IikKLSAgICAgICAgICAgIGhpZC5zdWJTdGFnZSA9IFdlYktpdDo6TW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpTdWJTdGFnZTo6SW5pdDsKLSAgICAgICAgZWxz
ZSBpZiAoc3ViU3RhZ2UgPT0gIm1zZyIpCi0gICAgICAgICAgICBoaWQuc3ViU3RhZ2UgPSBXZWJL
aXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZDo6U3ViU3RhZ2U6Ok1z
ZzsKLQotICAgICAgICBhdXRvIGVycm9yID0gV2ViS2l0Ojp0b0ltcGwoc3RhdGljX2Nhc3Q8V0tT
dHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaGlkUmVmLCBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFcnJvciIpKS5nZXQoKSkpKS0+c3RyaW5nKCk7Ci0g
ICAgICAgIGlmIChlcnJvciA9PSAic3VjY2VzcyIpCi0gICAgICAgICAgICBoaWQuZXJyb3IgPSBX
ZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZDo6RXJyb3I6OlN1
Y2Nlc3M7Ci0gICAgICAgIGVsc2UgaWYgKGVycm9yID09ICJkYXRhLW5vdC1zZW50IikKLSAgICAg
ICAgICAgIGhpZC5lcnJvciA9IFdlYktpdDo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbjo6SGlkOjpFcnJvcjo6RGF0YU5vdFNlbnQ7Ci0gICAgICAgIGVsc2UgaWYgKGVycm9yID09
ICJlbXB0eS1yZXBvcnQiKQotICAgICAgICAgICAgaGlkLmVycm9yID0gV2ViS2l0OjpNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OkVycm9yOjpFbXB0eVJlcG9ydDsKLSAg
ICAgICAgZWxzZSBpZiAoZXJyb3IgPT0gIndyb25nLWNoYW5uZWwtaWQiKQotICAgICAgICAgICAg
aGlkLmVycm9yID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpI
aWQ6OkVycm9yOjpXcm9uZ0NoYW5uZWxJZDsKLSAgICAgICAgZWxzZSBpZiAoZXJyb3IgPT0gIm1h
bGljaW91cy1wYXlsb2FkIikKLSAgICAgICAgICAgIGhpZC5lcnJvciA9IFdlYktpdDo6TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpFcnJvcjo6TWFsaWNpb3VzUGF5bG9h
ZDsKLSAgICAgICAgZWxzZSBpZiAoZXJyb3IgPT0gInVuc3VwcG9ydGVkLW9wdGlvbnMiKQotICAg
ICAgICAgICAgaGlkLmVycm9yID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uOjpIaWQ6OkVycm9yOjpVbnN1cHBvcnRlZE9wdGlvbnM7Ci0gICAgICAgIGVsc2UgaWYg
KGVycm9yID09ICJ3cm9uZy1ub25jZSIpCi0gICAgICAgICAgICBoaWQuZXJyb3IgPSBXZWJLaXQ6
Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZDo6RXJyb3I6Oldyb25nTm9u
Y2U7Ci0KLSAgICAgICAgaWYgKGF1dG8gcGF5bG9hZEJhc2U2NCA9IHN0YXRpY19jYXN0PFdLQXJy
YXlSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaGlkUmVmLCBhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJQYXlsb2FkQmFzZTY0IikpLmdldCgpKSkpCi0gICAgICAg
ICAgICBoaWQucGF5bG9hZEJhc2U2NCA9IFdlYktpdDo6dG9JbXBsKHBheWxvYWRCYXNlNjQpLT50
b1N0cmluZ1ZlY3RvcigpOwotCi0gICAgICAgIGlmIChhdXRvIGlzVTJmID0gc3RhdGljX2Nhc3Q8
V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGhpZFJlZiwgYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSXNVMmYiKSkuZ2V0KCkpKSkKLSAgICAgICAg
ICAgIGhpZC5pc1UyZiA9IFdLQm9vbGVhbkdldFZhbHVlKGlzVTJmKTsKLQotICAgICAgICBpZiAo
YXV0byBrZWVwQWxpdmUgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdl
dEl0ZW1Gb3JLZXkoaGlkUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJLZWVwQWxpdmUiKSkuZ2V0KCkpKSkKLSAgICAgICAgICAgIGhpZC5rZWVwQWxpdmUgPSBXS0Jv
b2xlYW5HZXRWYWx1ZShrZWVwQWxpdmUpOwotCi0gICAgICAgIGlmIChhdXRvIGZhc3REYXRhQXJy
aXZhbCA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktl
eShoaWRSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkZhc3REYXRh
QXJyaXZhbCIpKS5nZXQoKSkpKQotICAgICAgICAgICAgaGlkLmZhc3REYXRhQXJyaXZhbCA9IFdL
Qm9vbGVhbkdldFZhbHVlKGZhc3REYXRhQXJyaXZhbCk7Ci0KLSAgICAgICAgaWYgKGF1dG8gY29u
dGludWVBZnRlckVycm9yRGF0YSA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9u
YXJ5R2V0SXRlbUZvcktleShoaWRSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIkNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEiKSkuZ2V0KCkpKSkKLSAgICAgICAgICAgIGhp
ZC5jb250aW51ZUFmdGVyRXJyb3JEYXRhID0gV0tCb29sZWFuR2V0VmFsdWUoY29udGludWVBZnRl
ckVycm9yRGF0YSk7Ci0KLSAgICAgICAgaWYgKGF1dG8gY2FuRG93bmdyYWRlID0gc3RhdGljX2Nh
c3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGhpZFJlZiwgYWRvcHRX
SyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FuRG93bmdyYWRlIikpLmdldCgpKSkp
Ci0gICAgICAgICAgICBoaWQuY2FuRG93bmdyYWRlID0gV0tCb29sZWFuR2V0VmFsdWUoY2FuRG93
bmdyYWRlKTsKLQotICAgICAgICBjb25maWd1cmF0aW9uLmhpZCA9IFdURk1vdmUoaGlkKTsKLSAg
ICB9Ci0KLSAgICBpZiAoYXV0byBuZmNSZWYgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+
KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoY29uZmlndXJhdGlvblJlZiwgYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTmZjIikpLmdldCgpKSkpIHsKLSAgICAgICAgV2Vi
S2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmMgbmZjOwotCi0gICAg
ICAgIGF1dG8gZXJyb3IgPSBXZWJLaXQ6OnRvSW1wbChzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4o
V0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShuZmNSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIkVycm9yIikpLmdldCgpKSkpLT5zdHJpbmcoKTsKLSAgICAgICAgaWYg
KGVycm9yID09ICJzdWNjZXNzIikKLSAgICAgICAgICAgIG5mYy5lcnJvciA9IFdlYktpdDo6TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjOjpFcnJvcjo6U3VjY2VzczsKLSAg
ICAgICAgZWxzZSBpZiAoZXJyb3IgPT0gIm5vLXRhZ3MiKQotICAgICAgICAgICAgbmZjLmVycm9y
ID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmM6OkVycm9y
OjpOb1RhZ3M7Ci0gICAgICAgIGVsc2UgaWYgKGVycm9yID09ICJ3cm9uZy10YWctdHlwZSIpCi0g
ICAgICAgICAgICBuZmMuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb246Ok5mYzo6RXJyb3I6Oldyb25nVGFnVHlwZTsKLSAgICAgICAgZWxzZSBpZiAoZXJy
b3IgPT0gIm5vLWNvbm5lY3Rpb25zIikKLSAgICAgICAgICAgIG5mYy5lcnJvciA9IFdlYktpdDo6
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjOjpFcnJvcjo6Tm9Db25uZWN0
aW9uczsKLSAgICAgICAgZWxzZSBpZiAoZXJyb3IgPT0gIm1hbGljaW91cy1wYXlsb2FkIikKLSAg
ICAgICAgICAgIG5mYy5lcnJvciA9IFdlYktpdDo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbjo6TmZjOjpFcnJvcjo6TWFsaWNpb3VzUGF5bG9hZDsKLQotICAgICAgICBpZiAoYXV0
byBwYXlsb2FkQmFzZTY0ID0gc3RhdGljX2Nhc3Q8V0tBcnJheVJlZj4oV0tEaWN0aW9uYXJ5R2V0
SXRlbUZvcktleShuZmNSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IlBheWxvYWRCYXNlNjQiKSkuZ2V0KCkpKSkKLSAgICAgICAgICAgIG5mYy5wYXlsb2FkQmFzZTY0
ID0gV2ViS2l0Ojp0b0ltcGwocGF5bG9hZEJhc2U2NCktPnRvU3RyaW5nVmVjdG9yKCk7Ci0KLSAg
ICAgICAgaWYgKGF1dG8gbXVsdGlwbGVUYWdzID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihX
S0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG5mY1JlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiTXVsdGlwbGVUYWdzIikpLmdldCgpKSkpCi0gICAgICAgICAgICBuZmMu
bXVsdGlwbGVUYWdzID0gV0tCb29sZWFuR2V0VmFsdWUobXVsdGlwbGVUYWdzKTsKLQotICAgICAg
ICBjb25maWd1cmF0aW9uLm5mYyA9IFdURk1vdmUobmZjKTsKLSAgICB9Ci0KLSAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpOwotI2VuZGlmCi19Ci0KIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3Zh
bChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dl
YnNpdGVEYXRhU3RvcmVDbGVhckFkQ2xpY2tBdHRyaWJ1dGlvbnNUaHJvdWdoV2Vic2l0ZURhdGFS
ZW1vdmFsRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0
ZURhdGFUeXBlPiBkYXRhVHlwZXMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6QWRDbGlja0F0
dHJpYnV0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
V2Vic2l0ZURhdGFTdG9yZVJlZi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmLmgKaW5kZXggYzFmOTkwYjM1YTdiMjY2MjQxNWZlNmYxOGU5MDI4
MzkzODA4ODJlZS4uZWY0MzM5ODYwNDRhYTExNDUxNTdmOWM3YmRiZmFkYjRiZGFmZGYzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmgKQEAgLTE0Myw4ICsxNDMsNiBAQCBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KFdLV2Vic2l0ZQogCiBX
S19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRQZXJPcmlnaW5TdG9yYWdlUXVvdGEo
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdWludDY0X3QgcXVvdGEpIFdLX0Nf
QVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVChXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uU2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKTsKIAotV0tfRVhQT1JUIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihXS1dlYnNp
dGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS0RpY3Rpb25hcnlSZWYgY29uZmlndXJhdGlv
bik7Ci0KIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQWxsRGV2aWNlT3Jp
ZW50YXRpb25QZXJtaXNzaW9ucyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmKTsK
IAogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRp
b25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRl
eHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2UuY3Bw
CmluZGV4IDdhMGY4ZjliMTFkMzQyZTFkNDRkYWVjMTQ5YjE0ZmNhMGExMmQzNDguLmU4MTAzOWI2
ZGNiNDBjNTYyNTVkNzdmNGRlZmRlOTZmMWU0ZDRlZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2
aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgVW5pcXVl
UmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPiBBdXRoZW50aWNhdG9yVHJhbnNwb3J0
U2VydmljZTo6Y3JlYXRlKFcKICAgICB9CiB9CiAKLVVuaXF1ZVJlZjxBdXRoZW50aWNhdG9yVHJh
bnNwb3J0U2VydmljZT4gQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U6OmNyZWF0ZU1vY2so
V2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydCB0cmFuc3BvcnQsIE9ic2VydmVyJiBvYnNl
cnZlciwgY29uc3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYgY29uZmlndXJh
dGlvbikKK1VuaXF1ZVJlZjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZT4gQXV0aGVudGlj
YXRvclRyYW5zcG9ydFNlcnZpY2U6OmNyZWF0ZU1vY2soV2ViQ29yZTo6QXV0aGVudGljYXRvclRy
YW5zcG9ydCB0cmFuc3BvcnQsIE9ic2VydmVyJiBvYnNlcnZlciwgY29uc3QgV2ViQ29yZTo6TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKIHsKICAgICBz
d2l0Y2ggKHRyYW5zcG9ydCkgewogICAgIGNhc2UgV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5z
cG9ydDo6SW50ZXJuYWw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvclRyYW5zcG9ydFNl
cnZpY2UuaAppbmRleCA2Y2U0NjE4NzhkYmEyYWU2MGU3NTY2M2U5N2IxYmRmYjcyNGQ0ZmRlLi4w
OTA4NGFiOGE3Yzc5MDkwNTE3ZjJlNzJlYjdhNTQ2ZDlhZDI2ZWEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJhbnNw
b3J0U2VydmljZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlLmgKQEAgLTMxLDEyICszMSwxNCBAQAog
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEF1dGhlbnRpY2F0b3I7CiAK
LXN0cnVjdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOwotCiBjbGFzcyBBdXRo
ZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBdXRoZW50
aWNhdG9yVHJhbnNwb3J0U2VydmljZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlKTsK
QEAgLTQ5LDcgKzUxLDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBzdGF0aWMgVW5pcXVlUmVm
PEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPiBjcmVhdGUoV2ViQ29yZTo6QXV0aGVudGlj
YXRvclRyYW5zcG9ydCwgT2JzZXJ2ZXImKTsKLSAgICBzdGF0aWMgVW5pcXVlUmVmPEF1dGhlbnRp
Y2F0b3JUcmFuc3BvcnRTZXJ2aWNlPiBjcmVhdGVNb2NrKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JU
cmFuc3BvcnQsIE9ic2VydmVyJiwgY29uc3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbiYpOworICAgIHN0YXRpYyBVbmlxdWVSZWY8QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZp
Y2U+IGNyZWF0ZU1vY2soV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydCwgT2JzZXJ2ZXIm
LCBjb25zdCBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJik7CiAK
ICAgICB2aXJ0dWFsIH5BdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZSgpID0gZGVmYXVsdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
TW9jay9Nb2NrQXV0aGVudGljYXRvck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCmlu
ZGV4IDA4NGM5YmUyM2ZiMGFiZDk1NjNkZjkxZmM2NjZlMTFmMTM1MTA2YzYuLmY4ZmYyZDY3NjRi
ZDdhNWQxNGFiY2IxNjAzNTJkY2QxZDEwYTZmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2Nr
L01vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLU1vY2tBdXRoZW50aWNhdG9yTWFuYWdlcjo6TW9ja0F1dGhlbnRpY2F0
b3JNYW5hZ2VyKE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0
aW9uKQorTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyOjpNb2NrQXV0aGVudGljYXRvck1hbmFnZXIo
V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRp
b24pCiAgICAgOiBtX3Rlc3RDb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCiB7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Nb2NrL01vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaAppbmRl
eCA4NWQ4MDA5OTU2NjRlYTVlY2Q5MmE0ZWMwNDU3N2RhYWFlYTUwOTlhLi5hOGViODBhNTdhNzdm
YmIxNmRkMTYwODJhOTI4M2U4YTk5NWVkOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9j
a0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKQEAgLTI4LDIyICsyOCwyMiBAQAogI2lmIEVOQUJMRShX
RUJfQVVUSE4pCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yTWFuYWdlci5oIgotI2luY2x1ZGUg
Ik1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGNsYXNzIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlciBmaW5hbCA6IHB1YmxpYyBBdXRo
ZW50aWNhdG9yTWFuYWdlciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgTW9ja0F1dGhlbnRpY2F0
b3JNYW5hZ2VyKE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mJik7CisgICAgZXhw
bGljaXQgTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyKFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24mJik7CiAKICAgICBib29sIGlzTW9jaygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHNldFRlc3RDb25maWd1cmF0aW9uKE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKSB7IG1fdGVzdENvbmZpZ3Vy
YXRpb24gPSBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pOyB9CisgICAgdm9pZCBzZXRUZXN0Q29uZmln
dXJhdGlvbihXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiYgY29u
ZmlndXJhdGlvbikgeyBtX3Rlc3RDb25maWd1cmF0aW9uID0gV1RGTW92ZShjb25maWd1cmF0aW9u
KTsgfQogCiBwcml2YXRlOgogICAgIFVuaXF1ZVJlZjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2Vy
dmljZT4gY3JlYXRlU2VydmljZShXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0LCBBdXRo
ZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZTo6T2JzZXJ2ZXImKSBjb25zdCBmaW5hbDsKICAgICB2
b2lkIHJlc3BvbmRSZWNlaXZlZEludGVybmFsKFJlc3BvbmQmJikgZmluYWw7CiAKLSAgICBNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uIG1fdGVzdENvbmZpZ3VyYXRpb247CisgICAg
V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBtX3Rlc3RDb25maWd1
cmF0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9j
a0hpZENvbm5lY3Rpb24uY3BwCmluZGV4IDhlMGZlNTI2ZDIwNmVkYzBiYzM3ZTg2ZTRhYWY0ZWQ1
ZDk3YTRlZjMuLjY1ODQ2NmRlN2IxMzFlYmU1NGU2NzFmNjcwNDNjN2ZmZTZjNTM2OGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9j
a0hpZENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3BwCkBAIC0zOCw3ICszOCw3IEBACiAj
aW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcg
TW9ja0hpZCA9IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZDsKK3VzaW5n
IE1vY2sgPSBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOwogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgY2JvcjsKIHVzaW5nIG5hbWVz
cGFjZSBmaWRvOwpAQCAtODIsNyArODIsNyBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpzZW5k
KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIERhdGFTZW50Q2FsbGJhY2smJiBjYWxsYmFjawogICAg
ICAgICAgICAgd2Vha1RoaXMtPmFzc2VtYmxlUmVxdWVzdChXVEZNb3ZlKGRhdGEpKTsKIAogICAg
ICAgICAgICAgYXV0byBzZW50ID0gRGF0YVNlbnQ6OlllczsKLSAgICAgICAgICAgIGlmICh3ZWFr
VGhpcy0+c3RhZ2VzTWF0Y2goKSAmJiB3ZWFrVGhpcy0+bV9jb25maWd1cmF0aW9uLmhpZC0+ZXJy
b3IgPT0gTW9ja0hpZDo6RXJyb3I6OkRhdGFOb3RTZW50KQorICAgICAgICAgICAgaWYgKHdlYWtU
aGlzLT5zdGFnZXNNYXRjaCgpICYmIHdlYWtUaGlzLT5tX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJv
ciA9PSBNb2NrOjpIaWRFcnJvcjo6RGF0YU5vdFNlbnQpCiAgICAgICAgICAgICAgICAgc2VudCA9
IERhdGFTZW50OjpObzsKICAgICAgICAgICAgIGNhbGxiYWNrKHNlbnQpOwogICAgICAgICB9KTsK
QEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBNb2NrSGlkQ29ubmVjdGlvbjo6c2VuZChWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhLCBEYXRhU2VudENhbGxiYWNrJiYgY2FsbGJhY2sKIAogdm9pZCBNb2NrSGlk
Q29ubmVjdGlvbjo6cmVnaXN0ZXJEYXRhUmVjZWl2ZWRDYWxsYmFja0ludGVybmFsKCkKIHsKLSAg
ICBpZiAoc3RhZ2VzTWF0Y2goKSAmJiBtX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBNb2Nr
SGlkOjpFcnJvcjo6RW1wdHlSZXBvcnQpIHsKKyAgICBpZiAoc3RhZ2VzTWF0Y2goKSAmJiBtX2Nv
bmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBNb2NrOjpIaWRFcnJvcjo6RW1wdHlSZXBvcnQpIHsK
ICAgICAgICAgcmVjZWl2ZVJlcG9ydCh7IH0pOwogICAgICAgICBzaG91bGRDb250aW51ZUZlZWRS
ZXBvcnRzKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTEyMywxNCArMTIzLDE0IEBAIHZvaWQgTW9j
a0hpZENvbm5lY3Rpb246OnBhcnNlUmVxdWVzdCgpCiAgICAgLy8gU2V0IHN0YWdlcy4KICAgICBp
ZiAobV9yZXF1ZXN0TWVzc2FnZS0+Y21kKCkgPT0gRmlkb0hpZERldmljZUNvbW1hbmQ6OmtJbml0
KSB7CiAgICAgICAgIGF1dG8gcHJldmlvdXNTdWJTdGFnZSA9IG1fc3ViU3RhZ2U7Ci0gICAgICAg
IG1fc3ViU3RhZ2UgPSBNb2NrSGlkOjpTdWJTdGFnZTo6SW5pdDsKLSAgICAgICAgaWYgKHByZXZp
b3VzU3ViU3RhZ2UgPT0gTW9ja0hpZDo6U3ViU3RhZ2U6Ok1zZykKLSAgICAgICAgICAgIG1fc3Rh
Z2UgPSBNb2NrSGlkOjpTdGFnZTo6UmVxdWVzdDsKKyAgICAgICAgbV9zdWJTdGFnZSA9IE1vY2s6
OkhpZFN1YlN0YWdlOjpJbml0OworICAgICAgICBpZiAocHJldmlvdXNTdWJTdGFnZSA9PSBNb2Nr
OjpIaWRTdWJTdGFnZTo6TXNnKQorICAgICAgICAgICAgbV9zdGFnZSA9IE1vY2s6OkhpZFN0YWdl
OjpSZXF1ZXN0OwogICAgIH0KICAgICBpZiAobV9yZXF1ZXN0TWVzc2FnZS0+Y21kKCkgPT0gRmlk
b0hpZERldmljZUNvbW1hbmQ6OmtDYm9yIHx8IG1fcmVxdWVzdE1lc3NhZ2UtPmNtZCgpID09IEZp
ZG9IaWREZXZpY2VDb21tYW5kOjprTXNnKQotICAgICAgICBtX3N1YlN0YWdlID0gTW9ja0hpZDo6
U3ViU3RhZ2U6Ok1zZzsKKyAgICAgICAgbV9zdWJTdGFnZSA9IE1vY2s6OkhpZFN1YlN0YWdlOjpN
c2c7CiAKLSAgICBpZiAobV9zdGFnZSA9PSBNb2NrSGlkOjpTdGFnZTo6UmVxdWVzdCAmJiBtX3N1
YlN0YWdlID09IE1vY2tIaWQ6OlN1YlN0YWdlOjpNc2cpIHsKKyAgICBpZiAobV9zdGFnZSA9PSBN
b2NrOjpIaWRTdGFnZTo6UmVxdWVzdCAmJiBtX3N1YlN0YWdlID09IE1vY2s6OkhpZFN1YlN0YWdl
OjpNc2cpIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGlzc3VlIGRpZmZlcmVudCBtc2cgY21k
IGZvciBDVEFQIGFuZCBVMkYuCiAgICAgICAgIGlmIChtX2NvbmZpZ3VyYXRpb24uaGlkLT5jYW5E
b3duZ3JhZGUgJiYgIW1fY29uZmlndXJhdGlvbi5oaWQtPmlzVTJmKQogICAgICAgICAgICAgbV9j
b25maWd1cmF0aW9uLmhpZC0+aXNVMmYgPSBtX3JlcXVlc3RNZXNzYWdlLT5jbWQoKSA9PSBGaWRv
SGlkRGV2aWNlQ29tbWFuZDo6a01zZzsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIE1vY2tIaWRD
b25uZWN0aW9uOjpwYXJzZVJlcXVlc3QoKQogICAgIH0KIAogICAgIC8vIFN0b3JlIG5vbmNlLgot
ICAgIGlmIChtX3N1YlN0YWdlID09IE1vY2tIaWQ6OlN1YlN0YWdlOjpJbml0KSB7CisgICAgaWYg
KG1fc3ViU3RhZ2UgPT0gTW9jazo6SGlkU3ViU3RhZ2U6OkluaXQpIHsKICAgICAgICAgbV9ub25j
ZSA9IG1fcmVxdWVzdE1lc3NhZ2UtPmdldE1lc3NhZ2VQYXlsb2FkKCk7CiAgICAgICAgIEFTU0VS
VChtX25vbmNlLnNpemUoKSA9PSBrSGlkSW5pdE5vbmNlTGVuZ3RoKTsKICAgICB9CkBAIC0xOTEs
MTcgKzE5MSwxNyBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpmZWVkUmVwb3J0cygpCiB7CiAg
ICAgdXNpbmcgbmFtZXNwYWNlIE1vY2tIaWRDb25uZWN0aW9uSW50ZXJuYWw7CiAKLSAgICBpZiAo
bV9zdWJTdGFnZSA9PSBNb2NrSGlkOjpTdWJTdGFnZTo6SW5pdCkgeworICAgIGlmIChtX3N1YlN0
YWdlID09IE1vY2s6OkhpZFN1YlN0YWdlOjpJbml0KSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90
PiBwYXlsb2FkOwogICAgICAgICBwYXlsb2FkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoa0hpZElu
aXRSZXNwb25zZVNpemUpOwogICAgICAgICBwYXlsb2FkLmFwcGVuZFZlY3RvcihtX25vbmNlKTsK
ICAgICAgICAgc2l6ZV90IHdyaXRlUG9zaXRpb24gPSBwYXlsb2FkLnNpemUoKTsKLSAgICAgICAg
aWYgKHN0YWdlc01hdGNoKCkgJiYgbV9jb25maWd1cmF0aW9uLmhpZC0+ZXJyb3IgPT0gTW9ja0hp
ZDo6RXJyb3I6Oldyb25nTm9uY2UpCisgICAgICAgIGlmIChzdGFnZXNNYXRjaCgpICYmIG1fY29u
ZmlndXJhdGlvbi5oaWQtPmVycm9yID09IE1vY2s6OkhpZEVycm9yOjpXcm9uZ05vbmNlKQogICAg
ICAgICAgICAgcGF5bG9hZFswXS0tOwogICAgICAgICBwYXlsb2FkLmdyb3coa0hpZEluaXRSZXNw
b25zZVNpemUpOwogICAgICAgICBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyhwYXlsb2Fk
LmRhdGEoKSArIHdyaXRlUG9zaXRpb24sIEN0YXBDaGFubmVsSWRTaXplKTsKICAgICAgICAgYXV0
byBjaGFubmVsID0ga0hpZEJyb2FkY2FzdENoYW5uZWw7Ci0gICAgICAgIGlmIChzdGFnZXNNYXRj
aCgpICYmIG1fY29uZmlndXJhdGlvbi5oaWQtPmVycm9yID09IE1vY2tIaWQ6OkVycm9yOjpXcm9u
Z0NoYW5uZWxJZCkKKyAgICAgICAgaWYgKHN0YWdlc01hdGNoKCkgJiYgbV9jb25maWd1cmF0aW9u
LmhpZC0+ZXJyb3IgPT0gTW9jazo6SGlkRXJyb3I6Oldyb25nQ2hhbm5lbElkKQogICAgICAgICAg
ICAgY2hhbm5lbC0tOwogICAgICAgICBGaWRvSGlkSW5pdFBhY2tldCBpbml0UGFja2V0KGNoYW5u
ZWwsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprSW5pdCwgV1RGTW92ZShwYXlsb2FkKSwgcGF5bG9h
ZC5zaXplKCkpOwogICAgICAgICByZWNlaXZlUmVwb3J0KGluaXRQYWNrZXQuZ2V0U2VyaWFsaXpl
ZERhdGEoKSk7CkBAIC0yMTAsMTQgKzIxMCwxNCBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpm
ZWVkUmVwb3J0cygpCiAgICAgfQogCiAgICAgT3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+IG1lc3Nh
Z2U7Ci0gICAgaWYgKG1fc3RhZ2UgPT0gTW9ja0hpZDo6U3RhZ2U6OkluZm8gJiYgbV9zdWJTdGFn
ZSA9PSBNb2NrSGlkOjpTdWJTdGFnZTo6TXNnKSB7CisgICAgaWYgKG1fc3RhZ2UgPT0gTW9jazo6
SGlkU3RhZ2U6OkluZm8gJiYgbV9zdWJTdGFnZSA9PSBNb2NrOjpIaWRTdWJTdGFnZTo6TXNnKSB7
CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBpbmZvRGF0YTsKICAgICAgICAgaWYgKG1fY29uZmln
dXJhdGlvbi5oaWQtPmNhbkRvd25ncmFkZSkKICAgICAgICAgICAgIGluZm9EYXRhID0gZW5jb2Rl
QXNDQk9SKEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UoeyBQcm90b2NvbFZlcnNpb246OmtD
dGFwLCBQcm90b2NvbFZlcnNpb246OmtVMmYgfSwgVmVjdG9yPHVpbnQ4X3Q+KGFhZ3VpZExlbmd0
aCwgMHUpKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGluZm9EYXRhID0gZW5jb2RlQXND
Qk9SKEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UoeyBQcm90b2NvbFZlcnNpb246OmtDdGFw
IH0sIFZlY3Rvcjx1aW50OF90PihhYWd1aWRMZW5ndGgsIDB1KSkpOwogICAgICAgICBpbmZvRGF0
YS5pbnNlcnQoMCwgc3RhdGljX2Nhc3Q8dWludDhfdD4oQ3RhcERldmljZVJlc3BvbnNlQ29kZTo6
a1N1Y2Nlc3MpKTsgLy8gUHJlcGVuZCBzdGF0dXMgY29kZS4KLSAgICAgICAgaWYgKHN0YWdlc01h
dGNoKCkgJiYgbV9jb25maWd1cmF0aW9uLmhpZC0+ZXJyb3IgPT0gTW9ja0hpZDo6RXJyb3I6Oldy
b25nQ2hhbm5lbElkKQorICAgICAgICBpZiAoc3RhZ2VzTWF0Y2goKSAmJiBtX2NvbmZpZ3VyYXRp
b24uaGlkLT5lcnJvciA9PSBNb2NrOjpIaWRFcnJvcjo6V3JvbmdDaGFubmVsSWQpCiAgICAgICAg
ICAgICBtZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShtX2N1cnJlbnRDaGFubmVsIC0g
MSwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYm9yLCBpbmZvRGF0YSk7CiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uaGlkLT5pc1UyZikKQEAgLTIyNyw3
ICsyMjcsNyBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpmZWVkUmVwb3J0cygpCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBpZiAobV9zdGFnZSA9PSBNb2NrSGlkOjpTdGFnZTo6UmVxdWVzdCAm
JiBtX3N1YlN0YWdlID09IE1vY2tIaWQ6OlN1YlN0YWdlOjpNc2cpIHsKKyAgICBpZiAobV9zdGFn
ZSA9PSBNb2NrOjpIaWRTdGFnZTo6UmVxdWVzdCAmJiBtX3N1YlN0YWdlID09IE1vY2s6OkhpZFN1
YlN0YWdlOjpNc2cpIHsKICAgICAgICAgaWYgKG1fY29uZmlndXJhdGlvbi5oaWQtPmtlZXBBbGl2
ZSkgewogICAgICAgICAgICAgbV9jb25maWd1cmF0aW9uLmhpZC0+a2VlcEFsaXZlID0gZmFsc2U7
CiAgICAgICAgICAgICBGaWRvSGlkSW5pdFBhY2tldCBpbml0UGFja2V0KG1fY3VycmVudENoYW5u
ZWwsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprS2VlcEFsaXZlLCB7IEN0YXBLZWVwQWxpdmVTdGF0
dXNQcm9jZXNzaW5nIH0sIDEpOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgTW9ja0hpZENvbm5l
Y3Rpb246OmZlZWRSZXBvcnRzKCkKICAgICAgICAgICAgIGNvbnRpbnVlRmVlZFJlcG9ydHMoKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpZiAoc3RhZ2VzTWF0Y2go
KSAmJiBtX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBNb2NrSGlkOjpFcnJvcjo6VW5zdXBw
b3J0ZWRPcHRpb25zICYmIChtX3JlcXVpcmVSZXNpZGVudEtleSB8fCBtX3JlcXVpcmVVc2VyVmVy
aWZpY2F0aW9uKSkKKyAgICAgICAgaWYgKHN0YWdlc01hdGNoKCkgJiYgbV9jb25maWd1cmF0aW9u
LmhpZC0+ZXJyb3IgPT0gTW9jazo6SGlkRXJyb3I6OlVuc3VwcG9ydGVkT3B0aW9ucyAmJiAobV9y
ZXF1aXJlUmVzaWRlbnRLZXkgfHwgbV9yZXF1aXJlVXNlclZlcmlmaWNhdGlvbikpCiAgICAgICAg
ICAgICBtZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShtX2N1cnJlbnRDaGFubmVsLCBG
aWRvSGlkRGV2aWNlQ29tbWFuZDo6a0Nib3IsIHsgc3RhdGljX2Nhc3Q8dWludDhfdD4oQ3RhcERl
dmljZVJlc3BvbnNlQ29kZTo6a0N0YXAyRXJyVW5zdXBwb3J0ZWRPcHRpb24pIH0pOwogICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBwYXlsb2FkOwpAQCAtMjU0LDcg
KzI1NCw3IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OmZlZWRSZXBvcnRzKCkKICAgICBib29s
IGlzRmlyc3QgPSB0cnVlOwogICAgIHdoaWxlIChtZXNzYWdlLT5udW1QYWNrZXRzKCkpIHsKICAg
ICAgICAgYXV0byByZXBvcnQgPSBtZXNzYWdlLT5wb3BOZXh0UGFja2V0KCk7Ci0gICAgICAgIGlm
ICghaXNGaXJzdCAmJiBzdGFnZXNNYXRjaCgpICYmIG1fY29uZmlndXJhdGlvbi5oaWQtPmVycm9y
ID09IE1vY2tIaWQ6OkVycm9yOjpXcm9uZ0NoYW5uZWxJZCkKKyAgICAgICAgaWYgKCFpc0ZpcnN0
ICYmIHN0YWdlc01hdGNoKCkgJiYgbV9jb25maWd1cmF0aW9uLmhpZC0+ZXJyb3IgPT0gTW9jazo6
SGlkRXJyb3I6Oldyb25nQ2hhbm5lbElkKQogICAgICAgICAgICAgcmVwb3J0ID0gRmlkb0hpZENv
bnRpbnVhdGlvblBhY2tldChtX2N1cnJlbnRDaGFubmVsIC0gMSwgMCwgeyB9KS5nZXRTZXJpYWxp
emVkRGF0YSgpOwogICAgICAgICAvLyBQYWNrZXRzIGFyZSBmZWVkIGFzeW5jaHJvbm91c2x5IHRv
IG1pbWljIGFjdHVhbCBkYXRhIHRyYW5zbWlzc2lvbi4KICAgICAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtyZXBvcnQgPSBXVEZNb3ZlKHJlcG9ydCksIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIoKnRoaXMpXSgpIG11dGFibGUgewpAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgTW9ja0hpZENv
bm5lY3Rpb246OnNob3VsZENvbnRpbnVlRmVlZFJlcG9ydHMoKQogICAgIGlmICghbV9jb25maWd1
cmF0aW9uLmhpZC0+Y29udGludWVBZnRlckVycm9yRGF0YSkKICAgICAgICAgcmV0dXJuOwogICAg
IG1fY29uZmlndXJhdGlvbi5oaWQtPmNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEgPSBmYWxzZTsKLSAg
ICBtX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9IE1vY2tIaWQ6OkVycm9yOjpTdWNjZXNzOwor
ICAgIG1fY29uZmlndXJhdGlvbi5oaWQtPmVycm9yID0gTW9jazo6SGlkRXJyb3I6OlN1Y2Nlc3M7
CiAgICAgY29udGludWVGZWVkUmVwb3J0cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRD
b25uZWN0aW9uLmgKaW5kZXggMzc4ODY2ZjM2OGFlODRiNmZjNTljZWM3MGVhNmUzNDgzOWY3ZTFh
Ni4uNDA4MzZkMjgzZmRlMDE1MjVmNTY5ZTA3Mjk2ODE5Njg3ZTE3ZTBkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L01vY2svTW9ja0hpZENvbm5lY3Rpb24uaApAQCAtMjgsOCArMjgsOCBAQAogI2lmIEVOQUJMRShX
RUJfQVVUSE4pCiAKICNpbmNsdWRlICJIaWRDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiTW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlkb0hp
ZE1lc3NhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24uaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAvLyBBY2NvcmRpbmcgdG8g
ZGlmZmVyZW50IGNvbWJpbmF0aW9ucyBvZiBlcnJvciBhbmQgc3RhZ2VzLCBlcnJvciB3aWxsIG1h
bmlmZXN0IGRpZmZlcmVudGx5LgogY2xhc3MgTW9ja0hpZENvbm5lY3Rpb24gZmluYWwgOiBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8TW9ja0hpZENvbm5lY3Rpb24+LCBwdWJsaWMgSGlkQ29ubmVjdGlv
biB7CiBwdWJsaWM6Ci0gICAgTW9ja0hpZENvbm5lY3Rpb24oSU9ISUREZXZpY2VSZWYsIGNvbnN0
IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mKTsKKyAgICBNb2NrSGlkQ29ubmVj
dGlvbihJT0hJRERldmljZVJlZiwgY29uc3QgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbiYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgc2VuZChWZWN0b3I8dWludDhf
dD4mJiBkYXRhLCBEYXRhU2VudENhbGxiYWNrJiYpIGZpbmFsOwpAQCAtNjAsMTAgKzYwLDEwIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzaG91bGRDb250aW51ZUZlZWRSZXBvcnRzKCk7CiAgICAgdm9p
ZCBjb250aW51ZUZlZWRSZXBvcnRzKCk7CiAKLSAgICBNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKKyAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKICAgICBPcHRpb25hbDxmaWRvOjpG
aWRvSGlkTWVzc2FnZT4gbV9yZXF1ZXN0TWVzc2FnZTsKLSAgICBNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uOjpIaWQ6OlN0YWdlIG1fc3RhZ2UgeyBNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uOjpIaWQ6OlN0YWdlOjpJbmZvIH07Ci0gICAgTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpTdWJTdGFnZSBtX3N1YlN0YWdlIHsgTW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpTdWJTdGFnZTo6SW5pdCB9OworICAgIFdl
YkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZFN0YWdlIG1fc3Rh
Z2UgeyBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRTdGFnZTo6SW5mbyB9
OworICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZFN1
YlN0YWdlIG1fc3ViU3RhZ2UgeyBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpI
aWRTdWJTdGFnZTo6SW5pdCB9OwogICAgIHVpbnQzMl90IG1fY3VycmVudENoYW5uZWwgeyBmaWRv
OjprSGlkQnJvYWRjYXN0Q2hhbm5lbCB9OwogICAgIGJvb2wgbV9yZXF1aXJlUmVzaWRlbnRLZXkg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9yZXF1aXJlVXNlclZlcmlmaWNhdGlvbiAgeyBmYWxzZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
TW9jay9Nb2NrSGlkU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRTZXJ2aWNlLmNwcAppbmRleCAyNGNjMzZiMmNkNTM0ZDRm
MjUyZDNmZjA2OGM5YjQ5N2E2YTkyNTU5Li44NTA1Zjc1Y2U5YmJlZjE4YmIyOWM2NGY2MjhkYjBh
ZDE3ODViZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Nb2NrL01vY2tIaWRTZXJ2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRTZXJ2aWNlLmNwcApAQCAtMzMsNyAr
MzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotTW9ja0hpZFNlcnZpY2U6Ok1vY2tIaWRT
ZXJ2aWNlKE9ic2VydmVyJiBvYnNlcnZlciwgY29uc3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK01vY2tIaWRTZXJ2aWNlOjpNb2NrSGlkU2Vydmlj
ZShPYnNlcnZlciYgb2JzZXJ2ZXIsIGNvbnN0IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBIaWRTZXJ2aWNlKG9ic2VydmVy
KQogICAgICwgbV9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRTZXJ2
aWNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01v
Y2tIaWRTZXJ2aWNlLmgKaW5kZXggY2JlMDE1ZWYwZDQ1OGI5MDc5NWJiOTQxM2ZjYTUyYjhiNDll
NjNlMS4uYmUxZWFkNjE3OTg2YTkzOWU2YWMyZmI0MmEzNzhhMjk5YzU4NzZkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlk
U2VydmljZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L01vY2svTW9ja0hpZFNlcnZpY2UuaApAQCAtMjgsMTIgKzI4LDEwIEBACiAjaWYgRU5BQkxFKFdF
Ql9BVVRITikKIAogI2luY2x1ZGUgIkhpZFNlcnZpY2UuaCIKLSNpbmNsdWRlICJNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdHJ1
Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjsKLQogY2xhc3MgTW9ja0hpZFNl
cnZpY2UgZmluYWwgOiBwdWJsaWMgSGlkU2VydmljZSB7CiBwdWJsaWM6CiAgICAgTW9ja0hpZFNl
cnZpY2UoT2JzZXJ2ZXImLCBjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
Jik7CkBAIC00Miw3ICs0MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVN0YXJ0RGlz
Y292ZXJ5KCkgZmluYWw7CiAgICAgVW5pcXVlUmVmPEhpZENvbm5lY3Rpb24+IGNyZWF0ZUhpZENv
bm5lY3Rpb24oSU9ISUREZXZpY2VSZWYpIGNvbnN0IGZpbmFsOwogCi0gICAgTW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CisgICAgV2ViQ29yZTo6TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9u
LmgKaW5kZXggMzFhZDcxYTMxMjdiYWFhNDY2YzcyOWRhNWJmNGQxZDUyYjRlMWFhNC4uMzU1OWI4
MGViOTgyODBhMDFjMTUwYWM0MjJhNDNjMjNlY2QzYWQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrTG9jYWxDb25uZWN0aW9uLmgKQEAgLTI4LDEzICsyOCwxMyBAQAogI2lmIEVOQUJMRShXRUJf
QVVUSE4pCiAKICNpbmNsdWRlICJMb2NhbENvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBNb2NrTG9jYWxDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIExvY2FsQ29ubmVjdGlvbiB7
CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgTW9ja0xvY2FsQ29ubmVjdGlvbihjb25zdCBNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJik7CisgICAgZXhwbGljaXQgTW9ja0xvY2FsQ29u
bmVjdGlvbihjb25zdCBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
Jik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBnZXRVc2VyQ29uc2VudChjb25zdCBTdHJpbmcmIHJl
YXNvbiwgVXNlckNvbnNlbnRDYWxsYmFjayYmKSBjb25zdCBmaW5hbDsKQEAgLTQyLDcgKzQyLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGdldEF0dGVzdGF0aW9uKGNvbnN0IFN0cmluZyYgcnBJZCwg
Y29uc3QgU3RyaW5nJiB1c2VybmFtZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBBdHRl
c3RhdGlvbkNhbGxiYWNrJiYpIGNvbnN0IGZpbmFsOwogICAgIE5TRGljdGlvbmFyeSAqc2VsZWN0
Q3JlZGVudGlhbChjb25zdCBOU0FycmF5ICopIGNvbnN0IGZpbmFsOwogCi0gICAgTW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CisgICAgV2ViQ29yZTo6
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVj
dGlvbi5tbQppbmRleCA1NzFlY2NhN2U0ZjQ3MGZjNjliNDFjZGQyNjAzOWNiOTI3MWQ0YTBhLi5j
ZGIxYWEzNDI1ZjllOGNmYzYyOGYyNWJlYTJhNzI1MGU5N2FlODczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5l
Y3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
TW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tCkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1Nb2NrTG9jYWxDb25uZWN0aW9uOjpNb2NrTG9jYWxDb25uZWN0aW9uKGNv
bnN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCitN
b2NrTG9jYWxDb25uZWN0aW9uOjpNb2NrTG9jYWxDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBt
X2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsU2VydmljZS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9j
YWxTZXJ2aWNlLmgKaW5kZXggN2ViOGYyMTRiYzA0ZTdkZmZiMTAxMGE2ODJmNGYxMTEwYzYzMjc2
MS4uOTE2OWJkNzYyMzJmMDBmOWMwMjRjYTQxMGNhNGUwYzk1N2I5MzI3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxT
ZXJ2aWNlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
TW9jay9Nb2NrTG9jYWxTZXJ2aWNlLmgKQEAgLTI4LDIxICsyOCwxOSBAQAogI2lmIEVOQUJMRShX
RUJfQVVUSE4pCiAKICNpbmNsdWRlICJMb2NhbFNlcnZpY2UuaCIKLSNpbmNsdWRlICJNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1z
dHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjsKLQogY2xhc3MgTW9ja0xv
Y2FsU2VydmljZSBmaW5hbCA6IHB1YmxpYyBMb2NhbFNlcnZpY2UgewogcHVibGljOgotICAgIE1v
Y2tMb2NhbFNlcnZpY2UoT2JzZXJ2ZXImLCBjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uJik7CisgICAgTW9ja0xvY2FsU2VydmljZShPYnNlcnZlciYsIGNvbnN0IFdlYkNv
cmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mKTsKIAogcHJpdmF0ZToKICAg
ICBib29sIHBsYXRmb3JtU3RhcnREaXNjb3ZlcnkoKSBjb25zdCBmaW5hbDsKICAgICBVbmlxdWVS
ZWY8TG9jYWxDb25uZWN0aW9uPiBjcmVhdGVMb2NhbENvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsK
IAotICAgIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9u
OworICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gbV9jb25m
aWd1cmF0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbFNlcnZp
Y2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01v
Y2tMb2NhbFNlcnZpY2UubW0KaW5kZXggMWViMDEwMmVjZTc3NjFmMzM0ZTQwYjU1NGFjMTg4MWY5
MzM3ZDk5Yi4uZmVjMTkyN2RlNWRjYTA0NWIxMDFiMzY1NjEyM2E5ZWE1NTdhN2YxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2Nr
TG9jYWxTZXJ2aWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL01vY2svTW9ja0xvY2FsU2VydmljZS5tbQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotTW9ja0xvY2FsU2VydmljZTo6TW9ja0xvY2FsU2VydmljZShPYnNl
cnZlciYgb2JzZXJ2ZXIsIGNvbnN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24m
IGNvbmZpZ3VyYXRpb24pCitNb2NrTG9jYWxTZXJ2aWNlOjpNb2NrTG9jYWxTZXJ2aWNlKE9ic2Vy
dmVyJiBvYnNlcnZlciwgY29uc3QgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICA6IExvY2FsU2VydmljZShvYnNlcnZlcikKICAg
ICAsIG1fY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTmZjU2VydmljZS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTmZj
U2VydmljZS5oCmluZGV4IDEzMmNkZTRkNmI2NmRhYzMxYWNjNjI5NmM1ZTk5ODI2YTI2YjMzMDIu
LjlmZDFjOWI0MTBiODIzMmI0ZDM1ZTBlMTI4NjdmZDM2NDZkNTY2YmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja05mY1NlcnZp
Y2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2Nr
L01vY2tOZmNTZXJ2aWNlLmgKQEAgLTI3LDE4ICsyNywxNiBAQAogCiAjaWYgRU5BQkxFKFdFQl9B
VVRITikKIAotI2luY2x1ZGUgIk1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCIK
ICNpbmNsdWRlICJOZmNTZXJ2aWNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uLmg+CiAKIE9CSkNfQ0xBU1MgTlNEYXRhOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotc3RydWN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb247
Ci0KIGNsYXNzIE1vY2tOZmNTZXJ2aWNlIGZpbmFsIDogcHVibGljIE5mY1NlcnZpY2UgewogcHVi
bGljOgotICAgIE1vY2tOZmNTZXJ2aWNlKE9ic2VydmVyJiwgY29uc3QgTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbiYpOworICAgIE1vY2tOZmNTZXJ2aWNlKE9ic2VydmVyJiwgY29u
c3QgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYpOwogCiAgICAg
TlNEYXRhKiB0cmFuc2NlaXZlKCk7CiAKQEAgLTQ3LDcgKzQ1LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgZGV0ZWN0VGFncygpIGNvbnN0OwogCi0gICAgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CisgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL01vY2svTW9ja05mY1NlcnZpY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLm1tCmluZGV4IGNhM2RlMjEwMjJi
M2EzOTEyNzgwYmEwNzFiMWZkZDY0NmRjOWJhNGEuLmNhNTIyYzVlM2EzZDI4ZDQyMDU1ODM3MmIx
NTcxZjcxM2UzN2QxYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja05mY1NlcnZpY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTmZjU2VydmljZS5tbQpAQCAtMTA4
LDcgKzEwOCw3IEBAIEBlbmQKIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
ZmlkbzsKLXVzaW5nIE1vY2tOZmMgPSBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
OjpOZmM7Cit1c2luZyBNb2NrID0gV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbjsKIAogI2lmIEhBVkUoTkVBUl9GSUVMRCkKIApAQCAtMTQzLDcgKzE0Myw3IEBAIHN0
YXRpYyBOU0RhdGEqIE5GUmVhZGVyU2Vzc2lvblRyYW5zY2VpdmUoaWQsIFNFTCwgTlNEYXRhICop
CiAKICNlbmRpZiAvLyBIQVZFKE5FQVJfRklFTEQpCiAKLU1vY2tOZmNTZXJ2aWNlOjpNb2NrTmZj
U2VydmljZShPYnNlcnZlciYgb2JzZXJ2ZXIsIGNvbnN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCitNb2NrTmZjU2VydmljZTo6TW9ja05mY1NlcnZp
Y2UoT2JzZXJ2ZXImIG9ic2VydmVyLCBjb25zdCBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgIDogTmZjU2VydmljZShvYnNlcnZl
cikKICAgICAsIG1fY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKQogewpAQCAtMTY5LDcgKzE2
OSw3IEBAIHZvaWQgTW9ja05mY1NlcnZpY2U6OnBsYXRmb3JtU3RhcnREaXNjb3ZlcnkoKQogICAg
ICAgICBtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24obWV0aG9kVG9Td2l6emxlMSwgKElNUClORlJl
YWRlclNlc3Npb25TZXREZWxlZ2F0ZSk7CiAKICAgICAgICAgTWV0aG9kIG1ldGhvZFRvU3dpenps
ZTIgPSBjbGFzc19nZXRJbnN0YW5jZU1ldGhvZChnZXRORlJlYWRlclNlc3Npb25DbGFzcygpLCBA
c2VsZWN0b3IoY29ubmVjdFRhZzopKTsKLSAgICAgICAgaWYgKG1fY29uZmlndXJhdGlvbi5uZmMt
PmVycm9yID09IE1vY2tOZmM6OkVycm9yOjpOb0Nvbm5lY3Rpb25zKQorICAgICAgICBpZiAobV9j
b25maWd1cmF0aW9uLm5mYy0+ZXJyb3IgPT0gTW9jazo6TmZjRXJyb3I6Ok5vQ29ubmVjdGlvbnMp
CiAgICAgICAgICAgICBtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24obWV0aG9kVG9Td2l6emxlMiwg
KElNUClORlJlYWRlclNlc3Npb25Db25uZWN0VGFnRmFpbCk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihtZXRob2RUb1N3aXp6bGUyLCAoSU1QKU5G
UmVhZGVyU2Vzc2lvbkNvbm5lY3RUYWcpOwpAQCAtMTk0LDEyICsxOTQsMTIgQEAgdm9pZCBNb2Nr
TmZjU2VydmljZTo6cGxhdGZvcm1TdGFydERpc2NvdmVyeSgpCiB2b2lkIE1vY2tOZmNTZXJ2aWNl
OjpkZXRlY3RUYWdzKCkgY29uc3QKIHsKICNpZiBIQVZFKE5FQVJfRklFTEQpCi0gICAgaWYgKG1f
Y29uZmlndXJhdGlvbi5uZmMtPmVycm9yID09IE1vY2tOZmM6OkVycm9yOjpOb1RhZ3MpCisgICAg
aWYgKG1fY29uZmlndXJhdGlvbi5uZmMtPmVycm9yID09IE1vY2s6Ok5mY0Vycm9yOjpOb1RhZ3Mp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIoW2Nv
bmZpZ3VyYXRpb24gPSBtX2NvbmZpZ3VyYXRpb25dIHsKICAgICAgICAgYXV0byB0YWdzID0gYWRv
cHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIGlmIChjb25maWd1
cmF0aW9uLm5mYy0+ZXJyb3IgPT0gTW9ja05mYzo6RXJyb3I6Oldyb25nVGFnVHlwZSB8fCBjb25m
aWd1cmF0aW9uLm5mYy0+bXVsdGlwbGVUYWdzKQorICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5u
ZmMtPmVycm9yID09IE1vY2s6Ok5mY0Vycm9yOjpXcm9uZ1RhZ1R5cGUgfHwgY29uZmlndXJhdGlv
bi5uZmMtPm11bHRpcGxlVGFncykKICAgICAgICAgICAgIFt0YWdzIGFkZE9iamVjdDphZG9wdE5T
KFtbV0tNb2NrTkZUYWcgYWxsb2NdIGluaXRXaXRoVHlwZTpORlRhZ1R5cGVVbmtub3duXSkuZ2V0
KCldOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBbdGFncyBhZGRPYmplY3Q6YWRvcHROUyhb
W1dLTW9ja05GVGFnIGFsbG9jXSBpbml0V2l0aFR5cGU6TkZUYWdUeXBlR2VuZXJpYzRBXSkuZ2V0
KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vTW9jay9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTEzZTg1YzE4
ZTNhYzZhN2U5NWU3ZDQ2M2IwMzlhNjU5YjllOTZhYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaAorKysgL2Rl
di9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXRUJfQVVUSE4pCi0KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uIHsKLSAgICBzdHJ1Y3QgTG9jYWwgewotICAgICAgICBib29sIGFjY2VwdEF1dGhlbnRp
Y2F0aW9uIHsgZmFsc2UgfTsKLSAgICAgICAgYm9vbCBhY2NlcHRBdHRlc3RhdGlvbiB7IGZhbHNl
IH07Ci0gICAgICAgIFN0cmluZyBwcml2YXRlS2V5QmFzZTY0OwotICAgICAgICBTdHJpbmcgdXNl
ckNlcnRpZmljYXRlQmFzZTY0OwotICAgICAgICBTdHJpbmcgaW50ZXJtZWRpYXRlQ0FDZXJ0aWZp
Y2F0ZUJhc2U2NDsKLSAgICAgICAgU3RyaW5nIHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ7Ci0g
ICAgfTsKLQotICAgIHN0cnVjdCBIaWQgewotICAgICAgICBlbnVtIGNsYXNzIFN0YWdlIDogYm9v
bCB7Ci0gICAgICAgICAgICBJbmZvLAotICAgICAgICAgICAgUmVxdWVzdAotICAgICAgICB9Owot
Ci0gICAgICAgIGVudW0gY2xhc3MgU3ViU3RhZ2UgOiBib29sIHsKLSAgICAgICAgICAgIEluaXQs
Ci0gICAgICAgICAgICBNc2cKLSAgICAgICAgfTsKLQotICAgICAgICBlbnVtIGNsYXNzIEVycm9y
IDogdWludDhfdCB7Ci0gICAgICAgICAgICBTdWNjZXNzLAotICAgICAgICAgICAgRGF0YU5vdFNl
bnQsCi0gICAgICAgICAgICBFbXB0eVJlcG9ydCwKLSAgICAgICAgICAgIFdyb25nQ2hhbm5lbElk
LAotICAgICAgICAgICAgTWFsaWNpb3VzUGF5bG9hZCwKLSAgICAgICAgICAgIFVuc3VwcG9ydGVk
T3B0aW9ucywKLSAgICAgICAgICAgIFdyb25nTm9uY2UKLSAgICAgICAgfTsKLQotICAgICAgICBW
ZWN0b3I8U3RyaW5nPiBwYXlsb2FkQmFzZTY0OwotICAgICAgICBTdGFnZSBzdGFnZSB7IFN0YWdl
OjpJbmZvIH07Ci0gICAgICAgIFN1YlN0YWdlIHN1YlN0YWdlIHsgU3ViU3RhZ2U6OkluaXQgfTsK
LSAgICAgICAgRXJyb3IgZXJyb3IgeyBFcnJvcjo6U3VjY2VzcyB9OwotICAgICAgICBib29sIGlz
VTJmIHsgZmFsc2UgfTsKLSAgICAgICAgYm9vbCBrZWVwQWxpdmUgeyBmYWxzZSB9OwotICAgICAg
ICBib29sIGZhc3REYXRhQXJyaXZhbCB7IGZhbHNlIH07Ci0gICAgICAgIGJvb2wgY29udGludWVB
ZnRlckVycm9yRGF0YSB7IGZhbHNlIH07Ci0gICAgICAgIGJvb2wgY2FuRG93bmdyYWRlIHsgZmFs
c2UgfTsKLSAgICB9OwotCi0gICAgc3RydWN0IE5mYyB7Ci0gICAgICAgIGVudW0gY2xhc3MgRXJy
b3IgOiB1aW50OF90IHsKLSAgICAgICAgICAgIFN1Y2Nlc3MsCi0gICAgICAgICAgICBOb1RhZ3Ms
Ci0gICAgICAgICAgICBXcm9uZ1RhZ1R5cGUsCi0gICAgICAgICAgICBOb0Nvbm5lY3Rpb25zLAot
ICAgICAgICAgICAgTWFsaWNpb3VzUGF5bG9hZAotICAgICAgICB9OwotCi0gICAgICAgIEVycm9y
IGVycm9yIHsgRXJyb3I6OlN1Y2Nlc3MgfTsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gcGF5bG9h
ZEJhc2U2NDsKLSAgICAgICAgYm9vbCBtdWx0aXBsZVRhZ3MgeyBmYWxzZSB9OwotICAgIH07Ci0K
LSAgICBib29sIHNpbGVudEZhaWx1cmUgeyBmYWxzZSB9OwotICAgIE9wdGlvbmFsPExvY2FsPiBs
b2NhbDsKLSAgICBPcHRpb25hbDxIaWQ+IGhpZDsKLSAgICBPcHRpb25hbDxOZmM+IG5mYzsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDg3ODIwZDMzYWNk
MjNlODFkOGM3MzNlMTAxZmNlODliZDUyMWE5MzcuLjZhOGZhZjkyMzk0NzYwMzJhZWQ1M2Y3N2Uy
MzdhOTViMzcyNjYzYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtOTM5Miw2ICs5MzkyLDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lG
b3JTT0F1dGhvcml6YXRpb25Mb2FkKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBDCiB9CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShXRUJfQVVUSE4pCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3sKKyAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPnNldE1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSk7
Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVJHRV9XSEVF
TF9FVkVOVFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggOGM3NzUw
OTZjZDE2YzczYTRkNjM4MzA0MDI3M2IwMDljOGEyNjc5OS4uYjdhOWFmODE3YmE1ZWRjOTNhZDAy
YTllYmIxOTE2N2NjOGZkODgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTIxMyw2ICsyMTMsNyBAQCBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWlsczsKIHN0cnVjdCBG
aWxlQ2hvb3NlclNldHRpbmdzOwogc3RydWN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXI7CiBzdHJ1
Y3QgTWVkaWFTdHJlYW1SZXF1ZXN0Oworc3RydWN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb247CiBzdHJ1Y3QgUHJld2FybUluZm9ybWF0aW9uOwogc3RydWN0IFNlY3VyaXR5T3Jp
Z2luRGF0YTsKIHN0cnVjdCBTaGFyZURhdGE7CkBAIC0xNTg3LDYgKzE1ODgsMTAgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBtYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKFdlYlBy
b2Nlc3NQcm94eSYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgcmVzb3VyY2VEaXJlY3RvcnlVUkws
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyAg
ICB2b2lkIHNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oV2ViQ29yZTo6TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYmKTsKKyNlbmRpZgorCiBwcml2YXRlOgog
ICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgUmVmPEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggZGM2NTI3NjZjMjhjNDhmZGJhOTE1YjRmNzcxNDU2OWY4MDRmYTNjNC4uODM5MzdkMjA0ZThk
MGJkOGMyYTA1NzgxMWI1NzIzNDJjMGNhNjA2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTc0LDQgKzU3NCw4IEBAIG1lc3Nh
Z2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJ
RVcpCiAgICAgRGlkQ3JlYXRlQ29udGV4dEZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihXZWJLaXQ6
OkxheWVySG9zdGluZ0NvbnRleHRJRCBjb250ZXh0SUQpOwogI2VuZGlmCisKKyNpZiBFTkFCTEUo
V0VCX0FVVEhOKQorICAgIFNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oc3Ry
dWN0IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gY29uZmlndXJh
dGlvbik7CisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCA0ZDQ5MDkxYTc4N2I3ZmQ1YTgzZWYw
M2Y3NmZjZmNkYzljZDZlMWU1Li45NGRlOWVlY2YzYzU4OTNmOWZhOTJkMmNmYzUzMzE5MDM0ZjI3
YmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oCkBAIC02NCw2ICs2NCw4IEBAIGNsYXNzIEhUVFBDb29raWVTdG9y
ZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47CisKK3N0cnVjdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTc4LDcgKzgwLDYgQEAgY2xhc3MgV2Vi
UHJvY2Vzc1Byb3h5OwogY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOwogZW51
bSBjbGFzcyBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5
cGU7Ci1zdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjsKIHN0cnVjdCBX
ZWJzaXRlRGF0YVJlY29yZDsKIHN0cnVjdCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczsKIApA
QCAtMjUyLDcgKzI1Myw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAg
QXV0aGVudGljYXRvck1hbmFnZXImIGF1dGhlbnRpY2F0b3JNYW5hZ2VyKCkgeyByZXR1cm4gbV9h
dXRoZW50aWNhdG9yTWFuYWdlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbihNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiYp
OworICAgIHZvaWQgc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihXZWJDb3Jl
OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiYpOwogI2VuZGlmCiAKICAgICB2
b2lkIGRpZENyZWF0ZU5ldHdvcmtQcm9jZXNzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwNWExZWFhZjk4ZWYyYzA5YmY2OWE5NTUx
ODAzZTYwY2ZkMzY2MDhhLi42MzhlYmVkNTg1M2ZkN2FkNDc0OTkzNTEzZTZhZmEwMWIwODcwYjdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEwNzMsNyArMTA3Myw2IEBACiAJCTU3RENFREIxMjE0QzYwNDgwMDE2Qjg0NyAvKiBBdXRo
ZW50aWNhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1N0RDRUQ4QjIxNDg1QkQ3MDAxNkI4NDcgLyogQXV0aGVudGljYXRvci5oICovOyB9OwogCQk1
N0RDRURCMjIxNEM2MDRDMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VEQTYy
MTQ5RjlEQTAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuaCAqLzsgfTsK
IAkJNTdEQ0VEQjMyMTRDNjA1MzAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
clByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NzYwODI5NTIwMkJEOEJBMDAxMTY2NzggLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHkuaCAqLzsgfTsKLQkJNTdEQ0VEQkYyMTRGMERDRjAwMTZCODQ3IC8qIE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3RENFREJFMjE0Q0EwMUIwMDE2Qjg0NyAvKiBNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uLmggKi87IH07CiAJCTU3RENFREMzMjE0RjExNEMwMDE2Qjg0NyAv
KiBNb2NrTG9jYWxTZXJ2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1N0RDRURDMTIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5o
ICovOyB9OwogCQk1N0RDRURDNzIxNEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VE
QzUyMTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24uaCAqLzsgfTsKIAkJNTdE
Q0VEQ0IyMTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VEQzkyMTRGNEU0
MjAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oICovOyB9OwpAQCAtMzU2NCw3
ICszNTYzLDYgQEAKIAkJNTdEQ0VEQTcyMTRBNTY4QjAwMTZCODQ3IC8qIExvY2FsQ29ubmVjdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTdEQ0VEQTgyMTRBNTY4QjAwMTZCODQ3IC8qIExvY2FsQ29ubmVjdGlvbi5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvY2FsQ29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTdEQ0VEQUEyMTRCOUI0MzAwMTZCODQ3IC8qIERldmljZUlkZW50
aXR5U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERldmljZUlkZW50aXR5U1BJLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTU3RENFREJFMjE0Q0EwMUIwMDE2Qjg0NyAvKiBNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdE
Q0VEQzEyMTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tMb2NhbFNlcnZpY2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTW9ja0xvY2FsU2VydmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0RD
RURDMjIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IE1vY2tMb2NhbFNlcnZpY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTU3RENFREM1MjE0RjE4MzAwMDE2Qjg0NyAvKiBNb2NrTG9jYWxDb25uZWN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1vY2tMb2NhbENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTcxNDMsNyArNzE0MSw2IEBACiAJCQkJNTdEQ0VEQzIyMTRGMTE0QzAwMTZCODQ3
IC8qIE1vY2tMb2NhbFNlcnZpY2UubW0gKi8sCiAJCQkJNTdCODI2NEEyMzA2MDNDMTAwQjcyRUIw
IC8qIE1vY2tOZmNTZXJ2aWNlLmggKi8sCiAJCQkJNTdCODI2NEIyMzA2MDNDMTAwQjcyRUIwIC8q
IE1vY2tOZmNTZXJ2aWNlLm1tICovLAotCQkJCTU3RENFREJFMjE0Q0EwMUIwMDE2Qjg0NyAvKiBN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9
IE1vY2s7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtOTU4Myw3ICs5NTgwLDYgQEAK
IAkJCQk1N0RDRURDNzIxNEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQzMyMTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tMb2NhbFNl
cnZpY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3QjgyNjRDMjMwNjAzQzEwMEI3MkVCMCAvKiBN
b2NrTmZjU2VydmljZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTdEQ0VEQkYyMTRGMERDRjAwMTZC
ODQ3IC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCUMwRTNBQTdDMTIwOUU4M0MwMEE0OUQwMSAvKiBNb2R1bGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTJENTAzNjZCMUJDREUxNzkwMEUyMEJCMyAvKiBOYXRpdmVXZWJHZXN0dXJlRXZlbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTI2MzE3MkNGMThCNDY5NDkwMDY1QjlDMyAvKiBOYXRpdmVX
ZWJUb3VjaEV2ZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXgg
MjlmMjUzMDczMTIzZjFlN2FkMmI5YWE1N2NlYjM0NTk3YTgwZTdhOC4uZjhlYzA4Yzc4MzIzNzk5
MDE1YzExNDEwYmIwNDE4ZTZjNjIxMzg3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTc3
LDYgKzc3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ljb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgpA
QCAtMTM1Nyw0ICsxMzU4LDExIEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRVc2VySXNJbnRl
cmFjdGluZyhib29sIHVzZXJJc0ludGVyYWN0aW5nKQogICAgIG1fcGFnZS5zZXRVc2VySXNJbnRl
cmFjdGluZyh1c2VySXNJbnRlcmFjdGluZyk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQor
dm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24oY29uc3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
bikKK3sKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pKTsKK30KKyNlbmRpZgor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA3N2ZlMzA3NjA1
Zjg1ZDNhZDg1NzFkODI1ZGRkZTE1YzY3M2E3ODIwLi45OTkxOGM3MDA0OTVjMTBmMWFhOTc0YjFj
NmM1NzA3YjAyZmFkMWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zODEsNiArMzgxLDEwIEBA
IHByaXZhdGU6CiAgICAgYm9vbCB1c2VySXNJbnRlcmFjdGluZygpIGNvbnN0IGZpbmFsOwogICAg
IHZvaWQgc2V0VXNlcklzSW50ZXJhY3RpbmcoYm9vbCkgZmluYWw7CiAKKyNpZiBFTkFCTEUoV0VC
X0FVVEhOKQorICAgIHZvaWQgc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihj
b25zdCBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJikgZmluYWw7
CisjZW5kaWYKKwogICAgIFN0cmluZyBtX2NhY2hlZFRvb2xUaXA7CiAgICAgbXV0YWJsZSBSZWZQ
dHI8V2ViRnJhbWU+IG1fY2FjaGVkRnJhbWVTZXRMYXJnZXN0RnJhbWU7CiAgICAgbXV0YWJsZSBi
b29sIG1fY2FjaGVkTWFpbkZyYW1lSGFzSG9yaXpvbnRhbFNjcm9sbGJhciB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzJjYTlk
YzIyYTcyYTUxMzNlNjk2OWQ2Y2YzNjdmZWYyYmJkMGIzMi4uOGU2NTlhNjVmYmMxNjc0N2EwZmU5
MzBkNjNmNmM3YjZiYjIzYjg1NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE5LTEwLTA4ICBKaWV3ZW4gVGFuICA8
amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBNb3ZlIHRoZSBtb2Nr
IHRlc3RpbmcgZW50cmFuY2UgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NjAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1
OTczNzkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlk
bDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
Y3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tD
b25maWd1cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFdlYkF1dGhl
bnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2Vp
dmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCisyMDE5LTEwLTA4ICBK
aWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgUGFydGlhbGx5IHVu
ZG8gcjI1MDgxMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAyNzE1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjA4NDI4Nz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0L25hdmlnYXRpb24tY2xpZW50LWRlZmF1bHQtY3J5cHRvLmh0bWw6CisgICAgICAgIE1v
ZGlmaWVkIHRvIGNyYXNoIGlmIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBkb2Vzbid0IHdyYXAgQ3J5
cHRvS2V5IG9iamVjdHMuCisKIDIwMTktMTAtMDggIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRA
YXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNTAzNzUpOiBbb2xkIEVXU10gSlND
IEVXUyBpcyBhbHdheXMgbWFya2luZyBQYXRjaGVzIGFzIHN1Y2Nlc3MKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L25hdmlnYXRpb24tY2xpZW50LWRlZmF1bHQt
Y3J5cHRvLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9uYXZpZ2F0aW9u
LWNsaWVudC1kZWZhdWx0LWNyeXB0by5odG1sCmluZGV4IGZiNzc3MDIxODc5ZGNkNzg4YWZkMDRj
ODM0MzI3OGZlOWZmZjdjZjAuLmE0OTZmZjM3YjBmMmMyMmZhYWY0NTBiM2I3MjViMzIyNWNhMmE5
NTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L25hdmlnYXRp
b24tY2xpZW50LWRlZmF1bHQtY3J5cHRvLmh0bWwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQvbmF2aWdhdGlvbi1jbGllbnQtZGVmYXVsdC1jcnlwdG8uaHRtbApAQCAtNTUs
NyArNTUsNyBAQCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgcHJpdmF0ZUtleUpTT04s
IHsgbmFtZTogJ1JTQVNTQS1QS0NTMS12MV81JywgaGFzaAogICAgIGZ1bmN0aW9uIHN0b3JlS2V5
KCkgewogICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigicnNhLWluZGV4
ZWRkYiIsICJyZWFkd3JpdGUiKS5vYmplY3RTdG9yZSgicnNhLWluZGV4ZWRkYiIpOwogICAgICAg
ICB0cnkgewotICAgICAgICAgICAgdmFyIHJlcSA9IG9iamVjdFN0b3JlLnB1dChrZXksICJteWtl
eSIpOworICAgICAgICAgICAgdmFyIHJlcSA9IG9iamVjdFN0b3JlLnB1dCh7IGtleToga2V5IH0s
ICJ0aGVLZXkiKTsKICAgICAgICAgICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsK
ICAgICAgICAgICAgICAgICBhbGVydCgnZmFpbGVkIHRvIHN0b3JlIGtleScpOwogICAgICAgICAg
ICAgfQpAQCAtNzAsMTIgKzcwLDEyIEBAIGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCBw
cml2YXRlS2V5SlNPTiwgeyBuYW1lOiAnUlNBU1NBLVBLQ1MxLXYxXzUnLCBoYXNoCiAKICAgICBm
dW5jdGlvbiByZWFkS2V5KCkgewogICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2Fj
dGlvbigicnNhLWluZGV4ZWRkYiIpLm9iamVjdFN0b3JlKCJyc2EtaW5kZXhlZGRiIik7Ci0gICAg
ICAgIHZhciByZXEgPSBvYmplY3RTdG9yZS5nZXQoIm15a2V5Iik7CisgICAgICAgIHZhciByZXEg
PSBvYmplY3RTdG9yZS5nZXQoInRoZUtleSIpOwogICAgICAgICByZXEub25lcnJvciA9IGZ1bmN0
aW9uKGV2ZW50KSB7CiAgICAgICAgICAgICBhbGVydCgnZmFpbGVkIHRvIHJlYWQga2V5Jyk7CiAg
ICAgICAgIH0KICAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAg
ICAgICAgICB3aW5kb3cucmV0cmlldmVkS2V5ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAg
ICAgICAgIHdpbmRvdy5yZXRyaWV2ZWRLZXkgPSBldmVudC50YXJnZXQucmVzdWx0LmtleTsKICAg
ICAgICAgICAgIGlmIChyZXRyaWV2ZWRLZXkudHlwZSAhPSAncHJpdmF0ZScpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGFsZXJ0KCJyZXRyaWV2ZWRLZXkudHlwZSAhPSAncHJpdmF0ZSc6ICIgKyBy
ZXRyaWV2ZWRLZXkudHlwZSk7CiAgICAgICAgICAgICBpZiAocmV0cmlldmVkS2V5LmV4dHJhY3Rh
YmxlICE9IHRydWUpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dlYkNyeXB0b01hc3RlcktleS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV2ViQ3J5cHRvTWFzdGVyS2V5Lm1tCmluZGV4IGE1NTExNGJiMzdhOGU4ZGNi
ZDRlMWU1Nzg5ODNkYTQzZDI1OWY3ZTIuLjkwZGZkZGFmZjk1YTc5ZGUyOGFkYTA2NzY2Y2JlODRj
YWUzM2I1NDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV2ViQ3J5cHRvTWFzdGVyS2V5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV2ViQ3J5cHRvTWFzdGVyS2V5Lm1tCkBAIC0zMiw2ICszMiw3IEBACiAKIHN0
YXRpYyBib29sIHJlY2VpdmVkTWVzc2FnZSA9IGZhbHNlOwogc3RhdGljIFN0cmluZyBnTWVzc2Fn
ZTsKK3N0YXRpYyBib29sIG1hc3RlcktleUNhbGxlZCA9IGZhbHNlOwogCiBAaW50ZXJmYWNlIFdl
YkNyeXB0b01hc3RlcktleU5hdmlnYXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRp
b25EZWxlZ2F0ZSwgV0tVSURlbGVnYXRlPgogQGVuZApAQCAtNDAsNiArNDEsNyBAQCBAaW1wbGVt
ZW50YXRpb24gV2ViQ3J5cHRvTWFzdGVyS2V5TmF2aWdhdGlvbkRlbGVnYXRlCiAKIC0gKE5TRGF0
YSAqKV93ZWJDcnlwdG9NYXN0ZXJLZXlGb3JXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3CiB7
CisgICAgbWFzdGVyS2V5Q2FsbGVkID0gdHJ1ZTsKICAgICByZXR1cm4gbmlsOwogfQogCkBAIC02
Niw2ICs2OCw3IEBAIFRFU1QoV2ViS2l0LCBXZWJDcnlwdG9OaWxNYXN0ZXJLZXkpCiAgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdl
dCgpXV07CiAgICAgVXRpbDo6cnVuKCZyZWNlaXZlZE1lc3NhZ2UpOwogICAgIEVYUEVDVF9XS19T
VFJFUSgiRGF0YUNsb25lRXJyb3IiLCBnTWVzc2FnZSk7CisgICAgRVhQRUNUX1RSVUUobWFzdGVy
S2V5Q2FsbGVkKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVu
bmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGVzdFJ1bm5lci5pZGwKaW5kZXggMDllYTk3YTRiYjU0NDQ4MGI2OTI2YWZkODI4YzFhYjYwNjYw
MmYwOS4uMWQyZDZlM2UzZTdkMjNjYWZmMzBjYjUzYjdmZmRlZTQxMTQ2M2QxOSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVu
bmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0zOTIsOCArMzkyLDcgQEAgaW50ZXJmYWNlIFRlc3RSdW5u
ZXIgewogCiAgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0KGRvdWJsZSBzZWNv
bmRzKTsKIAotICAgIC8vIFdlYkF1dGhOCi0gICAgdm9pZCBzZXRXZWJBdXRoZW50aWNhdGlvbk1v
Y2tDb25maWd1cmF0aW9uKG9iamVjdCBjb25maWd1cmF0aW9uKTsKKyAgICAvLyBXZWJBdXRobgog
ICAgIHZvaWQgYWRkVGVzdEtleVRvS2V5Y2hhaW4oRE9NU3RyaW5nIHByaXZhdGVLZXlCYXNlNjQs
IERPTVN0cmluZyBhdHRyTGFiZWwsIERPTVN0cmluZyBhcHBsaWNhdGlvblRhZ0Jhc2U2NCk7CiAg
ICAgdm9pZCBjbGVhblVwS2V5Y2hhaW4oRE9NU3RyaW5nIGF0dHJMYWJlbCwgb3B0aW9uYWwgRE9N
U3RyaW5nIGFwcGxpY2F0aW9uVGFnQmFzZTY0KTsKICAgICBib29sZWFuIGtleUV4aXN0c0luS2V5
Y2hhaW4oRE9NU3RyaW5nIGF0dHJMYWJlbCwgRE9NU3RyaW5nIGFwcGxpY2F0aW9uVGFnQmFzZTY0
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwCmluZGV4IDQ2MTMxY2NkNGU0ZDAwOGM5NWE0ZDJiMjEzNWMxYWQ5YTJiZjQ4Y2Qu
LmIyMTYyOGI5NGFlNzFhOGViMGU0OTFmY2EyYzdkNDE0NGUyNzZkMGEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAt
MjYzNSwzMDEgKzI2MzUsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFNlcnZpY2VXb3JrZXJGZXRj
aFRpbWVvdXQoZG91YmxlIHNlY29uZHMpCiAgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNz
YWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0
KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKIH0KIAotLy8gV2ViQXV0aE4KLXZvaWQg
VGVzdFJ1bm5lcjo6c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihKU1ZhbHVl
UmVmIGNvbmZpZ3VyYXRpb25WYWx1ZSkKLXsKLSAgICBhdXRvJiBpbmplY3RlZEJ1bmRsZSA9IElu
amVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKTsKLSAgICBXS0J1bmRsZUZyYW1lUmVmIG1haW5GcmFt
ZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShpbmplY3RlZEJ1bmRsZS5wYWdlKCktPnBhZ2Uo
KSk7Ci0gICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlw
dENvbnRleHQobWFpbkZyYW1lKTsKLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdChjb250ZXh0LCBj
b25maWd1cmF0aW9uVmFsdWUpKQotICAgICAgICByZXR1cm47Ci0gICAgSlNPYmplY3RSZWYgY29u
ZmlndXJhdGlvbiA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBjb25maWd1cmF0aW9uVmFsdWUs
IDApOwotCi0gICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPj4gY29uZmlndXJhdGlv
bktleXM7Ci0gICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLVHlwZVJlZj4+IGNvbmZpZ3VyYXRpb25W
YWx1ZXM7Ci0KLSAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc2lsZW50RmFpbHVyZVByb3Bl
cnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInNpbGVudEZhaWx1
cmUiKSk7Ci0gICAgSlNWYWx1ZVJlZiBzaWxlbnRGYWlsdXJlVmFsdWUgPSBKU09iamVjdEdldFBy
b3BlcnR5KGNvbnRleHQsIGNvbmZpZ3VyYXRpb24sIHNpbGVudEZhaWx1cmVQcm9wZXJ0eU5hbWUu
Z2V0KCksIDApOwotICAgIGlmICghSlNWYWx1ZUlzVW5kZWZpbmVkKGNvbnRleHQsIHNpbGVudEZh
aWx1cmVWYWx1ZSkpIHsKLSAgICAgICAgaWYgKCFKU1ZhbHVlSXNCb29sZWFuKGNvbnRleHQsIHNp
bGVudEZhaWx1cmVWYWx1ZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGJvb2wgc2ls
ZW50RmFpbHVyZSA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgc2lsZW50RmFpbHVyZVZhbHVl
KTsKLSAgICAgICAgY29uZmlndXJhdGlvbktleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIlNpbGVudEZhaWx1cmUiKSkpOwotICAgICAgICBjb25maWd1cmF0
aW9uVmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShzaWxlbnRGYWlsdXJlKSku
Z2V0KCkpOwotICAgIH0KLQotICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBsb2NhbFByb3Bl
cnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImxvY2FsIikpOwot
ICAgIEpTVmFsdWVSZWYgbG9jYWxWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwg
Y29uZmlndXJhdGlvbiwgbG9jYWxQcm9wZXJ0eU5hbWUuZ2V0KCksIDApOwotICAgIGlmICghSlNW
YWx1ZUlzVW5kZWZpbmVkKGNvbnRleHQsIGxvY2FsVmFsdWUpICYmICFKU1ZhbHVlSXNOdWxsKGNv
bnRleHQsIGxvY2FsVmFsdWUpKSB7Ci0gICAgICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0KGNvbnRl
eHQsIGxvY2FsVmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBKU09iamVjdFJl
ZiBsb2NhbCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBsb2NhbFZhbHVlLCAwKTsKLQotICAg
ICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYWNjZXB0QXV0aGVudGljYXRpb25Qcm9wZXJ0
eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJhY2NlcHRBdXRoZW50
aWNhdGlvbiIpKTsKLSAgICAgICAgSlNWYWx1ZVJlZiBhY2NlcHRBdXRoZW50aWNhdGlvblZhbHVl
ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBsb2NhbCwgYWNjZXB0QXV0aGVudGljYXRp
b25Qcm9wZXJ0eU5hbWUuZ2V0KCksIDApOwotICAgICAgICBpZiAoIUpTVmFsdWVJc0Jvb2xlYW4o
Y29udGV4dCwgYWNjZXB0QXV0aGVudGljYXRpb25WYWx1ZSkpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIGJvb2wgYWNjZXB0QXV0aGVudGljYXRpb24gPSBKU1ZhbHVlVG9Cb29sZWFuKGNv
bnRleHQsIGFjY2VwdEF1dGhlbnRpY2F0aW9uVmFsdWUpOwotCi0gICAgICAgIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBhY2NlcHRBdHRlc3RhdGlvblByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImFjY2VwdEF0dGVzdGF0aW9uIikpOwotICAgICAgICBK
U1ZhbHVlUmVmIGFjY2VwdEF0dGVzdGF0aW9uVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNv
bnRleHQsIGxvY2FsLCBhY2NlcHRBdHRlc3RhdGlvblByb3BlcnR5TmFtZS5nZXQoKSwgMCk7Ci0g
ICAgICAgIGlmICghSlNWYWx1ZUlzQm9vbGVhbihjb250ZXh0LCBhY2NlcHRBdHRlc3RhdGlvblZh
bHVlKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYm9vbCBhY2NlcHRBdHRlc3RhdGlv
biA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYWNjZXB0QXR0ZXN0YXRpb25WYWx1ZSk7Ci0K
LSAgICAgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPj4gbG9jYWxLZXlzOwotICAg
ICAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tUeXBlUmVmPj4gbG9jYWxWYWx1ZXM7Ci0gICAgICAg
IGxvY2FsS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
QWNjZXB0QXV0aGVudGljYXRpb24iKSkpOwotICAgICAgICBsb2NhbFZhbHVlcy5hcHBlbmQoYWRv
cHRXSyhXS0Jvb2xlYW5DcmVhdGUoYWNjZXB0QXV0aGVudGljYXRpb24pKS5nZXQoKSk7Ci0gICAg
ICAgIGxvY2FsS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiQWNjZXB0QXR0ZXN0YXRpb24iKSkpOwotICAgICAgICBsb2NhbFZhbHVlcy5hcHBlbmQoYWRv
cHRXSyhXS0Jvb2xlYW5DcmVhdGUoYWNjZXB0QXR0ZXN0YXRpb24pKS5nZXQoKSk7Ci0KLSAgICAg
ICAgaWYgKGFjY2VwdEF0dGVzdGF0aW9uKSB7Ci0gICAgICAgICAgICBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gcHJpdmF0ZUtleUJhc2U2NFByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoInByaXZhdGVLZXlCYXNlNjQiKSk7Ci0gICAgICAgICAgICBKU1Zh
bHVlUmVmIHByaXZhdGVLZXlCYXNlNjRWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4
dCwgbG9jYWwsIHByaXZhdGVLZXlCYXNlNjRQcm9wZXJ0eU5hbWUuZ2V0KCksIDApOwotICAgICAg
ICAgICAgaWYgKCFKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgcHJpdmF0ZUtleUJhc2U2NFZhbHVl
KSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiB1c2VyQ2VydGlmaWNhdGVCYXNlNjRQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJ1c2VyQ2VydGlmaWNhdGVCYXNlNjQiKSk7Ci0gICAg
ICAgICAgICBKU1ZhbHVlUmVmIHVzZXJDZXJ0aWZpY2F0ZUJhc2U2NFZhbHVlID0gSlNPYmplY3RH
ZXRQcm9wZXJ0eShjb250ZXh0LCBsb2NhbCwgdXNlckNlcnRpZmljYXRlQmFzZTY0UHJvcGVydHlO
YW1lLmdldCgpLCAwKTsKLSAgICAgICAgICAgIGlmICghSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQs
IHVzZXJDZXJ0aWZpY2F0ZUJhc2U2NFZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBpbnRlcm1lZGlhdGVDQUNlcnRp
ZmljYXRlQmFzZTY0UHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NCIpKTsKLSAgICAgICAgICAgIEpT
VmFsdWVSZWYgaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NFZhbHVlID0gSlNPYmplY3RH
ZXRQcm9wZXJ0eShjb250ZXh0LCBsb2NhbCwgaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2
NFByb3BlcnR5TmFtZS5nZXQoKSwgMCk7Ci0gICAgICAgICAgICBpZiAoIUpTVmFsdWVJc1N0cmlu
Zyhjb250ZXh0LCBpbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0VmFsdWUpKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgbG9jYWxLZXlzLmFwcGVuZChhZG9wdFdL
KFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJQcml2YXRlS2V5QmFzZTY0IikpKTsKLSAg
ICAgICAgICAgIGxvY2FsVmFsdWVzLmFwcGVuZCh0b1dLKGFkb3B0KEpTVmFsdWVUb1N0cmluZ0Nv
cHkoY29udGV4dCwgcHJpdmF0ZUtleUJhc2U2NFZhbHVlLCAwKSkuZ2V0KCkpKTsKLSAgICAgICAg
ICAgIGxvY2FsS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiVXNlckNlcnRpZmljYXRlQmFzZTY0IikpKTsKLSAgICAgICAgICAgIGxvY2FsVmFsdWVzLmFw
cGVuZCh0b1dLKGFkb3B0KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgdXNlckNlcnRpZmlj
YXRlQmFzZTY0VmFsdWUsIDApKS5nZXQoKSkpOwotICAgICAgICAgICAgbG9jYWxLZXlzLmFwcGVu
ZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJJbnRlcm1lZGlhdGVDQUNl
cnRpZmljYXRlQmFzZTY0IikpKTsKLSAgICAgICAgICAgIGxvY2FsVmFsdWVzLmFwcGVuZCh0b1dL
KGFkb3B0KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgaW50ZXJtZWRpYXRlQ0FDZXJ0aWZp
Y2F0ZUJhc2U2NFZhbHVlLCAwKSkuZ2V0KCkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0UHJvcGVydHlOYW1l
KEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygicHJlZmVycmVkVXNlcmhhbmRs
ZUJhc2U2NCIpKTsKLSAgICAgICAgSlNWYWx1ZVJlZiBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0
VmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGxvY2FsLCBwcmVmZXJyZWRVc2Vy
aGFuZGxlQmFzZTY0UHJvcGVydHlOYW1lLmdldCgpLCAwKTsKLSAgICAgICAgaWYgKCFKU1ZhbHVl
SXNVbmRlZmluZWQoY29udGV4dCwgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NFZhbHVlKSAmJiAh
SlNWYWx1ZUlzTnVsbChjb250ZXh0LCBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0VmFsdWUpKSB7
Ci0gICAgICAgICAgICBpZiAoIUpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCBwcmVmZXJyZWRVc2Vy
aGFuZGxlQmFzZTY0VmFsdWUpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAg
ICAgbG9jYWxLZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJQcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0IikpKTsKLSAgICAgICAgICAgIGxvY2FsVmFsdWVz
LmFwcGVuZCh0b1dLKGFkb3B0KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgcHJlZmVycmVk
VXNlcmhhbmRsZUJhc2U2NFZhbHVlLCAwKSkuZ2V0KCkpKTsKLSAgICAgICAgfQotCi0gICAgICAg
IFZlY3RvcjxXS1N0cmluZ1JlZj4gcmF3TG9jYWxLZXlzOwotICAgICAgICBWZWN0b3I8V0tUeXBl
UmVmPiByYXdMb2NhbFZhbHVlczsKLSAgICAgICAgcmF3TG9jYWxLZXlzLnJlc2l6ZShsb2NhbEtl
eXMuc2l6ZSgpKTsKLSAgICAgICAgcmF3TG9jYWxWYWx1ZXMucmVzaXplKGxvY2FsVmFsdWVzLnNp
emUoKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbG9jYWxLZXlzLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgICAgICByYXdMb2NhbEtleXNbaV0gPSBsb2NhbEtleXNbaV0uZ2V0KCk7
Ci0gICAgICAgICAgICByYXdMb2NhbFZhbHVlc1tpXSA9IGxvY2FsVmFsdWVzW2ldLmdldCgpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgY29uZmlndXJhdGlvbktleXMuYXBwZW5kKGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkxvY2FsIikpKTsKLSAgICAgICAgY29uZmlndXJh
dGlvblZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0RpY3Rpb25hcnlDcmVhdGUocmF3TG9jYWxLZXlz
LmRhdGEoKSwgcmF3TG9jYWxWYWx1ZXMuZGF0YSgpLCByYXdMb2NhbEtleXMuc2l6ZSgpKSkpOwot
ICAgIH0KLQotICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBoaWRQcm9wZXJ0eU5hbWUoQWRv
cHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJoaWQiKSk7Ci0gICAgSlNWYWx1ZVJl
ZiBoaWRWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgY29uZmlndXJhdGlvbiwg
aGlkUHJvcGVydHlOYW1lLmdldCgpLCAwKTsKLSAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChj
b250ZXh0LCBoaWRWYWx1ZSkgJiYgIUpTVmFsdWVJc051bGwoY29udGV4dCwgaGlkVmFsdWUpKSB7
Ci0gICAgICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIGhpZFZhbHVlKSkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgSlNPYmplY3RSZWYgaGlkID0gSlNWYWx1ZVRvT2JqZWN0
KGNvbnRleHQsIGhpZFZhbHVlLCAwKTsKLQotICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gc3RhZ2VQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJzdGFnZSIpKTsKLSAgICAgICAgSlNWYWx1ZVJlZiBzdGFnZVZhbHVlID0gSlNPYmplY3RHZXRQ
cm9wZXJ0eShjb250ZXh0LCBoaWQsIHN0YWdlUHJvcGVydHlOYW1lLmdldCgpLCAwKTsKLSAgICAg
ICAgaWYgKCFKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgc3RhZ2VWYWx1ZSkpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN1YlN0YWdlUHJv
cGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygic3ViU3RhZ2Ui
KSk7Ci0gICAgICAgIEpTVmFsdWVSZWYgc3ViU3RhZ2VWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVy
dHkoY29udGV4dCwgaGlkLCBzdWJTdGFnZVByb3BlcnR5TmFtZS5nZXQoKSwgMCk7Ci0gICAgICAg
IGlmICghSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIHN1YlN0YWdlVmFsdWUpKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBlcnJvclByb3Bl
cnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImVycm9yIikpOwot
ICAgICAgICBKU1ZhbHVlUmVmIGVycm9yVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRl
eHQsIGhpZCwgZXJyb3JQcm9wZXJ0eU5hbWUuZ2V0KCksIDApOwotICAgICAgICBpZiAoIUpTVmFs
dWVJc1N0cmluZyhjb250ZXh0LCBlcnJvclZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+PiBoaWRLZXlzOwotICAgICAg
ICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tUeXBlUmVmPj4gaGlkVmFsdWVzOwotICAgICAgICBoaWRL
ZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdGFnZSIp
KSk7Ci0gICAgICAgIGhpZFZhbHVlcy5hcHBlbmQodG9XSyhhZG9wdChKU1ZhbHVlVG9TdHJpbmdD
b3B5KGNvbnRleHQsIHN0YWdlVmFsdWUsIDApKS5nZXQoKSkpOwotICAgICAgICBoaWRLZXlzLmFw
cGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdWJTdGFnZSIpKSk7
Ci0gICAgICAgIGhpZFZhbHVlcy5hcHBlbmQodG9XSyhhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5
KGNvbnRleHQsIHN1YlN0YWdlVmFsdWUsIDApKS5nZXQoKSkpOwotICAgICAgICBoaWRLZXlzLmFw
cGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFcnJvciIpKSk7Ci0g
ICAgICAgIGhpZFZhbHVlcy5hcHBlbmQodG9XSyhhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNv
bnRleHQsIGVycm9yVmFsdWUsIDApKS5nZXQoKSkpOwotCi0gICAgICAgIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBwYXlsb2FkQmFzZTY0UHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygicGF5bG9hZEJhc2U2NCIpKTsKLSAgICAgICAgSlNWYWx1ZVJlZiBw
YXlsb2FkQmFzZTY0VmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGhpZCwgcGF5
bG9hZEJhc2U2NFByb3BlcnR5TmFtZS5nZXQoKSwgMCk7Ci0gICAgICAgIGlmICghSlNWYWx1ZUlz
VW5kZWZpbmVkKGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1ZSkgJiYgIUpTVmFsdWVJc051bGwo
Y29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlKSkgewotICAgICAgICAgICAgaWYgKCFKU1ZhbHVl
SXNBcnJheShjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFsdWUpKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICAgICAgSlNPYmplY3RSZWYgcGF5bG9hZEJhc2U2NCA9IEpTVmFsdWVU
b09iamVjdChjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFsdWUsIG51bGxwdHIpOwotICAgICAgICAg
ICAgc3RhdGljIGF1dG8gbGVuZ3RoUHJvcGVydHkgPSBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygibGVuZ3RoIikpOwotICAgICAgICAgICAgSlNWYWx1ZVJlZiBwYXlsb2FkQmFz
ZTY0TGVuZ3RoVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIHBheWxvYWRCYXNl
NjQsIGxlbmd0aFByb3BlcnR5LmdldCgpLCBudWxscHRyKTsKLSAgICAgICAgICAgIGlmICghSlNW
YWx1ZUlzTnVtYmVyKGNvbnRleHQsIHBheWxvYWRCYXNlNjRMZW5ndGhWYWx1ZSkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBhdXRvIHBheWxvYWRCYXNlNjRzID0gYWRv
cHRXSyhXS011dGFibGVBcnJheUNyZWF0ZSgpKTsKLSAgICAgICAgICAgIGF1dG8gcGF5bG9hZEJh
c2U2NExlbmd0aCA9IHN0YXRpY19jYXN0PHNpemVfdD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQs
IHBheWxvYWRCYXNlNjRMZW5ndGhWYWx1ZSwgbnVsbHB0cikpOwotICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBwYXlsb2FkQmFzZTY0TGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVmIHBheWxvYWRCYXNlNjRWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHlB
dEluZGV4KGNvbnRleHQsIHBheWxvYWRCYXNlNjQsIGksIG51bGxwdHIpOwotICAgICAgICAgICAg
ICAgIGlmICghSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1ZSkpCi0g
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIFdLQXJyYXlBcHBl
bmRJdGVtKHBheWxvYWRCYXNlNjRzLmdldCgpLCB0b1dLKGFkb3B0KEpTVmFsdWVUb1N0cmluZ0Nv
cHkoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlLCAwKSkuZ2V0KCkpLmdldCgpKTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgaGlkS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiUGF5bG9hZEJhc2U2NCIpKSk7Ci0gICAgICAgICAgICBoaWRW
YWx1ZXMuYXBwZW5kKHBheWxvYWRCYXNlNjRzKTsKLSAgICAgICAgfQotCi0gICAgICAgIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBpc1UyZlByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoImlzVTJmIikpOwotICAgICAgICBKU1ZhbHVlUmVmIGlzVTJmVmFs
dWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGhpZCwgaXNVMmZQcm9wZXJ0eU5hbWUu
Z2V0KCksIDApOwotICAgICAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCBpc1Uy
ZlZhbHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChjb250ZXh0LCBpc1UyZlZhbHVlKSkgewotICAgICAg
ICAgICAgaWYgKCFKU1ZhbHVlSXNCb29sZWFuKGNvbnRleHQsIGlzVTJmVmFsdWUpKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGJvb2wgaXNVMmYgPSBKU1ZhbHVlVG9Cb29s
ZWFuKGNvbnRleHQsIGlzVTJmVmFsdWUpOwotICAgICAgICAgICAgaGlkS2V5cy5hcHBlbmQoYWRv
cHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSXNVMmYiKSkpOwotICAgICAgICAg
ICAgaGlkVmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShpc1UyZikpLmdldCgp
KTsKLSAgICAgICAgfQotCi0gICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBrZWVwQWxp
dmVQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJrZWVw
QWxpdmUiKSk7Ci0gICAgICAgIEpTVmFsdWVSZWYga2VlcEFsaXZlVmFsdWUgPSBKU09iamVjdEdl
dFByb3BlcnR5KGNvbnRleHQsIGhpZCwga2VlcEFsaXZlUHJvcGVydHlOYW1lLmdldCgpLCAwKTsK
LSAgICAgICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwga2VlcEFsaXZlVmFsdWUp
ICYmICFKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIGtlZXBBbGl2ZVZhbHVlKSkgewotICAgICAgICAg
ICAgaWYgKCFKU1ZhbHVlSXNCb29sZWFuKGNvbnRleHQsIGtlZXBBbGl2ZVZhbHVlKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBib29sIGtlZXBBbGl2ZSA9IEpTVmFsdWVU
b0Jvb2xlYW4oY29udGV4dCwga2VlcEFsaXZlVmFsdWUpOwotICAgICAgICAgICAgaGlkS2V5cy5h
cHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiS2VlcEFsaXZlIikp
KTsKLSAgICAgICAgICAgIGhpZFZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUo
a2VlcEFsaXZlKSkuZ2V0KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IGZhc3REYXRhQXJyaXZhbFByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoImZhc3REYXRhQXJyaXZhbCIpKTsKLSAgICAgICAgSlNWYWx1ZVJl
ZiBmYXN0RGF0YUFycml2YWxWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgaGlk
LCBmYXN0RGF0YUFycml2YWxQcm9wZXJ0eU5hbWUuZ2V0KCksIDApOwotICAgICAgICBpZiAoIUpT
VmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCBmYXN0RGF0YUFycml2YWxWYWx1ZSkgJiYgIUpTVmFs
dWVJc051bGwoY29udGV4dCwgZmFzdERhdGFBcnJpdmFsVmFsdWUpKSB7Ci0gICAgICAgICAgICBp
ZiAoIUpTVmFsdWVJc0Jvb2xlYW4oY29udGV4dCwgZmFzdERhdGFBcnJpdmFsVmFsdWUpKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGJvb2wgZmFzdERhdGFBcnJpdmFsID0g
SlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBmYXN0RGF0YUFycml2YWxWYWx1ZSk7Ci0gICAgICAg
ICAgICBoaWRLZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJGYXN0RGF0YUFycml2YWwiKSkpOwotICAgICAgICAgICAgaGlkVmFsdWVzLmFwcGVuZChhZG9w
dFdLKFdLQm9vbGVhbkNyZWF0ZShmYXN0RGF0YUFycml2YWwpKS5nZXQoKSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gY29udGludWVBZnRlckVycm9yRGF0
YVByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImNvbnRp
bnVlQWZ0ZXJFcnJvckRhdGEiKSk7Ci0gICAgICAgIEpTVmFsdWVSZWYgY29udGludWVBZnRlckVy
cm9yRGF0YVZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBoaWQsIGNvbnRpbnVl
QWZ0ZXJFcnJvckRhdGFQcm9wZXJ0eU5hbWUuZ2V0KCksIDApOwotICAgICAgICBpZiAoIUpTVmFs
dWVJc1VuZGVmaW5lZChjb250ZXh0LCBjb250aW51ZUFmdGVyRXJyb3JEYXRhVmFsdWUpICYmICFK
U1ZhbHVlSXNOdWxsKGNvbnRleHQsIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGFWYWx1ZSkpIHsKLSAg
ICAgICAgICAgIGlmICghSlNWYWx1ZUlzQm9vbGVhbihjb250ZXh0LCBjb250aW51ZUFmdGVyRXJy
b3JEYXRhVmFsdWUpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGJvb2wg
Y29udGludWVBZnRlckVycm9yRGF0YSA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgY29udGlu
dWVBZnRlckVycm9yRGF0YVZhbHVlKTsKLSAgICAgICAgICAgIGhpZEtleXMuYXBwZW5kKGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEi
KSkpOwotICAgICAgICAgICAgaGlkVmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLQm9vbGVhbkNyZWF0
ZShjb250aW51ZUFmdGVyRXJyb3JEYXRhKSkuZ2V0KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGNhbkRvd25ncmFkZVByb3BlcnR5TmFtZShBZG9wdCwg
SlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImNhbkRvd25ncmFkZSIpKTsKLSAgICAgICAg
SlNWYWx1ZVJlZiBjYW5Eb3duZ3JhZGVWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4
dCwgaGlkLCBjYW5Eb3duZ3JhZGVQcm9wZXJ0eU5hbWUuZ2V0KCksIDApOwotICAgICAgICBpZiAo
IUpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCBjYW5Eb3duZ3JhZGVWYWx1ZSkgJiYgIUpTVmFs
dWVJc051bGwoY29udGV4dCwgY2FuRG93bmdyYWRlVmFsdWUpKSB7Ci0gICAgICAgICAgICBpZiAo
IUpTVmFsdWVJc0Jvb2xlYW4oY29udGV4dCwgY2FuRG93bmdyYWRlVmFsdWUpKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGJvb2wgY2FuRG93bmdyYWRlID0gSlNWYWx1ZVRv
Qm9vbGVhbihjb250ZXh0LCBjYW5Eb3duZ3JhZGVWYWx1ZSk7Ci0gICAgICAgICAgICBoaWRLZXlz
LmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYW5Eb3duZ3Jh
ZGUiKSkpOwotICAgICAgICAgICAgaGlkVmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLQm9vbGVhbkNy
ZWF0ZShjYW5Eb3duZ3JhZGUpKS5nZXQoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBWZWN0b3I8
V0tTdHJpbmdSZWY+IHJhd0hpZEtleXM7Ci0gICAgICAgIFZlY3RvcjxXS1R5cGVSZWY+IHJhd0hp
ZFZhbHVlczsKLSAgICAgICAgcmF3SGlkS2V5cy5yZXNpemUoaGlkS2V5cy5zaXplKCkpOwotICAg
ICAgICByYXdIaWRWYWx1ZXMucmVzaXplKGhpZFZhbHVlcy5zaXplKCkpOwotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGhpZEtleXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIHJh
d0hpZEtleXNbaV0gPSBoaWRLZXlzW2ldLmdldCgpOwotICAgICAgICAgICAgcmF3SGlkVmFsdWVz
W2ldID0gaGlkVmFsdWVzW2ldLmdldCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uZmlndXJh
dGlvbktleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkhp
ZCIpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb25WYWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tEaWN0
aW9uYXJ5Q3JlYXRlKHJhd0hpZEtleXMuZGF0YSgpLCByYXdIaWRWYWx1ZXMuZGF0YSgpLCByYXdI
aWRLZXlzLnNpemUoKSkpKTsKLSAgICB9Ci0KLSAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
bmZjUHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibmZj
IikpOwotICAgIEpTVmFsdWVSZWYgbmZjVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRl
eHQsIGNvbmZpZ3VyYXRpb24sIG5mY1Byb3BlcnR5TmFtZS5nZXQoKSwgMCk7Ci0gICAgaWYgKCFK
U1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgbmZjVmFsdWUpICYmICFKU1ZhbHVlSXNOdWxsKGNv
bnRleHQsIG5mY1ZhbHVlKSkgewotICAgICAgICBpZiAoIUpTVmFsdWVJc09iamVjdChjb250ZXh0
LCBuZmNWYWx1ZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEpTT2JqZWN0UmVmIG5m
YyA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBuZmNWYWx1ZSwgMCk7Ci0KLSAgICAgICAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGVycm9yUHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiZXJyb3IiKSk7Ci0gICAgICAgIEpTVmFsdWVSZWYgZXJyb3JW
YWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgbmZjLCBlcnJvclByb3BlcnR5TmFt
ZS5nZXQoKSwgMCk7Ci0gICAgICAgIGlmICghSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIGVycm9y
VmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIFZlY3RvcjxXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4+IG5mY0tleXM7Ci0gICAgICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1R5
cGVSZWY+PiBuZmNWYWx1ZXM7Ci0gICAgICAgIG5mY0tleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkVycm9yIikpKTsKLSAgICAgICAgbmZjVmFsdWVzLmFw
cGVuZCh0b1dLKGFkb3B0KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgZXJyb3JWYWx1ZSwg
MCkpLmdldCgpKSk7Ci0KLSAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBheWxvYWRC
YXNlNjRQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJw
YXlsb2FkQmFzZTY0IikpOwotICAgICAgICBKU1ZhbHVlUmVmIHBheWxvYWRCYXNlNjRWYWx1ZSA9
IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgbmZjLCBwYXlsb2FkQmFzZTY0UHJvcGVydHlO
YW1lLmdldCgpLCAwKTsKLSAgICAgICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwg
cGF5bG9hZEJhc2U2NFZhbHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChjb250ZXh0LCBwYXlsb2FkQmFz
ZTY0VmFsdWUpKSB7Ci0gICAgICAgICAgICBpZiAoIUpTVmFsdWVJc0FycmF5KGNvbnRleHQsIHBh
eWxvYWRCYXNlNjRWYWx1ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAg
ICBKU09iamVjdFJlZiBwYXlsb2FkQmFzZTY0ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIHBh
eWxvYWRCYXNlNjRWYWx1ZSwgbnVsbHB0cik7Ci0gICAgICAgICAgICBzdGF0aWMgYXV0byBsZW5n
dGhQcm9wZXJ0eSA9IGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJsZW5ndGgi
KSk7Ci0gICAgICAgICAgICBKU1ZhbHVlUmVmIHBheWxvYWRCYXNlNjRMZW5ndGhWYWx1ZSA9IEpT
T2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgcGF5bG9hZEJhc2U2NCwgbGVuZ3RoUHJvcGVydHku
Z2V0KCksIG51bGxwdHIpOwotICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNOdW1iZXIoY29udGV4
dCwgcGF5bG9hZEJhc2U2NExlbmd0aFZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgICAgIGF1dG8gcGF5bG9hZEJhc2U2NHMgPSBhZG9wdFdLKFdLTXV0YWJsZUFycmF5
Q3JlYXRlKCkpOwotICAgICAgICAgICAgYXV0byBwYXlsb2FkQmFzZTY0TGVuZ3RoID0gc3RhdGlj
X2Nhc3Q8c2l6ZV90PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgcGF5bG9hZEJhc2U2NExlbmd0
aFZhbHVlLCBudWxscHRyKSk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBh
eWxvYWRCYXNlNjRMZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgcGF5
bG9hZEJhc2U2NFZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgcGF5
bG9hZEJhc2U2NCwgaSwgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNT
dHJpbmcoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlKSkKLSAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0ocGF5bG9hZEJhc2U2
NHMuZ2V0KCksIHRvV0soYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBwYXlsb2Fk
QmFzZTY0VmFsdWUsIDApKS5nZXQoKSkuZ2V0KCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBuZmNLZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJQYXlsb2FkQmFzZTY0IikpKTsKLSAgICAgICAgICAgIG5mY1ZhbHVlcy5hcHBlbmQocGF5bG9h
ZEJhc2U2NHMpOwotICAgICAgICB9Ci0KLSAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IG11bHRpcGxlVGFnc1Byb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIm11bHRpcGxlVGFncyIpKTsKLSAgICAgICAgSlNWYWx1ZVJlZiBtdWx0aXBsZVRhZ3NW
YWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgbmZjLCBtdWx0aXBsZVRhZ3NQcm9w
ZXJ0eU5hbWUuZ2V0KCksIDApOwotICAgICAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChjb250
ZXh0LCBtdWx0aXBsZVRhZ3NWYWx1ZSkgJiYgIUpTVmFsdWVJc051bGwoY29udGV4dCwgbXVsdGlw
bGVUYWdzVmFsdWUpKSB7Ci0gICAgICAgICAgICBpZiAoIUpTVmFsdWVJc0Jvb2xlYW4oY29udGV4
dCwgbXVsdGlwbGVUYWdzVmFsdWUpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIGJvb2wgbXVsdGlwbGVUYWdzID0gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBtdWx0aXBs
ZVRhZ3NWYWx1ZSk7Ci0gICAgICAgICAgICBuZmNLZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJNdWx0aXBsZVRhZ3MiKSkpOwotICAgICAgICAgICAgbmZj
VmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShtdWx0aXBsZVRhZ3MpKS5nZXQo
KSk7Ci0gICAgICAgIH0KLQotICAgICAgICBWZWN0b3I8V0tTdHJpbmdSZWY+IHJhd05mY0tleXM7
Ci0gICAgICAgIFZlY3RvcjxXS1R5cGVSZWY+IHJhd05mY1ZhbHVlczsKLSAgICAgICAgcmF3TmZj
S2V5cy5yZXNpemUobmZjS2V5cy5zaXplKCkpOwotICAgICAgICByYXdOZmNWYWx1ZXMucmVzaXpl
KG5mY1ZhbHVlcy5zaXplKCkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5mY0tl
eXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIHJhd05mY0tleXNbaV0gPSBuZmNLZXlzW2ld
LmdldCgpOwotICAgICAgICAgICAgcmF3TmZjVmFsdWVzW2ldID0gbmZjVmFsdWVzW2ldLmdldCgp
OwotICAgICAgICB9Ci0KLSAgICAgICAgY29uZmlndXJhdGlvbktleXMuYXBwZW5kKGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk5mYyIpKSk7Ci0gICAgICAgIGNvbmZpZ3Vy
YXRpb25WYWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd05mY0tleXMu
ZGF0YSgpLCByYXdOZmNWYWx1ZXMuZGF0YSgpLCByYXdOZmNLZXlzLnNpemUoKSkpKTsKLSAgICB9
Ci0KLSAgICBWZWN0b3I8V0tTdHJpbmdSZWY+IHJhd0NvbmZpZ3VyYXRpb25LZXlzOwotICAgIFZl
Y3RvcjxXS1R5cGVSZWY+IHJhd0NvbmZpZ3VyYXRpb25WYWx1ZXM7Ci0gICAgcmF3Q29uZmlndXJh
dGlvbktleXMucmVzaXplKGNvbmZpZ3VyYXRpb25LZXlzLnNpemUoKSk7Ci0gICAgcmF3Q29uZmln
dXJhdGlvblZhbHVlcy5yZXNpemUoY29uZmlndXJhdGlvblZhbHVlcy5zaXplKCkpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY29uZmlndXJhdGlvbktleXMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgcmF3Q29uZmlndXJhdGlvbktleXNbaV0gPSBjb25maWd1cmF0aW9uS2V5c1tpXS5nZXQo
KTsKLSAgICAgICAgcmF3Q29uZmlndXJhdGlvblZhbHVlc1tpXSA9IGNvbmZpZ3VyYXRpb25WYWx1
ZXNbaV0uZ2V0KCk7Ci0gICAgfQotCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3Nh
Z2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0V2ViQXV0
aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbiIpKTsKLSAgICBXS1JldGFpblB0cjxXS0RpY3Rp
b25hcnlSZWY+IG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhXS0RpY3Rpb25hcnlDcmVhdGUocmF3Q29u
ZmlndXJhdGlvbktleXMuZGF0YSgpLCByYXdDb25maWd1cmF0aW9uVmFsdWVzLmRhdGEoKSwgcmF3
Q29uZmlndXJhdGlvbktleXMuc2l6ZSgpKSk7Ci0gICAgCi0gICAgV0tCdW5kbGVQb3N0U3luY2hy
b25vdXNNZXNzYWdlKGluamVjdGVkQnVuZGxlLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwg
bWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOwotfQotCisvLyBXZWJBdXRobgogdm9pZCBUZXN0
UnVubmVyOjphZGRUZXN0S2V5VG9LZXljaGFpbihKU1N0cmluZ1JlZiBwcml2YXRlS2V5QmFzZTY0
LCBKU1N0cmluZ1JlZiBhdHRyTGFiZWwsIEpTU3RyaW5nUmVmIGFwcGxpY2F0aW9uVGFnQmFzZTY0
KQogewogICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4+IGtleXM7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4
IGZmOWY5NzJmZGQ2NDNjZmIzZWM0ZThjMTUwYWEwY2EwZjkyZDY2MDAuLjkxZTgzZWM2MTEzMDJj
MjE4ZTU4NWJhOWZhMjA4NjhkMTdhZjQ1Y2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC00OTIsOCArNDkyLDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0KGRvdWJsZSBzZWNv
bmRzKTsKICAgICAKLSAgICAvLyBXZWJBdXRoTgotICAgIHZvaWQgc2V0V2ViQXV0aGVudGljYXRp
b25Nb2NrQ29uZmlndXJhdGlvbihKU1ZhbHVlUmVmKTsKKyAgICAvLyBXZWJBdXRobgogICAgIC8v
IEZJWE1FKDE4OTg3NikKICAgICB2b2lkIGFkZFRlc3RLZXlUb0tleWNoYWluKEpTU3RyaW5nUmVm
IHByaXZhdGVLZXlCYXNlNjQsIEpTU3RyaW5nUmVmIGF0dHJMYWJlbCwgSlNTdHJpbmdSZWYgYXBw
bGljYXRpb25UYWdCYXNlNjQpOwogICAgIHZvaWQgY2xlYW5VcEtleWNoYWluKEpTU3RyaW5nUmVm
IGF0dHJMYWJlbCwgSlNTdHJpbmdSZWYgYXBwbGljYXRpb25UYWdCYXNlNjQpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBlY2Q3ZDliOGNjYjEzY2Y0ZjUz
YjQwZWQ3N2Y4MTJlNjYyYzgwZmNlLi42NTdiNzliOTMwZDgxZDY4NTY4ZGI3MzFiZGVhNTA4Nzkz
NzZkZjA2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAt
MzYyMSwxMSArMzYyMSw2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFNlcnZpY2VXb3JrZXJG
ZXRjaFRpbWVvdXRGb3JUZXN0aW5nKGRvdWJsZSBzZWNvbmRzKQogICAgIFdLQ29udGV4dFNldFNl
cnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nKHBsYXRmb3JtQ29udGV4dCgpLCBzZWNv
bmRzKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0V2ViQXV0aGVudGljYXRpb25Nb2Nr
Q29uZmlndXJhdGlvbihXS0RpY3Rpb25hcnlSZWYgY29uZmlndXJhdGlvbikKLXsKLSAgICBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKFRlc3RD
b250cm9sbGVyOjp3ZWJzaXRlRGF0YVN0b3JlKCksIGNvbmZpZ3VyYXRpb24pOwotfQotCiBzdHJ1
Y3QgQWRDbGlja0F0dHJpYnV0aW9uU3RyaW5nUmVzdWx0Q2FsbGJhY2tDb250ZXh0IHsKICAgICBl
eHBsaWNpdCBBZENsaWNrQXR0cmlidXRpb25TdHJpbmdSZXN1bHRDYWxsYmFja0NvbnRleHQoVGVz
dENvbnRyb2xsZXImIGNvbnRyb2xsZXIpCiAgICAgICAgIDogdGVzdENvbnRyb2xsZXIoY29udHJv
bGxlcikKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCA1MzBiMzM0
ODQyYjZjMTJmNWM0YzU1YjE3NjUyOWYzNDIzYmU3MzY1Li40YmY5MDIzYWI3MjJhMDkxMDFlZDI1
MGZiODI4Y2I3ZjJhYjVhNDZlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5oCkBAIC0yOTYsNyArMjk2LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRTZXJ2aWNlV29y
a2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyhkb3VibGUgc2Vjb25kcyk7CiAKLSAgICB2b2lkIHNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oV0tEaWN0aW9uYXJ5UmVmKTsKICAg
ICB2b2lkIGFkZFRlc3RLZXlUb0tleWNoYWluKGNvbnN0IFN0cmluZyYgcHJpdmF0ZUtleUJhc2U2
NCwgY29uc3QgU3RyaW5nJiBhdHRyTGFiZWwsIGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25UYWdC
YXNlNjQpOwogICAgIHZvaWQgY2xlYW5VcEtleWNoYWluKGNvbnN0IFN0cmluZyYgYXR0ckxhYmVs
LCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVGFnQmFzZTY0KTsKICAgICBib29sIGtleUV4aXN0
c0luS2V5Y2hhaW4oY29uc3QgU3RyaW5nJiBhdHRyTGFiZWwsIGNvbnN0IFN0cmluZyYgYXBwbGlj
YXRpb25UYWdCYXNlNjQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cAppbmRleCBhZThkNTk0ZGNhODcxYjM0ZjcyOTc5YzQyODIwOTZmYTRiYTM3YjQ3Li5hOGY5YTc5
YmU5NTg1N2I3MDBkN2ZhYjY3NzI4OTc1Yzk5NGQwNGIyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTYzMCwxMiArMTYzMCw2IEBAIFdLUmV0YWluUHRy
PFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VG
cm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0V2ViQXV0aGVudGlj
YXRpb25Nb2NrQ29uZmlndXJhdGlvbiIpKSB7Ci0gICAgICAgIEFTU0VSVChXS0dldFR5cGVJRCht
ZXNzYWdlQm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOwotICAgICAgICBUZXN0Q29u
dHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlv
bihzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KSk7Ci0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIH0KLQogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKG1lc3NhZ2VOYW1lLCAiQWRkVGVzdEtleVRvS2V5Y2hhaW4iKSkgewogICAgICAgICBBU1NF
UlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRGljdGlvbmFyeUdldFR5cGVJRCgpKTsK
ICAgICAgICAgV0tEaWN0aW9uYXJ5UmVmIHRlc3RLZXlEaWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8
V0tEaWN0aW9uYXJ5UmVmPihtZXNzYWdlQm9keSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzJjODQ0YmMwNWY2NmRmNTcy
MzI4N2RjNWE2MjYxMmQ0NzhmODVjYy4uNmI0MTQ3MTYyMTMyOWE3NDFlZjQ3OTM2NTBhZmM4Mzc2
NTA0NDBhYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE5LTEwLTA4ICBKaWV3ZW4gVGFuICA8
amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBNb3ZlIHRoZSBtb2Nr
IHRlc3RpbmcgZW50cmFuY2UgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NjAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1
OTczNzkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtZmFpbHVyZS5odHRwcy5odG1sOgorICAgICAg
ICAqIGh0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLXN1Y2Nlc3MuaHR0cHMuaHRtbDoKKyAgICAg
ICAgKiBodHRwL3dwdC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0dHBzLmh0bWw6CisgICAg
ICAgICogaHR0cC93cHQvd2ViYXV0aG4vaWRsLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWhpZC1zaWxl
bnQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtaGlkLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLXNp
bGVudC5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sOgorICAgICAgICAqIGh0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1uZmMu
aHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLXNpbGVudC5odHRwcy5odG1sOgorICAgICAgICAqIGh0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYu
aHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtY3JlYXRlLWZhaWx1cmUuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWw6
CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0
ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy5odG1sOgorICAg
ICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3Vj
Y2Vzcy11MmYuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1sOgorICAgICAg
ICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1o
aWQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLmh0bWw6CisgICAgICAgICog
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxvY2Fs
Lmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWdldC1mYWlsdXJlLW5mYy5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBz
Lmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWdldC1mYWlsdXJlLXUyZi5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS5odHRwcy5odG1sOgorICAgICAgICAq
IGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQu
aHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbmZjLmh0dHBzLmh0bWw6
CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1z
dWNjZXNzLXUyZi5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3Jlc291
cmNlcy9wdWJsaWMta2V5LWNyZWRlbnRpYWwtaXAtYWRkcmVzcy5odHRwcy5odG1sOgorCisyMDE5
LTEwLTA4ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgUGFy
dGlhbGx5IHVuZG8gcjI1MDgxMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAyNzE1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjA4NDI4Nz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBTb21lIHJlYmFzZWxp
bmVzLgorCisgICAgICAgICogY3J5cHRvL3dvcmtlcnMvc3VidGxlL2VjLXBvc3RNZXNzYWdlLXdv
cmtlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogY3J5cHRvL3dvcmtlcnMvc3VidGxlL2hyc2Et
cG9zdE1lc3NhZ2Utd29ya2VyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBjcnlwdG8vd29ya2Vy
cy9zdWJ0bGUvcnNhLXBvc3RNZXNzYWdlLXdvcmtlci1leHBlY3RlZC50eHQ6CisKIDIwMTktMTAt
MDggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBN
YWtlIGZhc3QvdGV4dC9jb21wbGV4LWluaXRpYWwtYWR2YW5jZS5odG1sIG1vcmUgcm9idXN0CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUvZWMtcG9zdE1lc3Nh
Z2Utd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRs
ZS9lYy1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4IDJmOWIzYTA2ZmUzMzEz
ZWFmZDQwZjdiYzQ1NDRkMGNiNTAxMDc4ZDAuLjc1YmM3OWVlN2FlMzBmN2JhNWY5OTU3NDcwMDJi
YjgwYWZiOWI0NmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRs
ZS9lYy1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Ny
eXB0by93b3JrZXJzL3N1YnRsZS9lYy1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0CkBA
IC0zLDE0ICszLDYgQEAgVGVzdCBzZW5kaW5nIGVjIGNyeXB0byBrZXlzIHZpYSBwb3N0TWVzc2Fn
ZSB0byBhIHdvcmtlci4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIEFsbCBj
aGVja3MgcGFzc2VkIGluIHdvcmtlciBmb3IgcHVibGljIGtleQotUEFTUyBwdWJsaWNLZXkudHlw
ZSBpcyAncHVibGljJwotUEFTUyBwdWJsaWNLZXkuZXh0cmFjdGFibGUgaXMgdHJ1ZQotUEFTUyBw
dWJsaWNLZXkuYWxnb3JpdGhtLm5hbWUgaXMgJ0VDREgnCi1QQVNTIHB1YmxpY0tleS5hbGdvcml0
aG0ubmFtZWRDdXJ2ZSBpcyAnUC0yNTYnCi1QQVNTIHB1YmxpY0tleS51c2FnZXMgaXMgWyBdCi1Q
QVNTIGV4cG9ydGVkS2V5LnggaXMgcHVibGljS2V5SlNPTi54Ci1QQVNTIGV4cG9ydGVkS2V5Lnkg
aXMgcHVibGljS2V5SlNPTi55CiBQQVNTIEFsbCBjaGVja3MgcGFzc2VkIGluIHdvcmtlciBmb3Ig
cHJpdmF0ZSBrZXkKIFBBU1MgcHJpdmF0ZUtleS50eXBlIGlzICdwcml2YXRlJwogUEFTUyBwcml2
YXRlS2V5LmV4dHJhY3RhYmxlIGlzIHRydWUKQEAgLTIwLDYgKzEyLDE0IEBAIFBBU1MgcHJpdmF0
ZUtleS51c2FnZXMgaXMgWydkZXJpdmVCaXRzJ10KIFBBU1MgZXhwb3J0ZWRLZXkueCBpcyBwcml2
YXRlS2V5SlNPTi54CiBQQVNTIGV4cG9ydGVkS2V5LnkgaXMgcHJpdmF0ZUtleUpTT04ueQogUEFT
UyBleHBvcnRlZEtleS5kIGlzIHByaXZhdGVLZXlKU09OLmQKK1BBU1MgQWxsIGNoZWNrcyBwYXNz
ZWQgaW4gd29ya2VyIGZvciBwdWJsaWMga2V5CitQQVNTIHB1YmxpY0tleS50eXBlIGlzICdwdWJs
aWMnCitQQVNTIHB1YmxpY0tleS5leHRyYWN0YWJsZSBpcyB0cnVlCitQQVNTIHB1YmxpY0tleS5h
bGdvcml0aG0ubmFtZSBpcyAnRUNESCcKK1BBU1MgcHVibGljS2V5LmFsZ29yaXRobS5uYW1lZEN1
cnZlIGlzICdQLTI1NicKK1BBU1MgcHVibGljS2V5LnVzYWdlcyBpcyBbIF0KK1BBU1MgZXhwb3J0
ZWRLZXkueCBpcyBwdWJsaWNLZXlKU09OLngKK1BBU1MgZXhwb3J0ZWRLZXkueSBpcyBwdWJsaWNL
ZXlKU09OLnkKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVU
RQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL2hyc2EtcG9z
dE1lc3NhZ2Utd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJz
L3N1YnRsZS9ocnNhLXBvc3RNZXNzYWdlLXdvcmtlci1leHBlY3RlZC50eHQKaW5kZXggNmUxZDZm
ZTUzMDgyN2Q0OWY4ZWM5ZjY2ZjYxNzEyMjQ3MzRhMzJkMC4uMGVkNzRmOWZmZjRjYzFmZjJiMmE1
MWVmMDIzZDJhZDAzZmNiNjg2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtl
cnMvc3VidGxlL2hyc2EtcG9zdE1lc3NhZ2Utd29ya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUvaHJzYS1wb3N0TWVzc2FnZS13b3JrZXItZXhw
ZWN0ZWQudHh0CkBAIC0zLDE0ICszLDYgQEAgVGVzdCBzZW5kaW5nIGhhc2hlZCByc2EgY3J5cHRv
IGtleXMgdmlhIHBvc3RNZXNzYWdlIHRvIGEgd29ya2VyLgogT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgogCiAKLVBBU1MgQWxsIGNoZWNrcyBwYXNzZWQgaW4gd29ya2VyIGZvciBwdWJsaWMga2V5
Ci1QQVNTIHB1YmxpY0tleS50eXBlIGlzICdwdWJsaWMnCi1QQVNTIHB1YmxpY0tleS5leHRyYWN0
YWJsZSBpcyB0cnVlCi1QQVNTIHB1YmxpY0tleS5hbGdvcml0aG0ubmFtZSBpcyAnUlNBU1NBLVBL
Q1MxLXYxXzUnCi1QQVNTIHB1YmxpY0tleS5hbGdvcml0aG0ubW9kdWx1c0xlbmd0aCBpcyAyMDQ4
Ci1QQVNTIGJ5dGVzVG9IZXhTdHJpbmcocHVibGljS2V5LmFsZ29yaXRobS5wdWJsaWNFeHBvbmVu
dCkgaXMgJzAxMDAwMScKLVBBU1MgcHVibGljS2V5LmFsZ29yaXRobS5oYXNoLm5hbWUgaXMgJ1NI
QS0yNTYnCi1QQVNTIHB1YmxpY0tleS51c2FnZXMgaXMgWyd2ZXJpZnknXQogUEFTUyBBbGwgY2hl
Y2tzIHBhc3NlZCBpbiB3b3JrZXIgZm9yIHByaXZhdGUga2V5CiBQQVNTIHByaXZhdGVLZXkudHlw
ZSBpcyAncHJpdmF0ZScKIFBBU1MgcHJpdmF0ZUtleS5leHRyYWN0YWJsZSBpcyBmYWxzZQpAQCAt
MTksNiArMTEsMTQgQEAgUEFTUyBwcml2YXRlS2V5LmFsZ29yaXRobS5tb2R1bHVzTGVuZ3RoIGlz
IDIwNDgKIFBBU1MgYnl0ZXNUb0hleFN0cmluZyhwcml2YXRlS2V5LmFsZ29yaXRobS5wdWJsaWNF
eHBvbmVudCkgaXMgJzAxMDAwMScKIFBBU1MgcHJpdmF0ZUtleS5hbGdvcml0aG0uaGFzaC5uYW1l
IGlzICdTSEEtMjU2JwogUEFTUyBwcml2YXRlS2V5LnVzYWdlcyBpcyBbJ3NpZ24nXQorUEFTUyBB
bGwgY2hlY2tzIHBhc3NlZCBpbiB3b3JrZXIgZm9yIHB1YmxpYyBrZXkKK1BBU1MgcHVibGljS2V5
LnR5cGUgaXMgJ3B1YmxpYycKK1BBU1MgcHVibGljS2V5LmV4dHJhY3RhYmxlIGlzIHRydWUKK1BB
U1MgcHVibGljS2V5LmFsZ29yaXRobS5uYW1lIGlzICdSU0FTU0EtUEtDUzEtdjFfNScKK1BBU1Mg
cHVibGljS2V5LmFsZ29yaXRobS5tb2R1bHVzTGVuZ3RoIGlzIDIwNDgKK1BBU1MgYnl0ZXNUb0hl
eFN0cmluZyhwdWJsaWNLZXkuYWxnb3JpdGhtLnB1YmxpY0V4cG9uZW50KSBpcyAnMDEwMDAxJwor
UEFTUyBwdWJsaWNLZXkuYWxnb3JpdGhtLmhhc2gubmFtZSBpcyAnU0hBLTI1NicKK1BBU1MgcHVi
bGljS2V5LnVzYWdlcyBpcyBbJ3ZlcmlmeSddCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NyeXB0by93b3Jr
ZXJzL3N1YnRsZS9yc2EtcG9zdE1lc3NhZ2Utd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9yc2EtcG9zdE1lc3NhZ2Utd29ya2VyLWV4cGVjdGVk
LnR4dAppbmRleCA2MTkyMWM0MjE0ODIyMzIyZjg2M2RiYmIyYmNmYzNjY2M3MTBkZDFiLi4wYzM5
NzkwMGZiZWU5YzkzMjk5Njg2ZmQwMzVkNGQ3YjRiODVjODk4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUvcnNhLXBvc3RNZXNzYWdlLXdvcmtlci1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL3JzYS1wb3N0TWVz
c2FnZS13b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0zLDE2ICszLDYgQEAgVGVzdCBzZW5kaW5nIHJz
YSBjcnlwdG8ga2V5cyB2aWEgcG9zdE1lc3NhZ2UgdG8gYSB3b3JrZXIuCiBPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCiAKIAotUEFTUyBBbGwgY2hlY2tzIHBhc3NlZCBpbiB3b3JrZXIgZm9yIHB1
YmxpYyBrZXkKLVBBU1MgcHVibGljS2V5LnR5cGUgaXMgJ3B1YmxpYycKLVBBU1MgcHVibGljS2V5
LmV4dHJhY3RhYmxlIGlzIHRydWUKLVBBU1MgcHVibGljS2V5LmFsZ29yaXRobS5uYW1lIGlzICdS
U0FFUy1QS0NTMS12MV81JwotUEFTUyBwdWJsaWNLZXkuYWxnb3JpdGhtLm1vZHVsdXNMZW5ndGgg
aXMgMjA0OAotUEFTUyBieXRlc1RvSGV4U3RyaW5nKHB1YmxpY0tleS5hbGdvcml0aG0ucHVibGlj
RXhwb25lbnQpIGlzICcwMTAwMDEnCi1QQVNTIHB1YmxpY0tleS5hbGdvcml0aG0uaGFzaCBpcyB1
bmRlZmluZWQuCi1QQVNTIHB1YmxpY0tleS51c2FnZXMgaXMgWydlbmNyeXB0J10KLVBBU1MgZXhw
b3J0ZWRLZXkubiBpcyBwdWJsaWNLZXlKU09OLm4KLVBBU1MgZXhwb3J0ZWRLZXkuZSBpcyBwdWJs
aWNLZXlKU09OLmUKIFBBU1MgQWxsIGNoZWNrcyBwYXNzZWQgaW4gd29ya2VyIGZvciBwcml2YXRl
IGtleQogUEFTUyBwcml2YXRlS2V5LnR5cGUgaXMgJ3ByaXZhdGUnCiBQQVNTIHByaXZhdGVLZXku
ZXh0cmFjdGFibGUgaXMgdHJ1ZQpAQCAtMjksNiArMTksMTYgQEAgUEFTUyBleHBvcnRlZEtleS5x
IGlzIHByaXZhdGVLZXlKU09OLnEKIFBBU1MgZXhwb3J0ZWRLZXkuZHAgaXMgcHJpdmF0ZUtleUpT
T04uZHAKIFBBU1MgZXhwb3J0ZWRLZXkuZHEgaXMgcHJpdmF0ZUtleUpTT04uZHEKIFBBU1MgZXhw
b3J0ZWRLZXkucWkgaXMgcHJpdmF0ZUtleUpTT04ucWkKK1BBU1MgQWxsIGNoZWNrcyBwYXNzZWQg
aW4gd29ya2VyIGZvciBwdWJsaWMga2V5CitQQVNTIHB1YmxpY0tleS50eXBlIGlzICdwdWJsaWMn
CitQQVNTIHB1YmxpY0tleS5leHRyYWN0YWJsZSBpcyB0cnVlCitQQVNTIHB1YmxpY0tleS5hbGdv
cml0aG0ubmFtZSBpcyAnUlNBRVMtUEtDUzEtdjFfNScKK1BBU1MgcHVibGljS2V5LmFsZ29yaXRo
bS5tb2R1bHVzTGVuZ3RoIGlzIDIwNDgKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhwdWJsaWNLZXku
YWxnb3JpdGhtLnB1YmxpY0V4cG9uZW50KSBpcyAnMDEwMDAxJworUEFTUyBwdWJsaWNLZXkuYWxn
b3JpdGhtLmhhc2ggaXMgdW5kZWZpbmVkLgorUEFTUyBwdWJsaWNLZXkudXNhZ2VzIGlzIFsnZW5j
cnlwdCddCitQQVNTIGV4cG9ydGVkS2V5Lm4gaXMgcHVibGljS2V5SlNPTi5uCitQQVNTIGV4cG9y
dGVkS2V5LmUgaXMgcHVibGljS2V5SlNPTi5lCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL2N0YXAtaGlkLWZhaWx1cmUuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL2N0YXAtaGlkLWZhaWx1cmUuaHR0cHMuaHRtbAppbmRleCA0ZjBmZDZhYTA2NjA5
Yzk0MzUxNmY5ZTc2YTgzNzZjYWE2ZGE5MmQ5Li45ZDUzZTFkNDQwMjE3MWJjZDQ4N2YxMTJlNjA2
NDI2NmFmZmYwZWRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9j
dGFwLWhpZC1mYWlsdXJlLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vY3RhcC1oaWQtZmFpbHVyZS5odHRwcy5odG1sCkBAIC0yMSw1MCArMjEsNTAgQEAKICAg
ICB9OwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlv
bk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAiaW5p
dCIsIGVycm9yOiAiZGF0YS1ub3Qtc2VudCIgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogImluaXQiLCBlcnJv
cjogImRhdGEtbm90LXNlbnQiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0
LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShkZWZhdWx0
T3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJDVEFQIEhJRCB3aXRo
IGluaXQgc3ViIHN0YWdlIGRhdGEgbm90IHNlbnQgZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50
aWNhdG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50
aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdl
OiAiaW5pdCIsIGVycm9yOiAiZW1wdHktcmVwb3J0IiB9IH0pOworICAgICAgICBpZiAod2luZG93
LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAiaW5pdCIs
IGVycm9yOiAiZW1wdHktcmVwb3J0IiB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVj
dHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVm
YXVsdE9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiQ1RBUCBISUQg
d2l0aCBpbml0IHN1YiBzdGFnZSBlbXB0eSByZXBvcnQgZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRo
ZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKLSAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRo
ZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0
YWdlOiAiaW5pdCIsIGVycm9yOiAid3JvbmctY2hhbm5lbC1pZCIgfSB9KTsKKyAgICAgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTog
ImluaXQiLCBlcnJvcjogIndyb25nLWNoYW5uZWwtaWQiIH0gfSk7CiAgICAgICAgIHJldHVybiBw
cm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxz
LmNyZWF0ZShkZWZhdWx0T3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0s
ICJDVEFQIEhJRCB3aXRoIGluaXQgc3ViIHN0YWdlIHdyb25nIGNoYW5uZWwgaWQgZXJyb3IgaW4g
YSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9u
KHQpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdl
OiAiaW5mbyIsIHN1YlN0YWdlOiAiaW5pdCIsIGVycm9yOiAid3Jvbmctbm9uY2UiIH0gfSk7Cisg
ICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwg
c3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJ3cm9uZy1ub25jZSIgfSB9KTsKICAgICAgICAgcmV0
dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuY3JlYXRlKGRlZmF1bHRPcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAg
ICAgfSwgIkNUQVAgSElEIHdpdGggaW5pdCBzdWIgc3RhZ2Ugd3Jvbmcgbm9uY2UgZXJyb3IgaW4g
YSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9u
KHQpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdl
OiAiaW5mbyIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJkYXRhLW5vdC1zZW50IiB9IH0pOwor
ICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIs
IHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJkYXRhLW5vdC1zZW50IiB9IH0pOwogICAgICAgICBy
ZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsK
ICAgICB9LCAiQ1RBUCBISUQgd2l0aCBtc2cgc3ViIHN0YWdlIGRhdGEgbm90IHNlbnQgZXJyb3Ig
aW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0
aW9uKHQpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVz
dFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0
YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJlbXB0eS1yZXBvcnQiIH0gfSk7
CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNl
dE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZv
Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogImVtcHR5LXJlcG9ydCIgfSB9KTsKICAgICAgICAg
cmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuY3JlYXRlKGRlZmF1bHRPcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7
CiAgICAgfSwgIkNUQVAgSElEIHdpdGggbXNnIHN1YiBzdGFnZSBlbXB0eSByZXBvcnQgZXJyb3Ig
aW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0
aW9uKHQpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVz
dFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0
YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ3cm9uZy1jaGFubmVsLWlkIiB9
IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFs
cy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAi
aW5mbyIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ3cm9uZy1jaGFubmVsLWlkIiB9IH0pOwog
ICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmln
YXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVk
IG91dC4iKTsKICAgICB9LCAiQ1RBUCBISUQgd2l0aCBtc2cgc3ViIHN0YWdlIHdyb25nIGNoYW5u
ZWwgaWQgZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlz
ZV90ZXN0KGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9u
KHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ3cm9u
Zy1jaGFubmVsLWlkIiwgcGF5bG9hZEJhc2U2NDpbdGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNl
NjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50
ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3Rh
Z2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIndyb25nLWNoYW5uZWwtaWQi
LCBwYXlsb2FkQmFzZTY0Olt0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJhc2U2NF0gfSB9KTsKICAg
ICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3Iu
Y3JlZGVudGlhbHMuY3JlYXRlKGRlZmF1bHRPcHRpb25zKSwgIlVua25vd24gaW50ZXJuYWwgZXJy
b3IuIEVycm9yIGNvZGU6IDE4Iik7CiAgICAgfSwgIkNUQVAgSElEIHdpdGggcmVxdWVzdDo6bXNn
IHN0YWdlIHdyb25nIGNoYW5uZWwgaWQgZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9y
LiIpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9jdGFwLWhpZC1zdWNjZXNzLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9jdGFwLWhpZC1zdWNjZXNzLmh0dHBzLmh0bWwKaW5kZXggOGU1ZDA5NWU1ZmQ5ODNmYWFh
YzRkN2UzYTQ2MmIwY2NkZDk3ZDYwNS4uYjZmOTFmOGMzZWZhNjkwNzY4ZTc3ZTVkZGIwMzM5YTQw
YzdkOTk3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1o
aWQtc3VjY2Vzcy5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhu
L2N0YXAtaGlkLXN1Y2Nlc3MuaHR0cHMuaHRtbApAQCAtMjAsOCArMjAsOCBAQAogICAgIH07CiAK
ICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0Nv
bmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBl
cnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2
NF0sIGtlZXBBbGl2ZTogdHJ1ZSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJz
dWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdLCBrZWVw
QWxpdmU6IHRydWUgfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5j
cmVhdGUoZGVmYXVsdE9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBh
c3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCB1bmRlZmluZWQpOwogICAgICAgICAgICAgYXNz
ZXJ0X25vdF9lcXVhbHMoY3JlZGVudGlhbCwgbnVsbCk7CkBAIC0yOSw4ICsyOSw4IEBACiAgICAg
fSwgIkNUQVAgSElEIHdpdGgga2VlcCBhbGl2ZSBtZXNzYWdlIGluIGEgbW9jayBoaWQgYXV0aGVu
dGljYXRvci4iKTsKIAogICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7Ci0gICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVu
dGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJT
dGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRp
b25NZXNzYWdlQmFzZTY0XSwgZmFzdERhdGFBcnJpdmFsOiB0cnVlIH0gfSk7CisgICAgICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3Rh
Z2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdENyZWF0aW9u
TWVzc2FnZUJhc2U2NF0sIGZhc3REYXRhQXJyaXZhbDogdHJ1ZSB9IH0pOwogICAgICAgICByZXR1
cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucykudGhlbihjcmVk
ZW50aWFsID0+IHsKICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIHVu
ZGVmaW5lZCk7CiAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCBudWxs
KTsKQEAgLTM4LDggKzM4LDggQEAKICAgICB9LCAiQ1RBUCBISUQgd2l0aCBmYXN0IGRhdGEgYXJy
aXZhbCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKICAgICBwcm9taXNlX3Rlc3Qo
ZnVuY3Rpb24odCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6
IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJlbXB0eS1yZXBvcnQi
LCBwYXlsb2FkQmFzZTY0OiBbdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NF0sIGNvbnRpbnVlQWZ0
ZXJFcnJvckRhdGE6IHRydWUgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogImluaXQiLCBlcnJvcjogImVtcHR5
LXJlcG9ydCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSwgY29u
dGludWVBZnRlckVycm9yRGF0YTogdHJ1ZSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9y
LmNyZWRlbnRpYWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsK
ICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIHVuZGVmaW5lZCk7CiAg
ICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCBudWxsKTsKQEAgLTQ3LDgg
KzQ3LDggQEAKICAgICB9LCAiQ1RBUCBISUQgd2l0aCBjb250aW51ZSBhZnRlciBlbXB0eSByZXBv
cnQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1
bmN0aW9uKHQpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAiaW5pdCIsIGVycm9yOiAid3JvbmctY2hhbm5lbC1p
ZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSwgY29udGludWVB
ZnRlckVycm9yRGF0YTogdHJ1ZSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAiaW5pdCIsIGVycm9yOiAid3Jv
bmctY2hhbm5lbC1pZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0
XSwgY29udGludWVBZnRlckVycm9yRGF0YTogdHJ1ZSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucykudGhlbihjcmVkZW50aWFs
ID0+IHsKICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIHVuZGVmaW5l
ZCk7CiAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCBudWxsKTsKQEAg
LTU2LDggKzU2LDggQEAKICAgICB9LCAiQ1RBUCBISUQgd2l0aCBjb250aW51ZSBhZnRlciB3cm9u
ZyBjaGFubmVsIGlkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIAogICAgIHByb21p
c2VfdGVzdChmdW5jdGlvbih0KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlv
bih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogImluaXQiLCBlcnJvcjogIndyb25n
LW5vbmNlIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdLCBjb250
aW51ZUFmdGVyRXJyb3JEYXRhOiB0cnVlIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6
ICJ3cm9uZy1ub25jZSIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0
XSwgY29udGludWVBZnRlckVycm9yRGF0YTogdHJ1ZSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucykudGhlbihjcmVkZW50aWFs
ID0+IHsKICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIHVuZGVmaW5l
ZCk7CiAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCBudWxsKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtbmZjLWZhaWx1cmUu
aHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtbmZjLWZhaWx1
cmUuaHR0cHMuaHRtbAppbmRleCA1YzBiMWI4YWU0Njg4N2Y1ZmJhNWIxMzNiODgyZjRlNjQ5ZDhh
ZDI0Li4yMDUwNjBhYzY3ZjRiMzJjNzAzMGM4MzhmMmVjZTE0MGEyMjNmNGFjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0dHBzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1uZmMtZmFpbHVyZS5o
dHRwcy5odG1sCkBAIC0yMSwxNCArMjEsMTQgQEAKICAgICB9OwogCiAgICAgcHJvbWlzZV90ZXN0
KGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZj
OiB7IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0Olt0ZXN0TmZjVTJm
VmVyc2lvbkJhc2U2NCwgIiJdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQor
ICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24oeyBuZmM6IHsgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6W3Rl
c3ROZmNVMmZWZXJzaW9uQmFzZTY0LCAiIl0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VS
ZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRl
KGRlZmF1bHRPcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIkNUQVAg
TkZDIHdpdGggZW1wdHkgYXBkdSByZXNwb25zZSBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3Iu
Iik7CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBh
eWxvYWRCYXNlNjQ6W3Rlc3ROZmNVMmZWZXJzaW9uQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0
YU9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbih7IG5mYzogeyBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDpb
dGVzdE5mY1UyZlZlcnNpb25CYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNl
QmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93
ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlvbnMpLCAi
T3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiQ1RBUCBORkMgd2l0aCB3cm9uZyBkYXRh
IGVycm9yIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKIDwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vaWRsLmh0dHBzLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9pZGwuaHR0cHMuaHRtbAppbmRleCBkYzEyYjcyMjRi
MWUwZmQwNjg1Nzk3MDUwYWNjOWVmZmI5ODVjZjYxLi4wOWFmY2IwZTE2ZTQ3MzgxMDhiNWU5Yzgw
NWZhZjdjYjk3ZmU0ZDk4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9pZGwuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9pZGwu
aHR0cHMuaHRtbApAQCAtNTIsOCArNTIsOCBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4gewog
ICAgICAgICB9CiAgICAgfTsKICAgICAvLyBBIG1vY2sgYXR0ZXN0YXRpb24gb2JqZWN0Ci0gICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRp
Y2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3Rh
Z2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdENyZWF0aW9u
TWVzc2FnZUJhc2U2NF0gfSB9KTsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAg
aW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsg
c3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBwYXls
b2FkQmFzZTY0OiBbdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NF0gfSB9KTsKICAgICBjcmVhdGVk
Q3JlZGVudGlhbCA9IGF3YWl0IG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoY3JlYXRpb25P
cHRpb25zKTsKIAogICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zID0gewpAQCAtNjEsOCArNjEsOCBA
QCBwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4gewogICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNl
NjRVUkwucGFyc2UoIk1USXpORFUyIiksCiAgICAgICAgIH0KICAgICB9OwotICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1v
Y2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNn
IiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RBc3NlcnRpb25NZXNzYWdl
QmFzZTY0XSB9IH0pOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5h
bHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTog
InJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNl
NjQ6IFt0ZXN0QXNzZXJ0aW9uTWVzc2FnZUJhc2U2NF0gfSB9KTsKICAgICByZXF1ZXN0ZWRDcmVk
ZW50aWFsID0gYXdhaXQgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChyZXF1ZXN0T3B0aW9ucyk7
CiAKICAgICBpZGxBcnJheS5hZGRfb2JqZWN0cyh7IlB1YmxpY0tleUNyZWRlbnRpYWwiOiBbImNy
ZWF0ZWRDcmVkZW50aWFsIl0sICJBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSI6IFsi
Y3JlYXRlZENyZWRlbnRpYWwucmVzcG9uc2UiXSwgIkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZSI6IFsicmVxdWVzdGVkQ3JlZGVudGlhbC5yZXNwb25zZSJdfSk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRl
LWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWhpZC1zaWxlbnQuaHR0
cHMuaHRtbAppbmRleCA2NmI1ZGE0ZjM5OTJjZWNmNjE3OGI3ZjZiNjNiZjY3ZTc4ZDg1MjM2Li5m
MzU4NjZhNmUzNjE2NjVhMzI1MGVlZDU5NGJjNDBkYTJkMGI2ZDJkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZh
aWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1oaWQtc2lsZW50Lmh0
dHBzLmh0bWwKQEAgLTIxLDggKzIxLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVl
LCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGlj
aW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFz
ZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGlu
dGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFp
bHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJy
b3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0RHVtbXlNZXNzYWdl
UGF5bG9hZEJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJO
b3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAi
T3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Y3JlYXRlXV0gd2l0aCBtYWxpY2lvdXMgcGF5bG9hZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0
b3IuIik7CiAKQEAgLTQ0LDggKzQ0LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVl
LCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInVuc3Vw
cG9ydGVkLW9wdGlvbnMiIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
eyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6
ICJtc2ciLCBlcnJvcjogInVuc3VwcG9ydGVkLW9wdGlvbnMiIH0gfSk7CiAgICAgICAgIHJldHVy
biBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdW5zdXBwb3J0ZWQgb3B0aW9ucyBp
biBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTY3LDggKzY3LDggQEAKICAgICAg
ICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRp
b24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3Rh
Z2U6ICJtc2ciLCBlcnJvcjogInVuc3VwcG9ydGVkLW9wdGlvbnMiIH0gfSk7CisgICAgICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3Rh
Z2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInVuc3VwcG9ydGVkLW9wdGlv
bnMiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVy
cm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0
aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdp
dGggdW5zdXBwb3J0ZWQgb3B0aW9ucyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIDIiKTsK
IApAQCAtOTAsOCArOTAsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0
aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAidW5zdXBwb3J0ZWQt
b3B0aW9ucyIgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAg
ICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVu
dEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIs
IGVycm9yOiAidW5zdXBwb3J0ZWQtb3B0aW9ucyIgfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21p
c2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3Jl
YXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5
Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtaXhlZCBvcHRpb25zIGluIGEgbW9jayBoaWQg
YXV0aGVudGljYXRvci4iKTsKIApAQCAtMTExLDggKzExMSw4IEBACiAgICAgICAgICAgIH0KICAg
ICAgICB9OwogCi0gICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3Rh
Z2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2Fk
IiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJyQ3JlZGVudGlhbEV4Y2x1ZGVkT25seVJlc3Bv
bnNlQmFzZTY0XSB9IH0pOworICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAg
ICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBh
eWxvYWQiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEN0YXBFcnJDcmVkZW50aWFsRXhjbHVkZWRPbmx5
UmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJJ
bnZhbGlkU3RhdGVFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyks
ICJBdCBsZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNsdWRl
Q3JlZGVudGlhbHMgbGlzdCBpbiB0aGUgYXV0aGVudGljYXRvci4iKTsKICAgIH0sICJQdWJsaWNL
ZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIEludmFsaWRTdGF0ZUVycm9yIGluIGEgbW9j
ayBoaWQgYXV0aGVudGljYXRvci4iKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJl
LWhpZC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWhpZC5odHRwcy5odG1sCmluZGV4IDJmODM3YzY2
MzI2Yjg3ZmY3YTkyODdhYjE3MDJkYWQzNDAwNjZkZjAuLjEwY2ZlYWRmZTU2MjZiYzg0ZjlmMGVj
MjkwNDBhYTkyZDdiYjg5MjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1oaWQuaHR0cHMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLWZhaWx1cmUtaGlkLmh0dHBzLmh0bWwKQEAgLTUsOCArNSw4IEBACiA8c2NyaXB0IHNy
Yz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogICAgIC8vIERlZmF1
bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGl0IGlmIHRoZXkg
bmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlv
bih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFs
aWNpb3VzLXBheWxvYWQiIH0gfSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAg
IGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5
bG9hZCIgfSB9KTsKIAogICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CiAgICAgICAgIGNv
bnN0IG9wdGlvbnMgPSB7CkBAIC00NSw4ICs0NSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAg
IH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdl
OiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIs
IHBheWxvYWRCYXNlNjQ6IFt0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJhc2U2NF0gfSB9KTsKKyAg
ICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3Qi
LCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFz
ZTY0OiBbdGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVy
biBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxz
LmNyZWF0ZShvcHRpb25zKSwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIEVycm9yIGNvZGU6IDI1
NSIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hbGlj
aW91cyBwYXlsb2FkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtNjcsOCAr
NjcsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1z
ZyIsIGVycm9yOiAidW5zdXBwb3J0ZWQtb3B0aW9ucyIgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1z
ZyIsIGVycm9yOiAidW5zdXBwb3J0ZWQtb3B0aW9ucyIgfSB9KTsKICAgICAgICAgcmV0dXJuIHBy
b21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3Jl
YXRlKG9wdGlvbnMpLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogNDMiKTsK
ICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1bnN1cHBvcnRl
ZCBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtODksOCArODks
OCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2Nr
Q29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIs
IGVycm9yOiAidW5zdXBwb3J0ZWQtb3B0aW9ucyIgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIs
IGVycm9yOiAidW5zdXBwb3J0ZWQtb3B0aW9ucyIgfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21p
c2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRl
KG9wdGlvbnMpLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogNDMiKTsKICAg
ICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1bnN1cHBvcnRlZCBv
cHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gMiIpOwogCkBAIC0xMTIsOCArMTEy
LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9j
a0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ci
LCBlcnJvcjogInVuc3VwcG9ydGVkLW9wdGlvbnMiIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ci
LCBlcnJvcjogInVuc3VwcG9ydGVkLW9wdGlvbnMiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9t
aXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNy
ZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWl4ZWQgb3B0aW9ucyBpbiBhIG1vY2sgaGlk
IGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTEzNCw4ICsxMzQsOCBAQAogICAgICAgICAgICAgfQog
ICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAidW5zdXBwb3J0ZWQt
b3B0aW9ucyIgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAg
ICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAidW5zdXBwb3J0ZWQt
b3B0aW9ucyIgfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3du
RXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiVW5rbm93biBp
bnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogNDMiKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtaXhlZCBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVu
dGljYXRvci4gMiIpOwogCkBAIC0xNTUsOCArMTU1LDggQEAKICAgICAgICAgICAgIH0KICAgICAg
ICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3Rh
Z2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2Fk
IiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJyQ3JlZGVudGlhbEV4Y2x1ZGVkT25seVJlc3Bv
bnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAg
ICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlk
OiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMt
cGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3RhcEVyckNyZWRlbnRpYWxFeGNsdWRlZE9u
bHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQs
ICJJbnZhbGlkU3RhdGVFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9u
cyksICJBdCBsZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNs
dWRlQ3JlZGVudGlhbHMgbGlzdCBpbiB0aGUgYXV0aGVudGljYXRvci4iKTsKICAgICB9LCAiUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBJbnZhbGlkU3RhdGVFcnJvciBpbiBh
IG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFp
bHVyZS1sb2NhbC1zaWxlbnQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC1zaWxlbnQuaHR0
cHMuaHRtbAppbmRleCA2YTAwYmVkZTZkZDliZTc4MzA2YWU3ZDQwZTc1ZmVkM2JjNGNhYzJkLi40
ZGNmNGEyOTRkOWZlNzNjN2MyMTZmOGZkMTk0ZTMyNjY3YTc2OGU2IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZh
aWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLXNpbGVu
dC5odHRwcy5odG1sCkBAIC05LDggKzksOCBAQAogICAgICAgICBjb25zdCBwcml2YXRlS2V5QmFz
ZTY0ID0gYXdhaXQgZ2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7CiAgICAgICAgIGNvbnN0IGNy
ZWRlbnRpYWxJRCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChwcml2YXRlS2V5QmFzZTY0
KTsKICAgICAgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8g
b3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhl
bnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBsb2NhbDog
eyBhY2NlcHRBdXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9
IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFs
cy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTog
dHJ1ZSwgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IGZhbHNlLCBhY2NlcHRBdHRlc3Rh
dGlvbjogZmFsc2UgfSB9KTsKIAogICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAg
ICAgICBjb25zdCBvcHRpb25zID0gewpAQCAtMTIxLDggKzEyMSw4IEBACiAgICAgICAgICAgICAg
ICAgICAgIHRpbWVvdXQ6IDEwCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfTsKLSAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJl
OiB0cnVlLCBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0QXR0ZXN0
YXRpb246IGZhbHNlIH0gfSk7CisgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9u
OiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKICAgICAgICAgICAgIHJldHVy
biBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgICAgIH0s
ICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHNpbGVudCBmYWlsdXJlIGlu
IGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiA1Iik7CiAKQEAgLTE0Miw4ICsxNDIsOCBAQAog
ICAgICAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH07Ci0gICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24o
eyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1
ZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisgICAgICAgICAgICBpZiAod2luZG93
LmludGVybmFscykgeworICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgbG9jYWw6IHsgYWNj
ZXB0QXV0aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOwog
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4ocHJpdmF0ZUtl
eUJhc2U2NCwgdGVzdFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4i
KS50aGVuKCgpID0+IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0
ZS1mYWlsdXJlLWxvY2FsLmh0dHBzLmh0bWwKaW5kZXggYzNjOTM3MjY0NGIzODE0Y2I0YTM0NWMz
NTE5NjEzODc4ZWVlMjQ1My4uMzljN2VjN2ZhYzU0ZGY3MTdkYjM3YWEwODQ5NTdkNzQwYzI3MmU1
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJl
LWxvY2FsLmh0dHBzLmh0bWwKQEAgLTksOCArOSw4IEBACiAgICAgICAgIGNvbnN0IHByaXZhdGVL
ZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKICAgICAgICAgY29u
c3QgY3JlZGVudGlhbElEID0gYXdhaXQgY2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlC
YXNlNjQpOwogICAgICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVl
ZCB0byBvdmVycmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2Vi
QXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRp
Y2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisgICAgICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjog
ZmFsc2UsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOwogCiAgICAgICAgIHByb21pc2Vf
dGVzdCh0ID0+IHsKICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CkBAIC0xMTYsOCArMTE2
LDggQEAKICAgICAgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1
YmxpYy1rZXkiLCBhbGc6IC03IH1dCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfTsK
LSAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBsb2NhbDogeyBh
Y2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7
CisgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgICAgICBpbnRl
cm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFj
Y2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsK
ICAgICAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIlVua25vd24gaW50ZXJuYWwgZXJy
b3IuIik7CiAgICAgICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRo
b3V0IGF0dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC0x
MzYsOCArMTM2LDggQEAKICAgICAgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sg
dHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dCiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfTsKLSAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7
IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjog
ZmFsc2UgfSB9KTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
eyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0QXR0ZXN0YXRpb246
IGZhbHNlIH0gfSk7CiAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9LZXlj
aGFpbihwcml2YXRlS2V5QmFzZTY0LCB0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25F
cnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJVbmtub3duIGlu
dGVybmFsIGVycm9yLiIpLnRoZW4oKCkgPT4gewpAQCAtMTY0LDggKzE2NCw4IEBACiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwg
YWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisgICAgICAgICAgICBpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwg
YWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CiAgICAgICAgICAgICByZXR1cm4gcHJvbWlz
ZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVh
dGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgICAgICB9LCAiUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB0aW1lb3V0IGluIGEgbW9jayBsb2NhbCBh
dXRoZW50aWNhdG9yLiIpOwogICAgIH0pKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbmZjLmh0
dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtY3JlYXRlLWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwKaW5kZXggNDgyNDg1NzMzYzVhZjM3
MjM4MzIxYjZmMjRiMjIwMzRkZmVkNGI3MS4uMjUzNTNmMDkyNjhhYTU3MWI4N2ZkMmIxMTUzZWM4
NmQ4NjJmMTQ1YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUt
ZmFpbHVyZS1uZmMuaHR0cHMuaHRtbApAQCAtNSw4ICs1LDggQEAKIDxzY3JpcHQgc3JjPSIuL3Jl
c291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAgICAgLy8gRGVmYXVsdCBtb2Nr
IGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaXQgaWYgdGhleSBuZWVkIGRp
ZmZlcmVudCBjb25maWd1cmF0aW9uLgotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAg
ICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZj
OiB7IGVycm9yOiAibm8tdGFncyIgfSB9KTsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBu
ZmM6IHsgZXJyb3I6ICJuby10YWdzIiB9IH0pOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9u
KHQpIHsKICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKQEAgLTY2LDggKzY2LDggQEAKICAgICAg
ICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRp
b24oeyBuZmM6IHsgZXJyb3I6ICJ3cm9uZy10YWctdHlwZSIgfSB9KTsKKyAgICAgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogIndyb25nLXRhZy10eXBlIiB9IH0p
OwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5h
dmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0
LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHdyb25n
IHRhZyB0eXBlIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKIApAQCAtODgsOCArODgs
OCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2Nr
Q29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogIm5vLWNvbm5lY3Rpb25zIiB9IH0pOworICAg
ICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAibm8tY29ubmVj
dGlvbnMiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dl
ZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlv
biB0aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1d
IHdpdGggbm8gY29ubmVjdGlvbnMgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOwogCkBA
IC0xMTAsOCArMTEwLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhl
bnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJtYWxpY2lvdXMtcGF5
bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFsgXSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVy
bmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFz
ZTY0OiBbIF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxv
d2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0
aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRl
XV0gd2l0aCBudWxsIHZlcnNpb24gaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOwogCkBA
IC0xMzIsOCArMTMyLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhl
bnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJtYWxpY2lvdXMtcGF5
bG9hZCIsIHBheWxvYWRCYXNlNjQ6W3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0p
OworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5z
ZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAibWFs
aWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0Olt0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJh
c2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2Vk
RXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9u
IHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0g
d2l0aCB3cm9uZyB2ZXJzaW9uIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYt
c2lsZW50Lmh0dHBzLmh0bWwKaW5kZXggYWVkOTdjMjU2NjE2MjlkYjlhYzcwMzhlMTcxN2M0NDg0
OGVmNmFkNC4uN2U3MDRmN2UxMWNkZTMzMTA0OTAxNGM5MzM3ZjZkYWQ5MWNjOGEzYyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWNyZWF0ZS1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJm
LXNpbGVudC5odHRwcy5odG1sCkBAIC0yMSw4ICsyMSw4IEBACiAgICAgICAgICAgICB9CiAgICAg
ICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVz
dFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFp
bHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJy
b3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbIkFR
PT0iXSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGlu
dGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFp
bHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJy
b3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbIkFR
PT0iXSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRF
cnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24g
dGltZWQgb3V0LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3
aXRoIG1hbGZvcm1lZCBBUERVIHBheWxvYWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIp
OwogCkBAIC00Myw4ICs0Myw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJB
dXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlk
OiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMt
cGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9y
T25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0
YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXls
b2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwog
ICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmln
YXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIp
OwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hbGZvcm1l
ZCBVMkYgcmVnaXN0ZXIgcmVzcG9uc2UgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwog
CkBAIC02NSw4ICs2NSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRo
ZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5
bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVJbnNOb3RTdXBw
b3J0ZWRPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwg
c3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUs
IHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNwb25zZUJh
c2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2Vk
RXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9u
IHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0g
d2l0aCByZWdpc3RlciBjb21tYW5kIGVycm9yIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4i
KTsKIApAQCAtODgsOCArODgsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2Vi
QXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhp
ZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3Vz
LXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJv
ck9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5UmVzcG9u
c2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAg
ICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxl
bnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ci
LCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6
IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1SW5zTm90
U3VwcG9ydGVkT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlz
ZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVh
dGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGJvZ3VzIGNvbW1hbmQgZXJyb3IgaW4gYSBtb2Nr
IGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC0xMTAsOCArMTEwLDggQEAKICAgICAgICAgICAg
IH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
ICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBz
aWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJt
c2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNl
NjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9F
cnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBz
dWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwg
cGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NCwgdGVz
dFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4g
cHJvbWlzZVJlamVjdHModCwgIkludmFsaWRTdGF0ZUVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmNyZWF0ZShvcHRpb25zKSwgIkF0IGxlYXN0IG9uZSBjcmVkZW50aWFsIG1hdGNoZXMgYW4g
ZW50cnkgb2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBsaXN0IGluIHRoZSBhdXRoZW50aWNhdG9y
LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGZpcnN0
IGV4Y2x1ZGUgY3JlZGVudGlhbCBtYXRjaGVkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4i
KTsKIApAQCAtMTMzLDggKzEzMyw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRX
ZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwg
aGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lv
dXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9u
Z0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJh
c2U2NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAg
ICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5
bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFP
bmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NCwg
dGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1
cm4gcHJvbWlzZVJlamVjdHModCwgIkludmFsaWRTdGF0ZUVycm9yIiwgbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkF0IGxlYXN0IG9uZSBjcmVkZW50aWFsIG1hdGNoZXMg
YW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBsaXN0IGluIHRoZSBhdXRoZW50aWNh
dG9yLiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHNl
Y29uZCBleGNsdWRlIGNyZWRlbnRpYWwgbWF0Y2hlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0
b3IuIik7CiAKQEAgLTE1Niw4ICsxNTYsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9Owog
Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIu
c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRy
dWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFs
aWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1
Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVDb25k
aXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlv
bnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlS
ZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAg
ICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7
IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTog
Im1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJh
c2U2NDogW3Rlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2
NCwgdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0
ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RV
MmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHBy
b21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Y3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBmaXJzdCBleGNsdWRlIGNyZWRlbnRpYWwg
bWF0Y2hlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIFRlc3Qgb2YgdXNlciBwcmVzZW5j
ZS4iKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi5odHRwcy5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0
ZS1mYWlsdXJlLXUyZi5odHRwcy5odG1sCmluZGV4IDE1N2Q5ZTg4YTA2YmVkNDZjN2Q0ZmQ4NWUx
NjAxY2UyYWVjZjQyM2QuLjk0N2RjZmYyYmY1MDlkM2ZhZmEwNTUwNDI1Yzc5OTAxMTIzNDhjNmIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJm
Lmh0dHBzLmh0bWwKQEAgLTIwLDggKzIwLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsK
IAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVy
LnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJy
ZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNV
MmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFsiQVE9PSJdIH0gfSk7CisgICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJt
c2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNl
NjQ6IFsiQVE9PSJdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5r
bm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkNvdWxk
bid0IHBhcnNlIHRoZSBBUERVIHJlc3BvbnNlLiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50
aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hbGZvcm1lZCBBUERVIHBheWxvYWQgaW4gYSBtb2NrIGhp
ZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC00MSw4ICs0MSw4IEBACiAgICAgICAgICAgICB9CiAg
ICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5
bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25s
eVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
KHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxp
Y2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVO
b0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJl
amVjdHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0
aW9ucyksICJDb3VsZG4ndCBwYXJzZSB0aGUgVTJGIHJlZ2lzdGVyIHJlc3BvbnNlLiIpOwogICAg
IH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hbGZvcm1lZCBVMkYg
cmVnaXN0ZXIgcmVzcG9uc2UgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC02
Miw4ICs2Miw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNh
dGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdl
OiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2Fk
QmFzZTY0OiBbdGVzdFUyZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5UmVzcG9uc2VCYXNlNjRdIH0g
fSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxz
LnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJy
ZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNV
MmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlS
ZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJV
bmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiVW5r
bm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogMjc5MDQiKTsKICAgICB9LCAiUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCByZWdpc3RlciBjb21tYW5kIGVycm9yIGlu
IGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtODQsOCArODQsOCBAQAogICAgICAg
ICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlv
bih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFs
aWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1
Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5
UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
eyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGlj
aW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5v
RXJyb3JPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1SW5zTm90U3VwcG9ydGVkT25seVJl
c3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVu
a25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJVbmtu
b3duIGludGVybmFsIGVycm9yLiBFcnJvciBjb2RlOiAyNzkwNCIpOwogICAgIH0sICJQdWJsaWNL
ZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGJvZ3VzIGNvbW1hbmQgZXJyb3IgaW4gYSBt
b2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC0xMDYsOCArMTA2LDggQEAKICAgICAgICAg
ICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24o
eyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGlj
aW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5v
RXJyb3JPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJh
c2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBp
bnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBz
dGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxv
YWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlS
ZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0p
OwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIkludmFsaWRTdGF0ZUVycm9yIiwg
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkF0IGxlYXN0IG9uZSBjcmVk
ZW50aWFsIG1hdGNoZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBsaXN0IGlu
IHRoZSBhdXRoZW50aWNhdG9yLiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tj
cmVhdGVdXSB3aXRoIGZpcnN0IGV4Y2x1ZGUgY3JlZGVudGlhbCBtYXRjaGVkIGluIGEgbW9jayBo
aWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtMTI5LDggKzEyOSw4IEBACiAgICAgICAgICAgICB9
CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlk
OiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMt
cGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0Rh
dGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2
NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBp
ZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0
YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXls
b2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RV
MmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJl
c3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIklu
dmFsaWRTdGF0ZUVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwg
IkF0IGxlYXN0IG9uZSBjcmVkZW50aWFsIG1hdGNoZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVD
cmVkZW50aWFscyBsaXN0IGluIHRoZSBhdXRoZW50aWNhdG9yLiIpOwogICAgIH0sICJQdWJsaWNL
ZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHNlY29uZCBleGNsdWRlIGNyZWRlbnRpYWwg
bWF0Y2hlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTE1MSw4ICsxNTEs
OCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2Nr
Q29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIs
IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDog
W3Rlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVz
dFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJm
QXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1
Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVy
cm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rl
c3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUy
ZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBk
dUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9F
cnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWpl
Y3RzKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUo
b3B0aW9ucyksICJBdCBsZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRo
ZSBleGNsdWRlQ3JlZGVudGlhbHMgbGlzdCBpbiB0aGUgYXV0aGVudGljYXRvci4iKTsKICAgICB9
LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBmaXJzdCBleGNsdWRlIGNy
ZWRlbnRpYWwgbWF0Y2hlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIFRlc3Qgb2YgdXNl
ciBwcmVzZW5jZS4iKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLmh0dHBzLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLWZhaWx1cmUuaHR0cHMuaHRtbAppbmRleCA0NjQyYTViYTBmYmU3YThiM2M4YWRmZjUz
OTY5OTU1YjBjNWQ2NmNiLi41ZThmNWI4MTJiZTU3NjNjMzFiYzVkMmRmYzg5NGMwOTUwZjU3ODkz
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUuaHR0cHMu
aHRtbApAQCAtNSw4ICs1LDggQEAKIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy91dGlsLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQ+CiAgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRl
c3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9u
LgotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJB
dXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgfSk7CisgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uKHsgfSk7CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewogICAgICAgICBj
b25zdCBvcHRpb25zID0gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0
ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sCmluZGV4IDZhOGMzNTgxM2VlMmFkNzI3YmJjNTY2MTFh
OGIyY2I5MGFkYmFmNjQuLjU0NDZmNTU3MGYyOWQ1MzQ2YWY3ODdjZjU2NGM5M2U1NjcwYWY3MGMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlk
Lmh0dHBzLmh0bWwKQEAgLTYsOCArNiw4IEBACiA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvY2Jv
ci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0
aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmln
dXJhdGlvbi4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIu
c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJl
cXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6
IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSB9IH0pOworICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAi
c3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSB9IH0p
OwogCiAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICBjb25zdCBvcHRpb25zID0gewpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbG9jYWwu
aHR0cHMuaHRtbAppbmRleCBlNTFiYTVmZGU2YThlZjRmNDkwODY3ZmFiYWZjN2JiZDU3MmU0ZWVl
Li4wODhlODYzMThkMWJlOGEwNDQ1N2Q0MTE4YjNkMWFmODgzZGMwMmM3IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRl
LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRt
bApAQCAtMTAsOCArMTAsOCBAQAogICAgICAgICBjb25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdh
aXQgZ2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7CiAgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJ
RCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChwcml2YXRlS2V5QmFzZTY0KTsKICAgICAg
ICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUg
aWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oeworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAg
ICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsK
ICAgICAgICAgICAgICAgICBsb2NhbDogewogICAgICAgICAgICAgICAgICAgICBhY2NlcHRBdXRo
ZW50aWNhdGlvbjogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgYWNjZXB0QXR0ZXN0YXRpb246
IHRydWUsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbmZjLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3Mt
bmZjLmh0dHBzLmh0bWwKaW5kZXggOGQyMmU1NDRkNGFiOTUwOTk1MjU3ZmE2YjllMGU1ZjAyYzg2
MTU1ZC4uODJkMDcwNjE4YjNlMDMzYzM0OGE3NzQyYzEwYWY2ZWMxMWM2NjM1NiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNy
ZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1uZmMuaHR0cHMuaHRt
bApAQCAtNiw4ICs2LDggQEAKIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy9jYm9yLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQ+CiAgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3Rz
IG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgot
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRo
ZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAic3VjY2VzcyIsIHBh
eWxvYWRCYXNlNjQ6IFt0ZXN0TmZjQ3RhcFZlcnNpb25CYXNlNjQsIHRlc3RHZXRJbmZvUmVzcG9u
c2VBcGR1QmFzZTY0LCB0ZXN0Q3JlYXRpb25NZXNzYWdlQXBkdUJhc2U2NF0gfSB9KTsKKyAgICBp
ZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJh
c2U2NDogW3Rlc3ROZmNDdGFwVmVyc2lvbkJhc2U2NCwgdGVzdEdldEluZm9SZXNwb25zZUFwZHVC
YXNlNjQsIHRlc3RDcmVhdGlvbk1lc3NhZ2VBcGR1QmFzZTY0XSB9IH0pOwogCiAgICAgcHJvbWlz
ZV90ZXN0KHQgPT4gewogICAgICAgICBjb25zdCBvcHRpb25zID0gewpAQCAtNzEsOCArNzEsOCBA
QAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29u
ZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVz
dE5mY0N0YXBWZXJzaW9uQmFzZTY0LCB0ZXN0R2V0SW5mb1Jlc3BvbnNlQXBkdUJhc2U2NCwgdGVz
dENyZWF0aW9uTWVzc2FnZUFwZHVCYXNlNjRdLCBtdWx0aXBsZVRhZ3M6IHRydWUgfSB9KTsKKyAg
ICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogInN1Y2Nlc3Mi
LCBwYXlsb2FkQmFzZTY0OiBbdGVzdE5mY0N0YXBWZXJzaW9uQmFzZTY0LCB0ZXN0R2V0SW5mb1Jl
c3BvbnNlQXBkdUJhc2U2NCwgdGVzdENyZWF0aW9uTWVzc2FnZUFwZHVCYXNlNjRdLCBtdWx0aXBs
ZVRhZ3M6IHRydWUgfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5j
cmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIGNoZWNrQ3Rh
cE1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKQEAgLTk1LDgg
Kzk1LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2
NDogW3Rlc3ROZmNVMmZWZXJzaW9uQmFzZTY0LCB0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9u
bHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7CisgICAgICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5
bG9hZEJhc2U2NDogW3Rlc3ROZmNVMmZWZXJzaW9uQmFzZTY0LCB0ZXN0VTJmQXBkdUluc05vdFN1
cHBvcnRlZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7
CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRo
ZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBjaGVja1UyZk1ha2VDcmVkZW50aWFsUmVz
dWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy11MmYu
aHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbAppbmRleCA0N2Q4YmQ0NDk0NzVh
ZDQ1MzllN2EzOWFiMTJjMzlkMjM0NmM3YTNjLi5jMmJjOGY1MjZiNzQwMjExYjE5NDk3MzA1NzAx
NWI1ZDEwYWU2NTdhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0
ZS1zdWNjZXNzLXUyZi5odHRwcy5odG1sCkBAIC0yMSw4ICsyMSw4IEBACiAgICAgICAgICAgICB9
CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlk
OiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwg
aXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9
KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMu
c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJl
cXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBw
YXlsb2FkQmFzZTY0OiBbdGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJl
dHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlh
bCA9PiB7CiAgICAgICAgICAgICBjaGVja1UyZk1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRp
YWwpOwogICAgICAgICB9KTsKQEAgLTQ1LDggKzQ1LDggQEAKICAgICAgICAgICAgIH0KICAgICAg
ICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3Rh
Z2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjog
dHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFz
ZTY0LCB0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIs
IGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFw
ZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9
IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25z
KS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgY2hlY2tVMmZNYWtlQ3JlZGVudGlh
bFJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7CkBAIC02OSw4ICs2OSw4IEBACiAgICAg
ICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0
aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJz
dWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0
YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNl
NjQsIHRlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOworICAgICAgICBpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwg
ZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBk
dVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVz
cG9uc2VCYXNlNjQsIHRlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOwogICAgICAgICByZXR1
cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwg
PT4gewogICAgICAgICAgICAgY2hlY2tVMmZNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFs
KTsKICAgICAgICAgfSk7CkBAIC05Miw4ICs5Miw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAg
IH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdl
OiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRy
dWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5
UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNw
b25zZUJhc2U2NCwgdGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6
ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rl
c3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUy
ZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmUmVn
aXN0ZXJSZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIGNoZWNr
VTJmTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwpAQCAtMTE2
LDggKzExNiw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNh
dGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdl
OiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0
ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9y
OiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlJlZ2lzdGVy
UmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3Jl
YXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBjaGVja1UyZk1h
a2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKQEAgLTE0MCw4ICsx
NDAsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1z
ZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUy
ZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQor
ICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1
Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZSZWdpc3RlclJlc3Bv
bnNlXSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShv
cHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgY2hlY2tVMmZNYWtlQ3Jl
ZGVudGlhbFJlc3VsdChjcmVkZW50aWFsLCBmYWxzZSk7CiAgICAgICAgIH0pOwpAQCAtMTY0LDgg
KzE2NCw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlv
bk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAi
bXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0
VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAi
c3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlJlZ2lzdGVyUmVz
cG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRl
KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBjaGVja1UyZk1ha2VD
cmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwsIGZhbHNlKTsKICAgICAgICAgfSk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Z2V0LWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC1zaWxlbnQuaHR0
cHMuaHRtbAppbmRleCBlODVjMmM4NGFmNzIyZDc1MTljNTVlYzdjNWNlNmM1MDA2MzZhYzIwLi4z
OGY0MDc0OWU5NWFlMDViYzkyN2YxZGNiYjNjYjllMWQ5MjFlNzcyIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1
cmUtaGlkLXNpbGVudC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQtc2lsZW50Lmh0dHBzLmh0
bWwKQEAgLTEyLDggKzEyLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1
dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6
IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1w
YXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9
IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFs
cy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTog
dHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJt
YWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0RHVtbXlNZXNzYWdlUGF5bG9h
ZEJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxv
d2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiT3BlcmF0aW9u
IHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0
aCBtYWxpY2lvdXMgcGF5bG9hZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAg
LTI2LDggKzI2LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRp
Y2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3Rh
Z2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInVuc3VwcG9ydGVkLW9wdGlv
bnMiIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50
ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWls
dXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJv
cjogInVuc3VwcG9ydGVkLW9wdGlvbnMiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVq
ZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRp
b25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRp
YWwncyBbW2dldF1dIHdpdGggdW5zdXBwb3J0ZWQgb3B0aW9ucyBpbiBhIG1vY2sgaGlkIGF1dGhl
bnRpY2F0b3IuIik7CiAKQEAgLTM5LDggKzM5LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAg
fTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJl
OiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
Im1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENy
ZWRlbnRpYWxSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBz
dWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0
OiBbdGVzdEN0YXBFcnJJbnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAg
ICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRv
ci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAg
IH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIGludmFsaWQgY3JlZGVudGlh
bCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTUyLDggKzUyLDggQEAKICAg
ICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3Vi
U3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgY2FuRG93bmdyYWRlOiB0
cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEN0YXBFcnJJbnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNl
QmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAg
IGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50
RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwg
ZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGNhbkRvd25ncmFkZTogdHJ1ZSwgcGF5bG9hZEJh
c2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2NF0gfSB9KTsK
ICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsK
ICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBhdXRoZW50aWNhdG9y
IGRvd25ncmFkZSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTY2LDggKzY2
LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9j
a0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgY2FuRG93
bmdyYWRlOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEN0YXBFcnJJbnZhbGlkQ3JlZGVudGlh
bFJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
KHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdl
OiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGNhbkRvd25ncmFkZTogdHJ1ZSwg
cGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2
NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJy
b3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVk
IG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBhdXRo
ZW50aWNhdG9yIGRvd25ncmFkZSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIDIiKTsKIDwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC5o
dHRwcy5odG1sCmluZGV4IDU0ODVmMzcwZDY3OTcxZTIyMzVkOGQ5YTg3MmVhYjM0ZjljNTY2Zjcu
LjAwMjJlYTkwYjA3NmFmZTJjNDY0YmY3NmYyNWQ0OWI1M2NhNDgxYjkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFp
bHVyZS1oaWQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLmh0dHBzLmh0bWwKQEAgLTUsOCAr
NSw4IEBACiA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0PgogICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92
ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KLSAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1z
ZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiIH0gfSk7CisgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6
ICJtYWxpY2lvdXMtcGF5bG9hZCIgfSB9KTsKIAogICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAg
ICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKQEAgLTMxLDggKzMxLDggQEAKICAgICAgICAgICAgIH0K
ICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6
IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1w
YXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9
IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFs
cy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAi
cmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBh
eWxvYWRCYXNlNjQ6IFt0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJhc2U2NF0gfSB9KTsKICAgICAg
ICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29k
ZTogMjU1Iik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbWFs
aWNpb3VzIHBheWxvYWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC00NCw4
ICs0NCw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlv
bk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAi
bXNnIiwgZXJyb3I6ICJ1bnN1cHBvcnRlZC1vcHRpb25zIiB9IH0pOworICAgICAgICBpZiAod2lu
ZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAi
bXNnIiwgZXJyb3I6ICJ1bnN1cHBvcnRlZC1vcHRpb25zIiB9IH0pOwogICAgICAgICByZXR1cm4g
cHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5n
ZXQob3B0aW9ucyksICJVbmtub3duIGludGVybmFsIGVycm9yLiBFcnJvciBjb2RlOiA0MyIpOwog
ICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIHVuc3VwcG9ydGVkIG9w
dGlvbnMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC01Niw4ICs1Niw4IEBA
CiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25m
aWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJy
b3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3RhcEVyckludmFs
aWRDcmVkZW50aWFsUmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBl
cnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52
YWxpZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21p
c2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9w
dGlvbnMpLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogMzQiKTsKICAgICB9
LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBhdXRoZW50aWNhdG9yIGRvd25n
cmFkZSBmYWlsZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC02OSw4ICs2
OSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1v
Y2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNn
IiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGNhbkRvd25ncmFkZTogdHJ1ZSwgcGF5bG9h
ZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2NF0gfSB9
KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMu
c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJl
cXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBjYW5E
b3duZ3JhZGU6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50
aWFsUmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0
LCAiTm90U3VwcG9ydGVkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMp
LCAiQ2Fubm90IGNvbnZlcnQgdGhlIHJlcXVlc3QgdG8gVTJGIGNvbW1hbmQuIik7CiAgICAgfSwg
IlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggYXV0aGVudGljYXRvciBkb3duZ3Jh
ZGUgc3VjY2VlZGVkIGFuZCB0aGVuIFUyRiBmYWlsZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNh
dG9yLiAyIik7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC1zaWxlbnQuaHR0
cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1nZXQtZmFpbHVyZS1sb2NhbC1zaWxlbnQuaHR0cHMuaHRtbAppbmRleCA4NDNiYTg2ZjFm
OWE3Y2RiOTRhYmJhNmM2NzQzYzAyZTljMzNkZjVhLi5mMDJjMjU1ZTg4MjQwNDc0ZjEyMjJjMTJi
MDY1YzZiOWY4ZTk5ZjMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWdldC1mYWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy5odG1sCkBAIC05LDggKzksOCBAQAog
ICAgICAgICBjb25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQgZ2VuZXJhdGVQcml2YXRlS2V5
QmFzZTY0KCk7CiAgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJRCA9IGF3YWl0IGNhbGN1bGF0ZUNy
ZWRlbnRpYWxJRChwcml2YXRlS2V5QmFzZTY0KTsKICAgICAgICAgLy8gRGVmYXVsdCBtb2NrIGNv
bmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVu
dCBjb25maWd1cmF0aW9uLgotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
ICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBz
aWxlbnRGYWlsdXJlOiB0cnVlLCBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogZmFsc2Us
IGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSwgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDogdXNl
cmhhbmRsZUJhc2U2NCB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAg
ICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsg
c2lsZW50RmFpbHVyZTogdHJ1ZSwgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IGZhbHNl
LCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UsIHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ6IHVz
ZXJoYW5kbGVCYXNlNjQgfSB9KTsKIAogICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAg
ICAgICAgICBjb25zdCBvcHRpb25zID0gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxvY2FsLmh0dHBz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtZ2V0LWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbAppbmRleCBlYTBlMmE0NmJmMDUxYTBmZTc4
YWFmMjQwY2Y3MjhjN2E3ZjQ0MmRhLi4zZTRmNDk5MDZjMzJlNGU4OTUyNThmNjY4M2EwZmJlYTQ5
OTc3OWVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUt
bG9jYWwuaHR0cHMuaHRtbApAQCAtOSw4ICs5LDggQEAKICAgICAgICAgY29uc3QgcHJpdmF0ZUtl
eUJhc2U2NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOwogICAgICAgICBjb25z
dCBjcmVkZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJh
c2U2NCk7CiAgICAgICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVk
IHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KLSAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJB
dXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGlj
YXRpb246IGZhbHNlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UsIHByZWZlcnJlZFVzZXJoYW5k
bGVCYXNlNjQ6IHVzZXJoYW5kbGVCYXNlNjQgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0
QXR0ZXN0YXRpb246IGZhbHNlLCBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0OiB1c2VyaGFuZGxl
QmFzZTY0IH0gfSk7CiAKICAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICAgICAg
Y29uc3Qgb3B0aW9ucyA9IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFp
bHVyZS1uZmMuaHR0cHMuaHRtbAppbmRleCBkYjY0ODc0ZmZmNWQ4MWZlN2I2MTQ0MzlmNzI2Mjlh
OTlkMDAyNTEzLi4yNzVlZTY2ZTI2Mjg3OTE3YWFkZTljZTUzZTRlOTI3NDdiZGE2MDRlIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtZ2V0LWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLW5mYy5odHRwcy5odG1s
CkBAIC01LDggKzUsOCBAQAogPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdD4KICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMg
bmVlZCB0byBvdmVycmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0g
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhl
bnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJtYWxpY2lvdXMtcGF5
bG9hZCIgfSB9KTsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxz
LnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJt
YWxpY2lvdXMtcGF5bG9hZCIgfSB9KTsKIAogICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAg
ICAgY29uc3Qgb3B0aW9ucyA9IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtZ2V0LWZhaWx1cmUtdTJmLXNpbGVudC5odHRwcy5odG1sCmluZGV4IDhhN2NkOGE1YmI5MWQ4
MWIxNDc2YWRkN2M0MmQwMTM2M2IwZDZjN2EuLmFlNWJiZGQzZTM4YjRkZGY0YmIwNjQzZTlmZDUw
M2FmNzk4ZDIzYmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBzLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdl
dC1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMuaHRtbApAQCAtMTMsOCArMTMsOCBAQAogICAgICAg
ICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlv
bih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFn
ZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9h
ZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAg
ICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhp
ZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3Vz
LXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJv
ck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3Rz
KHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMp
LCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdz
IFtbZ2V0XV0gd2l0aCBtYWxmb3JtZWQgc2lnbiByZXNwb25zZSBpbiBhIG1vY2sgaGlkIGF1dGhl
bnRpY2F0b3IuIik7CiAKQEAgLTI3LDggKzI3LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAg
fTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJl
OiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
Im1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJm
QXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJl
cXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1Uy
ZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNl
QmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93
ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24g
dGltZWQgb3V0LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRo
IG5vIG1hdGNoZWQgYWxsb3cgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9y
LiIpOwogCkBAIC00MSw4ICs0MSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRX
ZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwg
aGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lv
dXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9u
Z0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNl
QmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAg
IGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50
RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwg
ZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBb
dGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdE
YXRhT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVj
dHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9u
cyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgYWxsb3cgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGhp
ZCBhdXRoZW50aWNhdG9yLiAyIik7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYu
aHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1nZXQtZmFpbHVyZS11MmYuaHR0cHMuaHRtbAppbmRleCA2NDkxMzc4Mjg0ZWI2N2Ex
OWU3ZDYwNWU2ODcwMDBkYTY0MWViZGU2Li41ZDFkMzAwZTY4ODU2ODQ0OWQxZGYzZTg0NmZkNmUy
MmFkOGEyNDAyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJl
LXUyZi5odHRwcy5odG1sCkBAIC0xMiw4ICsxMiw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAg
IH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdl
OiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIs
IGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3Bv
bnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAg
ICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlk
OiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMt
cGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9y
T25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHMo
dCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJD
b3VsZG4ndCBwYXJzZSB0aGUgVTJGIHNpZ24gcmVzcG9uc2UuIik7CiAgICAgfSwgIlB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbWFsZm9ybWVkIHNpZ24gcmVzcG9uc2UgaW4gYSBt
b2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC0yNSw4ICsyNSw4IEBACiAgICAgICAgICAg
ICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsg
aGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lv
dXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9u
Z0RhdGFPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJv
cjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0
VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJu
IHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlh
bHMuZ2V0KG9wdGlvbnMpLCAiTm8gY3JlZGVudGlhbHMgZnJvbSB0aGUgYWxsb3dDcmVkZW50aWFs
cyBsaXN0IGlzIGZvdW5kIGluIHRoZSBhdXRoZW50aWNhdG9yLiIpOwogICAgIH0sICJQdWJsaWNL
ZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgYWxsb3cgY3JlZGVudGlhbHMg
aW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC0zOCw4ICszOCw4IEBACiAgICAg
ICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0
aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJt
YWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFw
ZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJl
c3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAg
ICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsg
aGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lv
dXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9u
Z0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNl
QmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93
ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJObyBjcmVkZW50
aWFscyBmcm9tIHRoZSBhbGxvd0NyZWRlbnRpYWxzIGxpc3QgaXMgZm91bmQgaW4gdGhlIGF1dGhl
bnRpY2F0b3IuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGgg
bm8gbWF0Y2hlZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3Iu
IDIiKTsKIApAQCAtNTMsOCArNTMsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVl
c3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjog
dHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFz
ZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBz
dWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwg
cGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0
ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0
dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuZ2V0KG9wdGlvbnMpLCAiTm8gY3JlZGVudGlhbHMgZnJvbSB0aGUgYWxsb3dDcmVkZW50
aWFscyBsaXN0IGlzIGZvdW5kIGluIHRoZSBhdXRoZW50aWNhdG9yLiIpOwogICAgIH0sICJQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgYWxsb3cgY3JlZGVudGlh
bHMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAoQXBwSUQpIik7CiAKQEAgLTY3LDggKzY3
LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9j
a0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ci
LCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6
IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9u
Z0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNl
QmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAg
ICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3Qi
LCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1
ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0
LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9u
Z0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNl
QmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93
ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJObyBjcmVkZW50
aWFscyBmcm9tIHRoZSBhbGxvd0NyZWRlbnRpYWxzIGxpc3QgaXMgZm91bmQgaW4gdGhlIGF1dGhl
bnRpY2F0b3IuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGgg
bm8gbWF0Y2hlZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3Iu
IDIgKEFwcElEKSIpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUuaHR0cHMuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQt
ZmFpbHVyZS5odHRwcy5odG1sCmluZGV4IGUyZjk1ZDY3ZDhkOGY3NGQ1OTY5ZjM1OGRhY2RmZTFh
MzM1YjRkMjIuLmNmMThmZjc3ZWYzM2ZhMzI0MzIwZDNjNWIzYWM2NGRhOWVhNDI4MzIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1nZXQtZmFpbHVyZS5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS5odHRwcy5odG1sCkBAIC01LDgg
KzUsOCBAQAogPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgogPHNj
cmlwdD4KICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBv
dmVycmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oeyB9KTsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAg
ICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyB9KTsK
IAogICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbApp
bmRleCBkOWIyMmI0MmE5ZDc2MjAwMjE0MTIxMGM0NWQ2OGNmYTZkMWI5NTM2Li4wY2YwM2U3ZGQ2
ZTkxOTBiN2Y1NmY3YjkwZWM5MzljMGUyYWRlZGIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlkLmh0
dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWdldC1zdWNjZXNzLWhpZC5odHRwcy5odG1sCkBAIC01LDggKzUsOCBAQAogPHNj
cmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KICAgICAv
LyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBpZiB0
aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
InN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEFzc2VydGlvbk1lc3NhZ2VCYXNlNjRdIH0g
fSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXRNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIs
IHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RB
c3NlcnRpb25NZXNzYWdlQmFzZTY0XSB9IH0pOwogCiAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewog
ICAgICAgICBjb25zdCBvcHRpb25zID0gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWxvY2FsLmh0dHBz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbAppbmRleCBlMTgyMDk0OGY3N2U1YjdmODQ0
Mzk4ZTlkMGZmNjcwNmM1OGVmNzQzLi45MzYwYWZiOGY1NTgyNzU4NDNmOTAwMzQ1N2M3MGU4N2M0
Mzc2Y2JmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3Mt
bG9jYWwuaHR0cHMuaHRtbApAQCAtOSw4ICs5LDggQEAKICAgICAgICAgY29uc3QgcHJpdmF0ZUtl
eUJhc2U2NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOwogICAgICAgICBjb25z
dCBjcmVkZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJh
c2U2NCk7CiAgICAgICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVk
IHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KLSAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJB
dXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGlj
YXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSwgcHJlZmVycmVkVXNlcmhhbmRs
ZUJhc2U2NDogdXNlcmhhbmRsZUJhc2U2NCB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVy
bmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0
dGVzdGF0aW9uOiBmYWxzZSwgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDogdXNlcmhhbmRsZUJh
c2U2NCB9IH0pOwogCiAgICAgICAgIGZ1bmN0aW9uIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpCiAg
ICAgICAgIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1uZmMuaHR0cHMuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1uZmMu
aHR0cHMuaHRtbAppbmRleCBmYzdjNmFhMzU1ZThjZmRiYjU0MzNkZTFkYmNlNTVlYjVjNWU2NDEz
Li5jYzA1MGRhMWMzZDEzNDUxMWYxZTE4N2E3NmFjNTYzOWIxOWQ0MTg2IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1
Y2Nlc3MtbmZjLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLW5mYy5odHRwcy5odG1sCkBAIC01LDgg
KzUsOCBAQAogPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgogPHNj
cmlwdD4KICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBv
dmVycmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2
NDogW3Rlc3ROZmNDdGFwVmVyc2lvbkJhc2U2NCwgdGVzdEdldEluZm9SZXNwb25zZUFwZHVCYXNl
NjQsIHRlc3RBc3NlcnRpb25NZXNzYWdlQXBkdUJhc2U2NF0gfSB9KTsKKyAgICBpZiAod2luZG93
LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rl
c3ROZmNDdGFwVmVyc2lvbkJhc2U2NCwgdGVzdEdldEluZm9SZXNwb25zZUFwZHVCYXNlNjQsIHRl
c3RBc3NlcnRpb25NZXNzYWdlQXBkdUJhc2U2NF0gfSB9KTsKIAogICAgIHByb21pc2VfdGVzdCh0
ID0+IHsKICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKQEAgLTMwLDggKzMwLDggQEAKICAgICAg
ICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRp
b24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3ROZmNVMmZW
ZXJzaW9uQmFzZTY0LCB0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNwb25zZUJhc2U2
NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbih7IG5mYzogeyBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdE5m
Y1UyZlZlcnNpb25CYXNlNjQsIHRlc3RVMmZBcGR1SW5zTm90U3VwcG9ydGVkT25seVJlc3BvbnNl
QmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdh
dG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAg
ICAgICAgcmV0dXJuIGNoZWNrVTJmR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwpOwogICAg
ICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYu
aHR0cHMuaHRtbAppbmRleCA5NWIyZDFiMmUxOTRlZjJkM2U4MWM0ODY5ZTk0NzVmY2YwZDQzZDdl
Li4wZjAwMDhhYjU0M2Y1YWQ3NWJjYzU3ODQzY2RmYTU1ZDljYjQ1ZmEzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1
Y2Nlc3MtdTJmLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLXUyZi5odHRwcy5odG1sCkBAIC0xMyw4
ICsxMyw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlv
bk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAi
bXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0
VTJmU2lnblJlc3BvbnNlXSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
KHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNj
ZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmU2lnblJlc3BvbnNlXSB9
IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50
aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgcmV0dXJuIGNoZWNrVTJmR2V0QXNzZXJ0
aW9uUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKQEAgLTI5LDggKzI5LDggQEAKICAg
ICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
InN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdE
YXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOworICAgICAg
ICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1
YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNl
NjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNpZ25S
ZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQo
b3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIHJldHVybiBjaGVja1Uy
ZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7CkBAIC00NSw4ICs0
NSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1v
Y2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNn
IiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJm
QXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1
Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNpZ25SZXNw
b25zZV0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBp
bnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBz
dGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJm
OiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVk
T25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5
UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVy
biBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7
CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tVMmZHZXRBc3NlcnRpb25SZXN1bHQoY3JlZGVudGlh
bCk7CiAgICAgICAgIH0pOwpAQCAtNjMsOCArNjMsOCBAQAogICAgICAgICAgICAgfQogICAgICAg
ICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RS
dW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFn
ZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0
cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKKyAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJT
dGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0
OiBbdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5j
cmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAg
IHJldHVybiBjaGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAg
fSk7CkBAIC04MCw4ICs4MCw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJB
dXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIs
IHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRC
YXNlNjQ6IFt0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOworICAgICAgICBpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwg
ZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmU2ln
blJlc3BvbnNlXSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdl
dChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgcmV0dXJuIGNoZWNr
VTJmR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKQEAgLTk3LDgg
Kzk3LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJt
c2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RV
MmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9
IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFs
cy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAi
cmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUs
IHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwg
dGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIHJl
dHVybiBjaGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsLCB0cnVlKTsKICAgICAg
ICAgfSk7CkBAIC0xMTUsOCArMTE1LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5
bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0
VTJmU2lnblJlc3BvbnNlXSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
KHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNj
ZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9u
bHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0
dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+
IHsKICAgICAgICAgICAgIHJldHVybiBjaGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50
aWFsLCB0cnVlLCAiN2VhYmM1Y2MzMjUxYmRjNTkxMTVlZjg3YjVmN2VlNzRjYjAzNzQ3ZTM5YmE4
MzQxNzQ4NTY1Y2MxMjljMDcxOSIpOwogICAgICAgICB9KTsKQEAgLTEzMiw4ICsxMzIsOCBAQAog
ICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9y
OiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9u
Z0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNl
QmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOworICAgICAgICBpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwg
ZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBk
dVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVz
cG9uc2VCYXNlNjQsIHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAg
ICAgICAgICAgICByZXR1cm4gY2hlY2tVMmZHZXRBc3NlcnRpb25SZXN1bHQoY3JlZGVudGlhbCk7
CiAgICAgICAgIH0pOwpAQCAtMTQ5LDggKzE0OSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAg
IH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdl
OiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRy
dWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2
NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3Jv
bmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOworICAg
ICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIs
IHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRC
YXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFw
ZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJl
c3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOwogICAgICAgICByZXR1cm4g
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewog
ICAgICAgICAgICAgcmV0dXJuIGNoZWNrVTJmR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWws
IHRydWUpOwogICAgICAgICB9KTsKQEAgLTE2Niw4ICsxNjYsOCBAQAogICAgICAgICAgICAgfQog
ICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGNh
bkRvd25ncmFkZTogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENyZWRl
bnRpYWxSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKKyAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJT
dGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGNhbkRvd25ncmFkZTogdHJ1ZSwgcGF5bG9h
ZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2NCwgdGVz
dFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50
aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIHJldHVy
biBjaGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7CkBA
IC0xODMsOCArMTgzLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhl
bnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3Vi
U3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBjYW5Eb3duZ3JhZGU6IHRydWUsIHBheWxv
YWRCYXNlNjQ6IFt0ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9uc2VCYXNlNjQsIHRl
c3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNl
XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVy
bmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdl
OiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgY2FuRG93bmdy
YWRlOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEN0YXBFcnJJbnZhbGlkQ3JlZGVudGlhbFJl
c3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVz
dFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50
aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIHJldHVy
biBjaGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsLCB0cnVlLCAiN2VhYmM1Y2Mz
MjUxYmRjNTkxMTVlZjg3YjVmN2VlNzRjYjAzNzQ3ZTM5YmE4MzQxNzQ4NTY1Y2MxMjljMDcxOSIp
OwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhu
L3Jlc291cmNlcy9wdWJsaWMta2V5LWNyZWRlbnRpYWwtaXAtYWRkcmVzcy5odHRwcy5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1pcC1hZGRyZXNzLmh0dHBzLmh0bWwKaW5kZXggNmRlM2E5NDM1MDRiZjRmZjk5MjNmNzg0
NmFkZDg3NTQzNDY4ZDBjZC4uODExODNjMGNkY2NmYWZlYjBhYjVmZjQzY2Q1Yzc1YzNiYjFhMmJm
MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1pcC1hZGRyZXNzLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3B1YmxpYy1rZXktY3JlZGVudGlhbC1pcC1h
ZGRyZXNzLmh0dHBzLmh0bWwKQEAgLTUsOCArNSw4IEBACiA8c2NyaXB0IHNyYz0idXRpbC5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0PgogICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBU
ZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlv
bi4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIuc2V0V2Vi
QXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IH0pOworICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbih7IH0pOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKICAgICAgICAg
Y29uc3Qgb3B0aW9ucyA9IHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380520</attachid>
            <date>2019-10-09 01:59:58 -0700</date>
            <delta_ts>2019-10-09 11:56:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202560-20191009015957.patch</filename>
            <type>text/plain</type>
            <size>194094</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwOTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzNlZDcxNTI3MTBkMjU0
YmUxNDNkMjUwYTgzYjkyMzlhNWE1YTRhYy4uMzBiOTVmZDk1MDkzODQxNGNkN2I5ZmE0MDg2ZDYy
YjU0YjVkZTg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE5LTEwLTA4ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBNb3Zl
IHRoZSBtb2NrIHRlc3RpbmcgZW50cmFuY2UgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NjAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzU1OTczNzkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgVGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlv
bk1vY2tDb25maWd1cmF0aW9uIHRvCisgICAgICAgIEludGVybmFscy5zZXRNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uIGFuZCByZW1vdmVzIHRoZSBvbGQKKyAgICAgICAgZW50cmFu
Y2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IHVwZGF0ZXMgb24gZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlD
cmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmg6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24pOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbik6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5pZGw6CisgICAgICAgICogdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbjo6TG9jYWxDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TG9jYWxDb25maWd1
cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbjo6SGlkQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENvbmZpZ3Vy
YXRpb246OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uOjpOZmNDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29uZmlndXJh
dGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIHRlc3RpbmcvTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGw6IEFkZGVkLgorCiAyMDE5LTEwLTA5
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBXYXlsYW5kOiBkbyBub3QgdXNlIEVHTF9QTEFURk9STV9XQVlMQU5EX0tIUiB3aXRoIGVn
bEdldFBsYXRmb3JtRGlzcGxheUVYVApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiMjhmY2I2YmIwOTE2M2Q1NDMzNGEz
MjRlNjU3MWFmNWIwYzk5NWE5Li5lMjQxYmQ5ZmVmMDAzMTFmMzM3NzZiNmVmY2MwZmVkYjdlNWQ0
ZmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE5LTEwLTA4ICBKaWV3ZW4gVGFuICA8
amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBNb3ZlIHRoZSBtb2Nr
IHRlc3RpbmcgZW50cmFuY2UgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NjAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1
OTczNzkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChX
S1dlYnNpdGVEYXRhU3RvcmVTZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JU
cmFuc3BvcnRTZXJ2aWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvclRyYW5z
cG9ydFNlcnZpY2U6OmNyZWF0ZU1vY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok1vY2tBdXRoZW50aWNhdG9yTWFuYWdlcjo6TW9ja0F1dGhlbnRp
Y2F0b3JNYW5hZ2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9j
ay9Nb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok1vY2tIaWRDb25uZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKFdlYktpdDo6TW9ja0hpZENvbm5l
Y3Rpb246OnJlZ2lzdGVyRGF0YVJlY2VpdmVkQ2FsbGJhY2tJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1vY2tIaWRDb25uZWN0aW9uOjpwYXJzZVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0
OjpNb2NrSGlkQ29ubmVjdGlvbjo6ZmVlZFJlcG9ydHMpOgorICAgICAgICAoV2ViS2l0OjpNb2Nr
SGlkQ29ubmVjdGlvbjo6c2hvdWxkQ29udGludWVGZWVkUmVwb3J0cyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkU2VydmljZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok1vY2tIaWRTZXJ2aWNlOjpNb2NrSGlkU2VydmljZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZFNlcnZpY2UuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25u
ZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9j
a0xvY2FsQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6TW9ja0xvY2FsQ29ubmVjdGlv
bjo6TW9ja0xvY2FsQ29ubmVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL01vY2svTW9ja0xvY2FsU2VydmljZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbFNlcnZpY2UubW06CisgICAgICAgIChXZWJLaXQ6
Ok1vY2tMb2NhbFNlcnZpY2U6Ok1vY2tMb2NhbFNlcnZpY2UpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja05mY1NlcnZpY2UubW06CisgICAgICAg
IChXZWJLaXQ6Ok1vY2tOZmNTZXJ2aWNlOjpNb2NrTmZjU2VydmljZSk6CisgICAgICAgIChXZWJL
aXQ6Ok1vY2tOZmNTZXJ2aWNlOjpwbGF0Zm9ybVN0YXJ0RGlzY292ZXJ5KToKKyAgICAgICAgKFdl
YktpdDo6TW9ja05mY1NlcnZpY2U6OmRldGVjdFRhZ3MgY29uc3QpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xp
ZW50OjpzZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorCiAyMDE5LTEwLTA5
ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGVz
dFJ1bm5lci5zZXRXZWJSVENVbmlmaWVkUGxhbkVuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGVmNDM0MGE2MjgxYjQzYWU1OWY1
NjU5MzYyNDZlMmMzMjMzMjhlOTYuLmYzMjA4NTVhNTNiNjg4YmUzYzMwOTc2MTg4ODNjNjMxNTA4
NGZhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdApAQCAtMTA4OSw2ICsxMDg5LDcgQEAgJChQUk9KRUNUX0RJUikvdGVzdGluZy9Nb2NrUGF5
bWVudEFkZHJlc3MuaWRsCiAkKFBST0pFQ1RfRElSKS90ZXN0aW5nL01vY2tQYXltZW50Q29udGFj
dEZpZWxkcy5pZGwKICQoUFJPSkVDVF9ESVIpL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRv
ci5pZGwKICQoUFJPSkVDVF9ESVIpL3Rlc3RpbmcvTW9ja1BheW1lbnRFcnJvci5pZGwKKyQoUFJP
SkVDVF9ESVIpL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGwK
ICQoUFJPSkVDVF9ESVIpL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwKICQoUFJP
SkVDVF9ESVIpL3Rlc3RpbmcvVHlwZUNvbnZlcnNpb25zLmlkbAogJChQUk9KRUNUX0RJUikvd29y
a2Vycy9BYnN0cmFjdFdvcmtlci5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggMDkwOWQ3YjFmYmZkODUyZDI2YmZiMWJmNWIxY2Mx
MzQ2OTI5YjRkOC4uMTYyZDQ0ZDg0OTMzMTU1YzAxMDY1ODE2MjY1YThiNDc1NDJjMDcwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QK
KysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAg
LTEwNTksNiArMTA1OSw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTW9ja1BheW1lbnRDb29yZGluYXRvci5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01vY2tQYXltZW50RXJy
b3IuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01v
Y2tQYXltZW50RXJyb3IuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmNwcAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTTW91c2VFdmVudC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTTW91c2VFdmVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU01vdXNlRXZlbnRJbml0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKaW5kZXggYzBhNGYwMDc0ZDFhNjJhNTdiNWNkYzhjNDRkZjBmN2JmMjViNDIxNS4u
OGU3N2U2ZDBmYTU2ZmExMzBhYjdkOGIyNmY0YmEwZTQ4ZWNlY2NlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCkBAIC0xMDc2LDYgKzEwNzYsNyBAQCBKU19CSU5ESU5HX0lETFMgPSBc
CiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL01vY2tQYXltZW50Q29udGFjdEZpZWxkcy5pZGwgXAog
ICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmlkbCBcCiAgICAg
JChXZWJDb3JlKS90ZXN0aW5nL01vY2tQYXltZW50RXJyb3IuaWRsIFwKKyAgICAkKFdlYkNvcmUp
L3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGwgXAogICAgICQo
V2ViQ29yZSkvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbCBcCiAgICAgJChXZWJD
b3JlKS90ZXN0aW5nL1R5cGVDb252ZXJzaW9ucy5pZGwgXAogICAgICQoV2ViQ29yZSkvd29ya2Vy
cy9BYnN0cmFjdFdvcmtlci5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnMuaAppbmRleCAzNzJkZjFiOTRlOGJmNjQwMjMzMGU1NDVlZDQ3NTY4MGI3NDIzZGE1Li5kOGM3
YmJiM2M1ZDc5MjdmOTE1Y2Y0ZWU2NzIwZDI4ZGZjMGM4YzM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRl
bnRpYWxDcmVhdGlvbk9wdGlvbnMuaApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIlB1Ymxp
Y0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiUHVibGljS2V5Q3JlZGVudGlh
bFR5cGUuaCIKICNpbmNsdWRlICJVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQuaCIKLSNpbmNs
dWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2EzYTliZGFlZjg3Mzk5YzA4ZjliM2ZiMzI3ZjBm
NzVjODQ5NGU0Yy4uZTM3M2M4MTlhOWJkNTMzYWExZDExNzcxZWJhM2E0ODBmM2YzOWZiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTczOCw2ICsxNzM4LDEwIEBACiAJCTU3MTUyQjZFMjFDRDk5NUQwMDBDMzdDQSAvKiBVMmZD
b21tYW5kQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3MTUyQjZDMjFDRDk5NUMwMDBDMzdDQSAvKiBVMmZDb21tYW5kQ29uc3RydWN0
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
NzE1MkI3QzIxREQ4QkExMDAwQzM3Q0EgLyogVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTUyQjdBMjFERDhCQTEw
MDBDMzdDQSAvKiBVMmZSZXNwb25zZUNvbnZlcnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3MTUyQjgwMjFEREE1ODEwMDBDMzdDQSAvKiBX
ZWJBdXRoZW50aWNhdGlvblV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NzE1MkI3RTIxRERBNTgxMDAwQzM3Q0EgLyogV2ViQXV0aGVudGljYXRp
b25VdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTU3MTU2MTBCMjM0QzFCNDkwMDhGQzdBQiAvKiBNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzE1NjEwODIzNEMxQjMxMDA4RkM3QUIgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbi5oICovOyB9OworCQk1NzE1NjEwQzIzNEMxQ0ExMDA4RkM3QUIgLyogTW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTcxNTYxMDgyMzRDMUIzMTAwOEZDN0FCIC8qIE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk1NzE1NjExNDIzNEM3RkQ2MDA4RkM3QUIgLyogSlNNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTU2MTExMjM0QzdGQkMwMDhGQzdBQiAvKiBKU01vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uY3BwICovOyB9OworCQk1NzE1NjExNTIzNEM3
RkRDMDA4RkM3QUIgLyogSlNNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE1NjExMDIzNEM3
RkJDMDA4RkM3QUIgLyogSlNNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggKi87
IH07CiAJCTU3MUYyMTg5MURBNTdDNTQwMDVDOUVGRCAvKiBKU1N1YnRsZUNyeXB0by5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcxRjIxODgxREE1N0M1
NDAwNUM5RUZEIC8qIEpTU3VidGxlQ3J5cHRvLmggKi87IH07CiAJCTU3MjA5M0QzMUREQ0VCOUEw
MDMxMEFCMCAvKiBDcnlwdG9BbGdvcml0aG1BZXNDYmNDZmJQYXJhbXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MjA5M0QyMUREQ0VCOUEwMDMxMEFC
MCAvKiBDcnlwdG9BbGdvcml0aG1BZXNDYmNDZmJQYXJhbXMuaCAqLzsgfTsKIAkJNTcyMUE5ODcx
RUNFNTNCMTAwODEyOTVBIC8qIENyeXB0b0RpZ2VzdEFsZ29yaXRobS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyMUE5ODYxRUNFNTNCMTAwODEyOTVB
IC8qIENyeXB0b0RpZ2VzdEFsZ29yaXRobS5oICovOyB9OwpAQCAtODYwNSw2ICs4NjA5LDEwIEBA
CiAJCTU3MTUyQjdCMjFERDhCQTEwMDBDMzdDQSAvKiBVMmZSZXNwb25zZUNvbnZlcnRlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBVMmZSZXNwb25zZUNvbnZlcnRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU3MTUyQjdFMjFEREE1ODEwMDBDMzdDQSAvKiBXZWJBdXRoZW50
aWNhdGlvblV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcxNTJCN0YyMUREQTU4MTAwMEMzN0NBIC8q
IFdlYkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXV0aGVu
dGljYXRpb25VdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MTU2MTA4
MjM0QzFCMzEwMDhGQzdBQiAvKiBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTcxNTYxMEQyMzRD
NzQ4MTAwOEZDN0FCIC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1NzE1NjExMDIzNEM3RkJDMDA4RkM3QUIgLyogSlNNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1NzE1NjExMTIzNEM3RkJDMDA4RkM3QUIgLyogSlNNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MUYyMTg4MURBNTdDNTQwMDVDOUVGRCAvKiBKU1N1
YnRsZUNyeXB0by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N1YnRsZUNy
eXB0by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzFGMjE4QTFEQTU3QzdBMDA1
QzlFRkQgLyogSlNTdWJ0bGVDcnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNTdWJ0bGVDcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NzIwOTNEMTFERENFQTRCMDAzMTBBQjAgLyogQWVzQ2JjQ2ZiUGFyYW1zLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBB
ZXNDYmNDZmJQYXJhbXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc4OTIs
NiArMTc5MDAsOCBAQAogCQkJCUExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAvKiBNb2NrUGF5bWVu
dE1ldGhvZC5oICovLAogCQkJCUExNDA2MTg5MUUyRUNBMEEwMDMyQjM0RSAvKiBNb2NrUHJldmll
d0xvYWRlckNsaWVudC5jcHAgKi8sCiAJCQkJQTE0MDYxOEExRTJFQ0EwQTAwMzJCMzRFIC8qIE1v
Y2tQcmV2aWV3TG9hZGVyQ2xpZW50LmggKi8sCisJCQkJNTcxNTYxMDgyMzRDMUIzMTAwOEZDN0FC
IC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCAqLywKKwkJCQk1NzE1NjEw
RDIzNEM3NDgxMDA4RkM3QUIgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5p
ZGwgKi8sCiAJCQkJNDE3RjBEODAxRkZFRTE0RjAwOEVGMzAzIC8qIFNlcnZpY2VXb3JrZXJJbnRl
cm5hbHMuY3BwICovLAogCQkJCTQxN0YwRDdFMUZGRUUxNEUwMDhFRjMwMyAvKiBTZXJ2aWNlV29y
a2VySW50ZXJuYWxzLmggKi8sCiAJCQkJNDE3RjBEODExRkZFRTE1MDAwOEVGMzAzIC8qIFNlcnZp
Y2VXb3JrZXJJbnRlcm5hbHMuaWRsICovLApAQCAtMTc5MzIsNiArMTc5NDIsOCBAQAogCQkJCUEx
NDZEMzE4MUY5OUJDQkEwMEQyOTE5NiAvKiBKU01vY2tQYXltZW50Q29vcmRpbmF0b3IuaCAqLywK
IAkJCQlBMUJCODVCNDIxNTlCMzg5MDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCAq
LywKIAkJCQlBMUJCODVCNTIxNTlCMzhBMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmgg
Ki8sCisJCQkJNTcxNTYxMTEyMzRDN0ZCQzAwOEZDN0FCIC8qIEpTTW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbi5jcHAgKi8sCisJCQkJNTcxNTYxMTAyMzRDN0ZCQzAwOEZDN0FCIC8q
IEpTTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oICovLAogCQkJCTQyN0RBNzFC
MTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwICovLAogCQkJ
CTQyN0RBNzFDMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCAq
LywKIAkJCQlFQkY1MTIxQTE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuY3Bw
ICovLApAQCAtMjg0MjUsNiArMjg0MzcsNyBAQAogCQkJCUExMDRFQzVFMjIwQTNFNEUwMENCRjY3
QSAvKiBKU01vY2tQYXltZW50Q29udGFjdEZpZWxkcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE0
NkQzMUIxRjk5QkNGQjAwRDI5MTk2IC8qIEpTTW9ja1BheW1lbnRDb29yZGluYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTFCQjg1QjkyMTU5QjNBRTAwNjdFMDdEIC8qIEpTTW9ja1BheW1lbnRF
cnJvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTcxNTYxMTUyMzRDN0ZEQzAwOEZDN0FCIC8qIEpT
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDI3REE3MUUxMzczNURGQTAwN0M1N0ZCIC8qIEpTU2VydmljZVdvcmtlckludGVybmFscy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRUJGNTEyMUQxNjk2NDk2QzAwNTZCRDI1IC8qIEpTVHlwZUNvbnZl
cnNpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMyNkI0MTE2MEE4Q0NFMDAyNjc1N0IgLyog
TGVnYWN5TW9ja0NETS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODQ0Miw2ICsyODQ1NSw3IEBACiAJ
CQkJQTFBRkVERTYxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCUExQ0JFRjY0MUY5RjExMjkwMDI4REU3QyAvKiBNb2NrUGF5bWVu
dE1ldGhvZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE0MDYxOEMxRTJFQ0EwQTAwMzJCMzRFIC8q
IE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzE1NjEwQjIz
NEMxQjQ5MDA4RkM3QUIgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQUE1RjNCOEQxNkNDMzNEMTAwNDU1RUIwIC8qIFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXJNb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTc2M0YzRjFFMjA1MjM0
MDAxRDU4REUgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTgxNUMxRjEzODMxOTgzMDA1N0FBQTQgLyogV2ViQ29yZVRlc3RTdXBwb3J0LmggaW4gSGVhZGVy
cyAqLywKQEAgLTMxMDIxLDYgKzMxMDM1LDcgQEAKIAkJCQkwN0VFNzZFRjFCRUE2MTk4MDBGODkx
MzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
RjJCMDE3MTgyMDU0MDcwMEYyQjQyNCAvKiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0RGMkIwMTkxODIwNTQwNzAwRjJCNDI0IC8qIE1vY2tUcmFja3MuaCBp
biBIZWFkZXJzICovLAorCQkJCTU3MTU2MTBDMjM0QzFDQTEwMDhGQzdBQiAvKiBNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNkQ3NEFENTA5
QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3MDlBMDFGRTFFM0QwQkREMDA2QjBENEMgLyogTW9kdWxlRmV0Y2hGYWlsdXJlS2lu
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMyMDFDMUExRjhFODIxMzAwNzZBMDMyIC8qIE1vZHVs
ZUZldGNoUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjk4NCw2ICszMjk5OSw3IEBA
CiAJCQkJQTEwNEVDNUQyMjBBM0U0QjAwQ0JGNjdBIC8qIEpTTW9ja1BheW1lbnRDb250YWN0Rmll
bGRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDZEMzFBMUY5OUJDRjgwMEQyOTE5NiAvKiBK
U01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFCQjg1Qjgy
MTU5QjNBNDAwNjdFMDdEIC8qIEpTTW9ja1BheW1lbnRFcnJvci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk1NzE1NjExNDIzNEM3RkQ2MDA4RkM3QUIgLyogSlNNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQyN0RBNzFEMTM3MzVERkEwMDdD
NTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RUJGNTEyMUMxNjk2NDk2QzAwNTZCRDI1IC8qIEpTVHlwZUNvbnZlcnNpb25zLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUNEQzI2QjQwMTYwQThDQzYwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggZmRkYjE4
NjgyYmU3ZTFmNjZhZWRhYWI2OGNiYmM0NDgwODI4MDQ2ZS4uMzUwNWQ0NDA1NDFjM2Y0OWQ4NjY1
YjQ1NjNiZWVmYWVmZjY0ZDQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0x
MTAsNiArMTEwLDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVn
aW5zQ2FsbGJhY2s7CiBzdHJ1Y3QgQ29udGVudFJ1bGVMaXN0UmVzdWx0czsKIHN0cnVjdCBEYXRl
VGltZUNob29zZXJQYXJhbWV0ZXJzOwogc3RydWN0IEdyYXBoaWNzRGV2aWNlQWRhcHRlcjsKK3N0
cnVjdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOwogc3RydWN0IFNoYXJlRGF0
YVdpdGhQYXJzZWRVUkw7CiBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7CiBzdHJ1Y3QgV2luZG93
RmVhdHVyZXM7CkBAIC01MTAsNiArNTExLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
dXNlcklzSW50ZXJhY3RpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRVc2VySXNJbnRlcmFjdGluZyhib29sKSB7IH0KIAorI2lmIEVOQUJMRShXRUJfQVVU
SE4pCisgICAgdmlydHVhbCB2b2lkIHNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24oY29uc3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYpIHsgfQorI2VuZGlm
CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5DaHJvbWVDbGllbnQoKSA9IGRlZmF1bHQ7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGZmNDA5NjllZDY5ZjUzMjkx
MWRjNmU0Zjc2YzJjNDE0YzMzODMxYWEuLjZkYTFjZjNhMTMxZWQ4NWQwMzM0NzM4NGRjZTdhZGJh
NDRiZWVmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTUyMzQsNCAr
NTIzNCwxNyBAQCB2b2lkIEludGVybmFsczo6YWRkUHJlZmV0Y2hMb2FkRXZlbnRMaXN0ZW5lcihI
VE1MTGlua0VsZW1lbnQmIGxpbmssIFJlZlB0cjxFdmVudAogICAgIH0KIH0KIAorI2lmIEVOQUJM
RShXRUJfQVVUSE4pCit2b2lkIEludGVybmFsczo6c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbihjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiBjb25m
aWd1cmF0aW9uKQoreworICAgIGF1dG8qIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7Cisg
ICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8qIHBhZ2UgPSBkb2N1
bWVudC0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIHBhZ2Ut
PmNocm9tZSgpLmNsaWVudCgpLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
Y29uZmlndXJhdGlvbik7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggODE2NTk1YzVmNjM5ZjA5NGMwY2E2ZDZlZTNj
Y2M3MDRkYTdjM2RlNS4uYzEzNGRlZmRhYWYxNDBiYTk3ZDNkZTQ1MDBjNDk3NGFlNGM1NTZmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xMTIsNiArMTEyLDggQEAgY2xhc3Mg
U2VydmljZVdvcmtlcjsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJv
bWlzZURlZmVycmVkOwogCitzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bjsKKwogY2xhc3MgSW50ZXJuYWxzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8SW50ZXJuYWxz
PiwgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcgogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCiAgICAgLCBwcml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyCkBAIC04
ODQsNiArODg2LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkUHJlZmV0Y2hMb2FkRXZlbnRM
aXN0ZW5lcihIVE1MTGlua0VsZW1lbnQmLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJik7CiAKKyNp
ZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIHZvaWQgc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbihjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJik7Cisj
ZW5kaWYKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbHMoRG9jdW1lbnQmKTsKICAg
ICBEb2N1bWVudCogY29udGV4dERvY3VtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKaW5kZXggNDY4ZWYyMzFkNzRlMTk4NjVjMDQ5NDNiMjdjMjY0YzYxNmVhZmI5
YS4uNGUzYTQxMmExNGM4MmFiNDJjMzIyNDU4OWQwMjY4OGNkNTZhZTA0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNzk0LDQgKzc5NCw2IEBAIGVudW0gQ29tcG9zaXRp
bmdQb2xpY3kgewogICAgIFRleHRJbmRpY2F0b3JJbmZvIHRleHRJbmRpY2F0b3JGb3JSYW5nZShS
YW5nZSByYW5nZSwgVGV4dEluZGljYXRvck9wdGlvbnMgb3B0aW9ucyk7CiAKICAgICB2b2lkIGFk
ZFByZWZldGNoTG9hZEV2ZW50TGlzdGVuZXIoSFRNTExpbmtFbGVtZW50IGxpbmssIEV2ZW50TGlz
dGVuZXI/IGNhbGxiYWNrKTsKKworICAgIFtDb25kaXRpb25hbD1XRUJfQVVUSE5dIHZvaWQgc2V0
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzQ1MGYyNTY3NmFjMTI3YzYzNDljZmVjNmU5YTBmYzU2MzRkZTdlNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsMjkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiB7CisgICAgZW51bSBj
bGFzcyBIaWRTdGFnZSA6IGJvb2wgeworICAgICAgICBJbmZvLAorICAgICAgICBSZXF1ZXN0Cisg
ICAgfTsKKworICAgIGVudW0gY2xhc3MgSGlkU3ViU3RhZ2UgOiBib29sIHsKKyAgICAgICAgSW5p
dCwKKyAgICAgICAgTXNnCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgSGlkRXJyb3IgOiB1aW50
OF90IHsKKyAgICAgICAgU3VjY2VzcywKKyAgICAgICAgRGF0YU5vdFNlbnQsCisgICAgICAgIEVt
cHR5UmVwb3J0LAorICAgICAgICBXcm9uZ0NoYW5uZWxJZCwKKyAgICAgICAgTWFsaWNpb3VzUGF5
bG9hZCwKKyAgICAgICAgVW5zdXBwb3J0ZWRPcHRpb25zLAorICAgICAgICBXcm9uZ05vbmNlCisg
ICAgfTsKKworICAgIGVudW0gY2xhc3MgTmZjRXJyb3IgOiB1aW50OF90IHsKKyAgICAgICAgU3Vj
Y2VzcywKKyAgICAgICAgTm9UYWdzLAorICAgICAgICBXcm9uZ1RhZ1R5cGUsCisgICAgICAgIE5v
Q29ubmVjdGlvbnMsCisgICAgICAgIE1hbGljaW91c1BheWxvYWQKKyAgICB9OworCisgICAgc3Ry
dWN0IExvY2FsQ29uZmlndXJhdGlvbiB7CisgICAgICAgIGJvb2wgYWNjZXB0QXV0aGVudGljYXRp
b24geyBmYWxzZSB9OworICAgICAgICBib29sIGFjY2VwdEF0dGVzdGF0aW9uIHsgZmFsc2UgfTsK
KyAgICAgICAgU3RyaW5nIHByaXZhdGVLZXlCYXNlNjQ7CisgICAgICAgIFN0cmluZyB1c2VyQ2Vy
dGlmaWNhdGVCYXNlNjQ7CisgICAgICAgIFN0cmluZyBpbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRl
QmFzZTY0OworICAgICAgICBTdHJpbmcgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDsKKworICAg
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CisgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxMb2NhbENv
bmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJik7CisgICAgfTsKKworICAgIHN0cnVjdCBIaWRD
b25maWd1cmF0aW9uIHsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gcGF5bG9hZEJhc2U2NDsKKyAg
ICAgICAgSGlkU3RhZ2Ugc3RhZ2UgeyBIaWRTdGFnZTo6SW5mbyB9OworICAgICAgICBIaWRTdWJT
dGFnZSBzdWJTdGFnZSB7IEhpZFN1YlN0YWdlOjpJbml0IH07CisgICAgICAgIEhpZEVycm9yIGVy
cm9yIHsgSGlkRXJyb3I6OlN1Y2Nlc3MgfTsKKyAgICAgICAgYm9vbCBpc1UyZiB7IGZhbHNlIH07
CisgICAgICAgIGJvb2wga2VlcEFsaXZlIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBmYXN0RGF0
YUFycml2YWwgeyBmYWxzZSB9OworICAgICAgICBib29sIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEg
eyBmYWxzZSB9OworICAgICAgICBib29sIGNhbkRvd25ncmFkZSB7IGZhbHNlIH07CisKKyAgICAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owor
ICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SGlkQ29uZmln
dXJhdGlvbj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB9OworCisgICAgc3RydWN0IE5mY0NvbmZp
Z3VyYXRpb24geworICAgICAgICBOZmNFcnJvciBlcnJvciB7IE5mY0Vycm9yOjpTdWNjZXNzIH07
CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBheWxvYWRCYXNlNjQ7CisgICAgICAgIGJvb2wgbXVs
dGlwbGVUYWdzIHsgZmFsc2UgfTsKKworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxOZmNDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwor
ICAgIH07CisKKyAgICBib29sIHNpbGVudEZhaWx1cmUgeyBmYWxzZSB9OworICAgIE9wdGlvbmFs
PExvY2FsQ29uZmlndXJhdGlvbj4gbG9jYWw7CisgICAgT3B0aW9uYWw8SGlkQ29uZmlndXJhdGlv
bj4gaGlkOworICAgIE9wdGlvbmFsPE5mY0NvbmZpZ3VyYXRpb24+IG5mYzsKKworICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+Cit2b2lkIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkxvY2FsQ29u
ZmlndXJhdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rl
ciA8PCBhY2NlcHRBdXRoZW50aWNhdGlvbiA8PCBhY2NlcHRBdHRlc3RhdGlvbiA8PCBwcml2YXRl
S2V5QmFzZTY0IDw8IHVzZXJDZXJ0aWZpY2F0ZUJhc2U2NCA8PCBpbnRlcm1lZGlhdGVDQUNlcnRp
ZmljYXRlQmFzZTY0IDw8IHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ7Cit9CisKK3RlbXBsYXRl
PGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uOjpMb2NhbENvbmZpZ3VyYXRpb24+IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b246OkxvY2FsQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAg
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TG9jYWxDb25maWd1cmF0aW9uIHJl
c3VsdDsKKworICAgIE9wdGlvbmFsPGJvb2w+IGFjY2VwdEF1dGhlbnRpY2F0aW9uOworICAgIGRl
Y29kZXIgPj4gYWNjZXB0QXV0aGVudGljYXRpb247CisgICAgaWYgKCFhY2NlcHRBdXRoZW50aWNh
dGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXN1bHQuYWNjZXB0QXV0
aGVudGljYXRpb24gPSAqYWNjZXB0QXV0aGVudGljYXRpb247CisKKyAgICBPcHRpb25hbDxib29s
PiBhY2NlcHRBdHRlc3RhdGlvbjsKKyAgICBkZWNvZGVyID4+IGFjY2VwdEF0dGVzdGF0aW9uOwor
ICAgIGlmICghYWNjZXB0QXR0ZXN0YXRpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmVzdWx0LmFjY2VwdEF0dGVzdGF0aW9uID0gKmFjY2VwdEF0dGVzdGF0aW9uOworCisg
ICAgT3B0aW9uYWw8U3RyaW5nPiBwcml2YXRlS2V5QmFzZTY0OworICAgIGRlY29kZXIgPj4gcHJp
dmF0ZUtleUJhc2U2NDsKKyAgICBpZiAoIXByaXZhdGVLZXlCYXNlNjQpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmVzdWx0LnByaXZhdGVLZXlCYXNlNjQgPSBXVEZNb3ZlKCpw
cml2YXRlS2V5QmFzZTY0KTsKKworICAgIE9wdGlvbmFsPFN0cmluZz4gdXNlckNlcnRpZmljYXRl
QmFzZTY0OworICAgIGRlY29kZXIgPj4gdXNlckNlcnRpZmljYXRlQmFzZTY0OworICAgIGlmICgh
dXNlckNlcnRpZmljYXRlQmFzZTY0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJlc3VsdC51c2VyQ2VydGlmaWNhdGVCYXNlNjQgPSBXVEZNb3ZlKCp1c2VyQ2VydGlmaWNhdGVC
YXNlNjQpOworCisgICAgT3B0aW9uYWw8U3RyaW5nPiBpbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRl
QmFzZTY0OworICAgIGRlY29kZXIgPj4gaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NDsK
KyAgICBpZiAoIWludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmVzdWx0LmludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNl
NjQgPSBXVEZNb3ZlKCppbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0KTsKKworICAgIE9w
dGlvbmFsPFN0cmluZz4gcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDsKKyAgICBkZWNvZGVyID4+
IHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ7CisgICAgaWYgKCFwcmVmZXJyZWRVc2VyaGFuZGxl
QmFzZTY0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJlc3VsdC5wcmVmZXJy
ZWRVc2VyaGFuZGxlQmFzZTY0ID0gV1RGTW92ZSgqcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NCk7
CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9p
ZCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRDb25maWd1cmF0aW9uOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHBheWxvYWRC
YXNlNjQgPDwgc3RhZ2UgPDwgc3ViU3RhZ2UgPDwgZXJyb3IgPDwgaXNVMmYgPDwga2VlcEFsaXZl
IDw8IGZhc3REYXRhQXJyaXZhbCA8PCBjb250aW51ZUFmdGVyRXJyb3JEYXRhIDw8IGNhbkRvd25n
cmFkZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENvbmZpZ3VyYXRpb24+IE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENvbmZpZ3VyYXRpb246OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQoreworICAgIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENv
bmZpZ3VyYXRpb24gcmVzdWx0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBheWxv
YWRCYXNlNjQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGVFbnVtKHJlc3VsdC5zdGFnZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LnN1YlN0YWdlKSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXN1bHQu
ZXJyb3IpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LmlzVTJmKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5rZWVwQWxpdmUpKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmZhc3REYXRhQXJyaXZh
bCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQuY29udGludWVBZnRlckVycm9yRGF0YSkpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2FuRG93bmdyYWRlKSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uOjpOZmNDb25maWd1cmF0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sK
KyAgICBlbmNvZGVyIDw8IGVycm9yIDw8IHBheWxvYWRCYXNlNjQgPDwgbXVsdGlwbGVUYWdzOwor
fQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29uZmlndXJhdGlvbj4gTW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbjo6TmZjQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
Cit7CisgICAgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29uZmlndXJh
dGlvbiByZXN1bHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LmVycm9yKSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5wYXlsb2FkQmFzZTY0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tdWx0aXBsZVRhZ3MpKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+Cit2b2lkIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgc2lsZW50RmFpbHVyZSA8
PCBsb2NhbCA8PCBoaWQgPDwgbmZjOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0
aW9uYWw8TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbj4gTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiByZXN1bHQ7CisKKyAgICBPcHRpb25hbDxi
b29sPiBzaWxlbnRGYWlsdXJlOworICAgIGRlY29kZXIgPj4gc2lsZW50RmFpbHVyZTsKKyAgICBp
ZiAoIXNpbGVudEZhaWx1cmUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVz
dWx0LnNpbGVudEZhaWx1cmUgPSAqc2lsZW50RmFpbHVyZTsKKworICAgIE9wdGlvbmFsPE9wdGlv
bmFsPExvY2FsQ29uZmlndXJhdGlvbj4+IGxvY2FsOworICAgIGRlY29kZXIgPj4gbG9jYWw7Cisg
ICAgaWYgKCFsb2NhbCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXN1bHQu
bG9jYWwgPSBXVEZNb3ZlKCpsb2NhbCk7CisKKyAgICBPcHRpb25hbDxPcHRpb25hbDxIaWRDb25m
aWd1cmF0aW9uPj4gaGlkOworICAgIGRlY29kZXIgPj4gaGlkOworICAgIGlmICghaGlkKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJlc3VsdC5oaWQgPSBXVEZNb3ZlKCpoaWQp
OworCisgICAgT3B0aW9uYWw8T3B0aW9uYWw8TmZjQ29uZmlndXJhdGlvbj4+IG5mYzsKKyAgICBk
ZWNvZGVyID4+IG5mYzsKKyAgICBpZiAoIW5mYykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXN1bHQubmZjID0gV1RGTW92ZSgqbmZjKTsKKworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbjo6SGlkU3RhZ2U+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAor
ICAgICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRT
dGFnZSwKKyAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bjo6SGlkU3RhZ2U6OkluZm8sCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb246OkhpZFN0YWdlOjpSZXF1ZXN0CisgICAgPjsKK307CisKK3RlbXBsYXRl
PD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbjo6SGlkU3ViU3RhZ2U+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAor
ICAgICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRT
dWJTdGFnZSwKKyAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbjo6SGlkU3ViU3RhZ2U6OkluaXQsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZFN1YlN0YWdlOjpNc2cKKyAgICA+OworfTsKKwordGVt
cGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uOjpIaWRFcnJvcj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8
CisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Okhp
ZEVycm9yLAorICAgICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uOjpIaWRFcnJvcjo6U3VjY2VzcywKKyAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkRXJyb3I6OkRhdGFOb3RTZW50LAorICAgICAgICBXZWJD
b3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRFcnJvcjo6RW1wdHlS
ZXBvcnQsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b246OkhpZEVycm9yOjpXcm9uZ0NoYW5uZWxJZCwKKyAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkRXJyb3I6Ok1hbGljaW91c1BheWxvYWQsCisg
ICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZEVy
cm9yOjpVbnN1cHBvcnRlZE9wdGlvbnMsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZEVycm9yOjpXcm9uZ05vbmNlCisgICAgPjsKK307CisK
K3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbjo6TmZjRXJyb3I+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFs
dWVzPAorICAgICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
OjpOZmNFcnJvciwKKyAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbjo6TmZjRXJyb3I6OlN1Y2Nlc3MsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mY0Vycm9yOjpOb1RhZ3MsCisgICAgICAgIFdlYkNv
cmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mY0Vycm9yOjpXcm9uZ1Rh
Z1R5cGUsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b246Ok5mY0Vycm9yOjpOb0Nvbm5lY3Rpb25zLAorICAgICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmNFcnJvcjo6TWFsaWNpb3VzUGF5bG9hZAorICAg
ID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVU
SE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZGViODYxY2M5ZTZjNGM2
MjdhMDczMmQ3YWU2YTc0NTY3OWE2ZmRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmlkbApAQCAtMCww
ICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVUSE4sCitd
IGVudW0gTW9ja0hpZFN0YWdlIHsKKyAgICAiaW5mbyIsCisgICAgInJlcXVlc3QiCit9OworCitb
CisgICAgQ29uZGl0aW9uYWw9V0VCX0FVVEhOLAorXSBlbnVtIE1vY2tIaWRTdWJTdGFnZSB7Cisg
ICAgImluaXQiLAorICAgICJtc2ciCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVVEhO
LAorXSBlbnVtIE1vY2tIaWRFcnJvciB7CisgICAgInN1Y2Nlc3MiLAorICAgICJkYXRhLW5vdC1z
ZW50IiwKKyAgICAiZW1wdHktcmVwb3J0IiwKKyAgICAid3JvbmctY2hhbm5lbC1pZCIsCisgICAg
Im1hbGljaW91cy1wYXlsb2FkIiwKKyAgICAidW5zdXBwb3J0ZWQtb3B0aW9ucyIsCisgICAgIndy
b25nLW5vbmNlIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVVRITiwKK10gZW51bSBN
b2NrTmZjRXJyb3IgeworICAgICJzdWNjZXNzIiwKKyAgICAibm8tdGFncyIsCisgICAgIndyb25n
LXRhZy10eXBlIiwKKyAgICAibm8tY29ubmVjdGlvbnMiLAorICAgICJtYWxpY2lvdXMtcGF5bG9h
ZCIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVUSE4sCitdIGRpY3Rpb25hcnkgTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiB7CisgICAgYm9vbGVhbiBzaWxlbnRGYWls
dXJlID0gZmFsc2U7CisgICAgTW9ja0xvY2FsQ29uZmlndXJhdGlvbiBsb2NhbDsKKyAgICBNb2Nr
SGlkQ29uZmlndXJhdGlvbiBoaWQ7CisgICAgTW9ja05mY0NvbmZpZ3VyYXRpb24gbmZjOworfTsK
KworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVVRITiwKK10gZGljdGlvbmFyeSBNb2NrTG9jYWxD
b25maWd1cmF0aW9uIHsKKyAgICBib29sZWFuIGFjY2VwdEF1dGhlbnRpY2F0aW9uID0gZmFsc2U7
CisgICAgYm9vbGVhbiBhY2NlcHRBdHRlc3RhdGlvbiA9IGZhbHNlOworICAgIERPTVN0cmluZyBw
cml2YXRlS2V5QmFzZTY0OworICAgIERPTVN0cmluZyB1c2VyQ2VydGlmaWNhdGVCYXNlNjQ7Cisg
ICAgRE9NU3RyaW5nIGludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQ7CisgICAgRE9NU3Ry
aW5nIHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ7Cit9OworCitbCisgICAgQ29uZGl0aW9uYWw9
V0VCX0FVVEhOLAorXSBkaWN0aW9uYXJ5IE1vY2tIaWRDb25maWd1cmF0aW9uIHsKKyAgICBzZXF1
ZW5jZTxET01TdHJpbmc+IHBheWxvYWRCYXNlNjQ7CisgICAgTW9ja0hpZFN0YWdlIHN0YWdlID0g
ImluZm8iOworICAgIE1vY2tIaWRTdWJTdGFnZSBzdWJTdGFnZSA9ICJpbml0IjsKKyAgICBNb2Nr
SGlkRXJyb3IgZXJyb3IgPSAic3VjY2VzcyI7CisgICAgYm9vbGVhbiBpc1UyZiA9IGZhbHNlOwor
ICAgIGJvb2xlYW4ga2VlcEFsaXZlID0gZmFsc2U7CisgICAgYm9vbGVhbiBmYXN0RGF0YUFycml2
YWwgPSBmYWxzZTsKKyAgICBib29sZWFuIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEgPSBmYWxzZTsK
KyAgICBib29sZWFuIGNhbkRvd25ncmFkZSA9IGZhbHNlOworfTsKKworWworICAgIENvbmRpdGlv
bmFsPVdFQl9BVVRITiwKK10gZGljdGlvbmFyeSBNb2NrTmZjQ29uZmlndXJhdGlvbiB7CisgICAg
TW9ja05mY0Vycm9yIGVycm9yID0gInN1Y2Nlc3MiOworICAgIHNlcXVlbmNlPERPTVN0cmluZz4g
cGF5bG9hZEJhc2U2NDsKKyAgICBib29sZWFuIG11bHRpcGxlVGFncyA9IGZhbHNlOworfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9y
ZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuY3BwCmluZGV4IDlkN2ZhN2QzN2M2NmExZjJkOWVjNDhjOTdlNTFiYzZmZDcwYTc3YTQu
LmI1NTY5Njg3YzVlODYzZjg0MGZkYmQyMDU4ODk5NjViYmU3YjkyM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNw
cApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJB
UElIVFRQQ29va2llU3RvcmUuaCIKLSNpbmNsdWRlICJNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCiAj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tEaWN0aW9uYXJ5LmgiCkBAIC00Myw2
ICs0Miw3IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFSZWNvcmQuaCIKICNpbmNsdWRlICJXZWJz
aXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg+CiAjaW5jbHVkZSA8
d3RmL0NhbGxiYWNrQWdncmVnYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIApAQCAtNjU4
LDEwOCArNjU4LDYgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVDbGVhckFsbERldmljZU9yaWVu
dGF0aW9uUGVybWlzc2lvbnMoV0tXZWJzaXRlRGF0YVN0b3JlUmUKICNlbmRpZgogfQogCi12b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZVNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24o
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tEaWN0aW9uYXJ5UmVmIGNvbmZp
Z3VyYXRpb25SZWYpCi17Ci0jaWYgRU5BQkxFKFdFQl9BVVRITikKLSAgICBXZWJLaXQ6Ok1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKLQotICAgIGlmIChh
dXRvIHNpbGVudEZhaWx1cmVSZWYgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdLRGljdGlv
bmFyeUdldEl0ZW1Gb3JLZXkoY29uZmlndXJhdGlvblJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiU2lsZW50RmFpbHVyZSIpKS5nZXQoKSkpKQotICAgICAgICBjb25m
aWd1cmF0aW9uLnNpbGVudEZhaWx1cmUgPSBXS0Jvb2xlYW5HZXRWYWx1ZShzaWxlbnRGYWlsdXJl
UmVmKTsKLQotICAgIGlmIChhdXRvIGxvY2FsUmVmID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5
UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGNvbmZpZ3VyYXRpb25SZWYsIGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkxvY2FsIikpLmdldCgpKSkpIHsKLSAgICAg
ICAgV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpMb2NhbCBsb2Nh
bDsKLSAgICAgICAgbG9jYWwuYWNjZXB0QXV0aGVudGljYXRpb24gPSBXS0Jvb2xlYW5HZXRWYWx1
ZShzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobG9j
YWxSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkFjY2VwdEF1dGhl
bnRpY2F0aW9uIikpLmdldCgpKSkpOwotICAgICAgICBsb2NhbC5hY2NlcHRBdHRlc3RhdGlvbiA9
IFdLQm9vbGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5
R2V0SXRlbUZvcktleShsb2NhbFJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiQWNjZXB0QXR0ZXN0YXRpb24iKSkuZ2V0KCkpKSk7Ci0gICAgICAgIGlmIChsb2NhbC5h
Y2NlcHRBdHRlc3RhdGlvbikgewotICAgICAgICAgICAgbG9jYWwucHJpdmF0ZUtleUJhc2U2NCA9
IFdlYktpdDo6dG9JbXBsKHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJ
dGVtRm9yS2V5KGxvY2FsUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJQcml2YXRlS2V5QmFzZTY0IikpLmdldCgpKSkpLT5zdHJpbmcoKTsKLSAgICAgICAgICAgIGxv
Y2FsLnVzZXJDZXJ0aWZpY2F0ZUJhc2U2NCA9IFdlYktpdDo6dG9JbXBsKHN0YXRpY19jYXN0PFdL
U3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGxvY2FsUmVmLCBhZG9wdFdLKFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJVc2VyQ2VydGlmaWNhdGVCYXNlNjQiKSkuZ2V0
KCkpKSktPnN0cmluZygpOwotICAgICAgICAgICAgbG9jYWwuaW50ZXJtZWRpYXRlQ0FDZXJ0aWZp
Y2F0ZUJhc2U2NCA9IFdlYktpdDo6dG9JbXBsKHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0Rp
Y3Rpb25hcnlHZXRJdGVtRm9yS2V5KGxvY2FsUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJJbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0IikpLmdldCgpKSkp
LT5zdHJpbmcoKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoYXV0byBwcmVmZXJyZWRVc2VyaGFu
ZGxlQmFzZTY0UmVmID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0
ZW1Gb3JLZXkobG9jYWxSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IlByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQiKSkuZ2V0KCkpKSkKLSAgICAgICAgICAgIGxvY2Fs
LnByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQgPSBXZWJLaXQ6OnRvSW1wbChwcmVmZXJyZWRVc2Vy
aGFuZGxlQmFzZTY0UmVmKS0+c3RyaW5nKCk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24ubG9jYWwg
PSBXVEZNb3ZlKGxvY2FsKTsKLSAgICB9Ci0KLSAgICBpZiAoYXV0byBoaWRSZWYgPSBzdGF0aWNf
Y2FzdDxXS0RpY3Rpb25hcnlSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoY29uZmlndXJh
dGlvblJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSGlkIikpLmdl
dCgpKSkpIHsKLSAgICAgICAgV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uOjpIaWQgaGlkOwotCi0gICAgICAgIGF1dG8gc3RhZ2UgPSBXZWJLaXQ6OnRvSW1wbChzdGF0
aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShoaWRSZWYsIGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlN0YWdlIikpLmdldCgpKSkpLT5z
dHJpbmcoKTsKLSAgICAgICAgaWYgKHN0YWdlID09ICJpbmZvIikKLSAgICAgICAgICAgIGhpZC5z
dGFnZSA9IFdlYktpdDo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpT
dGFnZTo6SW5mbzsKLSAgICAgICAgZWxzZSBpZiAoc3RhZ2UgPT0gInJlcXVlc3QiKQotICAgICAg
ICAgICAgaGlkLnN0YWdlID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uOjpIaWQ6OlN0YWdlOjpSZXF1ZXN0OwotCi0gICAgICAgIGF1dG8gc3ViU3RhZ2UgPSBXZWJL
aXQ6OnRvSW1wbChzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZv
cktleShoaWRSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlN1YlN0
YWdlIikpLmdldCgpKSkpLT5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHN1YlN0YWdlID09ICJpbml0
IikKLSAgICAgICAgICAgIGhpZC5zdWJTdGFnZSA9IFdlYktpdDo6TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpTdWJTdGFnZTo6SW5pdDsKLSAgICAgICAgZWxzZSBpZiAo
c3ViU3RhZ2UgPT0gIm1zZyIpCi0gICAgICAgICAgICBoaWQuc3ViU3RhZ2UgPSBXZWJLaXQ6Ok1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZDo6U3ViU3RhZ2U6Ok1zZzsKLQot
ICAgICAgICBhdXRvIGVycm9yID0gV2ViS2l0Ojp0b0ltcGwoc3RhdGljX2Nhc3Q8V0tTdHJpbmdS
ZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaGlkUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJFcnJvciIpKS5nZXQoKSkpKS0+c3RyaW5nKCk7Ci0gICAgICAg
IGlmIChlcnJvciA9PSAic3VjY2VzcyIpCi0gICAgICAgICAgICBoaWQuZXJyb3IgPSBXZWJLaXQ6
Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZDo6RXJyb3I6OlN1Y2Nlc3M7
Ci0gICAgICAgIGVsc2UgaWYgKGVycm9yID09ICJkYXRhLW5vdC1zZW50IikKLSAgICAgICAgICAg
IGhpZC5lcnJvciA9IFdlYktpdDo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6
SGlkOjpFcnJvcjo6RGF0YU5vdFNlbnQ7Ci0gICAgICAgIGVsc2UgaWYgKGVycm9yID09ICJlbXB0
eS1yZXBvcnQiKQotICAgICAgICAgICAgaGlkLmVycm9yID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OkVycm9yOjpFbXB0eVJlcG9ydDsKLSAgICAgICAg
ZWxzZSBpZiAoZXJyb3IgPT0gIndyb25nLWNoYW5uZWwtaWQiKQotICAgICAgICAgICAgaGlkLmVy
cm9yID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OkVy
cm9yOjpXcm9uZ0NoYW5uZWxJZDsKLSAgICAgICAgZWxzZSBpZiAoZXJyb3IgPT0gIm1hbGljaW91
cy1wYXlsb2FkIikKLSAgICAgICAgICAgIGhpZC5lcnJvciA9IFdlYktpdDo6TW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpFcnJvcjo6TWFsaWNpb3VzUGF5bG9hZDsKLSAg
ICAgICAgZWxzZSBpZiAoZXJyb3IgPT0gInVuc3VwcG9ydGVkLW9wdGlvbnMiKQotICAgICAgICAg
ICAgaGlkLmVycm9yID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
OjpIaWQ6OkVycm9yOjpVbnN1cHBvcnRlZE9wdGlvbnM7Ci0gICAgICAgIGVsc2UgaWYgKGVycm9y
ID09ICJ3cm9uZy1ub25jZSIpCi0gICAgICAgICAgICBoaWQuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZDo6RXJyb3I6Oldyb25nTm9uY2U7Ci0K
LSAgICAgICAgaWYgKGF1dG8gcGF5bG9hZEJhc2U2NCA9IHN0YXRpY19jYXN0PFdLQXJyYXlSZWY+
KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaGlkUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJQYXlsb2FkQmFzZTY0IikpLmdldCgpKSkpCi0gICAgICAgICAgICBo
aWQucGF5bG9hZEJhc2U2NCA9IFdlYktpdDo6dG9JbXBsKHBheWxvYWRCYXNlNjQpLT50b1N0cmlu
Z1ZlY3RvcigpOwotCi0gICAgICAgIGlmIChhdXRvIGlzVTJmID0gc3RhdGljX2Nhc3Q8V0tCb29s
ZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGhpZFJlZiwgYWRvcHRXSyhXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSXNVMmYiKSkuZ2V0KCkpKSkKLSAgICAgICAgICAgIGhp
ZC5pc1UyZiA9IFdLQm9vbGVhbkdldFZhbHVlKGlzVTJmKTsKLQotICAgICAgICBpZiAoYXV0byBr
ZWVwQWxpdmUgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1G
b3JLZXkoaGlkUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJLZWVw
QWxpdmUiKSkuZ2V0KCkpKSkKLSAgICAgICAgICAgIGhpZC5rZWVwQWxpdmUgPSBXS0Jvb2xlYW5H
ZXRWYWx1ZShrZWVwQWxpdmUpOwotCi0gICAgICAgIGlmIChhdXRvIGZhc3REYXRhQXJyaXZhbCA9
IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShoaWRS
ZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkZhc3REYXRhQXJyaXZh
bCIpKS5nZXQoKSkpKQotICAgICAgICAgICAgaGlkLmZhc3REYXRhQXJyaXZhbCA9IFdLQm9vbGVh
bkdldFZhbHVlKGZhc3REYXRhQXJyaXZhbCk7Ci0KLSAgICAgICAgaWYgKGF1dG8gY29udGludWVB
ZnRlckVycm9yRGF0YSA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5R2V0
SXRlbUZvcktleShoaWRSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IkNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEiKSkuZ2V0KCkpKSkKLSAgICAgICAgICAgIGhpZC5jb250
aW51ZUFmdGVyRXJyb3JEYXRhID0gV0tCb29sZWFuR2V0VmFsdWUoY29udGludWVBZnRlckVycm9y
RGF0YSk7Ci0KLSAgICAgICAgaWYgKGF1dG8gY2FuRG93bmdyYWRlID0gc3RhdGljX2Nhc3Q8V0tC
b29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGhpZFJlZiwgYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FuRG93bmdyYWRlIikpLmdldCgpKSkpCi0gICAg
ICAgICAgICBoaWQuY2FuRG93bmdyYWRlID0gV0tCb29sZWFuR2V0VmFsdWUoY2FuRG93bmdyYWRl
KTsKLQotICAgICAgICBjb25maWd1cmF0aW9uLmhpZCA9IFdURk1vdmUoaGlkKTsKLSAgICB9Ci0K
LSAgICBpZiAoYXV0byBuZmNSZWYgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KFdLRGlj
dGlvbmFyeUdldEl0ZW1Gb3JLZXkoY29uZmlndXJhdGlvblJlZiwgYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiTmZjIikpLmdldCgpKSkpIHsKLSAgICAgICAgV2ViS2l0OjpN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmMgbmZjOwotCi0gICAgICAgIGF1
dG8gZXJyb3IgPSBXZWJLaXQ6OnRvSW1wbChzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0
aW9uYXJ5R2V0SXRlbUZvcktleShuZmNSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIkVycm9yIikpLmdldCgpKSkpLT5zdHJpbmcoKTsKLSAgICAgICAgaWYgKGVycm9y
ID09ICJzdWNjZXNzIikKLSAgICAgICAgICAgIG5mYy5lcnJvciA9IFdlYktpdDo6TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjOjpFcnJvcjo6U3VjY2VzczsKLSAgICAgICAg
ZWxzZSBpZiAoZXJyb3IgPT0gIm5vLXRhZ3MiKQotICAgICAgICAgICAgbmZjLmVycm9yID0gV2Vi
S2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmM6OkVycm9yOjpOb1Rh
Z3M7Ci0gICAgICAgIGVsc2UgaWYgKGVycm9yID09ICJ3cm9uZy10YWctdHlwZSIpCi0gICAgICAg
ICAgICBuZmMuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b246Ok5mYzo6RXJyb3I6Oldyb25nVGFnVHlwZTsKLSAgICAgICAgZWxzZSBpZiAoZXJyb3IgPT0g
Im5vLWNvbm5lY3Rpb25zIikKLSAgICAgICAgICAgIG5mYy5lcnJvciA9IFdlYktpdDo6TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjOjpFcnJvcjo6Tm9Db25uZWN0aW9uczsK
LSAgICAgICAgZWxzZSBpZiAoZXJyb3IgPT0gIm1hbGljaW91cy1wYXlsb2FkIikKLSAgICAgICAg
ICAgIG5mYy5lcnJvciA9IFdlYktpdDo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bjo6TmZjOjpFcnJvcjo6TWFsaWNpb3VzUGF5bG9hZDsKLQotICAgICAgICBpZiAoYXV0byBwYXls
b2FkQmFzZTY0ID0gc3RhdGljX2Nhc3Q8V0tBcnJheVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZv
cktleShuZmNSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlBheWxv
YWRCYXNlNjQiKSkuZ2V0KCkpKSkKLSAgICAgICAgICAgIG5mYy5wYXlsb2FkQmFzZTY0ID0gV2Vi
S2l0Ojp0b0ltcGwocGF5bG9hZEJhc2U2NCktPnRvU3RyaW5nVmVjdG9yKCk7Ci0KLSAgICAgICAg
aWYgKGF1dG8gbXVsdGlwbGVUYWdzID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rp
b25hcnlHZXRJdGVtRm9yS2V5KG5mY1JlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiTXVsdGlwbGVUYWdzIikpLmdldCgpKSkpCi0gICAgICAgICAgICBuZmMubXVsdGlw
bGVUYWdzID0gV0tCb29sZWFuR2V0VmFsdWUobXVsdGlwbGVUYWdzKTsKLQotICAgICAgICBjb25m
aWd1cmF0aW9uLm5mYyA9IFdURk1vdmUobmZjKTsKLSAgICB9Ci0KLSAgICBXZWJLaXQ6OnRvSW1w
bChkYXRhU3RvcmVSZWYpLT5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKFdU
Rk1vdmUoY29uZmlndXJhdGlvbikpOwotI2VuZGlmCi19Ci0KIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVE
YXRhU3RvcmVDbGVhckFkQ2xpY2tBdHRyaWJ1dGlvbnNUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFs
RnVuY3Rpb24gY2FsbGJhY2spCiB7CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFU
eXBlPiBkYXRhVHlwZXMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6QWRDbGlja0F0dHJpYnV0
aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLmgKaW5kZXggYzFmOTkwYjM1YTdiMjY2MjQxNWZlNmYxOGU5MDI4MzkzODA4
ODJlZS4uZWY0MzM5ODYwNDRhYTExNDUxNTdmOWM3YmRiZmFkYjRiZGFmZGYzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LmgKQEAgLTE0Myw4ICsxNDMsNiBAQCBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KFdLV2Vic2l0ZQogCiBXS19FWFBP
UlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRQZXJPcmlnaW5TdG9yYWdlUXVvdGEoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdWludDY0X3QgcXVvdGEpIFdLX0NfQVBJX0RF
UFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVChXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
U2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKTsKIAotV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihXS1dlYnNpdGVEYXRh
U3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS0RpY3Rpb25hcnlSZWYgY29uZmlndXJhdGlvbik7Ci0K
IFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQWxsRGV2aWNlT3JpZW50YXRp
b25QZXJtaXNzaW9ucyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmKTsKIAogdHlw
ZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhy
b3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0
aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2UuY3BwCmluZGV4
IDdhMGY4ZjliMTFkMzQyZTFkNDRkYWVjMTQ5YjE0ZmNhMGExMmQzNDguLmU4MTAzOWI2ZGNiNDBj
NTYyNTVkNzdmNGRlZmRlOTZmMWU0ZDRlZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdG9yVHJhbnNwb3J0U2VydmljZS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgVW5pcXVlUmVmPEF1
dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPiBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2Vydmlj
ZTo6Y3JlYXRlKFcKICAgICB9CiB9CiAKLVVuaXF1ZVJlZjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0
U2VydmljZT4gQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U6OmNyZWF0ZU1vY2soV2ViQ29y
ZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydCB0cmFuc3BvcnQsIE9ic2VydmVyJiBvYnNlcnZlciwg
Y29uc3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikK
K1VuaXF1ZVJlZjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZT4gQXV0aGVudGljYXRvclRy
YW5zcG9ydFNlcnZpY2U6OmNyZWF0ZU1vY2soV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9y
dCB0cmFuc3BvcnQsIE9ic2VydmVyJiBvYnNlcnZlciwgY29uc3QgV2ViQ29yZTo6TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKIHsKICAgICBzd2l0Y2gg
KHRyYW5zcG9ydCkgewogICAgIGNhc2UgV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6
SW50ZXJuYWw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2Uu
aAppbmRleCA2Y2U0NjE4NzhkYmEyYWU2MGU3NTY2M2U5N2IxYmRmYjcyNGQ0ZmRlLi4wOTA4NGFi
OGE3Yzc5MDkwNTE3ZjJlNzJlYjdhNTQ2ZDlhZDI2ZWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0U2Vy
dmljZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlLmgKQEAgLTMxLDEyICszMSwxNCBAQAogI2luY2x1
ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjsK
K30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEF1dGhlbnRpY2F0b3I7CiAKLXN0cnVj
dCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOwotCiBjbGFzcyBBdXRoZW50aWNh
dG9yVHJhbnNwb3J0U2VydmljZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBdXRoZW50aWNhdG9y
VHJhbnNwb3J0U2VydmljZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlKTsKQEAgLTQ5
LDcgKzUxLDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBzdGF0aWMgVW5pcXVlUmVmPEF1dGhl
bnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPiBjcmVhdGUoV2ViQ29yZTo6QXV0aGVudGljYXRvclRy
YW5zcG9ydCwgT2JzZXJ2ZXImKTsKLSAgICBzdGF0aWMgVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JU
cmFuc3BvcnRTZXJ2aWNlPiBjcmVhdGVNb2NrKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnQsIE9ic2VydmVyJiwgY29uc3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYp
OworICAgIHN0YXRpYyBVbmlxdWVSZWY8QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U+IGNy
ZWF0ZU1vY2soV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydCwgT2JzZXJ2ZXImLCBjb25z
dCBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJik7CiAKICAgICB2
aXJ0dWFsIH5BdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZSgpID0gZGVmYXVsdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrQXV0aGVudGljYXRvck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vTW9jay9Nb2NrQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCmluZGV4IDA4
NGM5YmUyM2ZiMGFiZDk1NjNkZjkxZmM2NjZlMTFmMTM1MTA2YzYuLmY4ZmYyZDY3NjRiZDdhNWQx
NGFiY2IxNjAzNTJkY2QxZDEwYTZmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tB
dXRoZW50aWNhdG9yTWFuYWdlci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLU1vY2tBdXRoZW50aWNhdG9yTWFuYWdlcjo6TW9ja0F1dGhlbnRpY2F0b3JNYW5h
Z2VyKE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQor
TW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyOjpNb2NrQXV0aGVudGljYXRvck1hbmFnZXIoV2ViQ29y
ZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCiAg
ICAgOiBtX3Rlc3RDb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCiB7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2Nr
L01vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vTW9jay9Nb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaAppbmRleCA4NWQ4
MDA5OTU2NjRlYTVlY2Q5MmE0ZWMwNDU3N2RhYWFlYTUwOTlhLi5hOGViODBhNTdhNzdmYmIxNmRk
MTYwODJhOTI4M2U4YTk5NWVkOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0F1dGhl
bnRpY2F0b3JNYW5hZ2VyLmgKQEAgLTI4LDIyICsyOCwyMiBAQAogI2lmIEVOQUJMRShXRUJfQVVU
SE4pCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yTWFuYWdlci5oIgotI2luY2x1ZGUgIk1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlciBmaW5hbCA6IHB1YmxpYyBBdXRoZW50aWNh
dG9yTWFuYWdlciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgTW9ja0F1dGhlbnRpY2F0b3JNYW5h
Z2VyKE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mJik7CisgICAgZXhwbGljaXQg
TW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyKFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24mJik7CiAKICAgICBib29sIGlzTW9jaygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KLSAgICB2b2lkIHNldFRlc3RDb25maWd1cmF0aW9uKE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKSB7IG1fdGVzdENvbmZpZ3VyYXRpb24g
PSBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pOyB9CisgICAgdm9pZCBzZXRUZXN0Q29uZmlndXJhdGlv
bihXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiYgY29uZmlndXJh
dGlvbikgeyBtX3Rlc3RDb25maWd1cmF0aW9uID0gV1RGTW92ZShjb25maWd1cmF0aW9uKTsgfQog
CiBwcml2YXRlOgogICAgIFVuaXF1ZVJlZjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZT4g
Y3JlYXRlU2VydmljZShXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0LCBBdXRoZW50aWNh
dG9yVHJhbnNwb3J0U2VydmljZTo6T2JzZXJ2ZXImKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHJl
c3BvbmRSZWNlaXZlZEludGVybmFsKFJlc3BvbmQmJikgZmluYWw7CiAKLSAgICBNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uIG1fdGVzdENvbmZpZ3VyYXRpb247CisgICAgV2ViQ29y
ZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBtX3Rlc3RDb25maWd1cmF0aW9u
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENv
bm5lY3Rpb24uY3BwCmluZGV4IDhlMGZlNTI2ZDIwNmVkYzBiYzM3ZTg2ZTRhYWY0ZWQ1ZDk3YTRl
ZjMuLjY1ODQ2NmRlN2IxMzFlYmU1NGU2NzFmNjcwNDNjN2ZmZTZjNTM2OGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3BwCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVk
ZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgTW9ja0hp
ZCA9IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZDsKK3VzaW5nIE1vY2sg
PSBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOwogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgY2JvcjsKIHVzaW5nIG5hbWVzcGFjZSBm
aWRvOwpAQCAtODIsNyArODIsNyBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpzZW5kKFZlY3Rv
cjx1aW50OF90PiYmIGRhdGEsIERhdGFTZW50Q2FsbGJhY2smJiBjYWxsYmFjawogICAgICAgICAg
ICAgd2Vha1RoaXMtPmFzc2VtYmxlUmVxdWVzdChXVEZNb3ZlKGRhdGEpKTsKIAogICAgICAgICAg
ICAgYXV0byBzZW50ID0gRGF0YVNlbnQ6OlllczsKLSAgICAgICAgICAgIGlmICh3ZWFrVGhpcy0+
c3RhZ2VzTWF0Y2goKSAmJiB3ZWFrVGhpcy0+bV9jb25maWd1cmF0aW9uLmhpZC0+ZXJyb3IgPT0g
TW9ja0hpZDo6RXJyb3I6OkRhdGFOb3RTZW50KQorICAgICAgICAgICAgaWYgKHdlYWtUaGlzLT5z
dGFnZXNNYXRjaCgpICYmIHdlYWtUaGlzLT5tX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBN
b2NrOjpIaWRFcnJvcjo6RGF0YU5vdFNlbnQpCiAgICAgICAgICAgICAgICAgc2VudCA9IERhdGFT
ZW50OjpObzsKICAgICAgICAgICAgIGNhbGxiYWNrKHNlbnQpOwogICAgICAgICB9KTsKQEAgLTky
LDcgKzkyLDcgQEAgdm9pZCBNb2NrSGlkQ29ubmVjdGlvbjo6c2VuZChWZWN0b3I8dWludDhfdD4m
JiBkYXRhLCBEYXRhU2VudENhbGxiYWNrJiYgY2FsbGJhY2sKIAogdm9pZCBNb2NrSGlkQ29ubmVj
dGlvbjo6cmVnaXN0ZXJEYXRhUmVjZWl2ZWRDYWxsYmFja0ludGVybmFsKCkKIHsKLSAgICBpZiAo
c3RhZ2VzTWF0Y2goKSAmJiBtX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBNb2NrSGlkOjpF
cnJvcjo6RW1wdHlSZXBvcnQpIHsKKyAgICBpZiAoc3RhZ2VzTWF0Y2goKSAmJiBtX2NvbmZpZ3Vy
YXRpb24uaGlkLT5lcnJvciA9PSBNb2NrOjpIaWRFcnJvcjo6RW1wdHlSZXBvcnQpIHsKICAgICAg
ICAgcmVjZWl2ZVJlcG9ydCh7IH0pOwogICAgICAgICBzaG91bGRDb250aW51ZUZlZWRSZXBvcnRz
KCk7CiAgICAgICAgIHJldHVybjsKQEAgLTEyMywxNCArMTIzLDE0IEBAIHZvaWQgTW9ja0hpZENv
bm5lY3Rpb246OnBhcnNlUmVxdWVzdCgpCiAgICAgLy8gU2V0IHN0YWdlcy4KICAgICBpZiAobV9y
ZXF1ZXN0TWVzc2FnZS0+Y21kKCkgPT0gRmlkb0hpZERldmljZUNvbW1hbmQ6OmtJbml0KSB7CiAg
ICAgICAgIGF1dG8gcHJldmlvdXNTdWJTdGFnZSA9IG1fc3ViU3RhZ2U7Ci0gICAgICAgIG1fc3Vi
U3RhZ2UgPSBNb2NrSGlkOjpTdWJTdGFnZTo6SW5pdDsKLSAgICAgICAgaWYgKHByZXZpb3VzU3Vi
U3RhZ2UgPT0gTW9ja0hpZDo6U3ViU3RhZ2U6Ok1zZykKLSAgICAgICAgICAgIG1fc3RhZ2UgPSBN
b2NrSGlkOjpTdGFnZTo6UmVxdWVzdDsKKyAgICAgICAgbV9zdWJTdGFnZSA9IE1vY2s6OkhpZFN1
YlN0YWdlOjpJbml0OworICAgICAgICBpZiAocHJldmlvdXNTdWJTdGFnZSA9PSBNb2NrOjpIaWRT
dWJTdGFnZTo6TXNnKQorICAgICAgICAgICAgbV9zdGFnZSA9IE1vY2s6OkhpZFN0YWdlOjpSZXF1
ZXN0OwogICAgIH0KICAgICBpZiAobV9yZXF1ZXN0TWVzc2FnZS0+Y21kKCkgPT0gRmlkb0hpZERl
dmljZUNvbW1hbmQ6OmtDYm9yIHx8IG1fcmVxdWVzdE1lc3NhZ2UtPmNtZCgpID09IEZpZG9IaWRE
ZXZpY2VDb21tYW5kOjprTXNnKQotICAgICAgICBtX3N1YlN0YWdlID0gTW9ja0hpZDo6U3ViU3Rh
Z2U6Ok1zZzsKKyAgICAgICAgbV9zdWJTdGFnZSA9IE1vY2s6OkhpZFN1YlN0YWdlOjpNc2c7CiAK
LSAgICBpZiAobV9zdGFnZSA9PSBNb2NrSGlkOjpTdGFnZTo6UmVxdWVzdCAmJiBtX3N1YlN0YWdl
ID09IE1vY2tIaWQ6OlN1YlN0YWdlOjpNc2cpIHsKKyAgICBpZiAobV9zdGFnZSA9PSBNb2NrOjpI
aWRTdGFnZTo6UmVxdWVzdCAmJiBtX3N1YlN0YWdlID09IE1vY2s6OkhpZFN1YlN0YWdlOjpNc2cp
IHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGlzc3VlIGRpZmZlcmVudCBtc2cgY21kIGZvciBD
VEFQIGFuZCBVMkYuCiAgICAgICAgIGlmIChtX2NvbmZpZ3VyYXRpb24uaGlkLT5jYW5Eb3duZ3Jh
ZGUgJiYgIW1fY29uZmlndXJhdGlvbi5oaWQtPmlzVTJmKQogICAgICAgICAgICAgbV9jb25maWd1
cmF0aW9uLmhpZC0+aXNVMmYgPSBtX3JlcXVlc3RNZXNzYWdlLT5jbWQoKSA9PSBGaWRvSGlkRGV2
aWNlQ29tbWFuZDo6a01zZzsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIE1vY2tIaWRDb25uZWN0
aW9uOjpwYXJzZVJlcXVlc3QoKQogICAgIH0KIAogICAgIC8vIFN0b3JlIG5vbmNlLgotICAgIGlm
IChtX3N1YlN0YWdlID09IE1vY2tIaWQ6OlN1YlN0YWdlOjpJbml0KSB7CisgICAgaWYgKG1fc3Vi
U3RhZ2UgPT0gTW9jazo6SGlkU3ViU3RhZ2U6OkluaXQpIHsKICAgICAgICAgbV9ub25jZSA9IG1f
cmVxdWVzdE1lc3NhZ2UtPmdldE1lc3NhZ2VQYXlsb2FkKCk7CiAgICAgICAgIEFTU0VSVChtX25v
bmNlLnNpemUoKSA9PSBrSGlkSW5pdE5vbmNlTGVuZ3RoKTsKICAgICB9CkBAIC0xOTEsMTcgKzE5
MSwxNyBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpmZWVkUmVwb3J0cygpCiB7CiAgICAgdXNp
bmcgbmFtZXNwYWNlIE1vY2tIaWRDb25uZWN0aW9uSW50ZXJuYWw7CiAKLSAgICBpZiAobV9zdWJT
dGFnZSA9PSBNb2NrSGlkOjpTdWJTdGFnZTo6SW5pdCkgeworICAgIGlmIChtX3N1YlN0YWdlID09
IE1vY2s6OkhpZFN1YlN0YWdlOjpJbml0KSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBwYXls
b2FkOwogICAgICAgICBwYXlsb2FkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoa0hpZEluaXRSZXNw
b25zZVNpemUpOwogICAgICAgICBwYXlsb2FkLmFwcGVuZFZlY3RvcihtX25vbmNlKTsKICAgICAg
ICAgc2l6ZV90IHdyaXRlUG9zaXRpb24gPSBwYXlsb2FkLnNpemUoKTsKLSAgICAgICAgaWYgKHN0
YWdlc01hdGNoKCkgJiYgbV9jb25maWd1cmF0aW9uLmhpZC0+ZXJyb3IgPT0gTW9ja0hpZDo6RXJy
b3I6Oldyb25nTm9uY2UpCisgICAgICAgIGlmIChzdGFnZXNNYXRjaCgpICYmIG1fY29uZmlndXJh
dGlvbi5oaWQtPmVycm9yID09IE1vY2s6OkhpZEVycm9yOjpXcm9uZ05vbmNlKQogICAgICAgICAg
ICAgcGF5bG9hZFswXS0tOwogICAgICAgICBwYXlsb2FkLmdyb3coa0hpZEluaXRSZXNwb25zZVNp
emUpOwogICAgICAgICBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyhwYXlsb2FkLmRhdGEo
KSArIHdyaXRlUG9zaXRpb24sIEN0YXBDaGFubmVsSWRTaXplKTsKICAgICAgICAgYXV0byBjaGFu
bmVsID0ga0hpZEJyb2FkY2FzdENoYW5uZWw7Ci0gICAgICAgIGlmIChzdGFnZXNNYXRjaCgpICYm
IG1fY29uZmlndXJhdGlvbi5oaWQtPmVycm9yID09IE1vY2tIaWQ6OkVycm9yOjpXcm9uZ0NoYW5u
ZWxJZCkKKyAgICAgICAgaWYgKHN0YWdlc01hdGNoKCkgJiYgbV9jb25maWd1cmF0aW9uLmhpZC0+
ZXJyb3IgPT0gTW9jazo6SGlkRXJyb3I6Oldyb25nQ2hhbm5lbElkKQogICAgICAgICAgICAgY2hh
bm5lbC0tOwogICAgICAgICBGaWRvSGlkSW5pdFBhY2tldCBpbml0UGFja2V0KGNoYW5uZWwsIEZp
ZG9IaWREZXZpY2VDb21tYW5kOjprSW5pdCwgV1RGTW92ZShwYXlsb2FkKSwgcGF5bG9hZC5zaXpl
KCkpOwogICAgICAgICByZWNlaXZlUmVwb3J0KGluaXRQYWNrZXQuZ2V0U2VyaWFsaXplZERhdGEo
KSk7CkBAIC0yMTAsMTQgKzIxMCwxNCBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpmZWVkUmVw
b3J0cygpCiAgICAgfQogCiAgICAgT3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+IG1lc3NhZ2U7Ci0g
ICAgaWYgKG1fc3RhZ2UgPT0gTW9ja0hpZDo6U3RhZ2U6OkluZm8gJiYgbV9zdWJTdGFnZSA9PSBN
b2NrSGlkOjpTdWJTdGFnZTo6TXNnKSB7CisgICAgaWYgKG1fc3RhZ2UgPT0gTW9jazo6SGlkU3Rh
Z2U6OkluZm8gJiYgbV9zdWJTdGFnZSA9PSBNb2NrOjpIaWRTdWJTdGFnZTo6TXNnKSB7CiAgICAg
ICAgIFZlY3Rvcjx1aW50OF90PiBpbmZvRGF0YTsKICAgICAgICAgaWYgKG1fY29uZmlndXJhdGlv
bi5oaWQtPmNhbkRvd25ncmFkZSkKICAgICAgICAgICAgIGluZm9EYXRhID0gZW5jb2RlQXNDQk9S
KEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UoeyBQcm90b2NvbFZlcnNpb246OmtDdGFwLCBQ
cm90b2NvbFZlcnNpb246OmtVMmYgfSwgVmVjdG9yPHVpbnQ4X3Q+KGFhZ3VpZExlbmd0aCwgMHUp
KSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGluZm9EYXRhID0gZW5jb2RlQXNDQk9SKEF1
dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UoeyBQcm90b2NvbFZlcnNpb246OmtDdGFwIH0sIFZl
Y3Rvcjx1aW50OF90PihhYWd1aWRMZW5ndGgsIDB1KSkpOwogICAgICAgICBpbmZvRGF0YS5pbnNl
cnQoMCwgc3RhdGljX2Nhc3Q8dWludDhfdD4oQ3RhcERldmljZVJlc3BvbnNlQ29kZTo6a1N1Y2Nl
c3MpKTsgLy8gUHJlcGVuZCBzdGF0dXMgY29kZS4KLSAgICAgICAgaWYgKHN0YWdlc01hdGNoKCkg
JiYgbV9jb25maWd1cmF0aW9uLmhpZC0+ZXJyb3IgPT0gTW9ja0hpZDo6RXJyb3I6Oldyb25nQ2hh
bm5lbElkKQorICAgICAgICBpZiAoc3RhZ2VzTWF0Y2goKSAmJiBtX2NvbmZpZ3VyYXRpb24uaGlk
LT5lcnJvciA9PSBNb2NrOjpIaWRFcnJvcjo6V3JvbmdDaGFubmVsSWQpCiAgICAgICAgICAgICBt
ZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShtX2N1cnJlbnRDaGFubmVsIC0gMSwgRmlk
b0hpZERldmljZUNvbW1hbmQ6OmtDYm9yLCBpbmZvRGF0YSk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uaGlkLT5pc1UyZikKQEAgLTIyNyw3ICsyMjcs
NyBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpmZWVkUmVwb3J0cygpCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBpZiAobV9zdGFnZSA9PSBNb2NrSGlkOjpTdGFnZTo6UmVxdWVzdCAmJiBtX3N1
YlN0YWdlID09IE1vY2tIaWQ6OlN1YlN0YWdlOjpNc2cpIHsKKyAgICBpZiAobV9zdGFnZSA9PSBN
b2NrOjpIaWRTdGFnZTo6UmVxdWVzdCAmJiBtX3N1YlN0YWdlID09IE1vY2s6OkhpZFN1YlN0YWdl
OjpNc2cpIHsKICAgICAgICAgaWYgKG1fY29uZmlndXJhdGlvbi5oaWQtPmtlZXBBbGl2ZSkgewog
ICAgICAgICAgICAgbV9jb25maWd1cmF0aW9uLmhpZC0+a2VlcEFsaXZlID0gZmFsc2U7CiAgICAg
ICAgICAgICBGaWRvSGlkSW5pdFBhY2tldCBpbml0UGFja2V0KG1fY3VycmVudENoYW5uZWwsIEZp
ZG9IaWREZXZpY2VDb21tYW5kOjprS2VlcEFsaXZlLCB7IEN0YXBLZWVwQWxpdmVTdGF0dXNQcm9j
ZXNzaW5nIH0sIDEpOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246
OmZlZWRSZXBvcnRzKCkKICAgICAgICAgICAgIGNvbnRpbnVlRmVlZFJlcG9ydHMoKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpZiAoc3RhZ2VzTWF0Y2goKSAmJiBt
X2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBNb2NrSGlkOjpFcnJvcjo6VW5zdXBwb3J0ZWRP
cHRpb25zICYmIChtX3JlcXVpcmVSZXNpZGVudEtleSB8fCBtX3JlcXVpcmVVc2VyVmVyaWZpY2F0
aW9uKSkKKyAgICAgICAgaWYgKHN0YWdlc01hdGNoKCkgJiYgbV9jb25maWd1cmF0aW9uLmhpZC0+
ZXJyb3IgPT0gTW9jazo6SGlkRXJyb3I6OlVuc3VwcG9ydGVkT3B0aW9ucyAmJiAobV9yZXF1aXJl
UmVzaWRlbnRLZXkgfHwgbV9yZXF1aXJlVXNlclZlcmlmaWNhdGlvbikpCiAgICAgICAgICAgICBt
ZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShtX2N1cnJlbnRDaGFubmVsLCBGaWRvSGlk
RGV2aWNlQ29tbWFuZDo6a0Nib3IsIHsgc3RhdGljX2Nhc3Q8dWludDhfdD4oQ3RhcERldmljZVJl
c3BvbnNlQ29kZTo6a0N0YXAyRXJyVW5zdXBwb3J0ZWRPcHRpb24pIH0pOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBwYXlsb2FkOwpAQCAtMjU0LDcgKzI1NCw3
IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OmZlZWRSZXBvcnRzKCkKICAgICBib29sIGlzRmly
c3QgPSB0cnVlOwogICAgIHdoaWxlIChtZXNzYWdlLT5udW1QYWNrZXRzKCkpIHsKICAgICAgICAg
YXV0byByZXBvcnQgPSBtZXNzYWdlLT5wb3BOZXh0UGFja2V0KCk7Ci0gICAgICAgIGlmICghaXNG
aXJzdCAmJiBzdGFnZXNNYXRjaCgpICYmIG1fY29uZmlndXJhdGlvbi5oaWQtPmVycm9yID09IE1v
Y2tIaWQ6OkVycm9yOjpXcm9uZ0NoYW5uZWxJZCkKKyAgICAgICAgaWYgKCFpc0ZpcnN0ICYmIHN0
YWdlc01hdGNoKCkgJiYgbV9jb25maWd1cmF0aW9uLmhpZC0+ZXJyb3IgPT0gTW9jazo6SGlkRXJy
b3I6Oldyb25nQ2hhbm5lbElkKQogICAgICAgICAgICAgcmVwb3J0ID0gRmlkb0hpZENvbnRpbnVh
dGlvblBhY2tldChtX2N1cnJlbnRDaGFubmVsIC0gMSwgMCwgeyB9KS5nZXRTZXJpYWxpemVkRGF0
YSgpOwogICAgICAgICAvLyBQYWNrZXRzIGFyZSBmZWVkIGFzeW5jaHJvbm91c2x5IHRvIG1pbWlj
IGFjdHVhbCBkYXRhIHRyYW5zbWlzc2lvbi4KICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtyZXBvcnQgPSBXVEZNb3ZlKHJlcG9ydCksIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRo
aXMpXSgpIG11dGFibGUgewpAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rp
b246OnNob3VsZENvbnRpbnVlRmVlZFJlcG9ydHMoKQogICAgIGlmICghbV9jb25maWd1cmF0aW9u
LmhpZC0+Y29udGludWVBZnRlckVycm9yRGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fY29u
ZmlndXJhdGlvbi5oaWQtPmNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEgPSBmYWxzZTsKLSAgICBtX2Nv
bmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9IE1vY2tIaWQ6OkVycm9yOjpTdWNjZXNzOworICAgIG1f
Y29uZmlndXJhdGlvbi5oaWQtPmVycm9yID0gTW9jazo6SGlkRXJyb3I6OlN1Y2Nlc3M7CiAgICAg
Y29udGludWVGZWVkUmVwb3J0cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0
aW9uLmgKaW5kZXggMzc4ODY2ZjM2OGFlODRiNmZjNTljZWM3MGVhNmUzNDgzOWY3ZTFhNi4uNDA4
MzZkMjgzZmRlMDE1MjVmNTY5ZTA3Mjk2ODE5Njg3ZTE3ZTBkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2sv
TW9ja0hpZENvbm5lY3Rpb24uaApAQCAtMjgsOCArMjgsOCBAQAogI2lmIEVOQUJMRShXRUJfQVVU
SE4pCiAKICNpbmNsdWRlICJIaWRDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiTW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlkb0hpZE1lc3Nh
Z2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24uaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAvLyBBY2NvcmRpbmcgdG8gZGlmZmVy
ZW50IGNvbWJpbmF0aW9ucyBvZiBlcnJvciBhbmQgc3RhZ2VzLCBlcnJvciB3aWxsIG1hbmlmZXN0
IGRpZmZlcmVudGx5LgogY2xhc3MgTW9ja0hpZENvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8TW9ja0hpZENvbm5lY3Rpb24+LCBwdWJsaWMgSGlkQ29ubmVjdGlvbiB7CiBw
dWJsaWM6Ci0gICAgTW9ja0hpZENvbm5lY3Rpb24oSU9ISUREZXZpY2VSZWYsIGNvbnN0IE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mKTsKKyAgICBNb2NrSGlkQ29ubmVjdGlvbihJ
T0hJRERldmljZVJlZiwgY29uc3QgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbiYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgc2VuZChWZWN0b3I8dWludDhfdD4mJiBk
YXRhLCBEYXRhU2VudENhbGxiYWNrJiYpIGZpbmFsOwpAQCAtNjAsMTAgKzYwLDEwIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzaG91bGRDb250aW51ZUZlZWRSZXBvcnRzKCk7CiAgICAgdm9pZCBjb250
aW51ZUZlZWRSZXBvcnRzKCk7CiAKLSAgICBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uIG1fY29uZmlndXJhdGlvbjsKKyAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKICAgICBPcHRpb25hbDxmaWRvOjpGaWRvSGlk
TWVzc2FnZT4gbV9yZXF1ZXN0TWVzc2FnZTsKLSAgICBNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uOjpIaWQ6OlN0YWdlIG1fc3RhZ2UgeyBNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uOjpIaWQ6OlN0YWdlOjpJbmZvIH07Ci0gICAgTW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbjo6SGlkOjpTdWJTdGFnZSBtX3N1YlN0YWdlIHsgTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpTdWJTdGFnZTo6SW5pdCB9OworICAgIFdlYkNvcmU6
Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZFN0YWdlIG1fc3RhZ2UgeyBN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRTdGFnZTo6SW5mbyB9OworICAg
IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZFN1YlN0YWdl
IG1fc3ViU3RhZ2UgeyBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRTdWJT
dGFnZTo6SW5pdCB9OwogICAgIHVpbnQzMl90IG1fY3VycmVudENoYW5uZWwgeyBmaWRvOjprSGlk
QnJvYWRjYXN0Q2hhbm5lbCB9OwogICAgIGJvb2wgbV9yZXF1aXJlUmVzaWRlbnRLZXkgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9yZXF1aXJlVXNlclZlcmlmaWNhdGlvbiAgeyBmYWxzZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrSGlkU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Nb2NrL01vY2tIaWRTZXJ2aWNlLmNwcAppbmRleCAyNGNjMzZiMmNkNTM0ZDRmMjUyZDNm
ZjA2OGM5YjQ5N2E2YTkyNTU5Li44NTA1Zjc1Y2U5YmJlZjE4YmIyOWM2NGY2MjhkYjBhZDE3ODVi
ZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Nb2NrL01vY2tIaWRTZXJ2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRTZXJ2aWNlLmNwcApAQCAtMzMsNyArMzMsNyBA
QAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotTW9ja0hpZFNlcnZpY2U6Ok1vY2tIaWRTZXJ2aWNl
KE9ic2VydmVyJiBvYnNlcnZlciwgY29uc3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbikKK01vY2tIaWRTZXJ2aWNlOjpNb2NrSGlkU2VydmljZShPYnNl
cnZlciYgb2JzZXJ2ZXIsIGNvbnN0IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBIaWRTZXJ2aWNlKG9ic2VydmVyKQogICAg
ICwgbV9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRTZXJ2aWNlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRT
ZXJ2aWNlLmgKaW5kZXggY2JlMDE1ZWYwZDQ1OGI5MDc5NWJiOTQxM2ZjYTUyYjhiNDllNjNlMS4u
YmUxZWFkNjE3OTg2YTkzOWU2YWMyZmI0MmEzNzhhMjk5YzU4NzZkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkU2Vydmlj
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2sv
TW9ja0hpZFNlcnZpY2UuaApAQCAtMjgsMTIgKzI4LDEwIEBACiAjaWYgRU5BQkxFKFdFQl9BVVRI
TikKIAogI2luY2x1ZGUgIkhpZFNlcnZpY2UuaCIKLSNpbmNsdWRlICJNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdHJ1Y3QgTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjsKLQogY2xhc3MgTW9ja0hpZFNlcnZpY2Ug
ZmluYWwgOiBwdWJsaWMgSGlkU2VydmljZSB7CiBwdWJsaWM6CiAgICAgTW9ja0hpZFNlcnZpY2Uo
T2JzZXJ2ZXImLCBjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJik7CkBA
IC00Miw3ICs0MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVN0YXJ0RGlzY292ZXJ5
KCkgZmluYWw7CiAgICAgVW5pcXVlUmVmPEhpZENvbm5lY3Rpb24+IGNyZWF0ZUhpZENvbm5lY3Rp
b24oSU9ISUREZXZpY2VSZWYpIGNvbnN0IGZpbmFsOwogCi0gICAgTW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CisgICAgV2ViQ29yZTo6TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmgKaW5k
ZXggMzFhZDcxYTMxMjdiYWFhNDY2YzcyOWRhNWJmNGQxZDUyYjRlMWFhNC4uMzU1OWI4MGViOTgy
ODBhMDFjMTUwYWM0MjJhNDNjMjNlY2QzYWQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9j
YWxDb25uZWN0aW9uLmgKQEAgLTI4LDEzICsyOCwxMyBAQAogI2lmIEVOQUJMRShXRUJfQVVUSE4p
CiAKICNpbmNsdWRlICJMb2NhbENvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBN
b2NrTG9jYWxDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIExvY2FsQ29ubmVjdGlvbiB7CiBwdWJs
aWM6Ci0gICAgZXhwbGljaXQgTW9ja0xvY2FsQ29ubmVjdGlvbihjb25zdCBNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uJik7CisgICAgZXhwbGljaXQgTW9ja0xvY2FsQ29ubmVjdGlv
bihjb25zdCBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJik7CiAK
IHByaXZhdGU6CiAgICAgdm9pZCBnZXRVc2VyQ29uc2VudChjb25zdCBTdHJpbmcmIHJlYXNvbiwg
VXNlckNvbnNlbnRDYWxsYmFjayYmKSBjb25zdCBmaW5hbDsKQEAgLTQyLDcgKzQyLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGdldEF0dGVzdGF0aW9uKGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3Qg
U3RyaW5nJiB1c2VybmFtZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBBdHRlc3RhdGlv
bkNhbGxiYWNrJiYpIGNvbnN0IGZpbmFsOwogICAgIE5TRGljdGlvbmFyeSAqc2VsZWN0Q3JlZGVu
dGlhbChjb25zdCBOU0FycmF5ICopIGNvbnN0IGZpbmFsOwogCi0gICAgTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CisgICAgV2ViQ29yZTo6TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5t
bQppbmRleCA1NzFlY2NhN2U0ZjQ3MGZjNjliNDFjZGQyNjAzOWNiOTI3MWQ0YTBhLi5jZGIxYWEz
NDI1ZjllOGNmYzYyOGYyNWJlYTJhNzI1MGU5N2FlODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrTG9jYWxDb25uZWN0aW9uLm1tCkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1Nb2NrTG9jYWxDb25uZWN0aW9uOjpNb2NrTG9jYWxDb25uZWN0aW9uKGNvbnN0IE1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCitNb2NrTG9j
YWxDb25uZWN0aW9uOjpNb2NrTG9jYWxDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX2NvbmZp
Z3VyYXRpb24oY29uZmlndXJhdGlvbikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsU2VydmljZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxTZXJ2
aWNlLmgKaW5kZXggN2ViOGYyMTRiYzA0ZTdkZmZiMTAxMGE2ODJmNGYxMTEwYzYzMjc2MS4uOTE2
OWJkNzYyMzJmMDBmOWMwMjRjYTQxMGNhNGUwYzk1N2I5MzI3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxTZXJ2aWNl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrTG9jYWxTZXJ2aWNlLmgKQEAgLTI4LDIxICsyOCwxOSBAQAogI2lmIEVOQUJMRShXRUJfQVVU
SE4pCiAKICNpbmNsdWRlICJMb2NhbFNlcnZpY2UuaCIKLSNpbmNsdWRlICJNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdHJ1Y3Qg
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjsKLQogY2xhc3MgTW9ja0xvY2FsU2Vy
dmljZSBmaW5hbCA6IHB1YmxpYyBMb2NhbFNlcnZpY2UgewogcHVibGljOgotICAgIE1vY2tMb2Nh
bFNlcnZpY2UoT2JzZXJ2ZXImLCBjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uJik7CisgICAgTW9ja0xvY2FsU2VydmljZShPYnNlcnZlciYsIGNvbnN0IFdlYkNvcmU6Ok1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mKTsKIAogcHJpdmF0ZToKICAgICBib29s
IHBsYXRmb3JtU3RhcnREaXNjb3ZlcnkoKSBjb25zdCBmaW5hbDsKICAgICBVbmlxdWVSZWY8TG9j
YWxDb25uZWN0aW9uPiBjcmVhdGVMb2NhbENvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKIAotICAg
IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9uOworICAg
IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gbV9jb25maWd1cmF0
aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbFNlcnZpY2UubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2Nh
bFNlcnZpY2UubW0KaW5kZXggMWViMDEwMmVjZTc3NjFmMzM0ZTQwYjU1NGFjMTg4MWY5MzM3ZDk5
Yi4uZmVjMTkyN2RlNWRjYTA0NWIxMDFiMzY1NjEyM2E5ZWE1NTdhN2YxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxT
ZXJ2aWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L01vY2svTW9ja0xvY2FsU2VydmljZS5tbQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotTW9ja0xvY2FsU2VydmljZTo6TW9ja0xvY2FsU2VydmljZShPYnNlcnZlciYg
b2JzZXJ2ZXIsIGNvbnN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mIGNvbmZp
Z3VyYXRpb24pCitNb2NrTG9jYWxTZXJ2aWNlOjpNb2NrTG9jYWxTZXJ2aWNlKE9ic2VydmVyJiBv
YnNlcnZlciwgY29uc3QgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
biYgY29uZmlndXJhdGlvbikKICAgICA6IExvY2FsU2VydmljZShvYnNlcnZlcikKICAgICAsIG1f
Y29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTmZjU2VydmljZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTmZjU2Vydmlj
ZS5oCmluZGV4IDEzMmNkZTRkNmI2NmRhYzMxYWNjNjI5NmM1ZTk5ODI2YTI2YjMzMDIuLjlmZDFj
OWI0MTBiODIzMmI0ZDM1ZTBlMTI4NjdmZDM2NDZkNTY2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja05mY1NlcnZpY2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tO
ZmNTZXJ2aWNlLmgKQEAgLTI3LDE4ICsyNywxNiBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikK
IAotI2luY2x1ZGUgIk1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCIKICNpbmNs
dWRlICJOZmNTZXJ2aWNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uLmg+CiAKIE9CSkNfQ0xBU1MgTlNEYXRhOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotc3RydWN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb247Ci0KIGNs
YXNzIE1vY2tOZmNTZXJ2aWNlIGZpbmFsIDogcHVibGljIE5mY1NlcnZpY2UgewogcHVibGljOgot
ICAgIE1vY2tOZmNTZXJ2aWNlKE9ic2VydmVyJiwgY29uc3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbiYpOworICAgIE1vY2tOZmNTZXJ2aWNlKE9ic2VydmVyJiwgY29uc3QgV2Vi
Q29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYpOwogCiAgICAgTlNEYXRh
KiB0cmFuc2NlaXZlKCk7CiAKQEAgLTQ3LDcgKzQ1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
ZGV0ZWN0VGFncygpIGNvbnN0OwogCi0gICAgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbiBtX2NvbmZpZ3VyYXRpb247CisgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L01vY2svTW9ja05mY1NlcnZpY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLm1tCmluZGV4IGNhM2RlMjEwMjJiM2EzOTEy
NzgwYmEwNzFiMWZkZDY0NmRjOWJhNGEuLmNhNTIyYzVlM2EzZDI4ZDQyMDU1ODM3MmIxNTcxZjcx
M2UzN2QxYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL01vY2svTW9ja05mY1NlcnZpY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTmZjU2VydmljZS5tbQpAQCAtMTA4LDcgKzEw
OCw3IEBAIEBlbmQKIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgZmlkbzsK
LXVzaW5nIE1vY2tOZmMgPSBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmM7
Cit1c2luZyBNb2NrID0gV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bjsKIAogI2lmIEhBVkUoTkVBUl9GSUVMRCkKIApAQCAtMTQzLDcgKzE0Myw3IEBAIHN0YXRpYyBO
U0RhdGEqIE5GUmVhZGVyU2Vzc2lvblRyYW5zY2VpdmUoaWQsIFNFTCwgTlNEYXRhICopCiAKICNl
bmRpZiAvLyBIQVZFKE5FQVJfRklFTEQpCiAKLU1vY2tOZmNTZXJ2aWNlOjpNb2NrTmZjU2Vydmlj
ZShPYnNlcnZlciYgb2JzZXJ2ZXIsIGNvbnN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24mIGNvbmZpZ3VyYXRpb24pCitNb2NrTmZjU2VydmljZTo6TW9ja05mY1NlcnZpY2UoT2Jz
ZXJ2ZXImIG9ic2VydmVyLCBjb25zdCBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgIDogTmZjU2VydmljZShvYnNlcnZlcikKICAg
ICAsIG1fY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKQogewpAQCAtMTY5LDcgKzE2OSw3IEBA
IHZvaWQgTW9ja05mY1NlcnZpY2U6OnBsYXRmb3JtU3RhcnREaXNjb3ZlcnkoKQogICAgICAgICBt
ZXRob2Rfc2V0SW1wbGVtZW50YXRpb24obWV0aG9kVG9Td2l6emxlMSwgKElNUClORlJlYWRlclNl
c3Npb25TZXREZWxlZ2F0ZSk7CiAKICAgICAgICAgTWV0aG9kIG1ldGhvZFRvU3dpenpsZTIgPSBj
bGFzc19nZXRJbnN0YW5jZU1ldGhvZChnZXRORlJlYWRlclNlc3Npb25DbGFzcygpLCBAc2VsZWN0
b3IoY29ubmVjdFRhZzopKTsKLSAgICAgICAgaWYgKG1fY29uZmlndXJhdGlvbi5uZmMtPmVycm9y
ID09IE1vY2tOZmM6OkVycm9yOjpOb0Nvbm5lY3Rpb25zKQorICAgICAgICBpZiAobV9jb25maWd1
cmF0aW9uLm5mYy0+ZXJyb3IgPT0gTW9jazo6TmZjRXJyb3I6Ok5vQ29ubmVjdGlvbnMpCiAgICAg
ICAgICAgICBtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24obWV0aG9kVG9Td2l6emxlMiwgKElNUClO
RlJlYWRlclNlc3Npb25Db25uZWN0VGFnRmFpbCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihtZXRob2RUb1N3aXp6bGUyLCAoSU1QKU5GUmVhZGVy
U2Vzc2lvbkNvbm5lY3RUYWcpOwpAQCAtMTk0LDEyICsxOTQsMTIgQEAgdm9pZCBNb2NrTmZjU2Vy
dmljZTo6cGxhdGZvcm1TdGFydERpc2NvdmVyeSgpCiB2b2lkIE1vY2tOZmNTZXJ2aWNlOjpkZXRl
Y3RUYWdzKCkgY29uc3QKIHsKICNpZiBIQVZFKE5FQVJfRklFTEQpCi0gICAgaWYgKG1fY29uZmln
dXJhdGlvbi5uZmMtPmVycm9yID09IE1vY2tOZmM6OkVycm9yOjpOb1RhZ3MpCisgICAgaWYgKG1f
Y29uZmlndXJhdGlvbi5uZmMtPmVycm9yID09IE1vY2s6Ok5mY0Vycm9yOjpOb1RhZ3MpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIoW2NvbmZpZ3Vy
YXRpb24gPSBtX2NvbmZpZ3VyYXRpb25dIHsKICAgICAgICAgYXV0byB0YWdzID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIGlmIChjb25maWd1cmF0aW9u
Lm5mYy0+ZXJyb3IgPT0gTW9ja05mYzo6RXJyb3I6Oldyb25nVGFnVHlwZSB8fCBjb25maWd1cmF0
aW9uLm5mYy0+bXVsdGlwbGVUYWdzKQorICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5uZmMtPmVy
cm9yID09IE1vY2s6Ok5mY0Vycm9yOjpXcm9uZ1RhZ1R5cGUgfHwgY29uZmlndXJhdGlvbi5uZmMt
Pm11bHRpcGxlVGFncykKICAgICAgICAgICAgIFt0YWdzIGFkZE9iamVjdDphZG9wdE5TKFtbV0tN
b2NrTkZUYWcgYWxsb2NdIGluaXRXaXRoVHlwZTpORlRhZ1R5cGVVbmtub3duXSkuZ2V0KCldOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBbdGFncyBhZGRPYmplY3Q6YWRvcHROUyhbW1dLTW9j
a05GVGFnIGFsbG9jXSBpbml0V2l0aFR5cGU6TkZUYWdUeXBlR2VuZXJpYzRBXSkuZ2V0KCldOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9j
ay9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTEzZTg1YzE4ZTNhYzZh
N2U5NWU3ZDQ2M2IwMzlhNjU5YjllOTZhYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaAorKysgL2Rldi9udWxs
CkBAIC0xLDk4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXRUJfQVVUSE4pCi0KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
IHsKLSAgICBzdHJ1Y3QgTG9jYWwgewotICAgICAgICBib29sIGFjY2VwdEF1dGhlbnRpY2F0aW9u
IHsgZmFsc2UgfTsKLSAgICAgICAgYm9vbCBhY2NlcHRBdHRlc3RhdGlvbiB7IGZhbHNlIH07Ci0g
ICAgICAgIFN0cmluZyBwcml2YXRlS2V5QmFzZTY0OwotICAgICAgICBTdHJpbmcgdXNlckNlcnRp
ZmljYXRlQmFzZTY0OwotICAgICAgICBTdHJpbmcgaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJh
c2U2NDsKLSAgICAgICAgU3RyaW5nIHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ7Ci0gICAgfTsK
LQotICAgIHN0cnVjdCBIaWQgewotICAgICAgICBlbnVtIGNsYXNzIFN0YWdlIDogYm9vbCB7Ci0g
ICAgICAgICAgICBJbmZvLAotICAgICAgICAgICAgUmVxdWVzdAotICAgICAgICB9OwotCi0gICAg
ICAgIGVudW0gY2xhc3MgU3ViU3RhZ2UgOiBib29sIHsKLSAgICAgICAgICAgIEluaXQsCi0gICAg
ICAgICAgICBNc2cKLSAgICAgICAgfTsKLQotICAgICAgICBlbnVtIGNsYXNzIEVycm9yIDogdWlu
dDhfdCB7Ci0gICAgICAgICAgICBTdWNjZXNzLAotICAgICAgICAgICAgRGF0YU5vdFNlbnQsCi0g
ICAgICAgICAgICBFbXB0eVJlcG9ydCwKLSAgICAgICAgICAgIFdyb25nQ2hhbm5lbElkLAotICAg
ICAgICAgICAgTWFsaWNpb3VzUGF5bG9hZCwKLSAgICAgICAgICAgIFVuc3VwcG9ydGVkT3B0aW9u
cywKLSAgICAgICAgICAgIFdyb25nTm9uY2UKLSAgICAgICAgfTsKLQotICAgICAgICBWZWN0b3I8
U3RyaW5nPiBwYXlsb2FkQmFzZTY0OwotICAgICAgICBTdGFnZSBzdGFnZSB7IFN0YWdlOjpJbmZv
IH07Ci0gICAgICAgIFN1YlN0YWdlIHN1YlN0YWdlIHsgU3ViU3RhZ2U6OkluaXQgfTsKLSAgICAg
ICAgRXJyb3IgZXJyb3IgeyBFcnJvcjo6U3VjY2VzcyB9OwotICAgICAgICBib29sIGlzVTJmIHsg
ZmFsc2UgfTsKLSAgICAgICAgYm9vbCBrZWVwQWxpdmUgeyBmYWxzZSB9OwotICAgICAgICBib29s
IGZhc3REYXRhQXJyaXZhbCB7IGZhbHNlIH07Ci0gICAgICAgIGJvb2wgY29udGludWVBZnRlckVy
cm9yRGF0YSB7IGZhbHNlIH07Ci0gICAgICAgIGJvb2wgY2FuRG93bmdyYWRlIHsgZmFsc2UgfTsK
LSAgICB9OwotCi0gICAgc3RydWN0IE5mYyB7Ci0gICAgICAgIGVudW0gY2xhc3MgRXJyb3IgOiB1
aW50OF90IHsKLSAgICAgICAgICAgIFN1Y2Nlc3MsCi0gICAgICAgICAgICBOb1RhZ3MsCi0gICAg
ICAgICAgICBXcm9uZ1RhZ1R5cGUsCi0gICAgICAgICAgICBOb0Nvbm5lY3Rpb25zLAotICAgICAg
ICAgICAgTWFsaWNpb3VzUGF5bG9hZAotICAgICAgICB9OwotCi0gICAgICAgIEVycm9yIGVycm9y
IHsgRXJyb3I6OlN1Y2Nlc3MgfTsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gcGF5bG9hZEJhc2U2
NDsKLSAgICAgICAgYm9vbCBtdWx0aXBsZVRhZ3MgeyBmYWxzZSB9OwotICAgIH07Ci0KLSAgICBi
b29sIHNpbGVudEZhaWx1cmUgeyBmYWxzZSB9OwotICAgIE9wdGlvbmFsPExvY2FsPiBsb2NhbDsK
LSAgICBPcHRpb25hbDxIaWQ+IGhpZDsKLSAgICBPcHRpb25hbDxOZmM+IG5mYzsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDg3ODIwZDMzYWNkMjNlODFk
OGM3MzNlMTAxZmNlODliZDUyMWE5MzcuLjZhOGZhZjkyMzk0NzYwMzJhZWQ1M2Y3N2UyMzdhOTVi
MzcyNjYzYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
OTM5Miw2ICs5MzkyLDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JTT0F1
dGhvcml6YXRpb25Mb2FkKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBDCiB9CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShXRUJfQVVUSE4pCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbihNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
JiYgY29uZmlndXJhdGlvbikKK3sKKyAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPnNldE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSk7Cit9Cisj
ZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVJHRV9XSEVFTF9FVkVO
VFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggOGM3NzUwOTZjZDE2
YzczYTRkNjM4MzA0MDI3M2IwMDljOGEyNjc5OS4uYjdhOWFmODE3YmE1ZWRjOTNhZDAyYTllYmIx
OTE2N2NjOGZkODgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAg
LTIxMyw2ICsyMTMsNyBAQCBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWlsczsKIHN0cnVjdCBGaWxlQ2hv
b3NlclNldHRpbmdzOwogc3RydWN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXI7CiBzdHJ1Y3QgTWVk
aWFTdHJlYW1SZXF1ZXN0Oworc3RydWN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b247CiBzdHJ1Y3QgUHJld2FybUluZm9ybWF0aW9uOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0
YTsKIHN0cnVjdCBTaGFyZURhdGE7CkBAIC0xNTg3LDYgKzE1ODgsMTAgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBtYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKFdlYlByb2Nlc3NQ
cm94eSYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgcmVzb3VyY2VEaXJlY3RvcnlVUkwsIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYpOwogCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICB2b2lk
IHNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oV2ViQ29yZTo6TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdl
YlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgUmVmPEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZGM2
NTI3NjZjMjhjNDhmZGJhOTE1YjRmNzcxNDU2OWY4MDRmYTNjNC4uODM5MzdkMjA0ZThkMGJkOGMy
YTA1NzgxMWI1NzIzNDJjMGNhNjA2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTc0LDQgKzU3NCw4IEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2VQcm94eSB7CiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCiAg
ICAgRGlkQ3JlYXRlQ29udGV4dEZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihXZWJLaXQ6OkxheWVy
SG9zdGluZ0NvbnRleHRJRCBjb250ZXh0SUQpOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoV0VCX0FV
VEhOKQorICAgIFNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oc3RydWN0IFdl
YkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbik7
CisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCA0ZDQ5MDkxYTc4N2I3ZmQ1YTgzZWYwM2Y3NmZj
ZmNkYzljZDZlMWU1Li45NGRlOWVlY2YzYzU4OTNmOWZhOTJkMmNmYzUzMzE5MDM0ZjI3YmQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oCkBAIC02NCw2ICs2NCw4IEBAIGNsYXNzIEhUVFBDb29raWVTdG9yZTsKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwogY2xhc3MgU2VjdXJp
dHlPcmlnaW47CisKK3N0cnVjdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTc4LDcgKzgwLDYgQEAgY2xhc3MgV2ViUHJvY2Vz
c1Byb3h5OwogY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOwogZW51bSBjbGFz
cyBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGU7Ci1z
dHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjsKIHN0cnVjdCBXZWJzaXRl
RGF0YVJlY29yZDsKIHN0cnVjdCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczsKIApAQCAtMjUy
LDcgKzI1Myw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAgQXV0aGVu
dGljYXRvck1hbmFnZXImIGF1dGhlbnRpY2F0b3JNYW5hZ2VyKCkgeyByZXR1cm4gbV9hdXRoZW50
aWNhdG9yTWFuYWdlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbihNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiYpOworICAg
IHZvaWQgc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihXZWJDb3JlOjpNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiYpOwogI2VuZGlmCiAKICAgICB2b2lkIGRp
ZENyZWF0ZU5ldHdvcmtQcm9jZXNzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwNWExZWFhZjk4ZWYyYzA5YmY2OWE5NTUxODAzZTYw
Y2ZkMzY2MDhhLi42MzhlYmVkNTg1M2ZkN2FkNDc0OTkzNTEzZTZhZmEwMWIwODcwYjdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEw
NzMsNyArMTA3Myw2IEBACiAJCTU3RENFREIxMjE0QzYwNDgwMDE2Qjg0NyAvKiBBdXRoZW50aWNh
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RD
RUQ4QjIxNDg1QkQ3MDAxNkI4NDcgLyogQXV0aGVudGljYXRvci5oICovOyB9OwogCQk1N0RDRURC
MjIxNEM2MDRDMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VEQTYyMTQ5RjlE
QTAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuaCAqLzsgfTsKIAkJNTdE
Q0VEQjMyMTRDNjA1MzAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzYwODI5
NTIwMkJEOEJBMDAxMTY2NzggLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaCAq
LzsgfTsKLQkJNTdEQ0VEQkYyMTRGMERDRjAwMTZCODQ3IC8qIE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3RENFREJFMjE0Q0EwMUIwMDE2Qjg0NyAvKiBNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uLmggKi87IH07CiAJCTU3RENFREMzMjE0RjExNEMwMDE2Qjg0NyAvKiBNb2Nr
TG9jYWxTZXJ2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1N0RDRURDMTIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5oICovOyB9
OwogCQk1N0RDRURDNzIxNEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VEQzUyMTRG
MTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24uaCAqLzsgfTsKIAkJNTdEQ0VEQ0Iy
MTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VEQzkyMTRGNEU0MjAwMTZC
ODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oICovOyB9OwpAQCAtMzU2NCw3ICszNTYz
LDYgQEAKIAkJNTdEQ0VEQTcyMTRBNTY4QjAwMTZCODQ3IC8qIExvY2FsQ29ubmVjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBMb2NhbENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTdEQ0VEQTgyMTRBNTY4QjAwMTZCODQ3IC8qIExvY2FsQ29ubmVjdGlvbi5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IExvY2FsQ29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTdEQ0VEQUEyMTRCOUI0MzAwMTZCODQ3IC8qIERldmljZUlkZW50aXR5U1BJ
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERldmljZUlkZW50aXR5U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTU3RENFREJFMjE0Q0EwMUIwMDE2Qjg0NyAvKiBNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdEQ0VEQzEy
MTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tMb2NhbFNlcnZpY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9j
a0xvY2FsU2VydmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0RDRURDMjIx
NEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IE1vY2tMb2NhbFNlcnZpY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3
RENFREM1MjE0RjE4MzAwMDE2Qjg0NyAvKiBNb2NrTG9jYWxDb25uZWN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1vY2tMb2NhbENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTcxNDMsNyArNzE0MSw2IEBACiAJCQkJNTdEQ0VEQzIyMTRGMTE0QzAwMTZCODQ3IC8qIE1v
Y2tMb2NhbFNlcnZpY2UubW0gKi8sCiAJCQkJNTdCODI2NEEyMzA2MDNDMTAwQjcyRUIwIC8qIE1v
Y2tOZmNTZXJ2aWNlLmggKi8sCiAJCQkJNTdCODI2NEIyMzA2MDNDMTAwQjcyRUIwIC8qIE1vY2tO
ZmNTZXJ2aWNlLm1tICovLAotCQkJCTU3RENFREJFMjE0Q0EwMUIwMDE2Qjg0NyAvKiBNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IE1vY2s7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtOTU4Myw3ICs5NTgwLDYgQEAKIAkJCQk1
N0RDRURDNzIxNEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTdEQ0VEQzMyMTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tMb2NhbFNlcnZpY2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTU3QjgyNjRDMjMwNjAzQzEwMEI3MkVCMCAvKiBNb2NrTmZj
U2VydmljZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTdEQ0VEQkYyMTRGMERDRjAwMTZCODQ3IC8q
IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUMwRTNBQTdDMTIwOUU4M0MwMEE0OUQwMSAvKiBNb2R1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJENTAzNjZCMUJDREUxNzkwMEUyMEJCMyAvKiBOYXRpdmVXZWJHZXN0dXJlRXZlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTI2MzE3MkNGMThCNDY5NDkwMDY1QjlDMyAvKiBOYXRpdmVXZWJUb3Vj
aEV2ZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggMjlmMjUz
MDczMTIzZjFlN2FkMmI5YWE1N2NlYjM0NTk3YTgwZTdhOC4uZjhlYzA4Yzc4MzIzNzk5MDE1YzEx
NDEwYmIwNDE4ZTZjNjIxMzg3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTc3LDYgKzc3
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ljb24u
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgpAQCAtMTM1
Nyw0ICsxMzU4LDExIEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRVc2VySXNJbnRlcmFjdGlu
Zyhib29sIHVzZXJJc0ludGVyYWN0aW5nKQogICAgIG1fcGFnZS5zZXRVc2VySXNJbnRlcmFjdGlu
Zyh1c2VySXNJbnRlcmFjdGluZyk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQordm9pZCBX
ZWJDaHJvbWVDbGllbnQ6OnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oY29u
c3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK3sK
KyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pKTsKK30KKyNlbmRpZgorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA3N2ZlMzA3NjA1Zjg1ZDNh
ZDg1NzFkODI1ZGRkZTE1YzY3M2E3ODIwLi45OTkxOGM3MDA0OTVjMTBmMWFhOTc0YjFjNmM1NzA3
YjAyZmFkMWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zODEsNiArMzgxLDEwIEBAIHByaXZh
dGU6CiAgICAgYm9vbCB1c2VySXNJbnRlcmFjdGluZygpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQg
c2V0VXNlcklzSW50ZXJhY3RpbmcoYm9vbCkgZmluYWw7CiAKKyNpZiBFTkFCTEUoV0VCX0FVVEhO
KQorICAgIHZvaWQgc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihjb25zdCBX
ZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJikgZmluYWw7CisjZW5k
aWYKKwogICAgIFN0cmluZyBtX2NhY2hlZFRvb2xUaXA7CiAgICAgbXV0YWJsZSBSZWZQdHI8V2Vi
RnJhbWU+IG1fY2FjaGVkRnJhbWVTZXRMYXJnZXN0RnJhbWU7CiAgICAgbXV0YWJsZSBib29sIG1f
Y2FjaGVkTWFpbkZyYW1lSGFzSG9yaXpvbnRhbFNjcm9sbGJhciB7IGZhbHNlIH07CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmMwN2Y3YWYzNzM5
YmNhMmYwNWI3NDRhMjViMDM4M2U0NjFkMDFlZi4uODc4OGI2N2VjOGVkOWQ1OTQwZGQ4NjYyYzQy
NGFmMjBlYmY5MGExYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTEwLTA4ICBKaWV3ZW4gVGFuICA8amlld2Vu
X3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBNb3ZlIHRoZSBtb2NrIHRlc3Rp
bmcgZW50cmFuY2UgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDI1NjAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1OTczNzkz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgor
ICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1
cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFdlYkF1dGhlbnRpY2F0
aW9uTW9ja0NvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5j
aHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAyMDE5LTEwLTA5ICB5b3Vlbm4g
ZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGVzdFJ1bm5lci5z
ZXRXZWJSVENVbmlmaWVkUGxhbkVuYWJsZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4
IDhjOTdjN2IwNTg0ZWQzYTQ5NjVjMzM4OTdjN2RlYTcxZjEyYjgyZWUuLjk1NzAxNDQ0MTU3NDZm
ODM0ZTczZGMzNzFjMDQxYTU3NDlhMDFjZGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApA
QCAtMzkxLDggKzM5MSw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKIAogICAgIHZvaWQgc2V0
U2VydmljZVdvcmtlckZldGNoVGltZW91dChkb3VibGUgc2Vjb25kcyk7CiAKLSAgICAvLyBXZWJB
dXRoTgotICAgIHZvaWQgc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihvYmpl
Y3QgY29uZmlndXJhdGlvbik7CisgICAgLy8gV2ViQXV0aG4KICAgICB2b2lkIGFkZFRlc3RLZXlU
b0tleWNoYWluKERPTVN0cmluZyBwcml2YXRlS2V5QmFzZTY0LCBET01TdHJpbmcgYXR0ckxhYmVs
LCBET01TdHJpbmcgYXBwbGljYXRpb25UYWdCYXNlNjQpOwogICAgIHZvaWQgY2xlYW5VcEtleWNo
YWluKERPTVN0cmluZyBhdHRyTGFiZWwsIG9wdGlvbmFsIERPTVN0cmluZyBhcHBsaWNhdGlvblRh
Z0Jhc2U2NCk7CiAgICAgYm9vbGVhbiBrZXlFeGlzdHNJbktleWNoYWluKERPTVN0cmluZyBhdHRy
TGFiZWwsIERPTVN0cmluZyBhcHBsaWNhdGlvblRhZ0Jhc2U2NCk7CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCA1ZmVh
ODNkY2Y5ZjRhYThmYWJmMTJmM2RmOGZjZmZjNTAyOGEyNjBiLi40NjE3ZWUzZDM0MWRjMWEwZTdm
YjNjMDFiZWRiNThkZjVlZTg3YTgxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTI2MjgsMzAxICsyNjI4LDcgQEAg
dm9pZCBUZXN0UnVubmVyOjpzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0KGRvdWJsZSBzZWNv
bmRzKQogICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6
c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQo
KSwgbnVsbHB0cik7CiB9CiAKLS8vIFdlYkF1dGhOCi12b2lkIFRlc3RSdW5uZXI6OnNldFdlYkF1
dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oSlNWYWx1ZVJlZiBjb25maWd1cmF0aW9uVmFs
dWUpCi17Ci0gICAgYXV0byYgaW5qZWN0ZWRCdW5kbGUgPSBJbmplY3RlZEJ1bmRsZTo6c2luZ2xl
dG9uKCk7Ci0gICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRN
YWluRnJhbWUoaW5qZWN0ZWRCdW5kbGUucGFnZSgpLT5wYWdlKCkpOwotICAgIEpTQ29udGV4dFJl
ZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7
Ci0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgY29uZmlndXJhdGlvblZhbHVlKSkK
LSAgICAgICAgcmV0dXJuOwotICAgIEpTT2JqZWN0UmVmIGNvbmZpZ3VyYXRpb24gPSBKU1ZhbHVl
VG9PYmplY3QoY29udGV4dCwgY29uZmlndXJhdGlvblZhbHVlLCAwKTsKLQotICAgIFZlY3RvcjxX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4+IGNvbmZpZ3VyYXRpb25LZXlzOwotICAgIFZlY3RvcjxX
S1JldGFpblB0cjxXS1R5cGVSZWY+PiBjb25maWd1cmF0aW9uVmFsdWVzOwotCi0gICAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IHNpbGVudEZhaWx1cmVQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJzaWxlbnRGYWlsdXJlIikpOwotICAgIEpTVmFsdWVS
ZWYgc2lsZW50RmFpbHVyZVZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBjb25m
aWd1cmF0aW9uLCBzaWxlbnRGYWlsdXJlUHJvcGVydHlOYW1lLmdldCgpLCAwKTsKLSAgICBpZiAo
IUpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCBzaWxlbnRGYWlsdXJlVmFsdWUpKSB7Ci0gICAg
ICAgIGlmICghSlNWYWx1ZUlzQm9vbGVhbihjb250ZXh0LCBzaWxlbnRGYWlsdXJlVmFsdWUpKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBib29sIHNpbGVudEZhaWx1cmUgPSBKU1ZhbHVl
VG9Cb29sZWFuKGNvbnRleHQsIHNpbGVudEZhaWx1cmVWYWx1ZSk7Ci0gICAgICAgIGNvbmZpZ3Vy
YXRpb25LZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJT
aWxlbnRGYWlsdXJlIikpKTsKLSAgICAgICAgY29uZmlndXJhdGlvblZhbHVlcy5hcHBlbmQoYWRv
cHRXSyhXS0Jvb2xlYW5DcmVhdGUoc2lsZW50RmFpbHVyZSkpLmdldCgpKTsKLSAgICB9Ci0KLSAg
ICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbG9jYWxQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJsb2NhbCIpKTsKLSAgICBKU1ZhbHVlUmVmIGxvY2Fs
VmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGNvbmZpZ3VyYXRpb24sIGxvY2Fs
UHJvcGVydHlOYW1lLmdldCgpLCAwKTsKLSAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChjb250
ZXh0LCBsb2NhbFZhbHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChjb250ZXh0LCBsb2NhbFZhbHVlKSkg
ewotICAgICAgICBpZiAoIUpTVmFsdWVJc09iamVjdChjb250ZXh0LCBsb2NhbFZhbHVlKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgSlNPYmplY3RSZWYgbG9jYWwgPSBKU1ZhbHVlVG9P
YmplY3QoY29udGV4dCwgbG9jYWxWYWx1ZSwgMCk7Ci0KLSAgICAgICAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IGFjY2VwdEF1dGhlbnRpY2F0aW9uUHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiYWNjZXB0QXV0aGVudGljYXRpb24iKSk7Ci0gICAgICAg
IEpTVmFsdWVSZWYgYWNjZXB0QXV0aGVudGljYXRpb25WYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVy
dHkoY29udGV4dCwgbG9jYWwsIGFjY2VwdEF1dGhlbnRpY2F0aW9uUHJvcGVydHlOYW1lLmdldCgp
LCAwKTsKLSAgICAgICAgaWYgKCFKU1ZhbHVlSXNCb29sZWFuKGNvbnRleHQsIGFjY2VwdEF1dGhl
bnRpY2F0aW9uVmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBib29sIGFjY2Vw
dEF1dGhlbnRpY2F0aW9uID0gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhY2NlcHRBdXRoZW50
aWNhdGlvblZhbHVlKTsKLQotICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYWNjZXB0
QXR0ZXN0YXRpb25Qcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJhY2NlcHRBdHRlc3RhdGlvbiIpKTsKLSAgICAgICAgSlNWYWx1ZVJlZiBhY2NlcHRBdHRl
c3RhdGlvblZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBsb2NhbCwgYWNjZXB0
QXR0ZXN0YXRpb25Qcm9wZXJ0eU5hbWUuZ2V0KCksIDApOwotICAgICAgICBpZiAoIUpTVmFsdWVJ
c0Jvb2xlYW4oY29udGV4dCwgYWNjZXB0QXR0ZXN0YXRpb25WYWx1ZSkpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIGJvb2wgYWNjZXB0QXR0ZXN0YXRpb24gPSBKU1ZhbHVlVG9Cb29sZWFu
KGNvbnRleHQsIGFjY2VwdEF0dGVzdGF0aW9uVmFsdWUpOwotCi0gICAgICAgIFZlY3RvcjxXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4+IGxvY2FsS2V5czsKLSAgICAgICAgVmVjdG9yPFdLUmV0YWlu
UHRyPFdLVHlwZVJlZj4+IGxvY2FsVmFsdWVzOwotICAgICAgICBsb2NhbEtleXMuYXBwZW5kKGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkFjY2VwdEF1dGhlbnRpY2F0aW9u
IikpKTsKLSAgICAgICAgbG9jYWxWYWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tCb29sZWFuQ3JlYXRl
KGFjY2VwdEF1dGhlbnRpY2F0aW9uKSkuZ2V0KCkpOwotICAgICAgICBsb2NhbEtleXMuYXBwZW5k
KGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkFjY2VwdEF0dGVzdGF0aW9u
IikpKTsKLSAgICAgICAgbG9jYWxWYWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tCb29sZWFuQ3JlYXRl
KGFjY2VwdEF0dGVzdGF0aW9uKSkuZ2V0KCkpOwotCi0gICAgICAgIGlmIChhY2NlcHRBdHRlc3Rh
dGlvbikgewotICAgICAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHByaXZhdGVLZXlC
YXNlNjRQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJw
cml2YXRlS2V5QmFzZTY0IikpOwotICAgICAgICAgICAgSlNWYWx1ZVJlZiBwcml2YXRlS2V5QmFz
ZTY0VmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGxvY2FsLCBwcml2YXRlS2V5
QmFzZTY0UHJvcGVydHlOYW1lLmdldCgpLCAwKTsKLSAgICAgICAgICAgIGlmICghSlNWYWx1ZUlz
U3RyaW5nKGNvbnRleHQsIHByaXZhdGVLZXlCYXNlNjRWYWx1ZSkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gdXNlckNlcnRp
ZmljYXRlQmFzZTY0UHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygidXNlckNlcnRpZmljYXRlQmFzZTY0IikpOwotICAgICAgICAgICAgSlNWYWx1ZVJlZiB1
c2VyQ2VydGlmaWNhdGVCYXNlNjRWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwg
bG9jYWwsIHVzZXJDZXJ0aWZpY2F0ZUJhc2U2NFByb3BlcnR5TmFtZS5nZXQoKSwgMCk7Ci0gICAg
ICAgICAgICBpZiAoIUpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCB1c2VyQ2VydGlmaWNhdGVCYXNl
NjRWYWx1ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NFByb3BlcnR5
TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImludGVybWVkaWF0ZUNB
Q2VydGlmaWNhdGVCYXNlNjQiKSk7Ci0gICAgICAgICAgICBKU1ZhbHVlUmVmIGludGVybWVkaWF0
ZUNBQ2VydGlmaWNhdGVCYXNlNjRWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwg
bG9jYWwsIGludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjRQcm9wZXJ0eU5hbWUuZ2V0KCks
IDApOwotICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgaW50ZXJtZWRp
YXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NFZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgICAgIGxvY2FsS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiUHJpdmF0ZUtleUJhc2U2NCIpKSk7Ci0gICAgICAgICAgICBsb2NhbFZhbHVl
cy5hcHBlbmQodG9XSyhhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHByaXZhdGVL
ZXlCYXNlNjRWYWx1ZSwgMCkpLmdldCgpKSk7Ci0gICAgICAgICAgICBsb2NhbEtleXMuYXBwZW5k
KGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlVzZXJDZXJ0aWZpY2F0ZUJh
c2U2NCIpKSk7Ci0gICAgICAgICAgICBsb2NhbFZhbHVlcy5hcHBlbmQodG9XSyhhZG9wdChKU1Zh
bHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHVzZXJDZXJ0aWZpY2F0ZUJhc2U2NFZhbHVlLCAwKSku
Z2V0KCkpKTsKLSAgICAgICAgICAgIGxvY2FsS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiSW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NCIpKSk7
Ci0gICAgICAgICAgICBsb2NhbFZhbHVlcy5hcHBlbmQodG9XSyhhZG9wdChKU1ZhbHVlVG9TdHJp
bmdDb3B5KGNvbnRleHQsIGludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjRWYWx1ZSwgMCkp
LmdldCgpKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
cHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NFByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoInByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQiKSk7Ci0gICAgICAg
IEpTVmFsdWVSZWYgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NFZhbHVlID0gSlNPYmplY3RHZXRQ
cm9wZXJ0eShjb250ZXh0LCBsb2NhbCwgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NFByb3BlcnR5
TmFtZS5nZXQoKSwgMCk7Ci0gICAgICAgIGlmICghSlNWYWx1ZUlzVW5kZWZpbmVkKGNvbnRleHQs
IHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjRWYWx1ZSkgJiYgIUpTVmFsdWVJc051bGwoY29udGV4
dCwgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NFZhbHVlKSkgewotICAgICAgICAgICAgaWYgKCFK
U1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NFZhbHVlKSkK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGxvY2FsS2V5cy5hcHBlbmQo
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUHJlZmVycmVkVXNlcmhhbmRs
ZUJhc2U2NCIpKSk7Ci0gICAgICAgICAgICBsb2NhbFZhbHVlcy5hcHBlbmQodG9XSyhhZG9wdChK
U1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjRWYWx1
ZSwgMCkpLmdldCgpKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBWZWN0b3I8V0tTdHJpbmdSZWY+
IHJhd0xvY2FsS2V5czsKLSAgICAgICAgVmVjdG9yPFdLVHlwZVJlZj4gcmF3TG9jYWxWYWx1ZXM7
Ci0gICAgICAgIHJhd0xvY2FsS2V5cy5yZXNpemUobG9jYWxLZXlzLnNpemUoKSk7Ci0gICAgICAg
IHJhd0xvY2FsVmFsdWVzLnJlc2l6ZShsb2NhbFZhbHVlcy5zaXplKCkpOwotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGxvY2FsS2V5cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAg
cmF3TG9jYWxLZXlzW2ldID0gbG9jYWxLZXlzW2ldLmdldCgpOwotICAgICAgICAgICAgcmF3TG9j
YWxWYWx1ZXNbaV0gPSBsb2NhbFZhbHVlc1tpXS5nZXQoKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGNvbmZpZ3VyYXRpb25LZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJMb2NhbCIpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb25WYWx1ZXMuYXBwZW5kKGFk
b3B0V0soV0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd0xvY2FsS2V5cy5kYXRhKCksIHJhd0xvY2FsVmFs
dWVzLmRhdGEoKSwgcmF3TG9jYWxLZXlzLnNpemUoKSkpKTsKLSAgICB9Ci0KLSAgICBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gaGlkUHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiaGlkIikpOwotICAgIEpTVmFsdWVSZWYgaGlkVmFsdWUgPSBKU09iamVj
dEdldFByb3BlcnR5KGNvbnRleHQsIGNvbmZpZ3VyYXRpb24sIGhpZFByb3BlcnR5TmFtZS5nZXQo
KSwgMCk7Ci0gICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgaGlkVmFsdWUpICYm
ICFKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIGhpZFZhbHVlKSkgewotICAgICAgICBpZiAoIUpTVmFs
dWVJc09iamVjdChjb250ZXh0LCBoaWRWYWx1ZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIEpTT2JqZWN0UmVmIGhpZCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBoaWRWYWx1ZSwg
MCk7Ci0KLSAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0YWdlUHJvcGVydHlOYW1l
KEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygic3RhZ2UiKSk7Ci0gICAgICAg
IEpTVmFsdWVSZWYgc3RhZ2VWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgaGlk
LCBzdGFnZVByb3BlcnR5TmFtZS5nZXQoKSwgMCk7Ci0gICAgICAgIGlmICghSlNWYWx1ZUlzU3Ry
aW5nKGNvbnRleHQsIHN0YWdlVmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzdWJTdGFnZVByb3BlcnR5TmFtZShBZG9wdCwgSlNT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInN1YlN0YWdlIikpOwotICAgICAgICBKU1ZhbHVl
UmVmIHN1YlN0YWdlVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGhpZCwgc3Vi
U3RhZ2VQcm9wZXJ0eU5hbWUuZ2V0KCksIDApOwotICAgICAgICBpZiAoIUpTVmFsdWVJc1N0cmlu
Zyhjb250ZXh0LCBzdWJTdGFnZVZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gZXJyb3JQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJlcnJvciIpKTsKLSAgICAgICAgSlNWYWx1ZVJlZiBl
cnJvclZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBoaWQsIGVycm9yUHJvcGVy
dHlOYW1lLmdldCgpLCAwKTsKLSAgICAgICAgaWYgKCFKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwg
ZXJyb3JWYWx1ZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgVmVjdG9yPFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPj4gaGlkS2V5czsKLSAgICAgICAgVmVjdG9yPFdLUmV0YWluUHRy
PFdLVHlwZVJlZj4+IGhpZFZhbHVlczsKLSAgICAgICAgaGlkS2V5cy5hcHBlbmQoYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3RhZ2UiKSkpOwotICAgICAgICBoaWRWYWx1
ZXMuYXBwZW5kKHRvV0soYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBzdGFnZVZh
bHVlLCAwKSkuZ2V0KCkpKTsKLSAgICAgICAgaGlkS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3ViU3RhZ2UiKSkpOwotICAgICAgICBoaWRWYWx1ZXMu
YXBwZW5kKHRvV0soYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBzdWJTdGFnZVZh
bHVlLCAwKSkuZ2V0KCkpKTsKLSAgICAgICAgaGlkS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRXJyb3IiKSkpOwotICAgICAgICBoaWRWYWx1ZXMuYXBw
ZW5kKHRvV0soYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBlcnJvclZhbHVlLCAw
KSkuZ2V0KCkpKTsKLQotICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGF5bG9hZEJh
c2U2NFByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInBh
eWxvYWRCYXNlNjQiKSk7Ci0gICAgICAgIEpTVmFsdWVSZWYgcGF5bG9hZEJhc2U2NFZhbHVlID0g
SlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBoaWQsIHBheWxvYWRCYXNlNjRQcm9wZXJ0eU5h
bWUuZ2V0KCksIDApOwotICAgICAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCBw
YXlsb2FkQmFzZTY0VmFsdWUpICYmICFKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIHBheWxvYWRCYXNl
NjRWYWx1ZSkpIHsKLSAgICAgICAgICAgIGlmICghSlNWYWx1ZUlzQXJyYXkoY29udGV4dCwgcGF5
bG9hZEJhc2U2NFZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAg
IEpTT2JqZWN0UmVmIHBheWxvYWRCYXNlNjQgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgcGF5
bG9hZEJhc2U2NFZhbHVlLCBudWxscHRyKTsKLSAgICAgICAgICAgIHN0YXRpYyBhdXRvIGxlbmd0
aFByb3BlcnR5ID0gYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImxlbmd0aCIp
KTsKLSAgICAgICAgICAgIEpTVmFsdWVSZWYgcGF5bG9hZEJhc2U2NExlbmd0aFZhbHVlID0gSlNP
YmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBwYXlsb2FkQmFzZTY0LCBsZW5ndGhQcm9wZXJ0eS5n
ZXQoKSwgbnVsbHB0cik7Ci0gICAgICAgICAgICBpZiAoIUpTVmFsdWVJc051bWJlcihjb250ZXh0
LCBwYXlsb2FkQmFzZTY0TGVuZ3RoVmFsdWUpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICAgICAgYXV0byBwYXlsb2FkQmFzZTY0cyA9IGFkb3B0V0soV0tNdXRhYmxlQXJyYXlD
cmVhdGUoKSk7Ci0gICAgICAgICAgICBhdXRvIHBheWxvYWRCYXNlNjRMZW5ndGggPSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBwYXlsb2FkQmFzZTY0TGVuZ3Ro
VmFsdWUsIG51bGxwdHIpKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGF5
bG9hZEJhc2U2NExlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBwYXls
b2FkQmFzZTY0VmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5QXRJbmRleChjb250ZXh0LCBwYXls
b2FkQmFzZTY0LCBpLCBudWxscHRyKTsKLSAgICAgICAgICAgICAgICBpZiAoIUpTVmFsdWVJc1N0
cmluZyhjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFsdWUpKQotICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShwYXlsb2FkQmFzZTY0
cy5nZXQoKSwgdG9XSyhhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHBheWxvYWRC
YXNlNjRWYWx1ZSwgMCkpLmdldCgpKS5nZXQoKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIGhpZEtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IlBheWxvYWRCYXNlNjQiKSkpOwotICAgICAgICAgICAgaGlkVmFsdWVzLmFwcGVuZChwYXlsb2Fk
QmFzZTY0cyk7Ci0gICAgICAgIH0KLQotICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
aXNVMmZQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJp
c1UyZiIpKTsKLSAgICAgICAgSlNWYWx1ZVJlZiBpc1UyZlZhbHVlID0gSlNPYmplY3RHZXRQcm9w
ZXJ0eShjb250ZXh0LCBoaWQsIGlzVTJmUHJvcGVydHlOYW1lLmdldCgpLCAwKTsKLSAgICAgICAg
aWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgaXNVMmZWYWx1ZSkgJiYgIUpTVmFsdWVJ
c051bGwoY29udGV4dCwgaXNVMmZWYWx1ZSkpIHsKLSAgICAgICAgICAgIGlmICghSlNWYWx1ZUlz
Qm9vbGVhbihjb250ZXh0LCBpc1UyZlZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICBib29sIGlzVTJmID0gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBpc1UyZlZh
bHVlKTsKLSAgICAgICAgICAgIGhpZEtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIklzVTJmIikpKTsKLSAgICAgICAgICAgIGhpZFZhbHVlcy5hcHBlbmQo
YWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoaXNVMmYpKS5nZXQoKSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4ga2VlcEFsaXZlUHJvcGVydHlOYW1lKEFkb3B0
LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygia2VlcEFsaXZlIikpOwotICAgICAgICBK
U1ZhbHVlUmVmIGtlZXBBbGl2ZVZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBo
aWQsIGtlZXBBbGl2ZVByb3BlcnR5TmFtZS5nZXQoKSwgMCk7Ci0gICAgICAgIGlmICghSlNWYWx1
ZUlzVW5kZWZpbmVkKGNvbnRleHQsIGtlZXBBbGl2ZVZhbHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChj
b250ZXh0LCBrZWVwQWxpdmVWYWx1ZSkpIHsKLSAgICAgICAgICAgIGlmICghSlNWYWx1ZUlzQm9v
bGVhbihjb250ZXh0LCBrZWVwQWxpdmVWYWx1ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgYm9vbCBrZWVwQWxpdmUgPSBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGtl
ZXBBbGl2ZVZhbHVlKTsKLSAgICAgICAgICAgIGhpZEtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIktlZXBBbGl2ZSIpKSk7Ci0gICAgICAgICAgICBoaWRW
YWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGtlZXBBbGl2ZSkpLmdldCgpKTsK
LSAgICAgICAgfQotCi0gICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBmYXN0RGF0YUFy
cml2YWxQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJm
YXN0RGF0YUFycml2YWwiKSk7Ci0gICAgICAgIEpTVmFsdWVSZWYgZmFzdERhdGFBcnJpdmFsVmFs
dWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGhpZCwgZmFzdERhdGFBcnJpdmFsUHJv
cGVydHlOYW1lLmdldCgpLCAwKTsKLSAgICAgICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29u
dGV4dCwgZmFzdERhdGFBcnJpdmFsVmFsdWUpICYmICFKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIGZh
c3REYXRhQXJyaXZhbFZhbHVlKSkgewotICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNCb29sZWFu
KGNvbnRleHQsIGZhc3REYXRhQXJyaXZhbFZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICBib29sIGZhc3REYXRhQXJyaXZhbCA9IEpTVmFsdWVUb0Jvb2xlYW4oY29u
dGV4dCwgZmFzdERhdGFBcnJpdmFsVmFsdWUpOwotICAgICAgICAgICAgaGlkS2V5cy5hcHBlbmQo
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRmFzdERhdGFBcnJpdmFsIikp
KTsKLSAgICAgICAgICAgIGhpZFZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUo
ZmFzdERhdGFBcnJpdmFsKSkuZ2V0KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGFQcm9wZXJ0eU5hbWUoQWRvcHQs
IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJjb250aW51ZUFmdGVyRXJyb3JEYXRhIikp
OwotICAgICAgICBKU1ZhbHVlUmVmIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGFWYWx1ZSA9IEpTT2Jq
ZWN0R2V0UHJvcGVydHkoY29udGV4dCwgaGlkLCBjb250aW51ZUFmdGVyRXJyb3JEYXRhUHJvcGVy
dHlOYW1lLmdldCgpLCAwKTsKLSAgICAgICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4
dCwgY29udGludWVBZnRlckVycm9yRGF0YVZhbHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChjb250ZXh0
LCBjb250aW51ZUFmdGVyRXJyb3JEYXRhVmFsdWUpKSB7Ci0gICAgICAgICAgICBpZiAoIUpTVmFs
dWVJc0Jvb2xlYW4oY29udGV4dCwgY29udGludWVBZnRlckVycm9yRGF0YVZhbHVlKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBib29sIGNvbnRpbnVlQWZ0ZXJFcnJvckRh
dGEgPSBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGFWYWx1
ZSk7Ci0gICAgICAgICAgICBoaWRLZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJDb250aW51ZUFmdGVyRXJyb3JEYXRhIikpKTsKLSAgICAgICAgICAgIGhp
ZFZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoY29udGludWVBZnRlckVycm9y
RGF0YSkpLmdldCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBjYW5Eb3duZ3JhZGVQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJjYW5Eb3duZ3JhZGUiKSk7Ci0gICAgICAgIEpTVmFsdWVSZWYgY2FuRG93bmdy
YWRlVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGhpZCwgY2FuRG93bmdyYWRl
UHJvcGVydHlOYW1lLmdldCgpLCAwKTsKLSAgICAgICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQo
Y29udGV4dCwgY2FuRG93bmdyYWRlVmFsdWUpICYmICFKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIGNh
bkRvd25ncmFkZVZhbHVlKSkgewotICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNCb29sZWFuKGNv
bnRleHQsIGNhbkRvd25ncmFkZVZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICBib29sIGNhbkRvd25ncmFkZSA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgY2Fu
RG93bmdyYWRlVmFsdWUpOwotICAgICAgICAgICAgaGlkS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FuRG93bmdyYWRlIikpKTsKLSAgICAgICAgICAg
IGhpZFZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoY2FuRG93bmdyYWRlKSku
Z2V0KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgVmVjdG9yPFdLU3RyaW5nUmVmPiByYXdIaWRL
ZXlzOwotICAgICAgICBWZWN0b3I8V0tUeXBlUmVmPiByYXdIaWRWYWx1ZXM7Ci0gICAgICAgIHJh
d0hpZEtleXMucmVzaXplKGhpZEtleXMuc2l6ZSgpKTsKLSAgICAgICAgcmF3SGlkVmFsdWVzLnJl
c2l6ZShoaWRWYWx1ZXMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBo
aWRLZXlzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICByYXdIaWRLZXlzW2ldID0gaGlkS2V5
c1tpXS5nZXQoKTsKLSAgICAgICAgICAgIHJhd0hpZFZhbHVlc1tpXSA9IGhpZFZhbHVlc1tpXS5n
ZXQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbmZpZ3VyYXRpb25LZXlzLmFwcGVuZChhZG9w
dFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIaWQiKSkpOwotICAgICAgICBjb25m
aWd1cmF0aW9uVmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLRGljdGlvbmFyeUNyZWF0ZShyYXdIaWRL
ZXlzLmRhdGEoKSwgcmF3SGlkVmFsdWVzLmRhdGEoKSwgcmF3SGlkS2V5cy5zaXplKCkpKSk7Ci0g
ICAgfQotCi0gICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IG5mY1Byb3BlcnR5TmFtZShBZG9w
dCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIm5mYyIpKTsKLSAgICBKU1ZhbHVlUmVm
IG5mY1ZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBjb25maWd1cmF0aW9uLCBu
ZmNQcm9wZXJ0eU5hbWUuZ2V0KCksIDApOwotICAgIGlmICghSlNWYWx1ZUlzVW5kZWZpbmVkKGNv
bnRleHQsIG5mY1ZhbHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChjb250ZXh0LCBuZmNWYWx1ZSkpIHsK
LSAgICAgICAgaWYgKCFKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgbmZjVmFsdWUpKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBKU09iamVjdFJlZiBuZmMgPSBKU1ZhbHVlVG9PYmplY3Qo
Y29udGV4dCwgbmZjVmFsdWUsIDApOwotCi0gICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBlcnJvclByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
ImVycm9yIikpOwotICAgICAgICBKU1ZhbHVlUmVmIGVycm9yVmFsdWUgPSBKU09iamVjdEdldFBy
b3BlcnR5KGNvbnRleHQsIG5mYywgZXJyb3JQcm9wZXJ0eU5hbWUuZ2V0KCksIDApOwotICAgICAg
ICBpZiAoIUpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCBlcnJvclZhbHVlKSkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+PiBuZmNL
ZXlzOwotICAgICAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tUeXBlUmVmPj4gbmZjVmFsdWVzOwot
ICAgICAgICBuZmNLZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJFcnJvciIpKSk7Ci0gICAgICAgIG5mY1ZhbHVlcy5hcHBlbmQodG9XSyhhZG9wdChKU1Zh
bHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGVycm9yVmFsdWUsIDApKS5nZXQoKSkpOwotCi0gICAg
ICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwYXlsb2FkQmFzZTY0UHJvcGVydHlOYW1lKEFk
b3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygicGF5bG9hZEJhc2U2NCIpKTsKLSAg
ICAgICAgSlNWYWx1ZVJlZiBwYXlsb2FkQmFzZTY0VmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5
KGNvbnRleHQsIG5mYywgcGF5bG9hZEJhc2U2NFByb3BlcnR5TmFtZS5nZXQoKSwgMCk7Ci0gICAg
ICAgIGlmICghSlNWYWx1ZUlzVW5kZWZpbmVkKGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1ZSkg
JiYgIUpTVmFsdWVJc051bGwoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlKSkgewotICAgICAg
ICAgICAgaWYgKCFKU1ZhbHVlSXNBcnJheShjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFsdWUpKQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgSlNPYmplY3RSZWYgcGF5bG9h
ZEJhc2U2NCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFsdWUsIG51
bGxwdHIpOwotICAgICAgICAgICAgc3RhdGljIGF1dG8gbGVuZ3RoUHJvcGVydHkgPSBhZG9wdChK
U1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibGVuZ3RoIikpOwotICAgICAgICAgICAgSlNW
YWx1ZVJlZiBwYXlsb2FkQmFzZTY0TGVuZ3RoVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNv
bnRleHQsIHBheWxvYWRCYXNlNjQsIGxlbmd0aFByb3BlcnR5LmdldCgpLCBudWxscHRyKTsKLSAg
ICAgICAgICAgIGlmICghSlNWYWx1ZUlzTnVtYmVyKGNvbnRleHQsIHBheWxvYWRCYXNlNjRMZW5n
dGhWYWx1ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBhdXRvIHBh
eWxvYWRCYXNlNjRzID0gYWRvcHRXSyhXS011dGFibGVBcnJheUNyZWF0ZSgpKTsKLSAgICAgICAg
ICAgIGF1dG8gcGF5bG9hZEJhc2U2NExlbmd0aCA9IHN0YXRpY19jYXN0PHNpemVfdD4oSlNWYWx1
ZVRvTnVtYmVyKGNvbnRleHQsIHBheWxvYWRCYXNlNjRMZW5ndGhWYWx1ZSwgbnVsbHB0cikpOwot
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXlsb2FkQmFzZTY0TGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVmIHBheWxvYWRCYXNlNjRWYWx1ZSA9IEpT
T2JqZWN0R2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIHBheWxvYWRCYXNlNjQsIGksIG51bGxw
dHIpOwotICAgICAgICAgICAgICAgIGlmICghSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIHBheWxv
YWRCYXNlNjRWYWx1ZSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKHBheWxvYWRCYXNlNjRzLmdldCgpLCB0b1dLKGFkb3B0
KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlLCAwKSkuZ2V0
KCkpLmdldCgpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbmZjS2V5cy5hcHBlbmQo
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUGF5bG9hZEJhc2U2NCIpKSk7
Ci0gICAgICAgICAgICBuZmNWYWx1ZXMuYXBwZW5kKHBheWxvYWRCYXNlNjRzKTsKLSAgICAgICAg
fQotCi0gICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBtdWx0aXBsZVRhZ3NQcm9wZXJ0
eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJtdWx0aXBsZVRhZ3Mi
KSk7Ci0gICAgICAgIEpTVmFsdWVSZWYgbXVsdGlwbGVUYWdzVmFsdWUgPSBKU09iamVjdEdldFBy
b3BlcnR5KGNvbnRleHQsIG5mYywgbXVsdGlwbGVUYWdzUHJvcGVydHlOYW1lLmdldCgpLCAwKTsK
LSAgICAgICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgbXVsdGlwbGVUYWdzVmFs
dWUpICYmICFKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIG11bHRpcGxlVGFnc1ZhbHVlKSkgewotICAg
ICAgICAgICAgaWYgKCFKU1ZhbHVlSXNCb29sZWFuKGNvbnRleHQsIG11bHRpcGxlVGFnc1ZhbHVl
KSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBib29sIG11bHRpcGxlVGFn
cyA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgbXVsdGlwbGVUYWdzVmFsdWUpOwotICAgICAg
ICAgICAgbmZjS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiTXVsdGlwbGVUYWdzIikpKTsKLSAgICAgICAgICAgIG5mY1ZhbHVlcy5hcHBlbmQoYWRvcHRX
SyhXS0Jvb2xlYW5DcmVhdGUobXVsdGlwbGVUYWdzKSkuZ2V0KCkpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgVmVjdG9yPFdLU3RyaW5nUmVmPiByYXdOZmNLZXlzOwotICAgICAgICBWZWN0b3I8V0tU
eXBlUmVmPiByYXdOZmNWYWx1ZXM7Ci0gICAgICAgIHJhd05mY0tleXMucmVzaXplKG5mY0tleXMu
c2l6ZSgpKTsKLSAgICAgICAgcmF3TmZjVmFsdWVzLnJlc2l6ZShuZmNWYWx1ZXMuc2l6ZSgpKTsK
LSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZmNLZXlzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgICAgICByYXdOZmNLZXlzW2ldID0gbmZjS2V5c1tpXS5nZXQoKTsKLSAgICAgICAgICAg
IHJhd05mY1ZhbHVlc1tpXSA9IG5mY1ZhbHVlc1tpXS5nZXQoKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGNvbmZpZ3VyYXRpb25LZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJOZmMiKSkpOwotICAgICAgICBjb25maWd1cmF0aW9uVmFsdWVzLmFwcGVuZChh
ZG9wdFdLKFdLRGljdGlvbmFyeUNyZWF0ZShyYXdOZmNLZXlzLmRhdGEoKSwgcmF3TmZjVmFsdWVz
LmRhdGEoKSwgcmF3TmZjS2V5cy5zaXplKCkpKSk7Ci0gICAgfQotCi0gICAgVmVjdG9yPFdLU3Ry
aW5nUmVmPiByYXdDb25maWd1cmF0aW9uS2V5czsKLSAgICBWZWN0b3I8V0tUeXBlUmVmPiByYXdD
b25maWd1cmF0aW9uVmFsdWVzOwotICAgIHJhd0NvbmZpZ3VyYXRpb25LZXlzLnJlc2l6ZShjb25m
aWd1cmF0aW9uS2V5cy5zaXplKCkpOwotICAgIHJhd0NvbmZpZ3VyYXRpb25WYWx1ZXMucmVzaXpl
KGNvbmZpZ3VyYXRpb25WYWx1ZXMuc2l6ZSgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGNvbmZpZ3VyYXRpb25LZXlzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHJhd0NvbmZpZ3VyYXRp
b25LZXlzW2ldID0gY29uZmlndXJhdGlvbktleXNbaV0uZ2V0KCk7Ci0gICAgICAgIHJhd0NvbmZp
Z3VyYXRpb25WYWx1ZXNbaV0gPSBjb25maWd1cmF0aW9uVmFsdWVzW2ldLmdldCgpOwotICAgIH0K
LQotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24iKSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tEaWN0aW9uYXJ5UmVmPiBtZXNzYWdlQm9k
eSA9IGFkb3B0V0soV0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd0NvbmZpZ3VyYXRpb25LZXlzLmRhdGEo
KSwgcmF3Q29uZmlndXJhdGlvblZhbHVlcy5kYXRhKCksIHJhd0NvbmZpZ3VyYXRpb25LZXlzLnNp
emUoKSkpOwotICAgIAotICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShpbmplY3Rl
ZEJ1bmRsZS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBu
dWxscHRyKTsKLX0KLQorLy8gV2ViQXV0aG4KIHZvaWQgVGVzdFJ1bm5lcjo6YWRkVGVzdEtleVRv
S2V5Y2hhaW4oSlNTdHJpbmdSZWYgcHJpdmF0ZUtleUJhc2U2NCwgSlNTdHJpbmdSZWYgYXR0ckxh
YmVsLCBKU1N0cmluZ1JlZiBhcHBsaWNhdGlvblRhZ0Jhc2U2NCkKIHsKICAgICBWZWN0b3I8V0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+PiBrZXlzOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCA1ZjIzYTgwZTUxZDdhNGRlZDJk
N2Q0ZmY0ZDRmY2YxYTljNzMzYWIyLi42MjcxZDUyMzExNGQ4NjljNGZhMjYyYTc5NWJjZGZkNjA0
ODI3YWI1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaApAQCAtNDkwLDkgKzQ5MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbmRE
aXNwbGF5Q29uZmlndXJhdGlvbkNoYW5nZWRNZXNzYWdlRm9yVGVzdGluZygpOwogCiAgICAgdm9p
ZCBzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0KGRvdWJsZSBzZWNvbmRzKTsKLSAgICAKLSAg
ICAvLyBXZWJBdXRoTgotICAgIHZvaWQgc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbihKU1ZhbHVlUmVmKTsKKwogICAgIC8vIEZJWE1FKDE4OTg3NikKICAgICB2b2lkIGFkZFRl
c3RLZXlUb0tleWNoYWluKEpTU3RyaW5nUmVmIHByaXZhdGVLZXlCYXNlNjQsIEpTU3RyaW5nUmVm
IGF0dHJMYWJlbCwgSlNTdHJpbmdSZWYgYXBwbGljYXRpb25UYWdCYXNlNjQpOwogICAgIHZvaWQg
Y2xlYW5VcEtleWNoYWluKEpTU3RyaW5nUmVmIGF0dHJMYWJlbCwgSlNTdHJpbmdSZWYgYXBwbGlj
YXRpb25UYWdCYXNlNjQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAppbmRleCBlY2Q3ZDliOGNjYjEzY2Y0ZjUzYjQwZWQ3N2Y4MTJlNjYyYzgwZmNlLi42NTdiNzli
OTMwZDgxZDY4NTY4ZGI3MzFiZGVhNTA4NzkzNzZkZjA2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMzYyMSwxMSArMzYyMSw2IEBAIHZvaWQgVGVzdENv
bnRyb2xsZXI6OnNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nKGRvdWJsZSBz
ZWNvbmRzKQogICAgIFdLQ29udGV4dFNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JUZXN0
aW5nKHBsYXRmb3JtQ29udGV4dCgpLCBzZWNvbmRzKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxl
cjo6c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihXS0RpY3Rpb25hcnlSZWYg
Y29uZmlndXJhdGlvbikKLXsKLSAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRXZWJBdXRoZW50aWNh
dGlvbk1vY2tDb25maWd1cmF0aW9uKFRlc3RDb250cm9sbGVyOjp3ZWJzaXRlRGF0YVN0b3JlKCks
IGNvbmZpZ3VyYXRpb24pOwotfQotCiBzdHJ1Y3QgQWRDbGlja0F0dHJpYnV0aW9uU3RyaW5nUmVz
dWx0Q2FsbGJhY2tDb250ZXh0IHsKICAgICBleHBsaWNpdCBBZENsaWNrQXR0cmlidXRpb25TdHJp
bmdSZXN1bHRDYWxsYmFja0NvbnRleHQoVGVzdENvbnRyb2xsZXImIGNvbnRyb2xsZXIpCiAgICAg
ICAgIDogdGVzdENvbnRyb2xsZXIoY29udHJvbGxlcikKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuaAppbmRleCA1MzBiMzM0ODQyYjZjMTJmNWM0YzU1YjE3NjUyOWYzNDIzYmU3
MzY1Li40YmY5MDIzYWI3MjJhMDkxMDFlZDI1MGZiODI4Y2I3ZjJhYjVhNDZlIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0yOTYsNyArMjk2LDYgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyhkb3Vi
bGUgc2Vjb25kcyk7CiAKLSAgICB2b2lkIHNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oV0tEaWN0aW9uYXJ5UmVmKTsKICAgICB2b2lkIGFkZFRlc3RLZXlUb0tleWNoYWluKGNv
bnN0IFN0cmluZyYgcHJpdmF0ZUtleUJhc2U2NCwgY29uc3QgU3RyaW5nJiBhdHRyTGFiZWwsIGNv
bnN0IFN0cmluZyYgYXBwbGljYXRpb25UYWdCYXNlNjQpOwogICAgIHZvaWQgY2xlYW5VcEtleWNo
YWluKGNvbnN0IFN0cmluZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVGFn
QmFzZTY0KTsKICAgICBib29sIGtleUV4aXN0c0luS2V5Y2hhaW4oY29uc3QgU3RyaW5nJiBhdHRy
TGFiZWwsIGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25UYWdCYXNlNjQpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCBhZThkNTk0ZGNhODcxYjM0ZjcyOTc5
YzQyODIwOTZmYTRiYTM3YjQ3Li5hOGY5YTc5YmU5NTg1N2I3MDBkN2ZhYjY3NzI4OTc1Yzk5NGQw
NGIyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTYz
MCwxMiArMTYzMCw2IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRp
ZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1l
c3NhZ2VOYW1lLCAiU2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbiIpKSB7Ci0g
ICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0
VHlwZUlEKCkpOwotICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0V2ViQXV0
aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+
KG1lc3NhZ2VCb2R5KSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQogICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQWRkVGVzdEtleVRv
S2V5Y2hhaW4iKSkgewogICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09
IFdLRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKICAgICAgICAgV0tEaWN0aW9uYXJ5UmVmIHRlc3RL
ZXlEaWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPihtZXNzYWdlQm9keSk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggMjgyNmRlMTJkODIzMzdkYmM2ZWM3MGZkODkwYTVjZjNiMDUzOWFlZC4uZTk1N2Rl
ZjE1ZDQ3MWYzYzY1NmU2MmEwNjI0ZThkYTgxZjM5YjFlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBA
CisyMDE5LTEwLTA4ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW1dlYkF1dGhuXSBNb3ZlIHRoZSBtb2NrIHRlc3RpbmcgZW50cmFuY2UgdG8gSW50ZXJuYWxz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NjAK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1OTczNzkzPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQt
ZmFpbHVyZS5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlk
LXN1Y2Nlc3MuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9jdGFwLW5m
Yy1mYWlsdXJlLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vaWRsLmh0
dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWNyZWF0ZS1mYWlsdXJlLWhpZC1zaWxlbnQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtaGlkLmh0
dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy5odG1sOgorICAgICAgICAqIGh0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2Nh
bC5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLXNpbGVu
dC5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUuaHR0cHMuaHRt
bDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3Jl
YXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWw6Cisg
ICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1z
dWNjZXNzLW5mYy5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbDoKKyAgICAgICAg
KiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlk
LXNpbGVudC5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwtc2ls
ZW50Lmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWdldC1mYWlsdXJlLWxvY2FsLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLW5mYy5odHRwcy5o
dG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1n
ZXQtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLXUyZi5odHRwcy5odG1sOgor
ICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFp
bHVyZS5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMu
aHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Z2V0LXN1Y2Nlc3MtbmZjLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLXUyZi5odHRwcy5odG1sOgorICAgICAg
ICAqIGh0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy9wdWJsaWMta2V5LWNyZWRlbnRpYWwtaXAt
YWRkcmVzcy5odHRwcy5odG1sOgorCiAyMDE5LTEwLTA5ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGVzdFJ1bm5lci5zZXRXZWJSVENVbmlmaWVk
UGxhbkVuYWJsZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0
YXAtaGlkLWZhaWx1cmUuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhu
L2N0YXAtaGlkLWZhaWx1cmUuaHR0cHMuaHRtbAppbmRleCA0ZjBmZDZhYTA2NjA5Yzk0MzUxNmY5
ZTc2YTgzNzZjYWE2ZGE5MmQ5Li45ZDUzZTFkNDQwMjE3MWJjZDQ4N2YxMTJlNjA2NDI2NmFmZmYw
ZWRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1m
YWlsdXJlLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3Rh
cC1oaWQtZmFpbHVyZS5odHRwcy5odG1sCkBAIC0yMSw1MCArMjEsNTAgQEAKICAgICB9OwogCiAg
ICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25m
aWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAiaW5pdCIsIGVycm9y
OiAiZGF0YS1ub3Qtc2VudCIgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogImluaXQiLCBlcnJvcjogImRhdGEt
bm90LXNlbnQiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxs
b3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucyks
ICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJDVEFQIEhJRCB3aXRoIGluaXQgc3Vi
IHN0YWdlIGRhdGEgbm90IHNlbnQgZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIp
OwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1v
Y2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAiaW5pdCIs
IGVycm9yOiAiZW1wdHktcmVwb3J0IiB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAiaW5pdCIsIGVycm9yOiAi
ZW1wdHktcmVwb3J0IiB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5v
dEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlv
bnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiQ1RBUCBISUQgd2l0aCBpbml0
IHN1YiBzdGFnZSBlbXB0eSByZXBvcnQgZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9y
LiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlv
bk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAiaW5p
dCIsIGVycm9yOiAid3JvbmctY2hhbm5lbC1pZCIgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogImluaXQiLCBl
cnJvcjogIndyb25nLWNoYW5uZWwtaWQiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVq
ZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShk
ZWZhdWx0T3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJDVEFQIEhJ
RCB3aXRoIGluaXQgc3ViIHN0YWdlIHdyb25nIGNoYW5uZWwgaWQgZXJyb3IgaW4gYSBtb2NrIGhp
ZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRX
ZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIs
IHN1YlN0YWdlOiAiaW5pdCIsIGVycm9yOiAid3Jvbmctbm9uY2UiIH0gfSk7CisgICAgICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6
ICJpbml0IiwgZXJyb3I6ICJ3cm9uZy1ub25jZSIgfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21p
c2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3Jl
YXRlKGRlZmF1bHRPcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIkNU
QVAgSElEIHdpdGggaW5pdCBzdWIgc3RhZ2Ugd3Jvbmcgbm9uY2UgZXJyb3IgaW4gYSBtb2NrIGhp
ZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRX
ZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIs
IHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJkYXRhLW5vdC1zZW50IiB9IH0pOworICAgICAgICBp
ZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdl
OiAibXNnIiwgZXJyb3I6ICJkYXRhLW5vdC1zZW50IiB9IH0pOwogICAgICAgICByZXR1cm4gcHJv
bWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5j
cmVhdGUoZGVmYXVsdE9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAi
Q1RBUCBISUQgd2l0aCBtc2cgc3ViIHN0YWdlIGRhdGEgbm90IHNlbnQgZXJyb3IgaW4gYSBtb2Nr
IGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsK
LSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5m
byIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJlbXB0eS1yZXBvcnQiIH0gfSk7CisgICAgICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3Rh
Z2U6ICJtc2ciLCBlcnJvcjogImVtcHR5LXJlcG9ydCIgfSB9KTsKICAgICAgICAgcmV0dXJuIHBy
b21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Y3JlYXRlKGRlZmF1bHRPcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwg
IkNUQVAgSElEIHdpdGggbXNnIHN1YiBzdGFnZSBlbXB0eSByZXBvcnQgZXJyb3IgaW4gYSBtb2Nr
IGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsK
LSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5m
byIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ3cm9uZy1jaGFubmVsLWlkIiB9IH0pOworICAg
ICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1
YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ3cm9uZy1jaGFubmVsLWlkIiB9IH0pOwogICAgICAgICBy
ZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsK
ICAgICB9LCAiQ1RBUCBISUQgd2l0aCBtc2cgc3ViIHN0YWdlIHdyb25nIGNoYW5uZWwgaWQgZXJy
b3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1
bmN0aW9uKHQpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ3cm9uZy1jaGFubmVs
LWlkIiwgcGF5bG9hZEJhc2U2NDpbdGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjRdIH0gfSk7
CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNl
dE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIndyb25nLWNoYW5uZWwtaWQiLCBwYXlsb2Fk
QmFzZTY0Olt0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0
dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlh
bHMuY3JlYXRlKGRlZmF1bHRPcHRpb25zKSwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIEVycm9y
IGNvZGU6IDE4Iik7CiAgICAgfSwgIkNUQVAgSElEIHdpdGggcmVxdWVzdDo6bXNnIHN0YWdlIHdy
b25nIGNoYW5uZWwgaWQgZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLWhp
ZC1zdWNjZXNzLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFw
LWhpZC1zdWNjZXNzLmh0dHBzLmh0bWwKaW5kZXggOGU1ZDA5NWU1ZmQ5ODNmYWFhYzRkN2UzYTQ2
MmIwY2NkZDk3ZDYwNS4uYjZmOTFmOGMzZWZhNjkwNzY4ZTc3ZTVkZGIwMzM5YTQwYzdkOTk3MSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtc3VjY2Vz
cy5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlk
LXN1Y2Nlc3MuaHR0cHMuaHRtbApAQCAtMjAsOCArMjAsOCBAQAogICAgIH07CiAKICAgICBwcm9t
aXNlX3Rlc3QoZnVuY3Rpb24odCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRp
b24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1
Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NF0sIGtlZXBB
bGl2ZTogdHJ1ZSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAg
ICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlk
OiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwg
cGF5bG9hZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdLCBrZWVwQWxpdmU6IHRy
dWUgfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVm
YXVsdE9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBhc3NlcnRfbm90
X2VxdWFscyhjcmVkZW50aWFsLCB1bmRlZmluZWQpOwogICAgICAgICAgICAgYXNzZXJ0X25vdF9l
cXVhbHMoY3JlZGVudGlhbCwgbnVsbCk7CkBAIC0yOSw4ICsyOSw4IEBACiAgICAgfSwgIkNUQVAg
SElEIHdpdGgga2VlcCBhbGl2ZSBtZXNzYWdlIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4i
KTsKIAogICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7Ci0gICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1z
ZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdl
QmFzZTY0XSwgZmFzdERhdGFBcnJpdmFsOiB0cnVlIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ci
LCBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdENyZWF0aW9uTWVzc2FnZUJh
c2U2NF0sIGZhc3REYXRhQXJyaXZhbDogdHJ1ZSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdh
dG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+
IHsKICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIHVuZGVmaW5lZCk7
CiAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCBudWxsKTsKQEAgLTM4
LDggKzM4LDggQEAKICAgICB9LCAiQ1RBUCBISUQgd2l0aCBmYXN0IGRhdGEgYXJyaXZhbCBpbiBh
IG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24o
dCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6
ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJlbXB0eS1yZXBvcnQiLCBwYXlsb2Fk
QmFzZTY0OiBbdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NF0sIGNvbnRpbnVlQWZ0ZXJFcnJvckRh
dGE6IHRydWUgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAg
ICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogImluaXQiLCBlcnJvcjogImVtcHR5LXJlcG9ydCIs
IHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSwgY29udGludWVBZnRl
ckVycm9yRGF0YTogdHJ1ZSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAg
ICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIHVuZGVmaW5lZCk7CiAgICAgICAgICAg
ICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCBudWxsKTsKQEAgLTQ3LDggKzQ3LDggQEAK
ICAgICB9LCAiQ1RBUCBISUQgd2l0aCBjb250aW51ZSBhZnRlciBlbXB0eSByZXBvcnQgaW4gYSBt
b2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQp
IHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAi
aW5mbyIsIHN1YlN0YWdlOiAiaW5pdCIsIGVycm9yOiAid3JvbmctY2hhbm5lbC1pZCIsIHBheWxv
YWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSwgY29udGludWVBZnRlckVycm9y
RGF0YTogdHJ1ZSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAg
ICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlk
OiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAiaW5pdCIsIGVycm9yOiAid3JvbmctY2hhbm5l
bC1pZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSwgY29udGlu
dWVBZnRlckVycm9yRGF0YTogdHJ1ZSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAg
ICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIHVuZGVmaW5lZCk7CiAgICAg
ICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCBudWxsKTsKQEAgLTU2LDggKzU2
LDggQEAKICAgICB9LCAiQ1RBUCBISUQgd2l0aCBjb250aW51ZSBhZnRlciB3cm9uZyBjaGFubmVs
IGlkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIAogICAgIHByb21pc2VfdGVzdChm
dW5jdGlvbih0KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogImluaXQiLCBlcnJvcjogIndyb25nLW5vbmNlIiwg
cGF5bG9hZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdLCBjb250aW51ZUFmdGVy
RXJyb3JEYXRhOiB0cnVlIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
eyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJ3cm9uZy1u
b25jZSIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSwgY29udGlu
dWVBZnRlckVycm9yRGF0YTogdHJ1ZSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAg
ICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIHVuZGVmaW5lZCk7CiAgICAg
ICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCBudWxsKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtbmZjLWZhaWx1cmUuaHR0cHMuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtbmZjLWZhaWx1cmUuaHR0cHMu
aHRtbAppbmRleCA1YzBiMWI4YWU0Njg4N2Y1ZmJhNWIxMzNiODgyZjRlNjQ5ZDhhZDI0Li4yMDUw
NjBhYzY3ZjRiMzJjNzAzMGM4MzhmMmVjZTE0MGEyMjNmNGFjIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0dHBzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1uZmMtZmFpbHVyZS5odHRwcy5odG1s
CkBAIC0yMSwxNCArMjEsMTQgQEAKICAgICB9OwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9u
KHQpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9y
OiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0Olt0ZXN0TmZjVTJmVmVyc2lvbkJh
c2U2NCwgIiJdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAg
ICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBuZmM6
IHsgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6W3Rlc3ROZmNVMmZW
ZXJzaW9uQmFzZTY0LCAiIl0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQs
ICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGRlZmF1bHRP
cHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIkNUQVAgTkZDIHdpdGgg
ZW1wdHkgYXBkdSByZXNwb25zZSBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIik7CiAKICAg
ICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNl
NjQ6W3Rlc3ROZmNVMmZWZXJzaW9uQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNw
b25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAg
ICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IG5m
YzogeyBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDpbdGVzdE5mY1Uy
ZlZlcnNpb25CYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0XSB9
IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIs
IG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlvbnMpLCAiT3BlcmF0aW9u
IHRpbWVkIG91dC4iKTsKICAgICB9LCAiQ1RBUCBORkMgd2l0aCB3cm9uZyBkYXRhIGVycm9yIGlu
IGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vaWRsLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9pZGwuaHR0cHMuaHRtbAppbmRleCBkYzEyYjcyMjRiMWUwZmQwNjg1
Nzk3MDUwYWNjOWVmZmI5ODVjZjYxLi4wOWFmY2IwZTE2ZTQ3MzgxMDhiNWU5YzgwNWZhZjdjYjk3
ZmU0ZDk4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9pZGwuaHR0
cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9pZGwuaHR0cHMuaHRt
bApAQCAtNTIsOCArNTIsOCBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4gewogICAgICAgICB9
CiAgICAgfTsKICAgICAvLyBBIG1vY2sgYXR0ZXN0YXRpb24gb2JqZWN0Ci0gICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9j
a0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ci
LCBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdENyZWF0aW9uTWVzc2FnZUJh
c2U2NF0gfSB9KTsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxz
LnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJy
ZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0
OiBbdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NF0gfSB9KTsKICAgICBjcmVhdGVkQ3JlZGVudGlh
bCA9IGF3YWl0IG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoY3JlYXRpb25PcHRpb25zKTsK
IAogICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zID0gewpAQCAtNjEsOCArNjEsOCBAQCBwcm9taXNl
X3Rlc3QoYXN5bmMgKCkgPT4gewogICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFy
c2UoIk1USXpORFUyIiksCiAgICAgICAgIH0KICAgICB9OwotICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1
cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6
ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RBc3NlcnRpb25NZXNzYWdlQmFzZTY0XSB9
IH0pOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3Qi
LCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0
QXNzZXJ0aW9uTWVzc2FnZUJhc2U2NF0gfSB9KTsKICAgICByZXF1ZXN0ZWRDcmVkZW50aWFsID0g
YXdhaXQgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChyZXF1ZXN0T3B0aW9ucyk7CiAKICAgICBp
ZGxBcnJheS5hZGRfb2JqZWN0cyh7IlB1YmxpY0tleUNyZWRlbnRpYWwiOiBbImNyZWF0ZWRDcmVk
ZW50aWFsIl0sICJBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSI6IFsiY3JlYXRlZENy
ZWRlbnRpYWwucmVzcG9uc2UiXSwgIkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSI6IFsi
cmVxdWVzdGVkQ3JlZGVudGlhbC5yZXNwb25zZSJdfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUt
aGlkLXNpbGVudC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWhpZC1zaWxlbnQuaHR0cHMuaHRtbApp
bmRleCA2NmI1ZGE0ZjM5OTJjZWNmNjE3OGI3ZjZiNjNiZjY3ZTc4ZDg1MjM2Li5mMzU4NjZhNmUz
NjE2NjVhMzI1MGVlZDU5NGJjNDBkYTJkMGI2ZDJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtaGlk
LXNpbGVudC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1oaWQtc2lsZW50Lmh0dHBzLmh0bWwK
QEAgLTIxLDggKzIxLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhl
bnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsg
c3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXls
b2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0p
OworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5z
ZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1
ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxp
Y2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJh
c2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2Vk
RXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9u
IHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0g
d2l0aCBtYWxpY2lvdXMgcGF5bG9hZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAK
QEAgLTQ0LDggKzQ0LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhl
bnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsg
c3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInVuc3VwcG9ydGVkLW9w
dGlvbnMiIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAg
aW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRG
YWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBl
cnJvcjogInVuc3VwcG9ydGVkLW9wdGlvbnMiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNl
UmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0
ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdW5zdXBwb3J0ZWQgb3B0aW9ucyBpbiBhIG1vY2sg
aGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTY3LDggKzY3LDggQEAKICAgICAgICAgICAgIH0K
ICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxl
bnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ci
LCBlcnJvcjogInVuc3VwcG9ydGVkLW9wdGlvbnMiIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInVuc3VwcG9ydGVkLW9wdGlvbnMiIH0gfSk7
CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQu
Iik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdW5zdXBw
b3J0ZWQgb3B0aW9ucyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIDIiKTsKIApAQCAtOTAs
OCArOTAsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRp
b25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTog
InJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAidW5zdXBwb3J0ZWQtb3B0aW9ucyIg
fSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5h
bHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6
IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAi
dW5zdXBwb3J0ZWQtb3B0aW9ucyIgfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3Rz
KHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlv
bnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbY3JlYXRlXV0gd2l0aCBtaXhlZCBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVudGlj
YXRvci4iKTsKIApAQCAtMTExLDggKzExMSw4IEBACiAgICAgICAgICAgIH0KICAgICAgICB9Owog
Ci0gICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9h
ZEJhc2U2NDogW3Rlc3RDdGFwRXJyQ3JlZGVudGlhbEV4Y2x1ZGVkT25seVJlc3BvbnNlQmFzZTY0
XSB9IH0pOworICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICBpbnRlcm5h
bHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTog
InJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBw
YXlsb2FkQmFzZTY0OiBbdGVzdEN0YXBFcnJDcmVkZW50aWFsRXhjbHVkZWRPbmx5UmVzcG9uc2VC
YXNlNjRdIH0gfSk7CiAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJJbnZhbGlkU3Rh
dGVFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJBdCBsZWFz
dCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNsdWRlQ3JlZGVudGlh
bHMgbGlzdCBpbiB0aGUgYXV0aGVudGljYXRvci4iKTsKICAgIH0sICJQdWJsaWNLZXlDcmVkZW50
aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIEludmFsaWRTdGF0ZUVycm9yIGluIGEgbW9jayBoaWQgYXV0
aGVudGljYXRvci4iKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWhpZC5odHRw
cy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWNyZWF0ZS1mYWlsdXJlLWhpZC5odHRwcy5odG1sCmluZGV4IDJmODM3YzY2MzI2Yjg3ZmY3
YTkyODdhYjE3MDJkYWQzNDAwNjZkZjAuLjEwY2ZlYWRmZTU2MjZiYzg0ZjlmMGVjMjkwNDBhYTky
ZDdiYjg5MjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1oaWQuaHR0cHMuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZh
aWx1cmUtaGlkLmh0dHBzLmh0bWwKQEAgLTUsOCArNSw4IEBACiA8c2NyaXB0IHNyYz0iLi9yZXNv
dXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogICAgIC8vIERlZmF1bHQgbW9jayBj
b25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGl0IGlmIHRoZXkgbmVlZCBkaWZm
ZXJlbnQgY29uZmlndXJhdGlvbi4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBh
eWxvYWQiIH0gfSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFs
cy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAi
cmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIgfSB9
KTsKIAogICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CiAgICAgICAgIGNvbnN0IG9wdGlv
bnMgPSB7CkBAIC00NSw4ICs0NSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRX
ZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVz
dCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRC
YXNlNjQ6IFt0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFn
ZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0OiBbdGVz
dER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNl
UmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShv
cHRpb25zKSwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIEVycm9yIGNvZGU6IDI1NSIpOwogICAg
IH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hbGljaW91cyBwYXls
b2FkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtNjcsOCArNjcsOCBAQAog
ICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9y
OiAidW5zdXBwb3J0ZWQtb3B0aW9ucyIgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9y
OiAidW5zdXBwb3J0ZWQtb3B0aW9ucyIgfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWpl
Y3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlv
bnMpLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogNDMiKTsKICAgICB9LCAi
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1bnN1cHBvcnRlZCBvcHRpb25z
IGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtODksOCArODksOCBAQAogICAg
ICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAi
dW5zdXBwb3J0ZWQtb3B0aW9ucyIgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAi
dW5zdXBwb3J0ZWQtb3B0aW9ucyIgfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3Rz
KHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMp
LCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogNDMiKTsKICAgICB9LCAiUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1bnN1cHBvcnRlZCBvcHRpb25zIGlu
IGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gMiIpOwogCkBAIC0xMTIsOCArMTEyLDggQEAKICAg
ICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
InVuc3VwcG9ydGVkLW9wdGlvbnMiIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
KQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
InVuc3VwcG9ydGVkLW9wdGlvbnMiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0
cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRp
b25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRp
YWwncyBbW2NyZWF0ZV1dIHdpdGggbWl4ZWQgb3B0aW9ucyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRp
Y2F0b3IuIik7CiAKQEAgLTEzNCw4ICsxMzQsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9
OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTog
InJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAidW5zdXBwb3J0ZWQtb3B0aW9ucyIg
fSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5h
bHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTog
InJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAidW5zdXBwb3J0ZWQtb3B0aW9ucyIg
fSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiVW5rbm93biBpbnRlcm5hbCBl
cnJvci4gRXJyb3IgY29kZTogNDMiKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Y3JlYXRlXV0gd2l0aCBtaXhlZCBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4g
MiIpOwogCkBAIC0xNTUsOCArMTU1LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9h
ZEJhc2U2NDogW3Rlc3RDdGFwRXJyQ3JlZGVudGlhbEV4Y2x1ZGVkT25seVJlc3BvbnNlQmFzZTY0
XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVy
bmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdl
OiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIs
IHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3RhcEVyckNyZWRlbnRpYWxFeGNsdWRlZE9ubHlSZXNwb25z
ZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJJbnZhbGlk
U3RhdGVFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJBdCBs
ZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNsdWRlQ3JlZGVu
dGlhbHMgbGlzdCBpbiB0aGUgYXV0aGVudGljYXRvci4iKTsKICAgICB9LCAiUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBJbnZhbGlkU3RhdGVFcnJvciBpbiBhIG1vY2sgaGlk
IGF1dGhlbnRpY2F0b3IuIik7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2Nh
bC1zaWxlbnQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC1zaWxlbnQuaHR0cHMuaHRtbApp
bmRleCA2YTAwYmVkZTZkZDliZTc4MzA2YWU3ZDQwZTc1ZmVkM2JjNGNhYzJkLi40ZGNmNGEyOTRk
OWZlNzNjN2MyMTZmOGZkMTk0ZTMyNjY3YTc2OGU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9j
YWwtc2lsZW50Lmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy5o
dG1sCkBAIC05LDggKzksOCBAQAogICAgICAgICBjb25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdh
aXQgZ2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7CiAgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJ
RCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChwcml2YXRlS2V5QmFzZTY0KTsKICAgICAg
ICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUg
aWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBsb2NhbDogeyBhY2NlcHRB
dXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOworICAg
ICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgbG9j
YWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IGZhbHNlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFs
c2UgfSB9KTsKIAogICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAgICAgICBjb25z
dCBvcHRpb25zID0gewpAQCAtMTIxLDggKzEyMSw4IEBACiAgICAgICAgICAgICAgICAgICAgIHRp
bWVvdXQ6IDEwCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfTsKLSAgICAgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdl
YkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBs
b2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZh
bHNlIH0gfSk7CisgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAg
ICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNp
bGVudEZhaWx1cmU6IHRydWUsIGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLCBh
Y2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKICAgICAgICAgICAgIHJldHVybiBwcm9taXNl
UmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0
ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgICAgIH0sICJQdWJsaWNL
ZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHNpbGVudCBmYWlsdXJlIGluIGEgbW9jayBs
b2NhbCBhdXRoZW50aWNhdG9yLiA1Iik7CiAKQEAgLTE0Miw4ICsxNDIsOCBAQAogICAgICAgICAg
ICAgICAgICAgICB0aW1lb3V0OiAxMAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH07
Ci0gICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRG
YWlsdXJlOiB0cnVlLCBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0
QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFs
cykgeworICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgbG9jYWw6IHsgYWNjZXB0QXV0aGVu
dGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOwogICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4ocHJpdmF0ZUtleUJhc2U2NCwg
dGVzdFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
cmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKS50aGVuKCgp
ID0+IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJl
LWxvY2FsLmh0dHBzLmh0bWwKaW5kZXggYzNjOTM3MjY0NGIzODE0Y2I0YTM0NWMzNTE5NjEzODc4
ZWVlMjQ1My4uMzljN2VjN2ZhYzU0ZGY3MTdkYjM3YWEwODQ5NTdkNzQwYzI3MmU1NyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWNyZWF0ZS1mYWlsdXJlLWxvY2FsLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLmh0
dHBzLmh0bWwKQEAgLTksOCArOSw4IEBACiAgICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQg
PSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKICAgICAgICAgY29uc3QgY3JlZGVu
dGlhbElEID0gYXdhaXQgY2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOwog
ICAgICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVy
cmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGlj
YXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBm
YWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogZmFsc2UsIGFj
Y2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOwogCiAgICAgICAgIHByb21pc2VfdGVzdCh0ID0+
IHsKICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CkBAIC0xMTYsOCArMTE2LDggQEAKICAg
ICAgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXki
LCBhbGc6IC03IH1dCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfTsKLSAgICAgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBsb2NhbDogeyBhY2NlcHRBdXRo
ZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisgICAgICAg
ICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhl
bnRpY2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKICAgICAgICAg
ICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIik7CiAg
ICAgICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRob3V0IGF0dGVz
dGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC0xMzYsOCArMTM2
LDggQEAKICAgICAgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1
YmxpYy1rZXkiLCBhbGc6IC03IH1dCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfTsK
LSAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7
IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9
KTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICAgICAg
aW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBsb2NhbDog
eyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0g
fSk7CiAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9LZXljaGFpbihwcml2
YXRlS2V5QmFzZTY0LCB0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJvciIsIG5h
dmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJVbmtub3duIGludGVybmFsIGVy
cm9yLiIpLnRoZW4oKCkgPT4gewpAQCAtMTY0LDggKzE2NCw4IEBACiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0
ZXN0YXRpb246IGZhbHNlIH0gfSk7CisgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0
ZXN0YXRpb246IGZhbHNlIH0gfSk7CiAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHMo
dCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9u
cyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB0aW1lb3V0IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNh
dG9yLiIpOwogICAgIH0pKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3Jl
YXRlLWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwKaW5kZXggNDgyNDg1NzMzYzVhZjM3MjM4MzIxYjZm
MjRiMjIwMzRkZmVkNGI3MS4uMjUzNTNmMDkyNjhhYTU3MWI4N2ZkMmIxMTUzZWM4NmQ4NjJmMTQ1
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1u
ZmMuaHR0cHMuaHRtbApAQCAtNSw4ICs1LDggQEAKIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy91
dGlsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3Vy
YXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaXQgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBj
b25maWd1cmF0aW9uLgotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1
bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9y
OiAibm8tdGFncyIgfSB9KTsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50
ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJy
b3I6ICJuby10YWdzIiB9IH0pOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKICAg
ICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKQEAgLTY2LDggKzY2LDggQEAKICAgICAgICAgICAgIH0K
ICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6
IHsgZXJyb3I6ICJ3cm9uZy10YWctdHlwZSIgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogIndyb25nLXRhZy10eXBlIiB9IH0pOwogICAgICAg
ICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5j
cmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAg
IH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHdyb25nIHRhZyB0eXBl
IGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKIApAQCAtODgsOCArODgsOCBAQAogICAg
ICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbih7IG5mYzogeyBlcnJvcjogIm5vLWNvbm5lY3Rpb25zIiB9IH0pOworICAgICAgICBpZiAo
d2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAibm8tY29ubmVjdGlvbnMiIH0g
fSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwg
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBv
dXQuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbm8g
Y29ubmVjdGlvbnMgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC0xMTAsOCAr
MTEwLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBh
eWxvYWRCYXNlNjQ6IFsgXSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
KHsgbmZjOiB7IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0OiBbIF0g
fSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3Ii
LCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVk
IG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBu
dWxsIHZlcnNpb24gaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC0xMzIsOCAr
MTMyLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBh
eWxvYWRCYXNlNjQ6W3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0pOworICAgICAg
ICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAibWFsaWNpb3VzLXBh
eWxvYWQiLCBwYXlsb2FkQmFzZTY0Olt0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJhc2U2NF0gfSB9
KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91
dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB3cm9u
ZyB2ZXJzaW9uIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0
ZS1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYtc2lsZW50Lmh0
dHBzLmh0bWwKaW5kZXggYWVkOTdjMjU2NjE2MjlkYjlhYzcwMzhlMTcxN2M0NDg0OGVmNmFkNC4u
N2U3MDRmN2UxMWNkZTMzMTA0OTAxNGM5MzM3ZjZkYWQ5MWNjOGEzYyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1m
YWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLXNpbGVudC5o
dHRwcy5odG1sCkBAIC0yMSw4ICsyMSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAK
LSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1
ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxp
Y2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbIkFRPT0iXSB9IH0p
OworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5z
ZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1
ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxp
Y2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbIkFRPT0iXSB9IH0p
OwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5h
dmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0
LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hbGZv
cm1lZCBBUERVIHBheWxvYWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC00
Myw4ICs0Myw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNh
dGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdl
OiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIs
IGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3Bv
bnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAg
ICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2ls
ZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNn
IiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0
OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICBy
ZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0s
ICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hbGZvcm1lZCBVMkYgcmVn
aXN0ZXIgcmVzcG9uc2UgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC02NSw4
ICs2NSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlv
bk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAi
cmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlz
VTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5
UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
eyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6
ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRC
YXNlNjQ6IFt0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNwb25zZUJhc2U2NF0gfSB9
KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91
dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCByZWdp
c3RlciBjb21tYW5kIGVycm9yIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAt
ODgsOCArODgsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGlj
YXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFn
ZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQi
LCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNw
b25zZUJhc2U2NCwgdGVzdFUyZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5UmVzcG9uc2VCYXNlNjRd
IH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJu
YWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJl
OiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
Im1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJm
QXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1SW5zTm90U3VwcG9ydGVk
T25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHMo
dCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9u
cyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tjcmVhdGVdXSB3aXRoIGJvZ3VzIGNvbW1hbmQgZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRo
ZW50aWNhdG9yLiIpOwogCkBAIC0xMTAsOCArMTEwLDggQEAKICAgICAgICAgICAgIH0KICAgICAg
ICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWls
dXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJv
cjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0
VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlS
ZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAg
ICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7
IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTog
Im1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJh
c2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVO
b0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJl
amVjdHModCwgIkludmFsaWRTdGF0ZUVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0
ZShvcHRpb25zKSwgIkF0IGxlYXN0IG9uZSBjcmVkZW50aWFsIG1hdGNoZXMgYW4gZW50cnkgb2Yg
dGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBsaXN0IGluIHRoZSBhdXRoZW50aWNhdG9yLiIpOwogICAg
IH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGZpcnN0IGV4Y2x1ZGUg
Y3JlZGVudGlhbCBtYXRjaGVkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAt
MTMzLDggKzEzMyw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50
aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0
YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9h
ZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5
UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NCwgdGVz
dFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2lu
ZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAi
cmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlz
VTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9u
c2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFw
ZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlz
ZVJlamVjdHModCwgIkludmFsaWRTdGF0ZUVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNy
ZWF0ZShvcHRpb25zKSwgIkF0IGxlYXN0IG9uZSBjcmVkZW50aWFsIG1hdGNoZXMgYW4gZW50cnkg
b2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBsaXN0IGluIHRoZSBhdXRoZW50aWNhdG9yLiIpOwog
ICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHNlY29uZCBleGNs
dWRlIGNyZWRlbnRpYWwgbWF0Y2hlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAK
QEAgLTE1Niw4ICsxNTYsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0
aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBh
eWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Q29uZGl0aW9u
c05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVDb25kaXRpb25zTm90
U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRp
c2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJh
c2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBp
bnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZh
aWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVy
cm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rl
c3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUy
ZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBk
dUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9F
cnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWpl
Y3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9w
dGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBmaXJzdCBleGNsdWRlIGNyZWRlbnRpYWwgbWF0Y2hlZCBp
biBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIFRlc3Qgb2YgdXNlciBwcmVzZW5jZS4iKTsKIDwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi5odHRwcy5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJl
LXUyZi5odHRwcy5odG1sCmluZGV4IDE1N2Q5ZTg4YTA2YmVkNDZjN2Q0ZmQ4NWUxNjAxY2UyYWVj
ZjQyM2QuLjk0N2RjZmYyYmY1MDlkM2ZhZmEwNTUwNDI1Yzc5OTAxMTIzNDhjNmIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1j
cmVhdGUtZmFpbHVyZS11MmYuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLmh0dHBzLmh0
bWwKQEAgLTIwLDggKzIwLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1
dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwg
c3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUs
IHBheWxvYWRCYXNlNjQ6IFsiQVE9PSJdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJv
cjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFsiQVE9
PSJdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9y
IiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkNvdWxkbid0IHBhcnNl
IHRoZSBBUERVIHJlc3BvbnNlLiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tj
cmVhdGVdXSB3aXRoIG1hbGZvcm1lZCBBUERVIHBheWxvYWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50
aWNhdG9yLiIpOwogCkBAIC00MSw4ICs0MSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07
CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAi
cmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlz
VTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNl
QmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAg
IGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5
bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25s
eVJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwg
IlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJD
b3VsZG4ndCBwYXJzZSB0aGUgVTJGIHJlZ2lzdGVyIHJlc3BvbnNlLiIpOwogICAgIH0sICJQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hbGZvcm1lZCBVMkYgcmVnaXN0ZXIg
cmVzcG9uc2UgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC02Miw4ICs2Miw4
IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tD
b25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwg
ZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBb
dGVzdFUyZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAg
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwg
c3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUs
IHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNwb25zZUJh
c2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJy
b3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiVW5rbm93biBpbnRl
cm5hbCBlcnJvci4gRXJyb3IgY29kZTogMjc5MDQiKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aCByZWdpc3RlciBjb21tYW5kIGVycm9yIGluIGEgbW9jayBo
aWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtODQsOCArODQsOCBAQAogICAgICAgICAgICAgfQog
ICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBh
eWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9u
bHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5UmVzcG9uc2VC
YXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAg
aW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsg
c3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXls
b2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5
UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1SW5zTm90U3VwcG9ydGVkT25seVJlc3BvbnNlQmFz
ZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJv
ciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJVbmtub3duIGludGVy
bmFsIGVycm9yLiBFcnJvciBjb2RlOiAyNzkwNCIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50
aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGJvZ3VzIGNvbW1hbmQgZXJyb3IgaW4gYSBtb2NrIGhpZCBh
dXRoZW50aWNhdG9yLiIpOwogCkBAIC0xMDYsOCArMTA2LDggQEAKICAgICAgICAgICAgIH0KICAg
ICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsg
c3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXls
b2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5
UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9
KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMu
c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJl
cXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1Uy
ZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJh
c2U2NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAg
ICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIkludmFsaWRTdGF0ZUVycm9yIiwgbmF2aWdhdG9y
LmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkF0IGxlYXN0IG9uZSBjcmVkZW50aWFsIG1h
dGNoZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBsaXN0IGluIHRoZSBhdXRo
ZW50aWNhdG9yLiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3
aXRoIGZpcnN0IGV4Y2x1ZGUgY3JlZGVudGlhbCBtYXRjaGVkIGluIGEgbW9jayBoaWQgYXV0aGVu
dGljYXRvci4iKTsKIApAQCAtMTI5LDggKzEyOSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAg
IH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdl
OiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIs
IGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVz
cG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUy
ZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93
LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNn
IiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0
OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9F
cnJvck9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFz
ZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIkludmFsaWRTdGF0
ZUVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkF0IGxlYXN0
IG9uZSBjcmVkZW50aWFsIG1hdGNoZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFs
cyBsaXN0IGluIHRoZSBhdXRoZW50aWNhdG9yLiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50
aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHNlY29uZCBleGNsdWRlIGNyZWRlbnRpYWwgbWF0Y2hlZCBp
biBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTE1MSw4ICsxNTEsOCBAQAogICAg
ICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAi
bWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZB
cGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVD
b25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRp
dGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9u
bHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFs
aWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1
Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVDb25k
aXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlv
bnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlS
ZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJJ
bnZhbGlkU3RhdGVFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyks
ICJBdCBsZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNsdWRl
Q3JlZGVudGlhbHMgbGlzdCBpbiB0aGUgYXV0aGVudGljYXRvci4iKTsKICAgICB9LCAiUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBmaXJzdCBleGNsdWRlIGNyZWRlbnRpYWwg
bWF0Y2hlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIFRlc3Qgb2YgdXNlciBwcmVzZW5j
ZS4iKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLmh0dHBzLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZh
aWx1cmUuaHR0cHMuaHRtbAppbmRleCA0NjQyYTViYTBmYmU3YThiM2M4YWRmZjUzOTY5OTU1YjBj
NWQ2NmNiLi41ZThmNWI4MTJiZTU3NjNjMzFiYzVkMmRmYzg5NGMwOTUwZjU3ODkzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLWZhaWx1cmUuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUuaHR0cHMuaHRtbApAQCAt
NSw4ICs1LDggQEAKIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQ+CiAgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQg
dG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgotICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNh
dGlvbk1vY2tDb25maWd1cmF0aW9uKHsgfSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsg
fSk7CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewogICAgICAgICBjb25zdCBvcHRp
b25zID0gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNz
LWhpZC5odHRwcy5odG1sCmluZGV4IDZhOGMzNTgxM2VlMmFkNzI3YmJjNTY2MTFhOGIyY2I5MGFk
YmFmNjQuLjU0NDZmNTU3MGYyOWQ1MzQ2YWY3ODdjZjU2NGM5M2U1NjcwYWY3MGMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1j
cmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0
bWwKQEAgLTYsOCArNiw4IEBACiA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvY2Jvci5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0PgogICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0
cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4K
LSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0
aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBz
dWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3Jl
YXRpb25NZXNzYWdlQmFzZTY0XSB9IH0pOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhp
ZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIs
IHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSB9IH0pOwogCiAgICAg
cHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICBjb25zdCBvcHRpb25zID0gewpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNy
ZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRt
bAppbmRleCBlNTFiYTVmZGU2YThlZjRmNDkwODY3ZmFiYWZjN2JiZDU3MmU0ZWVlLi4wODhlODYz
MThkMWJlOGEwNDQ1N2Q0MTE4YjNkMWFmODgzZGMwMmM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3Mt
bG9jYWwuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbApAQCAtMTAs
OCArMTAsOCBAQAogICAgICAgICBjb25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQgZ2VuZXJh
dGVQcml2YXRlS2V5QmFzZTY0KCk7CiAgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJRCA9IGF3YWl0
IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChwcml2YXRlS2V5QmFzZTY0KTsKICAgICAgICAgLy8gRGVm
YXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBu
ZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGlu
dGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsKICAgICAgICAg
ICAgICAgICBsb2NhbDogewogICAgICAgICAgICAgICAgICAgICBhY2NlcHRBdXRoZW50aWNhdGlv
bjogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgYWNjZXB0QXR0ZXN0YXRpb246IHRydWUsCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbmZjLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbmZjLmh0dHBz
Lmh0bWwKaW5kZXggOGQyMmU1NDRkNGFiOTUwOTk1MjU3ZmE2YjllMGU1ZjAyYzg2MTU1ZC4uODJk
MDcwNjE4YjNlMDMzYzM0OGE3NzQyYzEwYWY2ZWMxMWM2NjM1NiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNj
ZXNzLW5mYy5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1uZmMuaHR0cHMuaHRtbApAQCAtNiw4
ICs2LDggQEAKIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy9jYm9yLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQ+CiAgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8g
b3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgotICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlv
bk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNl
NjQ6IFt0ZXN0TmZjQ3RhcFZlcnNpb25CYXNlNjQsIHRlc3RHZXRJbmZvUmVzcG9uc2VBcGR1QmFz
ZTY0LCB0ZXN0Q3JlYXRpb25NZXNzYWdlQXBkdUJhc2U2NF0gfSB9KTsKKyAgICBpZiAod2luZG93
LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rl
c3ROZmNDdGFwVmVyc2lvbkJhc2U2NCwgdGVzdEdldEluZm9SZXNwb25zZUFwZHVCYXNlNjQsIHRl
c3RDcmVhdGlvbk1lc3NhZ2VBcGR1QmFzZTY0XSB9IH0pOwogCiAgICAgcHJvbWlzZV90ZXN0KHQg
PT4gewogICAgICAgICBjb25zdCBvcHRpb25zID0gewpAQCAtNzEsOCArNzEsOCBAQAogICAgICAg
ICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlv
bih7IG5mYzogeyBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdE5mY0N0YXBW
ZXJzaW9uQmFzZTY0LCB0ZXN0R2V0SW5mb1Jlc3BvbnNlQXBkdUJhc2U2NCwgdGVzdENyZWF0aW9u
TWVzc2FnZUFwZHVCYXNlNjRdLCBtdWx0aXBsZVRhZ3M6IHRydWUgfSB9KTsKKyAgICAgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2Fk
QmFzZTY0OiBbdGVzdE5mY0N0YXBWZXJzaW9uQmFzZTY0LCB0ZXN0R2V0SW5mb1Jlc3BvbnNlQXBk
dUJhc2U2NCwgdGVzdENyZWF0aW9uTWVzc2FnZUFwZHVCYXNlNjRdLCBtdWx0aXBsZVRhZ3M6IHRy
dWUgfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0
aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIGNoZWNrQ3RhcE1ha2VDcmVk
ZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKQEAgLTk1LDggKzk1LDggQEAK
ICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RO
ZmNVMmZWZXJzaW9uQmFzZTY0LCB0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNwb25z
ZUJhc2U2NCwgdGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2
NDogW3Rlc3ROZmNVMmZWZXJzaW9uQmFzZTY0LCB0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9u
bHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7CiAgICAgICAg
IHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVu
dGlhbCA9PiB7CiAgICAgICAgICAgICBjaGVja1UyZk1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRl
bnRpYWwpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy11MmYuaHR0cHMuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1j
cmVhdGUtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbAppbmRleCA0N2Q4YmQ0NDk0NzVhZDQ1MzllN2Ez
OWFiMTJjMzlkMjM0NmM3YTNjLi5jMmJjOGY1MjZiNzQwMjExYjE5NDk3MzA1NzAxNWI1ZDEwYWU2
NTdhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNz
LXUyZi5odHRwcy5odG1sCkBAIC0yMSw4ICsyMSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAg
IH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdl
OiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRy
dWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKKyAgICAg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBz
dWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFz
ZTY0OiBbdGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAg
ICAgICAgICAgICBjaGVja1UyZk1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwpOwogICAg
ICAgICB9KTsKQEAgLTQ1LDggKzQ1LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5
bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0
VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAi
c3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0Rh
dGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOwogICAg
ICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNy
ZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgY2hlY2tVMmZNYWtlQ3JlZGVudGlhbFJlc3VsdChj
cmVkZW50aWFsKTsKICAgICAgICAgfSk7CkBAIC02OSw4ICs2OSw4IEBACiAgICAgICAgICAgICB9
CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlk
OiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwg
aXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNw
b25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RV
MmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJz
dWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0
YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNl
NjQsIHRlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdh
dG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAg
ICAgICAgICAgY2hlY2tVMmZNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsKTsKICAgICAg
ICAgfSk7CkBAIC05Miw4ICs5Miw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRX
ZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVz
dCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxv
YWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VC
YXNlNjQsIHRlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2
NCwgdGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBl
cnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1
Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVDb25k
aXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmUmVnaXN0ZXJSZXNw
b25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUo
b3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIGNoZWNrVTJmTWFrZUNy
ZWRlbnRpYWxSZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwpAQCAtMTE2LDggKzExNiw4
IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tD
b25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwg
ZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmUmVn
aXN0ZXJSZXNwb25zZV0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAg
ICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7
IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2Vz
cyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2Vd
IH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlv
bnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBjaGVja1UyZk1ha2VDcmVkZW50
aWFsUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKQEAgLTE0MCw4ICsxNDAsOCBAQAog
ICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9y
OiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlJlZ2lzdGVy
UmVzcG9uc2VdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAg
ICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6
IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBp
c1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0p
OwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50
aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgY2hlY2tVMmZNYWtlQ3JlZGVudGlhbFJl
c3VsdChjcmVkZW50aWFsLCBmYWxzZSk7CiAgICAgICAgIH0pOwpAQCAtMTY0LDggKzE2NCw4IEBA
CiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25m
aWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJy
b3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmUmVnaXN0
ZXJSZXNwb25zZV0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAg
ICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhp
ZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIs
IGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2VdIH0g
fSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMp
LnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBjaGVja1UyZk1ha2VDcmVkZW50aWFs
UmVzdWx0KGNyZWRlbnRpYWwsIGZhbHNlKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1
cmUtaGlkLXNpbGVudC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC1zaWxlbnQuaHR0cHMuaHRtbApp
bmRleCBlODVjMmM4NGFmNzIyZDc1MTljNTVlYzdjNWNlNmM1MDA2MzZhYzIwLi4zOGY0MDc0OWU5
NWFlMDViYzkyN2YxZGNiYjNjYjllMWQ5MjFlNzcyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLXNp
bGVudC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQtc2lsZW50Lmh0dHBzLmh0bWwKQEAgLTEy
LDggKzEyLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0
aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6
ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwg
cGF5bG9hZEJhc2U2NDogW3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0pOworICAg
ICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlk
OiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMt
cGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJhc2U2NF0g
fSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3Ii
LCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91
dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtYWxpY2lv
dXMgcGF5bG9hZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTI2LDggKzI2
LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9j
a0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInVuc3VwcG9ydGVkLW9wdGlvbnMiIH0gfSk7
CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNl
dE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVl
LCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInVuc3Vw
cG9ydGVkLW9wdGlvbnMiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAi
Tm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk9w
ZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dl
dF1dIHdpdGggdW5zdXBwb3J0ZWQgb3B0aW9ucyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3Iu
Iik7CiAKQEAgLTM5LDggKzM5LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdl
YkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBo
aWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91
cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENyZWRlbnRpYWxS
ZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAg
ICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7
IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTog
Im1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEN0
YXBFcnJJbnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1
cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50
aWFscy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIGludmFsaWQgY3JlZGVudGlhbCBpbiBhIG1v
Y2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTUyLDggKzUyLDggQEAKICAgICAgICAgICAg
IH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
ICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBz
aWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJt
c2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgY2FuRG93bmdyYWRlOiB0cnVlLCBwYXls
b2FkQmFzZTY0OiBbdGVzdEN0YXBFcnJJbnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNlQmFzZTY0XSB9
IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFs
cy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTog
dHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJt
YWxpY2lvdXMtcGF5bG9hZCIsIGNhbkRvd25ncmFkZTogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rl
c3RDdGFwRXJySW52YWxpZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAg
cmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAi
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBhdXRoZW50aWNhdG9yIGRvd25ncmFk
ZSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTY2LDggKzY2LDggQEAKICAg
ICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3Vi
U3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgY2FuRG93bmdyYWRlOiB0
cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEN0YXBFcnJJbnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNl
QmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAg
IGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50
RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwg
ZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGNhbkRvd25ncmFkZTogdHJ1ZSwgcGF5bG9hZEJh
c2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2NF0gfSB9KTsK
ICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsK
ICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBhdXRoZW50aWNhdG9y
IGRvd25ncmFkZSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIDIiKTsKIDwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWdldC1mYWlsdXJlLWhpZC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC5odHRwcy5odG1s
CmluZGV4IDU0ODVmMzcwZDY3OTcxZTIyMzVkOGQ5YTg3MmVhYjM0ZjljNTY2ZjcuLjAwMjJlYTkw
YjA3NmFmZTJjNDY0YmY3NmYyNWQ0OWI1M2NhNDgxYjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQu
aHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLmh0dHBzLmh0bWwKQEAgLTUsOCArNSw4IEBACiA8
c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogICAg
IC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlm
IHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KLSAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9y
OiAibWFsaWNpb3VzLXBheWxvYWQiIH0gfSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsg
aGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lv
dXMtcGF5bG9hZCIgfSB9KTsKIAogICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29u
c3Qgb3B0aW9ucyA9IHsKQEAgLTMxLDggKzMxLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAg
fTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6
ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwg
cGF5bG9hZEJhc2U2NDogW3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0pOworICAg
ICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIs
IHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNl
NjQ6IFt0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJu
IHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Z2V0KG9wdGlvbnMpLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogMjU1Iik7
CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbWFsaWNpb3VzIHBh
eWxvYWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC00NCw4ICs0NCw4IEBA
CiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25m
aWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJy
b3I6ICJ1bnN1cHBvcnRlZC1vcHRpb25zIiB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVy
bmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJy
b3I6ICJ1bnN1cHBvcnRlZC1vcHRpb25zIiB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJl
amVjdHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9u
cyksICJVbmtub3duIGludGVybmFsIGVycm9yLiBFcnJvciBjb2RlOiA0MyIpOwogICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIHVuc3VwcG9ydGVkIG9wdGlvbnMgaW4g
YSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC01Niw4ICs1Niw4IEBACiAgICAgICAg
ICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9u
KHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxp
Y2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50
aWFsUmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQor
ICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1h
bGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENyZWRl
bnRpYWxSZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3Rz
KHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAi
VW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogMzQiKTsKICAgICB9LCAiUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBhdXRoZW50aWNhdG9yIGRvd25ncmFkZSBmYWls
ZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC02OSw4ICs2OSw4IEBACiAg
ICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1
cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6
ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGNhbkRvd25ncmFkZTogdHJ1ZSwgcGF5bG9hZEJhc2U2NDog
W3Rlc3RDdGFwRXJySW52YWxpZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBz
dWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBjYW5Eb3duZ3JhZGU6
IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9u
c2VCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90U3Vw
cG9ydGVkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiQ2Fubm90
IGNvbnZlcnQgdGhlIHJlcXVlc3QgdG8gVTJGIGNvbW1hbmQuIik7CiAgICAgfSwgIlB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggYXV0aGVudGljYXRvciBkb3duZ3JhZGUgc3VjY2Vl
ZGVkIGFuZCB0aGVuIFUyRiBmYWlsZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAyIik7
CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC1zaWxlbnQuaHR0cHMuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQt
ZmFpbHVyZS1sb2NhbC1zaWxlbnQuaHR0cHMuaHRtbAppbmRleCA4NDNiYTg2ZjFmOWE3Y2RiOTRh
YmJhNmM2NzQzYzAyZTljMzNkZjVhLi5mMDJjMjU1ZTg4MjQwNDc0ZjEyMjJjMTJiMDY1YzZiOWY4
ZTk5ZjMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1m
YWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy5odG1sCkBAIC05LDggKzksOCBAQAogICAgICAgICBj
b25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQgZ2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7
CiAgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJRCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJ
RChwcml2YXRlS2V5QmFzZTY0KTsKICAgICAgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRp
b24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1
cmF0aW9uLgotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWls
dXJlOiB0cnVlLCBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0
dGVzdGF0aW9uOiBmYWxzZSwgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDogdXNlcmhhbmRsZUJh
c2U2NCB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGlu
dGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFp
bHVyZTogdHJ1ZSwgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IGZhbHNlLCBhY2NlcHRB
dHRlc3RhdGlvbjogZmFsc2UsIHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ6IHVzZXJoYW5kbGVC
YXNlNjQgfSB9KTsKIAogICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAgICAgICBj
b25zdCBvcHRpb25zID0gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxvY2FsLmh0dHBzLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZh
aWx1cmUtbG9jYWwuaHR0cHMuaHRtbAppbmRleCBlYTBlMmE0NmJmMDUxYTBmZTc4YWFmMjQwY2Y3
MjhjN2E3ZjQ0MmRhLi4zZTRmNDk5MDZjMzJlNGU4OTUyNThmNjY4M2EwZmJlYTQ5OTc3OWVmIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwuaHR0
cHMuaHRtbApAQCAtOSw4ICs5LDggQEAKICAgICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2NCA9
IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOwogICAgICAgICBjb25zdCBjcmVkZW50
aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7CiAg
ICAgICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJy
aWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KLSAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNh
dGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IGZh
bHNlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UsIHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ6
IHVzZXJoYW5kbGVCYXNlNjQgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRp
b246IGZhbHNlLCBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0OiB1c2VyaGFuZGxlQmFzZTY0IH0g
fSk7CiAKICAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICAgICAgY29uc3Qgb3B0
aW9ucyA9IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1uZmMu
aHR0cHMuaHRtbAppbmRleCBkYjY0ODc0ZmZmNWQ4MWZlN2I2MTQ0MzlmNzI2MjlhOTlkMDAyNTEz
Li4yNzVlZTY2ZTI2Mjg3OTE3YWFkZTljZTUzZTRlOTI3NDdiZGE2MDRlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZh
aWx1cmUtbmZjLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLW5mYy5odHRwcy5odG1sCkBAIC01LDgg
KzUsOCBAQAogPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgogPHNj
cmlwdD4KICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBv
dmVycmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIgfSB9
KTsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJtYWxpY2lvdXMt
cGF5bG9hZCIgfSB9KTsKIAogICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29uc3Qg
b3B0aW9ucyA9IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBzLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZh
aWx1cmUtdTJmLXNpbGVudC5odHRwcy5odG1sCmluZGV4IDhhN2NkOGE1YmI5MWQ4MWIxNDc2YWRk
N2M0MmQwMTM2M2IwZDZjN2EuLmFlNWJiZGQzZTM4YjRkZGY0YmIwNjQzZTlmZDUwM2FmNzk4ZDIz
YmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJl
LXUyZi1zaWxlbnQuaHR0cHMuaHRtbApAQCAtMTMsOCArMTMsOCBAQAogICAgICAgICAgICAgfQog
ICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVu
dEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIs
IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDog
W3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFn
ZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQi
LCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNw
b25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RB
bGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiT3BlcmF0
aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0g
d2l0aCBtYWxmb3JtZWQgc2lnbiByZXNwb25zZSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3Iu
Iik7CiAKQEAgLTI3LDggKzI3LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdl
YkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBo
aWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91
cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25n
RGF0YU9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBz
dWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwg
cGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0XSB9
IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIs
IG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0
LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNo
ZWQgYWxsb3cgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBA
IC00MSw4ICs0MSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50
aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0
YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9h
ZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5
UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0XSB9
IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFs
cy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTog
dHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJt
YWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFw
ZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJl
c3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5v
dEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVy
YXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRd
XSB3aXRoIG5vIG1hdGNoZWQgYWxsb3cgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGhpZCBhdXRoZW50
aWNhdG9yLiAyIik7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYuaHR0cHMuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1n
ZXQtZmFpbHVyZS11MmYuaHR0cHMuaHRtbAppbmRleCA2NDkxMzc4Mjg0ZWI2N2ExOWU3ZDYwNWU2
ODcwMDBkYTY0MWViZGU2Li41ZDFkMzAwZTY4ODU2ODQ0OWQxZGYzZTg0NmZkNmUyMmFkOGEyNDAy
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLXUyZi5odHRw
cy5odG1sCkBAIC0xMiw4ICsxMiw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRX
ZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVz
dCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0
cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0
XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVy
bmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdl
OiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIs
IGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3Bv
bnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25v
d25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJDb3VsZG4ndCBw
YXJzZSB0aGUgVTJGIHNpZ24gcmVzcG9uc2UuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRp
YWwncyBbW2dldF1dIHdpdGggbWFsZm9ybWVkIHNpZ24gcmVzcG9uc2UgaW4gYSBtb2NrIGhpZCBh
dXRoZW50aWNhdG9yLiIpOwogCkBAIC0yNSw4ICsyNSw4IEBACiAgICAgICAgICAgICB9CiAgICAg
ICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVz
dFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0
YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9h
ZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5
UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
eyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGlj
aW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdy
b25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VS
ZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9w
dGlvbnMpLCAiTm8gY3JlZGVudGlhbHMgZnJvbSB0aGUgYWxsb3dDcmVkZW50aWFscyBsaXN0IGlz
IGZvdW5kIGluIHRoZSBhdXRoZW50aWNhdG9yLiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50
aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgYWxsb3cgY3JlZGVudGlhbHMgaW4gYSBtb2Nr
IGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC0zOCw4ICszOCw4IEBACiAgICAgICAgICAgICB9
CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlk
OiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMt
cGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0Rh
dGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFz
ZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGlu
dGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0
YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9h
ZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5
UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0XSB9
IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIs
IG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJObyBjcmVkZW50aWFscyBmcm9t
IHRoZSBhbGxvd0NyZWRlbnRpYWxzIGxpc3QgaXMgZm91bmQgaW4gdGhlIGF1dGhlbnRpY2F0b3Iu
Iik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbm8gbWF0Y2hl
ZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIDIiKTsKIApA
QCAtNTMsOCArNTMsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVu
dGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJT
dGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5
bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0
VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTog
Im1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJh
c2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBk
dVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21p
c2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0
KG9wdGlvbnMpLCAiTm8gY3JlZGVudGlhbHMgZnJvbSB0aGUgYWxsb3dDcmVkZW50aWFscyBsaXN0
IGlzIGZvdW5kIGluIHRoZSBhdXRoZW50aWNhdG9yLiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVk
ZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgYWxsb3cgY3JlZGVudGlhbHMgaW4gYSBt
b2NrIGhpZCBhdXRoZW50aWNhdG9yLiAoQXBwSUQpIik7CiAKQEAgLTY3LDggKzY3LDggQEAKICAg
ICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
Im1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJm
QXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5
UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0
ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFn
ZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9h
ZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJm
QXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5
UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0XSB9
IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIs
IG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJObyBjcmVkZW50aWFscyBmcm9t
IHRoZSBhbGxvd0NyZWRlbnRpYWxzIGxpc3QgaXMgZm91bmQgaW4gdGhlIGF1dGhlbnRpY2F0b3Iu
Iik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbm8gbWF0Y2hl
ZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIDIgKEFwcElE
KSIpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUuaHR0cHMuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS5o
dHRwcy5odG1sCmluZGV4IGUyZjk1ZDY3ZDhkOGY3NGQ1OTY5ZjM1OGRhY2RmZTFhMzM1YjRkMjIu
LmNmMThmZjc3ZWYzM2ZhMzI0MzIwZDNjNWIzYWM2NGRhOWVhNDI4MzIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFp
bHVyZS5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS5odHRwcy5odG1sCkBAIC01LDggKzUsOCBAQAog
PHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KICAg
ICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBp
ZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyB9KTsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJu
YWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyB9KTsKIAogICAgIHBy
b21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQt
c3VjY2Vzcy1oaWQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbAppbmRleCBkOWIy
MmI0MmE5ZDc2MjAwMjE0MTIxMGM0NWQ2OGNmYTZkMWI5NTM2Li4wY2YwM2U3ZGQ2ZTkxOTBiN2Y1
NmY3YjkwZWM5MzljMGUyYWRlZGIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWdldC1zdWNjZXNzLWhpZC5odHRwcy5odG1sCkBAIC01LDggKzUsOCBAQAogPHNjcmlwdCBzcmM9
Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KICAgICAvLyBEZWZhdWx0
IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBpZiB0aGV5IG5lZWQg
ZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBo
aWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3Mi
LCBwYXlsb2FkQmFzZTY0OiBbdGVzdEFzc2VydGlvbk1lc3NhZ2VCYXNlNjRdIH0gfSk7CisgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdl
OiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RBc3NlcnRpb25N
ZXNzYWdlQmFzZTY0XSB9IH0pOwogCiAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICBj
b25zdCBvcHRpb25zID0gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1
Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbAppbmRleCBlMTgyMDk0OGY3N2U1YjdmODQ0Mzk4ZTlkMGZm
NjcwNmM1OGVmNzQzLi45MzYwYWZiOGY1NTgyNzU4NDNmOTAwMzQ1N2M3MGU4N2M0Mzc2Y2JmIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0
cHMuaHRtbApAQCAtOSw4ICs5LDggQEAKICAgICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2NCA9
IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOwogICAgICAgICBjb25zdCBjcmVkZW50
aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7CiAg
ICAgICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJy
aWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KLSAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNh
dGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IHRy
dWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSwgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDog
dXNlcmhhbmRsZUJhc2U2NCB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
KHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9u
OiBmYWxzZSwgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDogdXNlcmhhbmRsZUJhc2U2NCB9IH0p
OwogCiAgICAgICAgIGZ1bmN0aW9uIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpCiAgICAgICAgIHsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1nZXQtc3VjY2Vzcy1uZmMuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1uZmMuaHR0cHMuaHRt
bAppbmRleCBmYzdjNmFhMzU1ZThjZmRiYjU0MzNkZTFkYmNlNTVlYjVjNWU2NDEzLi5jYzA1MGRh
MWMzZDEzNDUxMWYxZTE4N2E3NmFjNTYzOWIxOWQ0MTg2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbmZj
Lmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLW5mYy5odHRwcy5odG1sCkBAIC01LDggKzUsOCBAQAog
PHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KICAg
ICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBp
ZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RO
ZmNDdGFwVmVyc2lvbkJhc2U2NCwgdGVzdEdldEluZm9SZXNwb25zZUFwZHVCYXNlNjQsIHRlc3RB
c3NlcnRpb25NZXNzYWdlQXBkdUJhc2U2NF0gfSB9KTsKKyAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3ROZmNDdGFw
VmVyc2lvbkJhc2U2NCwgdGVzdEdldEluZm9SZXNwb25zZUFwZHVCYXNlNjQsIHRlc3RBc3NlcnRp
b25NZXNzYWdlQXBkdUJhc2U2NF0gfSB9KTsKIAogICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAg
ICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKQEAgLTMwLDggKzMwLDggQEAKICAgICAgICAgICAgIH0K
ICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6
IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3ROZmNVMmZWZXJzaW9uQmFz
ZTY0LCB0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUy
ZlNpZ25SZXNwb25zZV0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAg
ICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7
IG5mYzogeyBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdE5mY1UyZlZlcnNp
b25CYXNlNjQsIHRlc3RVMmZBcGR1SW5zTm90U3VwcG9ydGVkT25seVJlc3BvbnNlQmFzZTY0LCB0
ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgcmV0
dXJuIGNoZWNrVTJmR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMuaHRt
bAppbmRleCA5NWIyZDFiMmUxOTRlZjJkM2U4MWM0ODY5ZTk0NzVmY2YwZDQzZDdlLi4wZjAwMDhh
YjU0M2Y1YWQ3NWJjYzU3ODQzY2RmYTU1ZDljYjQ1ZmEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtdTJm
Lmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLXUyZi5odHRwcy5odG1sCkBAIC0xMyw4ICsxMyw4IEBA
CiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25m
aWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJy
b3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmU2lnblJl
c3BvbnNlXSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAg
IGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNV
MmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOwogICAg
ICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRl
bnRpYWwgPT4gewogICAgICAgICAgICAgcmV0dXJuIGNoZWNrVTJmR2V0QXNzZXJ0aW9uUmVzdWx0
KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKQEAgLTI5LDggKzI5LDggQEAKICAgICAgICAgICAg
IH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
ICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBo
aWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3Mi
LCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJl
c3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOworICAgICAgICBpZiAod2lu
ZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAi
bXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0
VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0g
fSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyku
dGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIHJldHVybiBjaGVja1UyZkdldEFzc2Vy
dGlvblJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7CkBAIC00NSw4ICs0NSw4IEBACiAg
ICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1
cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6
ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdUNvbmRp
dGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Q29uZGl0aW9u
c05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9
KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMu
c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJl
cXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBw
YXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3Bv
bnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VC
YXNlNjQsIHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0
b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAg
ICAgICByZXR1cm4gY2hlY2tVMmZHZXRBc3NlcnRpb25SZXN1bHQoY3JlZGVudGlhbCk7CiAgICAg
ICAgIH0pOwpAQCAtNjMsOCArNjMsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVl
c3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXls
b2FkQmFzZTY0OiBbdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1z
ZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUy
ZlNpZ25SZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIHJldHVybiBj
aGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7CkBAIC04
MCw4ICs4MCw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNh
dGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdl
OiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0
ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJz
dWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmU2lnblJlc3BvbnNl
XSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25z
KS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgcmV0dXJuIGNoZWNrVTJmR2V0QXNz
ZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKQEAgLTk3LDggKzk3LDggQEAK
ICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJv
cjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3Jv
bmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOworICAg
ICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIs
IHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRC
YXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNp
Z25SZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5n
ZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIHJldHVybiBjaGVj
a1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsLCB0cnVlKTsKICAgICAgICAgfSk7CkBA
IC0xMTUsOCArMTE1LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhl
bnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3Vi
U3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2
NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJl
c3BvbnNlXSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAg
IGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNV
MmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25z
ZUJhc2U2NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmln
YXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAg
ICAgICAgIHJldHVybiBjaGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsLCB0cnVl
LCAiN2VhYmM1Y2MzMjUxYmRjNTkxMTVlZjg3YjVmN2VlNzRjYjAzNzQ3ZTM5YmE4MzQxNzQ4NTY1
Y2MxMjljMDcxOSIpOwogICAgICAgICB9KTsKQEAgLTEzMiw4ICsxMzIsOCBAQAogICAgICAgICAg
ICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7
IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2Vz
cyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5
UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0
ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJz
dWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0
YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNl
NjQsIHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3Iu
Y3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAg
ICByZXR1cm4gY2hlY2tVMmZHZXRBc3NlcnRpb25SZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAg
IH0pOwpAQCAtMTQ5LDggKzE0OSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRX
ZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVz
dCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxv
YWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUy
ZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25s
eVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOworICAgICAgICBpZiAo
d2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdl
OiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0
ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0Rh
dGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFz
ZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9y
LmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAg
ICAgcmV0dXJuIGNoZWNrVTJmR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwsIHRydWUpOwog
ICAgICAgICB9KTsKQEAgLTE2Niw4ICsxNjYsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9
OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTog
InJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGNhbkRvd25ncmFk
ZTogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENyZWRlbnRpYWxSZXNw
b25zZUJhc2U2NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1z
ZyIsIGVycm9yOiAic3VjY2VzcyIsIGNhbkRvd25ncmFkZTogdHJ1ZSwgcGF5bG9hZEJhc2U2NDog
W3Rlc3RDdGFwRXJySW52YWxpZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNpZ25S
ZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQo
b3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIHJldHVybiBjaGVja1Uy
ZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7CkBAIC0xODMsOCAr
MTgzLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJt
c2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBjYW5Eb3duZ3JhZGU6IHRydWUsIHBheWxvYWRCYXNlNjQ6
IFt0ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1
V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOwor
ICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVz
dCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgY2FuRG93bmdyYWRlOiB0cnVl
LCBwYXlsb2FkQmFzZTY0OiBbdGVzdEN0YXBFcnJJbnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNlQmFz
ZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNpZ25S
ZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQo
b3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIHJldHVybiBjaGVja1Uy
ZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsLCB0cnVlLCAiN2VhYmM1Y2MzMjUxYmRjNTkx
MTVlZjg3YjVmN2VlNzRjYjAzNzQ3ZTM5YmE4MzQxNzQ4NTY1Y2MxMjljMDcxOSIpOwogICAgICAg
ICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNl
cy9wdWJsaWMta2V5LWNyZWRlbnRpYWwtaXAtYWRkcmVzcy5odHRwcy5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3B1YmxpYy1rZXktY3JlZGVudGlhbC1pcC1h
ZGRyZXNzLmh0dHBzLmh0bWwKaW5kZXggNmRlM2E5NDM1MDRiZjRmZjk5MjNmNzg0NmFkZDg3NTQz
NDY4ZDBjZC4uODExODNjMGNkY2NmYWZlYjBhYjVmZjQzY2Q1Yzc1YzNiYjFhMmJmMCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1pcC1hZGRyZXNzLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3B1YmxpYy1rZXktY3JlZGVudGlhbC1pcC1hZGRyZXNzLmh0
dHBzLmh0bWwKQEAgLTUsOCArNSw4IEBACiA8c2NyaXB0IHNyYz0idXRpbC5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0PgogICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVk
IHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KLSAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGlj
YXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IH0pOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQor
ICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7
IH0pOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKICAgICAgICAgY29uc3Qgb3B0
aW9ucyA9IHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380550</attachid>
            <date>2019-10-09 11:56:22 -0700</date>
            <delta_ts>2019-10-09 12:26:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202560-20191009115621.patch</filename>
            <type>text/plain</type>
            <size>195004</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwOTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzNlZDcxNTI3MTBkMjU0
YmUxNDNkMjUwYTgzYjkyMzlhNWE1YTRhYy4uMzBiOTVmZDk1MDkzODQxNGNkN2I5ZmE0MDg2ZDYy
YjU0YjVkZTg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE5LTEwLTA4ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBNb3Zl
IHRoZSBtb2NrIHRlc3RpbmcgZW50cmFuY2UgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NjAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzU1OTczNzkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgVGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlv
bk1vY2tDb25maWd1cmF0aW9uIHRvCisgICAgICAgIEludGVybmFscy5zZXRNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uIGFuZCByZW1vdmVzIHRoZSBvbGQKKyAgICAgICAgZW50cmFu
Y2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IHVwZGF0ZXMgb24gZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlD
cmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmg6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24pOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbik6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5pZGw6CisgICAgICAgICogdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbjo6TG9jYWxDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TG9jYWxDb25maWd1
cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbjo6SGlkQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENvbmZpZ3Vy
YXRpb246OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uOjpOZmNDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29uZmlndXJh
dGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIHRlc3RpbmcvTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGw6IEFkZGVkLgorCiAyMDE5LTEwLTA5
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBXYXlsYW5kOiBkbyBub3QgdXNlIEVHTF9QTEFURk9STV9XQVlMQU5EX0tIUiB3aXRoIGVn
bEdldFBsYXRmb3JtRGlzcGxheUVYVApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiMjhmY2I2YmIwOTE2M2Q1NDMzNGEz
MjRlNjU3MWFmNWIwYzk5NWE5Li5lMjQxYmQ5ZmVmMDAzMTFmMzM3NzZiNmVmY2MwZmVkYjdlNWQ0
ZmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE5LTEwLTA4ICBKaWV3ZW4gVGFuICA8
amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBNb3ZlIHRoZSBtb2Nr
IHRlc3RpbmcgZW50cmFuY2UgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NjAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1
OTczNzkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChX
S1dlYnNpdGVEYXRhU3RvcmVTZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JU
cmFuc3BvcnRTZXJ2aWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvclRyYW5z
cG9ydFNlcnZpY2U6OmNyZWF0ZU1vY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok1vY2tBdXRoZW50aWNhdG9yTWFuYWdlcjo6TW9ja0F1dGhlbnRp
Y2F0b3JNYW5hZ2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9j
ay9Nb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok1vY2tIaWRDb25uZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKFdlYktpdDo6TW9ja0hpZENvbm5l
Y3Rpb246OnJlZ2lzdGVyRGF0YVJlY2VpdmVkQ2FsbGJhY2tJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1vY2tIaWRDb25uZWN0aW9uOjpwYXJzZVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0
OjpNb2NrSGlkQ29ubmVjdGlvbjo6ZmVlZFJlcG9ydHMpOgorICAgICAgICAoV2ViS2l0OjpNb2Nr
SGlkQ29ubmVjdGlvbjo6c2hvdWxkQ29udGludWVGZWVkUmVwb3J0cyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkU2VydmljZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok1vY2tIaWRTZXJ2aWNlOjpNb2NrSGlkU2VydmljZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZFNlcnZpY2UuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25u
ZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9j
a0xvY2FsQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6TW9ja0xvY2FsQ29ubmVjdGlv
bjo6TW9ja0xvY2FsQ29ubmVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL01vY2svTW9ja0xvY2FsU2VydmljZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbFNlcnZpY2UubW06CisgICAgICAgIChXZWJLaXQ6
Ok1vY2tMb2NhbFNlcnZpY2U6Ok1vY2tMb2NhbFNlcnZpY2UpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja05mY1NlcnZpY2UubW06CisgICAgICAg
IChXZWJLaXQ6Ok1vY2tOZmNTZXJ2aWNlOjpNb2NrTmZjU2VydmljZSk6CisgICAgICAgIChXZWJL
aXQ6Ok1vY2tOZmNTZXJ2aWNlOjpwbGF0Zm9ybVN0YXJ0RGlzY292ZXJ5KToKKyAgICAgICAgKFdl
YktpdDo6TW9ja05mY1NlcnZpY2U6OmRldGVjdFRhZ3MgY29uc3QpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xp
ZW50OjpzZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorCiAyMDE5LTEwLTA5
ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGVz
dFJ1bm5lci5zZXRXZWJSVENVbmlmaWVkUGxhbkVuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGVmNDM0MGE2MjgxYjQzYWU1OWY1
NjU5MzYyNDZlMmMzMjMzMjhlOTYuLmYzMjA4NTVhNTNiNjg4YmUzYzMwOTc2MTg4ODNjNjMxNTA4
NGZhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdApAQCAtMTA4OSw2ICsxMDg5LDcgQEAgJChQUk9KRUNUX0RJUikvdGVzdGluZy9Nb2NrUGF5
bWVudEFkZHJlc3MuaWRsCiAkKFBST0pFQ1RfRElSKS90ZXN0aW5nL01vY2tQYXltZW50Q29udGFj
dEZpZWxkcy5pZGwKICQoUFJPSkVDVF9ESVIpL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRv
ci5pZGwKICQoUFJPSkVDVF9ESVIpL3Rlc3RpbmcvTW9ja1BheW1lbnRFcnJvci5pZGwKKyQoUFJP
SkVDVF9ESVIpL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGwK
ICQoUFJPSkVDVF9ESVIpL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwKICQoUFJP
SkVDVF9ESVIpL3Rlc3RpbmcvVHlwZUNvbnZlcnNpb25zLmlkbAogJChQUk9KRUNUX0RJUikvd29y
a2Vycy9BYnN0cmFjdFdvcmtlci5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggMDkwOWQ3YjFmYmZkODUyZDI2YmZiMWJmNWIxY2Mx
MzQ2OTI5YjRkOC4uMTYyZDQ0ZDg0OTMzMTU1YzAxMDY1ODE2MjY1YThiNDc1NDJjMDcwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QK
KysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAg
LTEwNTksNiArMTA1OSw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTW9ja1BheW1lbnRDb29yZGluYXRvci5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01vY2tQYXltZW50RXJy
b3IuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01v
Y2tQYXltZW50RXJyb3IuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmNwcAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTTW91c2VFdmVudC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTTW91c2VFdmVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU01vdXNlRXZlbnRJbml0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKaW5kZXggYzBhNGYwMDc0ZDFhNjJhNTdiNWNkYzhjNDRkZjBmN2JmMjViNDIxNS4u
OGU3N2U2ZDBmYTU2ZmExMzBhYjdkOGIyNmY0YmEwZTQ4ZWNlY2NlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCkBAIC0xMDc2LDYgKzEwNzYsNyBAQCBKU19CSU5ESU5HX0lETFMgPSBc
CiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL01vY2tQYXltZW50Q29udGFjdEZpZWxkcy5pZGwgXAog
ICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmlkbCBcCiAgICAg
JChXZWJDb3JlKS90ZXN0aW5nL01vY2tQYXltZW50RXJyb3IuaWRsIFwKKyAgICAkKFdlYkNvcmUp
L3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGwgXAogICAgICQo
V2ViQ29yZSkvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbCBcCiAgICAgJChXZWJD
b3JlKS90ZXN0aW5nL1R5cGVDb252ZXJzaW9ucy5pZGwgXAogICAgICQoV2ViQ29yZSkvd29ya2Vy
cy9BYnN0cmFjdFdvcmtlci5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnMuaAppbmRleCAzNzJkZjFiOTRlOGJmNjQwMjMzMGU1NDVlZDQ3NTY4MGI3NDIzZGE1Li5kOGM3
YmJiM2M1ZDc5MjdmOTE1Y2Y0ZWU2NzIwZDI4ZGZjMGM4YzM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRl
bnRpYWxDcmVhdGlvbk9wdGlvbnMuaApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIlB1Ymxp
Y0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiUHVibGljS2V5Q3JlZGVudGlh
bFR5cGUuaCIKICNpbmNsdWRlICJVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQuaCIKLSNpbmNs
dWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2EzYTliZGFlZjg3Mzk5YzA4ZjliM2ZiMzI3ZjBm
NzVjODQ5NGU0Yy4uZTM3M2M4MTlhOWJkNTMzYWExZDExNzcxZWJhM2E0ODBmM2YzOWZiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTczOCw2ICsxNzM4LDEwIEBACiAJCTU3MTUyQjZFMjFDRDk5NUQwMDBDMzdDQSAvKiBVMmZD
b21tYW5kQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3MTUyQjZDMjFDRDk5NUMwMDBDMzdDQSAvKiBVMmZDb21tYW5kQ29uc3RydWN0
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
NzE1MkI3QzIxREQ4QkExMDAwQzM3Q0EgLyogVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTUyQjdBMjFERDhCQTEw
MDBDMzdDQSAvKiBVMmZSZXNwb25zZUNvbnZlcnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3MTUyQjgwMjFEREE1ODEwMDBDMzdDQSAvKiBX
ZWJBdXRoZW50aWNhdGlvblV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NzE1MkI3RTIxRERBNTgxMDAwQzM3Q0EgLyogV2ViQXV0aGVudGljYXRp
b25VdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTU3MTU2MTBCMjM0QzFCNDkwMDhGQzdBQiAvKiBNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzE1NjEwODIzNEMxQjMxMDA4RkM3QUIgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbi5oICovOyB9OworCQk1NzE1NjEwQzIzNEMxQ0ExMDA4RkM3QUIgLyogTW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTcxNTYxMDgyMzRDMUIzMTAwOEZDN0FCIC8qIE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk1NzE1NjExNDIzNEM3RkQ2MDA4RkM3QUIgLyogSlNNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTU2MTExMjM0QzdGQkMwMDhGQzdBQiAvKiBKU01vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uY3BwICovOyB9OworCQk1NzE1NjExNTIzNEM3
RkRDMDA4RkM3QUIgLyogSlNNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE1NjExMDIzNEM3
RkJDMDA4RkM3QUIgLyogSlNNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggKi87
IH07CiAJCTU3MUYyMTg5MURBNTdDNTQwMDVDOUVGRCAvKiBKU1N1YnRsZUNyeXB0by5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcxRjIxODgxREE1N0M1
NDAwNUM5RUZEIC8qIEpTU3VidGxlQ3J5cHRvLmggKi87IH07CiAJCTU3MjA5M0QzMUREQ0VCOUEw
MDMxMEFCMCAvKiBDcnlwdG9BbGdvcml0aG1BZXNDYmNDZmJQYXJhbXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MjA5M0QyMUREQ0VCOUEwMDMxMEFC
MCAvKiBDcnlwdG9BbGdvcml0aG1BZXNDYmNDZmJQYXJhbXMuaCAqLzsgfTsKIAkJNTcyMUE5ODcx
RUNFNTNCMTAwODEyOTVBIC8qIENyeXB0b0RpZ2VzdEFsZ29yaXRobS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyMUE5ODYxRUNFNTNCMTAwODEyOTVB
IC8qIENyeXB0b0RpZ2VzdEFsZ29yaXRobS5oICovOyB9OwpAQCAtODYwNSw2ICs4NjA5LDEwIEBA
CiAJCTU3MTUyQjdCMjFERDhCQTEwMDBDMzdDQSAvKiBVMmZSZXNwb25zZUNvbnZlcnRlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBVMmZSZXNwb25zZUNvbnZlcnRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU3MTUyQjdFMjFEREE1ODEwMDBDMzdDQSAvKiBXZWJBdXRoZW50
aWNhdGlvblV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcxNTJCN0YyMUREQTU4MTAwMEMzN0NBIC8q
IFdlYkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXV0aGVu
dGljYXRpb25VdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MTU2MTA4
MjM0QzFCMzEwMDhGQzdBQiAvKiBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTcxNTYxMEQyMzRD
NzQ4MTAwOEZDN0FCIC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1NzE1NjExMDIzNEM3RkJDMDA4RkM3QUIgLyogSlNNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1NzE1NjExMTIzNEM3RkJDMDA4RkM3QUIgLyogSlNNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MUYyMTg4MURBNTdDNTQwMDVDOUVGRCAvKiBKU1N1
YnRsZUNyeXB0by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N1YnRsZUNy
eXB0by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzFGMjE4QTFEQTU3QzdBMDA1
QzlFRkQgLyogSlNTdWJ0bGVDcnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNTdWJ0bGVDcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NzIwOTNEMTFERENFQTRCMDAzMTBBQjAgLyogQWVzQ2JjQ2ZiUGFyYW1zLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBB
ZXNDYmNDZmJQYXJhbXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc4OTIs
NiArMTc5MDAsOCBAQAogCQkJCUExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAvKiBNb2NrUGF5bWVu
dE1ldGhvZC5oICovLAogCQkJCUExNDA2MTg5MUUyRUNBMEEwMDMyQjM0RSAvKiBNb2NrUHJldmll
d0xvYWRlckNsaWVudC5jcHAgKi8sCiAJCQkJQTE0MDYxOEExRTJFQ0EwQTAwMzJCMzRFIC8qIE1v
Y2tQcmV2aWV3TG9hZGVyQ2xpZW50LmggKi8sCisJCQkJNTcxNTYxMDgyMzRDMUIzMTAwOEZDN0FC
IC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCAqLywKKwkJCQk1NzE1NjEw
RDIzNEM3NDgxMDA4RkM3QUIgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5p
ZGwgKi8sCiAJCQkJNDE3RjBEODAxRkZFRTE0RjAwOEVGMzAzIC8qIFNlcnZpY2VXb3JrZXJJbnRl
cm5hbHMuY3BwICovLAogCQkJCTQxN0YwRDdFMUZGRUUxNEUwMDhFRjMwMyAvKiBTZXJ2aWNlV29y
a2VySW50ZXJuYWxzLmggKi8sCiAJCQkJNDE3RjBEODExRkZFRTE1MDAwOEVGMzAzIC8qIFNlcnZp
Y2VXb3JrZXJJbnRlcm5hbHMuaWRsICovLApAQCAtMTc5MzIsNiArMTc5NDIsOCBAQAogCQkJCUEx
NDZEMzE4MUY5OUJDQkEwMEQyOTE5NiAvKiBKU01vY2tQYXltZW50Q29vcmRpbmF0b3IuaCAqLywK
IAkJCQlBMUJCODVCNDIxNTlCMzg5MDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCAq
LywKIAkJCQlBMUJCODVCNTIxNTlCMzhBMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmgg
Ki8sCisJCQkJNTcxNTYxMTEyMzRDN0ZCQzAwOEZDN0FCIC8qIEpTTW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbi5jcHAgKi8sCisJCQkJNTcxNTYxMTAyMzRDN0ZCQzAwOEZDN0FCIC8q
IEpTTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oICovLAogCQkJCTQyN0RBNzFC
MTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwICovLAogCQkJ
CTQyN0RBNzFDMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCAq
LywKIAkJCQlFQkY1MTIxQTE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuY3Bw
ICovLApAQCAtMjg0MjUsNiArMjg0MzcsNyBAQAogCQkJCUExMDRFQzVFMjIwQTNFNEUwMENCRjY3
QSAvKiBKU01vY2tQYXltZW50Q29udGFjdEZpZWxkcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE0
NkQzMUIxRjk5QkNGQjAwRDI5MTk2IC8qIEpTTW9ja1BheW1lbnRDb29yZGluYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTFCQjg1QjkyMTU5QjNBRTAwNjdFMDdEIC8qIEpTTW9ja1BheW1lbnRF
cnJvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTcxNTYxMTUyMzRDN0ZEQzAwOEZDN0FCIC8qIEpT
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDI3REE3MUUxMzczNURGQTAwN0M1N0ZCIC8qIEpTU2VydmljZVdvcmtlckludGVybmFscy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRUJGNTEyMUQxNjk2NDk2QzAwNTZCRDI1IC8qIEpTVHlwZUNvbnZl
cnNpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMyNkI0MTE2MEE4Q0NFMDAyNjc1N0IgLyog
TGVnYWN5TW9ja0NETS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODQ0Miw2ICsyODQ1NSw3IEBACiAJ
CQkJQTFBRkVERTYxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCUExQ0JFRjY0MUY5RjExMjkwMDI4REU3QyAvKiBNb2NrUGF5bWVu
dE1ldGhvZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE0MDYxOEMxRTJFQ0EwQTAwMzJCMzRFIC8q
IE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzE1NjEwQjIz
NEMxQjQ5MDA4RkM3QUIgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQUE1RjNCOEQxNkNDMzNEMTAwNDU1RUIwIC8qIFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXJNb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTc2M0YzRjFFMjA1MjM0
MDAxRDU4REUgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTgxNUMxRjEzODMxOTgzMDA1N0FBQTQgLyogV2ViQ29yZVRlc3RTdXBwb3J0LmggaW4gSGVhZGVy
cyAqLywKQEAgLTMxMDIxLDYgKzMxMDM1LDcgQEAKIAkJCQkwN0VFNzZFRjFCRUE2MTk4MDBGODkx
MzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
RjJCMDE3MTgyMDU0MDcwMEYyQjQyNCAvKiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0RGMkIwMTkxODIwNTQwNzAwRjJCNDI0IC8qIE1vY2tUcmFja3MuaCBp
biBIZWFkZXJzICovLAorCQkJCTU3MTU2MTBDMjM0QzFDQTEwMDhGQzdBQiAvKiBNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNkQ3NEFENTA5
QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3MDlBMDFGRTFFM0QwQkREMDA2QjBENEMgLyogTW9kdWxlRmV0Y2hGYWlsdXJlS2lu
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMyMDFDMUExRjhFODIxMzAwNzZBMDMyIC8qIE1vZHVs
ZUZldGNoUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjk4NCw2ICszMjk5OSw3IEBA
CiAJCQkJQTEwNEVDNUQyMjBBM0U0QjAwQ0JGNjdBIC8qIEpTTW9ja1BheW1lbnRDb250YWN0Rmll
bGRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDZEMzFBMUY5OUJDRjgwMEQyOTE5NiAvKiBK
U01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFCQjg1Qjgy
MTU5QjNBNDAwNjdFMDdEIC8qIEpTTW9ja1BheW1lbnRFcnJvci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk1NzE1NjExNDIzNEM3RkQ2MDA4RkM3QUIgLyogSlNNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQyN0RBNzFEMTM3MzVERkEwMDdD
NTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RUJGNTEyMUMxNjk2NDk2QzAwNTZCRDI1IC8qIEpTVHlwZUNvbnZlcnNpb25zLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUNEQzI2QjQwMTYwQThDQzYwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggZmRkYjE4
NjgyYmU3ZTFmNjZhZWRhYWI2OGNiYmM0NDgwODI4MDQ2ZS4uMzUwNWQ0NDA1NDFjM2Y0OWQ4NjY1
YjQ1NjNiZWVmYWVmZjY0ZDQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0x
MTAsNiArMTEwLDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVn
aW5zQ2FsbGJhY2s7CiBzdHJ1Y3QgQ29udGVudFJ1bGVMaXN0UmVzdWx0czsKIHN0cnVjdCBEYXRl
VGltZUNob29zZXJQYXJhbWV0ZXJzOwogc3RydWN0IEdyYXBoaWNzRGV2aWNlQWRhcHRlcjsKK3N0
cnVjdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOwogc3RydWN0IFNoYXJlRGF0
YVdpdGhQYXJzZWRVUkw7CiBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7CiBzdHJ1Y3QgV2luZG93
RmVhdHVyZXM7CkBAIC01MTAsNiArNTExLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
dXNlcklzSW50ZXJhY3RpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRVc2VySXNJbnRlcmFjdGluZyhib29sKSB7IH0KIAorI2lmIEVOQUJMRShXRUJfQVVU
SE4pCisgICAgdmlydHVhbCB2b2lkIHNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24oY29uc3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYpIHsgfQorI2VuZGlm
CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5DaHJvbWVDbGllbnQoKSA9IGRlZmF1bHQ7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGZmNDA5NjllZDY5ZjUzMjkx
MWRjNmU0Zjc2YzJjNDE0YzMzODMxYWEuLjZkYTFjZjNhMTMxZWQ4NWQwMzM0NzM4NGRjZTdhZGJh
NDRiZWVmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTUyMzQsNCAr
NTIzNCwxNyBAQCB2b2lkIEludGVybmFsczo6YWRkUHJlZmV0Y2hMb2FkRXZlbnRMaXN0ZW5lcihI
VE1MTGlua0VsZW1lbnQmIGxpbmssIFJlZlB0cjxFdmVudAogICAgIH0KIH0KIAorI2lmIEVOQUJM
RShXRUJfQVVUSE4pCit2b2lkIEludGVybmFsczo6c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbihjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiBjb25m
aWd1cmF0aW9uKQoreworICAgIGF1dG8qIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7Cisg
ICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8qIHBhZ2UgPSBkb2N1
bWVudC0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIHBhZ2Ut
PmNocm9tZSgpLmNsaWVudCgpLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
Y29uZmlndXJhdGlvbik7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggODE2NTk1YzVmNjM5ZjA5NGMwY2E2ZDZlZTNj
Y2M3MDRkYTdjM2RlNS4uYzEzNGRlZmRhYWYxNDBiYTk3ZDNkZTQ1MDBjNDk3NGFlNGM1NTZmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xMTIsNiArMTEyLDggQEAgY2xhc3Mg
U2VydmljZVdvcmtlcjsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJv
bWlzZURlZmVycmVkOwogCitzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bjsKKwogY2xhc3MgSW50ZXJuYWxzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8SW50ZXJuYWxz
PiwgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcgogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCiAgICAgLCBwcml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyCkBAIC04
ODQsNiArODg2LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkUHJlZmV0Y2hMb2FkRXZlbnRM
aXN0ZW5lcihIVE1MTGlua0VsZW1lbnQmLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJik7CiAKKyNp
ZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIHZvaWQgc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbihjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJik7Cisj
ZW5kaWYKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbHMoRG9jdW1lbnQmKTsKICAg
ICBEb2N1bWVudCogY29udGV4dERvY3VtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKaW5kZXggNDY4ZWYyMzFkNzRlMTk4NjVjMDQ5NDNiMjdjMjY0YzYxNmVhZmI5
YS4uNGUzYTQxMmExNGM4MmFiNDJjMzIyNDU4OWQwMjY4OGNkNTZhZTA0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNzk0LDQgKzc5NCw2IEBAIGVudW0gQ29tcG9zaXRp
bmdQb2xpY3kgewogICAgIFRleHRJbmRpY2F0b3JJbmZvIHRleHRJbmRpY2F0b3JGb3JSYW5nZShS
YW5nZSByYW5nZSwgVGV4dEluZGljYXRvck9wdGlvbnMgb3B0aW9ucyk7CiAKICAgICB2b2lkIGFk
ZFByZWZldGNoTG9hZEV2ZW50TGlzdGVuZXIoSFRNTExpbmtFbGVtZW50IGxpbmssIEV2ZW50TGlz
dGVuZXI/IGNhbGxiYWNrKTsKKworICAgIFtDb25kaXRpb25hbD1XRUJfQVVUSE5dIHZvaWQgc2V0
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzQ1MGYyNTY3NmFjMTI3YzYzNDljZmVjNmU5YTBmYzU2MzRkZTdlNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsMjkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiB7CisgICAgZW51bSBj
bGFzcyBIaWRTdGFnZSA6IGJvb2wgeworICAgICAgICBJbmZvLAorICAgICAgICBSZXF1ZXN0Cisg
ICAgfTsKKworICAgIGVudW0gY2xhc3MgSGlkU3ViU3RhZ2UgOiBib29sIHsKKyAgICAgICAgSW5p
dCwKKyAgICAgICAgTXNnCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgSGlkRXJyb3IgOiB1aW50
OF90IHsKKyAgICAgICAgU3VjY2VzcywKKyAgICAgICAgRGF0YU5vdFNlbnQsCisgICAgICAgIEVt
cHR5UmVwb3J0LAorICAgICAgICBXcm9uZ0NoYW5uZWxJZCwKKyAgICAgICAgTWFsaWNpb3VzUGF5
bG9hZCwKKyAgICAgICAgVW5zdXBwb3J0ZWRPcHRpb25zLAorICAgICAgICBXcm9uZ05vbmNlCisg
ICAgfTsKKworICAgIGVudW0gY2xhc3MgTmZjRXJyb3IgOiB1aW50OF90IHsKKyAgICAgICAgU3Vj
Y2VzcywKKyAgICAgICAgTm9UYWdzLAorICAgICAgICBXcm9uZ1RhZ1R5cGUsCisgICAgICAgIE5v
Q29ubmVjdGlvbnMsCisgICAgICAgIE1hbGljaW91c1BheWxvYWQKKyAgICB9OworCisgICAgc3Ry
dWN0IExvY2FsQ29uZmlndXJhdGlvbiB7CisgICAgICAgIGJvb2wgYWNjZXB0QXV0aGVudGljYXRp
b24geyBmYWxzZSB9OworICAgICAgICBib29sIGFjY2VwdEF0dGVzdGF0aW9uIHsgZmFsc2UgfTsK
KyAgICAgICAgU3RyaW5nIHByaXZhdGVLZXlCYXNlNjQ7CisgICAgICAgIFN0cmluZyB1c2VyQ2Vy
dGlmaWNhdGVCYXNlNjQ7CisgICAgICAgIFN0cmluZyBpbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRl
QmFzZTY0OworICAgICAgICBTdHJpbmcgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDsKKworICAg
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CisgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxMb2NhbENv
bmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJik7CisgICAgfTsKKworICAgIHN0cnVjdCBIaWRD
b25maWd1cmF0aW9uIHsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gcGF5bG9hZEJhc2U2NDsKKyAg
ICAgICAgSGlkU3RhZ2Ugc3RhZ2UgeyBIaWRTdGFnZTo6SW5mbyB9OworICAgICAgICBIaWRTdWJT
dGFnZSBzdWJTdGFnZSB7IEhpZFN1YlN0YWdlOjpJbml0IH07CisgICAgICAgIEhpZEVycm9yIGVy
cm9yIHsgSGlkRXJyb3I6OlN1Y2Nlc3MgfTsKKyAgICAgICAgYm9vbCBpc1UyZiB7IGZhbHNlIH07
CisgICAgICAgIGJvb2wga2VlcEFsaXZlIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBmYXN0RGF0
YUFycml2YWwgeyBmYWxzZSB9OworICAgICAgICBib29sIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEg
eyBmYWxzZSB9OworICAgICAgICBib29sIGNhbkRvd25ncmFkZSB7IGZhbHNlIH07CisKKyAgICAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owor
ICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SGlkQ29uZmln
dXJhdGlvbj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB9OworCisgICAgc3RydWN0IE5mY0NvbmZp
Z3VyYXRpb24geworICAgICAgICBOZmNFcnJvciBlcnJvciB7IE5mY0Vycm9yOjpTdWNjZXNzIH07
CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBheWxvYWRCYXNlNjQ7CisgICAgICAgIGJvb2wgbXVs
dGlwbGVUYWdzIHsgZmFsc2UgfTsKKworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxOZmNDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwor
ICAgIH07CisKKyAgICBib29sIHNpbGVudEZhaWx1cmUgeyBmYWxzZSB9OworICAgIE9wdGlvbmFs
PExvY2FsQ29uZmlndXJhdGlvbj4gbG9jYWw7CisgICAgT3B0aW9uYWw8SGlkQ29uZmlndXJhdGlv
bj4gaGlkOworICAgIE9wdGlvbmFsPE5mY0NvbmZpZ3VyYXRpb24+IG5mYzsKKworICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+Cit2b2lkIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkxvY2FsQ29u
ZmlndXJhdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rl
ciA8PCBhY2NlcHRBdXRoZW50aWNhdGlvbiA8PCBhY2NlcHRBdHRlc3RhdGlvbiA8PCBwcml2YXRl
S2V5QmFzZTY0IDw8IHVzZXJDZXJ0aWZpY2F0ZUJhc2U2NCA8PCBpbnRlcm1lZGlhdGVDQUNlcnRp
ZmljYXRlQmFzZTY0IDw8IHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ7Cit9CisKK3RlbXBsYXRl
PGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uOjpMb2NhbENvbmZpZ3VyYXRpb24+IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b246OkxvY2FsQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAg
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TG9jYWxDb25maWd1cmF0aW9uIHJl
c3VsdDsKKworICAgIE9wdGlvbmFsPGJvb2w+IGFjY2VwdEF1dGhlbnRpY2F0aW9uOworICAgIGRl
Y29kZXIgPj4gYWNjZXB0QXV0aGVudGljYXRpb247CisgICAgaWYgKCFhY2NlcHRBdXRoZW50aWNh
dGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXN1bHQuYWNjZXB0QXV0
aGVudGljYXRpb24gPSAqYWNjZXB0QXV0aGVudGljYXRpb247CisKKyAgICBPcHRpb25hbDxib29s
PiBhY2NlcHRBdHRlc3RhdGlvbjsKKyAgICBkZWNvZGVyID4+IGFjY2VwdEF0dGVzdGF0aW9uOwor
ICAgIGlmICghYWNjZXB0QXR0ZXN0YXRpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmVzdWx0LmFjY2VwdEF0dGVzdGF0aW9uID0gKmFjY2VwdEF0dGVzdGF0aW9uOworCisg
ICAgT3B0aW9uYWw8U3RyaW5nPiBwcml2YXRlS2V5QmFzZTY0OworICAgIGRlY29kZXIgPj4gcHJp
dmF0ZUtleUJhc2U2NDsKKyAgICBpZiAoIXByaXZhdGVLZXlCYXNlNjQpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmVzdWx0LnByaXZhdGVLZXlCYXNlNjQgPSBXVEZNb3ZlKCpw
cml2YXRlS2V5QmFzZTY0KTsKKworICAgIE9wdGlvbmFsPFN0cmluZz4gdXNlckNlcnRpZmljYXRl
QmFzZTY0OworICAgIGRlY29kZXIgPj4gdXNlckNlcnRpZmljYXRlQmFzZTY0OworICAgIGlmICgh
dXNlckNlcnRpZmljYXRlQmFzZTY0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJlc3VsdC51c2VyQ2VydGlmaWNhdGVCYXNlNjQgPSBXVEZNb3ZlKCp1c2VyQ2VydGlmaWNhdGVC
YXNlNjQpOworCisgICAgT3B0aW9uYWw8U3RyaW5nPiBpbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRl
QmFzZTY0OworICAgIGRlY29kZXIgPj4gaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NDsK
KyAgICBpZiAoIWludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmVzdWx0LmludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNl
NjQgPSBXVEZNb3ZlKCppbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0KTsKKworICAgIE9w
dGlvbmFsPFN0cmluZz4gcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDsKKyAgICBkZWNvZGVyID4+
IHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ7CisgICAgaWYgKCFwcmVmZXJyZWRVc2VyaGFuZGxl
QmFzZTY0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJlc3VsdC5wcmVmZXJy
ZWRVc2VyaGFuZGxlQmFzZTY0ID0gV1RGTW92ZSgqcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NCk7
CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9p
ZCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRDb25maWd1cmF0aW9uOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHBheWxvYWRC
YXNlNjQgPDwgc3RhZ2UgPDwgc3ViU3RhZ2UgPDwgZXJyb3IgPDwgaXNVMmYgPDwga2VlcEFsaXZl
IDw8IGZhc3REYXRhQXJyaXZhbCA8PCBjb250aW51ZUFmdGVyRXJyb3JEYXRhIDw8IGNhbkRvd25n
cmFkZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENvbmZpZ3VyYXRpb24+IE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENvbmZpZ3VyYXRpb246OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQoreworICAgIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENv
bmZpZ3VyYXRpb24gcmVzdWx0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBheWxv
YWRCYXNlNjQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGVFbnVtKHJlc3VsdC5zdGFnZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LnN1YlN0YWdlKSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXN1bHQu
ZXJyb3IpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LmlzVTJmKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5rZWVwQWxpdmUpKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmZhc3REYXRhQXJyaXZh
bCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQuY29udGludWVBZnRlckVycm9yRGF0YSkpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2FuRG93bmdyYWRlKSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uOjpOZmNDb25maWd1cmF0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sK
KyAgICBlbmNvZGVyIDw8IGVycm9yIDw8IHBheWxvYWRCYXNlNjQgPDwgbXVsdGlwbGVUYWdzOwor
fQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29uZmlndXJhdGlvbj4gTW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbjo6TmZjQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
Cit7CisgICAgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29uZmlndXJh
dGlvbiByZXN1bHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LmVycm9yKSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5wYXlsb2FkQmFzZTY0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tdWx0aXBsZVRhZ3MpKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+Cit2b2lkIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgc2lsZW50RmFpbHVyZSA8
PCBsb2NhbCA8PCBoaWQgPDwgbmZjOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0
aW9uYWw8TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbj4gTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiByZXN1bHQ7CisKKyAgICBPcHRpb25hbDxi
b29sPiBzaWxlbnRGYWlsdXJlOworICAgIGRlY29kZXIgPj4gc2lsZW50RmFpbHVyZTsKKyAgICBp
ZiAoIXNpbGVudEZhaWx1cmUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVz
dWx0LnNpbGVudEZhaWx1cmUgPSAqc2lsZW50RmFpbHVyZTsKKworICAgIE9wdGlvbmFsPE9wdGlv
bmFsPExvY2FsQ29uZmlndXJhdGlvbj4+IGxvY2FsOworICAgIGRlY29kZXIgPj4gbG9jYWw7Cisg
ICAgaWYgKCFsb2NhbCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXN1bHQu
bG9jYWwgPSBXVEZNb3ZlKCpsb2NhbCk7CisKKyAgICBPcHRpb25hbDxPcHRpb25hbDxIaWRDb25m
aWd1cmF0aW9uPj4gaGlkOworICAgIGRlY29kZXIgPj4gaGlkOworICAgIGlmICghaGlkKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJlc3VsdC5oaWQgPSBXVEZNb3ZlKCpoaWQp
OworCisgICAgT3B0aW9uYWw8T3B0aW9uYWw8TmZjQ29uZmlndXJhdGlvbj4+IG5mYzsKKyAgICBk
ZWNvZGVyID4+IG5mYzsKKyAgICBpZiAoIW5mYykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXN1bHQubmZjID0gV1RGTW92ZSgqbmZjKTsKKworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbjo6SGlkU3RhZ2U+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAor
ICAgICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRT
dGFnZSwKKyAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bjo6SGlkU3RhZ2U6OkluZm8sCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb246OkhpZFN0YWdlOjpSZXF1ZXN0CisgICAgPjsKK307CisKK3RlbXBsYXRl
PD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbjo6SGlkU3ViU3RhZ2U+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAor
ICAgICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRT
dWJTdGFnZSwKKyAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbjo6SGlkU3ViU3RhZ2U6OkluaXQsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZFN1YlN0YWdlOjpNc2cKKyAgICA+OworfTsKKwordGVt
cGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uOjpIaWRFcnJvcj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8
CisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Okhp
ZEVycm9yLAorICAgICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uOjpIaWRFcnJvcjo6U3VjY2VzcywKKyAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkRXJyb3I6OkRhdGFOb3RTZW50LAorICAgICAgICBXZWJD
b3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRFcnJvcjo6RW1wdHlS
ZXBvcnQsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b246OkhpZEVycm9yOjpXcm9uZ0NoYW5uZWxJZCwKKyAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkRXJyb3I6Ok1hbGljaW91c1BheWxvYWQsCisg
ICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZEVy
cm9yOjpVbnN1cHBvcnRlZE9wdGlvbnMsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZEVycm9yOjpXcm9uZ05vbmNlCisgICAgPjsKK307CisK
K3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbjo6TmZjRXJyb3I+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFs
dWVzPAorICAgICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
OjpOZmNFcnJvciwKKyAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbjo6TmZjRXJyb3I6OlN1Y2Nlc3MsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mY0Vycm9yOjpOb1RhZ3MsCisgICAgICAgIFdlYkNv
cmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mY0Vycm9yOjpXcm9uZ1Rh
Z1R5cGUsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b246Ok5mY0Vycm9yOjpOb0Nvbm5lY3Rpb25zLAorICAgICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmNFcnJvcjo6TWFsaWNpb3VzUGF5bG9hZAorICAg
ID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVU
SE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZGViODYxY2M5ZTZjNGM2
MjdhMDczMmQ3YWU2YTc0NTY3OWE2ZmRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmlkbApAQCAtMCww
ICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVUSE4sCitd
IGVudW0gTW9ja0hpZFN0YWdlIHsKKyAgICAiaW5mbyIsCisgICAgInJlcXVlc3QiCit9OworCitb
CisgICAgQ29uZGl0aW9uYWw9V0VCX0FVVEhOLAorXSBlbnVtIE1vY2tIaWRTdWJTdGFnZSB7Cisg
ICAgImluaXQiLAorICAgICJtc2ciCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVVEhO
LAorXSBlbnVtIE1vY2tIaWRFcnJvciB7CisgICAgInN1Y2Nlc3MiLAorICAgICJkYXRhLW5vdC1z
ZW50IiwKKyAgICAiZW1wdHktcmVwb3J0IiwKKyAgICAid3JvbmctY2hhbm5lbC1pZCIsCisgICAg
Im1hbGljaW91cy1wYXlsb2FkIiwKKyAgICAidW5zdXBwb3J0ZWQtb3B0aW9ucyIsCisgICAgIndy
b25nLW5vbmNlIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVVRITiwKK10gZW51bSBN
b2NrTmZjRXJyb3IgeworICAgICJzdWNjZXNzIiwKKyAgICAibm8tdGFncyIsCisgICAgIndyb25n
LXRhZy10eXBlIiwKKyAgICAibm8tY29ubmVjdGlvbnMiLAorICAgICJtYWxpY2lvdXMtcGF5bG9h
ZCIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVUSE4sCitdIGRpY3Rpb25hcnkgTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiB7CisgICAgYm9vbGVhbiBzaWxlbnRGYWls
dXJlID0gZmFsc2U7CisgICAgTW9ja0xvY2FsQ29uZmlndXJhdGlvbiBsb2NhbDsKKyAgICBNb2Nr
SGlkQ29uZmlndXJhdGlvbiBoaWQ7CisgICAgTW9ja05mY0NvbmZpZ3VyYXRpb24gbmZjOworfTsK
KworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVVRITiwKK10gZGljdGlvbmFyeSBNb2NrTG9jYWxD
b25maWd1cmF0aW9uIHsKKyAgICBib29sZWFuIGFjY2VwdEF1dGhlbnRpY2F0aW9uID0gZmFsc2U7
CisgICAgYm9vbGVhbiBhY2NlcHRBdHRlc3RhdGlvbiA9IGZhbHNlOworICAgIERPTVN0cmluZyBw
cml2YXRlS2V5QmFzZTY0OworICAgIERPTVN0cmluZyB1c2VyQ2VydGlmaWNhdGVCYXNlNjQ7Cisg
ICAgRE9NU3RyaW5nIGludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQ7CisgICAgRE9NU3Ry
aW5nIHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ7Cit9OworCitbCisgICAgQ29uZGl0aW9uYWw9
V0VCX0FVVEhOLAorXSBkaWN0aW9uYXJ5IE1vY2tIaWRDb25maWd1cmF0aW9uIHsKKyAgICBzZXF1
ZW5jZTxET01TdHJpbmc+IHBheWxvYWRCYXNlNjQ7CisgICAgTW9ja0hpZFN0YWdlIHN0YWdlID0g
ImluZm8iOworICAgIE1vY2tIaWRTdWJTdGFnZSBzdWJTdGFnZSA9ICJpbml0IjsKKyAgICBNb2Nr
SGlkRXJyb3IgZXJyb3IgPSAic3VjY2VzcyI7CisgICAgYm9vbGVhbiBpc1UyZiA9IGZhbHNlOwor
ICAgIGJvb2xlYW4ga2VlcEFsaXZlID0gZmFsc2U7CisgICAgYm9vbGVhbiBmYXN0RGF0YUFycml2
YWwgPSBmYWxzZTsKKyAgICBib29sZWFuIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEgPSBmYWxzZTsK
KyAgICBib29sZWFuIGNhbkRvd25ncmFkZSA9IGZhbHNlOworfTsKKworWworICAgIENvbmRpdGlv
bmFsPVdFQl9BVVRITiwKK10gZGljdGlvbmFyeSBNb2NrTmZjQ29uZmlndXJhdGlvbiB7CisgICAg
TW9ja05mY0Vycm9yIGVycm9yID0gInN1Y2Nlc3MiOworICAgIHNlcXVlbmNlPERPTVN0cmluZz4g
cGF5bG9hZEJhc2U2NDsKKyAgICBib29sZWFuIG11bHRpcGxlVGFncyA9IGZhbHNlOworfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9y
ZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuY3BwCmluZGV4IDlkN2ZhN2QzN2M2NmExZjJkOWVjNDhjOTdlNTFiYzZmZDcwYTc3YTQu
Ljc0NGZjYmE5ZWUyYTE5NjE3NWExM2E1MTI3OTQ2ZGYxNDNlMDRlNzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNw
cApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJB
UElIVFRQQ29va2llU3RvcmUuaCIKLSNpbmNsdWRlICJNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCiAj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tEaWN0aW9uYXJ5LmgiCkBAIC02NTgs
MTA4ICs2NTcsNiBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQWxsRGV2aWNlT3JpZW50
YXRpb25QZXJtaXNzaW9ucyhXS1dlYnNpdGVEYXRhU3RvcmVSZQogI2VuZGlmCiB9CiAKLXZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS0RpY3Rpb25hcnlSZWYgY29uZmln
dXJhdGlvblJlZikKLXsKLSNpZiBFTkFCTEUoV0VCX0FVVEhOKQotICAgIFdlYktpdDo6TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwotCi0gICAgaWYgKGF1
dG8gc2lsZW50RmFpbHVyZVJlZiA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9u
YXJ5R2V0SXRlbUZvcktleShjb25maWd1cmF0aW9uUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJTaWxlbnRGYWlsdXJlIikpLmdldCgpKSkpCi0gICAgICAgIGNvbmZp
Z3VyYXRpb24uc2lsZW50RmFpbHVyZSA9IFdLQm9vbGVhbkdldFZhbHVlKHNpbGVudEZhaWx1cmVS
ZWYpOwotCi0gICAgaWYgKGF1dG8gbG9jYWxSZWYgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlS
ZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoY29uZmlndXJhdGlvblJlZiwgYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTG9jYWwiKSkuZ2V0KCkpKSkgewotICAgICAg
ICBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkxvY2FsIGxvY2Fs
OwotICAgICAgICBsb2NhbC5hY2NlcHRBdXRoZW50aWNhdGlvbiA9IFdLQm9vbGVhbkdldFZhbHVl
KHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShsb2Nh
bFJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQWNjZXB0QXV0aGVu
dGljYXRpb24iKSkuZ2V0KCkpKSk7Ci0gICAgICAgIGxvY2FsLmFjY2VwdEF0dGVzdGF0aW9uID0g
V0tCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlH
ZXRJdGVtRm9yS2V5KGxvY2FsUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJBY2NlcHRBdHRlc3RhdGlvbiIpKS5nZXQoKSkpKTsKLSAgICAgICAgaWYgKGxvY2FsLmFj
Y2VwdEF0dGVzdGF0aW9uKSB7Ci0gICAgICAgICAgICBsb2NhbC5wcml2YXRlS2V5QmFzZTY0ID0g
V2ViS2l0Ojp0b0ltcGwoc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0
ZW1Gb3JLZXkobG9jYWxSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IlByaXZhdGVLZXlCYXNlNjQiKSkuZ2V0KCkpKSktPnN0cmluZygpOwotICAgICAgICAgICAgbG9j
YWwudXNlckNlcnRpZmljYXRlQmFzZTY0ID0gV2ViS2l0Ojp0b0ltcGwoc3RhdGljX2Nhc3Q8V0tT
dHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobG9jYWxSZWYsIGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlVzZXJDZXJ0aWZpY2F0ZUJhc2U2NCIpKS5nZXQo
KSkpKS0+c3RyaW5nKCk7Ci0gICAgICAgICAgICBsb2NhbC5pbnRlcm1lZGlhdGVDQUNlcnRpZmlj
YXRlQmFzZTY0ID0gV2ViS2l0Ojp0b0ltcGwoc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGlj
dGlvbmFyeUdldEl0ZW1Gb3JLZXkobG9jYWxSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIkludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQiKSkuZ2V0KCkpKSkt
PnN0cmluZygpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChhdXRvIHByZWZlcnJlZFVzZXJoYW5k
bGVCYXNlNjRSZWYgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRl
bUZvcktleShsb2NhbFJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
UHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NCIpKS5nZXQoKSkpKQotICAgICAgICAgICAgbG9jYWwu
cHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NCA9IFdlYktpdDo6dG9JbXBsKHByZWZlcnJlZFVzZXJo
YW5kbGVCYXNlNjRSZWYpLT5zdHJpbmcoKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5sb2NhbCA9
IFdURk1vdmUobG9jYWwpOwotICAgIH0KLQotICAgIGlmIChhdXRvIGhpZFJlZiA9IHN0YXRpY19j
YXN0PFdLRGljdGlvbmFyeVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShjb25maWd1cmF0
aW9uUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIaWQiKSkuZ2V0
KCkpKSkgewotICAgICAgICBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b246OkhpZCBoaWQ7Ci0KLSAgICAgICAgYXV0byBzdGFnZSA9IFdlYktpdDo6dG9JbXBsKHN0YXRp
Y19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGhpZFJlZiwgYWRv
cHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3RhZ2UiKSkuZ2V0KCkpKSktPnN0
cmluZygpOwotICAgICAgICBpZiAoc3RhZ2UgPT0gImluZm8iKQotICAgICAgICAgICAgaGlkLnN0
YWdlID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OlN0
YWdlOjpJbmZvOwotICAgICAgICBlbHNlIGlmIChzdGFnZSA9PSAicmVxdWVzdCIpCi0gICAgICAg
ICAgICBoaWQuc3RhZ2UgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b246OkhpZDo6U3RhZ2U6OlJlcXVlc3Q7Ci0KLSAgICAgICAgYXV0byBzdWJTdGFnZSA9IFdlYktp
dDo6dG9JbXBsKHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9y
S2V5KGhpZFJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3ViU3Rh
Z2UiKSkuZ2V0KCkpKSktPnN0cmluZygpOwotICAgICAgICBpZiAoc3ViU3RhZ2UgPT0gImluaXQi
KQotICAgICAgICAgICAgaGlkLnN1YlN0YWdlID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uOjpIaWQ6OlN1YlN0YWdlOjpJbml0OwotICAgICAgICBlbHNlIGlmIChz
dWJTdGFnZSA9PSAibXNnIikKLSAgICAgICAgICAgIGhpZC5zdWJTdGFnZSA9IFdlYktpdDo6TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpTdWJTdGFnZTo6TXNnOwotCi0g
ICAgICAgIGF1dG8gZXJyb3IgPSBXZWJLaXQ6OnRvSW1wbChzdGF0aWNfY2FzdDxXS1N0cmluZ1Jl
Zj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShoaWRSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIkVycm9yIikpLmdldCgpKSkpLT5zdHJpbmcoKTsKLSAgICAgICAg
aWYgKGVycm9yID09ICJzdWNjZXNzIikKLSAgICAgICAgICAgIGhpZC5lcnJvciA9IFdlYktpdDo6
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpFcnJvcjo6U3VjY2VzczsK
LSAgICAgICAgZWxzZSBpZiAoZXJyb3IgPT0gImRhdGEtbm90LXNlbnQiKQotICAgICAgICAgICAg
aGlkLmVycm9yID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpI
aWQ6OkVycm9yOjpEYXRhTm90U2VudDsKLSAgICAgICAgZWxzZSBpZiAoZXJyb3IgPT0gImVtcHR5
LXJlcG9ydCIpCi0gICAgICAgICAgICBoaWQuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZDo6RXJyb3I6OkVtcHR5UmVwb3J0OwotICAgICAgICBl
bHNlIGlmIChlcnJvciA9PSAid3JvbmctY2hhbm5lbC1pZCIpCi0gICAgICAgICAgICBoaWQuZXJy
b3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZDo6RXJy
b3I6Oldyb25nQ2hhbm5lbElkOwotICAgICAgICBlbHNlIGlmIChlcnJvciA9PSAibWFsaWNpb3Vz
LXBheWxvYWQiKQotICAgICAgICAgICAgaGlkLmVycm9yID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OkVycm9yOjpNYWxpY2lvdXNQYXlsb2FkOwotICAg
ICAgICBlbHNlIGlmIChlcnJvciA9PSAidW5zdXBwb3J0ZWQtb3B0aW9ucyIpCi0gICAgICAgICAg
ICBoaWQuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246
OkhpZDo6RXJyb3I6OlVuc3VwcG9ydGVkT3B0aW9uczsKLSAgICAgICAgZWxzZSBpZiAoZXJyb3Ig
PT0gIndyb25nLW5vbmNlIikKLSAgICAgICAgICAgIGhpZC5lcnJvciA9IFdlYktpdDo6TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpFcnJvcjo6V3JvbmdOb25jZTsKLQot
ICAgICAgICBpZiAoYXV0byBwYXlsb2FkQmFzZTY0ID0gc3RhdGljX2Nhc3Q8V0tBcnJheVJlZj4o
V0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShoaWRSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIlBheWxvYWRCYXNlNjQiKSkuZ2V0KCkpKSkKLSAgICAgICAgICAgIGhp
ZC5wYXlsb2FkQmFzZTY0ID0gV2ViS2l0Ojp0b0ltcGwocGF5bG9hZEJhc2U2NCktPnRvU3RyaW5n
VmVjdG9yKCk7Ci0KLSAgICAgICAgaWYgKGF1dG8gaXNVMmYgPSBzdGF0aWNfY2FzdDxXS0Jvb2xl
YW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaGlkUmVmLCBhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJJc1UyZiIpKS5nZXQoKSkpKQotICAgICAgICAgICAgaGlk
LmlzVTJmID0gV0tCb29sZWFuR2V0VmFsdWUoaXNVMmYpOwotCi0gICAgICAgIGlmIChhdXRvIGtl
ZXBBbGl2ZSA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZv
cktleShoaWRSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIktlZXBB
bGl2ZSIpKS5nZXQoKSkpKQotICAgICAgICAgICAgaGlkLmtlZXBBbGl2ZSA9IFdLQm9vbGVhbkdl
dFZhbHVlKGtlZXBBbGl2ZSk7Ci0KLSAgICAgICAgaWYgKGF1dG8gZmFzdERhdGFBcnJpdmFsID0g
c3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGhpZFJl
ZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRmFzdERhdGFBcnJpdmFs
IikpLmdldCgpKSkpCi0gICAgICAgICAgICBoaWQuZmFzdERhdGFBcnJpdmFsID0gV0tCb29sZWFu
R2V0VmFsdWUoZmFzdERhdGFBcnJpdmFsKTsKLQotICAgICAgICBpZiAoYXV0byBjb250aW51ZUFm
dGVyRXJyb3JEYXRhID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJ
dGVtRm9yS2V5KGhpZFJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
Q29udGludWVBZnRlckVycm9yRGF0YSIpKS5nZXQoKSkpKQotICAgICAgICAgICAgaGlkLmNvbnRp
bnVlQWZ0ZXJFcnJvckRhdGEgPSBXS0Jvb2xlYW5HZXRWYWx1ZShjb250aW51ZUFmdGVyRXJyb3JE
YXRhKTsKLQotICAgICAgICBpZiAoYXV0byBjYW5Eb3duZ3JhZGUgPSBzdGF0aWNfY2FzdDxXS0Jv
b2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaGlkUmVmLCBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYW5Eb3duZ3JhZGUiKSkuZ2V0KCkpKSkKLSAgICAg
ICAgICAgIGhpZC5jYW5Eb3duZ3JhZGUgPSBXS0Jvb2xlYW5HZXRWYWx1ZShjYW5Eb3duZ3JhZGUp
OwotCi0gICAgICAgIGNvbmZpZ3VyYXRpb24uaGlkID0gV1RGTW92ZShoaWQpOwotICAgIH0KLQot
ICAgIGlmIChhdXRvIG5mY1JlZiA9IHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJlZj4oV0tEaWN0
aW9uYXJ5R2V0SXRlbUZvcktleShjb25maWd1cmF0aW9uUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJOZmMiKSkuZ2V0KCkpKSkgewotICAgICAgICBXZWJLaXQ6Ok1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mYyBuZmM7Ci0KLSAgICAgICAgYXV0
byBlcnJvciA9IFdlYktpdDo6dG9JbXBsKHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rp
b25hcnlHZXRJdGVtRm9yS2V5KG5mY1JlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiRXJyb3IiKSkuZ2V0KCkpKSktPnN0cmluZygpOwotICAgICAgICBpZiAoZXJyb3Ig
PT0gInN1Y2Nlc3MiKQotICAgICAgICAgICAgbmZjLmVycm9yID0gV2ViS2l0OjpNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmM6OkVycm9yOjpTdWNjZXNzOwotICAgICAgICBl
bHNlIGlmIChlcnJvciA9PSAibm8tdGFncyIpCi0gICAgICAgICAgICBuZmMuZXJyb3IgPSBXZWJL
aXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mYzo6RXJyb3I6Ok5vVGFn
czsKLSAgICAgICAgZWxzZSBpZiAoZXJyb3IgPT0gIndyb25nLXRhZy10eXBlIikKLSAgICAgICAg
ICAgIG5mYy5lcnJvciA9IFdlYktpdDo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bjo6TmZjOjpFcnJvcjo6V3JvbmdUYWdUeXBlOwotICAgICAgICBlbHNlIGlmIChlcnJvciA9PSAi
bm8tY29ubmVjdGlvbnMiKQotICAgICAgICAgICAgbmZjLmVycm9yID0gV2ViS2l0OjpNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmM6OkVycm9yOjpOb0Nvbm5lY3Rpb25zOwot
ICAgICAgICBlbHNlIGlmIChlcnJvciA9PSAibWFsaWNpb3VzLXBheWxvYWQiKQotICAgICAgICAg
ICAgbmZjLmVycm9yID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
OjpOZmM6OkVycm9yOjpNYWxpY2lvdXNQYXlsb2FkOwotCi0gICAgICAgIGlmIChhdXRvIHBheWxv
YWRCYXNlNjQgPSBzdGF0aWNfY2FzdDxXS0FycmF5UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9y
S2V5KG5mY1JlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUGF5bG9h
ZEJhc2U2NCIpKS5nZXQoKSkpKQotICAgICAgICAgICAgbmZjLnBheWxvYWRCYXNlNjQgPSBXZWJL
aXQ6OnRvSW1wbChwYXlsb2FkQmFzZTY0KS0+dG9TdHJpbmdWZWN0b3IoKTsKLQotICAgICAgICBp
ZiAoYXV0byBtdWx0aXBsZVRhZ3MgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdLRGljdGlv
bmFyeUdldEl0ZW1Gb3JLZXkobmZjUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJNdWx0aXBsZVRhZ3MiKSkuZ2V0KCkpKSkKLSAgICAgICAgICAgIG5mYy5tdWx0aXBs
ZVRhZ3MgPSBXS0Jvb2xlYW5HZXRWYWx1ZShtdWx0aXBsZVRhZ3MpOwotCi0gICAgICAgIGNvbmZp
Z3VyYXRpb24ubmZjID0gV1RGTW92ZShuZmMpOwotICAgIH0KLQotICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oV1RG
TW92ZShjb25maWd1cmF0aW9uKSk7Ci0jZW5kaWYKLX0KLQogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVDbGVhckFkQ2xpY2tBdHRyaWJ1dGlvbnNUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURh
dGFTdG9yZUNsZWFyQWRDbGlja0F0dHJpYnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxG
dW5jdGlvbiBjYWxsYmFjaykKIHsKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5
cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpBZENsaWNrQXR0cmlidXRp
b25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuaAppbmRleCBjMWY5OTBiMzVhN2IyNjYyNDE1ZmU2ZjE4ZTkwMjgzOTM4MDg4
MmVlLi5lZjQzMzk4NjA0NGFhMTE0NTE1N2Y5YzdiZGJmYWRiNGJkYWZkZjNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
aApAQCAtMTQzLDggKzE0Myw2IEBAIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoV0tXZWJzaXRlCiAKIFdLX0VYUE9S
VCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFBlck9yaWdpblN0b3JhZ2VRdW90YShXS1dlYnNp
dGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB1aW50NjRfdCBxdW90YSkgV0tfQ19BUElfREVQ
UkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25T
ZXRQZXJPcmlnaW5TdG9yYWdlUXVvdGEpOwogCi1XS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLRGljdGlvbmFyeVJlZiBjb25maWd1cmF0aW9uKTsKLQog
V0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBbGxEZXZpY2VPcmllbnRhdGlv
blBlcm1pc3Npb25zKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYpOwogCiB0eXBl
ZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVDbGVhckFkQ2xpY2tBdHRyaWJ1dGlvbnNUaHJv
dWdoV2Vic2l0ZURhdGFSZW1vdmFsRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5jcHAKaW5kZXgg
N2EwZjhmOWIxMWQzNDJlMWQ0NGRhZWMxNDliMTRmY2EwYTEyZDM0OC4uZTgxMDM5YjZkY2I0MGM1
NjI1NWQ3N2Y0ZGVmZGU5NmYxZTRkNGVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0b3JUcmFuc3BvcnRTZXJ2aWNlLmNwcApAQCAtNTMsNyArNTMsNyBAQCBVbmlxdWVSZWY8QXV0
aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U+IEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNl
OjpjcmVhdGUoVwogICAgIH0KIH0KIAotVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRT
ZXJ2aWNlPiBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZTo6Y3JlYXRlTW9jayhXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0IHRyYW5zcG9ydCwgT2JzZXJ2ZXImIG9ic2VydmVyLCBj
b25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQor
VW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPiBBdXRoZW50aWNhdG9yVHJh
bnNwb3J0U2VydmljZTo6Y3JlYXRlTW9jayhXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0
IHRyYW5zcG9ydCwgT2JzZXJ2ZXImIG9ic2VydmVyLCBjb25zdCBXZWJDb3JlOjpNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogewogICAgIHN3aXRjaCAo
dHJhbnNwb3J0KSB7CiAgICAgY2FzZSBXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJ
bnRlcm5hbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5o
CmluZGV4IDZjZTQ2MTg3OGRiYTJhZTYwZTc1NjYzZTk3YjFiZGZiNzI0ZDRmZGUuLjA5MDg0YWI4
YTdjNzkwOTA1MTdmMmU3MmViN2E1NDZkOWFkMjZlYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2
aWNlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0
aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2UuaApAQCAtMzEsMTIgKzMxLDE0IEBACiAjaW5jbHVk
ZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK3N0cnVjdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOwor
fQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQXV0aGVudGljYXRvcjsKIAotc3RydWN0
IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb247Ci0KIGNsYXNzIEF1dGhlbnRpY2F0
b3JUcmFuc3BvcnRTZXJ2aWNlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPEF1dGhlbnRpY2F0b3JU
cmFuc3BvcnRTZXJ2aWNlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2UpOwpAQCAtNDks
NyArNTEsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHN0YXRpYyBVbmlxdWVSZWY8QXV0aGVu
dGljYXRvclRyYW5zcG9ydFNlcnZpY2U+IGNyZWF0ZShXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJh
bnNwb3J0LCBPYnNlcnZlciYpOwotICAgIHN0YXRpYyBVbmlxdWVSZWY8QXV0aGVudGljYXRvclRy
YW5zcG9ydFNlcnZpY2U+IGNyZWF0ZU1vY2soV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9y
dCwgT2JzZXJ2ZXImLCBjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJik7
CisgICAgc3RhdGljIFVuaXF1ZVJlZjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZT4gY3Jl
YXRlTW9jayhXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0LCBPYnNlcnZlciYsIGNvbnN0
IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mKTsKIAogICAgIHZp
cnR1YWwgfkF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlKCkgPSBkZWZhdWx0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01v
Y2tBdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Nb2NrL01vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggMDg0
YzliZTIzZmIwYWJkOTU2M2RmOTFmYzY2NmUxMWYxMzUxMDZjNi4uZjhmZjJkNjc2NGJkN2E1ZDE0
YWJjYjE2MDM1MmRjZDFkMTBhNmZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0F1
dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyOjpNb2NrQXV0aGVudGljYXRvck1hbmFn
ZXIoTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCitN
b2NrQXV0aGVudGljYXRvck1hbmFnZXI6Ok1vY2tBdXRoZW50aWNhdG9yTWFuYWdlcihXZWJDb3Jl
OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKICAg
ICA6IG1fdGVzdENvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkKIHsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2sv
TW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Nb2NrL01vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oCmluZGV4IDg1ZDgw
MDk5NTY2NGVhNWVjZDkyYTRlYzA0NTc3ZGFhYWVhNTA5OWEuLmE4ZWI4MGE1N2E3N2ZiYjE2ZGQx
NjA4MmE5MjgzZThhOTk1ZWQ5NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrQXV0aGVu
dGljYXRvck1hbmFnZXIuaApAQCAtMjgsMjIgKzI4LDIyIEBACiAjaWYgRU5BQkxFKFdFQl9BVVRI
TikKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiTW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyIGZpbmFsIDogcHVibGljIEF1dGhlbnRpY2F0
b3JNYW5hZ2VyIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBNb2NrQXV0aGVudGljYXRvck1hbmFn
ZXIoTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYmKTsKKyAgICBleHBsaWNpdCBN
b2NrQXV0aGVudGljYXRvck1hbmFnZXIoV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbiYmKTsKIAogICAgIGJvb2wgaXNNb2NrKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQotICAgIHZvaWQgc2V0VGVzdENvbmZpZ3VyYXRpb24oTW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pIHsgbV90ZXN0Q29uZmlndXJhdGlvbiA9
IFdURk1vdmUoY29uZmlndXJhdGlvbik7IH0KKyAgICB2b2lkIHNldFRlc3RDb25maWd1cmF0aW9u
KFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0
aW9uKSB7IG1fdGVzdENvbmZpZ3VyYXRpb24gPSBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pOyB9CiAK
IHByaXZhdGU6CiAgICAgVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPiBj
cmVhdGVTZXJ2aWNlKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQsIEF1dGhlbnRpY2F0
b3JUcmFuc3BvcnRTZXJ2aWNlOjpPYnNlcnZlciYpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgcmVz
cG9uZFJlY2VpdmVkSW50ZXJuYWwoUmVzcG9uZCYmKSBmaW5hbDsKIAotICAgIE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gbV90ZXN0Q29uZmlndXJhdGlvbjsKKyAgICBXZWJDb3Jl
OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uIG1fdGVzdENvbmZpZ3VyYXRpb247
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29u
bmVjdGlvbi5jcHAKaW5kZXggOGUwZmU1MjZkMjA2ZWRjMGJjMzdlODZlNGFhZjRlZDVkOTdhNGVm
My4uNjU4NDY2ZGU3YjEzMWViZTU0ZTY3MWY2NzA0M2M3ZmZlNmM1MzY4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRl
IDx3dGYvdGV4dC9CYXNlNjQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBNb2NrSGlk
ID0gTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOwordXNpbmcgTW9jayA9
IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb247CiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBjYm9yOwogdXNpbmcgbmFtZXNwYWNlIGZp
ZG87CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OnNlbmQoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSwgRGF0YVNlbnRDYWxsYmFjayYmIGNhbGxiYWNrCiAgICAgICAgICAg
ICB3ZWFrVGhpcy0+YXNzZW1ibGVSZXF1ZXN0KFdURk1vdmUoZGF0YSkpOwogCiAgICAgICAgICAg
ICBhdXRvIHNlbnQgPSBEYXRhU2VudDo6WWVzOwotICAgICAgICAgICAgaWYgKHdlYWtUaGlzLT5z
dGFnZXNNYXRjaCgpICYmIHdlYWtUaGlzLT5tX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBN
b2NrSGlkOjpFcnJvcjo6RGF0YU5vdFNlbnQpCisgICAgICAgICAgICBpZiAod2Vha1RoaXMtPnN0
YWdlc01hdGNoKCkgJiYgd2Vha1RoaXMtPm1fY29uZmlndXJhdGlvbi5oaWQtPmVycm9yID09IE1v
Y2s6OkhpZEVycm9yOjpEYXRhTm90U2VudCkKICAgICAgICAgICAgICAgICBzZW50ID0gRGF0YVNl
bnQ6Ok5vOwogICAgICAgICAgICAgY2FsbGJhY2soc2VudCk7CiAgICAgICAgIH0pOwpAQCAtOTIs
NyArOTIsNyBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpzZW5kKFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEsIERhdGFTZW50Q2FsbGJhY2smJiBjYWxsYmFjawogCiB2b2lkIE1vY2tIaWRDb25uZWN0
aW9uOjpyZWdpc3RlckRhdGFSZWNlaXZlZENhbGxiYWNrSW50ZXJuYWwoKQogewotICAgIGlmIChz
dGFnZXNNYXRjaCgpICYmIG1fY29uZmlndXJhdGlvbi5oaWQtPmVycm9yID09IE1vY2tIaWQ6OkVy
cm9yOjpFbXB0eVJlcG9ydCkgeworICAgIGlmIChzdGFnZXNNYXRjaCgpICYmIG1fY29uZmlndXJh
dGlvbi5oaWQtPmVycm9yID09IE1vY2s6OkhpZEVycm9yOjpFbXB0eVJlcG9ydCkgewogICAgICAg
ICByZWNlaXZlUmVwb3J0KHsgfSk7CiAgICAgICAgIHNob3VsZENvbnRpbnVlRmVlZFJlcG9ydHMo
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTIzLDE0ICsxMjMsMTQgQEAgdm9pZCBNb2NrSGlkQ29u
bmVjdGlvbjo6cGFyc2VSZXF1ZXN0KCkKICAgICAvLyBTZXQgc3RhZ2VzLgogICAgIGlmIChtX3Jl
cXVlc3RNZXNzYWdlLT5jbWQoKSA9PSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0luaXQpIHsKICAg
ICAgICAgYXV0byBwcmV2aW91c1N1YlN0YWdlID0gbV9zdWJTdGFnZTsKLSAgICAgICAgbV9zdWJT
dGFnZSA9IE1vY2tIaWQ6OlN1YlN0YWdlOjpJbml0OwotICAgICAgICBpZiAocHJldmlvdXNTdWJT
dGFnZSA9PSBNb2NrSGlkOjpTdWJTdGFnZTo6TXNnKQotICAgICAgICAgICAgbV9zdGFnZSA9IE1v
Y2tIaWQ6OlN0YWdlOjpSZXF1ZXN0OworICAgICAgICBtX3N1YlN0YWdlID0gTW9jazo6SGlkU3Vi
U3RhZ2U6OkluaXQ7CisgICAgICAgIGlmIChwcmV2aW91c1N1YlN0YWdlID09IE1vY2s6OkhpZFN1
YlN0YWdlOjpNc2cpCisgICAgICAgICAgICBtX3N0YWdlID0gTW9jazo6SGlkU3RhZ2U6OlJlcXVl
c3Q7CiAgICAgfQogICAgIGlmIChtX3JlcXVlc3RNZXNzYWdlLT5jbWQoKSA9PSBGaWRvSGlkRGV2
aWNlQ29tbWFuZDo6a0Nib3IgfHwgbV9yZXF1ZXN0TWVzc2FnZS0+Y21kKCkgPT0gRmlkb0hpZERl
dmljZUNvbW1hbmQ6OmtNc2cpCi0gICAgICAgIG1fc3ViU3RhZ2UgPSBNb2NrSGlkOjpTdWJTdGFn
ZTo6TXNnOworICAgICAgICBtX3N1YlN0YWdlID0gTW9jazo6SGlkU3ViU3RhZ2U6Ok1zZzsKIAot
ICAgIGlmIChtX3N0YWdlID09IE1vY2tIaWQ6OlN0YWdlOjpSZXF1ZXN0ICYmIG1fc3ViU3RhZ2Ug
PT0gTW9ja0hpZDo6U3ViU3RhZ2U6Ok1zZykgeworICAgIGlmIChtX3N0YWdlID09IE1vY2s6Okhp
ZFN0YWdlOjpSZXF1ZXN0ICYmIG1fc3ViU3RhZ2UgPT0gTW9jazo6SGlkU3ViU3RhZ2U6Ok1zZykg
ewogICAgICAgICAvLyBNYWtlIHN1cmUgd2UgaXNzdWUgZGlmZmVyZW50IG1zZyBjbWQgZm9yIENU
QVAgYW5kIFUyRi4KICAgICAgICAgaWYgKG1fY29uZmlndXJhdGlvbi5oaWQtPmNhbkRvd25ncmFk
ZSAmJiAhbV9jb25maWd1cmF0aW9uLmhpZC0+aXNVMmYpCiAgICAgICAgICAgICBtX2NvbmZpZ3Vy
YXRpb24uaGlkLT5pc1UyZiA9IG1fcmVxdWVzdE1lc3NhZ2UtPmNtZCgpID09IEZpZG9IaWREZXZp
Y2VDb21tYW5kOjprTXNnOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rp
b246OnBhcnNlUmVxdWVzdCgpCiAgICAgfQogCiAgICAgLy8gU3RvcmUgbm9uY2UuCi0gICAgaWYg
KG1fc3ViU3RhZ2UgPT0gTW9ja0hpZDo6U3ViU3RhZ2U6OkluaXQpIHsKKyAgICBpZiAobV9zdWJT
dGFnZSA9PSBNb2NrOjpIaWRTdWJTdGFnZTo6SW5pdCkgewogICAgICAgICBtX25vbmNlID0gbV9y
ZXF1ZXN0TWVzc2FnZS0+Z2V0TWVzc2FnZVBheWxvYWQoKTsKICAgICAgICAgQVNTRVJUKG1fbm9u
Y2Uuc2l6ZSgpID09IGtIaWRJbml0Tm9uY2VMZW5ndGgpOwogICAgIH0KQEAgLTE5MSwxNyArMTkx
LDE3IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OmZlZWRSZXBvcnRzKCkKIHsKICAgICB1c2lu
ZyBuYW1lc3BhY2UgTW9ja0hpZENvbm5lY3Rpb25JbnRlcm5hbDsKIAotICAgIGlmIChtX3N1YlN0
YWdlID09IE1vY2tIaWQ6OlN1YlN0YWdlOjpJbml0KSB7CisgICAgaWYgKG1fc3ViU3RhZ2UgPT0g
TW9jazo6SGlkU3ViU3RhZ2U6OkluaXQpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHBheWxv
YWQ7CiAgICAgICAgIHBheWxvYWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShrSGlkSW5pdFJlc3Bv
bnNlU2l6ZSk7CiAgICAgICAgIHBheWxvYWQuYXBwZW5kVmVjdG9yKG1fbm9uY2UpOwogICAgICAg
ICBzaXplX3Qgd3JpdGVQb3NpdGlvbiA9IHBheWxvYWQuc2l6ZSgpOwotICAgICAgICBpZiAoc3Rh
Z2VzTWF0Y2goKSAmJiBtX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBNb2NrSGlkOjpFcnJv
cjo6V3JvbmdOb25jZSkKKyAgICAgICAgaWYgKHN0YWdlc01hdGNoKCkgJiYgbV9jb25maWd1cmF0
aW9uLmhpZC0+ZXJyb3IgPT0gTW9jazo6SGlkRXJyb3I6Oldyb25nTm9uY2UpCiAgICAgICAgICAg
ICBwYXlsb2FkWzBdLS07CiAgICAgICAgIHBheWxvYWQuZ3JvdyhrSGlkSW5pdFJlc3BvbnNlU2l6
ZSk7CiAgICAgICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKHBheWxvYWQuZGF0YSgp
ICsgd3JpdGVQb3NpdGlvbiwgQ3RhcENoYW5uZWxJZFNpemUpOwogICAgICAgICBhdXRvIGNoYW5u
ZWwgPSBrSGlkQnJvYWRjYXN0Q2hhbm5lbDsKLSAgICAgICAgaWYgKHN0YWdlc01hdGNoKCkgJiYg
bV9jb25maWd1cmF0aW9uLmhpZC0+ZXJyb3IgPT0gTW9ja0hpZDo6RXJyb3I6Oldyb25nQ2hhbm5l
bElkKQorICAgICAgICBpZiAoc3RhZ2VzTWF0Y2goKSAmJiBtX2NvbmZpZ3VyYXRpb24uaGlkLT5l
cnJvciA9PSBNb2NrOjpIaWRFcnJvcjo6V3JvbmdDaGFubmVsSWQpCiAgICAgICAgICAgICBjaGFu
bmVsLS07CiAgICAgICAgIEZpZG9IaWRJbml0UGFja2V0IGluaXRQYWNrZXQoY2hhbm5lbCwgRmlk
b0hpZERldmljZUNvbW1hbmQ6OmtJbml0LCBXVEZNb3ZlKHBheWxvYWQpLCBwYXlsb2FkLnNpemUo
KSk7CiAgICAgICAgIHJlY2VpdmVSZXBvcnQoaW5pdFBhY2tldC5nZXRTZXJpYWxpemVkRGF0YSgp
KTsKQEAgLTIxMCwxNCArMjEwLDE0IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OmZlZWRSZXBv
cnRzKCkKICAgICB9CiAKICAgICBPcHRpb25hbDxGaWRvSGlkTWVzc2FnZT4gbWVzc2FnZTsKLSAg
ICBpZiAobV9zdGFnZSA9PSBNb2NrSGlkOjpTdGFnZTo6SW5mbyAmJiBtX3N1YlN0YWdlID09IE1v
Y2tIaWQ6OlN1YlN0YWdlOjpNc2cpIHsKKyAgICBpZiAobV9zdGFnZSA9PSBNb2NrOjpIaWRTdGFn
ZTo6SW5mbyAmJiBtX3N1YlN0YWdlID09IE1vY2s6OkhpZFN1YlN0YWdlOjpNc2cpIHsKICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGluZm9EYXRhOwogICAgICAgICBpZiAobV9jb25maWd1cmF0aW9u
LmhpZC0+Y2FuRG93bmdyYWRlKQogICAgICAgICAgICAgaW5mb0RhdGEgPSBlbmNvZGVBc0NCT1Io
QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSh7IFByb3RvY29sVmVyc2lvbjo6a0N0YXAsIFBy
b3RvY29sVmVyc2lvbjo6a1UyZiB9LCBWZWN0b3I8dWludDhfdD4oYWFndWlkTGVuZ3RoLCAwdSkp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaW5mb0RhdGEgPSBlbmNvZGVBc0NCT1IoQXV0
aGVudGljYXRvckdldEluZm9SZXNwb25zZSh7IFByb3RvY29sVmVyc2lvbjo6a0N0YXAgfSwgVmVj
dG9yPHVpbnQ4X3Q+KGFhZ3VpZExlbmd0aCwgMHUpKSk7CiAgICAgICAgIGluZm9EYXRhLmluc2Vy
dCgwLCBzdGF0aWNfY2FzdDx1aW50OF90PihDdGFwRGV2aWNlUmVzcG9uc2VDb2RlOjprU3VjY2Vz
cykpOyAvLyBQcmVwZW5kIHN0YXR1cyBjb2RlLgotICAgICAgICBpZiAoc3RhZ2VzTWF0Y2goKSAm
JiBtX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBNb2NrSGlkOjpFcnJvcjo6V3JvbmdDaGFu
bmVsSWQpCisgICAgICAgIGlmIChzdGFnZXNNYXRjaCgpICYmIG1fY29uZmlndXJhdGlvbi5oaWQt
PmVycm9yID09IE1vY2s6OkhpZEVycm9yOjpXcm9uZ0NoYW5uZWxJZCkKICAgICAgICAgICAgIG1l
c3NhZ2UgPSBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKG1fY3VycmVudENoYW5uZWwgLSAxLCBGaWRv
SGlkRGV2aWNlQ29tbWFuZDo6a0Nib3IsIGluZm9EYXRhKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi5oaWQtPmlzVTJmKQpAQCAtMjI3LDcgKzIyNyw3
IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OmZlZWRSZXBvcnRzKCkKICAgICAgICAgfQogICAg
IH0KIAotICAgIGlmIChtX3N0YWdlID09IE1vY2tIaWQ6OlN0YWdlOjpSZXF1ZXN0ICYmIG1fc3Vi
U3RhZ2UgPT0gTW9ja0hpZDo6U3ViU3RhZ2U6Ok1zZykgeworICAgIGlmIChtX3N0YWdlID09IE1v
Y2s6OkhpZFN0YWdlOjpSZXF1ZXN0ICYmIG1fc3ViU3RhZ2UgPT0gTW9jazo6SGlkU3ViU3RhZ2U6
Ok1zZykgewogICAgICAgICBpZiAobV9jb25maWd1cmF0aW9uLmhpZC0+a2VlcEFsaXZlKSB7CiAg
ICAgICAgICAgICBtX2NvbmZpZ3VyYXRpb24uaGlkLT5rZWVwQWxpdmUgPSBmYWxzZTsKICAgICAg
ICAgICAgIEZpZG9IaWRJbml0UGFja2V0IGluaXRQYWNrZXQobV9jdXJyZW50Q2hhbm5lbCwgRmlk
b0hpZERldmljZUNvbW1hbmQ6OmtLZWVwQWxpdmUsIHsgQ3RhcEtlZXBBbGl2ZVN0YXR1c1Byb2Nl
c3NpbmcgfSwgMSk7CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBNb2NrSGlkQ29ubmVjdGlvbjo6
ZmVlZFJlcG9ydHMoKQogICAgICAgICAgICAgY29udGludWVGZWVkUmVwb3J0cygpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlmIChzdGFnZXNNYXRjaCgpICYmIG1f
Y29uZmlndXJhdGlvbi5oaWQtPmVycm9yID09IE1vY2tIaWQ6OkVycm9yOjpVbnN1cHBvcnRlZE9w
dGlvbnMgJiYgKG1fcmVxdWlyZVJlc2lkZW50S2V5IHx8IG1fcmVxdWlyZVVzZXJWZXJpZmljYXRp
b24pKQorICAgICAgICBpZiAoc3RhZ2VzTWF0Y2goKSAmJiBtX2NvbmZpZ3VyYXRpb24uaGlkLT5l
cnJvciA9PSBNb2NrOjpIaWRFcnJvcjo6VW5zdXBwb3J0ZWRPcHRpb25zICYmIChtX3JlcXVpcmVS
ZXNpZGVudEtleSB8fCBtX3JlcXVpcmVVc2VyVmVyaWZpY2F0aW9uKSkKICAgICAgICAgICAgIG1l
c3NhZ2UgPSBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKG1fY3VycmVudENoYW5uZWwsIEZpZG9IaWRE
ZXZpY2VDb21tYW5kOjprQ2JvciwgeyBzdGF0aWNfY2FzdDx1aW50OF90PihDdGFwRGV2aWNlUmVz
cG9uc2VDb2RlOjprQ3RhcDJFcnJVbnN1cHBvcnRlZE9wdGlvbikgfSk7CiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHBheWxvYWQ7CkBAIC0yNTQsNyArMjU0LDcg
QEAgdm9pZCBNb2NrSGlkQ29ubmVjdGlvbjo6ZmVlZFJlcG9ydHMoKQogICAgIGJvb2wgaXNGaXJz
dCA9IHRydWU7CiAgICAgd2hpbGUgKG1lc3NhZ2UtPm51bVBhY2tldHMoKSkgewogICAgICAgICBh
dXRvIHJlcG9ydCA9IG1lc3NhZ2UtPnBvcE5leHRQYWNrZXQoKTsKLSAgICAgICAgaWYgKCFpc0Zp
cnN0ICYmIHN0YWdlc01hdGNoKCkgJiYgbV9jb25maWd1cmF0aW9uLmhpZC0+ZXJyb3IgPT0gTW9j
a0hpZDo6RXJyb3I6Oldyb25nQ2hhbm5lbElkKQorICAgICAgICBpZiAoIWlzRmlyc3QgJiYgc3Rh
Z2VzTWF0Y2goKSAmJiBtX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBNb2NrOjpIaWRFcnJv
cjo6V3JvbmdDaGFubmVsSWQpCiAgICAgICAgICAgICByZXBvcnQgPSBGaWRvSGlkQ29udGludWF0
aW9uUGFja2V0KG1fY3VycmVudENoYW5uZWwgLSAxLCAwLCB7IH0pLmdldFNlcmlhbGl6ZWREYXRh
KCk7CiAgICAgICAgIC8vIFBhY2tldHMgYXJlIGZlZWQgYXN5bmNocm9ub3VzbHkgdG8gbWltaWMg
YWN0dWFsIGRhdGEgdHJhbnNtaXNzaW9uLgogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3JlcG9ydCA9IFdURk1vdmUocmVwb3J0KSwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhp
cyldKCkgbXV0YWJsZSB7CkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBNb2NrSGlkQ29ubmVjdGlv
bjo6c2hvdWxkQ29udGludWVGZWVkUmVwb3J0cygpCiAgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24u
aGlkLT5jb250aW51ZUFmdGVyRXJyb3JEYXRhKQogICAgICAgICByZXR1cm47CiAgICAgbV9jb25m
aWd1cmF0aW9uLmhpZC0+Y29udGludWVBZnRlckVycm9yRGF0YSA9IGZhbHNlOwotICAgIG1fY29u
ZmlndXJhdGlvbi5oaWQtPmVycm9yID0gTW9ja0hpZDo6RXJyb3I6OlN1Y2Nlc3M7CisgICAgbV9j
b25maWd1cmF0aW9uLmhpZC0+ZXJyb3IgPSBNb2NrOjpIaWRFcnJvcjo6U3VjY2VzczsKICAgICBj
b250aW51ZUZlZWRSZXBvcnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rp
b24uaAppbmRleCAzNzg4NjZmMzY4YWU4NGI2ZmM1OWNlYzcwZWE2ZTM0ODM5ZjdlMWE2Li40MDgz
NmQyODNmZGUwMTUyNWY1NjllMDcyOTY4MTk2ODdlMTdlMGRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrSGlkQ29ubmVjdGlvbi5oCkBAIC0yOCw4ICsyOCw4IEBACiAjaWYgRU5BQkxFKFdFQl9BVVRI
TikKIAogI2luY2x1ZGUgIkhpZENvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWRvSGlkTWVzc2Fn
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIC8vIEFjY29yZGluZyB0byBkaWZmZXJl
bnQgY29tYmluYXRpb25zIG9mIGVycm9yIGFuZCBzdGFnZXMsIGVycm9yIHdpbGwgbWFuaWZlc3Qg
ZGlmZmVyZW50bHkuCiBjbGFzcyBNb2NrSGlkQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxNb2NrSGlkQ29ubmVjdGlvbj4sIHB1YmxpYyBIaWRDb25uZWN0aW9uIHsKIHB1
YmxpYzoKLSAgICBNb2NrSGlkQ29ubmVjdGlvbihJT0hJRERldmljZVJlZiwgY29uc3QgTW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYpOworICAgIE1vY2tIaWRDb25uZWN0aW9uKElP
SElERGV2aWNlUmVmLCBjb25zdCBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uJik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRh
dGEsIERhdGFTZW50Q2FsbGJhY2smJikgZmluYWw7CkBAIC02MCwxMCArNjAsMTAgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHNob3VsZENvbnRpbnVlRmVlZFJlcG9ydHMoKTsKICAgICB2b2lkIGNvbnRp
bnVlRmVlZFJlcG9ydHMoKTsKIAotICAgIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24gbV9jb25maWd1cmF0aW9uOworICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9uOwogICAgIE9wdGlvbmFsPGZpZG86OkZpZG9IaWRN
ZXNzYWdlPiBtX3JlcXVlc3RNZXNzYWdlOwotICAgIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb246OkhpZDo6U3RhZ2UgbV9zdGFnZSB7IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb246OkhpZDo6U3RhZ2U6OkluZm8gfTsKLSAgICBNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uOjpIaWQ6OlN1YlN0YWdlIG1fc3ViU3RhZ2UgeyBNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OlN1YlN0YWdlOjpJbml0IH07CisgICAgV2ViQ29yZTo6
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkU3RhZ2UgbV9zdGFnZSB7IE1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZFN0YWdlOjpJbmZvIH07CisgICAg
V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkU3ViU3RhZ2Ug
bV9zdWJTdGFnZSB7IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZFN1YlN0
YWdlOjpJbml0IH07CiAgICAgdWludDMyX3QgbV9jdXJyZW50Q2hhbm5lbCB7IGZpZG86OmtIaWRC
cm9hZGNhc3RDaGFubmVsIH07CiAgICAgYm9vbCBtX3JlcXVpcmVSZXNpZGVudEtleSB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX3JlcXVpcmVVc2VyVmVyaWZpY2F0aW9uICB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01v
Y2tIaWRTZXJ2aWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL01vY2svTW9ja0hpZFNlcnZpY2UuY3BwCmluZGV4IDI0Y2MzNmIyY2Q1MzRkNGYyNTJkM2Zm
MDY4YzliNDk3YTZhOTI1NTkuLjg1MDVmNzVjZTliYmVmMThiYjI5YzY0ZjYyOGRiMGFkMTc4NWJl
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L01vY2svTW9ja0hpZFNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZFNlcnZpY2UuY3BwCkBAIC0zMyw3ICszMyw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1Nb2NrSGlkU2VydmljZTo6TW9ja0hpZFNlcnZpY2Uo
T2JzZXJ2ZXImIG9ic2VydmVyLCBjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uJiBjb25maWd1cmF0aW9uKQorTW9ja0hpZFNlcnZpY2U6Ok1vY2tIaWRTZXJ2aWNlKE9ic2Vy
dmVyJiBvYnNlcnZlciwgY29uc3QgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICA6IEhpZFNlcnZpY2Uob2JzZXJ2ZXIpCiAgICAg
LCBtX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZFNlcnZpY2UuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZFNl
cnZpY2UuaAppbmRleCBjYmUwMTVlZjBkNDU4YjkwNzk1YmI5NDEzZmNhNTJiOGI0OWU2M2UxLi5i
ZTFlYWQ2MTc5ODZhOTM5ZTZhYzJmYjQyYTM3OGEyOTljNTg3NmQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRTZXJ2aWNl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrSGlkU2VydmljZS5oCkBAIC0yOCwxMiArMjgsMTAgQEAKICNpZiBFTkFCTEUoV0VCX0FVVEhO
KQogCiAjaW5jbHVkZSAiSGlkU2VydmljZS5oIgotI2luY2x1ZGUgIk1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0cnVjdCBNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOwotCiBjbGFzcyBNb2NrSGlkU2VydmljZSBm
aW5hbCA6IHB1YmxpYyBIaWRTZXJ2aWNlIHsKIHB1YmxpYzoKICAgICBNb2NrSGlkU2VydmljZShP
YnNlcnZlciYsIGNvbnN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mKTsKQEAg
LTQyLDcgKzQwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtU3RhcnREaXNjb3Zlcnko
KSBmaW5hbDsKICAgICBVbmlxdWVSZWY8SGlkQ29ubmVjdGlvbj4gY3JlYXRlSGlkQ29ubmVjdGlv
bihJT0hJRERldmljZVJlZikgY29uc3QgZmluYWw7CiAKLSAgICBNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKKyAgICBXZWJDb3JlOjpNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaAppbmRl
eCAzMWFkNzFhMzEyN2JhYWE0NjZjNzI5ZGE1YmY0ZDFkNTJiNGUxYWE0Li4zNTU5YjgwZWI5ODI4
MGEwMWMxNTBhYzQyMmE0M2MyM2VjZDNhZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2Nh
bENvbm5lY3Rpb24uaApAQCAtMjgsMTMgKzI4LDEzIEBACiAjaWYgRU5BQkxFKFdFQl9BVVRITikK
IAogI2luY2x1ZGUgIkxvY2FsQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIk1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE1v
Y2tMb2NhbENvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgTG9jYWxDb25uZWN0aW9uIHsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBNb2NrTG9jYWxDb25uZWN0aW9uKGNvbnN0IE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24mKTsKKyAgICBleHBsaWNpdCBNb2NrTG9jYWxDb25uZWN0aW9u
KGNvbnN0IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mKTsKIAog
cHJpdmF0ZToKICAgICB2b2lkIGdldFVzZXJDb25zZW50KGNvbnN0IFN0cmluZyYgcmVhc29uLCBV
c2VyQ29uc2VudENhbGxiYWNrJiYpIGNvbnN0IGZpbmFsOwpAQCAtNDIsNyArNDIsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZ2V0QXR0ZXN0YXRpb24oY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBT
dHJpbmcmIHVzZXJuYW1lLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIEF0dGVzdGF0aW9u
Q2FsbGJhY2smJikgY29uc3QgZmluYWw7CiAgICAgTlNEaWN0aW9uYXJ5ICpzZWxlY3RDcmVkZW50
aWFsKGNvbnN0IE5TQXJyYXkgKikgY29uc3QgZmluYWw7CiAKLSAgICBNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKKyAgICBXZWJDb3JlOjpNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1t
CmluZGV4IDU3MWVjY2E3ZTRmNDcwZmM2OWI0MWNkZDI2MDM5Y2I5MjcxZDRhMGEuLmNkYjFhYTM0
MjVmOWU4Y2ZjNjI4ZjI1YmVhMmE3MjUwZTk3YWU4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01v
Y2tMb2NhbENvbm5lY3Rpb24ubW0KQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLU1vY2tMb2NhbENvbm5lY3Rpb246Ok1vY2tMb2NhbENvbm5lY3Rpb24oY29uc3QgTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK01vY2tMb2Nh
bENvbm5lY3Rpb246Ok1vY2tMb2NhbENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICA6IG1fY29uZmln
dXJhdGlvbihjb25maWd1cmF0aW9uKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxTZXJ2aWNlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbFNlcnZp
Y2UuaAppbmRleCA3ZWI4ZjIxNGJjMDRlN2RmZmIxMDEwYTY4MmY0ZjExMTBjNjMyNzYxLi45MTY5
YmQ3NjIzMmYwMGY5YzAyNGNhNDEwY2E0ZTBjOTU3YjkzMjc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbFNlcnZpY2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01v
Y2tMb2NhbFNlcnZpY2UuaApAQCAtMjgsMjEgKzI4LDE5IEBACiAjaWYgRU5BQkxFKFdFQl9BVVRI
TikKIAogI2luY2x1ZGUgIkxvY2FsU2VydmljZS5oIgotI2luY2x1ZGUgIk1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0cnVjdCBN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOwotCiBjbGFzcyBNb2NrTG9jYWxTZXJ2
aWNlIGZpbmFsIDogcHVibGljIExvY2FsU2VydmljZSB7CiBwdWJsaWM6Ci0gICAgTW9ja0xvY2Fs
U2VydmljZShPYnNlcnZlciYsIGNvbnN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24mKTsKKyAgICBNb2NrTG9jYWxTZXJ2aWNlKE9ic2VydmVyJiwgY29uc3QgV2ViQ29yZTo6TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYpOwogCiBwcml2YXRlOgogICAgIGJvb2wg
cGxhdGZvcm1TdGFydERpc2NvdmVyeSgpIGNvbnN0IGZpbmFsOwogICAgIFVuaXF1ZVJlZjxMb2Nh
bENvbm5lY3Rpb24+IGNyZWF0ZUxvY2FsQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwogCi0gICAg
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CisgICAg
V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRp
b247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsU2VydmljZS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2Fs
U2VydmljZS5tbQppbmRleCAxZWIwMTAyZWNlNzc2MWYzMzRlNDBiNTU0YWMxODgxZjkzMzdkOTli
Li5mZWMxOTI3ZGU1ZGNhMDQ1YjEwMWIzNjU2MTIzYTllYTU1N2E3ZjE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbFNl
cnZpY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
TW9jay9Nb2NrTG9jYWxTZXJ2aWNlLm1tCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1Nb2NrTG9jYWxTZXJ2aWNlOjpNb2NrTG9jYWxTZXJ2aWNlKE9ic2VydmVyJiBv
YnNlcnZlciwgY29uc3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYgY29uZmln
dXJhdGlvbikKK01vY2tMb2NhbFNlcnZpY2U6Ok1vY2tMb2NhbFNlcnZpY2UoT2JzZXJ2ZXImIG9i
c2VydmVyLCBjb25zdCBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
JiBjb25maWd1cmF0aW9uKQogICAgIDogTG9jYWxTZXJ2aWNlKG9ic2VydmVyKQogICAgICwgbV9j
b25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNl
LmgKaW5kZXggMTMyY2RlNGQ2YjY2ZGFjMzFhY2M2Mjk2YzVlOTk4MjZhMjZiMzMwMi4uOWZkMWM5
YjQxMGI4MjMyYjRkMzVlMGUxMjg2N2ZkMzY0NmQ1NjZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTmZjU2VydmljZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja05m
Y1NlcnZpY2UuaApAQCAtMjcsMTggKzI3LDE2IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQog
Ci0jaW5jbHVkZSAiTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIgogI2luY2x1
ZGUgIk5mY1NlcnZpY2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24uaD4KIAogT0JKQ19DTEFTUyBOU0RhdGE7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1zdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjsKLQogY2xh
c3MgTW9ja05mY1NlcnZpY2UgZmluYWwgOiBwdWJsaWMgTmZjU2VydmljZSB7CiBwdWJsaWM6Ci0g
ICAgTW9ja05mY1NlcnZpY2UoT2JzZXJ2ZXImLCBjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uJik7CisgICAgTW9ja05mY1NlcnZpY2UoT2JzZXJ2ZXImLCBjb25zdCBXZWJD
b3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJik7CiAKICAgICBOU0RhdGEq
IHRyYW5zY2VpdmUoKTsKIApAQCAtNDcsNyArNDUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBk
ZXRlY3RUYWdzKCkgY29uc3Q7CiAKLSAgICBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uIG1fY29uZmlndXJhdGlvbjsKKyAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
TW9jay9Nb2NrTmZjU2VydmljZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL01vY2svTW9ja05mY1NlcnZpY2UubW0KaW5kZXggY2EzZGUyMTAyMmIzYTM5MTI3
ODBiYTA3MWIxZmRkNjQ2ZGM5YmE0YS4uY2E1MjJjNWUzYTNkMjhkNDIwNTU4MzcyYjE1NzFmNzEz
ZTM3ZDFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrTmZjU2VydmljZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLm1tCkBAIC0xMDgsNyArMTA4
LDcgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBmaWRvOwot
dXNpbmcgTW9ja05mYyA9IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mYzsK
K3VzaW5nIE1vY2sgPSBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
OwogCiAjaWYgSEFWRShORUFSX0ZJRUxEKQogCkBAIC0xNDMsNyArMTQzLDcgQEAgc3RhdGljIE5T
RGF0YSogTkZSZWFkZXJTZXNzaW9uVHJhbnNjZWl2ZShpZCwgU0VMLCBOU0RhdGEgKikKIAogI2Vu
ZGlmIC8vIEhBVkUoTkVBUl9GSUVMRCkKIAotTW9ja05mY1NlcnZpY2U6Ok1vY2tOZmNTZXJ2aWNl
KE9ic2VydmVyJiBvYnNlcnZlciwgY29uc3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbikKK01vY2tOZmNTZXJ2aWNlOjpNb2NrTmZjU2VydmljZShPYnNl
cnZlciYgb2JzZXJ2ZXIsIGNvbnN0IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBOZmNTZXJ2aWNlKG9ic2VydmVyKQogICAg
ICwgbV9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pCiB7CkBAIC0xNjksNyArMTY5LDcgQEAg
dm9pZCBNb2NrTmZjU2VydmljZTo6cGxhdGZvcm1TdGFydERpc2NvdmVyeSgpCiAgICAgICAgIG1l
dGhvZF9zZXRJbXBsZW1lbnRhdGlvbihtZXRob2RUb1N3aXp6bGUxLCAoSU1QKU5GUmVhZGVyU2Vz
c2lvblNldERlbGVnYXRlKTsKIAogICAgICAgICBNZXRob2QgbWV0aG9kVG9Td2l6emxlMiA9IGNs
YXNzX2dldEluc3RhbmNlTWV0aG9kKGdldE5GUmVhZGVyU2Vzc2lvbkNsYXNzKCksIEBzZWxlY3Rv
cihjb25uZWN0VGFnOikpOwotICAgICAgICBpZiAobV9jb25maWd1cmF0aW9uLm5mYy0+ZXJyb3Ig
PT0gTW9ja05mYzo6RXJyb3I6Ok5vQ29ubmVjdGlvbnMpCisgICAgICAgIGlmIChtX2NvbmZpZ3Vy
YXRpb24ubmZjLT5lcnJvciA9PSBNb2NrOjpOZmNFcnJvcjo6Tm9Db25uZWN0aW9ucykKICAgICAg
ICAgICAgIG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihtZXRob2RUb1N3aXp6bGUyLCAoSU1QKU5G
UmVhZGVyU2Vzc2lvbkNvbm5lY3RUYWdGYWlsKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
bWV0aG9kX3NldEltcGxlbWVudGF0aW9uKG1ldGhvZFRvU3dpenpsZTIsIChJTVApTkZSZWFkZXJT
ZXNzaW9uQ29ubmVjdFRhZyk7CkBAIC0xOTQsMTIgKzE5NCwxMiBAQCB2b2lkIE1vY2tOZmNTZXJ2
aWNlOjpwbGF0Zm9ybVN0YXJ0RGlzY292ZXJ5KCkKIHZvaWQgTW9ja05mY1NlcnZpY2U6OmRldGVj
dFRhZ3MoKSBjb25zdAogewogI2lmIEhBVkUoTkVBUl9GSUVMRCkKLSAgICBpZiAobV9jb25maWd1
cmF0aW9uLm5mYy0+ZXJyb3IgPT0gTW9ja05mYzo6RXJyb3I6Ok5vVGFncykKKyAgICBpZiAobV9j
b25maWd1cmF0aW9uLm5mYy0+ZXJyb3IgPT0gTW9jazo6TmZjRXJyb3I6Ok5vVGFncykKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VCbG9ja1B0cihbY29uZmlndXJh
dGlvbiA9IG1fY29uZmlndXJhdGlvbl0gewogICAgICAgICBhdXRvIHRhZ3MgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24u
bmZjLT5lcnJvciA9PSBNb2NrTmZjOjpFcnJvcjo6V3JvbmdUYWdUeXBlIHx8IGNvbmZpZ3VyYXRp
b24ubmZjLT5tdWx0aXBsZVRhZ3MpCisgICAgICAgIGlmIChjb25maWd1cmF0aW9uLm5mYy0+ZXJy
b3IgPT0gTW9jazo6TmZjRXJyb3I6Oldyb25nVGFnVHlwZSB8fCBjb25maWd1cmF0aW9uLm5mYy0+
bXVsdGlwbGVUYWdzKQogICAgICAgICAgICAgW3RhZ3MgYWRkT2JqZWN0OmFkb3B0TlMoW1tXS01v
Y2tORlRhZyBhbGxvY10gaW5pdFdpdGhUeXBlOk5GVGFnVHlwZVVua25vd25dKS5nZXQoKV07CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIFt0YWdzIGFkZE9iamVjdDphZG9wdE5TKFtbV0tNb2Nr
TkZUYWcgYWxsb2NdIGluaXRXaXRoVHlwZTpORlRhZ1R5cGVHZW5lcmljNEFdKS5nZXQoKV07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2Nr
L01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTNlODVjMThlM2FjNmE3
ZTk1ZTdkNDYzYjAzOWE2NTliOWU5NmFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L01vY2svTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oCisrKyAvZGV2L251bGwK
QEAgLTEsOTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdFQl9BVVRITikKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotc3RydWN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24g
ewotICAgIHN0cnVjdCBMb2NhbCB7Ci0gICAgICAgIGJvb2wgYWNjZXB0QXV0aGVudGljYXRpb24g
eyBmYWxzZSB9OwotICAgICAgICBib29sIGFjY2VwdEF0dGVzdGF0aW9uIHsgZmFsc2UgfTsKLSAg
ICAgICAgU3RyaW5nIHByaXZhdGVLZXlCYXNlNjQ7Ci0gICAgICAgIFN0cmluZyB1c2VyQ2VydGlm
aWNhdGVCYXNlNjQ7Ci0gICAgICAgIFN0cmluZyBpbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFz
ZTY0OwotICAgICAgICBTdHJpbmcgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDsKLSAgICB9Owot
Ci0gICAgc3RydWN0IEhpZCB7Ci0gICAgICAgIGVudW0gY2xhc3MgU3RhZ2UgOiBib29sIHsKLSAg
ICAgICAgICAgIEluZm8sCi0gICAgICAgICAgICBSZXF1ZXN0Ci0gICAgICAgIH07Ci0KLSAgICAg
ICAgZW51bSBjbGFzcyBTdWJTdGFnZSA6IGJvb2wgewotICAgICAgICAgICAgSW5pdCwKLSAgICAg
ICAgICAgIE1zZwotICAgICAgICB9OwotCi0gICAgICAgIGVudW0gY2xhc3MgRXJyb3IgOiB1aW50
OF90IHsKLSAgICAgICAgICAgIFN1Y2Nlc3MsCi0gICAgICAgICAgICBEYXRhTm90U2VudCwKLSAg
ICAgICAgICAgIEVtcHR5UmVwb3J0LAotICAgICAgICAgICAgV3JvbmdDaGFubmVsSWQsCi0gICAg
ICAgICAgICBNYWxpY2lvdXNQYXlsb2FkLAotICAgICAgICAgICAgVW5zdXBwb3J0ZWRPcHRpb25z
LAotICAgICAgICAgICAgV3JvbmdOb25jZQotICAgICAgICB9OwotCi0gICAgICAgIFZlY3RvcjxT
dHJpbmc+IHBheWxvYWRCYXNlNjQ7Ci0gICAgICAgIFN0YWdlIHN0YWdlIHsgU3RhZ2U6OkluZm8g
fTsKLSAgICAgICAgU3ViU3RhZ2Ugc3ViU3RhZ2UgeyBTdWJTdGFnZTo6SW5pdCB9OwotICAgICAg
ICBFcnJvciBlcnJvciB7IEVycm9yOjpTdWNjZXNzIH07Ci0gICAgICAgIGJvb2wgaXNVMmYgeyBm
YWxzZSB9OwotICAgICAgICBib29sIGtlZXBBbGl2ZSB7IGZhbHNlIH07Ci0gICAgICAgIGJvb2wg
ZmFzdERhdGFBcnJpdmFsIHsgZmFsc2UgfTsKLSAgICAgICAgYm9vbCBjb250aW51ZUFmdGVyRXJy
b3JEYXRhIHsgZmFsc2UgfTsKLSAgICAgICAgYm9vbCBjYW5Eb3duZ3JhZGUgeyBmYWxzZSB9Owot
ICAgIH07Ci0KLSAgICBzdHJ1Y3QgTmZjIHsKLSAgICAgICAgZW51bSBjbGFzcyBFcnJvciA6IHVp
bnQ4X3QgewotICAgICAgICAgICAgU3VjY2VzcywKLSAgICAgICAgICAgIE5vVGFncywKLSAgICAg
ICAgICAgIFdyb25nVGFnVHlwZSwKLSAgICAgICAgICAgIE5vQ29ubmVjdGlvbnMsCi0gICAgICAg
ICAgICBNYWxpY2lvdXNQYXlsb2FkCi0gICAgICAgIH07Ci0KLSAgICAgICAgRXJyb3IgZXJyb3Ig
eyBFcnJvcjo6U3VjY2VzcyB9OwotICAgICAgICBWZWN0b3I8U3RyaW5nPiBwYXlsb2FkQmFzZTY0
OwotICAgICAgICBib29sIG11bHRpcGxlVGFncyB7IGZhbHNlIH07Ci0gICAgfTsKLQotICAgIGJv
b2wgc2lsZW50RmFpbHVyZSB7IGZhbHNlIH07Ci0gICAgT3B0aW9uYWw8TG9jYWw+IGxvY2FsOwot
ICAgIE9wdGlvbmFsPEhpZD4gaGlkOwotICAgIE9wdGlvbmFsPE5mYz4gbmZjOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggODc4MjBkMzNhY2QyM2U4MWQ4
YzczM2UxMDFmY2U4OWJkNTIxYTkzNy4uNmE4ZmFmOTIzOTQ3NjAzMmFlZDUzZjc3ZTIzN2E5NWIz
NzI2NjNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC05
MzkyLDYgKzkzOTIsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclNPQXV0
aG9yaXphdGlvbkxvYWQoY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIEMKIH0KICNlbmRpZgogCisj
aWYgRU5BQkxFKFdFQl9BVVRITikKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uKE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24m
JiBjb25maWd1cmF0aW9uKQoreworICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+c2V0TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKK30KKyNl
bmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIE1FUkdFX1dIRUVMX0VWRU5U
UwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA4Yzc3NTA5NmNkMTZj
NzNhNGQ2MzgzMDQwMjczYjAwOWM4YTI2Nzk5Li5iN2E5YWY4MTdiYTVlZGM5M2FkMDJhOWViYjE5
MTY3Y2M4ZmQ4ODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAt
MjEzLDYgKzIxMyw3IEBAIHN0cnVjdCBFeGNlcHRpb25EZXRhaWxzOwogc3RydWN0IEZpbGVDaG9v
c2VyU2V0dGluZ3M7CiBzdHJ1Y3QgR2xvYmFsV2luZG93SWRlbnRpZmllcjsKIHN0cnVjdCBNZWRp
YVN0cmVhbVJlcXVlc3Q7CitzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bjsKIHN0cnVjdCBQcmV3YXJtSW5mb3JtYXRpb247CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRh
Owogc3RydWN0IFNoYXJlRGF0YTsKQEAgLTE1ODcsNiArMTU4OCwxMCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoV2ViUHJvY2Vzc1By
b3h5JiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiByZXNvdXJjZURpcmVjdG9yeVVSTCwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJik7CiAKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIHZvaWQg
c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihXZWJDb3JlOjpNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uJiYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2Vi
UGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBSZWY8QVBJOjpQYWdlQ29u
ZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBkYzY1
Mjc2NmMyOGM0OGZkYmE5MTViNGY3NzE0NTY5ZjgwNGZhM2M0Li44MzkzN2QyMDRlOGQwYmQ4YzJh
MDU3ODExYjU3MjM0MmMwY2E2MDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC01NzQsNCArNTc0LDggQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZVByb3h5IHsKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKICAg
ICBEaWRDcmVhdGVDb250ZXh0Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKFdlYktpdDo6TGF5ZXJI
b3N0aW5nQ29udGV4dElEIGNvbnRleHRJRCk7CiAjZW5kaWYKKworI2lmIEVOQUJMRShXRUJfQVVU
SE4pCisgICAgU2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihzdHJ1Y3QgV2Vi
Q29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKTsK
KyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDRkNDkwOTFhNzg3YjdmZDVhODNlZjAzZjc2ZmNm
Y2RjOWNkNmUxZTUuLjk0ZGU5ZWVjZjNjNTg5M2Y5ZmE5MmQyY2ZjNTMzMTkwMzRmMjdiZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmgKQEAgLTY0LDYgKzY0LDggQEAgY2xhc3MgSFRUUENvb2tpZVN0b3JlOwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVnaXN0cmFibGVEb21haW47CiBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKKworc3RydWN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb247CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzgsNyArODAsNiBAQCBjbGFzcyBXZWJQcm9jZXNz
UHJveHk7CiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU7CiBlbnVtIGNsYXNz
IFdlYnNpdGVEYXRhRmV0Y2hPcHRpb247CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZTsKLXN0
cnVjdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOwogc3RydWN0IFdlYnNpdGVE
YXRhUmVjb3JkOwogc3RydWN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOwogCkBAIC0yNTIs
NyArMjUzLDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICBBdXRoZW50
aWNhdG9yTWFuYWdlciYgYXV0aGVudGljYXRvck1hbmFnZXIoKSB7IHJldHVybiBtX2F1dGhlbnRp
Y2F0b3JNYW5hZ2VyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uKE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mJik7CisgICAg
dm9pZCBzZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKFdlYkNvcmU6Ok1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgZGlk
Q3JlYXRlTmV0d29ya1Byb2Nlc3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA1YTFlYWFmOThlZjJjMDliZjY5YTk1NTE4MDNlNjBj
ZmQzNjYwOGEuLjYzOGViZWQ1ODUzZmQ3YWQ0NzQ5OTM1MTNlNmFmYTAxYjA4NzBiN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA3
Myw3ICsxMDczLDYgQEAKIAkJNTdEQ0VEQjEyMTRDNjA0ODAwMTZCODQ3IC8qIEF1dGhlbnRpY2F0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENF
RDhCMjE0ODVCRDcwMDE2Qjg0NyAvKiBBdXRoZW50aWNhdG9yLmggKi87IH07CiAJCTU3RENFREIy
MjE0QzYwNEMwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRURBNjIxNDlGOURB
MDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oICovOyB9OwogCQk1N0RD
RURCMzIxNEM2MDUzMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NjA4Mjk1
MjAyQkQ4QkEwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oICov
OyB9OwotCQk1N0RDRURCRjIxNEYwRENGMDAxNkI4NDcgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTdEQ0VEQkUyMTRDQTAxQjAwMTZCODQ3IC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24uaCAqLzsgfTsKIAkJNTdEQ0VEQzMyMTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tM
b2NhbFNlcnZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3RENFREMxMjE0RjExNEMwMDE2Qjg0NyAvKiBNb2NrTG9jYWxTZXJ2aWNlLmggKi87IH07
CiAJCTU3RENFREM3MjE0RjE4MzAwMDE2Qjg0NyAvKiBNb2NrTG9jYWxDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRURDNTIxNEYx
ODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlvbi5oICovOyB9OwogCQk1N0RDRURDQjIx
NEY0RTQyMDAxNkI4NDcgLyogTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRURDOTIxNEY0RTQyMDAxNkI4
NDcgLyogTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggKi87IH07CkBAIC0zNTY0LDcgKzM1NjMs
NiBAQAogCQk1N0RDRURBNzIxNEE1NjhCMDAxNkI4NDcgLyogTG9jYWxDb25uZWN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IExvY2FsQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1N0RDRURBODIxNEE1NjhCMDAxNkI4NDcgLyogTG9jYWxDb25uZWN0aW9uLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTG9jYWxDb25uZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1N0RDRURBQTIxNEI5QjQzMDAxNkI4NDcgLyogRGV2aWNlSWRlbnRpdHlTUEku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlSWRlbnRpdHlTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNTdEQ0VEQkUyMTRDQTAxQjAwMTZCODQ3IC8qIE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0RDRURDMTIx
NEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2Nr
TG9jYWxTZXJ2aWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3RENFREMyMjE0
RjExNEMwMDE2Qjg0NyAvKiBNb2NrTG9jYWxTZXJ2aWNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gTW9ja0xvY2FsU2VydmljZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdE
Q0VEQzUyMTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTW9ja0xvY2FsQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNzE0Myw3ICs3MTQxLDYgQEAKIAkJCQk1N0RDRURDMjIxNEYxMTRDMDAxNkI4NDcgLyogTW9j
a0xvY2FsU2VydmljZS5tbSAqLywKIAkJCQk1N0I4MjY0QTIzMDYwM0MxMDBCNzJFQjAgLyogTW9j
a05mY1NlcnZpY2UuaCAqLywKIAkJCQk1N0I4MjY0QjIzMDYwM0MxMDBCNzJFQjAgLyogTW9ja05m
Y1NlcnZpY2UubW0gKi8sCi0JCQkJNTdEQ0VEQkUyMTRDQTAxQjAwMTZCODQ3IC8qIE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gTW9jazsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC05NTgzLDcgKzk1ODAsNiBAQAogCQkJCTU3
RENFREM3MjE0RjE4MzAwMDE2Qjg0NyAvKiBNb2NrTG9jYWxDb25uZWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1N0RDRURDMzIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTdCODI2NEMyMzA2MDNDMTAwQjcyRUIwIC8qIE1vY2tOZmNT
ZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKLQkJCQk1N0RDRURCRjIxNEYwRENGMDAxNkI4NDcgLyog
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzBFM0FBN0MxMjA5RTgzQzAwQTQ5RDAxIC8qIE1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkQ1MDM2NkIxQkNERTE3OTAwRTIwQkIzIC8qIE5hdGl2ZVdlYkdlc3R1cmVFdmVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMjYzMTcyQ0YxOEI0Njk0OTAwNjVCOUMzIC8qIE5hdGl2ZVdlYlRvdWNo
RXZlbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAyOWYyNTMw
NzMxMjNmMWU3YWQyYjlhYTU3Y2ViMzQ1OTdhODBlN2E4Li5mOGVjMDhjNzgzMjM3OTkwMTVjMTE0
MTBiYjA0MThlNmM2MjEzODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNzcsNiArNzcs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSWNvbi5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CkBAIC0xMzU3
LDQgKzEzNTgsMTEgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNldFVzZXJJc0ludGVyYWN0aW5n
KGJvb2wgdXNlcklzSW50ZXJhY3RpbmcpCiAgICAgbV9wYWdlLnNldFVzZXJJc0ludGVyYWN0aW5n
KHVzZXJJc0ludGVyYWN0aW5nKTsKIH0KIAorI2lmIEVOQUJMRShXRUJfQVVUSE4pCit2b2lkIFdl
YkNocm9tZUNsaWVudDo6c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihjb25z
dCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQorewor
ICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikpOworfQorI2VuZGlmCisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDc3ZmUzMDc2MDVmODVkM2Fk
ODU3MWQ4MjVkZGRlMTVjNjczYTc4MjAuLjk5OTE4YzcwMDQ5NWMxMGYxYWE5NzRiMWM2YzU3MDdi
MDJmYWQxZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTM4MSw2ICszODEsMTAgQEAgcHJpdmF0
ZToKICAgICBib29sIHVzZXJJc0ludGVyYWN0aW5nKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBz
ZXRVc2VySXNJbnRlcmFjdGluZyhib29sKSBmaW5hbDsKIAorI2lmIEVOQUJMRShXRUJfQVVUSE4p
CisgICAgdm9pZCBzZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKGNvbnN0IFdl
YkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mKSBmaW5hbDsKKyNlbmRp
ZgorCiAgICAgU3RyaW5nIG1fY2FjaGVkVG9vbFRpcDsKICAgICBtdXRhYmxlIFJlZlB0cjxXZWJG
cmFtZT4gbV9jYWNoZWRGcmFtZVNldExhcmdlc3RGcmFtZTsKICAgICBtdXRhYmxlIGJvb2wgbV9j
YWNoZWRNYWluRnJhbWVIYXNIb3Jpem9udGFsU2Nyb2xsYmFyIHsgZmFsc2UgfTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyYzA3ZjdhZjM3Mzli
Y2EyZjA1Yjc0NGEyNWIwMzgzZTQ2MWQwMWVmLi44Nzg4YjY3ZWM4ZWQ5ZDU5NDBkZDg2NjJjNDI0
YWYyMGViZjkwYTFiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMTAtMDggIEppZXdlbiBUYW4gIDxqaWV3ZW5f
dGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIE1vdmUgdGhlIG1vY2sgdGVzdGlu
ZyBlbnRyYW5jZSB0byBJbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMjU2MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU5NzM3OTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6Cisg
ICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0V2ViQXV0aGVudGljYXRp
b25Nb2NrQ29uZmlndXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNo
cm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKIDIwMTktMTAtMDkgIHlvdWVubiBm
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0ZXN0UnVubmVyLnNl
dFdlYlJUQ1VuaWZpZWRQbGFuRW5hYmxlZApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXgg
OGM5N2M3YjA1ODRlZDNhNDk2NWMzMzg5N2M3ZGVhNzFmMTJiODJlZS4uOTU3MDE0NDQxNTc0NmY4
MzRlNzNkYzM3MWMwNDFhNTc0OWEwMWNkZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBA
IC0zOTEsOCArMzkxLDcgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogCiAgICAgdm9pZCBzZXRT
ZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0KGRvdWJsZSBzZWNvbmRzKTsKIAotICAgIC8vIFdlYkF1
dGhOCi0gICAgdm9pZCBzZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKG9iamVj
dCBjb25maWd1cmF0aW9uKTsKKyAgICAvLyBXZWJBdXRobgogICAgIHZvaWQgYWRkVGVzdEtleVRv
S2V5Y2hhaW4oRE9NU3RyaW5nIHByaXZhdGVLZXlCYXNlNjQsIERPTVN0cmluZyBhdHRyTGFiZWws
IERPTVN0cmluZyBhcHBsaWNhdGlvblRhZ0Jhc2U2NCk7CiAgICAgdm9pZCBjbGVhblVwS2V5Y2hh
aW4oRE9NU3RyaW5nIGF0dHJMYWJlbCwgb3B0aW9uYWwgRE9NU3RyaW5nIGFwcGxpY2F0aW9uVGFn
QmFzZTY0KTsKICAgICBib29sZWFuIGtleUV4aXN0c0luS2V5Y2hhaW4oRE9NU3RyaW5nIGF0dHJM
YWJlbCwgRE9NU3RyaW5nIGFwcGxpY2F0aW9uVGFnQmFzZTY0KTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDVmZWE4
M2RjZjlmNGFhOGZhYmYxMmYzZGY4ZmNmZmM1MDI4YTI2MGIuLjQ2MTdlZTNkMzQxZGMxYTBlN2Zi
M2MwMWJlZGI1OGRmNWVlODdhODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMjYyOCwzMDEgKzI2MjgsNyBAQCB2
b2lkIFRlc3RSdW5uZXI6OnNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQoZG91YmxlIHNlY29u
ZHMpCiAgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpz
aW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgp
LCBudWxscHRyKTsKIH0KIAotLy8gV2ViQXV0aE4KLXZvaWQgVGVzdFJ1bm5lcjo6c2V0V2ViQXV0
aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihKU1ZhbHVlUmVmIGNvbmZpZ3VyYXRpb25WYWx1
ZSkKLXsKLSAgICBhdXRvJiBpbmplY3RlZEJ1bmRsZSA9IEluamVjdGVkQnVuZGxlOjpzaW5nbGV0
b24oKTsKLSAgICBXS0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1h
aW5GcmFtZShpbmplY3RlZEJ1bmRsZS5wYWdlKCktPnBhZ2UoKSk7Ci0gICAgSlNDb250ZXh0UmVm
IGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsK
LSAgICBpZiAoIUpTVmFsdWVJc09iamVjdChjb250ZXh0LCBjb25maWd1cmF0aW9uVmFsdWUpKQot
ICAgICAgICByZXR1cm47Ci0gICAgSlNPYmplY3RSZWYgY29uZmlndXJhdGlvbiA9IEpTVmFsdWVU
b09iamVjdChjb250ZXh0LCBjb25maWd1cmF0aW9uVmFsdWUsIDApOwotCi0gICAgVmVjdG9yPFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPj4gY29uZmlndXJhdGlvbktleXM7Ci0gICAgVmVjdG9yPFdL
UmV0YWluUHRyPFdLVHlwZVJlZj4+IGNvbmZpZ3VyYXRpb25WYWx1ZXM7Ci0KLSAgICBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gc2lsZW50RmFpbHVyZVByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInNpbGVudEZhaWx1cmUiKSk7Ci0gICAgSlNWYWx1ZVJl
ZiBzaWxlbnRGYWlsdXJlVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGNvbmZp
Z3VyYXRpb24sIHNpbGVudEZhaWx1cmVQcm9wZXJ0eU5hbWUuZ2V0KCksIDApOwotICAgIGlmICgh
SlNWYWx1ZUlzVW5kZWZpbmVkKGNvbnRleHQsIHNpbGVudEZhaWx1cmVWYWx1ZSkpIHsKLSAgICAg
ICAgaWYgKCFKU1ZhbHVlSXNCb29sZWFuKGNvbnRleHQsIHNpbGVudEZhaWx1cmVWYWx1ZSkpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGJvb2wgc2lsZW50RmFpbHVyZSA9IEpTVmFsdWVU
b0Jvb2xlYW4oY29udGV4dCwgc2lsZW50RmFpbHVyZVZhbHVlKTsKLSAgICAgICAgY29uZmlndXJh
dGlvbktleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNp
bGVudEZhaWx1cmUiKSkpOwotICAgICAgICBjb25maWd1cmF0aW9uVmFsdWVzLmFwcGVuZChhZG9w
dFdLKFdLQm9vbGVhbkNyZWF0ZShzaWxlbnRGYWlsdXJlKSkuZ2V0KCkpOwotICAgIH0KLQotICAg
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBsb2NhbFByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImxvY2FsIikpOwotICAgIEpTVmFsdWVSZWYgbG9jYWxW
YWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgY29uZmlndXJhdGlvbiwgbG9jYWxQ
cm9wZXJ0eU5hbWUuZ2V0KCksIDApOwotICAgIGlmICghSlNWYWx1ZUlzVW5kZWZpbmVkKGNvbnRl
eHQsIGxvY2FsVmFsdWUpICYmICFKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIGxvY2FsVmFsdWUpKSB7
Ci0gICAgICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIGxvY2FsVmFsdWUpKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBKU09iamVjdFJlZiBsb2NhbCA9IEpTVmFsdWVUb09i
amVjdChjb250ZXh0LCBsb2NhbFZhbHVlLCAwKTsKLQotICAgICAgICBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gYWNjZXB0QXV0aGVudGljYXRpb25Qcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJhY2NlcHRBdXRoZW50aWNhdGlvbiIpKTsKLSAgICAgICAg
SlNWYWx1ZVJlZiBhY2NlcHRBdXRoZW50aWNhdGlvblZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0
eShjb250ZXh0LCBsb2NhbCwgYWNjZXB0QXV0aGVudGljYXRpb25Qcm9wZXJ0eU5hbWUuZ2V0KCks
IDApOwotICAgICAgICBpZiAoIUpTVmFsdWVJc0Jvb2xlYW4oY29udGV4dCwgYWNjZXB0QXV0aGVu
dGljYXRpb25WYWx1ZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGJvb2wgYWNjZXB0
QXV0aGVudGljYXRpb24gPSBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFjY2VwdEF1dGhlbnRp
Y2F0aW9uVmFsdWUpOwotCi0gICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhY2NlcHRB
dHRlc3RhdGlvblByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoImFjY2VwdEF0dGVzdGF0aW9uIikpOwotICAgICAgICBKU1ZhbHVlUmVmIGFjY2VwdEF0dGVz
dGF0aW9uVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGxvY2FsLCBhY2NlcHRB
dHRlc3RhdGlvblByb3BlcnR5TmFtZS5nZXQoKSwgMCk7Ci0gICAgICAgIGlmICghSlNWYWx1ZUlz
Qm9vbGVhbihjb250ZXh0LCBhY2NlcHRBdHRlc3RhdGlvblZhbHVlKSkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgYm9vbCBhY2NlcHRBdHRlc3RhdGlvbiA9IEpTVmFsdWVUb0Jvb2xlYW4o
Y29udGV4dCwgYWNjZXB0QXR0ZXN0YXRpb25WYWx1ZSk7Ci0KLSAgICAgICAgVmVjdG9yPFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPj4gbG9jYWxLZXlzOwotICAgICAgICBWZWN0b3I8V0tSZXRhaW5Q
dHI8V0tUeXBlUmVmPj4gbG9jYWxWYWx1ZXM7Ci0gICAgICAgIGxvY2FsS2V5cy5hcHBlbmQoYWRv
cHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQWNjZXB0QXV0aGVudGljYXRpb24i
KSkpOwotICAgICAgICBsb2NhbFZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUo
YWNjZXB0QXV0aGVudGljYXRpb24pKS5nZXQoKSk7Ci0gICAgICAgIGxvY2FsS2V5cy5hcHBlbmQo
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQWNjZXB0QXR0ZXN0YXRpb24i
KSkpOwotICAgICAgICBsb2NhbFZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUo
YWNjZXB0QXR0ZXN0YXRpb24pKS5nZXQoKSk7Ci0KLSAgICAgICAgaWYgKGFjY2VwdEF0dGVzdGF0
aW9uKSB7Ci0gICAgICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcHJpdmF0ZUtleUJh
c2U2NFByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInBy
aXZhdGVLZXlCYXNlNjQiKSk7Ci0gICAgICAgICAgICBKU1ZhbHVlUmVmIHByaXZhdGVLZXlCYXNl
NjRWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgbG9jYWwsIHByaXZhdGVLZXlC
YXNlNjRQcm9wZXJ0eU5hbWUuZ2V0KCksIDApOwotICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNT
dHJpbmcoY29udGV4dCwgcHJpdmF0ZUtleUJhc2U2NFZhbHVlKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiB1c2VyQ2VydGlm
aWNhdGVCYXNlNjRQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJ1c2VyQ2VydGlmaWNhdGVCYXNlNjQiKSk7Ci0gICAgICAgICAgICBKU1ZhbHVlUmVmIHVz
ZXJDZXJ0aWZpY2F0ZUJhc2U2NFZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBs
b2NhbCwgdXNlckNlcnRpZmljYXRlQmFzZTY0UHJvcGVydHlOYW1lLmdldCgpLCAwKTsKLSAgICAg
ICAgICAgIGlmICghSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIHVzZXJDZXJ0aWZpY2F0ZUJhc2U2
NFZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBpbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0UHJvcGVydHlO
YW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiaW50ZXJtZWRpYXRlQ0FD
ZXJ0aWZpY2F0ZUJhc2U2NCIpKTsKLSAgICAgICAgICAgIEpTVmFsdWVSZWYgaW50ZXJtZWRpYXRl
Q0FDZXJ0aWZpY2F0ZUJhc2U2NFZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBs
b2NhbCwgaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NFByb3BlcnR5TmFtZS5nZXQoKSwg
MCk7Ci0gICAgICAgICAgICBpZiAoIUpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCBpbnRlcm1lZGlh
dGVDQUNlcnRpZmljYXRlQmFzZTY0VmFsdWUpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICAgICAgbG9jYWxLZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJQcml2YXRlS2V5QmFzZTY0IikpKTsKLSAgICAgICAgICAgIGxvY2FsVmFsdWVz
LmFwcGVuZCh0b1dLKGFkb3B0KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgcHJpdmF0ZUtl
eUJhc2U2NFZhbHVlLCAwKSkuZ2V0KCkpKTsKLSAgICAgICAgICAgIGxvY2FsS2V5cy5hcHBlbmQo
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVXNlckNlcnRpZmljYXRlQmFz
ZTY0IikpKTsKLSAgICAgICAgICAgIGxvY2FsVmFsdWVzLmFwcGVuZCh0b1dLKGFkb3B0KEpTVmFs
dWVUb1N0cmluZ0NvcHkoY29udGV4dCwgdXNlckNlcnRpZmljYXRlQmFzZTY0VmFsdWUsIDApKS5n
ZXQoKSkpOwotICAgICAgICAgICAgbG9jYWxLZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJJbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0IikpKTsK
LSAgICAgICAgICAgIGxvY2FsVmFsdWVzLmFwcGVuZCh0b1dLKGFkb3B0KEpTVmFsdWVUb1N0cmlu
Z0NvcHkoY29udGV4dCwgaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NFZhbHVlLCAwKSku
Z2V0KCkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBw
cmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0UHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygicHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NCIpKTsKLSAgICAgICAg
SlNWYWx1ZVJlZiBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0VmFsdWUgPSBKU09iamVjdEdldFBy
b3BlcnR5KGNvbnRleHQsIGxvY2FsLCBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0UHJvcGVydHlO
YW1lLmdldCgpLCAwKTsKLSAgICAgICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwg
cHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NFZhbHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChjb250ZXh0
LCBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0VmFsdWUpKSB7Ci0gICAgICAgICAgICBpZiAoIUpT
VmFsdWVJc1N0cmluZyhjb250ZXh0LCBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0VmFsdWUpKQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgbG9jYWxLZXlzLmFwcGVuZChh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJQcmVmZXJyZWRVc2VyaGFuZGxl
QmFzZTY0IikpKTsKLSAgICAgICAgICAgIGxvY2FsVmFsdWVzLmFwcGVuZCh0b1dLKGFkb3B0KEpT
VmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NFZhbHVl
LCAwKSkuZ2V0KCkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIFZlY3RvcjxXS1N0cmluZ1JlZj4g
cmF3TG9jYWxLZXlzOwotICAgICAgICBWZWN0b3I8V0tUeXBlUmVmPiByYXdMb2NhbFZhbHVlczsK
LSAgICAgICAgcmF3TG9jYWxLZXlzLnJlc2l6ZShsb2NhbEtleXMuc2l6ZSgpKTsKLSAgICAgICAg
cmF3TG9jYWxWYWx1ZXMucmVzaXplKGxvY2FsVmFsdWVzLnNpemUoKSk7Ci0gICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbG9jYWxLZXlzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBy
YXdMb2NhbEtleXNbaV0gPSBsb2NhbEtleXNbaV0uZ2V0KCk7Ci0gICAgICAgICAgICByYXdMb2Nh
bFZhbHVlc1tpXSA9IGxvY2FsVmFsdWVzW2ldLmdldCgpOwotICAgICAgICB9Ci0KLSAgICAgICAg
Y29uZmlndXJhdGlvbktleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIkxvY2FsIikpKTsKLSAgICAgICAgY29uZmlndXJhdGlvblZhbHVlcy5hcHBlbmQoYWRv
cHRXSyhXS0RpY3Rpb25hcnlDcmVhdGUocmF3TG9jYWxLZXlzLmRhdGEoKSwgcmF3TG9jYWxWYWx1
ZXMuZGF0YSgpLCByYXdMb2NhbEtleXMuc2l6ZSgpKSkpOwotICAgIH0KLQotICAgIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBoaWRQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJoaWQiKSk7Ci0gICAgSlNWYWx1ZVJlZiBoaWRWYWx1ZSA9IEpTT2JqZWN0
R2V0UHJvcGVydHkoY29udGV4dCwgY29uZmlndXJhdGlvbiwgaGlkUHJvcGVydHlOYW1lLmdldCgp
LCAwKTsKLSAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCBoaWRWYWx1ZSkgJiYg
IUpTVmFsdWVJc051bGwoY29udGV4dCwgaGlkVmFsdWUpKSB7Ci0gICAgICAgIGlmICghSlNWYWx1
ZUlzT2JqZWN0KGNvbnRleHQsIGhpZFZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgSlNPYmplY3RSZWYgaGlkID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGhpZFZhbHVlLCAw
KTsKLQotICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc3RhZ2VQcm9wZXJ0eU5hbWUo
QWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJzdGFnZSIpKTsKLSAgICAgICAg
SlNWYWx1ZVJlZiBzdGFnZVZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBoaWQs
IHN0YWdlUHJvcGVydHlOYW1lLmdldCgpLCAwKTsKLSAgICAgICAgaWYgKCFKU1ZhbHVlSXNTdHJp
bmcoY29udGV4dCwgc3RhZ2VWYWx1ZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN1YlN0YWdlUHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygic3ViU3RhZ2UiKSk7Ci0gICAgICAgIEpTVmFsdWVS
ZWYgc3ViU3RhZ2VWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgaGlkLCBzdWJT
dGFnZVByb3BlcnR5TmFtZS5nZXQoKSwgMCk7Ci0gICAgICAgIGlmICghSlNWYWx1ZUlzU3RyaW5n
KGNvbnRleHQsIHN1YlN0YWdlVmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBlcnJvclByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImVycm9yIikpOwotICAgICAgICBKU1ZhbHVlUmVmIGVy
cm9yVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGhpZCwgZXJyb3JQcm9wZXJ0
eU5hbWUuZ2V0KCksIDApOwotICAgICAgICBpZiAoIUpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCBl
cnJvclZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBWZWN0b3I8V0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+PiBoaWRLZXlzOwotICAgICAgICBWZWN0b3I8V0tSZXRhaW5QdHI8
V0tUeXBlUmVmPj4gaGlkVmFsdWVzOwotICAgICAgICBoaWRLZXlzLmFwcGVuZChhZG9wdFdLKFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdGFnZSIpKSk7Ci0gICAgICAgIGhpZFZhbHVl
cy5hcHBlbmQodG9XSyhhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHN0YWdlVmFs
dWUsIDApKS5nZXQoKSkpOwotICAgICAgICBoaWRLZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdWJTdGFnZSIpKSk7Ci0gICAgICAgIGhpZFZhbHVlcy5h
cHBlbmQodG9XSyhhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHN1YlN0YWdlVmFs
dWUsIDApKS5nZXQoKSkpOwotICAgICAgICBoaWRLZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFcnJvciIpKSk7Ci0gICAgICAgIGhpZFZhbHVlcy5hcHBl
bmQodG9XSyhhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGVycm9yVmFsdWUsIDAp
KS5nZXQoKSkpOwotCi0gICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwYXlsb2FkQmFz
ZTY0UHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygicGF5
bG9hZEJhc2U2NCIpKTsKLSAgICAgICAgSlNWYWx1ZVJlZiBwYXlsb2FkQmFzZTY0VmFsdWUgPSBK
U09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGhpZCwgcGF5bG9hZEJhc2U2NFByb3BlcnR5TmFt
ZS5nZXQoKSwgMCk7Ci0gICAgICAgIGlmICghSlNWYWx1ZUlzVW5kZWZpbmVkKGNvbnRleHQsIHBh
eWxvYWRCYXNlNjRWYWx1ZSkgJiYgIUpTVmFsdWVJc051bGwoY29udGV4dCwgcGF5bG9hZEJhc2U2
NFZhbHVlKSkgewotICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNBcnJheShjb250ZXh0LCBwYXls
b2FkQmFzZTY0VmFsdWUpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAg
SlNPYmplY3RSZWYgcGF5bG9hZEJhc2U2NCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBwYXls
b2FkQmFzZTY0VmFsdWUsIG51bGxwdHIpOwotICAgICAgICAgICAgc3RhdGljIGF1dG8gbGVuZ3Ro
UHJvcGVydHkgPSBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibGVuZ3RoIikp
OwotICAgICAgICAgICAgSlNWYWx1ZVJlZiBwYXlsb2FkQmFzZTY0TGVuZ3RoVmFsdWUgPSBKU09i
amVjdEdldFByb3BlcnR5KGNvbnRleHQsIHBheWxvYWRCYXNlNjQsIGxlbmd0aFByb3BlcnR5Lmdl
dCgpLCBudWxscHRyKTsKLSAgICAgICAgICAgIGlmICghSlNWYWx1ZUlzTnVtYmVyKGNvbnRleHQs
IHBheWxvYWRCYXNlNjRMZW5ndGhWYWx1ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgICAgICBhdXRvIHBheWxvYWRCYXNlNjRzID0gYWRvcHRXSyhXS011dGFibGVBcnJheUNy
ZWF0ZSgpKTsKLSAgICAgICAgICAgIGF1dG8gcGF5bG9hZEJhc2U2NExlbmd0aCA9IHN0YXRpY19j
YXN0PHNpemVfdD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIHBheWxvYWRCYXNlNjRMZW5ndGhW
YWx1ZSwgbnVsbHB0cikpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXls
b2FkQmFzZTY0TGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVmIHBheWxv
YWRCYXNlNjRWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIHBheWxv
YWRCYXNlNjQsIGksIG51bGxwdHIpOwotICAgICAgICAgICAgICAgIGlmICghSlNWYWx1ZUlzU3Ry
aW5nKGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1ZSkpCi0gICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKHBheWxvYWRCYXNlNjRz
LmdldCgpLCB0b1dLKGFkb3B0KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgcGF5bG9hZEJh
c2U2NFZhbHVlLCAwKSkuZ2V0KCkpLmdldCgpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgaGlkS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
UGF5bG9hZEJhc2U2NCIpKSk7Ci0gICAgICAgICAgICBoaWRWYWx1ZXMuYXBwZW5kKHBheWxvYWRC
YXNlNjRzKTsKLSAgICAgICAgfQotCi0gICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBp
c1UyZlByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImlz
VTJmIikpOwotICAgICAgICBKU1ZhbHVlUmVmIGlzVTJmVmFsdWUgPSBKU09iamVjdEdldFByb3Bl
cnR5KGNvbnRleHQsIGhpZCwgaXNVMmZQcm9wZXJ0eU5hbWUuZ2V0KCksIDApOwotICAgICAgICBp
ZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCBpc1UyZlZhbHVlKSAmJiAhSlNWYWx1ZUlz
TnVsbChjb250ZXh0LCBpc1UyZlZhbHVlKSkgewotICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNC
b29sZWFuKGNvbnRleHQsIGlzVTJmVmFsdWUpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIGJvb2wgaXNVMmYgPSBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGlzVTJmVmFs
dWUpOwotICAgICAgICAgICAgaGlkS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiSXNVMmYiKSkpOwotICAgICAgICAgICAgaGlkVmFsdWVzLmFwcGVuZChh
ZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShpc1UyZikpLmdldCgpKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBrZWVwQWxpdmVQcm9wZXJ0eU5hbWUoQWRvcHQs
IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJrZWVwQWxpdmUiKSk7Ci0gICAgICAgIEpT
VmFsdWVSZWYga2VlcEFsaXZlVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGhp
ZCwga2VlcEFsaXZlUHJvcGVydHlOYW1lLmdldCgpLCAwKTsKLSAgICAgICAgaWYgKCFKU1ZhbHVl
SXNVbmRlZmluZWQoY29udGV4dCwga2VlcEFsaXZlVmFsdWUpICYmICFKU1ZhbHVlSXNOdWxsKGNv
bnRleHQsIGtlZXBBbGl2ZVZhbHVlKSkgewotICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNCb29s
ZWFuKGNvbnRleHQsIGtlZXBBbGl2ZVZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICBib29sIGtlZXBBbGl2ZSA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwga2Vl
cEFsaXZlVmFsdWUpOwotICAgICAgICAgICAgaGlkS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiS2VlcEFsaXZlIikpKTsKLSAgICAgICAgICAgIGhpZFZh
bHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoa2VlcEFsaXZlKSkuZ2V0KCkpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGZhc3REYXRhQXJy
aXZhbFByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImZh
c3REYXRhQXJyaXZhbCIpKTsKLSAgICAgICAgSlNWYWx1ZVJlZiBmYXN0RGF0YUFycml2YWxWYWx1
ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgaGlkLCBmYXN0RGF0YUFycml2YWxQcm9w
ZXJ0eU5hbWUuZ2V0KCksIDApOwotICAgICAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChjb250
ZXh0LCBmYXN0RGF0YUFycml2YWxWYWx1ZSkgJiYgIUpTVmFsdWVJc051bGwoY29udGV4dCwgZmFz
dERhdGFBcnJpdmFsVmFsdWUpKSB7Ci0gICAgICAgICAgICBpZiAoIUpTVmFsdWVJc0Jvb2xlYW4o
Y29udGV4dCwgZmFzdERhdGFBcnJpdmFsVmFsdWUpKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIGJvb2wgZmFzdERhdGFBcnJpdmFsID0gSlNWYWx1ZVRvQm9vbGVhbihjb250
ZXh0LCBmYXN0RGF0YUFycml2YWxWYWx1ZSk7Ci0gICAgICAgICAgICBoaWRLZXlzLmFwcGVuZChh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJGYXN0RGF0YUFycml2YWwiKSkp
OwotICAgICAgICAgICAgaGlkVmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShm
YXN0RGF0YUFycml2YWwpKS5nZXQoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gY29udGludWVBZnRlckVycm9yRGF0YVByb3BlcnR5TmFtZShBZG9wdCwg
SlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEiKSk7
Ci0gICAgICAgIEpTVmFsdWVSZWYgY29udGludWVBZnRlckVycm9yRGF0YVZhbHVlID0gSlNPYmpl
Y3RHZXRQcm9wZXJ0eShjb250ZXh0LCBoaWQsIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGFQcm9wZXJ0
eU5hbWUuZ2V0KCksIDApOwotICAgICAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0
LCBjb250aW51ZUFmdGVyRXJyb3JEYXRhVmFsdWUpICYmICFKU1ZhbHVlSXNOdWxsKGNvbnRleHQs
IGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGFWYWx1ZSkpIHsKLSAgICAgICAgICAgIGlmICghSlNWYWx1
ZUlzQm9vbGVhbihjb250ZXh0LCBjb250aW51ZUFmdGVyRXJyb3JEYXRhVmFsdWUpKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGJvb2wgY29udGludWVBZnRlckVycm9yRGF0
YSA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgY29udGludWVBZnRlckVycm9yRGF0YVZhbHVl
KTsKLSAgICAgICAgICAgIGhpZEtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIkNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEiKSkpOwotICAgICAgICAgICAgaGlk
VmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShjb250aW51ZUFmdGVyRXJyb3JE
YXRhKSkuZ2V0KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IGNhbkRvd25ncmFkZVByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoImNhbkRvd25ncmFkZSIpKTsKLSAgICAgICAgSlNWYWx1ZVJlZiBjYW5Eb3duZ3Jh
ZGVWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgaGlkLCBjYW5Eb3duZ3JhZGVQ
cm9wZXJ0eU5hbWUuZ2V0KCksIDApOwotICAgICAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChj
b250ZXh0LCBjYW5Eb3duZ3JhZGVWYWx1ZSkgJiYgIUpTVmFsdWVJc051bGwoY29udGV4dCwgY2Fu
RG93bmdyYWRlVmFsdWUpKSB7Ci0gICAgICAgICAgICBpZiAoIUpTVmFsdWVJc0Jvb2xlYW4oY29u
dGV4dCwgY2FuRG93bmdyYWRlVmFsdWUpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIGJvb2wgY2FuRG93bmdyYWRlID0gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBjYW5E
b3duZ3JhZGVWYWx1ZSk7Ci0gICAgICAgICAgICBoaWRLZXlzLmFwcGVuZChhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYW5Eb3duZ3JhZGUiKSkpOwotICAgICAgICAgICAg
aGlkVmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShjYW5Eb3duZ3JhZGUpKS5n
ZXQoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBWZWN0b3I8V0tTdHJpbmdSZWY+IHJhd0hpZEtl
eXM7Ci0gICAgICAgIFZlY3RvcjxXS1R5cGVSZWY+IHJhd0hpZFZhbHVlczsKLSAgICAgICAgcmF3
SGlkS2V5cy5yZXNpemUoaGlkS2V5cy5zaXplKCkpOwotICAgICAgICByYXdIaWRWYWx1ZXMucmVz
aXplKGhpZFZhbHVlcy5zaXplKCkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGhp
ZEtleXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIHJhd0hpZEtleXNbaV0gPSBoaWRLZXlz
W2ldLmdldCgpOwotICAgICAgICAgICAgcmF3SGlkVmFsdWVzW2ldID0gaGlkVmFsdWVzW2ldLmdl
dCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uZmlndXJhdGlvbktleXMuYXBwZW5kKGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkhpZCIpKSk7Ci0gICAgICAgIGNvbmZp
Z3VyYXRpb25WYWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd0hpZEtl
eXMuZGF0YSgpLCByYXdIaWRWYWx1ZXMuZGF0YSgpLCByYXdIaWRLZXlzLnNpemUoKSkpKTsKLSAg
ICB9Ci0KLSAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbmZjUHJvcGVydHlOYW1lKEFkb3B0
LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibmZjIikpOwotICAgIEpTVmFsdWVSZWYg
bmZjVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGNvbmZpZ3VyYXRpb24sIG5m
Y1Byb3BlcnR5TmFtZS5nZXQoKSwgMCk7Ci0gICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29u
dGV4dCwgbmZjVmFsdWUpICYmICFKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIG5mY1ZhbHVlKSkgewot
ICAgICAgICBpZiAoIUpTVmFsdWVJc09iamVjdChjb250ZXh0LCBuZmNWYWx1ZSkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIEpTT2JqZWN0UmVmIG5mYyA9IEpTVmFsdWVUb09iamVjdChj
b250ZXh0LCBuZmNWYWx1ZSwgMCk7Ci0KLSAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IGVycm9yUHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
ZXJyb3IiKSk7Ci0gICAgICAgIEpTVmFsdWVSZWYgZXJyb3JWYWx1ZSA9IEpTT2JqZWN0R2V0UHJv
cGVydHkoY29udGV4dCwgbmZjLCBlcnJvclByb3BlcnR5TmFtZS5nZXQoKSwgMCk7Ci0gICAgICAg
IGlmICghSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIGVycm9yVmFsdWUpKQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4+IG5mY0tl
eXM7Ci0gICAgICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1R5cGVSZWY+PiBuZmNWYWx1ZXM7Ci0g
ICAgICAgIG5mY0tleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIkVycm9yIikpKTsKLSAgICAgICAgbmZjVmFsdWVzLmFwcGVuZCh0b1dLKGFkb3B0KEpTVmFs
dWVUb1N0cmluZ0NvcHkoY29udGV4dCwgZXJyb3JWYWx1ZSwgMCkpLmdldCgpKSk7Ci0KLSAgICAg
ICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBheWxvYWRCYXNlNjRQcm9wZXJ0eU5hbWUoQWRv
cHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJwYXlsb2FkQmFzZTY0IikpOwotICAg
ICAgICBKU1ZhbHVlUmVmIHBheWxvYWRCYXNlNjRWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHko
Y29udGV4dCwgbmZjLCBwYXlsb2FkQmFzZTY0UHJvcGVydHlOYW1lLmdldCgpLCAwKTsKLSAgICAg
ICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlKSAm
JiAhSlNWYWx1ZUlzTnVsbChjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFsdWUpKSB7Ci0gICAgICAg
ICAgICBpZiAoIUpTVmFsdWVJc0FycmF5KGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1ZSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBKU09iamVjdFJlZiBwYXlsb2Fk
QmFzZTY0ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1ZSwgbnVs
bHB0cik7Ci0gICAgICAgICAgICBzdGF0aWMgYXV0byBsZW5ndGhQcm9wZXJ0eSA9IGFkb3B0KEpT
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJsZW5ndGgiKSk7Ci0gICAgICAgICAgICBKU1Zh
bHVlUmVmIHBheWxvYWRCYXNlNjRMZW5ndGhWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29u
dGV4dCwgcGF5bG9hZEJhc2U2NCwgbGVuZ3RoUHJvcGVydHkuZ2V0KCksIG51bGxwdHIpOwotICAg
ICAgICAgICAgaWYgKCFKU1ZhbHVlSXNOdW1iZXIoY29udGV4dCwgcGF5bG9hZEJhc2U2NExlbmd0
aFZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGF1dG8gcGF5
bG9hZEJhc2U2NHMgPSBhZG9wdFdLKFdLTXV0YWJsZUFycmF5Q3JlYXRlKCkpOwotICAgICAgICAg
ICAgYXV0byBwYXlsb2FkQmFzZTY0TGVuZ3RoID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihKU1ZhbHVl
VG9OdW1iZXIoY29udGV4dCwgcGF5bG9hZEJhc2U2NExlbmd0aFZhbHVlLCBudWxscHRyKSk7Ci0g
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBheWxvYWRCYXNlNjRMZW5ndGg7ICsr
aSkgewotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgcGF5bG9hZEJhc2U2NFZhbHVlID0gSlNP
YmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgcGF5bG9hZEJhc2U2NCwgaSwgbnVsbHB0
cik7Ci0gICAgICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgcGF5bG9h
ZEJhc2U2NFZhbHVlKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICAgICAgV0tBcnJheUFwcGVuZEl0ZW0ocGF5bG9hZEJhc2U2NHMuZ2V0KCksIHRvV0soYWRvcHQo
SlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFsdWUsIDApKS5nZXQo
KSkuZ2V0KCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBuZmNLZXlzLmFwcGVuZChh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJQYXlsb2FkQmFzZTY0IikpKTsK
LSAgICAgICAgICAgIG5mY1ZhbHVlcy5hcHBlbmQocGF5bG9hZEJhc2U2NHMpOwotICAgICAgICB9
Ci0KLSAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IG11bHRpcGxlVGFnc1Byb3BlcnR5
TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIm11bHRpcGxlVGFncyIp
KTsKLSAgICAgICAgSlNWYWx1ZVJlZiBtdWx0aXBsZVRhZ3NWYWx1ZSA9IEpTT2JqZWN0R2V0UHJv
cGVydHkoY29udGV4dCwgbmZjLCBtdWx0aXBsZVRhZ3NQcm9wZXJ0eU5hbWUuZ2V0KCksIDApOwot
ICAgICAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCBtdWx0aXBsZVRhZ3NWYWx1
ZSkgJiYgIUpTVmFsdWVJc051bGwoY29udGV4dCwgbXVsdGlwbGVUYWdzVmFsdWUpKSB7Ci0gICAg
ICAgICAgICBpZiAoIUpTVmFsdWVJc0Jvb2xlYW4oY29udGV4dCwgbXVsdGlwbGVUYWdzVmFsdWUp
KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGJvb2wgbXVsdGlwbGVUYWdz
ID0gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBtdWx0aXBsZVRhZ3NWYWx1ZSk7Ci0gICAgICAg
ICAgICBuZmNLZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJNdWx0aXBsZVRhZ3MiKSkpOwotICAgICAgICAgICAgbmZjVmFsdWVzLmFwcGVuZChhZG9wdFdL
KFdLQm9vbGVhbkNyZWF0ZShtdWx0aXBsZVRhZ3MpKS5nZXQoKSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBWZWN0b3I8V0tTdHJpbmdSZWY+IHJhd05mY0tleXM7Ci0gICAgICAgIFZlY3RvcjxXS1R5
cGVSZWY+IHJhd05mY1ZhbHVlczsKLSAgICAgICAgcmF3TmZjS2V5cy5yZXNpemUobmZjS2V5cy5z
aXplKCkpOwotICAgICAgICByYXdOZmNWYWx1ZXMucmVzaXplKG5mY1ZhbHVlcy5zaXplKCkpOwot
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5mY0tleXMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgICAgIHJhd05mY0tleXNbaV0gPSBuZmNLZXlzW2ldLmdldCgpOwotICAgICAgICAgICAg
cmF3TmZjVmFsdWVzW2ldID0gbmZjVmFsdWVzW2ldLmdldCgpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgY29uZmlndXJhdGlvbktleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIk5mYyIpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb25WYWx1ZXMuYXBwZW5kKGFk
b3B0V0soV0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd05mY0tleXMuZGF0YSgpLCByYXdOZmNWYWx1ZXMu
ZGF0YSgpLCByYXdOZmNLZXlzLnNpemUoKSkpKTsKLSAgICB9Ci0KLSAgICBWZWN0b3I8V0tTdHJp
bmdSZWY+IHJhd0NvbmZpZ3VyYXRpb25LZXlzOwotICAgIFZlY3RvcjxXS1R5cGVSZWY+IHJhd0Nv
bmZpZ3VyYXRpb25WYWx1ZXM7Ci0gICAgcmF3Q29uZmlndXJhdGlvbktleXMucmVzaXplKGNvbmZp
Z3VyYXRpb25LZXlzLnNpemUoKSk7Ci0gICAgcmF3Q29uZmlndXJhdGlvblZhbHVlcy5yZXNpemUo
Y29uZmlndXJhdGlvblZhbHVlcy5zaXplKCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
Y29uZmlndXJhdGlvbktleXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgcmF3Q29uZmlndXJhdGlv
bktleXNbaV0gPSBjb25maWd1cmF0aW9uS2V5c1tpXS5nZXQoKTsKLSAgICAgICAgcmF3Q29uZmln
dXJhdGlvblZhbHVlc1tpXSA9IGNvbmZpZ3VyYXRpb25WYWx1ZXNbaV0uZ2V0KCk7Ci0gICAgfQot
Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbiIpKTsKLSAgICBXS1JldGFpblB0cjxXS0RpY3Rpb25hcnlSZWY+IG1lc3NhZ2VCb2R5
ID0gYWRvcHRXSyhXS0RpY3Rpb25hcnlDcmVhdGUocmF3Q29uZmlndXJhdGlvbktleXMuZGF0YSgp
LCByYXdDb25maWd1cmF0aW9uVmFsdWVzLmRhdGEoKSwgcmF3Q29uZmlndXJhdGlvbktleXMuc2l6
ZSgpKSk7Ci0gICAgCi0gICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKGluamVjdGVk
QnVuZGxlLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51
bGxwdHIpOwotfQotCisvLyBXZWJBdXRobgogdm9pZCBUZXN0UnVubmVyOjphZGRUZXN0S2V5VG9L
ZXljaGFpbihKU1N0cmluZ1JlZiBwcml2YXRlS2V5QmFzZTY0LCBKU1N0cmluZ1JlZiBhdHRyTGFi
ZWwsIEpTU3RyaW5nUmVmIGFwcGxpY2F0aW9uVGFnQmFzZTY0KQogewogICAgIFZlY3RvcjxXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4+IGtleXM7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IDVmMjNhODBlNTFkN2E0ZGVkMmQ3
ZDRmZjRkNGZjZjFhOWM3MzNhYjIuLjYyNzFkNTIzMTE0ZDg2OWM0ZmEyNjJhNzk1YmNkZmQ2MDQ4
MjdhYjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5oCkBAIC00OTAsOSArNDkwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2VuZERp
c3BsYXlDb25maWd1cmF0aW9uQ2hhbmdlZE1lc3NhZ2VGb3JUZXN0aW5nKCk7CiAKICAgICB2b2lk
IHNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQoZG91YmxlIHNlY29uZHMpOwotICAgIAotICAg
IC8vIFdlYkF1dGhOCi0gICAgdm9pZCBzZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0
aW9uKEpTVmFsdWVSZWYpOworCiAgICAgLy8gRklYTUUoMTg5ODc2KQogICAgIHZvaWQgYWRkVGVz
dEtleVRvS2V5Y2hhaW4oSlNTdHJpbmdSZWYgcHJpdmF0ZUtleUJhc2U2NCwgSlNTdHJpbmdSZWYg
YXR0ckxhYmVsLCBKU1N0cmluZ1JlZiBhcHBsaWNhdGlvblRhZ0Jhc2U2NCk7CiAgICAgdm9pZCBj
bGVhblVwS2V5Y2hhaW4oSlNTdHJpbmdSZWYgYXR0ckxhYmVsLCBKU1N0cmluZ1JlZiBhcHBsaWNh
dGlvblRhZ0Jhc2U2NCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
CmluZGV4IGVjZDdkOWI4Y2NiMTNjZjRmNTNiNDBlZDc3ZjgxMmU2NjJjODBmY2UuLjY1N2I3OWI5
MzBkODFkNjg1NjhkYjczMWJkZWE1MDg3OTM3NmRmMDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zNjIxLDExICszNjIxLDYgQEAgdm9pZCBUZXN0Q29u
dHJvbGxlcjo6c2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dEZvclRlc3RpbmcoZG91YmxlIHNl
Y29uZHMpCiAgICAgV0tDb250ZXh0U2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dEZvclRlc3Rp
bmcocGxhdGZvcm1Db250ZXh0KCksIHNlY29uZHMpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVy
OjpzZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKFdLRGljdGlvbmFyeVJlZiBj
b25maWd1cmF0aW9uKQotewotICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldFdlYkF1dGhlbnRpY2F0
aW9uTW9ja0NvbmZpZ3VyYXRpb24oVGVzdENvbnRyb2xsZXI6OndlYnNpdGVEYXRhU3RvcmUoKSwg
Y29uZmlndXJhdGlvbik7Ci19Ci0KIHN0cnVjdCBBZENsaWNrQXR0cmlidXRpb25TdHJpbmdSZXN1
bHRDYWxsYmFja0NvbnRleHQgewogICAgIGV4cGxpY2l0IEFkQ2xpY2tBdHRyaWJ1dGlvblN0cmlu
Z1Jlc3VsdENhbGxiYWNrQ29udGV4dChUZXN0Q29udHJvbGxlciYgY29udHJvbGxlcikKICAgICAg
ICAgOiB0ZXN0Q29udHJvbGxlcihjb250cm9sbGVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5oCmluZGV4IDUzMGIzMzQ4NDJiNmMxMmY1YzRjNTViMTc2NTI5ZjM0MjNiZTcz
NjUuLjRiZjkwMjNhYjcyMmEwOTEwMWVkMjUwZmI4MjhjYjdmMmFiNWE0NmUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTI5Niw3ICsyOTYsNiBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nKGRvdWJs
ZSBzZWNvbmRzKTsKIAotICAgIHZvaWQgc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbihXS0RpY3Rpb25hcnlSZWYpOwogICAgIHZvaWQgYWRkVGVzdEtleVRvS2V5Y2hhaW4oY29u
c3QgU3RyaW5nJiBwcml2YXRlS2V5QmFzZTY0LCBjb25zdCBTdHJpbmcmIGF0dHJMYWJlbCwgY29u
c3QgU3RyaW5nJiBhcHBsaWNhdGlvblRhZ0Jhc2U2NCk7CiAgICAgdm9pZCBjbGVhblVwS2V5Y2hh
aW4oY29uc3QgU3RyaW5nJiBhdHRyTGFiZWwsIGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25UYWdC
YXNlNjQpOwogICAgIGJvb2wga2V5RXhpc3RzSW5LZXljaGFpbihjb25zdCBTdHJpbmcmIGF0dHJM
YWJlbCwgY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvblRhZ0Jhc2U2NCk7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IGFlOGQ1OTRkY2E4NzFiMzRmNzI5Nzlj
NDI4MjA5NmZhNGJhMzdiNDcuLmE4ZjlhNzliZTk1ODU3YjcwMGQ3ZmFiNjc3Mjg5NzVjOTk0ZDA0
YjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xNjMw
LDEyICsxNjMwLDYgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlk
UmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCi0gICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVz
c2FnZU5hbWUsICJTZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uIikpIHsKLSAg
ICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0RpY3Rpb25hcnlHZXRU
eXBlSUQoKSk7Ci0gICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRXZWJBdXRo
ZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJlZj4o
bWVzc2FnZUJvZHkpKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCiAgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJBZGRUZXN0S2V5VG9L
ZXljaGFpbiIpKSB7CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0g
V0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOwogICAgICAgICBXS0RpY3Rpb25hcnlSZWYgdGVzdEtl
eURpY3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyODI2ZGUxMmQ4MjMzN2RiYzZlYzcwZmQ4OTBhNWNmM2IwNTM5YWVkLi5lOTU3ZGVm
MTVkNDcxZjNjNjU2ZTYyYTA2MjRlOGRhODFmMzliMWU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAK
KzIwMTktMTAtMDggIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAg
ICBbV2ViQXV0aG5dIE1vdmUgdGhlIG1vY2sgdGVzdGluZyBlbnRyYW5jZSB0byBJbnRlcm5hbHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjU2MAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU5NzM3OTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1m
YWlsdXJlLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQt
c3VjY2Vzcy5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL2N0YXAtbmZj
LWZhaWx1cmUuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9pZGwuaHR0
cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtY3JlYXRlLWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1oaWQuaHR0
cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2Fs
Lmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWNyZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYtc2lsZW50
Lmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS5odHRwcy5odG1s
OgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVh
dGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbDoKKyAg
ICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1
Y2Nlc3MtbmZjLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLXUyZi5odHRwcy5odG1sOgorICAgICAgICAq
IGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQt
c2lsZW50Lmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC1zaWxl
bnQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbmZjLmh0dHBzLmh0
bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdl
dC1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLmh0dHBzLmh0bWw6Cisg
ICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWls
dXJlLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWdldC1zdWNjZXNzLWhpZC5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1sb2NhbC5odHRwcy5o
dG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1n
ZXQtc3VjY2Vzcy1uZmMuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWw6CisgICAgICAg
ICogaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3B1YmxpYy1rZXktY3JlZGVudGlhbC1pcC1h
ZGRyZXNzLmh0dHBzLmh0bWw6CisKIDIwMTktMTAtMDkgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0ZXN0UnVubmVyLnNldFdlYlJUQ1VuaWZpZWRQ
bGFuRW5hYmxlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvY3JlZGVudGlhbC1t
YW5hZ2VtZW50L2NyZWRlbnRpYWxzY29udGFpbmVyLXN0b3JlLWJhc2ljcy5odHRwcy5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvY3JlZGVudGlhbC1tYW5hZ2VtZW50L2NyZWRlbnRpYWxzY29u
dGFpbmVyLXN0b3JlLWJhc2ljcy5odHRwcy5odG1sCmluZGV4IGJjMDIxMTkyZTAwY2ExZmM3MTE2
ZTUyMDBlZGEzNGFmMDllZDBlMTMuLjFhMTk1OWUxYzc2NTI4MDYzY2ZkMDc3NGEzOWNhNGRhZjRk
Y2NjY2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2NyZWRlbnRpYWwtbWFuYWdl
bWVudC9jcmVkZW50aWFsc2NvbnRhaW5lci1zdG9yZS1iYXNpY3MuaHR0cHMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC9jcmVkZW50aWFsLW1hbmFnZW1lbnQvY3JlZGVudGlhbHNjb250
YWluZXItc3RvcmUtYmFzaWNzLmh0dHBzLmh0bWwKQEAgLTQyLDggKzQyLDggQEAKICAgICAgICAg
ICAgIH0KICAgICAgICAgfTsKICAgICAgICAgLy8gQSBtb2NrIGF0dGVzdGF0aW9uIG9iamVjdAot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBb
dGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVy
cm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0
XSB9IH0pOwogICAgICAgICBjb25zdCBjcmVkZW50aWFsID0gYXdhaXQgbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmNyZWF0ZShvcHRpb25zKTsKIAogICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3Rz
KHQsICJOb3RTdXBwb3J0ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5zdG9yZShjcmVk
ZW50aWFsKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFw
LWhpZC1mYWlsdXJlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9j
dGFwLWhpZC1mYWlsdXJlLmh0dHBzLmh0bWwKaW5kZXggNGYwZmQ2YWEwNjYwOWM5NDM1MTZmOWU3
NmE4Mzc2Y2FhNmRhOTJkOS4uOWQ1M2UxZDQ0MDIxNzFiY2Q0ODdmMTEyZTYwNjQyNjZhZmZmMGVk
YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtZmFp
bHVyZS5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAt
aGlkLWZhaWx1cmUuaHR0cHMuaHRtbApAQCAtMjEsNTAgKzIxLDUwIEBACiAgICAgfTsKIAogICAg
IHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogImluaXQiLCBlcnJvcjog
ImRhdGEtbm90LXNlbnQiIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
eyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJkYXRhLW5v
dC1zZW50IiB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93
ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlvbnMpLCAi
T3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiQ1RBUCBISUQgd2l0aCBpbml0IHN1YiBz
dGFnZSBkYXRhIG5vdCBzZW50IGVycm9yIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsK
IAogICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2Nr
Q29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogImluaXQiLCBl
cnJvcjogImVtcHR5LXJlcG9ydCIgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogImluaXQiLCBlcnJvcjogImVt
cHR5LXJlcG9ydCIgfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RB
bGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGRlZmF1bHRPcHRpb25z
KSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIkNUQVAgSElEIHdpdGggaW5pdCBz
dWIgc3RhZ2UgZW1wdHkgcmVwb3J0IGVycm9yIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4i
KTsKIAogICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7Ci0gICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogImluaXQi
LCBlcnJvcjogIndyb25nLWNoYW5uZWwtaWQiIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJy
b3I6ICJ3cm9uZy1jaGFubmVsLWlkIiB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVj
dHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVm
YXVsdE9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiQ1RBUCBISUQg
d2l0aCBpbml0IHN1YiBzdGFnZSB3cm9uZyBjaGFubmVsIGlkIGVycm9yIGluIGEgbW9jayBoaWQg
YXV0aGVudGljYXRvci4iKTsKIAogICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7Ci0gICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2Vi
QXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8iLCBz
dWJTdGFnZTogImluaXQiLCBlcnJvcjogIndyb25nLW5vbmNlIiB9IH0pOworICAgICAgICBpZiAo
d2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAi
aW5pdCIsIGVycm9yOiAid3Jvbmctbm9uY2UiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNl
UmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0
ZShkZWZhdWx0T3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJDVEFQ
IEhJRCB3aXRoIGluaXQgc3ViIHN0YWdlIHdyb25nIG5vbmNlIGVycm9yIGluIGEgbW9jayBoaWQg
YXV0aGVudGljYXRvci4iKTsKIAogICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7Ci0gICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2Vi
QXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8iLCBz
dWJTdGFnZTogIm1zZyIsIGVycm9yOiAiZGF0YS1ub3Qtc2VudCIgfSB9KTsKKyAgICAgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTog
Im1zZyIsIGVycm9yOiAiZGF0YS1ub3Qtc2VudCIgfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21p
c2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3Jl
YXRlKGRlZmF1bHRPcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIkNU
QVAgSElEIHdpdGggbXNnIHN1YiBzdGFnZSBkYXRhIG5vdCBzZW50IGVycm9yIGluIGEgbW9jayBo
aWQgYXV0aGVudGljYXRvci4iKTsKIAogICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7Ci0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8i
LCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAiZW1wdHktcmVwb3J0IiB9IH0pOworICAgICAgICBp
ZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdl
OiAibXNnIiwgZXJyb3I6ICJlbXB0eS1yZXBvcnQiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9t
aXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNy
ZWF0ZShkZWZhdWx0T3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJD
VEFQIEhJRCB3aXRoIG1zZyBzdWIgc3RhZ2UgZW1wdHkgcmVwb3J0IGVycm9yIGluIGEgbW9jayBo
aWQgYXV0aGVudGljYXRvci4iKTsKIAogICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7Ci0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8i
LCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAid3JvbmctY2hhbm5lbC1pZCIgfSB9KTsKKyAgICAg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJT
dGFnZTogIm1zZyIsIGVycm9yOiAid3JvbmctY2hhbm5lbC1pZCIgfSB9KTsKICAgICAgICAgcmV0
dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuY3JlYXRlKGRlZmF1bHRPcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAg
ICAgfSwgIkNUQVAgSElEIHdpdGggbXNnIHN1YiBzdGFnZSB3cm9uZyBjaGFubmVsIGlkIGVycm9y
IGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIAogICAgIHByb21pc2VfdGVzdChmdW5j
dGlvbih0KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBz
dGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAid3JvbmctY2hhbm5lbC1p
ZCIsIHBheWxvYWRCYXNlNjQ6W3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0pOwor
ICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVz
dCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ3cm9uZy1jaGFubmVsLWlkIiwgcGF5bG9hZEJh
c2U2NDpbdGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVy
biBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxz
LmNyZWF0ZShkZWZhdWx0T3B0aW9ucyksICJVbmtub3duIGludGVybmFsIGVycm9yLiBFcnJvciBj
b2RlOiAxOCIpOwogICAgIH0sICJDVEFQIEhJRCB3aXRoIHJlcXVlc3Q6Om1zZyBzdGFnZSB3cm9u
ZyBjaGFubmVsIGlkIGVycm9yIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIDwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQt
c3VjY2Vzcy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1o
aWQtc3VjY2Vzcy5odHRwcy5odG1sCmluZGV4IDhlNWQwOTVlNWZkOTgzZmFhYWM0ZDdlM2E0NjJi
MGNjZGQ5N2Q2MDUuLmI2ZjkxZjhjM2VmYTY5MDc2OGU3N2U1ZGRiMDMzOWE0MGM3ZDk5NzEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLXN1Y2Nlc3Mu
aHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1z
dWNjZXNzLmh0dHBzLmh0bWwKQEAgLTIwLDggKzIwLDggQEAKICAgICB9OwogCiAgICAgcHJvbWlz
ZV90ZXN0KGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9u
KHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNj
ZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdLCBrZWVwQWxp
dmU6IHRydWUgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAg
ICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBh
eWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSwga2VlcEFsaXZlOiB0cnVl
IH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGRlZmF1
bHRPcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgYXNzZXJ0X25vdF9l
cXVhbHMoY3JlZGVudGlhbCwgdW5kZWZpbmVkKTsKICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1
YWxzKGNyZWRlbnRpYWwsIG51bGwpOwpAQCAtMjksOCArMjksOCBAQAogICAgIH0sICJDVEFQIEhJ
RCB3aXRoIGtlZXAgYWxpdmUgbWVzc2FnZSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7
CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewotICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9j
a0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ci
LCBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdENyZWF0aW9uTWVzc2FnZUJh
c2U2NF0sIGZhc3REYXRhQXJyaXZhbDogdHJ1ZSB9IH0pOworICAgICAgICBpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwg
ZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNl
NjRdLCBmYXN0RGF0YUFycml2YWw6IHRydWUgfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRv
ci5jcmVkZW50aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7
CiAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCB1bmRlZmluZWQpOwog
ICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY3JlZGVudGlhbCwgbnVsbCk7CkBAIC0zOCw4
ICszOCw4IEBACiAgICAgfSwgIkNUQVAgSElEIHdpdGggZmFzdCBkYXRhIGFycml2YWwgaW4gYSBt
b2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQp
IHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAi
aW5mbyIsIHN1YlN0YWdlOiAiaW5pdCIsIGVycm9yOiAiZW1wdHktcmVwb3J0IiwgcGF5bG9hZEJh
c2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdLCBjb250aW51ZUFmdGVyRXJyb3JEYXRh
OiB0cnVlIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAg
aW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsg
c3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJlbXB0eS1yZXBvcnQiLCBw
YXlsb2FkQmFzZTY0OiBbdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NF0sIGNvbnRpbnVlQWZ0ZXJF
cnJvckRhdGE6IHRydWUgfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5jcmVhdGUoZGVmYXVsdE9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAg
ICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCB1bmRlZmluZWQpOwogICAgICAgICAgICAg
YXNzZXJ0X25vdF9lcXVhbHMoY3JlZGVudGlhbCwgbnVsbCk7CkBAIC00Nyw4ICs0Nyw4IEBACiAg
ICAgfSwgIkNUQVAgSElEIHdpdGggY29udGludWUgYWZ0ZXIgZW1wdHkgcmVwb3J0IGluIGEgbW9j
ayBoaWQgYXV0aGVudGljYXRvci4iKTsKIAogICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7
Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIu
c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogImlu
Zm8iLCBzdWJTdGFnZTogImluaXQiLCBlcnJvcjogIndyb25nLWNoYW5uZWwtaWQiLCBwYXlsb2Fk
QmFzZTY0OiBbdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NF0sIGNvbnRpbnVlQWZ0ZXJFcnJvckRh
dGE6IHRydWUgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAg
ICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogImluaXQiLCBlcnJvcjogIndyb25nLWNoYW5uZWwt
aWQiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NF0sIGNvbnRpbnVl
QWZ0ZXJFcnJvckRhdGE6IHRydWUgfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAg
ICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCB1bmRlZmluZWQpOwogICAgICAg
ICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY3JlZGVudGlhbCwgbnVsbCk7CkBAIC01Niw4ICs1Niw4
IEBACiAgICAgfSwgIkNUQVAgSElEIHdpdGggY29udGludWUgYWZ0ZXIgd3JvbmcgY2hhbm5lbCBp
ZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKICAgICBwcm9taXNlX3Rlc3QoZnVu
Y3Rpb24odCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsg
c3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJ3cm9uZy1ub25jZSIsIHBh
eWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSwgY29udGludWVBZnRlckVy
cm9yRGF0YTogdHJ1ZSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAg
ICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsg
aGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAiaW5pdCIsIGVycm9yOiAid3Jvbmctbm9u
Y2UiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NF0sIGNvbnRpbnVl
QWZ0ZXJFcnJvckRhdGE6IHRydWUgfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAg
ICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCB1bmRlZmluZWQpOwogICAgICAg
ICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY3JlZGVudGlhbCwgbnVsbCk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0dHBzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0dHBzLmh0
bWwKaW5kZXggNWMwYjFiOGFlNDY4ODdmNWZiYTViMTMzYjg4MmY0ZTY0OWQ4YWQyNC4uMjA1MDYw
YWM2N2Y0YjMyYzcwMzBjODM4ZjJlY2UxNDBhMjIzZjRhYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1uZmMtZmFpbHVyZS5odHRwcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtbmZjLWZhaWx1cmUuaHR0cHMuaHRtbApA
QCAtMjEsMTQgKzIxLDE0IEBACiAgICAgfTsKIAogICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0
KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjog
Im1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDpbdGVzdE5mY1UyZlZlcnNpb25CYXNl
NjQsICIiXSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAg
IGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbmZjOiB7
IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0Olt0ZXN0TmZjVTJmVmVy
c2lvbkJhc2U2NCwgIiJdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAi
Tm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShkZWZhdWx0T3B0
aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJDVEFQIE5GQyB3aXRoIGVt
cHR5IGFwZHUgcmVzcG9uc2UgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAg
cHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1
cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0
Olt0ZXN0TmZjVTJmVmVyc2lvbkJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9u
c2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAg
ICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBuZmM6
IHsgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6W3Rlc3ROZmNVMmZW
ZXJzaW9uQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NF0gfSB9
KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGRlZmF1bHRPcHRpb25zKSwgIk9wZXJhdGlvbiB0
aW1lZCBvdXQuIik7CiAgICAgfSwgIkNUQVAgTkZDIHdpdGggd3JvbmcgZGF0YSBlcnJvciBpbiBh
IG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIik7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2lkbC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vaWRsLmh0dHBzLmh0bWwKaW5kZXggZGMxMmI3MjI0YjFlMGZkMDY4NTc5
NzA1MGFjYzllZmZiOTg1Y2Y2MS4uMDlhZmNiMGUxNmU0NzM4MTA4YjVlOWM4MDVmYWY3Y2I5N2Zl
NGQ5OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vaWRsLmh0dHBz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vaWRsLmh0dHBzLmh0bWwK
QEAgLTUyLDggKzUyLDggQEAgcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKICAgICAgICAgfQog
ICAgIH07CiAgICAgLy8gQSBtb2NrIGF0dGVzdGF0aW9uIG9iamVjdAotICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tD
b25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwg
ZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNl
NjRdIH0gfSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5z
ZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVx
dWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDog
W3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdIH0gfSk7CiAgICAgY3JlYXRlZENyZWRlbnRpYWwg
PSBhd2FpdCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGNyZWF0aW9uT3B0aW9ucyk7CiAK
ICAgICBjb25zdCByZXF1ZXN0T3B0aW9ucyA9IHsKQEAgLTYxLDggKzYxLDggQEAgcHJvbWlzZV90
ZXN0KGFzeW5jICgpID0+IHsKICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNl
KCJNVEl6TkRVMiIpLAogICAgICAgICB9CiAgICAgfTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAi
c3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0QXNzZXJ0aW9uTWVzc2FnZUJhc2U2NF0gfSB9
KTsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwg
c3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEFz
c2VydGlvbk1lc3NhZ2VCYXNlNjRdIH0gfSk7CiAgICAgcmVxdWVzdGVkQ3JlZGVudGlhbCA9IGF3
YWl0IG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQocmVxdWVzdE9wdGlvbnMpOwogCiAgICAgaWRs
QXJyYXkuYWRkX29iamVjdHMoeyJQdWJsaWNLZXlDcmVkZW50aWFsIjogWyJjcmVhdGVkQ3JlZGVu
dGlhbCJdLCAiQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UiOiBbImNyZWF0ZWRDcmVk
ZW50aWFsLnJlc3BvbnNlIl0sICJBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UiOiBbInJl
cXVlc3RlZENyZWRlbnRpYWwucmVzcG9uc2UiXX0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWhp
ZC1zaWxlbnQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1oaWQtc2lsZW50Lmh0dHBzLmh0bWwKaW5k
ZXggNjZiNWRhNGYzOTkyY2VjZjYxNzhiN2Y2YjYzYmY2N2U3OGQ4NTIzNi4uZjM1ODY2YTZlMzYx
NjY1YTMyNTBlZWQ1OTRiYzQwZGEyZDBiNmQyZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWhpZC1z
aWxlbnQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1sCkBA
IC0yMSw4ICsyMSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50
aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0
YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9h
ZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJhc2U2NF0gfSB9KTsK
KyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUs
IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNp
b3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNl
NjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVy
cm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0
aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdp
dGggbWFsaWNpb3VzIHBheWxvYWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBA
IC00NCw4ICs0NCw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50
aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0
YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ1bnN1cHBvcnRlZC1vcHRp
b25zIiB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGlu
dGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFp
bHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJy
b3I6ICJ1bnN1cHBvcnRlZC1vcHRpb25zIiB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJl
amVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUo
b3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVk
ZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHVuc3VwcG9ydGVkIG9wdGlvbnMgaW4gYSBtb2NrIGhp
ZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC02Nyw4ICs2Nyw4IEBACiAgICAgICAgICAgICB9CiAg
ICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50
RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwg
ZXJyb3I6ICJ1bnN1cHBvcnRlZC1vcHRpb25zIiB9IH0pOworICAgICAgICBpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVz
dCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ1bnN1cHBvcnRlZC1vcHRpb25zIiB9IH0pOwog
ICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmln
YXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIp
OwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHVuc3VwcG9y
dGVkIG9wdGlvbnMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAyIik7CiAKQEAgLTkwLDgg
KzkwLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJy
ZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInVuc3VwcG9ydGVkLW9wdGlvbnMiIH0g
fSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxz
LnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0
cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInVu
c3VwcG9ydGVkLW9wdGlvbnMiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0
LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25z
KSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2NyZWF0ZV1dIHdpdGggbWl4ZWQgb3B0aW9ucyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0
b3IuIik7CiAKQEAgLTExMSw4ICsxMTEsOCBAQAogICAgICAgICAgICB9CiAgICAgICAgfTsKIAot
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRX
ZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVz
dCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRC
YXNlNjQ6IFt0ZXN0Q3RhcEVyckNyZWRlbnRpYWxFeGNsdWRlZE9ubHlSZXNwb25zZUJhc2U2NF0g
fSB9KTsKKyAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgaW50ZXJuYWxz
LnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJy
ZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5
bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJyQ3JlZGVudGlhbEV4Y2x1ZGVkT25seVJlc3BvbnNlQmFz
ZTY0XSB9IH0pOwogICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiSW52YWxpZFN0YXRl
RXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiQXQgbGVhc3Qg
b25lIGNyZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNyZWRlbnRpYWxz
IGxpc3QgaW4gdGhlIGF1dGhlbnRpY2F0b3IuIik7CiAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbY3JlYXRlXV0gd2l0aCBJbnZhbGlkU3RhdGVFcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhl
bnRpY2F0b3IuIik7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1oaWQuaHR0cHMu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1jcmVhdGUtZmFpbHVyZS1oaWQuaHR0cHMuaHRtbAppbmRleCAyZjgzN2M2NjMyNmI4N2ZmN2E5
Mjg3YWIxNzAyZGFkMzQwMDY2ZGYwLi4xMGNmZWFkZmU1NjI2YmM4NGY5ZjBlYzI5MDQwYWE5MmQ3
YmI4OTI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtaGlkLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWls
dXJlLWhpZC5odHRwcy5odG1sCkBAIC01LDggKzUsOCBAQAogPHNjcmlwdCBzcmM9Ii4vcmVzb3Vy
Y2VzL3V0aWwuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KICAgICAvLyBEZWZhdWx0IG1vY2sgY29u
ZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBpdCBpZiB0aGV5IG5lZWQgZGlmZmVy
ZW50IGNvbmZpZ3VyYXRpb24uCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0
ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsg
c3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXls
b2FkIiB9IH0pOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMu
c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJl
cXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiIH0gfSk7
CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewogICAgICAgICBjb25zdCBvcHRpb25z
ID0gewpAQCAtNDUsOCArNDUsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2Vi
QXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3Qi
LCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFz
ZTY0OiBbdGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6
ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RE
dW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJl
amVjdHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0
aW9ucyksICJVbmtub3duIGludGVybmFsIGVycm9yLiBFcnJvciBjb2RlOiAyNTUiKTsKICAgICB9
LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtYWxpY2lvdXMgcGF5bG9h
ZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTY3LDggKzY3LDggQEAKICAg
ICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
InVuc3VwcG9ydGVkLW9wdGlvbnMiIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
KQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
InVuc3VwcG9ydGVkLW9wdGlvbnMiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0
cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25z
KSwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIEVycm9yIGNvZGU6IDQzIik7CiAgICAgfSwgIlB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdW5zdXBwb3J0ZWQgb3B0aW9ucyBp
biBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTg5LDggKzg5LDggQEAKICAgICAg
ICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRp
b24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInVu
c3VwcG9ydGVkLW9wdGlvbnMiIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQor
ICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInVu
c3VwcG9ydGVkLW9wdGlvbnMiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0
LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwg
IlVua25vd24gaW50ZXJuYWwgZXJyb3IuIEVycm9yIGNvZGU6IDQzIik7CiAgICAgfSwgIlB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdW5zdXBwb3J0ZWQgb3B0aW9ucyBpbiBh
IG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIDIiKTsKIApAQCAtMTEyLDggKzExMiw4IEBACiAgICAg
ICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0
aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ1
bnN1cHBvcnRlZC1vcHRpb25zIiB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ1
bnN1cHBvcnRlZC1vcHRpb25zIiB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHMo
dCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9u
cyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tjcmVhdGVdXSB3aXRoIG1peGVkIG9wdGlvbnMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNh
dG9yLiIpOwogCkBAIC0xMzQsOCArMTM0LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsK
IAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVy
LnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJy
ZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInVuc3VwcG9ydGVkLW9wdGlvbnMiIH0g
fSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxz
LnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJy
ZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInVuc3VwcG9ydGVkLW9wdGlvbnMiIH0g
fSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIlVua25vd24gaW50ZXJuYWwgZXJy
b3IuIEVycm9yIGNvZGU6IDQzIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2Ny
ZWF0ZV1dIHdpdGggbWl4ZWQgb3B0aW9ucyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIDIi
KTsKIApAQCAtMTU1LDggKzE1NSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRX
ZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVz
dCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRC
YXNlNjQ6IFt0ZXN0Q3RhcEVyckNyZWRlbnRpYWxFeGNsdWRlZE9ubHlSZXNwb25zZUJhc2U2NF0g
fSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5h
bHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTog
InJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBw
YXlsb2FkQmFzZTY0OiBbdGVzdEN0YXBFcnJDcmVkZW50aWFsRXhjbHVkZWRPbmx5UmVzcG9uc2VC
YXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiSW52YWxpZFN0
YXRlRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiQXQgbGVh
c3Qgb25lIGNyZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNyZWRlbnRp
YWxzIGxpc3QgaW4gdGhlIGF1dGhlbnRpY2F0b3IuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggSW52YWxpZFN0YXRlRXJyb3IgaW4gYSBtb2NrIGhpZCBh
dXRoZW50aWNhdG9yLiIpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwt
c2lsZW50Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLmh0bWwKaW5k
ZXggNmEwMGJlZGU2ZGQ5YmU3ODMwNmFlN2Q0MGU3NWZlZDNiYzRjYWMyZC4uNGRjZjRhMjk0ZDlm
ZTczYzdjMjE2ZjhmZDE5NGUzMjY2N2E3NjhlNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2Fs
LXNpbGVudC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC1zaWxlbnQuaHR0cHMuaHRt
bApAQCAtOSw4ICs5LDggQEAKICAgICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2NCA9IGF3YWl0
IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOwogICAgICAgICBjb25zdCBjcmVkZW50aWFsSUQg
PSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7CiAgICAgICAg
IC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlm
IHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KLSAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1v
Y2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgbG9jYWw6IHsgYWNjZXB0QXV0
aGVudGljYXRpb246IGZhbHNlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKKyAgICAg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGxvY2Fs
OiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNl
IH0gfSk7CiAKICAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICAgICAgY29uc3Qg
b3B0aW9ucyA9IHsKQEAgLTEyMSw4ICsxMjEsOCBAQAogICAgICAgICAgICAgICAgICAgICB0aW1l
b3V0OiAxMAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJB
dXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgbG9j
YWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxz
ZSB9IH0pOworICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICAg
ICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxl
bnRGYWlsdXJlOiB0cnVlLCBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNj
ZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CiAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJl
amVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUo
b3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgICAgICB9LCAiUHVibGljS2V5
Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBzaWxlbnQgZmFpbHVyZSBpbiBhIG1vY2sgbG9j
YWwgYXV0aGVudGljYXRvci4gNSIpOwogCkBAIC0xNDIsOCArMTQyLDggQEAKICAgICAgICAgICAg
ICAgICAgICAgdGltZW91dDogMTAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Owot
ICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFp
bHVyZTogdHJ1ZSwgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0
dGVzdGF0aW9uOiBmYWxzZSB9IH0pOworICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
IHsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRp
Y2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKICAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLmFkZFRlc3RLZXlUb0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRl
c3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJl
dHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIikudGhlbigoKSA9
PiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1s
b2NhbC5odHRwcy5odG1sCmluZGV4IGMzYzkzNzI2NDRiMzgxNGNiNGEzNDVjMzUxOTYxMzg3OGVl
ZTI0NTMuLjM5YzdlYzdmYWM1NGRmNzE3ZGIzN2FhMDg0OTU3ZDc0MGMyNzJlNTcgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1j
cmVhdGUtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5odHRw
cy5odG1sCkBAIC05LDggKzksOCBAQAogICAgICAgICBjb25zdCBwcml2YXRlS2V5QmFzZTY0ID0g
YXdhaXQgZ2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7CiAgICAgICAgIGNvbnN0IGNyZWRlbnRp
YWxJRCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChwcml2YXRlS2V5QmFzZTY0KTsKICAg
ICAgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJp
ZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0
aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogZmFs
c2UsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOworICAgICAgICBpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IGZhbHNlLCBhY2Nl
cHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKIAogICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7
CiAgICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewpAQCAtMTE2LDggKzExNiw4IEBACiAgICAg
ICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5Iiwg
YWxnOiAtNyB9XQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH07Ci0gICAgICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRX
ZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVu
dGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOworICAgICAgICAg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50
aWNhdGlvbjogdHJ1ZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CiAgICAgICAgICAg
ICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJVbmtub3duIGludGVybmFsIGVycm9yLiIpOwogICAg
ICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aG91dCBhdHRlc3Rh
dGlvbiBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKIApAQCAtMTM2LDggKzEzNiw4
IEBACiAgICAgICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJs
aWMta2V5IiwgYWxnOiAtNyB9XQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH07Ci0g
ICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBsb2NhbDogeyBh
Y2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7
CisgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAgICAgICAgIGlu
dGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbG9jYWw6IHsg
YWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0p
OwogICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4ocHJpdmF0
ZUtleUJhc2U2NCwgdGVzdFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiVW5rbm93biBpbnRlcm5hbCBlcnJv
ci4iKS50aGVuKCgpID0+IHsKQEAgLTE2NCw4ICsxNjQsOCBAQAogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0dGVz
dGF0aW9uOiBmYWxzZSB9IH0pOworICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0dGVz
dGF0aW9uOiBmYWxzZSB9IH0pOwogICAgICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQs
ICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMp
LCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRp
YWwncyBbW2NyZWF0ZV1dIHdpdGggdGltZW91dCBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRv
ci4iKTsKICAgICB9KSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0
ZS1mYWlsdXJlLW5mYy5odHRwcy5odG1sCmluZGV4IDQ4MjQ4NTczM2M1YWYzNzIzODMyMWI2ZjI0
YjIyMDM0ZGZlZDRiNzEuLjI1MzUzZjA5MjY4YWE1NzFiODdmZDJiMTE1M2VjODZkODYyZjE0NWIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbmZj
Lmh0dHBzLmh0bWwKQEAgLTUsOCArNSw4IEBACiA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRp
bC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0
aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGl0IGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29u
ZmlndXJhdGlvbi4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5u
ZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjog
Im5vLXRhZ3MiIH0gfSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVy
bmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9y
OiAibm8tdGFncyIgfSB9KTsKIAogICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CiAgICAg
ICAgIGNvbnN0IG9wdGlvbnMgPSB7CkBAIC02Niw4ICs2Niw4IEBACiAgICAgICAgICAgICB9CiAg
ICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7
IGVycm9yOiAid3JvbmctdGFnLXR5cGUiIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJ3cm9uZy10YWctdHlwZSIgfSB9KTsKICAgICAgICAg
cmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9
LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB3cm9uZyB0YWcgdHlwZSBp
biBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTg4LDggKzg4LDggQEAKICAgICAg
ICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRp
b24oeyBuZmM6IHsgZXJyb3I6ICJuby1jb25uZWN0aW9ucyIgfSB9KTsKKyAgICAgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogIm5vLWNvbm5lY3Rpb25zIiB9IH0p
OwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5h
dmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0
LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG5vIGNv
bm5lY3Rpb25zIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKIApAQCAtMTEwLDggKzEx
MCw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1v
Y2tDb25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXls
b2FkQmFzZTY0OiBbIF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAg
ICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7
IG5mYzogeyBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogWyBdIH0g
fSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwg
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBv
dXQuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbnVs
bCB2ZXJzaW9uIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKIApAQCAtMTMyLDggKzEz
Miw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1v
Y2tDb25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXls
b2FkQmFzZTY0Olt0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJhc2U2NF0gfSB9KTsKKyAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogIm1hbGljaW91cy1wYXls
b2FkIiwgcGF5bG9hZEJhc2U2NDpbdGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjRdIH0gfSk7
CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQu
Iik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggd3Jvbmcg
dmVyc2lvbiBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIik7CiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUt
ZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLXNpbGVudC5odHRw
cy5odG1sCmluZGV4IGFlZDk3YzI1NjYxNjI5ZGI5YWM3MDM4ZTE3MTdjNDQ4NDhlZjZhZDQuLjdl
NzA0ZjdlMTFjZGUzMzEwNDkwMTRjOTMzN2Y2ZGFkOTFjYzhhM2MgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFp
bHVyZS11MmYtc2lsZW50Lmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0
cHMuaHRtbApAQCAtMjEsOCArMjEsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUs
IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNp
b3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogWyJBUT09Il0gfSB9KTsK
KyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUs
IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNp
b3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogWyJBUT09Il0gfSB9KTsK
ICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4i
KTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtYWxmb3Jt
ZWQgQVBEVSBwYXlsb2FkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtNDMs
OCArNDMsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRp
b25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTog
InJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBp
c1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25z
ZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAg
ICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVu
dEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIs
IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDog
W3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0
dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAi
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtYWxmb3JtZWQgVTJGIHJlZ2lz
dGVyIHJlc3BvbnNlIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtNjUsOCAr
NjUsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJl
cXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1Uy
ZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1SW5zTm90U3VwcG9ydGVkT25seVJl
c3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAg
ICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsg
c2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAi
bXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFz
ZTY0OiBbdGVzdFUyZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7
CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQu
Iik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggcmVnaXN0
ZXIgY29tbWFuZCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTg4
LDggKzg4LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0
aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6
ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwg
aXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9u
c2VCYXNlNjQsIHRlc3RVMmZBcGR1SW5zTm90U3VwcG9ydGVkT25seVJlc3BvbnNlQmFzZTY0XSB9
IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFs
cy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTog
dHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJt
YWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFw
ZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9u
bHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQs
ICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMp
LCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdz
IFtbY3JlYXRlXV0gd2l0aCBib2d1cyBjb21tYW5kIGVycm9yIGluIGEgbW9jayBoaWQgYXV0aGVu
dGljYXRvci4iKTsKIApAQCAtMTEwLDggKzExMCw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAg
IH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVy
ZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6
ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUy
ZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVz
cG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAg
ICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBz
aWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJt
c2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNl
NjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9F
cnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWpl
Y3RzKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUo
b3B0aW9ucyksICJBdCBsZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRo
ZSBleGNsdWRlQ3JlZGVudGlhbHMgbGlzdCBpbiB0aGUgYXV0aGVudGljYXRvci4iKTsKICAgICB9
LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBmaXJzdCBleGNsdWRlIGNy
ZWRlbnRpYWwgbWF0Y2hlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTEz
Myw4ICsxMzMsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGlj
YXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFn
ZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQi
LCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJl
c3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RV
MmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJl
cXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1Uy
ZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNl
QmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1
Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VS
ZWplY3RzKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVh
dGUob3B0aW9ucyksICJBdCBsZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9m
IHRoZSBleGNsdWRlQ3JlZGVudGlhbHMgbGlzdCBpbiB0aGUgYXV0aGVudGljYXRvci4iKTsKICAg
ICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBzZWNvbmQgZXhjbHVk
ZSBjcmVkZW50aWFsIG1hdGNoZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBA
IC0xNTYsOCArMTU2LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhl
bnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsg
c3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXls
b2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdUNvbmRpdGlvbnNO
b3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNh
dGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNm
aWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNl
NjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50
ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWls
dXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJv
cjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0
VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZB
cGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVD
b25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJy
b3JPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0
cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRp
b25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRp
YWwncyBbW2NyZWF0ZV1dIHdpdGggZmlyc3QgZXhjbHVkZSBjcmVkZW50aWFsIG1hdGNoZWQgaW4g
YSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiBUZXN0IG9mIHVzZXIgcHJlc2VuY2UuIik7CiA8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYuaHR0cHMuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11
MmYuaHR0cHMuaHRtbAppbmRleCAxNTdkOWU4OGEwNmJlZDQ2YzdkNGZkODVlMTYwMWNlMmFlY2Y0
MjNkLi45NDdkY2ZmMmJmNTA5ZDNmYWZhMDU1MDQyNWM3OTkwMTEyMzQ4YzZiIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3Jl
YXRlLWZhaWx1cmUtdTJmLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi5odHRwcy5odG1s
CkBAIC0yMCw4ICsyMCw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRo
ZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1
YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBw
YXlsb2FkQmFzZTY0OiBbIkFRPT0iXSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6
ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbIkFRPT0i
XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJvciIs
IG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJDb3VsZG4ndCBwYXJzZSB0
aGUgQVBEVSByZXNwb25zZS4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3Jl
YXRlXV0gd2l0aCBtYWxmb3JtZWQgQVBEVSBwYXlsb2FkIGluIGEgbW9jayBoaWQgYXV0aGVudGlj
YXRvci4iKTsKIApAQCAtNDEsOCArNDEsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9Owog
Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIu
c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJl
cXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1Uy
ZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJh
c2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBp
bnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBz
dGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxv
YWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlS
ZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJV
bmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiQ291
bGRuJ3QgcGFyc2UgdGhlIFUyRiByZWdpc3RlciByZXNwb25zZS4iKTsKICAgICB9LCAiUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtYWxmb3JtZWQgVTJGIHJlZ2lzdGVyIHJl
c3BvbnNlIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtNjIsOCArNjIsOCBA
QAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29u
ZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVy
cm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rl
c3RVMmZBcGR1SW5zTm90U3VwcG9ydGVkT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAg
ICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1
YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBw
YXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5UmVzcG9uc2VCYXNl
NjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9y
IiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIlVua25vd24gaW50ZXJu
YWwgZXJyb3IuIEVycm9yIGNvZGU6IDI3OTA0Iik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRp
YWwncyBbW2NyZWF0ZV1dIHdpdGggcmVnaXN0ZXIgY29tbWFuZCBlcnJvciBpbiBhIG1vY2sgaGlk
IGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTg0LDggKzg0LDggQEAKICAgICAgICAgICAgIH0KICAg
ICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsg
c3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXls
b2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5
UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1SW5zTm90U3VwcG9ydGVkT25seVJlc3BvbnNlQmFz
ZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGlu
dGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0
YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9h
ZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJl
c3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNwb25zZUJhc2U2
NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3Ii
LCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiVW5rbm93biBpbnRlcm5h
bCBlcnJvci4gRXJyb3IgY29kZTogMjc5MDQiKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbY3JlYXRlXV0gd2l0aCBib2d1cyBjb21tYW5kIGVycm9yIGluIGEgbW9jayBoaWQgYXV0
aGVudGljYXRvci4iKTsKIApAQCAtMTA2LDggKzEwNiw4IEBACiAgICAgICAgICAgICB9CiAgICAg
ICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVz
dFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0
YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9h
ZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJl
c3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7
CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNl
dE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6
IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNl
NjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAg
cmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIG5hdmlnYXRvci5j
cmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJBdCBsZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRj
aGVzIGFuIGVudHJ5IG9mIHRoZSBleGNsdWRlQ3JlZGVudGlhbHMgbGlzdCBpbiB0aGUgYXV0aGVu
dGljYXRvci4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0
aCBmaXJzdCBleGNsdWRlIGNyZWRlbnRpYWwgbWF0Y2hlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRp
Y2F0b3IuIik7CiAKQEAgLTEyOSw4ICsxMjksOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9
OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTog
InJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBp
c1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3Bv
bnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZB
cGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIs
IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDog
W3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJy
b3JPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2
NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJJbnZhbGlkU3RhdGVF
cnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJBdCBsZWFzdCBv
bmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNsdWRlQ3JlZGVudGlhbHMg
bGlzdCBpbiB0aGUgYXV0aGVudGljYXRvci4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbY3JlYXRlXV0gd2l0aCBzZWNvbmQgZXhjbHVkZSBjcmVkZW50aWFsIG1hdGNoZWQgaW4g
YSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC0xNTEsOCArMTUxLDggQEAKICAgICAg
ICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRp
b24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1h
bGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBk
dUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Q29u
ZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVDb25kaXRp
b25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5
UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
eyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGlj
aW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdUNv
bmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Q29uZGl0
aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVDb25kaXRpb25z
Tm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVz
cG9uc2VCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiSW52
YWxpZFN0YXRlRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAi
QXQgbGVhc3Qgb25lIGNyZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNy
ZWRlbnRpYWxzIGxpc3QgaW4gdGhlIGF1dGhlbnRpY2F0b3IuIik7CiAgICAgfSwgIlB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZmlyc3QgZXhjbHVkZSBjcmVkZW50aWFsIG1h
dGNoZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiBUZXN0IG9mIHVzZXIgcHJlc2VuY2Uu
Iik7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS5odHRwcy5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWls
dXJlLmh0dHBzLmh0bWwKaW5kZXggNDY0MmE1YmEwZmJlN2E4YjNjOGFkZmY1Mzk2OTk1NWIwYzVk
NjZjYi4uNWU4ZjViODEyYmU1NzYzYzMxYmM1ZDJkZmM4OTRjMDk1MGY1Nzg5MyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNy
ZWF0ZS1mYWlsdXJlLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLmh0dHBzLmh0bWwKQEAgLTUs
OCArNSw4IEBACiA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0PgogICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRv
IG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KLSAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRp
b25Nb2NrQ29uZmlndXJhdGlvbih7IH0pOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IH0p
OwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKICAgICAgICAgY29uc3Qgb3B0aW9u
cyA9IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1o
aWQuaHR0cHMuaHRtbAppbmRleCA2YThjMzU4MTNlZTJhZDcyN2JiYzU2NjExYThiMmNiOTBhZGJh
ZjY0Li41NDQ2ZjU1NzBmMjlkNTM0NmFmNzg3Y2Y1NjRjOTNlNTY3MGFmNzBjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3Jl
YXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1s
CkBAIC02LDggKzYsOCBAQAogPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL2Nib3IuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdD4KICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMg
bmVlZCB0byBvdmVycmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0g
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhl
bnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3Vi
U3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdENyZWF0
aW9uTWVzc2FnZUJhc2U2NF0gfSB9KTsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAg
ICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6
IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBw
YXlsb2FkQmFzZTY0OiBbdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NF0gfSB9KTsKIAogICAgIHBy
b21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVh
dGUtc3VjY2Vzcy1sb2NhbC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWwK
aW5kZXggZTUxYmE1ZmRlNmE4ZWY0ZjQ5MDg2N2ZhYmFmYzdiYmQ1NzJlNGVlZS4uMDg4ZTg2MzE4
ZDFiZThhMDQ0NTdkNDExOGIzZDFhZjg4M2RjMDJjNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxv
Y2FsLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWwKQEAgLTEwLDgg
KzEwLDggQEAKICAgICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2NCA9IGF3YWl0IGdlbmVyYXRl
UHJpdmF0ZUtleUJhc2U2NCgpOwogICAgICAgICBjb25zdCBjcmVkZW50aWFsSUQgPSBhd2FpdCBj
YWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7CiAgICAgICAgIC8vIERlZmF1
bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVl
ZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1
cmF0aW9uKHsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRl
cm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7CiAgICAgICAgICAg
ICAgICAgbG9jYWw6IHsKICAgICAgICAgICAgICAgICAgICAgYWNjZXB0QXV0aGVudGljYXRpb246
IHRydWUsCiAgICAgICAgICAgICAgICAgICAgIGFjY2VwdEF0dGVzdGF0aW9uOiB0cnVlLApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy5o
dG1sCmluZGV4IDhkMjJlNTQ0ZDRhYjk1MDk5NTI1N2ZhNmI5ZTBlNWYwMmM4NjE1NWQuLjgyZDA3
MDYxOGIzZTAzM2MzNDhhNzc0MmMxMGFmNmVjMTFjNjYzNTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vz
cy1uZmMuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbmZjLmh0dHBzLmh0bWwKQEAgLTYsOCAr
Niw4IEBACiA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvY2Jvci5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0PgogICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92
ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KLSAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0
OiBbdGVzdE5mY0N0YXBWZXJzaW9uQmFzZTY0LCB0ZXN0R2V0SW5mb1Jlc3BvbnNlQXBkdUJhc2U2
NCwgdGVzdENyZWF0aW9uTWVzc2FnZUFwZHVCYXNlNjRdIH0gfSk7CisgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0
TmZjQ3RhcFZlcnNpb25CYXNlNjQsIHRlc3RHZXRJbmZvUmVzcG9uc2VBcGR1QmFzZTY0LCB0ZXN0
Q3JlYXRpb25NZXNzYWdlQXBkdUJhc2U2NF0gfSB9KTsKIAogICAgIHByb21pc2VfdGVzdCh0ID0+
IHsKICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKQEAgLTcxLDggKzcxLDggQEAKICAgICAgICAg
ICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24o
eyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3ROZmNDdGFwVmVy
c2lvbkJhc2U2NCwgdGVzdEdldEluZm9SZXNwb25zZUFwZHVCYXNlNjQsIHRlc3RDcmVhdGlvbk1l
c3NhZ2VBcGR1QmFzZTY0XSwgbXVsdGlwbGVUYWdzOiB0cnVlIH0gfSk7CisgICAgICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJh
c2U2NDogW3Rlc3ROZmNDdGFwVmVyc2lvbkJhc2U2NCwgdGVzdEdldEluZm9SZXNwb25zZUFwZHVC
YXNlNjQsIHRlc3RDcmVhdGlvbk1lc3NhZ2VBcGR1QmFzZTY0XSwgbXVsdGlwbGVUYWdzOiB0cnVl
IH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlv
bnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBjaGVja0N0YXBNYWtlQ3JlZGVu
dGlhbFJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7CkBAIC05NSw4ICs5NSw4IEBACiAg
ICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1
cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0TmZj
VTJmVmVyc2lvbkJhc2U2NCwgdGVzdFUyZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5UmVzcG9uc2VC
YXNlNjQsIHRlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOworICAgICAgICBpZiAod2luZG93
LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6
IFt0ZXN0TmZjVTJmVmVyc2lvbkJhc2U2NCwgdGVzdFUyZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5
UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOwogICAgICAgICBy
ZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRp
YWwgPT4gewogICAgICAgICAgICAgY2hlY2tVMmZNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50
aWFsKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3Jl
YXRlLXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWwKaW5kZXggNDdkOGJkNDQ5NDc1YWQ0NTM5ZTdhMzlh
YjEyYzM5ZDIzNDZjN2EzYy4uYzJiYzhmNTI2Yjc0MDIxMWIxOTQ5NzMwNTcwMTViNWQxMGFlNjU3
YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLXUyZi5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy11
MmYuaHR0cHMuaHRtbApAQCAtMjEsOCArMjEsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9
OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTog
InJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVl
LCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7CisgICAgICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3Vi
U3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2
NDogW3Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdh
dG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAg
ICAgICAgICAgY2hlY2tVMmZNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsKTsKICAgICAg
ICAgfSk7CkBAIC00NSw4ICs0NSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRX
ZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVz
dCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxv
YWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUy
ZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQor
ICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1
Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRh
T25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKICAgICAg
ICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVk
ZW50aWFsID0+IHsKICAgICAgICAgICAgIGNoZWNrVTJmTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3Jl
ZGVudGlhbCk7CiAgICAgICAgIH0pOwpAQCAtNjksOCArNjksOCBAQAogICAgICAgICAgICAgfQog
ICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlz
VTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9u
c2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJm
UmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3Vj
Y2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFP
bmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0
LCB0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRv
ci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAg
ICAgICAgIGNoZWNrVTJmTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAg
IH0pOwpAQCAtOTIsOCArOTIsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2Vi
QXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3Qi
LCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2Fk
QmFzZTY0OiBbdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFz
ZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQs
IHRlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVy
bmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJy
b3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdUNv
bmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Q29uZGl0
aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlJlZ2lzdGVyUmVzcG9u
c2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9w
dGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBjaGVja1UyZk1ha2VDcmVk
ZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKQEAgLTExNiw4ICsxMTYsOCBA
QAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29u
ZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVy
cm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlJlZ2lz
dGVyUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAg
ICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBo
aWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3Mi
LCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9
IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25z
KS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgY2hlY2tVMmZNYWtlQ3JlZGVudGlh
bFJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7CkBAIC0xNDAsOCArMTQwLDggQEAKICAg
ICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
InN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZSZWdpc3RlclJl
c3BvbnNlXSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAg
IGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNV
MmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsK
ICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhl
bihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIGNoZWNrVTJmTWFrZUNyZWRlbnRpYWxSZXN1
bHQoY3JlZGVudGlhbCwgZmFsc2UpOwogICAgICAgICB9KTsKQEAgLTE2NCw4ICsxNjQsOCBAQAog
ICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9y
OiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlJlZ2lzdGVy
UmVzcG9uc2VdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAg
ICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6
IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBp
c1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0p
OwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50
aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgY2hlY2tVMmZNYWtlQ3JlZGVudGlhbFJl
c3VsdChjcmVkZW50aWFsLCBmYWxzZSk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJl
LWhpZC1zaWxlbnQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQtc2lsZW50Lmh0dHBzLmh0bWwKaW5k
ZXggZTg1YzJjODRhZjcyMmQ3NTE5YzU1ZWM3YzVjZTZjNTAwNjM2YWMyMC4uMzhmNDA3NDllOTVh
ZTA1YmM5MjdmMWRjYmIzY2I5ZTFkOTIxZTc3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC1zaWxl
bnQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1sCkBAIC0xMiw4
ICsxMiw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlv
bk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAi
cmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBh
eWxvYWRCYXNlNjQ6IFt0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJhc2U2NF0gfSB9KTsKKyAgICAg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBh
eWxvYWQiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjRdIH0g
fSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwg
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQu
Iik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbWFsaWNpb3Vz
IHBheWxvYWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC0yNiw4ICsyNiw4
IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tD
b25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVz
dCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ1bnN1cHBvcnRlZC1vcHRpb25zIiB9IH0pOwor
ICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwg
aGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ1bnN1cHBv
cnRlZC1vcHRpb25zIiB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5v
dEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVy
YXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRd
XSB3aXRoIHVuc3VwcG9ydGVkIG9wdGlvbnMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIp
OwogCkBAIC0zOSw4ICszOSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJB
dXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlk
OiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMt
cGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVz
cG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAg
ICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBz
aWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJt
c2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFw
RXJySW52YWxpZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJu
IHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlh
bHMuZ2V0KG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBpbnZhbGlkIGNyZWRlbnRpYWwgaW4gYSBtb2Nr
IGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC01Miw4ICs1Miw4IEBACiAgICAgICAgICAgICB9
CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2ls
ZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNn
IiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGNhbkRvd25ncmFkZTogdHJ1ZSwgcGF5bG9h
ZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2NF0gfSB9
KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMu
c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRy
dWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFs
aWNpb3VzLXBheWxvYWQiLCBjYW5Eb3duZ3JhZGU6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0
Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJl
dHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggYXV0aGVudGljYXRvciBkb3duZ3JhZGUg
aW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC02Niw4ICs2Niw4IEBACiAgICAg
ICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0
aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0
YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGNhbkRvd25ncmFkZTogdHJ1
ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENyZWRlbnRpYWxSZXNwb25zZUJh
c2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBp
bnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZh
aWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVy
cm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBjYW5Eb3duZ3JhZGU6IHRydWUsIHBheWxvYWRCYXNl
NjQ6IFt0ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAg
ICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdh
dG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAg
ICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggYXV0aGVudGljYXRvciBk
b3duZ3JhZGUgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAyIik7CiA8L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1nZXQtZmFpbHVyZS1oaWQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQuaHR0cHMuaHRtbApp
bmRleCA1NDg1ZjM3MGQ2Nzk3MWUyMjM1ZDhkOWE4NzJlYWIzNGY5YzU2NmY3Li4wMDIyZWE5MGIw
NzZhZmUyYzQ2NGJmNzZmMjVkNDliNTNjYTQ4MWI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLmh0
dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC5odHRwcy5odG1sCkBAIC01LDggKzUsOCBAQAogPHNj
cmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KICAgICAv
LyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBpZiB0
aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
Im1hbGljaW91cy1wYXlsb2FkIiB9IH0pOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhp
ZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3Vz
LXBheWxvYWQiIH0gfSk7CiAKICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAgIGNvbnN0
IG9wdGlvbnMgPSB7CkBAIC0zMSw4ICszMSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07
CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAi
cmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBh
eWxvYWRCYXNlNjQ6IFt0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJhc2U2NF0gfSB9KTsKKyAgICAg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBz
dWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0
OiBbdGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBw
cm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdl
dChvcHRpb25zKSwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIEVycm9yIGNvZGU6IDI1NSIpOwog
ICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1hbGljaW91cyBwYXls
b2FkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtNDQsOCArNDQsOCBAQAog
ICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9y
OiAidW5zdXBwb3J0ZWQtb3B0aW9ucyIgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9y
OiAidW5zdXBwb3J0ZWQtb3B0aW9ucyIgfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWpl
Y3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMp
LCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogNDMiKTsKICAgICB9LCAiUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCB1bnN1cHBvcnRlZCBvcHRpb25zIGluIGEg
bW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtNTYsOCArNTYsOCBAQAogICAgICAgICAg
ICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7
IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNp
b3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEN0YXBFcnJJbnZhbGlkQ3JlZGVudGlh
bFJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
KHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxp
Y2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50
aWFsUmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0
LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIlVu
a25vd24gaW50ZXJuYWwgZXJyb3IuIEVycm9yIGNvZGU6IDM0Iik7CiAgICAgfSwgIlB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggYXV0aGVudGljYXRvciBkb3duZ3JhZGUgZmFpbGVk
IGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtNjksOCArNjksOCBAQAogICAg
ICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAi
bWFsaWNpb3VzLXBheWxvYWQiLCBjYW5Eb3duZ3JhZGU6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0
ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3Vi
U3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgY2FuRG93bmdyYWRlOiB0
cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEN0YXBFcnJJbnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNl
QmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdFN1cHBv
cnRlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIkNhbm5vdCBj
b252ZXJ0IHRoZSByZXF1ZXN0IHRvIFUyRiBjb21tYW5kLiIpOwogICAgIH0sICJQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIGF1dGhlbnRpY2F0b3IgZG93bmdyYWRlIHN1Y2NlZWRl
ZCBhbmQgdGhlbiBVMkYgZmFpbGVkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gMiIpOwog
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZh
aWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLmh0bWwKaW5kZXggODQzYmE4NmYxZjlhN2NkYjk0YWJi
YTZjNjc0M2MwMmU5YzMzZGY1YS4uZjAyYzI1NWU4ODI0MDQ3NGYxMjIyYzEyYjA2NWM2YjlmOGU5
OWYzMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFp
bHVyZS1sb2NhbC1zaWxlbnQuaHR0cHMuaHRtbApAQCAtOSw4ICs5LDggQEAKICAgICAgICAgY29u
c3QgcHJpdmF0ZUtleUJhc2U2NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOwog
ICAgICAgICBjb25zdCBjcmVkZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQo
cHJpdmF0ZUtleUJhc2U2NCk7CiAgICAgICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9u
LiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJh
dGlvbi4KLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVy
ZTogdHJ1ZSwgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IGZhbHNlLCBhY2NlcHRBdHRl
c3RhdGlvbjogZmFsc2UsIHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ6IHVzZXJoYW5kbGVCYXNl
NjQgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRl
cm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1
cmU6IHRydWUsIGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0
ZXN0YXRpb246IGZhbHNlLCBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0OiB1c2VyaGFuZGxlQmFz
ZTY0IH0gfSk7CiAKICAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICAgICAgY29u
c3Qgb3B0aW9ucyA9IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWls
dXJlLWxvY2FsLmh0dHBzLmh0bWwKaW5kZXggZWEwZTJhNDZiZjA1MWEwZmU3OGFhZjI0MGNmNzI4
YzdhN2Y0NDJkYS4uM2U0ZjQ5OTA2YzMyZTRlODk1MjU4ZjY2ODNhMGZiZWE0OTk3NzllZiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWdldC1mYWlsdXJlLWxvY2FsLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxvY2FsLmh0dHBz
Lmh0bWwKQEAgLTksOCArOSw4IEBACiAgICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBh
d2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKICAgICAgICAgY29uc3QgY3JlZGVudGlh
bElEID0gYXdhaXQgY2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOwogICAg
ICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlk
ZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRp
b25Nb2NrQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxz
ZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlLCBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0OiB1
c2VyaGFuZGxlQmFzZTY0IH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
eyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0dGVzdGF0aW9u
OiBmYWxzZSwgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDogdXNlcmhhbmRsZUJhc2U2NCB9IH0p
OwogCiAgICAgICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgICAgIGNvbnN0IG9wdGlv
bnMgPSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbmZjLmh0
dHBzLmh0bWwKaW5kZXggZGI2NDg3NGZmZjVkODFmZTdiNjE0NDM5ZjcyNjI5YTk5ZDAwMjUxMy4u
Mjc1ZWU2NmUyNjI4NzkxN2FhZGU5Y2U1M2U0ZTkyNzQ3YmRhNjA0ZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWls
dXJlLW5mYy5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbApAQCAtNSw4ICs1
LDggQEAKIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQ+CiAgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3Zl
cnJpZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgotICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1v
Y2tDb25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiIH0gfSk7
CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXRNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAibWFsaWNpb3VzLXBh
eWxvYWQiIH0gfSk7CiAKICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAgIGNvbnN0IG9w
dGlvbnMgPSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLXNpbGVudC5odHRwcy5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWls
dXJlLXUyZi1zaWxlbnQuaHR0cHMuaHRtbAppbmRleCA4YTdjZDhhNWJiOTFkODFiMTQ3NmFkZDdj
NDJkMDEzNjNiMGQ2YzdhLi5hZTViYmRkM2UzOGI0ZGRmNGJiMDY0M2U5ZmQ1MDNhZjc5OGQyM2Jj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLXNpbGVudC5odHRwcy5odG1sCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11
MmYtc2lsZW50Lmh0dHBzLmh0bWwKQEAgLTEzLDggKzEzLDggQEAKICAgICAgICAgICAgIH0KICAg
ICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRG
YWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBl
cnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0
ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6
ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwg
aXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9u
c2VCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxs
b3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlv
biB0aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdp
dGggbWFsZm9ybWVkIHNpZ24gcmVzcG9uc2UgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIp
OwogCkBAIC0yNyw4ICsyNyw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJB
dXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlk
OiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMt
cGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0Rh
dGFPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
KQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3Vi
U3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBh
eWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NF0gfSB9
KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4i
KTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBubyBtYXRjaGVk
IGFsbG93IGNyZWRlbnRpYWxzIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAt
NDEsOCArNDEsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGlj
YXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFn
ZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQi
LCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJl
c3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NF0gfSB9
KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMu
c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRy
dWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFs
aWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1
V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNw
b25zZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RB
bGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiT3BlcmF0
aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0g
d2l0aCBubyBtYXRjaGVkIGFsbG93IGNyZWRlbnRpYWxzIGluIGEgbW9jayBoaWQgYXV0aGVudGlj
YXRvci4gMiIpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLmh0dHBzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0
LWZhaWx1cmUtdTJmLmh0dHBzLmh0bWwKaW5kZXggNjQ5MTM3ODI4NGViNjdhMTllN2Q2MDVlNjg3
MDAwZGE2NDFlYmRlNi4uNWQxZDMwMGU2ODg1Njg0NDlkMWRmM2U4NDZmZDZlMjJhZDhhMjQwMiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWdldC1mYWlsdXJlLXUyZi5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYuaHR0cHMu
aHRtbApAQCAtMTIsOCArMTIsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2Vi
QXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3Qi
LCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1
ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NF0g
fSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5h
bHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTog
InJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBp
c1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25z
ZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3du
RXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiQ291bGRuJ3QgcGFy
c2UgdGhlIFUyRiBzaWduIHJlc3BvbnNlLiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tnZXRdXSB3aXRoIG1hbGZvcm1lZCBzaWduIHJlc3BvbnNlIGluIGEgbW9jayBoaWQgYXV0
aGVudGljYXRvci4iKTsKIApAQCAtMjUsOCArMjUsOCBAQAogICAgICAgICAgICAgfQogICAgICAg
ICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RS
dW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFn
ZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQi
LCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJl
c3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAg
ICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsg
aGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lv
dXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9u
Z0RhdGFPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVq
ZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRp
b25zKSwgIk5vIGNyZWRlbnRpYWxzIGZyb20gdGhlIGFsbG93Q3JlZGVudGlhbHMgbGlzdCBpcyBm
b3VuZCBpbiB0aGUgYXV0aGVudGljYXRvci4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbZ2V0XV0gd2l0aCBubyBtYXRjaGVkIGFsbG93IGNyZWRlbnRpYWxzIGluIGEgbW9jayBo
aWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtMzgsOCArMzgsOCBAQAogICAgICAgICAgICAgfQog
ICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBh
eWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRh
T25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2
NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRl
cm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFn
ZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQi
LCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJl
c3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NF0gfSB9
KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiTm8gY3JlZGVudGlhbHMgZnJvbSB0
aGUgYWxsb3dDcmVkZW50aWFscyBsaXN0IGlzIGZvdW5kIGluIHRoZSBhdXRoZW50aWNhdG9yLiIp
OwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQg
YWxsb3cgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAyIik7CiAKQEAg
LTUzLDggKzUzLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRp
Y2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3Rh
Z2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxv
YWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUy
ZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJt
c2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNl
NjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVX
cm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNl
UmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChv
cHRpb25zKSwgIk5vIGNyZWRlbnRpYWxzIGZyb20gdGhlIGFsbG93Q3JlZGVudGlhbHMgbGlzdCBp
cyBmb3VuZCBpbiB0aGUgYXV0aGVudGljYXRvci4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbZ2V0XV0gd2l0aCBubyBtYXRjaGVkIGFsbG93IGNyZWRlbnRpYWxzIGluIGEgbW9j
ayBoaWQgYXV0aGVudGljYXRvci4gKEFwcElEKSIpOwogCkBAIC02Nyw4ICs2Nyw4IEBACiAgICAg
ICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0
aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJt
YWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFw
ZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJl
c3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVz
dFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6
ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRC
YXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFw
ZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJl
c3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NF0gfSB9
KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiTm8gY3JlZGVudGlhbHMgZnJvbSB0
aGUgYWxsb3dDcmVkZW50aWFscyBsaXN0IGlzIGZvdW5kIGluIHRoZSBhdXRoZW50aWNhdG9yLiIp
OwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQg
YWxsb3cgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAyIChBcHBJRCki
KTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUuaHR0
cHMuaHRtbAppbmRleCBlMmY5NWQ2N2Q4ZDhmNzRkNTk2OWYzNThkYWNkZmUxYTMzNWI0ZDIyLi5j
ZjE4ZmY3N2VmMzNmYTMyNDMyMGQzYzViM2FjNjRkYTllYTQyODMyIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1
cmUuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUuaHR0cHMuaHRtbApAQCAtNSw4ICs1LDggQEAKIDxz
Y3JpcHQgc3JjPSIuL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAgICAg
Ly8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYg
dGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgotICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1
cmF0aW9uKHsgfSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFs
cy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgfSk7CiAKICAgICBwcm9t
aXNlX3Rlc3QodCA9PiB7CiAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1
Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwKaW5kZXggZDliMjJi
NDJhOWQ3NjIwMDIxNDEyMTBjNDVkNjhjZmE2ZDFiOTUzNi4uMGNmMDNlN2RkNmU5MTkwYjdmNTZm
N2I5MGVjOTM5YzBlMmFkZWRiMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWhpZC5odHRwcy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1n
ZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbApAQCAtNSw4ICs1LDggQEAKIDxzY3JpcHQgc3JjPSIu
L3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAgICAgLy8gRGVmYXVsdCBt
b2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRp
ZmZlcmVudCBjb25maWd1cmF0aW9uLgotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAg
ICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlk
OiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwg
cGF5bG9hZEJhc2U2NDogW3Rlc3RBc3NlcnRpb25NZXNzYWdlQmFzZTY0XSB9IH0pOworICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTog
Im1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0QXNzZXJ0aW9uTWVz
c2FnZUJhc2U2NF0gfSB9KTsKIAogICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29u
c3Qgb3B0aW9ucyA9IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1sb2NhbC5odHRwcy5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNj
ZXNzLWxvY2FsLmh0dHBzLmh0bWwKaW5kZXggZTE4MjA5NDhmNzdlNWI3Zjg0NDM5OGU5ZDBmZjY3
MDZjNThlZjc0My4uOTM2MGFmYjhmNTU4Mjc1ODQzZjkwMDM0NTdjNzBlODdjNDM3NmNiZiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWdldC1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWxvY2FsLmh0dHBz
Lmh0bWwKQEAgLTksOCArOSw4IEBACiAgICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBh
d2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKICAgICAgICAgY29uc3QgY3JlZGVudGlh
bElEID0gYXdhaXQgY2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOwogICAg
ICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlk
ZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRp
b25Nb2NrQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVl
LCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UsIHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ6IHVz
ZXJoYW5kbGVCYXNlNjQgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAg
ICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7
IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjog
ZmFsc2UsIHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ6IHVzZXJoYW5kbGVCYXNlNjQgfSB9KTsK
IAogICAgICAgICBmdW5jdGlvbiBjaGVja1Jlc3VsdChjcmVkZW50aWFsKQogICAgICAgICB7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtZ2V0LXN1Y2Nlc3MtbmZjLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbmZjLmh0dHBzLmh0bWwK
aW5kZXggZmM3YzZhYTM1NWU4Y2ZkYmI1NDMzZGUxZGJjZTU1ZWI1YzVlNjQxMy4uY2MwNTBkYTFj
M2QxMzQ1MTFmMWUxODdhNzZhYzU2MzliMTlkNDE4NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLW5mYy5o
dHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1uZmMuaHR0cHMuaHRtbApAQCAtNSw4ICs1LDggQEAKIDxz
Y3JpcHQgc3JjPSIuL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAgICAg
Ly8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYg
dGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgotICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1
cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0TmZj
Q3RhcFZlcnNpb25CYXNlNjQsIHRlc3RHZXRJbmZvUmVzcG9uc2VBcGR1QmFzZTY0LCB0ZXN0QXNz
ZXJ0aW9uTWVzc2FnZUFwZHVCYXNlNjRdIH0gfSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
CisgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
KHsgbmZjOiB7IGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0TmZjQ3RhcFZl
cnNpb25CYXNlNjQsIHRlc3RHZXRJbmZvUmVzcG9uc2VBcGR1QmFzZTY0LCB0ZXN0QXNzZXJ0aW9u
TWVzc2FnZUFwZHVCYXNlNjRdIH0gfSk7CiAKICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAg
ICAgIGNvbnN0IG9wdGlvbnMgPSB7CkBAIC0zMCw4ICszMCw4IEBACiAgICAgICAgICAgICB9CiAg
ICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7
IGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0TmZjVTJmVmVyc2lvbkJhc2U2
NCwgdGVzdFUyZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZT
aWduUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAg
ICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBu
ZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3ROZmNVMmZWZXJzaW9u
QmFzZTY0LCB0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVz
dFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50
aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIHJldHVy
biBjaGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtZ2V0LXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWwK
aW5kZXggOTViMmQxYjJlMTk0ZWYyZDNlODFjNDg2OWU5NDc1ZmNmMGQ0M2Q3ZS4uMGYwMDA4YWI1
NDNmNWFkNzViY2M1Nzg0M2NkZmE1NWQ5Y2I0NWZhMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLXUyZi5o
dHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbApAQCAtMTMsOCArMTMsOCBAQAog
ICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9y
OiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlNpZ25SZXNw
b25zZV0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBp
bnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBz
dGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJm
OiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKICAgICAg
ICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50
aWFsID0+IHsKICAgICAgICAgICAgIHJldHVybiBjaGVja1UyZkdldEFzc2VydGlvblJlc3VsdChj
cmVkZW50aWFsKTsKICAgICAgICAgfSk7CkBAIC0yOSw4ICsyOSw4IEBACiAgICAgICAgICAgICB9
CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlk
OiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwg
aXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNw
b25zZUJhc2U2NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1z
ZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUy
ZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZTaWduUmVzcG9uc2VdIH0g
fSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRo
ZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tVMmZHZXRBc3NlcnRp
b25SZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwpAQCAtNDUsOCArNDUsOCBAQAogICAg
ICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAi
c3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVDb25kaXRp
b25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlvbnNO
b3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7
CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNl
dE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5
bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25z
ZUJhc2U2NCwgdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFz
ZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9y
LmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAg
ICAgcmV0dXJuIGNoZWNrVTJmR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAg
ICB9KTsKQEAgLTYzLDggKzYzLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdl
YkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0
Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9h
ZEJhc2U2NDogW3Rlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ci
LCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZT
aWduUmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Z2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICByZXR1cm4gY2hl
Y2tVMmZHZXRBc3NlcnRpb25SZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwpAQCAtODAs
OCArODAsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRp
b25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTog
Im1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVz
dFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3Vj
Y2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlNpZ25SZXNwb25zZV0g
fSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyku
dGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIHJldHVybiBjaGVja1UyZkdldEFzc2Vy
dGlvblJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7CkBAIC05Nyw4ICs5Nyw4IEBACiAg
ICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1
cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6
ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25n
RGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKKyAgICAg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBz
dWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFz
ZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZTaWdu
UmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0
KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tV
MmZHZXRBc3NlcnRpb25SZXN1bHQoY3JlZGVudGlhbCwgdHJ1ZSk7CiAgICAgICAgIH0pOwpAQCAt
MTE1LDggKzExNSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50
aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0
YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6
IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNpZ25SZXNw
b25zZV0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBp
bnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBz
dGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJm
OiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VC
YXNlNjQsIHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0
b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAg
ICAgICByZXR1cm4gY2hlY2tVMmZHZXRBc3NlcnRpb25SZXN1bHQoY3JlZGVudGlhbCwgdHJ1ZSwg
IjdlYWJjNWNjMzI1MWJkYzU5MTE1ZWY4N2I1ZjdlZTc0Y2IwMzc0N2UzOWJhODM0MTc0ODU2NWNj
MTI5YzA3MTkiKTsKICAgICAgICAgfSk7CkBAIC0xMzIsOCArMTMyLDggQEAKICAgICAgICAgICAg
IH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
ICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBo
aWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3Mi
LCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJl
c3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVz
dFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3Vj
Y2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFP
bmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0
LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAg
cmV0dXJuIGNoZWNrVTJmR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9
KTsKQEAgLTE0OSw4ICsxNDksOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2Vi
QXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3Qi
LCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2Fk
QmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZB
cGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlS
ZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKKyAgICAgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTog
Im1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVz
dFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRh
T25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2
NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5j
cmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAg
IHJldHVybiBjaGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsLCB0cnVlKTsKICAg
ICAgICAgfSk7CkBAIC0xNjYsOCArMTY2LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsK
IAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVy
LnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJy
ZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBjYW5Eb3duZ3JhZGU6
IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9u
c2VCYXNlNjQsIHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ci
LCBlcnJvcjogInN1Y2Nlc3MiLCBjYW5Eb3duZ3JhZGU6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0
ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZTaWduUmVz
cG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9w
dGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tVMmZH
ZXRBc3NlcnRpb25SZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwpAQCAtMTgzLDggKzE4
Myw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1v
Y2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNn
IiwgZXJyb3I6ICJzdWNjZXNzIiwgY2FuRG93bmdyYWRlOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBb
dGVzdEN0YXBFcnJJbnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdVdy
b25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKKyAg
ICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3Qi
LCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGNhbkRvd25ncmFkZTogdHJ1ZSwg
cGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2
NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZTaWduUmVz
cG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9w
dGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tVMmZH
ZXRBc3NlcnRpb25SZXN1bHQoY3JlZGVudGlhbCwgdHJ1ZSwgIjdlYWJjNWNjMzI1MWJkYzU5MTE1
ZWY4N2I1ZjdlZTc0Y2IwMzc0N2UzOWJhODM0MTc0ODU2NWNjMTI5YzA3MTkiKTsKICAgICAgICAg
fSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMv
cHVibGljLWtleS1jcmVkZW50aWFsLWlwLWFkZHJlc3MuaHR0cHMuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy9wdWJsaWMta2V5LWNyZWRlbnRpYWwtaXAtYWRk
cmVzcy5odHRwcy5odG1sCmluZGV4IDZkZTNhOTQzNTA0YmY0ZmY5OTIzZjc4NDZhZGQ4NzU0MzQ2
OGQwY2QuLjgxMTgzYzBjZGNjZmFmZWIwYWI1ZmY0M2NkNWM3NWMzYmIxYTJiZjAgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtaXAtYWRkcmVzcy5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3Jlc291cmNlcy9wdWJsaWMta2V5LWNyZWRlbnRpYWwtaXAtYWRkcmVzcy5odHRw
cy5odG1sCkBAIC01LDggKzUsOCBAQAogPHNjcmlwdCBzcmM9InV0aWwuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdD4KICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0
byBvdmVycmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0
aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyB9KTsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyB9
KTsKIAogICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CiAgICAgICAgIGNvbnN0IG9wdGlv
bnMgPSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380555</attachid>
            <date>2019-10-09 12:26:05 -0700</date>
            <delta_ts>2019-10-09 13:20:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202560-20191009122605.patch</filename>
            <type>text/plain</type>
            <size>194936</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwOTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzNlZDcxNTI3MTBkMjU0
YmUxNDNkMjUwYTgzYjkyMzlhNWE1YTRhYy4uMzBiOTVmZDk1MDkzODQxNGNkN2I5ZmE0MDg2ZDYy
YjU0YjVkZTg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE5LTEwLTA4ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBNb3Zl
IHRoZSBtb2NrIHRlc3RpbmcgZW50cmFuY2UgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NjAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzU1OTczNzkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgVGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlv
bk1vY2tDb25maWd1cmF0aW9uIHRvCisgICAgICAgIEludGVybmFscy5zZXRNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uIGFuZCByZW1vdmVzIHRoZSBvbGQKKyAgICAgICAgZW50cmFu
Y2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IHVwZGF0ZXMgb24gZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlD
cmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmg6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24pOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbik6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5pZGw6CisgICAgICAgICogdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbjo6TG9jYWxDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TG9jYWxDb25maWd1
cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbjo6SGlkQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENvbmZpZ3Vy
YXRpb246OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uOjpOZmNDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29uZmlndXJh
dGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIHRlc3RpbmcvTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGw6IEFkZGVkLgorCiAyMDE5LTEwLTA5
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBXYXlsYW5kOiBkbyBub3QgdXNlIEVHTF9QTEFURk9STV9XQVlMQU5EX0tIUiB3aXRoIGVn
bEdldFBsYXRmb3JtRGlzcGxheUVYVApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiMjhmY2I2YmIwOTE2M2Q1NDMzNGEz
MjRlNjU3MWFmNWIwYzk5NWE5Li5lMjQxYmQ5ZmVmMDAzMTFmMzM3NzZiNmVmY2MwZmVkYjdlNWQ0
ZmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE5LTEwLTA4ICBKaWV3ZW4gVGFuICA8
amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBNb3ZlIHRoZSBtb2Nr
IHRlc3RpbmcgZW50cmFuY2UgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NjAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1
OTczNzkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChX
S1dlYnNpdGVEYXRhU3RvcmVTZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JU
cmFuc3BvcnRTZXJ2aWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvclRyYW5z
cG9ydFNlcnZpY2U6OmNyZWF0ZU1vY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok1vY2tBdXRoZW50aWNhdG9yTWFuYWdlcjo6TW9ja0F1dGhlbnRp
Y2F0b3JNYW5hZ2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9j
ay9Nb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok1vY2tIaWRDb25uZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKFdlYktpdDo6TW9ja0hpZENvbm5l
Y3Rpb246OnJlZ2lzdGVyRGF0YVJlY2VpdmVkQ2FsbGJhY2tJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1vY2tIaWRDb25uZWN0aW9uOjpwYXJzZVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0
OjpNb2NrSGlkQ29ubmVjdGlvbjo6ZmVlZFJlcG9ydHMpOgorICAgICAgICAoV2ViS2l0OjpNb2Nr
SGlkQ29ubmVjdGlvbjo6c2hvdWxkQ29udGludWVGZWVkUmVwb3J0cyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkU2VydmljZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok1vY2tIaWRTZXJ2aWNlOjpNb2NrSGlkU2VydmljZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZFNlcnZpY2UuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25u
ZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9j
a0xvY2FsQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6TW9ja0xvY2FsQ29ubmVjdGlv
bjo6TW9ja0xvY2FsQ29ubmVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL01vY2svTW9ja0xvY2FsU2VydmljZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbFNlcnZpY2UubW06CisgICAgICAgIChXZWJLaXQ6
Ok1vY2tMb2NhbFNlcnZpY2U6Ok1vY2tMb2NhbFNlcnZpY2UpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja05mY1NlcnZpY2UubW06CisgICAgICAg
IChXZWJLaXQ6Ok1vY2tOZmNTZXJ2aWNlOjpNb2NrTmZjU2VydmljZSk6CisgICAgICAgIChXZWJL
aXQ6Ok1vY2tOZmNTZXJ2aWNlOjpwbGF0Zm9ybVN0YXJ0RGlzY292ZXJ5KToKKyAgICAgICAgKFdl
YktpdDo6TW9ja05mY1NlcnZpY2U6OmRldGVjdFRhZ3MgY29uc3QpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xp
ZW50OjpzZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorCiAyMDE5LTEwLTA5
ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGVz
dFJ1bm5lci5zZXRXZWJSVENVbmlmaWVkUGxhbkVuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGVmNDM0MGE2MjgxYjQzYWU1OWY1
NjU5MzYyNDZlMmMzMjMzMjhlOTYuLmYzMjA4NTVhNTNiNjg4YmUzYzMwOTc2MTg4ODNjNjMxNTA4
NGZhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdApAQCAtMTA4OSw2ICsxMDg5LDcgQEAgJChQUk9KRUNUX0RJUikvdGVzdGluZy9Nb2NrUGF5
bWVudEFkZHJlc3MuaWRsCiAkKFBST0pFQ1RfRElSKS90ZXN0aW5nL01vY2tQYXltZW50Q29udGFj
dEZpZWxkcy5pZGwKICQoUFJPSkVDVF9ESVIpL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRv
ci5pZGwKICQoUFJPSkVDVF9ESVIpL3Rlc3RpbmcvTW9ja1BheW1lbnRFcnJvci5pZGwKKyQoUFJP
SkVDVF9ESVIpL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGwK
ICQoUFJPSkVDVF9ESVIpL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwKICQoUFJP
SkVDVF9ESVIpL3Rlc3RpbmcvVHlwZUNvbnZlcnNpb25zLmlkbAogJChQUk9KRUNUX0RJUikvd29y
a2Vycy9BYnN0cmFjdFdvcmtlci5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggMDkwOWQ3YjFmYmZkODUyZDI2YmZiMWJmNWIxY2Mx
MzQ2OTI5YjRkOC4uMTYyZDQ0ZDg0OTMzMTU1YzAxMDY1ODE2MjY1YThiNDc1NDJjMDcwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QK
KysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAg
LTEwNTksNiArMTA1OSw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTW9ja1BheW1lbnRDb29yZGluYXRvci5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01vY2tQYXltZW50RXJy
b3IuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01v
Y2tQYXltZW50RXJyb3IuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmNwcAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTTW91c2VFdmVudC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTTW91c2VFdmVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU01vdXNlRXZlbnRJbml0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKaW5kZXggYzBhNGYwMDc0ZDFhNjJhNTdiNWNkYzhjNDRkZjBmN2JmMjViNDIxNS4u
OGU3N2U2ZDBmYTU2ZmExMzBhYjdkOGIyNmY0YmEwZTQ4ZWNlY2NlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCkBAIC0xMDc2LDYgKzEwNzYsNyBAQCBKU19CSU5ESU5HX0lETFMgPSBc
CiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL01vY2tQYXltZW50Q29udGFjdEZpZWxkcy5pZGwgXAog
ICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmlkbCBcCiAgICAg
JChXZWJDb3JlKS90ZXN0aW5nL01vY2tQYXltZW50RXJyb3IuaWRsIFwKKyAgICAkKFdlYkNvcmUp
L3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGwgXAogICAgICQo
V2ViQ29yZSkvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbCBcCiAgICAgJChXZWJD
b3JlKS90ZXN0aW5nL1R5cGVDb252ZXJzaW9ucy5pZGwgXAogICAgICQoV2ViQ29yZSkvd29ya2Vy
cy9BYnN0cmFjdFdvcmtlci5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnMuaAppbmRleCAzNzJkZjFiOTRlOGJmNjQwMjMzMGU1NDVlZDQ3NTY4MGI3NDIzZGE1Li5kOGM3
YmJiM2M1ZDc5MjdmOTE1Y2Y0ZWU2NzIwZDI4ZGZjMGM4YzM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRl
bnRpYWxDcmVhdGlvbk9wdGlvbnMuaApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIlB1Ymxp
Y0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiUHVibGljS2V5Q3JlZGVudGlh
bFR5cGUuaCIKICNpbmNsdWRlICJVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQuaCIKLSNpbmNs
dWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2EzYTliZGFlZjg3Mzk5YzA4ZjliM2ZiMzI3ZjBm
NzVjODQ5NGU0Yy4uZTM3M2M4MTlhOWJkNTMzYWExZDExNzcxZWJhM2E0ODBmM2YzOWZiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTczOCw2ICsxNzM4LDEwIEBACiAJCTU3MTUyQjZFMjFDRDk5NUQwMDBDMzdDQSAvKiBVMmZD
b21tYW5kQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3MTUyQjZDMjFDRDk5NUMwMDBDMzdDQSAvKiBVMmZDb21tYW5kQ29uc3RydWN0
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
NzE1MkI3QzIxREQ4QkExMDAwQzM3Q0EgLyogVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTUyQjdBMjFERDhCQTEw
MDBDMzdDQSAvKiBVMmZSZXNwb25zZUNvbnZlcnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3MTUyQjgwMjFEREE1ODEwMDBDMzdDQSAvKiBX
ZWJBdXRoZW50aWNhdGlvblV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NzE1MkI3RTIxRERBNTgxMDAwQzM3Q0EgLyogV2ViQXV0aGVudGljYXRp
b25VdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTU3MTU2MTBCMjM0QzFCNDkwMDhGQzdBQiAvKiBNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzE1NjEwODIzNEMxQjMxMDA4RkM3QUIgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbi5oICovOyB9OworCQk1NzE1NjEwQzIzNEMxQ0ExMDA4RkM3QUIgLyogTW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTcxNTYxMDgyMzRDMUIzMTAwOEZDN0FCIC8qIE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk1NzE1NjExNDIzNEM3RkQ2MDA4RkM3QUIgLyogSlNNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTU2MTExMjM0QzdGQkMwMDhGQzdBQiAvKiBKU01vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uY3BwICovOyB9OworCQk1NzE1NjExNTIzNEM3
RkRDMDA4RkM3QUIgLyogSlNNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE1NjExMDIzNEM3
RkJDMDA4RkM3QUIgLyogSlNNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggKi87
IH07CiAJCTU3MUYyMTg5MURBNTdDNTQwMDVDOUVGRCAvKiBKU1N1YnRsZUNyeXB0by5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcxRjIxODgxREE1N0M1
NDAwNUM5RUZEIC8qIEpTU3VidGxlQ3J5cHRvLmggKi87IH07CiAJCTU3MjA5M0QzMUREQ0VCOUEw
MDMxMEFCMCAvKiBDcnlwdG9BbGdvcml0aG1BZXNDYmNDZmJQYXJhbXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MjA5M0QyMUREQ0VCOUEwMDMxMEFC
MCAvKiBDcnlwdG9BbGdvcml0aG1BZXNDYmNDZmJQYXJhbXMuaCAqLzsgfTsKIAkJNTcyMUE5ODcx
RUNFNTNCMTAwODEyOTVBIC8qIENyeXB0b0RpZ2VzdEFsZ29yaXRobS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyMUE5ODYxRUNFNTNCMTAwODEyOTVB
IC8qIENyeXB0b0RpZ2VzdEFsZ29yaXRobS5oICovOyB9OwpAQCAtODYwNSw2ICs4NjA5LDEwIEBA
CiAJCTU3MTUyQjdCMjFERDhCQTEwMDBDMzdDQSAvKiBVMmZSZXNwb25zZUNvbnZlcnRlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBVMmZSZXNwb25zZUNvbnZlcnRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU3MTUyQjdFMjFEREE1ODEwMDBDMzdDQSAvKiBXZWJBdXRoZW50
aWNhdGlvblV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcxNTJCN0YyMUREQTU4MTAwMEMzN0NBIC8q
IFdlYkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXV0aGVu
dGljYXRpb25VdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MTU2MTA4
MjM0QzFCMzEwMDhGQzdBQiAvKiBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTcxNTYxMEQyMzRD
NzQ4MTAwOEZDN0FCIC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1NzE1NjExMDIzNEM3RkJDMDA4RkM3QUIgLyogSlNNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1NzE1NjExMTIzNEM3RkJDMDA4RkM3QUIgLyogSlNNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MUYyMTg4MURBNTdDNTQwMDVDOUVGRCAvKiBKU1N1
YnRsZUNyeXB0by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N1YnRsZUNy
eXB0by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzFGMjE4QTFEQTU3QzdBMDA1
QzlFRkQgLyogSlNTdWJ0bGVDcnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNTdWJ0bGVDcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NzIwOTNEMTFERENFQTRCMDAzMTBBQjAgLyogQWVzQ2JjQ2ZiUGFyYW1zLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBB
ZXNDYmNDZmJQYXJhbXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc4OTIs
NiArMTc5MDAsOCBAQAogCQkJCUExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAvKiBNb2NrUGF5bWVu
dE1ldGhvZC5oICovLAogCQkJCUExNDA2MTg5MUUyRUNBMEEwMDMyQjM0RSAvKiBNb2NrUHJldmll
d0xvYWRlckNsaWVudC5jcHAgKi8sCiAJCQkJQTE0MDYxOEExRTJFQ0EwQTAwMzJCMzRFIC8qIE1v
Y2tQcmV2aWV3TG9hZGVyQ2xpZW50LmggKi8sCisJCQkJNTcxNTYxMDgyMzRDMUIzMTAwOEZDN0FC
IC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCAqLywKKwkJCQk1NzE1NjEw
RDIzNEM3NDgxMDA4RkM3QUIgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5p
ZGwgKi8sCiAJCQkJNDE3RjBEODAxRkZFRTE0RjAwOEVGMzAzIC8qIFNlcnZpY2VXb3JrZXJJbnRl
cm5hbHMuY3BwICovLAogCQkJCTQxN0YwRDdFMUZGRUUxNEUwMDhFRjMwMyAvKiBTZXJ2aWNlV29y
a2VySW50ZXJuYWxzLmggKi8sCiAJCQkJNDE3RjBEODExRkZFRTE1MDAwOEVGMzAzIC8qIFNlcnZp
Y2VXb3JrZXJJbnRlcm5hbHMuaWRsICovLApAQCAtMTc5MzIsNiArMTc5NDIsOCBAQAogCQkJCUEx
NDZEMzE4MUY5OUJDQkEwMEQyOTE5NiAvKiBKU01vY2tQYXltZW50Q29vcmRpbmF0b3IuaCAqLywK
IAkJCQlBMUJCODVCNDIxNTlCMzg5MDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCAq
LywKIAkJCQlBMUJCODVCNTIxNTlCMzhBMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmgg
Ki8sCisJCQkJNTcxNTYxMTEyMzRDN0ZCQzAwOEZDN0FCIC8qIEpTTW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbi5jcHAgKi8sCisJCQkJNTcxNTYxMTAyMzRDN0ZCQzAwOEZDN0FCIC8q
IEpTTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oICovLAogCQkJCTQyN0RBNzFC
MTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwICovLAogCQkJ
CTQyN0RBNzFDMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCAq
LywKIAkJCQlFQkY1MTIxQTE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuY3Bw
ICovLApAQCAtMjg0MjUsNiArMjg0MzcsNyBAQAogCQkJCUExMDRFQzVFMjIwQTNFNEUwMENCRjY3
QSAvKiBKU01vY2tQYXltZW50Q29udGFjdEZpZWxkcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE0
NkQzMUIxRjk5QkNGQjAwRDI5MTk2IC8qIEpTTW9ja1BheW1lbnRDb29yZGluYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTFCQjg1QjkyMTU5QjNBRTAwNjdFMDdEIC8qIEpTTW9ja1BheW1lbnRF
cnJvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTcxNTYxMTUyMzRDN0ZEQzAwOEZDN0FCIC8qIEpT
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDI3REE3MUUxMzczNURGQTAwN0M1N0ZCIC8qIEpTU2VydmljZVdvcmtlckludGVybmFscy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRUJGNTEyMUQxNjk2NDk2QzAwNTZCRDI1IC8qIEpTVHlwZUNvbnZl
cnNpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMyNkI0MTE2MEE4Q0NFMDAyNjc1N0IgLyog
TGVnYWN5TW9ja0NETS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODQ0Miw2ICsyODQ1NSw3IEBACiAJ
CQkJQTFBRkVERTYxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCUExQ0JFRjY0MUY5RjExMjkwMDI4REU3QyAvKiBNb2NrUGF5bWVu
dE1ldGhvZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE0MDYxOEMxRTJFQ0EwQTAwMzJCMzRFIC8q
IE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzE1NjEwQjIz
NEMxQjQ5MDA4RkM3QUIgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQUE1RjNCOEQxNkNDMzNEMTAwNDU1RUIwIC8qIFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXJNb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTc2M0YzRjFFMjA1MjM0
MDAxRDU4REUgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTgxNUMxRjEzODMxOTgzMDA1N0FBQTQgLyogV2ViQ29yZVRlc3RTdXBwb3J0LmggaW4gSGVhZGVy
cyAqLywKQEAgLTMxMDIxLDYgKzMxMDM1LDcgQEAKIAkJCQkwN0VFNzZFRjFCRUE2MTk4MDBGODkx
MzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
RjJCMDE3MTgyMDU0MDcwMEYyQjQyNCAvKiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0RGMkIwMTkxODIwNTQwNzAwRjJCNDI0IC8qIE1vY2tUcmFja3MuaCBp
biBIZWFkZXJzICovLAorCQkJCTU3MTU2MTBDMjM0QzFDQTEwMDhGQzdBQiAvKiBNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNkQ3NEFENTA5
QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3MDlBMDFGRTFFM0QwQkREMDA2QjBENEMgLyogTW9kdWxlRmV0Y2hGYWlsdXJlS2lu
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMyMDFDMUExRjhFODIxMzAwNzZBMDMyIC8qIE1vZHVs
ZUZldGNoUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjk4NCw2ICszMjk5OSw3IEBA
CiAJCQkJQTEwNEVDNUQyMjBBM0U0QjAwQ0JGNjdBIC8qIEpTTW9ja1BheW1lbnRDb250YWN0Rmll
bGRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDZEMzFBMUY5OUJDRjgwMEQyOTE5NiAvKiBK
U01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFCQjg1Qjgy
MTU5QjNBNDAwNjdFMDdEIC8qIEpTTW9ja1BheW1lbnRFcnJvci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk1NzE1NjExNDIzNEM3RkQ2MDA4RkM3QUIgLyogSlNNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQyN0RBNzFEMTM3MzVERkEwMDdD
NTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RUJGNTEyMUMxNjk2NDk2QzAwNTZCRDI1IC8qIEpTVHlwZUNvbnZlcnNpb25zLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUNEQzI2QjQwMTYwQThDQzYwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggZmRkYjE4
NjgyYmU3ZTFmNjZhZWRhYWI2OGNiYmM0NDgwODI4MDQ2ZS4uMzUwNWQ0NDA1NDFjM2Y0OWQ4NjY1
YjQ1NjNiZWVmYWVmZjY0ZDQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0x
MTAsNiArMTEwLDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVn
aW5zQ2FsbGJhY2s7CiBzdHJ1Y3QgQ29udGVudFJ1bGVMaXN0UmVzdWx0czsKIHN0cnVjdCBEYXRl
VGltZUNob29zZXJQYXJhbWV0ZXJzOwogc3RydWN0IEdyYXBoaWNzRGV2aWNlQWRhcHRlcjsKK3N0
cnVjdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOwogc3RydWN0IFNoYXJlRGF0
YVdpdGhQYXJzZWRVUkw7CiBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7CiBzdHJ1Y3QgV2luZG93
RmVhdHVyZXM7CkBAIC01MTAsNiArNTExLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
dXNlcklzSW50ZXJhY3RpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRVc2VySXNJbnRlcmFjdGluZyhib29sKSB7IH0KIAorI2lmIEVOQUJMRShXRUJfQVVU
SE4pCisgICAgdmlydHVhbCB2b2lkIHNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24oY29uc3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYpIHsgfQorI2VuZGlm
CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5DaHJvbWVDbGllbnQoKSA9IGRlZmF1bHQ7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGZmNDA5NjllZDY5ZjUzMjkx
MWRjNmU0Zjc2YzJjNDE0YzMzODMxYWEuLjZkYTFjZjNhMTMxZWQ4NWQwMzM0NzM4NGRjZTdhZGJh
NDRiZWVmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTUyMzQsNCAr
NTIzNCwxNyBAQCB2b2lkIEludGVybmFsczo6YWRkUHJlZmV0Y2hMb2FkRXZlbnRMaXN0ZW5lcihI
VE1MTGlua0VsZW1lbnQmIGxpbmssIFJlZlB0cjxFdmVudAogICAgIH0KIH0KIAorI2lmIEVOQUJM
RShXRUJfQVVUSE4pCit2b2lkIEludGVybmFsczo6c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbihjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiBjb25m
aWd1cmF0aW9uKQoreworICAgIGF1dG8qIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7Cisg
ICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8qIHBhZ2UgPSBkb2N1
bWVudC0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIHBhZ2Ut
PmNocm9tZSgpLmNsaWVudCgpLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
Y29uZmlndXJhdGlvbik7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggODE2NTk1YzVmNjM5ZjA5NGMwY2E2ZDZlZTNj
Y2M3MDRkYTdjM2RlNS4uYzEzNGRlZmRhYWYxNDBiYTk3ZDNkZTQ1MDBjNDk3NGFlNGM1NTZmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xMTIsNiArMTEyLDggQEAgY2xhc3Mg
U2VydmljZVdvcmtlcjsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJv
bWlzZURlZmVycmVkOwogCitzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bjsKKwogY2xhc3MgSW50ZXJuYWxzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8SW50ZXJuYWxz
PiwgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcgogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCiAgICAgLCBwcml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyCkBAIC04
ODQsNiArODg2LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkUHJlZmV0Y2hMb2FkRXZlbnRM
aXN0ZW5lcihIVE1MTGlua0VsZW1lbnQmLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJik7CiAKKyNp
ZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIHZvaWQgc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbihjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJik7Cisj
ZW5kaWYKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbHMoRG9jdW1lbnQmKTsKICAg
ICBEb2N1bWVudCogY29udGV4dERvY3VtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKaW5kZXggNDY4ZWYyMzFkNzRlMTk4NjVjMDQ5NDNiMjdjMjY0YzYxNmVhZmI5
YS4uNGUzYTQxMmExNGM4MmFiNDJjMzIyNDU4OWQwMjY4OGNkNTZhZTA0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNzk0LDQgKzc5NCw2IEBAIGVudW0gQ29tcG9zaXRp
bmdQb2xpY3kgewogICAgIFRleHRJbmRpY2F0b3JJbmZvIHRleHRJbmRpY2F0b3JGb3JSYW5nZShS
YW5nZSByYW5nZSwgVGV4dEluZGljYXRvck9wdGlvbnMgb3B0aW9ucyk7CiAKICAgICB2b2lkIGFk
ZFByZWZldGNoTG9hZEV2ZW50TGlzdGVuZXIoSFRNTExpbmtFbGVtZW50IGxpbmssIEV2ZW50TGlz
dGVuZXI/IGNhbGxiYWNrKTsKKworICAgIFtDb25kaXRpb25hbD1XRUJfQVVUSE5dIHZvaWQgc2V0
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzQ1MGYyNTY3NmFjMTI3YzYzNDljZmVjNmU5YTBmYzU2MzRkZTdlNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsMjkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiB7CisgICAgZW51bSBj
bGFzcyBIaWRTdGFnZSA6IGJvb2wgeworICAgICAgICBJbmZvLAorICAgICAgICBSZXF1ZXN0Cisg
ICAgfTsKKworICAgIGVudW0gY2xhc3MgSGlkU3ViU3RhZ2UgOiBib29sIHsKKyAgICAgICAgSW5p
dCwKKyAgICAgICAgTXNnCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgSGlkRXJyb3IgOiB1aW50
OF90IHsKKyAgICAgICAgU3VjY2VzcywKKyAgICAgICAgRGF0YU5vdFNlbnQsCisgICAgICAgIEVt
cHR5UmVwb3J0LAorICAgICAgICBXcm9uZ0NoYW5uZWxJZCwKKyAgICAgICAgTWFsaWNpb3VzUGF5
bG9hZCwKKyAgICAgICAgVW5zdXBwb3J0ZWRPcHRpb25zLAorICAgICAgICBXcm9uZ05vbmNlCisg
ICAgfTsKKworICAgIGVudW0gY2xhc3MgTmZjRXJyb3IgOiB1aW50OF90IHsKKyAgICAgICAgU3Vj
Y2VzcywKKyAgICAgICAgTm9UYWdzLAorICAgICAgICBXcm9uZ1RhZ1R5cGUsCisgICAgICAgIE5v
Q29ubmVjdGlvbnMsCisgICAgICAgIE1hbGljaW91c1BheWxvYWQKKyAgICB9OworCisgICAgc3Ry
dWN0IExvY2FsQ29uZmlndXJhdGlvbiB7CisgICAgICAgIGJvb2wgYWNjZXB0QXV0aGVudGljYXRp
b24geyBmYWxzZSB9OworICAgICAgICBib29sIGFjY2VwdEF0dGVzdGF0aW9uIHsgZmFsc2UgfTsK
KyAgICAgICAgU3RyaW5nIHByaXZhdGVLZXlCYXNlNjQ7CisgICAgICAgIFN0cmluZyB1c2VyQ2Vy
dGlmaWNhdGVCYXNlNjQ7CisgICAgICAgIFN0cmluZyBpbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRl
QmFzZTY0OworICAgICAgICBTdHJpbmcgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDsKKworICAg
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CisgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxMb2NhbENv
bmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJik7CisgICAgfTsKKworICAgIHN0cnVjdCBIaWRD
b25maWd1cmF0aW9uIHsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gcGF5bG9hZEJhc2U2NDsKKyAg
ICAgICAgSGlkU3RhZ2Ugc3RhZ2UgeyBIaWRTdGFnZTo6SW5mbyB9OworICAgICAgICBIaWRTdWJT
dGFnZSBzdWJTdGFnZSB7IEhpZFN1YlN0YWdlOjpJbml0IH07CisgICAgICAgIEhpZEVycm9yIGVy
cm9yIHsgSGlkRXJyb3I6OlN1Y2Nlc3MgfTsKKyAgICAgICAgYm9vbCBpc1UyZiB7IGZhbHNlIH07
CisgICAgICAgIGJvb2wga2VlcEFsaXZlIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBmYXN0RGF0
YUFycml2YWwgeyBmYWxzZSB9OworICAgICAgICBib29sIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEg
eyBmYWxzZSB9OworICAgICAgICBib29sIGNhbkRvd25ncmFkZSB7IGZhbHNlIH07CisKKyAgICAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owor
ICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SGlkQ29uZmln
dXJhdGlvbj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB9OworCisgICAgc3RydWN0IE5mY0NvbmZp
Z3VyYXRpb24geworICAgICAgICBOZmNFcnJvciBlcnJvciB7IE5mY0Vycm9yOjpTdWNjZXNzIH07
CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBheWxvYWRCYXNlNjQ7CisgICAgICAgIGJvb2wgbXVs
dGlwbGVUYWdzIHsgZmFsc2UgfTsKKworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxOZmNDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwor
ICAgIH07CisKKyAgICBib29sIHNpbGVudEZhaWx1cmUgeyBmYWxzZSB9OworICAgIE9wdGlvbmFs
PExvY2FsQ29uZmlndXJhdGlvbj4gbG9jYWw7CisgICAgT3B0aW9uYWw8SGlkQ29uZmlndXJhdGlv
bj4gaGlkOworICAgIE9wdGlvbmFsPE5mY0NvbmZpZ3VyYXRpb24+IG5mYzsKKworICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+Cit2b2lkIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkxvY2FsQ29u
ZmlndXJhdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rl
ciA8PCBhY2NlcHRBdXRoZW50aWNhdGlvbiA8PCBhY2NlcHRBdHRlc3RhdGlvbiA8PCBwcml2YXRl
S2V5QmFzZTY0IDw8IHVzZXJDZXJ0aWZpY2F0ZUJhc2U2NCA8PCBpbnRlcm1lZGlhdGVDQUNlcnRp
ZmljYXRlQmFzZTY0IDw8IHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ7Cit9CisKK3RlbXBsYXRl
PGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uOjpMb2NhbENvbmZpZ3VyYXRpb24+IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b246OkxvY2FsQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAg
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TG9jYWxDb25maWd1cmF0aW9uIHJl
c3VsdDsKKworICAgIE9wdGlvbmFsPGJvb2w+IGFjY2VwdEF1dGhlbnRpY2F0aW9uOworICAgIGRl
Y29kZXIgPj4gYWNjZXB0QXV0aGVudGljYXRpb247CisgICAgaWYgKCFhY2NlcHRBdXRoZW50aWNh
dGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXN1bHQuYWNjZXB0QXV0
aGVudGljYXRpb24gPSAqYWNjZXB0QXV0aGVudGljYXRpb247CisKKyAgICBPcHRpb25hbDxib29s
PiBhY2NlcHRBdHRlc3RhdGlvbjsKKyAgICBkZWNvZGVyID4+IGFjY2VwdEF0dGVzdGF0aW9uOwor
ICAgIGlmICghYWNjZXB0QXR0ZXN0YXRpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmVzdWx0LmFjY2VwdEF0dGVzdGF0aW9uID0gKmFjY2VwdEF0dGVzdGF0aW9uOworCisg
ICAgT3B0aW9uYWw8U3RyaW5nPiBwcml2YXRlS2V5QmFzZTY0OworICAgIGRlY29kZXIgPj4gcHJp
dmF0ZUtleUJhc2U2NDsKKyAgICBpZiAoIXByaXZhdGVLZXlCYXNlNjQpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmVzdWx0LnByaXZhdGVLZXlCYXNlNjQgPSBXVEZNb3ZlKCpw
cml2YXRlS2V5QmFzZTY0KTsKKworICAgIE9wdGlvbmFsPFN0cmluZz4gdXNlckNlcnRpZmljYXRl
QmFzZTY0OworICAgIGRlY29kZXIgPj4gdXNlckNlcnRpZmljYXRlQmFzZTY0OworICAgIGlmICgh
dXNlckNlcnRpZmljYXRlQmFzZTY0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJlc3VsdC51c2VyQ2VydGlmaWNhdGVCYXNlNjQgPSBXVEZNb3ZlKCp1c2VyQ2VydGlmaWNhdGVC
YXNlNjQpOworCisgICAgT3B0aW9uYWw8U3RyaW5nPiBpbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRl
QmFzZTY0OworICAgIGRlY29kZXIgPj4gaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NDsK
KyAgICBpZiAoIWludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmVzdWx0LmludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNl
NjQgPSBXVEZNb3ZlKCppbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0KTsKKworICAgIE9w
dGlvbmFsPFN0cmluZz4gcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDsKKyAgICBkZWNvZGVyID4+
IHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ7CisgICAgaWYgKCFwcmVmZXJyZWRVc2VyaGFuZGxl
QmFzZTY0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJlc3VsdC5wcmVmZXJy
ZWRVc2VyaGFuZGxlQmFzZTY0ID0gV1RGTW92ZSgqcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NCk7
CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9p
ZCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRDb25maWd1cmF0aW9uOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHBheWxvYWRC
YXNlNjQgPDwgc3RhZ2UgPDwgc3ViU3RhZ2UgPDwgZXJyb3IgPDwgaXNVMmYgPDwga2VlcEFsaXZl
IDw8IGZhc3REYXRhQXJyaXZhbCA8PCBjb250aW51ZUFmdGVyRXJyb3JEYXRhIDw8IGNhbkRvd25n
cmFkZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENvbmZpZ3VyYXRpb24+IE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENvbmZpZ3VyYXRpb246OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQoreworICAgIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENv
bmZpZ3VyYXRpb24gcmVzdWx0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBheWxv
YWRCYXNlNjQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGVFbnVtKHJlc3VsdC5zdGFnZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LnN1YlN0YWdlKSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXN1bHQu
ZXJyb3IpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LmlzVTJmKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5rZWVwQWxpdmUpKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmZhc3REYXRhQXJyaXZh
bCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQuY29udGludWVBZnRlckVycm9yRGF0YSkpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2FuRG93bmdyYWRlKSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uOjpOZmNDb25maWd1cmF0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sK
KyAgICBlbmNvZGVyIDw8IGVycm9yIDw8IHBheWxvYWRCYXNlNjQgPDwgbXVsdGlwbGVUYWdzOwor
fQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29uZmlndXJhdGlvbj4gTW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbjo6TmZjQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
Cit7CisgICAgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29uZmlndXJh
dGlvbiByZXN1bHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LmVycm9yKSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5wYXlsb2FkQmFzZTY0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tdWx0aXBsZVRhZ3MpKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+Cit2b2lkIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgc2lsZW50RmFpbHVyZSA8
PCBsb2NhbCA8PCBoaWQgPDwgbmZjOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0
aW9uYWw8TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbj4gTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiByZXN1bHQ7CisKKyAgICBPcHRpb25hbDxi
b29sPiBzaWxlbnRGYWlsdXJlOworICAgIGRlY29kZXIgPj4gc2lsZW50RmFpbHVyZTsKKyAgICBp
ZiAoIXNpbGVudEZhaWx1cmUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVz
dWx0LnNpbGVudEZhaWx1cmUgPSAqc2lsZW50RmFpbHVyZTsKKworICAgIE9wdGlvbmFsPE9wdGlv
bmFsPExvY2FsQ29uZmlndXJhdGlvbj4+IGxvY2FsOworICAgIGRlY29kZXIgPj4gbG9jYWw7Cisg
ICAgaWYgKCFsb2NhbCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXN1bHQu
bG9jYWwgPSBXVEZNb3ZlKCpsb2NhbCk7CisKKyAgICBPcHRpb25hbDxPcHRpb25hbDxIaWRDb25m
aWd1cmF0aW9uPj4gaGlkOworICAgIGRlY29kZXIgPj4gaGlkOworICAgIGlmICghaGlkKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJlc3VsdC5oaWQgPSBXVEZNb3ZlKCpoaWQp
OworCisgICAgT3B0aW9uYWw8T3B0aW9uYWw8TmZjQ29uZmlndXJhdGlvbj4+IG5mYzsKKyAgICBk
ZWNvZGVyID4+IG5mYzsKKyAgICBpZiAoIW5mYykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXN1bHQubmZjID0gV1RGTW92ZSgqbmZjKTsKKworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbjo6SGlkU3RhZ2U+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAor
ICAgICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRT
dGFnZSwKKyAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bjo6SGlkU3RhZ2U6OkluZm8sCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb246OkhpZFN0YWdlOjpSZXF1ZXN0CisgICAgPjsKK307CisKK3RlbXBsYXRl
PD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbjo6SGlkU3ViU3RhZ2U+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAor
ICAgICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRT
dWJTdGFnZSwKKyAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbjo6SGlkU3ViU3RhZ2U6OkluaXQsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZFN1YlN0YWdlOjpNc2cKKyAgICA+OworfTsKKwordGVt
cGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uOjpIaWRFcnJvcj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8
CisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Okhp
ZEVycm9yLAorICAgICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uOjpIaWRFcnJvcjo6U3VjY2VzcywKKyAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkRXJyb3I6OkRhdGFOb3RTZW50LAorICAgICAgICBXZWJD
b3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRFcnJvcjo6RW1wdHlS
ZXBvcnQsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b246OkhpZEVycm9yOjpXcm9uZ0NoYW5uZWxJZCwKKyAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkRXJyb3I6Ok1hbGljaW91c1BheWxvYWQsCisg
ICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZEVy
cm9yOjpVbnN1cHBvcnRlZE9wdGlvbnMsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZEVycm9yOjpXcm9uZ05vbmNlCisgICAgPjsKK307CisK
K3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbjo6TmZjRXJyb3I+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFs
dWVzPAorICAgICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
OjpOZmNFcnJvciwKKyAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbjo6TmZjRXJyb3I6OlN1Y2Nlc3MsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mY0Vycm9yOjpOb1RhZ3MsCisgICAgICAgIFdlYkNv
cmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mY0Vycm9yOjpXcm9uZ1Rh
Z1R5cGUsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b246Ok5mY0Vycm9yOjpOb0Nvbm5lY3Rpb25zLAorICAgICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmNFcnJvcjo6TWFsaWNpb3VzUGF5bG9hZAorICAg
ID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVU
SE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZGViODYxY2M5ZTZjNGM2
MjdhMDczMmQ3YWU2YTc0NTY3OWE2ZmRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmlkbApAQCAtMCww
ICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVUSE4sCitd
IGVudW0gTW9ja0hpZFN0YWdlIHsKKyAgICAiaW5mbyIsCisgICAgInJlcXVlc3QiCit9OworCitb
CisgICAgQ29uZGl0aW9uYWw9V0VCX0FVVEhOLAorXSBlbnVtIE1vY2tIaWRTdWJTdGFnZSB7Cisg
ICAgImluaXQiLAorICAgICJtc2ciCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVVEhO
LAorXSBlbnVtIE1vY2tIaWRFcnJvciB7CisgICAgInN1Y2Nlc3MiLAorICAgICJkYXRhLW5vdC1z
ZW50IiwKKyAgICAiZW1wdHktcmVwb3J0IiwKKyAgICAid3JvbmctY2hhbm5lbC1pZCIsCisgICAg
Im1hbGljaW91cy1wYXlsb2FkIiwKKyAgICAidW5zdXBwb3J0ZWQtb3B0aW9ucyIsCisgICAgIndy
b25nLW5vbmNlIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVVRITiwKK10gZW51bSBN
b2NrTmZjRXJyb3IgeworICAgICJzdWNjZXNzIiwKKyAgICAibm8tdGFncyIsCisgICAgIndyb25n
LXRhZy10eXBlIiwKKyAgICAibm8tY29ubmVjdGlvbnMiLAorICAgICJtYWxpY2lvdXMtcGF5bG9h
ZCIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVUSE4sCitdIGRpY3Rpb25hcnkgTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiB7CisgICAgYm9vbGVhbiBzaWxlbnRGYWls
dXJlID0gZmFsc2U7CisgICAgTW9ja0xvY2FsQ29uZmlndXJhdGlvbiBsb2NhbDsKKyAgICBNb2Nr
SGlkQ29uZmlndXJhdGlvbiBoaWQ7CisgICAgTW9ja05mY0NvbmZpZ3VyYXRpb24gbmZjOworfTsK
KworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVVRITiwKK10gZGljdGlvbmFyeSBNb2NrTG9jYWxD
b25maWd1cmF0aW9uIHsKKyAgICBib29sZWFuIGFjY2VwdEF1dGhlbnRpY2F0aW9uID0gZmFsc2U7
CisgICAgYm9vbGVhbiBhY2NlcHRBdHRlc3RhdGlvbiA9IGZhbHNlOworICAgIERPTVN0cmluZyBw
cml2YXRlS2V5QmFzZTY0OworICAgIERPTVN0cmluZyB1c2VyQ2VydGlmaWNhdGVCYXNlNjQ7Cisg
ICAgRE9NU3RyaW5nIGludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQ7CisgICAgRE9NU3Ry
aW5nIHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ7Cit9OworCitbCisgICAgQ29uZGl0aW9uYWw9
V0VCX0FVVEhOLAorXSBkaWN0aW9uYXJ5IE1vY2tIaWRDb25maWd1cmF0aW9uIHsKKyAgICBzZXF1
ZW5jZTxET01TdHJpbmc+IHBheWxvYWRCYXNlNjQ7CisgICAgTW9ja0hpZFN0YWdlIHN0YWdlID0g
ImluZm8iOworICAgIE1vY2tIaWRTdWJTdGFnZSBzdWJTdGFnZSA9ICJpbml0IjsKKyAgICBNb2Nr
SGlkRXJyb3IgZXJyb3IgPSAic3VjY2VzcyI7CisgICAgYm9vbGVhbiBpc1UyZiA9IGZhbHNlOwor
ICAgIGJvb2xlYW4ga2VlcEFsaXZlID0gZmFsc2U7CisgICAgYm9vbGVhbiBmYXN0RGF0YUFycml2
YWwgPSBmYWxzZTsKKyAgICBib29sZWFuIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEgPSBmYWxzZTsK
KyAgICBib29sZWFuIGNhbkRvd25ncmFkZSA9IGZhbHNlOworfTsKKworWworICAgIENvbmRpdGlv
bmFsPVdFQl9BVVRITiwKK10gZGljdGlvbmFyeSBNb2NrTmZjQ29uZmlndXJhdGlvbiB7CisgICAg
TW9ja05mY0Vycm9yIGVycm9yID0gInN1Y2Nlc3MiOworICAgIHNlcXVlbmNlPERPTVN0cmluZz4g
cGF5bG9hZEJhc2U2NDsKKyAgICBib29sZWFuIG11bHRpcGxlVGFncyA9IGZhbHNlOworfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9y
ZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuY3BwCmluZGV4IDlkN2ZhN2QzN2M2NmExZjJkOWVjNDhjOTdlNTFiYzZmZDcwYTc3YTQu
Ljc0NGZjYmE5ZWUyYTE5NjE3NWExM2E1MTI3OTQ2ZGYxNDNlMDRlNzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNw
cApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJB
UElIVFRQQ29va2llU3RvcmUuaCIKLSNpbmNsdWRlICJNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCiAj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tEaWN0aW9uYXJ5LmgiCkBAIC02NTgs
MTA4ICs2NTcsNiBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQWxsRGV2aWNlT3JpZW50
YXRpb25QZXJtaXNzaW9ucyhXS1dlYnNpdGVEYXRhU3RvcmVSZQogI2VuZGlmCiB9CiAKLXZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS0RpY3Rpb25hcnlSZWYgY29uZmln
dXJhdGlvblJlZikKLXsKLSNpZiBFTkFCTEUoV0VCX0FVVEhOKQotICAgIFdlYktpdDo6TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwotCi0gICAgaWYgKGF1
dG8gc2lsZW50RmFpbHVyZVJlZiA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9u
YXJ5R2V0SXRlbUZvcktleShjb25maWd1cmF0aW9uUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJTaWxlbnRGYWlsdXJlIikpLmdldCgpKSkpCi0gICAgICAgIGNvbmZp
Z3VyYXRpb24uc2lsZW50RmFpbHVyZSA9IFdLQm9vbGVhbkdldFZhbHVlKHNpbGVudEZhaWx1cmVS
ZWYpOwotCi0gICAgaWYgKGF1dG8gbG9jYWxSZWYgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlS
ZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoY29uZmlndXJhdGlvblJlZiwgYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTG9jYWwiKSkuZ2V0KCkpKSkgewotICAgICAg
ICBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkxvY2FsIGxvY2Fs
OwotICAgICAgICBsb2NhbC5hY2NlcHRBdXRoZW50aWNhdGlvbiA9IFdLQm9vbGVhbkdldFZhbHVl
KHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShsb2Nh
bFJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQWNjZXB0QXV0aGVu
dGljYXRpb24iKSkuZ2V0KCkpKSk7Ci0gICAgICAgIGxvY2FsLmFjY2VwdEF0dGVzdGF0aW9uID0g
V0tCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlH
ZXRJdGVtRm9yS2V5KGxvY2FsUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJBY2NlcHRBdHRlc3RhdGlvbiIpKS5nZXQoKSkpKTsKLSAgICAgICAgaWYgKGxvY2FsLmFj
Y2VwdEF0dGVzdGF0aW9uKSB7Ci0gICAgICAgICAgICBsb2NhbC5wcml2YXRlS2V5QmFzZTY0ID0g
V2ViS2l0Ojp0b0ltcGwoc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0
ZW1Gb3JLZXkobG9jYWxSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IlByaXZhdGVLZXlCYXNlNjQiKSkuZ2V0KCkpKSktPnN0cmluZygpOwotICAgICAgICAgICAgbG9j
YWwudXNlckNlcnRpZmljYXRlQmFzZTY0ID0gV2ViS2l0Ojp0b0ltcGwoc3RhdGljX2Nhc3Q8V0tT
dHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobG9jYWxSZWYsIGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlVzZXJDZXJ0aWZpY2F0ZUJhc2U2NCIpKS5nZXQo
KSkpKS0+c3RyaW5nKCk7Ci0gICAgICAgICAgICBsb2NhbC5pbnRlcm1lZGlhdGVDQUNlcnRpZmlj
YXRlQmFzZTY0ID0gV2ViS2l0Ojp0b0ltcGwoc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGlj
dGlvbmFyeUdldEl0ZW1Gb3JLZXkobG9jYWxSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIkludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQiKSkuZ2V0KCkpKSkt
PnN0cmluZygpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChhdXRvIHByZWZlcnJlZFVzZXJoYW5k
bGVCYXNlNjRSZWYgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRl
bUZvcktleShsb2NhbFJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
UHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NCIpKS5nZXQoKSkpKQotICAgICAgICAgICAgbG9jYWwu
cHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NCA9IFdlYktpdDo6dG9JbXBsKHByZWZlcnJlZFVzZXJo
YW5kbGVCYXNlNjRSZWYpLT5zdHJpbmcoKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5sb2NhbCA9
IFdURk1vdmUobG9jYWwpOwotICAgIH0KLQotICAgIGlmIChhdXRvIGhpZFJlZiA9IHN0YXRpY19j
YXN0PFdLRGljdGlvbmFyeVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShjb25maWd1cmF0
aW9uUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIaWQiKSkuZ2V0
KCkpKSkgewotICAgICAgICBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b246OkhpZCBoaWQ7Ci0KLSAgICAgICAgYXV0byBzdGFnZSA9IFdlYktpdDo6dG9JbXBsKHN0YXRp
Y19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGhpZFJlZiwgYWRv
cHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3RhZ2UiKSkuZ2V0KCkpKSktPnN0
cmluZygpOwotICAgICAgICBpZiAoc3RhZ2UgPT0gImluZm8iKQotICAgICAgICAgICAgaGlkLnN0
YWdlID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OlN0
YWdlOjpJbmZvOwotICAgICAgICBlbHNlIGlmIChzdGFnZSA9PSAicmVxdWVzdCIpCi0gICAgICAg
ICAgICBoaWQuc3RhZ2UgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b246OkhpZDo6U3RhZ2U6OlJlcXVlc3Q7Ci0KLSAgICAgICAgYXV0byBzdWJTdGFnZSA9IFdlYktp
dDo6dG9JbXBsKHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9y
S2V5KGhpZFJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3ViU3Rh
Z2UiKSkuZ2V0KCkpKSktPnN0cmluZygpOwotICAgICAgICBpZiAoc3ViU3RhZ2UgPT0gImluaXQi
KQotICAgICAgICAgICAgaGlkLnN1YlN0YWdlID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uOjpIaWQ6OlN1YlN0YWdlOjpJbml0OwotICAgICAgICBlbHNlIGlmIChz
dWJTdGFnZSA9PSAibXNnIikKLSAgICAgICAgICAgIGhpZC5zdWJTdGFnZSA9IFdlYktpdDo6TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpTdWJTdGFnZTo6TXNnOwotCi0g
ICAgICAgIGF1dG8gZXJyb3IgPSBXZWJLaXQ6OnRvSW1wbChzdGF0aWNfY2FzdDxXS1N0cmluZ1Jl
Zj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShoaWRSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIkVycm9yIikpLmdldCgpKSkpLT5zdHJpbmcoKTsKLSAgICAgICAg
aWYgKGVycm9yID09ICJzdWNjZXNzIikKLSAgICAgICAgICAgIGhpZC5lcnJvciA9IFdlYktpdDo6
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpFcnJvcjo6U3VjY2VzczsK
LSAgICAgICAgZWxzZSBpZiAoZXJyb3IgPT0gImRhdGEtbm90LXNlbnQiKQotICAgICAgICAgICAg
aGlkLmVycm9yID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpI
aWQ6OkVycm9yOjpEYXRhTm90U2VudDsKLSAgICAgICAgZWxzZSBpZiAoZXJyb3IgPT0gImVtcHR5
LXJlcG9ydCIpCi0gICAgICAgICAgICBoaWQuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZDo6RXJyb3I6OkVtcHR5UmVwb3J0OwotICAgICAgICBl
bHNlIGlmIChlcnJvciA9PSAid3JvbmctY2hhbm5lbC1pZCIpCi0gICAgICAgICAgICBoaWQuZXJy
b3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZDo6RXJy
b3I6Oldyb25nQ2hhbm5lbElkOwotICAgICAgICBlbHNlIGlmIChlcnJvciA9PSAibWFsaWNpb3Vz
LXBheWxvYWQiKQotICAgICAgICAgICAgaGlkLmVycm9yID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OkVycm9yOjpNYWxpY2lvdXNQYXlsb2FkOwotICAg
ICAgICBlbHNlIGlmIChlcnJvciA9PSAidW5zdXBwb3J0ZWQtb3B0aW9ucyIpCi0gICAgICAgICAg
ICBoaWQuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246
OkhpZDo6RXJyb3I6OlVuc3VwcG9ydGVkT3B0aW9uczsKLSAgICAgICAgZWxzZSBpZiAoZXJyb3Ig
PT0gIndyb25nLW5vbmNlIikKLSAgICAgICAgICAgIGhpZC5lcnJvciA9IFdlYktpdDo6TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpFcnJvcjo6V3JvbmdOb25jZTsKLQot
ICAgICAgICBpZiAoYXV0byBwYXlsb2FkQmFzZTY0ID0gc3RhdGljX2Nhc3Q8V0tBcnJheVJlZj4o
V0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShoaWRSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIlBheWxvYWRCYXNlNjQiKSkuZ2V0KCkpKSkKLSAgICAgICAgICAgIGhp
ZC5wYXlsb2FkQmFzZTY0ID0gV2ViS2l0Ojp0b0ltcGwocGF5bG9hZEJhc2U2NCktPnRvU3RyaW5n
VmVjdG9yKCk7Ci0KLSAgICAgICAgaWYgKGF1dG8gaXNVMmYgPSBzdGF0aWNfY2FzdDxXS0Jvb2xl
YW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaGlkUmVmLCBhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJJc1UyZiIpKS5nZXQoKSkpKQotICAgICAgICAgICAgaGlk
LmlzVTJmID0gV0tCb29sZWFuR2V0VmFsdWUoaXNVMmYpOwotCi0gICAgICAgIGlmIChhdXRvIGtl
ZXBBbGl2ZSA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZv
cktleShoaWRSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIktlZXBB
bGl2ZSIpKS5nZXQoKSkpKQotICAgICAgICAgICAgaGlkLmtlZXBBbGl2ZSA9IFdLQm9vbGVhbkdl
dFZhbHVlKGtlZXBBbGl2ZSk7Ci0KLSAgICAgICAgaWYgKGF1dG8gZmFzdERhdGFBcnJpdmFsID0g
c3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGhpZFJl
ZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRmFzdERhdGFBcnJpdmFs
IikpLmdldCgpKSkpCi0gICAgICAgICAgICBoaWQuZmFzdERhdGFBcnJpdmFsID0gV0tCb29sZWFu
R2V0VmFsdWUoZmFzdERhdGFBcnJpdmFsKTsKLQotICAgICAgICBpZiAoYXV0byBjb250aW51ZUFm
dGVyRXJyb3JEYXRhID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJ
dGVtRm9yS2V5KGhpZFJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
Q29udGludWVBZnRlckVycm9yRGF0YSIpKS5nZXQoKSkpKQotICAgICAgICAgICAgaGlkLmNvbnRp
bnVlQWZ0ZXJFcnJvckRhdGEgPSBXS0Jvb2xlYW5HZXRWYWx1ZShjb250aW51ZUFmdGVyRXJyb3JE
YXRhKTsKLQotICAgICAgICBpZiAoYXV0byBjYW5Eb3duZ3JhZGUgPSBzdGF0aWNfY2FzdDxXS0Jv
b2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaGlkUmVmLCBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYW5Eb3duZ3JhZGUiKSkuZ2V0KCkpKSkKLSAgICAg
ICAgICAgIGhpZC5jYW5Eb3duZ3JhZGUgPSBXS0Jvb2xlYW5HZXRWYWx1ZShjYW5Eb3duZ3JhZGUp
OwotCi0gICAgICAgIGNvbmZpZ3VyYXRpb24uaGlkID0gV1RGTW92ZShoaWQpOwotICAgIH0KLQot
ICAgIGlmIChhdXRvIG5mY1JlZiA9IHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJlZj4oV0tEaWN0
aW9uYXJ5R2V0SXRlbUZvcktleShjb25maWd1cmF0aW9uUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJOZmMiKSkuZ2V0KCkpKSkgewotICAgICAgICBXZWJLaXQ6Ok1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mYyBuZmM7Ci0KLSAgICAgICAgYXV0
byBlcnJvciA9IFdlYktpdDo6dG9JbXBsKHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rp
b25hcnlHZXRJdGVtRm9yS2V5KG5mY1JlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiRXJyb3IiKSkuZ2V0KCkpKSktPnN0cmluZygpOwotICAgICAgICBpZiAoZXJyb3Ig
PT0gInN1Y2Nlc3MiKQotICAgICAgICAgICAgbmZjLmVycm9yID0gV2ViS2l0OjpNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmM6OkVycm9yOjpTdWNjZXNzOwotICAgICAgICBl
bHNlIGlmIChlcnJvciA9PSAibm8tdGFncyIpCi0gICAgICAgICAgICBuZmMuZXJyb3IgPSBXZWJL
aXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mYzo6RXJyb3I6Ok5vVGFn
czsKLSAgICAgICAgZWxzZSBpZiAoZXJyb3IgPT0gIndyb25nLXRhZy10eXBlIikKLSAgICAgICAg
ICAgIG5mYy5lcnJvciA9IFdlYktpdDo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bjo6TmZjOjpFcnJvcjo6V3JvbmdUYWdUeXBlOwotICAgICAgICBlbHNlIGlmIChlcnJvciA9PSAi
bm8tY29ubmVjdGlvbnMiKQotICAgICAgICAgICAgbmZjLmVycm9yID0gV2ViS2l0OjpNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmM6OkVycm9yOjpOb0Nvbm5lY3Rpb25zOwot
ICAgICAgICBlbHNlIGlmIChlcnJvciA9PSAibWFsaWNpb3VzLXBheWxvYWQiKQotICAgICAgICAg
ICAgbmZjLmVycm9yID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
OjpOZmM6OkVycm9yOjpNYWxpY2lvdXNQYXlsb2FkOwotCi0gICAgICAgIGlmIChhdXRvIHBheWxv
YWRCYXNlNjQgPSBzdGF0aWNfY2FzdDxXS0FycmF5UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9y
S2V5KG5mY1JlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUGF5bG9h
ZEJhc2U2NCIpKS5nZXQoKSkpKQotICAgICAgICAgICAgbmZjLnBheWxvYWRCYXNlNjQgPSBXZWJL
aXQ6OnRvSW1wbChwYXlsb2FkQmFzZTY0KS0+dG9TdHJpbmdWZWN0b3IoKTsKLQotICAgICAgICBp
ZiAoYXV0byBtdWx0aXBsZVRhZ3MgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdLRGljdGlv
bmFyeUdldEl0ZW1Gb3JLZXkobmZjUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJNdWx0aXBsZVRhZ3MiKSkuZ2V0KCkpKSkKLSAgICAgICAgICAgIG5mYy5tdWx0aXBs
ZVRhZ3MgPSBXS0Jvb2xlYW5HZXRWYWx1ZShtdWx0aXBsZVRhZ3MpOwotCi0gICAgICAgIGNvbmZp
Z3VyYXRpb24ubmZjID0gV1RGTW92ZShuZmMpOwotICAgIH0KLQotICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oV1RG
TW92ZShjb25maWd1cmF0aW9uKSk7Ci0jZW5kaWYKLX0KLQogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVDbGVhckFkQ2xpY2tBdHRyaWJ1dGlvbnNUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURh
dGFTdG9yZUNsZWFyQWRDbGlja0F0dHJpYnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxG
dW5jdGlvbiBjYWxsYmFjaykKIHsKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5
cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpBZENsaWNrQXR0cmlidXRp
b25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuaAppbmRleCBjMWY5OTBiMzVhN2IyNjYyNDE1ZmU2ZjE4ZTkwMjgzOTM4MDg4
MmVlLi5lZjQzMzk4NjA0NGFhMTE0NTE1N2Y5YzdiZGJmYWRiNGJkYWZkZjNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
aApAQCAtMTQzLDggKzE0Myw2IEBAIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoV0tXZWJzaXRlCiAKIFdLX0VYUE9S
VCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFBlck9yaWdpblN0b3JhZ2VRdW90YShXS1dlYnNp
dGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB1aW50NjRfdCBxdW90YSkgV0tfQ19BUElfREVQ
UkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25T
ZXRQZXJPcmlnaW5TdG9yYWdlUXVvdGEpOwogCi1XS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLRGljdGlvbmFyeVJlZiBjb25maWd1cmF0aW9uKTsKLQog
V0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBbGxEZXZpY2VPcmllbnRhdGlv
blBlcm1pc3Npb25zKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYpOwogCiB0eXBl
ZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVDbGVhckFkQ2xpY2tBdHRyaWJ1dGlvbnNUaHJv
dWdoV2Vic2l0ZURhdGFSZW1vdmFsRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5jcHAKaW5kZXgg
N2EwZjhmOWIxMWQzNDJlMWQ0NGRhZWMxNDliMTRmY2EwYTEyZDM0OC4uZTgxMDM5YjZkY2I0MGM1
NjI1NWQ3N2Y0ZGVmZGU5NmYxZTRkNGVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0b3JUcmFuc3BvcnRTZXJ2aWNlLmNwcApAQCAtNTMsNyArNTMsNyBAQCBVbmlxdWVSZWY8QXV0
aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U+IEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNl
OjpjcmVhdGUoVwogICAgIH0KIH0KIAotVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRT
ZXJ2aWNlPiBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZTo6Y3JlYXRlTW9jayhXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0IHRyYW5zcG9ydCwgT2JzZXJ2ZXImIG9ic2VydmVyLCBj
b25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQor
VW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPiBBdXRoZW50aWNhdG9yVHJh
bnNwb3J0U2VydmljZTo6Y3JlYXRlTW9jayhXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0
IHRyYW5zcG9ydCwgT2JzZXJ2ZXImIG9ic2VydmVyLCBjb25zdCBXZWJDb3JlOjpNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogewogICAgIHN3aXRjaCAo
dHJhbnNwb3J0KSB7CiAgICAgY2FzZSBXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJ
bnRlcm5hbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5o
CmluZGV4IDZjZTQ2MTg3OGRiYTJhZTYwZTc1NjYzZTk3YjFiZGZiNzI0ZDRmZGUuLjA5MDg0YWI4
YTdjNzkwOTA1MTdmMmU3MmViN2E1NDZkOWFkMjZlYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2
aWNlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0
aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2UuaApAQCAtMzEsMTIgKzMxLDE0IEBACiAjaW5jbHVk
ZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK3N0cnVjdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOwor
fQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQXV0aGVudGljYXRvcjsKIAotc3RydWN0
IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb247Ci0KIGNsYXNzIEF1dGhlbnRpY2F0
b3JUcmFuc3BvcnRTZXJ2aWNlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPEF1dGhlbnRpY2F0b3JU
cmFuc3BvcnRTZXJ2aWNlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2UpOwpAQCAtNDks
NyArNTEsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHN0YXRpYyBVbmlxdWVSZWY8QXV0aGVu
dGljYXRvclRyYW5zcG9ydFNlcnZpY2U+IGNyZWF0ZShXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJh
bnNwb3J0LCBPYnNlcnZlciYpOwotICAgIHN0YXRpYyBVbmlxdWVSZWY8QXV0aGVudGljYXRvclRy
YW5zcG9ydFNlcnZpY2U+IGNyZWF0ZU1vY2soV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9y
dCwgT2JzZXJ2ZXImLCBjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJik7
CisgICAgc3RhdGljIFVuaXF1ZVJlZjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZT4gY3Jl
YXRlTW9jayhXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0LCBPYnNlcnZlciYsIGNvbnN0
IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mKTsKIAogICAgIHZp
cnR1YWwgfkF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlKCkgPSBkZWZhdWx0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01v
Y2tBdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Nb2NrL01vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggMDg0
YzliZTIzZmIwYWJkOTU2M2RmOTFmYzY2NmUxMWYxMzUxMDZjNi4uZjhmZjJkNjc2NGJkN2E1ZDE0
YWJjYjE2MDM1MmRjZDFkMTBhNmZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0F1
dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyOjpNb2NrQXV0aGVudGljYXRvck1hbmFn
ZXIoTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCitN
b2NrQXV0aGVudGljYXRvck1hbmFnZXI6Ok1vY2tBdXRoZW50aWNhdG9yTWFuYWdlcihXZWJDb3Jl
OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKICAg
ICA6IG1fdGVzdENvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkKIHsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2sv
TW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Nb2NrL01vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oCmluZGV4IDg1ZDgw
MDk5NTY2NGVhNWVjZDkyYTRlYzA0NTc3ZGFhYWVhNTA5OWEuLmE4ZWI4MGE1N2E3N2ZiYjE2ZGQx
NjA4MmE5MjgzZThhOTk1ZWQ5NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrQXV0aGVu
dGljYXRvck1hbmFnZXIuaApAQCAtMjgsMjIgKzI4LDIyIEBACiAjaWYgRU5BQkxFKFdFQl9BVVRI
TikKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiTW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyIGZpbmFsIDogcHVibGljIEF1dGhlbnRpY2F0
b3JNYW5hZ2VyIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBNb2NrQXV0aGVudGljYXRvck1hbmFn
ZXIoTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYmKTsKKyAgICBleHBsaWNpdCBN
b2NrQXV0aGVudGljYXRvck1hbmFnZXIoV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbiYmKTsKIAogICAgIGJvb2wgaXNNb2NrKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQotICAgIHZvaWQgc2V0VGVzdENvbmZpZ3VyYXRpb24oTW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pIHsgbV90ZXN0Q29uZmlndXJhdGlvbiA9
IFdURk1vdmUoY29uZmlndXJhdGlvbik7IH0KKyAgICB2b2lkIHNldFRlc3RDb25maWd1cmF0aW9u
KFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0
aW9uKSB7IG1fdGVzdENvbmZpZ3VyYXRpb24gPSBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pOyB9CiAK
IHByaXZhdGU6CiAgICAgVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPiBj
cmVhdGVTZXJ2aWNlKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQsIEF1dGhlbnRpY2F0
b3JUcmFuc3BvcnRTZXJ2aWNlOjpPYnNlcnZlciYpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgcmVz
cG9uZFJlY2VpdmVkSW50ZXJuYWwoUmVzcG9uZCYmKSBmaW5hbDsKIAotICAgIE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gbV90ZXN0Q29uZmlndXJhdGlvbjsKKyAgICBXZWJDb3Jl
OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uIG1fdGVzdENvbmZpZ3VyYXRpb247
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29u
bmVjdGlvbi5jcHAKaW5kZXggOGUwZmU1MjZkMjA2ZWRjMGJjMzdlODZlNGFhZjRlZDVkOTdhNGVm
My4uNjU4NDY2ZGU3YjEzMWViZTU0ZTY3MWY2NzA0M2M3ZmZlNmM1MzY4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRl
IDx3dGYvdGV4dC9CYXNlNjQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBNb2NrSGlk
ID0gTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOwordXNpbmcgTW9jayA9
IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb247CiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBjYm9yOwogdXNpbmcgbmFtZXNwYWNlIGZp
ZG87CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OnNlbmQoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSwgRGF0YVNlbnRDYWxsYmFjayYmIGNhbGxiYWNrCiAgICAgICAgICAg
ICB3ZWFrVGhpcy0+YXNzZW1ibGVSZXF1ZXN0KFdURk1vdmUoZGF0YSkpOwogCiAgICAgICAgICAg
ICBhdXRvIHNlbnQgPSBEYXRhU2VudDo6WWVzOwotICAgICAgICAgICAgaWYgKHdlYWtUaGlzLT5z
dGFnZXNNYXRjaCgpICYmIHdlYWtUaGlzLT5tX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBN
b2NrSGlkOjpFcnJvcjo6RGF0YU5vdFNlbnQpCisgICAgICAgICAgICBpZiAod2Vha1RoaXMtPnN0
YWdlc01hdGNoKCkgJiYgd2Vha1RoaXMtPm1fY29uZmlndXJhdGlvbi5oaWQtPmVycm9yID09IE1v
Y2s6OkhpZEVycm9yOjpEYXRhTm90U2VudCkKICAgICAgICAgICAgICAgICBzZW50ID0gRGF0YVNl
bnQ6Ok5vOwogICAgICAgICAgICAgY2FsbGJhY2soc2VudCk7CiAgICAgICAgIH0pOwpAQCAtOTIs
NyArOTIsNyBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpzZW5kKFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEsIERhdGFTZW50Q2FsbGJhY2smJiBjYWxsYmFjawogCiB2b2lkIE1vY2tIaWRDb25uZWN0
aW9uOjpyZWdpc3RlckRhdGFSZWNlaXZlZENhbGxiYWNrSW50ZXJuYWwoKQogewotICAgIGlmIChz
dGFnZXNNYXRjaCgpICYmIG1fY29uZmlndXJhdGlvbi5oaWQtPmVycm9yID09IE1vY2tIaWQ6OkVy
cm9yOjpFbXB0eVJlcG9ydCkgeworICAgIGlmIChzdGFnZXNNYXRjaCgpICYmIG1fY29uZmlndXJh
dGlvbi5oaWQtPmVycm9yID09IE1vY2s6OkhpZEVycm9yOjpFbXB0eVJlcG9ydCkgewogICAgICAg
ICByZWNlaXZlUmVwb3J0KHsgfSk7CiAgICAgICAgIHNob3VsZENvbnRpbnVlRmVlZFJlcG9ydHMo
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTIzLDE0ICsxMjMsMTQgQEAgdm9pZCBNb2NrSGlkQ29u
bmVjdGlvbjo6cGFyc2VSZXF1ZXN0KCkKICAgICAvLyBTZXQgc3RhZ2VzLgogICAgIGlmIChtX3Jl
cXVlc3RNZXNzYWdlLT5jbWQoKSA9PSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0luaXQpIHsKICAg
ICAgICAgYXV0byBwcmV2aW91c1N1YlN0YWdlID0gbV9zdWJTdGFnZTsKLSAgICAgICAgbV9zdWJT
dGFnZSA9IE1vY2tIaWQ6OlN1YlN0YWdlOjpJbml0OwotICAgICAgICBpZiAocHJldmlvdXNTdWJT
dGFnZSA9PSBNb2NrSGlkOjpTdWJTdGFnZTo6TXNnKQotICAgICAgICAgICAgbV9zdGFnZSA9IE1v
Y2tIaWQ6OlN0YWdlOjpSZXF1ZXN0OworICAgICAgICBtX3N1YlN0YWdlID0gTW9jazo6SGlkU3Vi
U3RhZ2U6OkluaXQ7CisgICAgICAgIGlmIChwcmV2aW91c1N1YlN0YWdlID09IE1vY2s6OkhpZFN1
YlN0YWdlOjpNc2cpCisgICAgICAgICAgICBtX3N0YWdlID0gTW9jazo6SGlkU3RhZ2U6OlJlcXVl
c3Q7CiAgICAgfQogICAgIGlmIChtX3JlcXVlc3RNZXNzYWdlLT5jbWQoKSA9PSBGaWRvSGlkRGV2
aWNlQ29tbWFuZDo6a0Nib3IgfHwgbV9yZXF1ZXN0TWVzc2FnZS0+Y21kKCkgPT0gRmlkb0hpZERl
dmljZUNvbW1hbmQ6OmtNc2cpCi0gICAgICAgIG1fc3ViU3RhZ2UgPSBNb2NrSGlkOjpTdWJTdGFn
ZTo6TXNnOworICAgICAgICBtX3N1YlN0YWdlID0gTW9jazo6SGlkU3ViU3RhZ2U6Ok1zZzsKIAot
ICAgIGlmIChtX3N0YWdlID09IE1vY2tIaWQ6OlN0YWdlOjpSZXF1ZXN0ICYmIG1fc3ViU3RhZ2Ug
PT0gTW9ja0hpZDo6U3ViU3RhZ2U6Ok1zZykgeworICAgIGlmIChtX3N0YWdlID09IE1vY2s6Okhp
ZFN0YWdlOjpSZXF1ZXN0ICYmIG1fc3ViU3RhZ2UgPT0gTW9jazo6SGlkU3ViU3RhZ2U6Ok1zZykg
ewogICAgICAgICAvLyBNYWtlIHN1cmUgd2UgaXNzdWUgZGlmZmVyZW50IG1zZyBjbWQgZm9yIENU
QVAgYW5kIFUyRi4KICAgICAgICAgaWYgKG1fY29uZmlndXJhdGlvbi5oaWQtPmNhbkRvd25ncmFk
ZSAmJiAhbV9jb25maWd1cmF0aW9uLmhpZC0+aXNVMmYpCiAgICAgICAgICAgICBtX2NvbmZpZ3Vy
YXRpb24uaGlkLT5pc1UyZiA9IG1fcmVxdWVzdE1lc3NhZ2UtPmNtZCgpID09IEZpZG9IaWREZXZp
Y2VDb21tYW5kOjprTXNnOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rp
b246OnBhcnNlUmVxdWVzdCgpCiAgICAgfQogCiAgICAgLy8gU3RvcmUgbm9uY2UuCi0gICAgaWYg
KG1fc3ViU3RhZ2UgPT0gTW9ja0hpZDo6U3ViU3RhZ2U6OkluaXQpIHsKKyAgICBpZiAobV9zdWJT
dGFnZSA9PSBNb2NrOjpIaWRTdWJTdGFnZTo6SW5pdCkgewogICAgICAgICBtX25vbmNlID0gbV9y
ZXF1ZXN0TWVzc2FnZS0+Z2V0TWVzc2FnZVBheWxvYWQoKTsKICAgICAgICAgQVNTRVJUKG1fbm9u
Y2Uuc2l6ZSgpID09IGtIaWRJbml0Tm9uY2VMZW5ndGgpOwogICAgIH0KQEAgLTE5MSwxNyArMTkx
LDE3IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OmZlZWRSZXBvcnRzKCkKIHsKICAgICB1c2lu
ZyBuYW1lc3BhY2UgTW9ja0hpZENvbm5lY3Rpb25JbnRlcm5hbDsKIAotICAgIGlmIChtX3N1YlN0
YWdlID09IE1vY2tIaWQ6OlN1YlN0YWdlOjpJbml0KSB7CisgICAgaWYgKG1fc3ViU3RhZ2UgPT0g
TW9jazo6SGlkU3ViU3RhZ2U6OkluaXQpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHBheWxv
YWQ7CiAgICAgICAgIHBheWxvYWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShrSGlkSW5pdFJlc3Bv
bnNlU2l6ZSk7CiAgICAgICAgIHBheWxvYWQuYXBwZW5kVmVjdG9yKG1fbm9uY2UpOwogICAgICAg
ICBzaXplX3Qgd3JpdGVQb3NpdGlvbiA9IHBheWxvYWQuc2l6ZSgpOwotICAgICAgICBpZiAoc3Rh
Z2VzTWF0Y2goKSAmJiBtX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBNb2NrSGlkOjpFcnJv
cjo6V3JvbmdOb25jZSkKKyAgICAgICAgaWYgKHN0YWdlc01hdGNoKCkgJiYgbV9jb25maWd1cmF0
aW9uLmhpZC0+ZXJyb3IgPT0gTW9jazo6SGlkRXJyb3I6Oldyb25nTm9uY2UpCiAgICAgICAgICAg
ICBwYXlsb2FkWzBdLS07CiAgICAgICAgIHBheWxvYWQuZ3JvdyhrSGlkSW5pdFJlc3BvbnNlU2l6
ZSk7CiAgICAgICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKHBheWxvYWQuZGF0YSgp
ICsgd3JpdGVQb3NpdGlvbiwgQ3RhcENoYW5uZWxJZFNpemUpOwogICAgICAgICBhdXRvIGNoYW5u
ZWwgPSBrSGlkQnJvYWRjYXN0Q2hhbm5lbDsKLSAgICAgICAgaWYgKHN0YWdlc01hdGNoKCkgJiYg
bV9jb25maWd1cmF0aW9uLmhpZC0+ZXJyb3IgPT0gTW9ja0hpZDo6RXJyb3I6Oldyb25nQ2hhbm5l
bElkKQorICAgICAgICBpZiAoc3RhZ2VzTWF0Y2goKSAmJiBtX2NvbmZpZ3VyYXRpb24uaGlkLT5l
cnJvciA9PSBNb2NrOjpIaWRFcnJvcjo6V3JvbmdDaGFubmVsSWQpCiAgICAgICAgICAgICBjaGFu
bmVsLS07CiAgICAgICAgIEZpZG9IaWRJbml0UGFja2V0IGluaXRQYWNrZXQoY2hhbm5lbCwgRmlk
b0hpZERldmljZUNvbW1hbmQ6OmtJbml0LCBXVEZNb3ZlKHBheWxvYWQpLCBwYXlsb2FkLnNpemUo
KSk7CiAgICAgICAgIHJlY2VpdmVSZXBvcnQoaW5pdFBhY2tldC5nZXRTZXJpYWxpemVkRGF0YSgp
KTsKQEAgLTIxMCwxNCArMjEwLDE0IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OmZlZWRSZXBv
cnRzKCkKICAgICB9CiAKICAgICBPcHRpb25hbDxGaWRvSGlkTWVzc2FnZT4gbWVzc2FnZTsKLSAg
ICBpZiAobV9zdGFnZSA9PSBNb2NrSGlkOjpTdGFnZTo6SW5mbyAmJiBtX3N1YlN0YWdlID09IE1v
Y2tIaWQ6OlN1YlN0YWdlOjpNc2cpIHsKKyAgICBpZiAobV9zdGFnZSA9PSBNb2NrOjpIaWRTdGFn
ZTo6SW5mbyAmJiBtX3N1YlN0YWdlID09IE1vY2s6OkhpZFN1YlN0YWdlOjpNc2cpIHsKICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGluZm9EYXRhOwogICAgICAgICBpZiAobV9jb25maWd1cmF0aW9u
LmhpZC0+Y2FuRG93bmdyYWRlKQogICAgICAgICAgICAgaW5mb0RhdGEgPSBlbmNvZGVBc0NCT1Io
QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSh7IFByb3RvY29sVmVyc2lvbjo6a0N0YXAsIFBy
b3RvY29sVmVyc2lvbjo6a1UyZiB9LCBWZWN0b3I8dWludDhfdD4oYWFndWlkTGVuZ3RoLCAwdSkp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaW5mb0RhdGEgPSBlbmNvZGVBc0NCT1IoQXV0
aGVudGljYXRvckdldEluZm9SZXNwb25zZSh7IFByb3RvY29sVmVyc2lvbjo6a0N0YXAgfSwgVmVj
dG9yPHVpbnQ4X3Q+KGFhZ3VpZExlbmd0aCwgMHUpKSk7CiAgICAgICAgIGluZm9EYXRhLmluc2Vy
dCgwLCBzdGF0aWNfY2FzdDx1aW50OF90PihDdGFwRGV2aWNlUmVzcG9uc2VDb2RlOjprU3VjY2Vz
cykpOyAvLyBQcmVwZW5kIHN0YXR1cyBjb2RlLgotICAgICAgICBpZiAoc3RhZ2VzTWF0Y2goKSAm
JiBtX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBNb2NrSGlkOjpFcnJvcjo6V3JvbmdDaGFu
bmVsSWQpCisgICAgICAgIGlmIChzdGFnZXNNYXRjaCgpICYmIG1fY29uZmlndXJhdGlvbi5oaWQt
PmVycm9yID09IE1vY2s6OkhpZEVycm9yOjpXcm9uZ0NoYW5uZWxJZCkKICAgICAgICAgICAgIG1l
c3NhZ2UgPSBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKG1fY3VycmVudENoYW5uZWwgLSAxLCBGaWRv
SGlkRGV2aWNlQ29tbWFuZDo6a0Nib3IsIGluZm9EYXRhKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi5oaWQtPmlzVTJmKQpAQCAtMjI3LDcgKzIyNyw3
IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OmZlZWRSZXBvcnRzKCkKICAgICAgICAgfQogICAg
IH0KIAotICAgIGlmIChtX3N0YWdlID09IE1vY2tIaWQ6OlN0YWdlOjpSZXF1ZXN0ICYmIG1fc3Vi
U3RhZ2UgPT0gTW9ja0hpZDo6U3ViU3RhZ2U6Ok1zZykgeworICAgIGlmIChtX3N0YWdlID09IE1v
Y2s6OkhpZFN0YWdlOjpSZXF1ZXN0ICYmIG1fc3ViU3RhZ2UgPT0gTW9jazo6SGlkU3ViU3RhZ2U6
Ok1zZykgewogICAgICAgICBpZiAobV9jb25maWd1cmF0aW9uLmhpZC0+a2VlcEFsaXZlKSB7CiAg
ICAgICAgICAgICBtX2NvbmZpZ3VyYXRpb24uaGlkLT5rZWVwQWxpdmUgPSBmYWxzZTsKICAgICAg
ICAgICAgIEZpZG9IaWRJbml0UGFja2V0IGluaXRQYWNrZXQobV9jdXJyZW50Q2hhbm5lbCwgRmlk
b0hpZERldmljZUNvbW1hbmQ6OmtLZWVwQWxpdmUsIHsgQ3RhcEtlZXBBbGl2ZVN0YXR1c1Byb2Nl
c3NpbmcgfSwgMSk7CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBNb2NrSGlkQ29ubmVjdGlvbjo6
ZmVlZFJlcG9ydHMoKQogICAgICAgICAgICAgY29udGludWVGZWVkUmVwb3J0cygpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlmIChzdGFnZXNNYXRjaCgpICYmIG1f
Y29uZmlndXJhdGlvbi5oaWQtPmVycm9yID09IE1vY2tIaWQ6OkVycm9yOjpVbnN1cHBvcnRlZE9w
dGlvbnMgJiYgKG1fcmVxdWlyZVJlc2lkZW50S2V5IHx8IG1fcmVxdWlyZVVzZXJWZXJpZmljYXRp
b24pKQorICAgICAgICBpZiAoc3RhZ2VzTWF0Y2goKSAmJiBtX2NvbmZpZ3VyYXRpb24uaGlkLT5l
cnJvciA9PSBNb2NrOjpIaWRFcnJvcjo6VW5zdXBwb3J0ZWRPcHRpb25zICYmIChtX3JlcXVpcmVS
ZXNpZGVudEtleSB8fCBtX3JlcXVpcmVVc2VyVmVyaWZpY2F0aW9uKSkKICAgICAgICAgICAgIG1l
c3NhZ2UgPSBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKG1fY3VycmVudENoYW5uZWwsIEZpZG9IaWRE
ZXZpY2VDb21tYW5kOjprQ2JvciwgeyBzdGF0aWNfY2FzdDx1aW50OF90PihDdGFwRGV2aWNlUmVz
cG9uc2VDb2RlOjprQ3RhcDJFcnJVbnN1cHBvcnRlZE9wdGlvbikgfSk7CiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHBheWxvYWQ7CkBAIC0yNTQsNyArMjU0LDcg
QEAgdm9pZCBNb2NrSGlkQ29ubmVjdGlvbjo6ZmVlZFJlcG9ydHMoKQogICAgIGJvb2wgaXNGaXJz
dCA9IHRydWU7CiAgICAgd2hpbGUgKG1lc3NhZ2UtPm51bVBhY2tldHMoKSkgewogICAgICAgICBh
dXRvIHJlcG9ydCA9IG1lc3NhZ2UtPnBvcE5leHRQYWNrZXQoKTsKLSAgICAgICAgaWYgKCFpc0Zp
cnN0ICYmIHN0YWdlc01hdGNoKCkgJiYgbV9jb25maWd1cmF0aW9uLmhpZC0+ZXJyb3IgPT0gTW9j
a0hpZDo6RXJyb3I6Oldyb25nQ2hhbm5lbElkKQorICAgICAgICBpZiAoIWlzRmlyc3QgJiYgc3Rh
Z2VzTWF0Y2goKSAmJiBtX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBNb2NrOjpIaWRFcnJv
cjo6V3JvbmdDaGFubmVsSWQpCiAgICAgICAgICAgICByZXBvcnQgPSBGaWRvSGlkQ29udGludWF0
aW9uUGFja2V0KG1fY3VycmVudENoYW5uZWwgLSAxLCAwLCB7IH0pLmdldFNlcmlhbGl6ZWREYXRh
KCk7CiAgICAgICAgIC8vIFBhY2tldHMgYXJlIGZlZWQgYXN5bmNocm9ub3VzbHkgdG8gbWltaWMg
YWN0dWFsIGRhdGEgdHJhbnNtaXNzaW9uLgogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3JlcG9ydCA9IFdURk1vdmUocmVwb3J0KSwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhp
cyldKCkgbXV0YWJsZSB7CkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBNb2NrSGlkQ29ubmVjdGlv
bjo6c2hvdWxkQ29udGludWVGZWVkUmVwb3J0cygpCiAgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24u
aGlkLT5jb250aW51ZUFmdGVyRXJyb3JEYXRhKQogICAgICAgICByZXR1cm47CiAgICAgbV9jb25m
aWd1cmF0aW9uLmhpZC0+Y29udGludWVBZnRlckVycm9yRGF0YSA9IGZhbHNlOwotICAgIG1fY29u
ZmlndXJhdGlvbi5oaWQtPmVycm9yID0gTW9ja0hpZDo6RXJyb3I6OlN1Y2Nlc3M7CisgICAgbV9j
b25maWd1cmF0aW9uLmhpZC0+ZXJyb3IgPSBNb2NrOjpIaWRFcnJvcjo6U3VjY2VzczsKICAgICBj
b250aW51ZUZlZWRSZXBvcnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rp
b24uaAppbmRleCAzNzg4NjZmMzY4YWU4NGI2ZmM1OWNlYzcwZWE2ZTM0ODM5ZjdlMWE2Li40MDgz
NmQyODNmZGUwMTUyNWY1NjllMDcyOTY4MTk2ODdlMTdlMGRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrSGlkQ29ubmVjdGlvbi5oCkBAIC0yOCw4ICsyOCw4IEBACiAjaWYgRU5BQkxFKFdFQl9BVVRI
TikKIAogI2luY2x1ZGUgIkhpZENvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWRvSGlkTWVzc2Fn
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIC8vIEFjY29yZGluZyB0byBkaWZmZXJl
bnQgY29tYmluYXRpb25zIG9mIGVycm9yIGFuZCBzdGFnZXMsIGVycm9yIHdpbGwgbWFuaWZlc3Qg
ZGlmZmVyZW50bHkuCiBjbGFzcyBNb2NrSGlkQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxNb2NrSGlkQ29ubmVjdGlvbj4sIHB1YmxpYyBIaWRDb25uZWN0aW9uIHsKIHB1
YmxpYzoKLSAgICBNb2NrSGlkQ29ubmVjdGlvbihJT0hJRERldmljZVJlZiwgY29uc3QgTW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYpOworICAgIE1vY2tIaWRDb25uZWN0aW9uKElP
SElERGV2aWNlUmVmLCBjb25zdCBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uJik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRh
dGEsIERhdGFTZW50Q2FsbGJhY2smJikgZmluYWw7CkBAIC02MCwxMCArNjAsMTAgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHNob3VsZENvbnRpbnVlRmVlZFJlcG9ydHMoKTsKICAgICB2b2lkIGNvbnRp
bnVlRmVlZFJlcG9ydHMoKTsKIAotICAgIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24gbV9jb25maWd1cmF0aW9uOworICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9uOwogICAgIE9wdGlvbmFsPGZpZG86OkZpZG9IaWRN
ZXNzYWdlPiBtX3JlcXVlc3RNZXNzYWdlOwotICAgIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb246OkhpZDo6U3RhZ2UgbV9zdGFnZSB7IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb246OkhpZDo6U3RhZ2U6OkluZm8gfTsKLSAgICBNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uOjpIaWQ6OlN1YlN0YWdlIG1fc3ViU3RhZ2UgeyBNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OlN1YlN0YWdlOjpJbml0IH07CisgICAgV2ViQ29yZTo6
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkU3RhZ2UgbV9zdGFnZSB7IE1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZFN0YWdlOjpJbmZvIH07CisgICAg
V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkU3ViU3RhZ2Ug
bV9zdWJTdGFnZSB7IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZFN1YlN0
YWdlOjpJbml0IH07CiAgICAgdWludDMyX3QgbV9jdXJyZW50Q2hhbm5lbCB7IGZpZG86OmtIaWRC
cm9hZGNhc3RDaGFubmVsIH07CiAgICAgYm9vbCBtX3JlcXVpcmVSZXNpZGVudEtleSB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX3JlcXVpcmVVc2VyVmVyaWZpY2F0aW9uICB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01v
Y2tIaWRTZXJ2aWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL01vY2svTW9ja0hpZFNlcnZpY2UuY3BwCmluZGV4IDI0Y2MzNmIyY2Q1MzRkNGYyNTJkM2Zm
MDY4YzliNDk3YTZhOTI1NTkuLjg1MDVmNzVjZTliYmVmMThiYjI5YzY0ZjYyOGRiMGFkMTc4NWJl
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L01vY2svTW9ja0hpZFNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZFNlcnZpY2UuY3BwCkBAIC0zMyw3ICszMyw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1Nb2NrSGlkU2VydmljZTo6TW9ja0hpZFNlcnZpY2Uo
T2JzZXJ2ZXImIG9ic2VydmVyLCBjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uJiBjb25maWd1cmF0aW9uKQorTW9ja0hpZFNlcnZpY2U6Ok1vY2tIaWRTZXJ2aWNlKE9ic2Vy
dmVyJiBvYnNlcnZlciwgY29uc3QgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICA6IEhpZFNlcnZpY2Uob2JzZXJ2ZXIpCiAgICAg
LCBtX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZFNlcnZpY2UuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZFNl
cnZpY2UuaAppbmRleCBjYmUwMTVlZjBkNDU4YjkwNzk1YmI5NDEzZmNhNTJiOGI0OWU2M2UxLi5i
ZTFlYWQ2MTc5ODZhOTM5ZTZhYzJmYjQyYTM3OGEyOTljNTg3NmQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRTZXJ2aWNl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrSGlkU2VydmljZS5oCkBAIC0yOCwxMiArMjgsMTAgQEAKICNpZiBFTkFCTEUoV0VCX0FVVEhO
KQogCiAjaW5jbHVkZSAiSGlkU2VydmljZS5oIgotI2luY2x1ZGUgIk1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0cnVjdCBNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOwotCiBjbGFzcyBNb2NrSGlkU2VydmljZSBm
aW5hbCA6IHB1YmxpYyBIaWRTZXJ2aWNlIHsKIHB1YmxpYzoKICAgICBNb2NrSGlkU2VydmljZShP
YnNlcnZlciYsIGNvbnN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mKTsKQEAg
LTQyLDcgKzQwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtU3RhcnREaXNjb3Zlcnko
KSBmaW5hbDsKICAgICBVbmlxdWVSZWY8SGlkQ29ubmVjdGlvbj4gY3JlYXRlSGlkQ29ubmVjdGlv
bihJT0hJRERldmljZVJlZikgY29uc3QgZmluYWw7CiAKLSAgICBNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKKyAgICBXZWJDb3JlOjpNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaAppbmRl
eCAzMWFkNzFhMzEyN2JhYWE0NjZjNzI5ZGE1YmY0ZDFkNTJiNGUxYWE0Li4zNTU5YjgwZWI5ODI4
MGEwMWMxNTBhYzQyMmE0M2MyM2VjZDNhZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2Nh
bENvbm5lY3Rpb24uaApAQCAtMjgsMTMgKzI4LDEzIEBACiAjaWYgRU5BQkxFKFdFQl9BVVRITikK
IAogI2luY2x1ZGUgIkxvY2FsQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIk1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE1v
Y2tMb2NhbENvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgTG9jYWxDb25uZWN0aW9uIHsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBNb2NrTG9jYWxDb25uZWN0aW9uKGNvbnN0IE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24mKTsKKyAgICBleHBsaWNpdCBNb2NrTG9jYWxDb25uZWN0aW9u
KGNvbnN0IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mKTsKIAog
cHJpdmF0ZToKICAgICB2b2lkIGdldFVzZXJDb25zZW50KGNvbnN0IFN0cmluZyYgcmVhc29uLCBV
c2VyQ29uc2VudENhbGxiYWNrJiYpIGNvbnN0IGZpbmFsOwpAQCAtNDIsNyArNDIsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZ2V0QXR0ZXN0YXRpb24oY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBT
dHJpbmcmIHVzZXJuYW1lLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIEF0dGVzdGF0aW9u
Q2FsbGJhY2smJikgY29uc3QgZmluYWw7CiAgICAgTlNEaWN0aW9uYXJ5ICpzZWxlY3RDcmVkZW50
aWFsKGNvbnN0IE5TQXJyYXkgKikgY29uc3QgZmluYWw7CiAKLSAgICBNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKKyAgICBXZWJDb3JlOjpNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1t
CmluZGV4IDU3MWVjY2E3ZTRmNDcwZmM2OWI0MWNkZDI2MDM5Y2I5MjcxZDRhMGEuLmNkYjFhYTM0
MjVmOWU4Y2ZjNjI4ZjI1YmVhMmE3MjUwZTk3YWU4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01v
Y2tMb2NhbENvbm5lY3Rpb24ubW0KQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLU1vY2tMb2NhbENvbm5lY3Rpb246Ok1vY2tMb2NhbENvbm5lY3Rpb24oY29uc3QgTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK01vY2tMb2Nh
bENvbm5lY3Rpb246Ok1vY2tMb2NhbENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICA6IG1fY29uZmln
dXJhdGlvbihjb25maWd1cmF0aW9uKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxTZXJ2aWNlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbFNlcnZp
Y2UuaAppbmRleCA3ZWI4ZjIxNGJjMDRlN2RmZmIxMDEwYTY4MmY0ZjExMTBjNjMyNzYxLi45MTY5
YmQ3NjIzMmYwMGY5YzAyNGNhNDEwY2E0ZTBjOTU3YjkzMjc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbFNlcnZpY2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01v
Y2tMb2NhbFNlcnZpY2UuaApAQCAtMjgsMjEgKzI4LDE5IEBACiAjaWYgRU5BQkxFKFdFQl9BVVRI
TikKIAogI2luY2x1ZGUgIkxvY2FsU2VydmljZS5oIgotI2luY2x1ZGUgIk1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0cnVjdCBN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOwotCiBjbGFzcyBNb2NrTG9jYWxTZXJ2
aWNlIGZpbmFsIDogcHVibGljIExvY2FsU2VydmljZSB7CiBwdWJsaWM6Ci0gICAgTW9ja0xvY2Fs
U2VydmljZShPYnNlcnZlciYsIGNvbnN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24mKTsKKyAgICBNb2NrTG9jYWxTZXJ2aWNlKE9ic2VydmVyJiwgY29uc3QgV2ViQ29yZTo6TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYpOwogCiBwcml2YXRlOgogICAgIGJvb2wg
cGxhdGZvcm1TdGFydERpc2NvdmVyeSgpIGNvbnN0IGZpbmFsOwogICAgIFVuaXF1ZVJlZjxMb2Nh
bENvbm5lY3Rpb24+IGNyZWF0ZUxvY2FsQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwogCi0gICAg
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CisgICAg
V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRp
b247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsU2VydmljZS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2Fs
U2VydmljZS5tbQppbmRleCAxZWIwMTAyZWNlNzc2MWYzMzRlNDBiNTU0YWMxODgxZjkzMzdkOTli
Li5mZWMxOTI3ZGU1ZGNhMDQ1YjEwMWIzNjU2MTIzYTllYTU1N2E3ZjE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbFNl
cnZpY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
TW9jay9Nb2NrTG9jYWxTZXJ2aWNlLm1tCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1Nb2NrTG9jYWxTZXJ2aWNlOjpNb2NrTG9jYWxTZXJ2aWNlKE9ic2VydmVyJiBv
YnNlcnZlciwgY29uc3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYgY29uZmln
dXJhdGlvbikKK01vY2tMb2NhbFNlcnZpY2U6Ok1vY2tMb2NhbFNlcnZpY2UoT2JzZXJ2ZXImIG9i
c2VydmVyLCBjb25zdCBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
JiBjb25maWd1cmF0aW9uKQogICAgIDogTG9jYWxTZXJ2aWNlKG9ic2VydmVyKQogICAgICwgbV9j
b25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNl
LmgKaW5kZXggMTMyY2RlNGQ2YjY2ZGFjMzFhY2M2Mjk2YzVlOTk4MjZhMjZiMzMwMi4uOWZkMWM5
YjQxMGI4MjMyYjRkMzVlMGUxMjg2N2ZkMzY0NmQ1NjZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTmZjU2VydmljZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja05m
Y1NlcnZpY2UuaApAQCAtMjcsMTggKzI3LDE2IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQog
Ci0jaW5jbHVkZSAiTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIgogI2luY2x1
ZGUgIk5mY1NlcnZpY2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24uaD4KIAogT0JKQ19DTEFTUyBOU0RhdGE7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1zdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjsKLQogY2xh
c3MgTW9ja05mY1NlcnZpY2UgZmluYWwgOiBwdWJsaWMgTmZjU2VydmljZSB7CiBwdWJsaWM6Ci0g
ICAgTW9ja05mY1NlcnZpY2UoT2JzZXJ2ZXImLCBjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uJik7CisgICAgTW9ja05mY1NlcnZpY2UoT2JzZXJ2ZXImLCBjb25zdCBXZWJD
b3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJik7CiAKICAgICBOU0RhdGEq
IHRyYW5zY2VpdmUoKTsKIApAQCAtNDcsNyArNDUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBk
ZXRlY3RUYWdzKCkgY29uc3Q7CiAKLSAgICBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uIG1fY29uZmlndXJhdGlvbjsKKyAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
TW9jay9Nb2NrTmZjU2VydmljZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL01vY2svTW9ja05mY1NlcnZpY2UubW0KaW5kZXggY2EzZGUyMTAyMmIzYTM5MTI3
ODBiYTA3MWIxZmRkNjQ2ZGM5YmE0YS4uY2E1MjJjNWUzYTNkMjhkNDIwNTU4MzcyYjE1NzFmNzEz
ZTM3ZDFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrTmZjU2VydmljZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLm1tCkBAIC0xMDgsNyArMTA4
LDcgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBmaWRvOwot
dXNpbmcgTW9ja05mYyA9IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mYzsK
K3VzaW5nIE1vY2sgPSBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
OwogCiAjaWYgSEFWRShORUFSX0ZJRUxEKQogCkBAIC0xNDMsNyArMTQzLDcgQEAgc3RhdGljIE5T
RGF0YSogTkZSZWFkZXJTZXNzaW9uVHJhbnNjZWl2ZShpZCwgU0VMLCBOU0RhdGEgKikKIAogI2Vu
ZGlmIC8vIEhBVkUoTkVBUl9GSUVMRCkKIAotTW9ja05mY1NlcnZpY2U6Ok1vY2tOZmNTZXJ2aWNl
KE9ic2VydmVyJiBvYnNlcnZlciwgY29uc3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbikKK01vY2tOZmNTZXJ2aWNlOjpNb2NrTmZjU2VydmljZShPYnNl
cnZlciYgb2JzZXJ2ZXIsIGNvbnN0IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBOZmNTZXJ2aWNlKG9ic2VydmVyKQogICAg
ICwgbV9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pCiB7CkBAIC0xNjksNyArMTY5LDcgQEAg
dm9pZCBNb2NrTmZjU2VydmljZTo6cGxhdGZvcm1TdGFydERpc2NvdmVyeSgpCiAgICAgICAgIG1l
dGhvZF9zZXRJbXBsZW1lbnRhdGlvbihtZXRob2RUb1N3aXp6bGUxLCAoSU1QKU5GUmVhZGVyU2Vz
c2lvblNldERlbGVnYXRlKTsKIAogICAgICAgICBNZXRob2QgbWV0aG9kVG9Td2l6emxlMiA9IGNs
YXNzX2dldEluc3RhbmNlTWV0aG9kKGdldE5GUmVhZGVyU2Vzc2lvbkNsYXNzKCksIEBzZWxlY3Rv
cihjb25uZWN0VGFnOikpOwotICAgICAgICBpZiAobV9jb25maWd1cmF0aW9uLm5mYy0+ZXJyb3Ig
PT0gTW9ja05mYzo6RXJyb3I6Ok5vQ29ubmVjdGlvbnMpCisgICAgICAgIGlmIChtX2NvbmZpZ3Vy
YXRpb24ubmZjLT5lcnJvciA9PSBNb2NrOjpOZmNFcnJvcjo6Tm9Db25uZWN0aW9ucykKICAgICAg
ICAgICAgIG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihtZXRob2RUb1N3aXp6bGUyLCAoSU1QKU5G
UmVhZGVyU2Vzc2lvbkNvbm5lY3RUYWdGYWlsKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
bWV0aG9kX3NldEltcGxlbWVudGF0aW9uKG1ldGhvZFRvU3dpenpsZTIsIChJTVApTkZSZWFkZXJT
ZXNzaW9uQ29ubmVjdFRhZyk7CkBAIC0xOTQsMTIgKzE5NCwxMiBAQCB2b2lkIE1vY2tOZmNTZXJ2
aWNlOjpwbGF0Zm9ybVN0YXJ0RGlzY292ZXJ5KCkKIHZvaWQgTW9ja05mY1NlcnZpY2U6OmRldGVj
dFRhZ3MoKSBjb25zdAogewogI2lmIEhBVkUoTkVBUl9GSUVMRCkKLSAgICBpZiAobV9jb25maWd1
cmF0aW9uLm5mYy0+ZXJyb3IgPT0gTW9ja05mYzo6RXJyb3I6Ok5vVGFncykKKyAgICBpZiAobV9j
b25maWd1cmF0aW9uLm5mYy0+ZXJyb3IgPT0gTW9jazo6TmZjRXJyb3I6Ok5vVGFncykKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VCbG9ja1B0cihbY29uZmlndXJh
dGlvbiA9IG1fY29uZmlndXJhdGlvbl0gewogICAgICAgICBhdXRvIHRhZ3MgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24u
bmZjLT5lcnJvciA9PSBNb2NrTmZjOjpFcnJvcjo6V3JvbmdUYWdUeXBlIHx8IGNvbmZpZ3VyYXRp
b24ubmZjLT5tdWx0aXBsZVRhZ3MpCisgICAgICAgIGlmIChjb25maWd1cmF0aW9uLm5mYy0+ZXJy
b3IgPT0gTW9jazo6TmZjRXJyb3I6Oldyb25nVGFnVHlwZSB8fCBjb25maWd1cmF0aW9uLm5mYy0+
bXVsdGlwbGVUYWdzKQogICAgICAgICAgICAgW3RhZ3MgYWRkT2JqZWN0OmFkb3B0TlMoW1tXS01v
Y2tORlRhZyBhbGxvY10gaW5pdFdpdGhUeXBlOk5GVGFnVHlwZVVua25vd25dKS5nZXQoKV07CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIFt0YWdzIGFkZE9iamVjdDphZG9wdE5TKFtbV0tNb2Nr
TkZUYWcgYWxsb2NdIGluaXRXaXRoVHlwZTpORlRhZ1R5cGVHZW5lcmljNEFdKS5nZXQoKV07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2Nr
L01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTNlODVjMThlM2FjNmE3
ZTk1ZTdkNDYzYjAzOWE2NTliOWU5NmFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L01vY2svTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oCisrKyAvZGV2L251bGwK
QEAgLTEsOTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdFQl9BVVRITikKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotc3RydWN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24g
ewotICAgIHN0cnVjdCBMb2NhbCB7Ci0gICAgICAgIGJvb2wgYWNjZXB0QXV0aGVudGljYXRpb24g
eyBmYWxzZSB9OwotICAgICAgICBib29sIGFjY2VwdEF0dGVzdGF0aW9uIHsgZmFsc2UgfTsKLSAg
ICAgICAgU3RyaW5nIHByaXZhdGVLZXlCYXNlNjQ7Ci0gICAgICAgIFN0cmluZyB1c2VyQ2VydGlm
aWNhdGVCYXNlNjQ7Ci0gICAgICAgIFN0cmluZyBpbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFz
ZTY0OwotICAgICAgICBTdHJpbmcgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDsKLSAgICB9Owot
Ci0gICAgc3RydWN0IEhpZCB7Ci0gICAgICAgIGVudW0gY2xhc3MgU3RhZ2UgOiBib29sIHsKLSAg
ICAgICAgICAgIEluZm8sCi0gICAgICAgICAgICBSZXF1ZXN0Ci0gICAgICAgIH07Ci0KLSAgICAg
ICAgZW51bSBjbGFzcyBTdWJTdGFnZSA6IGJvb2wgewotICAgICAgICAgICAgSW5pdCwKLSAgICAg
ICAgICAgIE1zZwotICAgICAgICB9OwotCi0gICAgICAgIGVudW0gY2xhc3MgRXJyb3IgOiB1aW50
OF90IHsKLSAgICAgICAgICAgIFN1Y2Nlc3MsCi0gICAgICAgICAgICBEYXRhTm90U2VudCwKLSAg
ICAgICAgICAgIEVtcHR5UmVwb3J0LAotICAgICAgICAgICAgV3JvbmdDaGFubmVsSWQsCi0gICAg
ICAgICAgICBNYWxpY2lvdXNQYXlsb2FkLAotICAgICAgICAgICAgVW5zdXBwb3J0ZWRPcHRpb25z
LAotICAgICAgICAgICAgV3JvbmdOb25jZQotICAgICAgICB9OwotCi0gICAgICAgIFZlY3RvcjxT
dHJpbmc+IHBheWxvYWRCYXNlNjQ7Ci0gICAgICAgIFN0YWdlIHN0YWdlIHsgU3RhZ2U6OkluZm8g
fTsKLSAgICAgICAgU3ViU3RhZ2Ugc3ViU3RhZ2UgeyBTdWJTdGFnZTo6SW5pdCB9OwotICAgICAg
ICBFcnJvciBlcnJvciB7IEVycm9yOjpTdWNjZXNzIH07Ci0gICAgICAgIGJvb2wgaXNVMmYgeyBm
YWxzZSB9OwotICAgICAgICBib29sIGtlZXBBbGl2ZSB7IGZhbHNlIH07Ci0gICAgICAgIGJvb2wg
ZmFzdERhdGFBcnJpdmFsIHsgZmFsc2UgfTsKLSAgICAgICAgYm9vbCBjb250aW51ZUFmdGVyRXJy
b3JEYXRhIHsgZmFsc2UgfTsKLSAgICAgICAgYm9vbCBjYW5Eb3duZ3JhZGUgeyBmYWxzZSB9Owot
ICAgIH07Ci0KLSAgICBzdHJ1Y3QgTmZjIHsKLSAgICAgICAgZW51bSBjbGFzcyBFcnJvciA6IHVp
bnQ4X3QgewotICAgICAgICAgICAgU3VjY2VzcywKLSAgICAgICAgICAgIE5vVGFncywKLSAgICAg
ICAgICAgIFdyb25nVGFnVHlwZSwKLSAgICAgICAgICAgIE5vQ29ubmVjdGlvbnMsCi0gICAgICAg
ICAgICBNYWxpY2lvdXNQYXlsb2FkCi0gICAgICAgIH07Ci0KLSAgICAgICAgRXJyb3IgZXJyb3Ig
eyBFcnJvcjo6U3VjY2VzcyB9OwotICAgICAgICBWZWN0b3I8U3RyaW5nPiBwYXlsb2FkQmFzZTY0
OwotICAgICAgICBib29sIG11bHRpcGxlVGFncyB7IGZhbHNlIH07Ci0gICAgfTsKLQotICAgIGJv
b2wgc2lsZW50RmFpbHVyZSB7IGZhbHNlIH07Ci0gICAgT3B0aW9uYWw8TG9jYWw+IGxvY2FsOwot
ICAgIE9wdGlvbmFsPEhpZD4gaGlkOwotICAgIE9wdGlvbmFsPE5mYz4gbmZjOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggODc4MjBkMzNhY2QyM2U4MWQ4
YzczM2UxMDFmY2U4OWJkNTIxYTkzNy4uNmE4ZmFmOTIzOTQ3NjAzMmFlZDUzZjc3ZTIzN2E5NWIz
NzI2NjNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC05
MzkyLDYgKzkzOTIsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclNPQXV0
aG9yaXphdGlvbkxvYWQoY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIEMKIH0KICNlbmRpZgogCisj
aWYgRU5BQkxFKFdFQl9BVVRITikKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uKE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24m
JiBjb25maWd1cmF0aW9uKQoreworICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+c2V0TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKK30KKyNl
bmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIE1FUkdFX1dIRUVMX0VWRU5U
UwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA4Yzc3NTA5NmNkMTZj
NzNhNGQ2MzgzMDQwMjczYjAwOWM4YTI2Nzk5Li5iN2E5YWY4MTdiYTVlZGM5M2FkMDJhOWViYjE5
MTY3Y2M4ZmQ4ODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAt
MjEzLDYgKzIxMyw3IEBAIHN0cnVjdCBFeGNlcHRpb25EZXRhaWxzOwogc3RydWN0IEZpbGVDaG9v
c2VyU2V0dGluZ3M7CiBzdHJ1Y3QgR2xvYmFsV2luZG93SWRlbnRpZmllcjsKIHN0cnVjdCBNZWRp
YVN0cmVhbVJlcXVlc3Q7CitzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bjsKIHN0cnVjdCBQcmV3YXJtSW5mb3JtYXRpb247CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRh
Owogc3RydWN0IFNoYXJlRGF0YTsKQEAgLTE1ODcsNiArMTU4OCwxMCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoV2ViUHJvY2Vzc1By
b3h5JiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiByZXNvdXJjZURpcmVjdG9yeVVSTCwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJik7CiAKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIHZvaWQg
c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihXZWJDb3JlOjpNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uJiYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2Vi
UGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBSZWY8QVBJOjpQYWdlQ29u
ZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBkYzY1
Mjc2NmMyOGM0OGZkYmE5MTViNGY3NzE0NTY5ZjgwNGZhM2M0Li44MzkzN2QyMDRlOGQwYmQ4YzJh
MDU3ODExYjU3MjM0MmMwY2E2MDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC01NzQsNCArNTc0LDggQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZVByb3h5IHsKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKICAg
ICBEaWRDcmVhdGVDb250ZXh0Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKFdlYktpdDo6TGF5ZXJI
b3N0aW5nQ29udGV4dElEIGNvbnRleHRJRCk7CiAjZW5kaWYKKworI2lmIEVOQUJMRShXRUJfQVVU
SE4pCisgICAgU2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihzdHJ1Y3QgV2Vi
Q29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKTsK
KyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDRkNDkwOTFhNzg3YjdmZDVhODNlZjAzZjc2ZmNm
Y2RjOWNkNmUxZTUuLjk0ZGU5ZWVjZjNjNTg5M2Y5ZmE5MmQyY2ZjNTMzMTkwMzRmMjdiZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmgKQEAgLTY0LDYgKzY0LDggQEAgY2xhc3MgSFRUUENvb2tpZVN0b3JlOwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVnaXN0cmFibGVEb21haW47CiBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKKworc3RydWN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb247CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzgsNyArODAsNiBAQCBjbGFzcyBXZWJQcm9jZXNz
UHJveHk7CiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU7CiBlbnVtIGNsYXNz
IFdlYnNpdGVEYXRhRmV0Y2hPcHRpb247CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZTsKLXN0
cnVjdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOwogc3RydWN0IFdlYnNpdGVE
YXRhUmVjb3JkOwogc3RydWN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOwogCkBAIC0yNTIs
NyArMjUzLDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICBBdXRoZW50
aWNhdG9yTWFuYWdlciYgYXV0aGVudGljYXRvck1hbmFnZXIoKSB7IHJldHVybiBtX2F1dGhlbnRp
Y2F0b3JNYW5hZ2VyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uKE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mJik7CisgICAg
dm9pZCBzZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKFdlYkNvcmU6Ok1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgZGlk
Q3JlYXRlTmV0d29ya1Byb2Nlc3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA1YTFlYWFmOThlZjJjMDliZjY5YTk1NTE4MDNlNjBj
ZmQzNjYwOGEuLjYzOGViZWQ1ODUzZmQ3YWQ0NzQ5OTM1MTNlNmFmYTAxYjA4NzBiN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA3
Myw3ICsxMDczLDYgQEAKIAkJNTdEQ0VEQjEyMTRDNjA0ODAwMTZCODQ3IC8qIEF1dGhlbnRpY2F0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENF
RDhCMjE0ODVCRDcwMDE2Qjg0NyAvKiBBdXRoZW50aWNhdG9yLmggKi87IH07CiAJCTU3RENFREIy
MjE0QzYwNEMwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRURBNjIxNDlGOURB
MDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oICovOyB9OwogCQk1N0RD
RURCMzIxNEM2MDUzMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NjA4Mjk1
MjAyQkQ4QkEwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oICov
OyB9OwotCQk1N0RDRURCRjIxNEYwRENGMDAxNkI4NDcgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTdEQ0VEQkUyMTRDQTAxQjAwMTZCODQ3IC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24uaCAqLzsgfTsKIAkJNTdEQ0VEQzMyMTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tM
b2NhbFNlcnZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3RENFREMxMjE0RjExNEMwMDE2Qjg0NyAvKiBNb2NrTG9jYWxTZXJ2aWNlLmggKi87IH07
CiAJCTU3RENFREM3MjE0RjE4MzAwMDE2Qjg0NyAvKiBNb2NrTG9jYWxDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRURDNTIxNEYx
ODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlvbi5oICovOyB9OwogCQk1N0RDRURDQjIx
NEY0RTQyMDAxNkI4NDcgLyogTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRURDOTIxNEY0RTQyMDAxNkI4
NDcgLyogTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggKi87IH07CkBAIC0zNTY0LDcgKzM1NjMs
NiBAQAogCQk1N0RDRURBNzIxNEE1NjhCMDAxNkI4NDcgLyogTG9jYWxDb25uZWN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IExvY2FsQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1N0RDRURBODIxNEE1NjhCMDAxNkI4NDcgLyogTG9jYWxDb25uZWN0aW9uLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTG9jYWxDb25uZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1N0RDRURBQTIxNEI5QjQzMDAxNkI4NDcgLyogRGV2aWNlSWRlbnRpdHlTUEku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlSWRlbnRpdHlTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNTdEQ0VEQkUyMTRDQTAxQjAwMTZCODQ3IC8qIE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0RDRURDMTIx
NEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2Nr
TG9jYWxTZXJ2aWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3RENFREMyMjE0
RjExNEMwMDE2Qjg0NyAvKiBNb2NrTG9jYWxTZXJ2aWNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gTW9ja0xvY2FsU2VydmljZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdE
Q0VEQzUyMTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTW9ja0xvY2FsQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNzE0Myw3ICs3MTQxLDYgQEAKIAkJCQk1N0RDRURDMjIxNEYxMTRDMDAxNkI4NDcgLyogTW9j
a0xvY2FsU2VydmljZS5tbSAqLywKIAkJCQk1N0I4MjY0QTIzMDYwM0MxMDBCNzJFQjAgLyogTW9j
a05mY1NlcnZpY2UuaCAqLywKIAkJCQk1N0I4MjY0QjIzMDYwM0MxMDBCNzJFQjAgLyogTW9ja05m
Y1NlcnZpY2UubW0gKi8sCi0JCQkJNTdEQ0VEQkUyMTRDQTAxQjAwMTZCODQ3IC8qIE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gTW9jazsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC05NTgzLDcgKzk1ODAsNiBAQAogCQkJCTU3
RENFREM3MjE0RjE4MzAwMDE2Qjg0NyAvKiBNb2NrTG9jYWxDb25uZWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1N0RDRURDMzIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTdCODI2NEMyMzA2MDNDMTAwQjcyRUIwIC8qIE1vY2tOZmNT
ZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKLQkJCQk1N0RDRURCRjIxNEYwRENGMDAxNkI4NDcgLyog
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzBFM0FBN0MxMjA5RTgzQzAwQTQ5RDAxIC8qIE1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkQ1MDM2NkIxQkNERTE3OTAwRTIwQkIzIC8qIE5hdGl2ZVdlYkdlc3R1cmVFdmVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMjYzMTcyQ0YxOEI0Njk0OTAwNjVCOUMzIC8qIE5hdGl2ZVdlYlRvdWNo
RXZlbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAyOWYyNTMw
NzMxMjNmMWU3YWQyYjlhYTU3Y2ViMzQ1OTdhODBlN2E4Li40ZTYyOTU5ODIwM2E1MGU2OWQ1YWEw
N2FhZjg2YzhhOWM3YjVkMGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtOTgsNiArOTgs
MTAgQEAKICNpbmNsdWRlICJQcmludGVyTGlzdEd0ay5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
V0VCX0FVVEhOKQorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbi5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMTM1Nyw0ICsxMzYxLDEx
IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRVc2VySXNJbnRlcmFjdGluZyhib29sIHVzZXJJ
c0ludGVyYWN0aW5nKQogICAgIG1fcGFnZS5zZXRVc2VySXNJbnRlcmFjdGluZyh1c2VySXNJbnRl
cmFjdGluZyk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQordm9pZCBXZWJDaHJvbWVDbGll
bnQ6OnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oY29uc3QgTW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK3sKKyAgICBtX3BhZ2Uu
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA3N2ZlMzA3NjA1Zjg1ZDNhZDg1NzFkODI1ZGRk
ZTE1YzY3M2E3ODIwLi45OTkxOGM3MDA0OTVjMTBmMWFhOTc0YjFjNmM1NzA3YjAyZmFkMWU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zODEsNiArMzgxLDEwIEBAIHByaXZhdGU6CiAgICAgYm9v
bCB1c2VySXNJbnRlcmFjdGluZygpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2V0VXNlcklzSW50
ZXJhY3RpbmcoYm9vbCkgZmluYWw7CiAKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIHZvaWQg
c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJikgZmluYWw7CisjZW5kaWYKKwogICAgIFN0
cmluZyBtX2NhY2hlZFRvb2xUaXA7CiAgICAgbXV0YWJsZSBSZWZQdHI8V2ViRnJhbWU+IG1fY2Fj
aGVkRnJhbWVTZXRMYXJnZXN0RnJhbWU7CiAgICAgbXV0YWJsZSBib29sIG1fY2FjaGVkTWFpbkZy
YW1lSGFzSG9yaXpvbnRhbFNjcm9sbGJhciB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmMwN2Y3YWYzNzM5YmNhMmYwNWI3NDRh
MjViMDM4M2U0NjFkMDFlZi4uODc4OGI2N2VjOGVkOWQ1OTQwZGQ4NjYyYzQyNGFmMjBlYmY5MGEx
YiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIxIEBACisyMDE5LTEwLTA4ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5j
b20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBNb3ZlIHRoZSBtb2NrIHRlc3RpbmcgZW50cmFuY2Ug
dG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDI1NjAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1OTczNzkzPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RS
OjpUZXN0UnVubmVyOjpzZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoK
KyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAyMDE5LTEwLTA5ICB5b3Vlbm4gZmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGVzdFJ1bm5lci5zZXRXZWJSVENVbmlm
aWVkUGxhbkVuYWJsZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDhjOTdjN2IwNTg0
ZWQzYTQ5NjVjMzM4OTdjN2RlYTcxZjEyYjgyZWUuLjk1NzAxNDQ0MTU3NDZmODM0ZTczZGMzNzFj
MDQxYTU3NDlhMDFjZGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzkxLDggKzM5
MSw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKIAogICAgIHZvaWQgc2V0U2VydmljZVdvcmtl
ckZldGNoVGltZW91dChkb3VibGUgc2Vjb25kcyk7CiAKLSAgICAvLyBXZWJBdXRoTgotICAgIHZv
aWQgc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihvYmplY3QgY29uZmlndXJh
dGlvbik7CisgICAgLy8gV2ViQXV0aG4KICAgICB2b2lkIGFkZFRlc3RLZXlUb0tleWNoYWluKERP
TVN0cmluZyBwcml2YXRlS2V5QmFzZTY0LCBET01TdHJpbmcgYXR0ckxhYmVsLCBET01TdHJpbmcg
YXBwbGljYXRpb25UYWdCYXNlNjQpOwogICAgIHZvaWQgY2xlYW5VcEtleWNoYWluKERPTVN0cmlu
ZyBhdHRyTGFiZWwsIG9wdGlvbmFsIERPTVN0cmluZyBhcHBsaWNhdGlvblRhZ0Jhc2U2NCk7CiAg
ICAgYm9vbGVhbiBrZXlFeGlzdHNJbktleWNoYWluKERPTVN0cmluZyBhdHRyTGFiZWwsIERPTVN0
cmluZyBhcHBsaWNhdGlvblRhZ0Jhc2U2NCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCA1ZmVhODNkY2Y5ZjRhYThm
YWJmMTJmM2RmOGZjZmZjNTAyOGEyNjBiLi40NjE3ZWUzZDM0MWRjMWEwZTdmYjNjMDFiZWRiNThk
ZjVlZTg3YTgxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTI2MjgsMzAxICsyNjI4LDcgQEAgdm9pZCBUZXN0UnVu
bmVyOjpzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0KGRvdWJsZSBzZWNvbmRzKQogICAgIFdL
QnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCku
YnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7
CiB9CiAKLS8vIFdlYkF1dGhOCi12b2lkIFRlc3RSdW5uZXI6OnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oSlNWYWx1ZVJlZiBjb25maWd1cmF0aW9uVmFsdWUpCi17Ci0gICAg
YXV0byYgaW5qZWN0ZWRCdW5kbGUgPSBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCk7Ci0gICAg
V0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoaW5q
ZWN0ZWRCdW5kbGUucGFnZSgpLT5wYWdlKCkpOwotICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0g
V0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7Ci0gICAgaWYgKCFK
U1ZhbHVlSXNPYmplY3QoY29udGV4dCwgY29uZmlndXJhdGlvblZhbHVlKSkKLSAgICAgICAgcmV0
dXJuOwotICAgIEpTT2JqZWN0UmVmIGNvbmZpZ3VyYXRpb24gPSBKU1ZhbHVlVG9PYmplY3QoY29u
dGV4dCwgY29uZmlndXJhdGlvblZhbHVlLCAwKTsKLQotICAgIFZlY3RvcjxXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4+IGNvbmZpZ3VyYXRpb25LZXlzOwotICAgIFZlY3RvcjxXS1JldGFpblB0cjxX
S1R5cGVSZWY+PiBjb25maWd1cmF0aW9uVmFsdWVzOwotCi0gICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IHNpbGVudEZhaWx1cmVQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJzaWxlbnRGYWlsdXJlIikpOwotICAgIEpTVmFsdWVSZWYgc2lsZW50RmFp
bHVyZVZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBjb25maWd1cmF0aW9uLCBz
aWxlbnRGYWlsdXJlUHJvcGVydHlOYW1lLmdldCgpLCAwKTsKLSAgICBpZiAoIUpTVmFsdWVJc1Vu
ZGVmaW5lZChjb250ZXh0LCBzaWxlbnRGYWlsdXJlVmFsdWUpKSB7Ci0gICAgICAgIGlmICghSlNW
YWx1ZUlzQm9vbGVhbihjb250ZXh0LCBzaWxlbnRGYWlsdXJlVmFsdWUpKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBib29sIHNpbGVudEZhaWx1cmUgPSBKU1ZhbHVlVG9Cb29sZWFuKGNv
bnRleHQsIHNpbGVudEZhaWx1cmVWYWx1ZSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb25LZXlzLmFw
cGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTaWxlbnRGYWlsdXJl
IikpKTsKLSAgICAgICAgY29uZmlndXJhdGlvblZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jvb2xl
YW5DcmVhdGUoc2lsZW50RmFpbHVyZSkpLmdldCgpKTsKLSAgICB9Ci0KLSAgICBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gbG9jYWxQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJsb2NhbCIpKTsKLSAgICBKU1ZhbHVlUmVmIGxvY2FsVmFsdWUgPSBKU09i
amVjdEdldFByb3BlcnR5KGNvbnRleHQsIGNvbmZpZ3VyYXRpb24sIGxvY2FsUHJvcGVydHlOYW1l
LmdldCgpLCAwKTsKLSAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCBsb2NhbFZh
bHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChjb250ZXh0LCBsb2NhbFZhbHVlKSkgewotICAgICAgICBp
ZiAoIUpTVmFsdWVJc09iamVjdChjb250ZXh0LCBsb2NhbFZhbHVlKSkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgSlNPYmplY3RSZWYgbG9jYWwgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4
dCwgbG9jYWxWYWx1ZSwgMCk7Ci0KLSAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGFj
Y2VwdEF1dGhlbnRpY2F0aW9uUHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiYWNjZXB0QXV0aGVudGljYXRpb24iKSk7Ci0gICAgICAgIEpTVmFsdWVSZWYg
YWNjZXB0QXV0aGVudGljYXRpb25WYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwg
bG9jYWwsIGFjY2VwdEF1dGhlbnRpY2F0aW9uUHJvcGVydHlOYW1lLmdldCgpLCAwKTsKLSAgICAg
ICAgaWYgKCFKU1ZhbHVlSXNCb29sZWFuKGNvbnRleHQsIGFjY2VwdEF1dGhlbnRpY2F0aW9uVmFs
dWUpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBib29sIGFjY2VwdEF1dGhlbnRpY2F0
aW9uID0gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhY2NlcHRBdXRoZW50aWNhdGlvblZhbHVl
KTsKLQotICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYWNjZXB0QXR0ZXN0YXRpb25Q
cm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJhY2NlcHRB
dHRlc3RhdGlvbiIpKTsKLSAgICAgICAgSlNWYWx1ZVJlZiBhY2NlcHRBdHRlc3RhdGlvblZhbHVl
ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBsb2NhbCwgYWNjZXB0QXR0ZXN0YXRpb25Q
cm9wZXJ0eU5hbWUuZ2V0KCksIDApOwotICAgICAgICBpZiAoIUpTVmFsdWVJc0Jvb2xlYW4oY29u
dGV4dCwgYWNjZXB0QXR0ZXN0YXRpb25WYWx1ZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGJvb2wgYWNjZXB0QXR0ZXN0YXRpb24gPSBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFj
Y2VwdEF0dGVzdGF0aW9uVmFsdWUpOwotCi0gICAgICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4+IGxvY2FsS2V5czsKLSAgICAgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLVHlwZVJl
Zj4+IGxvY2FsVmFsdWVzOwotICAgICAgICBsb2NhbEtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkFjY2VwdEF1dGhlbnRpY2F0aW9uIikpKTsKLSAgICAg
ICAgbG9jYWxWYWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGFjY2VwdEF1dGhl
bnRpY2F0aW9uKSkuZ2V0KCkpOwotICAgICAgICBsb2NhbEtleXMuYXBwZW5kKGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkFjY2VwdEF0dGVzdGF0aW9uIikpKTsKLSAgICAg
ICAgbG9jYWxWYWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGFjY2VwdEF0dGVz
dGF0aW9uKSkuZ2V0KCkpOwotCi0gICAgICAgIGlmIChhY2NlcHRBdHRlc3RhdGlvbikgewotICAg
ICAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHByaXZhdGVLZXlCYXNlNjRQcm9wZXJ0
eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJwcml2YXRlS2V5QmFz
ZTY0IikpOwotICAgICAgICAgICAgSlNWYWx1ZVJlZiBwcml2YXRlS2V5QmFzZTY0VmFsdWUgPSBK
U09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGxvY2FsLCBwcml2YXRlS2V5QmFzZTY0UHJvcGVy
dHlOYW1lLmdldCgpLCAwKTsKLSAgICAgICAgICAgIGlmICghSlNWYWx1ZUlzU3RyaW5nKGNvbnRl
eHQsIHByaXZhdGVLZXlCYXNlNjRWYWx1ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gdXNlckNlcnRpZmljYXRlQmFzZTY0
UHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygidXNlckNl
cnRpZmljYXRlQmFzZTY0IikpOwotICAgICAgICAgICAgSlNWYWx1ZVJlZiB1c2VyQ2VydGlmaWNh
dGVCYXNlNjRWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgbG9jYWwsIHVzZXJD
ZXJ0aWZpY2F0ZUJhc2U2NFByb3BlcnR5TmFtZS5nZXQoKSwgMCk7Ci0gICAgICAgICAgICBpZiAo
IUpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCB1c2VyQ2VydGlmaWNhdGVCYXNlNjRWYWx1ZSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NFByb3BlcnR5TmFtZShBZG9wdCwg
SlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVC
YXNlNjQiKSk7Ci0gICAgICAgICAgICBKU1ZhbHVlUmVmIGludGVybWVkaWF0ZUNBQ2VydGlmaWNh
dGVCYXNlNjRWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgbG9jYWwsIGludGVy
bWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjRQcm9wZXJ0eU5hbWUuZ2V0KCksIDApOwotICAgICAg
ICAgICAgaWYgKCFKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgaW50ZXJtZWRpYXRlQ0FDZXJ0aWZp
Y2F0ZUJhc2U2NFZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAg
IGxvY2FsS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
UHJpdmF0ZUtleUJhc2U2NCIpKSk7Ci0gICAgICAgICAgICBsb2NhbFZhbHVlcy5hcHBlbmQodG9X
SyhhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHByaXZhdGVLZXlCYXNlNjRWYWx1
ZSwgMCkpLmdldCgpKSk7Ci0gICAgICAgICAgICBsb2NhbEtleXMuYXBwZW5kKGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlVzZXJDZXJ0aWZpY2F0ZUJhc2U2NCIpKSk7Ci0g
ICAgICAgICAgICBsb2NhbFZhbHVlcy5hcHBlbmQodG9XSyhhZG9wdChKU1ZhbHVlVG9TdHJpbmdD
b3B5KGNvbnRleHQsIHVzZXJDZXJ0aWZpY2F0ZUJhc2U2NFZhbHVlLCAwKSkuZ2V0KCkpKTsKLSAg
ICAgICAgICAgIGxvY2FsS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiSW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NCIpKSk7Ci0gICAgICAgICAg
ICBsb2NhbFZhbHVlcy5hcHBlbmQodG9XSyhhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRl
eHQsIGludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjRWYWx1ZSwgMCkpLmdldCgpKSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcHJlZmVycmVkVXNl
cmhhbmRsZUJhc2U2NFByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoInByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQiKSk7Ci0gICAgICAgIEpTVmFsdWVSZWYg
cHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NFZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250
ZXh0LCBsb2NhbCwgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NFByb3BlcnR5TmFtZS5nZXQoKSwg
MCk7Ci0gICAgICAgIGlmICghSlNWYWx1ZUlzVW5kZWZpbmVkKGNvbnRleHQsIHByZWZlcnJlZFVz
ZXJoYW5kbGVCYXNlNjRWYWx1ZSkgJiYgIUpTVmFsdWVJc051bGwoY29udGV4dCwgcHJlZmVycmVk
VXNlcmhhbmRsZUJhc2U2NFZhbHVlKSkgewotICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNTdHJp
bmcoY29udGV4dCwgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NFZhbHVlKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGxvY2FsS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NCIpKSk7
Ci0gICAgICAgICAgICBsb2NhbFZhbHVlcy5hcHBlbmQodG9XSyhhZG9wdChKU1ZhbHVlVG9TdHJp
bmdDb3B5KGNvbnRleHQsIHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjRWYWx1ZSwgMCkpLmdldCgp
KSk7Ci0gICAgICAgIH0KLQotICAgICAgICBWZWN0b3I8V0tTdHJpbmdSZWY+IHJhd0xvY2FsS2V5
czsKLSAgICAgICAgVmVjdG9yPFdLVHlwZVJlZj4gcmF3TG9jYWxWYWx1ZXM7Ci0gICAgICAgIHJh
d0xvY2FsS2V5cy5yZXNpemUobG9jYWxLZXlzLnNpemUoKSk7Ci0gICAgICAgIHJhd0xvY2FsVmFs
dWVzLnJlc2l6ZShsb2NhbFZhbHVlcy5zaXplKCkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxvY2FsS2V5cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgcmF3TG9jYWxLZXlz
W2ldID0gbG9jYWxLZXlzW2ldLmdldCgpOwotICAgICAgICAgICAgcmF3TG9jYWxWYWx1ZXNbaV0g
PSBsb2NhbFZhbHVlc1tpXS5nZXQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbmZpZ3VyYXRp
b25LZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJMb2Nh
bCIpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb25WYWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tEaWN0
aW9uYXJ5Q3JlYXRlKHJhd0xvY2FsS2V5cy5kYXRhKCksIHJhd0xvY2FsVmFsdWVzLmRhdGEoKSwg
cmF3TG9jYWxLZXlzLnNpemUoKSkpKTsKLSAgICB9Ci0KLSAgICBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gaGlkUHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiaGlkIikpOwotICAgIEpTVmFsdWVSZWYgaGlkVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5
KGNvbnRleHQsIGNvbmZpZ3VyYXRpb24sIGhpZFByb3BlcnR5TmFtZS5nZXQoKSwgMCk7Ci0gICAg
aWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgaGlkVmFsdWUpICYmICFKU1ZhbHVlSXNO
dWxsKGNvbnRleHQsIGhpZFZhbHVlKSkgewotICAgICAgICBpZiAoIUpTVmFsdWVJc09iamVjdChj
b250ZXh0LCBoaWRWYWx1ZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEpTT2JqZWN0
UmVmIGhpZCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBoaWRWYWx1ZSwgMCk7Ci0KLSAgICAg
ICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0YWdlUHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygic3RhZ2UiKSk7Ci0gICAgICAgIEpTVmFsdWVSZWYg
c3RhZ2VWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgaGlkLCBzdGFnZVByb3Bl
cnR5TmFtZS5nZXQoKSwgMCk7Ci0gICAgICAgIGlmICghSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQs
IHN0YWdlVmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBzdWJTdGFnZVByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoInN1YlN0YWdlIikpOwotICAgICAgICBKU1ZhbHVlUmVmIHN1YlN0YWdl
VmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGhpZCwgc3ViU3RhZ2VQcm9wZXJ0
eU5hbWUuZ2V0KCksIDApOwotICAgICAgICBpZiAoIUpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCBz
dWJTdGFnZVZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gZXJyb3JQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJlcnJvciIpKTsKLSAgICAgICAgSlNWYWx1ZVJlZiBlcnJvclZhbHVlID0g
SlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBoaWQsIGVycm9yUHJvcGVydHlOYW1lLmdldCgp
LCAwKTsKLSAgICAgICAgaWYgKCFKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgZXJyb3JWYWx1ZSkp
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPj4gaGlkS2V5czsKLSAgICAgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLVHlwZVJlZj4+
IGhpZFZhbHVlczsKLSAgICAgICAgaGlkS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiU3RhZ2UiKSkpOwotICAgICAgICBoaWRWYWx1ZXMuYXBwZW5kKHRv
V0soYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBzdGFnZVZhbHVlLCAwKSkuZ2V0
KCkpKTsKLSAgICAgICAgaGlkS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiU3ViU3RhZ2UiKSkpOwotICAgICAgICBoaWRWYWx1ZXMuYXBwZW5kKHRvV0so
YWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBzdWJTdGFnZVZhbHVlLCAwKSkuZ2V0
KCkpKTsKLSAgICAgICAgaGlkS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiRXJyb3IiKSkpOwotICAgICAgICBoaWRWYWx1ZXMuYXBwZW5kKHRvV0soYWRv
cHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBlcnJvclZhbHVlLCAwKSkuZ2V0KCkpKTsK
LQotICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGF5bG9hZEJhc2U2NFByb3BlcnR5
TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInBheWxvYWRCYXNlNjQi
KSk7Ci0gICAgICAgIEpTVmFsdWVSZWYgcGF5bG9hZEJhc2U2NFZhbHVlID0gSlNPYmplY3RHZXRQ
cm9wZXJ0eShjb250ZXh0LCBoaWQsIHBheWxvYWRCYXNlNjRQcm9wZXJ0eU5hbWUuZ2V0KCksIDAp
OwotICAgICAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCBwYXlsb2FkQmFzZTY0
VmFsdWUpICYmICFKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1ZSkpIHsK
LSAgICAgICAgICAgIGlmICghSlNWYWx1ZUlzQXJyYXkoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZh
bHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIEpTT2JqZWN0UmVm
IHBheWxvYWRCYXNlNjQgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZh
bHVlLCBudWxscHRyKTsKLSAgICAgICAgICAgIHN0YXRpYyBhdXRvIGxlbmd0aFByb3BlcnR5ID0g
YWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImxlbmd0aCIpKTsKLSAgICAgICAg
ICAgIEpTVmFsdWVSZWYgcGF5bG9hZEJhc2U2NExlbmd0aFZhbHVlID0gSlNPYmplY3RHZXRQcm9w
ZXJ0eShjb250ZXh0LCBwYXlsb2FkQmFzZTY0LCBsZW5ndGhQcm9wZXJ0eS5nZXQoKSwgbnVsbHB0
cik7Ci0gICAgICAgICAgICBpZiAoIUpTVmFsdWVJc051bWJlcihjb250ZXh0LCBwYXlsb2FkQmFz
ZTY0TGVuZ3RoVmFsdWUpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAg
YXV0byBwYXlsb2FkQmFzZTY0cyA9IGFkb3B0V0soV0tNdXRhYmxlQXJyYXlDcmVhdGUoKSk7Ci0g
ICAgICAgICAgICBhdXRvIHBheWxvYWRCYXNlNjRMZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+
KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBwYXlsb2FkQmFzZTY0TGVuZ3RoVmFsdWUsIG51bGxw
dHIpKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGF5bG9hZEJhc2U2NExl
bmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBwYXlsb2FkQmFzZTY0VmFs
dWUgPSBKU09iamVjdEdldFByb3BlcnR5QXRJbmRleChjb250ZXh0LCBwYXlsb2FkQmFzZTY0LCBp
LCBudWxscHRyKTsKLSAgICAgICAgICAgICAgICBpZiAoIUpTVmFsdWVJc1N0cmluZyhjb250ZXh0
LCBwYXlsb2FkQmFzZTY0VmFsdWUpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShwYXlsb2FkQmFzZTY0cy5nZXQoKSwgdG9X
SyhhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1ZSwg
MCkpLmdldCgpKS5nZXQoKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGhpZEtleXMu
YXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlBheWxvYWRCYXNl
NjQiKSkpOwotICAgICAgICAgICAgaGlkVmFsdWVzLmFwcGVuZChwYXlsb2FkQmFzZTY0cyk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gaXNVMmZQcm9wZXJ0
eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJpc1UyZiIpKTsKLSAg
ICAgICAgSlNWYWx1ZVJlZiBpc1UyZlZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0
LCBoaWQsIGlzVTJmUHJvcGVydHlOYW1lLmdldCgpLCAwKTsKLSAgICAgICAgaWYgKCFKU1ZhbHVl
SXNVbmRlZmluZWQoY29udGV4dCwgaXNVMmZWYWx1ZSkgJiYgIUpTVmFsdWVJc051bGwoY29udGV4
dCwgaXNVMmZWYWx1ZSkpIHsKLSAgICAgICAgICAgIGlmICghSlNWYWx1ZUlzQm9vbGVhbihjb250
ZXh0LCBpc1UyZlZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBi
b29sIGlzVTJmID0gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBpc1UyZlZhbHVlKTsKLSAgICAg
ICAgICAgIGhpZEtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIklzVTJmIikpKTsKLSAgICAgICAgICAgIGhpZFZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jv
b2xlYW5DcmVhdGUoaXNVMmYpKS5nZXQoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4ga2VlcEFsaXZlUHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygia2VlcEFsaXZlIikpOwotICAgICAgICBKU1ZhbHVlUmVmIGtl
ZXBBbGl2ZVZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBoaWQsIGtlZXBBbGl2
ZVByb3BlcnR5TmFtZS5nZXQoKSwgMCk7Ci0gICAgICAgIGlmICghSlNWYWx1ZUlzVW5kZWZpbmVk
KGNvbnRleHQsIGtlZXBBbGl2ZVZhbHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChjb250ZXh0LCBrZWVw
QWxpdmVWYWx1ZSkpIHsKLSAgICAgICAgICAgIGlmICghSlNWYWx1ZUlzQm9vbGVhbihjb250ZXh0
LCBrZWVwQWxpdmVWYWx1ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
Ym9vbCBrZWVwQWxpdmUgPSBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGtlZXBBbGl2ZVZhbHVl
KTsKLSAgICAgICAgICAgIGhpZEtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIktlZXBBbGl2ZSIpKSk7Ci0gICAgICAgICAgICBoaWRWYWx1ZXMuYXBwZW5k
KGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGtlZXBBbGl2ZSkpLmdldCgpKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBmYXN0RGF0YUFycml2YWxQcm9wZXJ0
eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJmYXN0RGF0YUFycml2
YWwiKSk7Ci0gICAgICAgIEpTVmFsdWVSZWYgZmFzdERhdGFBcnJpdmFsVmFsdWUgPSBKU09iamVj
dEdldFByb3BlcnR5KGNvbnRleHQsIGhpZCwgZmFzdERhdGFBcnJpdmFsUHJvcGVydHlOYW1lLmdl
dCgpLCAwKTsKLSAgICAgICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgZmFzdERh
dGFBcnJpdmFsVmFsdWUpICYmICFKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIGZhc3REYXRhQXJyaXZh
bFZhbHVlKSkgewotICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNCb29sZWFuKGNvbnRleHQsIGZh
c3REYXRhQXJyaXZhbFZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICBib29sIGZhc3REYXRhQXJyaXZhbCA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgZmFzdERh
dGFBcnJpdmFsVmFsdWUpOwotICAgICAgICAgICAgaGlkS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRmFzdERhdGFBcnJpdmFsIikpKTsKLSAgICAgICAg
ICAgIGhpZFZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoZmFzdERhdGFBcnJp
dmFsKSkuZ2V0KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGFQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJjb250aW51ZUFmdGVyRXJyb3JEYXRhIikpOwotICAgICAgICBK
U1ZhbHVlUmVmIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGFWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVy
dHkoY29udGV4dCwgaGlkLCBjb250aW51ZUFmdGVyRXJyb3JEYXRhUHJvcGVydHlOYW1lLmdldCgp
LCAwKTsKLSAgICAgICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgY29udGludWVB
ZnRlckVycm9yRGF0YVZhbHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChjb250ZXh0LCBjb250aW51ZUFm
dGVyRXJyb3JEYXRhVmFsdWUpKSB7Ci0gICAgICAgICAgICBpZiAoIUpTVmFsdWVJc0Jvb2xlYW4o
Y29udGV4dCwgY29udGludWVBZnRlckVycm9yRGF0YVZhbHVlKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICBib29sIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEgPSBKU1ZhbHVl
VG9Cb29sZWFuKGNvbnRleHQsIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGFWYWx1ZSk7Ci0gICAgICAg
ICAgICBoaWRLZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJDb250aW51ZUFmdGVyRXJyb3JEYXRhIikpKTsKLSAgICAgICAgICAgIGhpZFZhbHVlcy5hcHBl
bmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoY29udGludWVBZnRlckVycm9yRGF0YSkpLmdldCgp
KTsKLSAgICAgICAgfQotCi0gICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjYW5Eb3du
Z3JhZGVQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJj
YW5Eb3duZ3JhZGUiKSk7Ci0gICAgICAgIEpTVmFsdWVSZWYgY2FuRG93bmdyYWRlVmFsdWUgPSBK
U09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGhpZCwgY2FuRG93bmdyYWRlUHJvcGVydHlOYW1l
LmdldCgpLCAwKTsKLSAgICAgICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgY2Fu
RG93bmdyYWRlVmFsdWUpICYmICFKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIGNhbkRvd25ncmFkZVZh
bHVlKSkgewotICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNCb29sZWFuKGNvbnRleHQsIGNhbkRv
d25ncmFkZVZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBib29s
IGNhbkRvd25ncmFkZSA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgY2FuRG93bmdyYWRlVmFs
dWUpOwotICAgICAgICAgICAgaGlkS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiQ2FuRG93bmdyYWRlIikpKTsKLSAgICAgICAgICAgIGhpZFZhbHVlcy5h
cHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoY2FuRG93bmdyYWRlKSkuZ2V0KCkpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgVmVjdG9yPFdLU3RyaW5nUmVmPiByYXdIaWRLZXlzOwotICAgICAg
ICBWZWN0b3I8V0tUeXBlUmVmPiByYXdIaWRWYWx1ZXM7Ci0gICAgICAgIHJhd0hpZEtleXMucmVz
aXplKGhpZEtleXMuc2l6ZSgpKTsKLSAgICAgICAgcmF3SGlkVmFsdWVzLnJlc2l6ZShoaWRWYWx1
ZXMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBoaWRLZXlzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgICAgICByYXdIaWRLZXlzW2ldID0gaGlkS2V5c1tpXS5nZXQoKTsK
LSAgICAgICAgICAgIHJhd0hpZFZhbHVlc1tpXSA9IGhpZFZhbHVlc1tpXS5nZXQoKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGNvbmZpZ3VyYXRpb25LZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIaWQiKSkpOwotICAgICAgICBjb25maWd1cmF0aW9uVmFs
dWVzLmFwcGVuZChhZG9wdFdLKFdLRGljdGlvbmFyeUNyZWF0ZShyYXdIaWRLZXlzLmRhdGEoKSwg
cmF3SGlkVmFsdWVzLmRhdGEoKSwgcmF3SGlkS2V5cy5zaXplKCkpKSk7Ci0gICAgfQotCi0gICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IG5mY1Byb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIm5mYyIpKTsKLSAgICBKU1ZhbHVlUmVmIG5mY1ZhbHVlID0g
SlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBjb25maWd1cmF0aW9uLCBuZmNQcm9wZXJ0eU5h
bWUuZ2V0KCksIDApOwotICAgIGlmICghSlNWYWx1ZUlzVW5kZWZpbmVkKGNvbnRleHQsIG5mY1Zh
bHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChjb250ZXh0LCBuZmNWYWx1ZSkpIHsKLSAgICAgICAgaWYg
KCFKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgbmZjVmFsdWUpKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBKU09iamVjdFJlZiBuZmMgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgbmZj
VmFsdWUsIDApOwotCi0gICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBlcnJvclByb3Bl
cnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImVycm9yIikpOwot
ICAgICAgICBKU1ZhbHVlUmVmIGVycm9yVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRl
eHQsIG5mYywgZXJyb3JQcm9wZXJ0eU5hbWUuZ2V0KCksIDApOwotICAgICAgICBpZiAoIUpTVmFs
dWVJc1N0cmluZyhjb250ZXh0LCBlcnJvclZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+PiBuZmNLZXlzOwotICAgICAg
ICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tUeXBlUmVmPj4gbmZjVmFsdWVzOwotICAgICAgICBuZmNL
ZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFcnJvciIp
KSk7Ci0gICAgICAgIG5mY1ZhbHVlcy5hcHBlbmQodG9XSyhhZG9wdChKU1ZhbHVlVG9TdHJpbmdD
b3B5KGNvbnRleHQsIGVycm9yVmFsdWUsIDApKS5nZXQoKSkpOwotCi0gICAgICAgIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBwYXlsb2FkQmFzZTY0UHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygicGF5bG9hZEJhc2U2NCIpKTsKLSAgICAgICAgSlNWYWx1
ZVJlZiBwYXlsb2FkQmFzZTY0VmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIG5m
YywgcGF5bG9hZEJhc2U2NFByb3BlcnR5TmFtZS5nZXQoKSwgMCk7Ci0gICAgICAgIGlmICghSlNW
YWx1ZUlzVW5kZWZpbmVkKGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1ZSkgJiYgIUpTVmFsdWVJ
c051bGwoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlKSkgewotICAgICAgICAgICAgaWYgKCFK
U1ZhbHVlSXNBcnJheShjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFsdWUpKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICAgICAgSlNPYmplY3RSZWYgcGF5bG9hZEJhc2U2NCA9IEpT
VmFsdWVUb09iamVjdChjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFsdWUsIG51bGxwdHIpOwotICAg
ICAgICAgICAgc3RhdGljIGF1dG8gbGVuZ3RoUHJvcGVydHkgPSBhZG9wdChKU1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygibGVuZ3RoIikpOwotICAgICAgICAgICAgSlNWYWx1ZVJlZiBwYXls
b2FkQmFzZTY0TGVuZ3RoVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIHBheWxv
YWRCYXNlNjQsIGxlbmd0aFByb3BlcnR5LmdldCgpLCBudWxscHRyKTsKLSAgICAgICAgICAgIGlm
ICghSlNWYWx1ZUlzTnVtYmVyKGNvbnRleHQsIHBheWxvYWRCYXNlNjRMZW5ndGhWYWx1ZSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBhdXRvIHBheWxvYWRCYXNlNjRz
ID0gYWRvcHRXSyhXS011dGFibGVBcnJheUNyZWF0ZSgpKTsKLSAgICAgICAgICAgIGF1dG8gcGF5
bG9hZEJhc2U2NExlbmd0aCA9IHN0YXRpY19jYXN0PHNpemVfdD4oSlNWYWx1ZVRvTnVtYmVyKGNv
bnRleHQsIHBheWxvYWRCYXNlNjRMZW5ndGhWYWx1ZSwgbnVsbHB0cikpOwotICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXlsb2FkQmFzZTY0TGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgICAgICAgICBKU1ZhbHVlUmVmIHBheWxvYWRCYXNlNjRWYWx1ZSA9IEpTT2JqZWN0R2V0UHJv
cGVydHlBdEluZGV4KGNvbnRleHQsIHBheWxvYWRCYXNlNjQsIGksIG51bGxwdHIpOwotICAgICAg
ICAgICAgICAgIGlmICghSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1
ZSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIFdLQXJy
YXlBcHBlbmRJdGVtKHBheWxvYWRCYXNlNjRzLmdldCgpLCB0b1dLKGFkb3B0KEpTVmFsdWVUb1N0
cmluZ0NvcHkoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlLCAwKSkuZ2V0KCkpLmdldCgpKTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbmZjS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUGF5bG9hZEJhc2U2NCIpKSk7Ci0gICAgICAgICAg
ICBuZmNWYWx1ZXMuYXBwZW5kKHBheWxvYWRCYXNlNjRzKTsKLSAgICAgICAgfQotCi0gICAgICAg
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBtdWx0aXBsZVRhZ3NQcm9wZXJ0eU5hbWUoQWRvcHQs
IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJtdWx0aXBsZVRhZ3MiKSk7Ci0gICAgICAg
IEpTVmFsdWVSZWYgbXVsdGlwbGVUYWdzVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRl
eHQsIG5mYywgbXVsdGlwbGVUYWdzUHJvcGVydHlOYW1lLmdldCgpLCAwKTsKLSAgICAgICAgaWYg
KCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgbXVsdGlwbGVUYWdzVmFsdWUpICYmICFKU1Zh
bHVlSXNOdWxsKGNvbnRleHQsIG11bHRpcGxlVGFnc1ZhbHVlKSkgewotICAgICAgICAgICAgaWYg
KCFKU1ZhbHVlSXNCb29sZWFuKGNvbnRleHQsIG11bHRpcGxlVGFnc1ZhbHVlKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBib29sIG11bHRpcGxlVGFncyA9IEpTVmFsdWVU
b0Jvb2xlYW4oY29udGV4dCwgbXVsdGlwbGVUYWdzVmFsdWUpOwotICAgICAgICAgICAgbmZjS2V5
cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTXVsdGlwbGVU
YWdzIikpKTsKLSAgICAgICAgICAgIG5mY1ZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5D
cmVhdGUobXVsdGlwbGVUYWdzKSkuZ2V0KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgVmVjdG9y
PFdLU3RyaW5nUmVmPiByYXdOZmNLZXlzOwotICAgICAgICBWZWN0b3I8V0tUeXBlUmVmPiByYXdO
ZmNWYWx1ZXM7Ci0gICAgICAgIHJhd05mY0tleXMucmVzaXplKG5mY0tleXMuc2l6ZSgpKTsKLSAg
ICAgICAgcmF3TmZjVmFsdWVzLnJlc2l6ZShuZmNWYWx1ZXMuc2l6ZSgpKTsKLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBuZmNLZXlzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBy
YXdOZmNLZXlzW2ldID0gbmZjS2V5c1tpXS5nZXQoKTsKLSAgICAgICAgICAgIHJhd05mY1ZhbHVl
c1tpXSA9IG5mY1ZhbHVlc1tpXS5nZXQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbmZpZ3Vy
YXRpb25LZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJO
ZmMiKSkpOwotICAgICAgICBjb25maWd1cmF0aW9uVmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLRGlj
dGlvbmFyeUNyZWF0ZShyYXdOZmNLZXlzLmRhdGEoKSwgcmF3TmZjVmFsdWVzLmRhdGEoKSwgcmF3
TmZjS2V5cy5zaXplKCkpKSk7Ci0gICAgfQotCi0gICAgVmVjdG9yPFdLU3RyaW5nUmVmPiByYXdD
b25maWd1cmF0aW9uS2V5czsKLSAgICBWZWN0b3I8V0tUeXBlUmVmPiByYXdDb25maWd1cmF0aW9u
VmFsdWVzOwotICAgIHJhd0NvbmZpZ3VyYXRpb25LZXlzLnJlc2l6ZShjb25maWd1cmF0aW9uS2V5
cy5zaXplKCkpOwotICAgIHJhd0NvbmZpZ3VyYXRpb25WYWx1ZXMucmVzaXplKGNvbmZpZ3VyYXRp
b25WYWx1ZXMuc2l6ZSgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbmZpZ3VyYXRp
b25LZXlzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHJhd0NvbmZpZ3VyYXRpb25LZXlzW2ldID0g
Y29uZmlndXJhdGlvbktleXNbaV0uZ2V0KCk7Ci0gICAgICAgIHJhd0NvbmZpZ3VyYXRpb25WYWx1
ZXNbaV0gPSBjb25maWd1cmF0aW9uVmFsdWVzW2ldLmdldCgpOwotICAgIH0KLQotICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIlNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24iKSk7
Ci0gICAgV0tSZXRhaW5QdHI8V0tEaWN0aW9uYXJ5UmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0V0so
V0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd0NvbmZpZ3VyYXRpb25LZXlzLmRhdGEoKSwgcmF3Q29uZmln
dXJhdGlvblZhbHVlcy5kYXRhKCksIHJhd0NvbmZpZ3VyYXRpb25LZXlzLnNpemUoKSkpOwotICAg
IAotICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShpbmplY3RlZEJ1bmRsZS5idW5k
bGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKLX0K
LQorLy8gV2ViQXV0aG4KIHZvaWQgVGVzdFJ1bm5lcjo6YWRkVGVzdEtleVRvS2V5Y2hhaW4oSlNT
dHJpbmdSZWYgcHJpdmF0ZUtleUJhc2U2NCwgSlNTdHJpbmdSZWYgYXR0ckxhYmVsLCBKU1N0cmlu
Z1JlZiBhcHBsaWNhdGlvblRhZ0Jhc2U2NCkKIHsKICAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+PiBrZXlzOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCA1ZjIzYTgwZTUxZDdhNGRlZDJkN2Q0ZmY0ZDRmY2Yx
YTljNzMzYWIyLi42MjcxZDUyMzExNGQ4NjljNGZhMjYyYTc5NWJjZGZkNjA0ODI3YWI1IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aApAQCAtNDkwLDkgKzQ5MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbmREaXNwbGF5Q29uZmln
dXJhdGlvbkNoYW5nZWRNZXNzYWdlRm9yVGVzdGluZygpOwogCiAgICAgdm9pZCBzZXRTZXJ2aWNl
V29ya2VyRmV0Y2hUaW1lb3V0KGRvdWJsZSBzZWNvbmRzKTsKLSAgICAKLSAgICAvLyBXZWJBdXRo
TgotICAgIHZvaWQgc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihKU1ZhbHVl
UmVmKTsKKwogICAgIC8vIEZJWE1FKDE4OTg3NikKICAgICB2b2lkIGFkZFRlc3RLZXlUb0tleWNo
YWluKEpTU3RyaW5nUmVmIHByaXZhdGVLZXlCYXNlNjQsIEpTU3RyaW5nUmVmIGF0dHJMYWJlbCwg
SlNTdHJpbmdSZWYgYXBwbGljYXRpb25UYWdCYXNlNjQpOwogICAgIHZvaWQgY2xlYW5VcEtleWNo
YWluKEpTU3RyaW5nUmVmIGF0dHJMYWJlbCwgSlNTdHJpbmdSZWYgYXBwbGljYXRpb25UYWdCYXNl
NjQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBlY2Q3
ZDliOGNjYjEzY2Y0ZjUzYjQwZWQ3N2Y4MTJlNjYyYzgwZmNlLi42NTdiNzliOTMwZDgxZDY4NTY4
ZGI3MzFiZGVhNTA4NzkzNzZkZjA2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcApAQCAtMzYyMSwxMSArMzYyMSw2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNl
dFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nKGRvdWJsZSBzZWNvbmRzKQogICAg
IFdLQ29udGV4dFNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nKHBsYXRmb3Jt
Q29udGV4dCgpLCBzZWNvbmRzKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0V2ViQXV0
aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihXS0RpY3Rpb25hcnlSZWYgY29uZmlndXJhdGlv
bikKLXsKLSAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25m
aWd1cmF0aW9uKFRlc3RDb250cm9sbGVyOjp3ZWJzaXRlRGF0YVN0b3JlKCksIGNvbmZpZ3VyYXRp
b24pOwotfQotCiBzdHJ1Y3QgQWRDbGlja0F0dHJpYnV0aW9uU3RyaW5nUmVzdWx0Q2FsbGJhY2tD
b250ZXh0IHsKICAgICBleHBsaWNpdCBBZENsaWNrQXR0cmlidXRpb25TdHJpbmdSZXN1bHRDYWxs
YmFja0NvbnRleHQoVGVzdENvbnRyb2xsZXImIGNvbnRyb2xsZXIpCiAgICAgICAgIDogdGVzdENv
bnRyb2xsZXIoY29udHJvbGxlcikKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aAppbmRleCA1MzBiMzM0ODQyYjZjMTJmNWM0YzU1YjE3NjUyOWYzNDIzYmU3MzY1Li40YmY5MDIz
YWI3MjJhMDkxMDFlZDI1MGZiODI4Y2I3ZjJhYjVhNDZlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oCkBAIC0yOTYsNyArMjk2LDYgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyhkb3VibGUgc2Vjb25kcyk7
CiAKLSAgICB2b2lkIHNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oV0tEaWN0
aW9uYXJ5UmVmKTsKICAgICB2b2lkIGFkZFRlc3RLZXlUb0tleWNoYWluKGNvbnN0IFN0cmluZyYg
cHJpdmF0ZUtleUJhc2U2NCwgY29uc3QgU3RyaW5nJiBhdHRyTGFiZWwsIGNvbnN0IFN0cmluZyYg
YXBwbGljYXRpb25UYWdCYXNlNjQpOwogICAgIHZvaWQgY2xlYW5VcEtleWNoYWluKGNvbnN0IFN0
cmluZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVGFnQmFzZTY0KTsKICAg
ICBib29sIGtleUV4aXN0c0luS2V5Y2hhaW4oY29uc3QgU3RyaW5nJiBhdHRyTGFiZWwsIGNvbnN0
IFN0cmluZyYgYXBwbGljYXRpb25UYWdCYXNlNjQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcAppbmRleCBhZThkNTk0ZGNhODcxYjM0ZjcyOTc5YzQyODIwOTZmYTRi
YTM3YjQ3Li5hOGY5YTc5YmU5NTg1N2I3MDBkN2ZhYjY3NzI4OTc1Yzk5NGQwNGIyIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTYzMCwxMiArMTYzMCw2
IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5j
aHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIAotICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAi
U2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbiIpKSB7Ci0gICAgICAgIEFTU0VS
VChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOwot
ICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbihzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5
KSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQogICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQWRkVGVzdEtleVRvS2V5Y2hhaW4iKSkg
ewogICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRGljdGlvbmFy
eUdldFR5cGVJRCgpKTsKICAgICAgICAgV0tEaWN0aW9uYXJ5UmVmIHRlc3RLZXlEaWN0aW9uYXJ5
ID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPihtZXNzYWdlQm9keSk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjgy
NmRlMTJkODIzMzdkYmM2ZWM3MGZkODkwYTVjZjNiMDUzOWFlZC4uZTk1N2RlZjE1ZDQ3MWYzYzY1
NmU2MmEwNjI0ZThkYTgxZjM5YjFlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE5LTEwLTA4
ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhu
XSBNb3ZlIHRoZSBtb2NrIHRlc3RpbmcgZW50cmFuY2UgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NjAKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzU1OTczNzkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtZmFpbHVyZS5odHRw
cy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLXN1Y2Nlc3MuaHR0
cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0
dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vaWRsLmh0dHBzLmh0bWw6Cisg
ICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1m
YWlsdXJlLWhpZC1zaWxlbnQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtaGlkLmh0dHBzLmh0bWw6Cisg
ICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1m
YWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1s
OgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVh
dGUtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLXNpbGVudC5odHRwcy5odG1s
OgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVh
dGUtZmFpbHVyZS11MmYuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUuaHR0cHMuaHRtbDoKKyAgICAgICAg
KiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3Mt
aGlkLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5o
dHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1jcmVhdGUtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLXNpbGVudC5odHRw
cy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1nZXQtZmFpbHVyZS1oaWQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLmh0
bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdl
dC1mYWlsdXJlLWxvY2FsLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLW5mYy5odHRwcy5odG1sOgorICAgICAg
ICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11
MmYtc2lsZW50Lmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLXUyZi5odHRwcy5odG1sOgorICAgICAgICAqIGh0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS5odHRwcy5o
dG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1n
ZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbDoKKyAgICAg
ICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3Mt
bmZjLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWdldC1zdWNjZXNzLXUyZi5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0
L3dlYmF1dGhuL3Jlc291cmNlcy9wdWJsaWMta2V5LWNyZWRlbnRpYWwtaXAtYWRkcmVzcy5odHRw
cy5odG1sOgorCiAyMDE5LTEwLTA5ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZW1vdmUgdGVzdFJ1bm5lci5zZXRXZWJSVENVbmlmaWVkUGxhbkVuYWJsZWQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2NyZWRlbnRpYWwtbWFuYWdlbWVudC9j
cmVkZW50aWFsc2NvbnRhaW5lci1zdG9yZS1iYXNpY3MuaHR0cHMuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L2NyZWRlbnRpYWwtbWFuYWdlbWVudC9jcmVkZW50aWFsc2NvbnRhaW5lci1zdG9y
ZS1iYXNpY3MuaHR0cHMuaHRtbAppbmRleCBiYzAyMTE5MmUwMGNhMWZjNzExNmU1MjAwZWRhMzRh
ZjA5ZWQwZTEzLi4xYTE5NTllMWM3NjUyODA2M2NmZDA3NzRhMzljYTRkYWY0ZGNjY2NjIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9jcmVkZW50aWFsLW1hbmFnZW1lbnQvY3JlZGVu
dGlhbHNjb250YWluZXItc3RvcmUtYmFzaWNzLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvY3JlZGVudGlhbC1tYW5hZ2VtZW50L2NyZWRlbnRpYWxzY29udGFpbmVyLXN0b3Jl
LWJhc2ljcy5odHRwcy5odG1sCkBAIC00Miw4ICs0Miw4IEBACiAgICAgICAgICAgICB9CiAgICAg
ICAgIH07CiAgICAgICAgIC8vIEEgbW9jayBhdHRlc3RhdGlvbiBvYmplY3QKLSAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50
aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0
YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDcmVhdGlv
bk1lc3NhZ2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
eyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nl
c3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NF0gfSB9KTsKICAg
ICAgICAgY29uc3QgY3JlZGVudGlhbCA9IGF3YWl0IG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVh
dGUob3B0aW9ucyk7CiAKICAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCAiTm90U3Vw
cG9ydGVkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuc3RvcmUoY3JlZGVudGlhbCkpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtZmFpbHVy
ZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtZmFp
bHVyZS5odHRwcy5odG1sCmluZGV4IDRmMGZkNmFhMDY2MDljOTQzNTE2ZjllNzZhODM3NmNhYTZk
YTkyZDkuLjlkNTNlMWQ0NDAyMTcxYmNkNDg3ZjExMmU2MDY0MjY2YWZmZjBlZGMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLWZhaWx1cmUuaHR0cHMu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1mYWlsdXJl
Lmh0dHBzLmh0bWwKQEAgLTIxLDUwICsyMSw1MCBAQAogICAgIH07CiAKICAgICBwcm9taXNlX3Rl
c3QoZnVuY3Rpb24odCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
ICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBo
aWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJkYXRhLW5vdC1z
ZW50IiB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGlu
dGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0
YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAiaW5pdCIsIGVycm9yOiAiZGF0YS1ub3Qtc2VudCIgfSB9
KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGRlZmF1bHRPcHRpb25zKSwgIk9wZXJhdGlvbiB0
aW1lZCBvdXQuIik7CiAgICAgfSwgIkNUQVAgSElEIHdpdGggaW5pdCBzdWIgc3RhZ2UgZGF0YSBu
b3Qgc2VudCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKICAgICBwcm9t
aXNlX3Rlc3QoZnVuY3Rpb24odCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRp
b24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJlbXB0
eS1yZXBvcnQiIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAg
ICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6
IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJlbXB0eS1yZXBvcnQi
IH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9y
IiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucyksICJPcGVyYXRp
b24gdGltZWQgb3V0LiIpOwogICAgIH0sICJDVEFQIEhJRCB3aXRoIGluaXQgc3ViIHN0YWdlIGVt
cHR5IHJlcG9ydCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKICAgICBw
cm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJ3
cm9uZy1jaGFubmVsLWlkIiB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
KHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAiaW5pdCIsIGVycm9yOiAid3Jvbmct
Y2hhbm5lbC1pZCIgfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RB
bGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGRlZmF1bHRPcHRpb25z
KSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIkNUQVAgSElEIHdpdGggaW5pdCBz
dWIgc3RhZ2Ugd3JvbmcgY2hhbm5lbCBpZCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0
b3IuIik7CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0
aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJp
bml0IiwgZXJyb3I6ICJ3cm9uZy1ub25jZSIgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogImluaXQiLCBlcnJv
cjogIndyb25nLW5vbmNlIiB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwg
Ik5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVmYXVsdE9w
dGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiQ1RBUCBISUQgd2l0aCBp
bml0IHN1YiBzdGFnZSB3cm9uZyBub25jZSBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0
b3IuIik7CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0
aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJt
c2ciLCBlcnJvcjogImRhdGEtbm90LXNlbnQiIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJv
cjogImRhdGEtbm90LXNlbnQiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0
LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShkZWZhdWx0
T3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJDVEFQIEhJRCB3aXRo
IG1zZyBzdWIgc3RhZ2UgZGF0YSBub3Qgc2VudCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRp
Y2F0b3IuIik7CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewotICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRp
Y2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6
ICJtc2ciLCBlcnJvcjogImVtcHR5LXJlcG9ydCIgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogIm1zZyIsIGVy
cm9yOiAiZW1wdHktcmVwb3J0IiB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHMo
dCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVmYXVs
dE9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiQ1RBUCBISUQgd2l0
aCBtc2cgc3ViIHN0YWdlIGVtcHR5IHJlcG9ydCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRp
Y2F0b3IuIik7CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewotICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRp
Y2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6
ICJtc2ciLCBlcnJvcjogIndyb25nLWNoYW5uZWwtaWQiIH0gfSk7CisgICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJtc2ci
LCBlcnJvcjogIndyb25nLWNoYW5uZWwtaWQiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNl
UmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0
ZShkZWZhdWx0T3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJDVEFQ
IEhJRCB3aXRoIG1zZyBzdWIgc3RhZ2Ugd3JvbmcgY2hhbm5lbCBpZCBlcnJvciBpbiBhIG1vY2sg
aGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIndyb25nLWNoYW5uZWwtaWQiLCBwYXlsb2Fk
QmFzZTY0Olt0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFn
ZTogIm1zZyIsIGVycm9yOiAid3JvbmctY2hhbm5lbC1pZCIsIHBheWxvYWRCYXNlNjQ6W3Rlc3RE
dW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJl
amVjdHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVm
YXVsdE9wdGlvbnMpLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogMTgiKTsK
ICAgICB9LCAiQ1RBUCBISUQgd2l0aCByZXF1ZXN0Ojptc2cgc3RhZ2Ugd3JvbmcgY2hhbm5lbCBp
ZCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiA8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLXN1Y2Nlc3MuaHR0
cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLXN1Y2Nlc3Mu
aHR0cHMuaHRtbAppbmRleCA4ZTVkMDk1ZTVmZDk4M2ZhYWFjNGQ3ZTNhNDYyYjBjY2RkOTdkNjA1
Li5iNmY5MWY4YzNlZmE2OTA3NjhlNzdlNWRkYjAzMzlhNDBjN2Q5OTcxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1zdWNjZXNzLmh0dHBzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtc3VjY2Vzcy5odHRw
cy5odG1sCkBAIC0yMCw4ICsyMCw4IEBACiAgICAgfTsKIAogICAgIHByb21pc2VfdGVzdChmdW5j
dGlvbih0KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBz
dGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxv
YWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSwga2VlcEFsaXZlOiB0cnVlIH0g
fSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxz
LnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJy
ZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0
OiBbdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NF0sIGtlZXBBbGl2ZTogdHJ1ZSB9IH0pOwogICAg
ICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucyku
dGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRl
bnRpYWwsIHVuZGVmaW5lZCk7CiAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50
aWFsLCBudWxsKTsKQEAgLTI5LDggKzI5LDggQEAKICAgICB9LCAiQ1RBUCBISUQgd2l0aCBrZWVw
IGFsaXZlIG1lc3NhZ2UgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJv
bWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0
aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJz
dWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdLCBmYXN0
RGF0YUFycml2YWw6IHRydWUgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3Vj
Y2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSwgZmFzdERh
dGFBcnJpdmFsOiB0cnVlIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlh
bHMuY3JlYXRlKGRlZmF1bHRPcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAg
ICAgYXNzZXJ0X25vdF9lcXVhbHMoY3JlZGVudGlhbCwgdW5kZWZpbmVkKTsKICAgICAgICAgICAg
IGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIG51bGwpOwpAQCAtMzgsOCArMzgsOCBAQAog
ICAgIH0sICJDVEFQIEhJRCB3aXRoIGZhc3QgZGF0YSBhcnJpdmFsIGluIGEgbW9jayBoaWQgYXV0
aGVudGljYXRvci4iKTsKIAogICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7Ci0gICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0
aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJT
dGFnZTogImluaXQiLCBlcnJvcjogImVtcHR5LXJlcG9ydCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0
Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSwgY29udGludWVBZnRlckVycm9yRGF0YTogdHJ1ZSB9IH0p
OworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5z
ZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5m
byIsIHN1YlN0YWdlOiAiaW5pdCIsIGVycm9yOiAiZW1wdHktcmVwb3J0IiwgcGF5bG9hZEJhc2U2
NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdLCBjb250aW51ZUFmdGVyRXJyb3JEYXRhOiB0
cnVlIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGRl
ZmF1bHRPcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgYXNzZXJ0X25v
dF9lcXVhbHMoY3JlZGVudGlhbCwgdW5kZWZpbmVkKTsKICAgICAgICAgICAgIGFzc2VydF9ub3Rf
ZXF1YWxzKGNyZWRlbnRpYWwsIG51bGwpOwpAQCAtNDcsOCArNDcsOCBAQAogICAgIH0sICJDVEFQ
IEhJRCB3aXRoIGNvbnRpbnVlIGFmdGVyIGVtcHR5IHJlcG9ydCBpbiBhIG1vY2sgaGlkIGF1dGhl
bnRpY2F0b3IuIik7CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhl
bnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3Rh
Z2U6ICJpbml0IiwgZXJyb3I6ICJ3cm9uZy1jaGFubmVsLWlkIiwgcGF5bG9hZEJhc2U2NDogW3Rl
c3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdLCBjb250aW51ZUFmdGVyRXJyb3JEYXRhOiB0cnVlIH0g
fSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxz
LnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJp
bmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJ3cm9uZy1jaGFubmVsLWlkIiwgcGF5bG9h
ZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdLCBjb250aW51ZUFmdGVyRXJyb3JE
YXRhOiB0cnVlIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3Jl
YXRlKGRlZmF1bHRPcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgYXNz
ZXJ0X25vdF9lcXVhbHMoY3JlZGVudGlhbCwgdW5kZWZpbmVkKTsKICAgICAgICAgICAgIGFzc2Vy
dF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIG51bGwpOwpAQCAtNTYsOCArNTYsOCBAQAogICAgIH0s
ICJDVEFQIEhJRCB3aXRoIGNvbnRpbnVlIGFmdGVyIHdyb25nIGNoYW5uZWwgaWQgaW4gYSBtb2Nr
IGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsK
LSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5m
byIsIHN1YlN0YWdlOiAiaW5pdCIsIGVycm9yOiAid3Jvbmctbm9uY2UiLCBwYXlsb2FkQmFzZTY0
OiBbdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NF0sIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGE6IHRy
dWUgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRl
cm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFn
ZTogImluZm8iLCBzdWJTdGFnZTogImluaXQiLCBlcnJvcjogIndyb25nLW5vbmNlIiwgcGF5bG9h
ZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdLCBjb250aW51ZUFmdGVyRXJyb3JE
YXRhOiB0cnVlIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3Jl
YXRlKGRlZmF1bHRPcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgYXNz
ZXJ0X25vdF9lcXVhbHMoY3JlZGVudGlhbCwgdW5kZWZpbmVkKTsKICAgICAgICAgICAgIGFzc2Vy
dF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIG51bGwpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vY3RhcC1uZmMtZmFpbHVyZS5odHRwcy5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1uZmMtZmFpbHVyZS5odHRwcy5odG1sCmluZGV4IDVj
MGIxYjhhZTQ2ODg3ZjVmYmE1YjEzM2I4ODJmNGU2NDlkOGFkMjQuLjIwNTA2MGFjNjdmNGIzMmM3
MDMwYzgzOGYyZWNlMTQwYTIyM2Y0YWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL2N0YXAtbmZjLWZhaWx1cmUuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0dHBzLmh0bWwKQEAgLTIxLDE0ICsy
MSwxNCBAQAogICAgIH07CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewotICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1
dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJtYWxpY2lvdXMt
cGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6W3Rlc3ROZmNVMmZWZXJzaW9uQmFzZTY0LCAiIl0gfSB9
KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMu
c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogIm1h
bGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDpbdGVzdE5mY1UyZlZlcnNpb25CYXNlNjQs
ICIiXSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRF
cnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlvbnMpLCAiT3Bl
cmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiQ1RBUCBORkMgd2l0aCBlbXB0eSBhcGR1IHJl
c3BvbnNlIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKIAogICAgIHByb21pc2VfdGVz
dChmdW5jdGlvbih0KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAg
ICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5m
YzogeyBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDpbdGVzdE5mY1Uy
ZlZlcnNpb25CYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0XSB9
IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFs
cy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAi
bWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0Olt0ZXN0TmZjVTJmVmVyc2lvbkJhc2U2
NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAgICAgICAg
IHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIp
OwogICAgIH0sICJDVEFQIE5GQyB3aXRoIHdyb25nIGRhdGEgZXJyb3IgaW4gYSBtb2NrIG5mYyBh
dXRoZW50aWNhdG9yLiIpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9pZGwuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL2lkbC5odHRwcy5odG1sCmluZGV4IGRjMTJiNzIyNGIxZTBmZDA2ODU3OTcwNTBhY2M5ZWZm
Yjk4NWNmNjEuLjA5YWZjYjBlMTZlNDczODEwOGI1ZTljODA1ZmFmN2NiOTdmZTRkOTggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2lkbC5odHRwcy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2lkbC5odHRwcy5odG1sCkBAIC01Miw4ICs1
Miw4IEBAIHByb21pc2VfdGVzdChhc3luYyAoKSA9PiB7CiAgICAgICAgIH0KICAgICB9OwogICAg
IC8vIEEgbW9jayBhdHRlc3RhdGlvbiBvYmplY3QKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlv
bih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3Vj
Y2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSB9IH0pOwor
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJT
dGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRp
b25NZXNzYWdlQmFzZTY0XSB9IH0pOwogICAgIGNyZWF0ZWRDcmVkZW50aWFsID0gYXdhaXQgbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShjcmVhdGlvbk9wdGlvbnMpOwogCiAgICAgY29uc3Qg
cmVxdWVzdE9wdGlvbnMgPSB7CkBAIC02MSw4ICs2MSw4IEBAIHByb21pc2VfdGVzdChhc3luYyAo
KSA9PiB7CiAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIi
KSwKICAgICAgICAgfQogICAgIH07Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6
IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBw
YXlsb2FkQmFzZTY0OiBbdGVzdEFzc2VydGlvbk1lc3NhZ2VCYXNlNjRdIH0gfSk7CisgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAi
bXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RBc3NlcnRpb25NZXNz
YWdlQmFzZTY0XSB9IH0pOwogICAgIHJlcXVlc3RlZENyZWRlbnRpYWwgPSBhd2FpdCBuYXZpZ2F0
b3IuY3JlZGVudGlhbHMuZ2V0KHJlcXVlc3RPcHRpb25zKTsKIAogICAgIGlkbEFycmF5LmFkZF9v
YmplY3RzKHsiUHVibGljS2V5Q3JlZGVudGlhbCI6IFsiY3JlYXRlZENyZWRlbnRpYWwiXSwgIkF1
dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIjogWyJjcmVhdGVkQ3JlZGVudGlhbC5yZXNw
b25zZSJdLCAiQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlIjogWyJyZXF1ZXN0ZWRDcmVk
ZW50aWFsLnJlc3BvbnNlIl19KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1oaWQtc2lsZW50Lmh0
dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtY3JlYXRlLWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1sCmluZGV4IDY2YjVkYTRm
Mzk5MmNlY2Y2MTc4YjdmNmI2M2JmNjdlNzhkODUyMzYuLmYzNTg2NmE2ZTM2MTY2NWEzMjUwZWVk
NTk0YmM0MGRhMmQwYjZkMmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1oaWQtc2lsZW50Lmh0dHBz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWhpZC1zaWxlbnQuaHR0cHMuaHRtbApAQCAtMjEsOCArMjEs
OCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2Nr
Q29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVl
c3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2Fk
QmFzZTY0OiBbdGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjRdIH0gfSk7CisgICAgICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3Rh
Z2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2Fk
IiwgcGF5bG9hZEJhc2U2NDogW3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0pOwog
ICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmln
YXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIp
OwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hbGljaW91
cyBwYXlsb2FkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtNDQsOCArNDQs
OCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2Nr
Q29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVl
c3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAidW5zdXBwb3J0ZWQtb3B0aW9ucyIgfSB9KTsK
KyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUs
IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAidW5zdXBw
b3J0ZWQtb3B0aW9ucyIgfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJO
b3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAi
T3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Y3JlYXRlXV0gd2l0aCB1bnN1cHBvcnRlZCBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVudGlj
YXRvci4iKTsKIApAQCAtNjcsOCArNjcsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9Owog
Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIu
c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRy
dWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAidW5z
dXBwb3J0ZWQtb3B0aW9ucyIgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFn
ZTogIm1zZyIsIGVycm9yOiAidW5zdXBwb3J0ZWQtb3B0aW9ucyIgfSB9KTsKICAgICAgICAgcmV0
dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAi
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1bnN1cHBvcnRlZCBvcHRpb25z
IGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gMiIpOwogCkBAIC05MCw4ICs5MCw4IEBACiAg
ICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1
cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1
YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ1bnN1cHBvcnRlZC1vcHRpb25zIiB9IH0pOworICAgICAg
ICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ1bnN1cHBvcnRlZC1v
cHRpb25zIiB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93
ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRp
b24gdGltZWQgb3V0LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVd
XSB3aXRoIG1peGVkIG9wdGlvbnMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBA
IC0xMTEsOCArMTExLDggQEAKICAgICAgICAgICAgfQogICAgICAgIH07CiAKLSAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGlj
YXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFn
ZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0OiBbdGVz
dEN0YXBFcnJDcmVkZW50aWFsRXhjbHVkZWRPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1
YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6
IFt0ZXN0Q3RhcEVyckNyZWRlbnRpYWxFeGNsdWRlZE9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsK
ICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIkludmFsaWRTdGF0ZUVycm9yIiwgbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkF0IGxlYXN0IG9uZSBjcmVkZW50
aWFsIG1hdGNoZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBsaXN0IGluIHRo
ZSBhdXRoZW50aWNhdG9yLiIpOwogICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0
ZV1dIHdpdGggSW52YWxpZFN0YXRlRXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIp
OwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtaGlkLmh0dHBzLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZh
aWx1cmUtaGlkLmh0dHBzLmh0bWwKaW5kZXggMmY4MzdjNjYzMjZiODdmZjdhOTI4N2FiMTcwMmRh
ZDM0MDA2NmRmMC4uMTBjZmVhZGZlNTYyNmJjODRmOWYwZWMyOTA0MGFhOTJkN2JiODkyNiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWNyZWF0ZS1mYWlsdXJlLWhpZC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1oaWQuaHR0
cHMuaHRtbApAQCAtNSw4ICs1LDggQEAKIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy91dGlsLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQ+CiAgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24u
IFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaXQgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1
cmF0aW9uLgotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5z
ZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVx
dWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIgfSB9KTsK
KyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3Vi
U3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiB9IH0pOwogCiAgICAgcHJv
bWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKQEAgLTQ1
LDggKzQ1LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0
aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6
ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RE
dW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVy
bmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJy
b3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0RHVtbXlNZXNzYWdl
UGF5bG9hZEJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJV
bmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiVW5r
bm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogMjU1Iik7CiAgICAgfSwgIlB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWFsaWNpb3VzIHBheWxvYWQgaW4gYSBtb2Nr
IGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC02Nyw4ICs2Nyw4IEBACiAgICAgICAgICAgICB9
CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlk
OiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ1bnN1cHBvcnRl
ZC1vcHRpb25zIiB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAg
ICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlk
OiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ1bnN1cHBvcnRl
ZC1vcHRpb25zIiB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25v
d25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJVbmtub3du
IGludGVybmFsIGVycm9yLiBFcnJvciBjb2RlOiA0MyIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVk
ZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHVuc3VwcG9ydGVkIG9wdGlvbnMgaW4gYSBtb2NrIGhp
ZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC04OSw4ICs4OSw4IEBACiAgICAgICAgICAgICB9CiAg
ICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ1bnN1cHBvcnRlZC1v
cHRpb25zIiB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAg
IGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ1bnN1cHBvcnRlZC1v
cHRpb25zIiB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25F
cnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJVbmtub3duIGlu
dGVybmFsIGVycm9yLiBFcnJvciBjb2RlOiA0MyIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50
aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHVuc3VwcG9ydGVkIG9wdGlvbnMgaW4gYSBtb2NrIGhpZCBh
dXRoZW50aWNhdG9yLiAyIik7CiAKQEAgLTExMiw4ICsxMTIsOCBAQAogICAgICAgICAgICAgfQog
ICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAidW5zdXBwb3J0ZWQt
b3B0aW9ucyIgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAg
ICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAidW5zdXBwb3J0ZWQt
b3B0aW9ucyIgfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxv
d2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0
aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRl
XV0gd2l0aCBtaXhlZCBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApA
QCAtMTM0LDggKzEzNCw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRo
ZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1
YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ1bnN1cHBvcnRlZC1vcHRpb25zIiB9IH0pOworICAgICAg
ICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1
YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ1bnN1cHBvcnRlZC1vcHRpb25zIiB9IH0pOwogICAgICAg
ICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJVbmtub3duIGludGVybmFsIGVycm9yLiBFcnJvciBj
b2RlOiA0MyIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRo
IG1peGVkIG9wdGlvbnMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAyIik7CiAKQEAgLTE1
NSw4ICsxNTUsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGlj
YXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFn
ZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0OiBbdGVz
dEN0YXBFcnJDcmVkZW50aWFsRXhjbHVkZWRPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAg
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwg
c3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2
NDogW3Rlc3RDdGFwRXJyQ3JlZGVudGlhbEV4Y2x1ZGVkT25seVJlc3BvbnNlQmFzZTY0XSB9IH0p
OwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIkludmFsaWRTdGF0ZUVycm9yIiwg
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkF0IGxlYXN0IG9uZSBjcmVk
ZW50aWFsIG1hdGNoZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBsaXN0IGlu
IHRoZSBhdXRoZW50aWNhdG9yLiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tj
cmVhdGVdXSB3aXRoIEludmFsaWRTdGF0ZUVycm9yIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRv
ci4iKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLXNpbGVudC5odHRw
cy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy5odG1sCmluZGV4IDZhMDBiZWRl
NmRkOWJlNzgzMDZhZTdkNDBlNzVmZWQzYmM0Y2FjMmQuLjRkY2Y0YTI5NGQ5ZmU3M2M3YzIxNmY4
ZmQxOTRlMzI2NjdhNzY4ZTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC1zaWxlbnQuaHR0
cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLmh0bWwKQEAgLTksOCAr
OSw4IEBACiAgICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVBy
aXZhdGVLZXlCYXNlNjQoKTsKICAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0gYXdhaXQgY2Fs
Y3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOwogICAgICAgICAvLyBEZWZhdWx0
IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBpZiB0aGV5IG5lZWQg
ZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9u
OiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisgICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBsb2NhbDogeyBhY2NlcHRB
dXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOwogCiAg
ICAgICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7
CkBAIC0xMjEsOCArMTIxLDggQEAKICAgICAgICAgICAgICAgICAgICAgdGltZW91dDogMTAKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9OwotICAgICAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRp
b25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGxvY2FsOiB7IGFjY2Vw
dEF1dGhlbnRpY2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgICAgIGludGVybmFs
cy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTog
dHJ1ZSwgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0
aW9uOiBmYWxzZSB9IH0pOwogICAgICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJO
b3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAi
T3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2NyZWF0ZV1dIHdpdGggc2lsZW50IGZhaWx1cmUgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRp
Y2F0b3IuIDUiKTsKIApAQCAtMTQyLDggKzE0Miw4IEBACiAgICAgICAgICAgICAgICAgICAgIHRp
bWVvdXQ6IDEwCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfTsKLSAgICAgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUs
IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjog
ZmFsc2UgfSB9KTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
eyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1
ZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CiAgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5hZGRUZXN0S2V5VG9LZXljaGFpbihwcml2YXRlS2V5QmFzZTY0LCB0ZXN0UnBJZCwgdXNl
cmhhbmRsZUJhc2U2NCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gcHJvbWlz
ZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVh
dGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpLnRoZW4oKCkgPT4gewpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWNyZWF0ZS1mYWlsdXJlLWxvY2FsLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwuaHR0cHMu
aHRtbAppbmRleCBjM2M5MzcyNjQ0YjM4MTRjYjRhMzQ1YzM1MTk2MTM4NzhlZWUyNDUzLi4zOWM3
ZWM3ZmFjNTRkZjcxN2RiMzdhYTA4NDk1N2Q3NDBjMjcyZTU3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1
cmUtbG9jYWwuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbApAQCAt
OSw4ICs5LDggQEAKICAgICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2NCA9IGF3YWl0IGdlbmVy
YXRlUHJpdmF0ZUtleUJhc2U2NCgpOwogICAgICAgICBjb25zdCBjcmVkZW50aWFsSUQgPSBhd2Fp
dCBjYWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7CiAgICAgICAgIC8vIERl
ZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkg
bmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25m
aWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IGZhbHNlLCBhY2NlcHRB
dHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRp
b246IGZhbHNlIH0gfSk7CiAKICAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICAg
ICAgY29uc3Qgb3B0aW9ucyA9IHsKQEAgLTExNiw4ICsxMTYsOCBAQAogICAgICAgICAgICAgICAg
ICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0K
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9OwotICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGlj
YXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0
cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IHRy
dWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOwogICAgICAgICAgICAgcmV0dXJuIHBy
b21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3Jl
YXRlKG9wdGlvbnMpLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iKTsKICAgICAgICAgfSwgIlB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGhvdXQgYXR0ZXN0YXRpb24gaW4gYSBt
b2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTEzNiw4ICsxMzYsOCBAQAogICAgICAg
ICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFs
ZzogLTcgfV0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9OwotICAgICAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRX
ZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVu
dGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOworICAgICAgICAg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhl
bnRpY2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKICAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLmFkZFRlc3RLZXlUb0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQs
IHRlc3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIikudGhlbigo
KSA9PiB7CkBAIC0xNjQsOCArMTY0LDggQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9OwogCi0gICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbG9j
YWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IGZhbHNlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFs
c2UgfSB9KTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAg
ICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbG9j
YWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IGZhbHNlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFs
c2UgfSB9KTsKICAgICAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dl
ZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlv
biB0aW1lZCBvdXQuIik7CiAgICAgICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVh
dGVdXSB3aXRoIHRpbWVvdXQgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CiAgICAg
fSkoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1u
ZmMuaHR0cHMuaHRtbAppbmRleCA0ODI0ODU3MzNjNWFmMzcyMzgzMjFiNmYyNGIyMjAzNGRmZWQ0
YjcxLi4yNTM1M2YwOTI2OGFhNTcxYjg3ZmQyYjExNTNlYzg2ZDg2MmYxNDViIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3Jl
YXRlLWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy5odG1s
CkBAIC01LDggKzUsOCBAQAogPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdD4KICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMg
bmVlZCB0byBvdmVycmlkZSBpdCBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24u
Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1
dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJuby10YWdzIiB9
IH0pOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogIm5vLXRhZ3Mi
IH0gfSk7CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewogICAgICAgICBjb25zdCBv
cHRpb25zID0gewpAQCAtNjYsOCArNjYsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9Owog
Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIu
c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogIndy
b25nLXRhZy10eXBlIiB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAg
ICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsg
bmZjOiB7IGVycm9yOiAid3JvbmctdGFnLXR5cGUiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9t
aXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNy
ZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggd3JvbmcgdGFnIHR5cGUgaW4gYSBtb2NrIG5m
YyBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC04OCw4ICs4OCw4IEBACiAgICAgICAgICAgICB9CiAg
ICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7
IGVycm9yOiAibm8tY29ubmVjdGlvbnMiIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJuby1jb25uZWN0aW9ucyIgfSB9KTsKICAgICAgICAg
cmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9
LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBubyBjb25uZWN0aW9ucyBp
biBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTExMCw4ICsxMTAsOCBAQAogICAg
ICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbih7IG5mYzogeyBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDog
WyBdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50
ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJy
b3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFsgXSB9IH0pOwogICAgICAg
ICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5j
cmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAg
IH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG51bGwgdmVyc2lvbiBp
biBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTEzMiw4ICsxMzIsOCBAQAogICAg
ICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbih7IG5mYzogeyBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDpb
dGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxv
YWRCYXNlNjQ6W3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0pOwogICAgICAgICBy
ZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0s
ICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHdyb25nIHZlcnNpb24gaW4g
YSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJm
LXNpbGVudC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMuaHRtbAppbmRl
eCBhZWQ5N2MyNTY2MTYyOWRiOWFjNzAzOGUxNzE3YzQ0ODQ4ZWY2YWQ0Li43ZTcwNGY3ZTExY2Rl
MzMxMDQ5MDE0YzkzMzdmNmRhZDkxY2M4YTNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLXNp
bGVudC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBzLmh0bWwKQEAg
LTIxLDggKzIxLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRp
Y2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3Rh
Z2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2Fk
IiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFsiQVE9PSJdIH0gfSk7CisgICAgICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3Rh
Z2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2Fk
IiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFsiQVE9PSJdIH0gfSk7CiAgICAgICAgIHJl
dHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwg
IlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWFsZm9ybWVkIEFQRFUgcGF5
bG9hZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTQzLDggKzQzLDggQEAK
ICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwg
c3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUs
IHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjRdIH0g
fSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxz
LnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0
cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1h
bGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBk
dU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNl
UmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0
ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWFsZm9ybWVkIFUyRiByZWdpc3RlciByZXNwb25z
ZSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTY1LDggKzY1LDggQEAKICAg
ICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3Vi
U3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBh
eWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNwb25zZUJhc2U2
NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRl
cm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1
cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9y
OiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RV
MmZBcGR1SW5zTm90U3VwcG9ydGVkT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICBy
ZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0s
ICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHJlZ2lzdGVyIGNvbW1hbmQg
ZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC04OCw4ICs4OCw4IEBA
CiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25m
aWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIs
IHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVl
LCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0LCB0
ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBh
eWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9u
bHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5UmVzcG9uc2VC
YXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dl
ZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlv
biB0aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1d
IHdpdGggYm9ndXMgY29tbWFuZCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7
CiAKQEAgLTExMCw4ICsxMTAsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2Vi
QXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhp
ZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3Vz
LXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJv
ck9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0
XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVy
bmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVy
ZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6
ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUy
ZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVz
cG9uc2VCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiSW52
YWxpZFN0YXRlRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAi
QXQgbGVhc3Qgb25lIGNyZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNy
ZWRlbnRpYWxzIGxpc3QgaW4gdGhlIGF1dGhlbnRpY2F0b3IuIik7CiAgICAgfSwgIlB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZmlyc3QgZXhjbHVkZSBjcmVkZW50aWFsIG1h
dGNoZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC0xMzMsOCArMTMzLDgg
QEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0Nv
bmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0
Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRy
dWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2
NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJy
b3JPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
KQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3Vi
U3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBh
eWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVz
dFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5
UmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAi
SW52YWxpZFN0YXRlRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMp
LCAiQXQgbGVhc3Qgb25lIGNyZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVk
ZUNyZWRlbnRpYWxzIGxpc3QgaW4gdGhlIGF1dGhlbnRpY2F0b3IuIik7CiAgICAgfSwgIlB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggc2Vjb25kIGV4Y2x1ZGUgY3JlZGVudGlh
bCBtYXRjaGVkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtMTU2LDggKzE1
Niw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1v
Y2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVx
dWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJm
OiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVk
T25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5
UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNw
b25zZUJhc2U2NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwor
ICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwg
aGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lv
dXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVDb25k
aXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlv
bnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Q29uZGl0aW9uc05v
dFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3Bv
bnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFs
bG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVy
YXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVh
dGVdXSB3aXRoIGZpcnN0IGV4Y2x1ZGUgY3JlZGVudGlhbCBtYXRjaGVkIGluIGEgbW9jayBoaWQg
YXV0aGVudGljYXRvci4gVGVzdCBvZiB1c2VyIHByZXNlbmNlLiIpOwogPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtY3JlYXRlLWZhaWx1cmUtdTJmLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLmh0dHBzLmh0
bWwKaW5kZXggMTU3ZDllODhhMDZiZWQ0NmM3ZDRmZDg1ZTE2MDFjZTJhZWNmNDIzZC4uOTQ3ZGNm
ZjJiZjUwOWQzZmFmYTA1NTA0MjVjNzk5MDExMjM0OGM2YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJl
LXUyZi5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYuaHR0cHMuaHRtbApAQCAtMjAsOCAr
MjAsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1z
ZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2
NDogWyJBUT09Il0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAg
ICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhp
ZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3Vz
LXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogWyJBUT09Il0gfSB9KTsKICAg
ICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3Iu
Y3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiQ291bGRuJ3QgcGFyc2UgdGhlIEFQRFUgcmVz
cG9uc2UuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGgg
bWFsZm9ybWVkIEFQRFUgcGF5bG9hZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAK
QEAgLTQxLDggKzQxLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhl
bnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3Vi
U3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBh
eWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7
CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNl
dE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6
IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNl
NjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9y
IiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkNvdWxkbid0IHBhcnNl
IHRoZSBVMkYgcmVnaXN0ZXIgcmVzcG9uc2UuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRp
YWwncyBbW2NyZWF0ZV1dIHdpdGggbWFsZm9ybWVkIFUyRiByZWdpc3RlciByZXNwb25zZSBpbiBh
IG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTYyLDggKzYyLDggQEAKICAgICAgICAg
ICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24o
eyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGlj
aW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdUlu
c05vdFN1cHBvcnRlZE9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1z
ZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2
NDogW3Rlc3RVMmZBcGR1SW5zTm90U3VwcG9ydGVkT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwog
ICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRv
ci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJVbmtub3duIGludGVybmFsIGVycm9yLiBF
cnJvciBjb2RlOiAyNzkwNCIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVh
dGVdXSB3aXRoIHJlZ2lzdGVyIGNvbW1hbmQgZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNh
dG9yLiIpOwogCkBAIC04NCw4ICs4NCw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAK
LSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVx
dWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJm
OiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFz
ZTY0LCB0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsK
KyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVl
c3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjog
dHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2
NCwgdGVzdFUyZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAg
ICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9y
LmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIEVy
cm9yIGNvZGU6IDI3OTA0Iik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0
ZV1dIHdpdGggYm9ndXMgY29tbWFuZCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3Iu
Iik7CiAKQEAgLTEwNiw4ICsxMDYsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVl
c3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjog
dHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2
NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBp
ZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0
YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXls
b2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJm
QXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9t
aXNlUmVqZWN0cyh0LCAiSW52YWxpZFN0YXRlRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Y3JlYXRlKG9wdGlvbnMpLCAiQXQgbGVhc3Qgb25lIGNyZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRy
eSBvZiB0aGUgZXhjbHVkZUNyZWRlbnRpYWxzIGxpc3QgaW4gdGhlIGF1dGhlbnRpY2F0b3IuIik7
CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZmlyc3QgZXhj
bHVkZSBjcmVkZW50aWFsIG1hdGNoZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwog
CkBAIC0xMjksOCArMTI5LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1
dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwg
c3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUs
IHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwg
dGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJyb3JP
bmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQor
ICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1h
bGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBk
dVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3Bv
bnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAg
ICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiSW52YWxpZFN0YXRlRXJyb3IiLCBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiQXQgbGVhc3Qgb25lIGNyZWRlbnRp
YWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNyZWRlbnRpYWxzIGxpc3QgaW4gdGhl
IGF1dGhlbnRpY2F0b3IuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0
ZV1dIHdpdGggc2Vjb25kIGV4Y2x1ZGUgY3JlZGVudGlhbCBtYXRjaGVkIGluIGEgbW9jayBoaWQg
YXV0aGVudGljYXRvci4iKTsKIApAQCAtMTUxLDggKzE1MSw4IEBACiAgICAgICAgICAgICB9CiAg
ICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5
bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVDb25kaXRpb25z
Tm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RT
YXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlz
ZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFz
ZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGlu
dGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0
YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9h
ZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVDb25kaXRpb25zTm90
U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRp
c2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmll
ZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0
XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIkludmFsaWRTdGF0ZUVy
cm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkF0IGxlYXN0IG9u
ZSBjcmVkZW50aWFsIG1hdGNoZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBs
aXN0IGluIHRoZSBhdXRoZW50aWNhdG9yLiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tjcmVhdGVdXSB3aXRoIGZpcnN0IGV4Y2x1ZGUgY3JlZGVudGlhbCBtYXRjaGVkIGluIGEg
bW9jayBoaWQgYXV0aGVudGljYXRvci4gVGVzdCBvZiB1c2VyIHByZXNlbmNlLiIpOwogPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS5odHRwcy5o
dG1sCmluZGV4IDQ2NDJhNWJhMGZiZTdhOGIzYzhhZGZmNTM5Njk5NTViMGM1ZDY2Y2IuLjVlOGY1
YjgxMmJlNTc2M2MzMWJjNWQyZGZjODk0YzA5NTBmNTc4OTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVy
ZS5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS5odHRwcy5odG1sCkBAIC01LDggKzUsOCBAQAog
PHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KICAg
ICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBp
ZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyB9KTsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJu
YWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyB9KTsKIAogICAgIHBy
b21pc2VfdGVzdChmdW5jdGlvbih0KSB7CiAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0
bWwKaW5kZXggNmE4YzM1ODEzZWUyYWQ3MjdiYmM1NjYxMWE4YjJjYjkwYWRiYWY2NC4uNTQ0NmY1
NTcwZjI5ZDUzNDZhZjc4N2NmNTY0YzkzZTU2NzBhZjcwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNz
LWhpZC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbApAQCAtNiw4ICs2
LDggQEAKIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy9jYm9yLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQ+CiAgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3Zl
cnJpZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgotICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1v
Y2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNn
IiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VC
YXNlNjRdIH0gfSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFs
cy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAi
cmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2
NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdIH0gfSk7CiAKICAgICBwcm9taXNlX3Rlc3Qo
dCA9PiB7CiAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3Mt
bG9jYWwuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1sb2NhbC5odHRwcy5odG1sCmluZGV4IGU1MWJh
NWZkZTZhOGVmNGY0OTA4NjdmYWJhZmM3YmJkNTcyZTRlZWUuLjA4OGU4NjMxOGQxYmU4YTA0NDU3
ZDQxMThiM2QxYWY4ODNkYzAyYzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1sb2NhbC5odHRwcy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1jcmVhdGUtc3VjY2Vzcy1sb2NhbC5odHRwcy5odG1sCkBAIC0xMCw4ICsxMCw4IEBACiAg
ICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlC
YXNlNjQoKTsKICAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0gYXdhaXQgY2FsY3VsYXRlQ3Jl
ZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOwogICAgICAgICAvLyBEZWZhdWx0IG1vY2sgY29u
ZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50
IGNvbmZpZ3VyYXRpb24uCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAg
ICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7Cisg
ICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oewogICAgICAgICAgICAgICAgIGxvY2Fs
OiB7CiAgICAgICAgICAgICAgICAgICAgIGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLAogICAg
ICAgICAgICAgICAgICAgICBhY2NlcHRBdHRlc3RhdGlvbjogdHJ1ZSwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUt
c3VjY2Vzcy1uZmMuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1uZmMuaHR0cHMuaHRtbAppbmRleCA4
ZDIyZTU0NGQ0YWI5NTA5OTUyNTdmYTZiOWUwZTVmMDJjODYxNTVkLi44MmQwNzA2MThiM2UwMzNj
MzQ4YTc3NDJjMTBhZjZlYzExYzY2MzU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbmZjLmh0dHBz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy5odG1sCkBAIC02LDggKzYsOCBAQAogPHNj
cmlwdCBzcmM9Ii4vcmVzb3VyY2VzL2Nib3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KICAgICAv
LyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBpZiB0
aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3ROZmND
dGFwVmVyc2lvbkJhc2U2NCwgdGVzdEdldEluZm9SZXNwb25zZUFwZHVCYXNlNjQsIHRlc3RDcmVh
dGlvbk1lc3NhZ2VBcGR1QmFzZTY0XSB9IH0pOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQor
ICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7
IG5mYzogeyBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdE5mY0N0YXBWZXJz
aW9uQmFzZTY0LCB0ZXN0R2V0SW5mb1Jlc3BvbnNlQXBkdUJhc2U2NCwgdGVzdENyZWF0aW9uTWVz
c2FnZUFwZHVCYXNlNjRdIH0gfSk7CiAKICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAg
IGNvbnN0IG9wdGlvbnMgPSB7CkBAIC03MSw4ICs3MSw4IEBACiAgICAgICAgICAgICB9CiAgICAg
ICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVz
dFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7IGVy
cm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0TmZjQ3RhcFZlcnNpb25CYXNlNjQs
IHRlc3RHZXRJbmZvUmVzcG9uc2VBcGR1QmFzZTY0LCB0ZXN0Q3JlYXRpb25NZXNzYWdlQXBkdUJh
c2U2NF0sIG11bHRpcGxlVGFnczogdHJ1ZSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVy
bmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0
TmZjQ3RhcFZlcnNpb25CYXNlNjQsIHRlc3RHZXRJbmZvUmVzcG9uc2VBcGR1QmFzZTY0LCB0ZXN0
Q3JlYXRpb25NZXNzYWdlQXBkdUJhc2U2NF0sIG11bHRpcGxlVGFnczogdHJ1ZSB9IH0pOwogICAg
ICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNy
ZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgY2hlY2tDdGFwTWFrZUNyZWRlbnRpYWxSZXN1bHQo
Y3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwpAQCAtOTUsOCArOTUsOCBAQAogICAgICAgICAgICAg
fQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAg
ICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5m
YzogeyBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdE5mY1UyZlZlcnNpb25C
YXNlNjQsIHRlc3RVMmZBcGR1SW5zTm90U3VwcG9ydGVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0
VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbih7IG5mYzogeyBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdE5mY1Uy
ZlZlcnNpb25CYXNlNjQsIHRlc3RVMmZBcGR1SW5zTm90U3VwcG9ydGVkT25seVJlc3BvbnNlQmFz
ZTY0LCB0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmln
YXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAg
ICAgICAgICAgIGNoZWNrVTJmTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVudGlhbCk7CiAgICAg
ICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLXUyZi5odHRwcy5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNz
LXUyZi5odHRwcy5odG1sCmluZGV4IDQ3ZDhiZDQ0OTQ3NWFkNDUzOWU3YTM5YWIxMmMzOWQyMzQ2
YzdhM2MuLmMyYmM4ZjUyNmI3NDAyMTFiMTk0OTczMDU3MDE1YjVkMTBhZTY1N2EgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1j
cmVhdGUtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtdTJmLmh0dHBzLmh0
bWwKQEAgLTIxLDggKzIxLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1
dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwg
c3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJh
c2U2NDogW3Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOworICAgICAgICBpZiAod2luZG93
LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNn
IiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJm
UmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50
aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIGNo
ZWNrVTJmTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwpAQCAt
NDUsOCArNDUsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGlj
YXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFn
ZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBb
dGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZSZWdpc3RlclJl
c3BvbnNlXSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAg
IGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNV
MmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25z
ZUJhc2U2NCwgdGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7
CiAgICAgICAgICAgICBjaGVja1UyZk1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwpOwog
ICAgICAgICB9KTsKQEAgLTY5LDggKzY5LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsK
IAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVy
LnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJy
ZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwg
cGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0
ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlJlZ2lzdGVyUmVz
cG9uc2VdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAg
aW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsg
c3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1Uy
ZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNl
QmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlJl
Z2lzdGVyUmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlh
bHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBjaGVj
a1UyZk1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKQEAgLTky
LDggKzkyLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0
aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6
ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rl
c3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUy
ZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmUmVn
aXN0ZXJSZXNwb25zZV0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAg
ICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7
IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2Vz
cyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVDb25kaXRpb25zTm90
U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRp
c2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOwog
ICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVu
KGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgY2hlY2tVMmZNYWtlQ3JlZGVudGlhbFJlc3Vs
dChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7CkBAIC0xMTYsOCArMTE2LDggQEAKICAgICAgICAg
ICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24o
eyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nl
c3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZSZWdpc3RlclJlc3BvbnNl
XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVy
bmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdl
OiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRy
dWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKICAgICAg
ICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVk
ZW50aWFsID0+IHsKICAgICAgICAgICAgIGNoZWNrVTJmTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3Jl
ZGVudGlhbCk7CiAgICAgICAgIH0pOwpAQCAtMTQwLDggKzE0MCw4IEBACiAgICAgICAgICAgICB9
CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlk
OiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwg
aXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9
KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMu
c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJl
cXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBw
YXlsb2FkQmFzZTY0OiBbdGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJl
dHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlh
bCA9PiB7CiAgICAgICAgICAgICBjaGVja1UyZk1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRp
YWwsIGZhbHNlKTsKICAgICAgICAgfSk7CkBAIC0xNjQsOCArMTY0LDggQEAKICAgICAgICAgICAg
IH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
ICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBo
aWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3Mi
LCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9
IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFs
cy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAi
cmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUs
IHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKICAgICAgICAg
cmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50
aWFsID0+IHsKICAgICAgICAgICAgIGNoZWNrVTJmTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVu
dGlhbCwgZmFsc2UpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQtc2lsZW50
Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1sCmluZGV4IGU4NWMyYzg0
YWY3MjJkNzUxOWM1NWVjN2M1Y2U2YzUwMDYzNmFjMjAuLjM4ZjQwNzQ5ZTk1YWUwNWJjOTI3ZjFk
Y2JiM2NiOWUxZDkyMWU3NzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQtc2lsZW50Lmh0dHBzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWdldC1mYWlsdXJlLWhpZC1zaWxlbnQuaHR0cHMuaHRtbApAQCAtMTIsOCArMTIsOCBAQAog
ICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBz
dWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0
OiBbdGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJy
ZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5
bG9hZEJhc2U2NDogW3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0pOwogICAgICAg
ICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5j
cmVkZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0s
ICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1hbGljaW91cyBwYXlsb2FkIGlu
IGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtMjYsOCArMjYsOCBAQAogICAgICAg
ICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlv
bih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFn
ZTogIm1zZyIsIGVycm9yOiAidW5zdXBwb3J0ZWQtb3B0aW9ucyIgfSB9KTsKKyAgICAgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFn
ZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAidW5zdXBwb3J0ZWQtb3B0aW9u
cyIgfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJy
b3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVk
IG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCB1bnN1
cHBvcnRlZCBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtMzks
OCArMzksOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRp
b25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTog
InJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBw
YXlsb2FkQmFzZTY0OiBbdGVzdEN0YXBFcnJJbnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNlQmFzZTY0
XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVy
bmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVy
ZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6
ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3RhcEVyckludmFsaWRD
cmVkZW50aWFsUmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVq
ZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRp
b25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRp
YWwncyBbW2dldF1dIHdpdGggaW52YWxpZCBjcmVkZW50aWFsIGluIGEgbW9jayBoaWQgYXV0aGVu
dGljYXRvci4iKTsKIApAQCAtNTIsOCArNTIsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9
OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6
IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAi
bWFsaWNpb3VzLXBheWxvYWQiLCBjYW5Eb3duZ3JhZGU6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0
ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsg
c3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXls
b2FkIiwgY2FuRG93bmdyYWRlOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEN0YXBFcnJJbnZh
bGlkQ3JlZGVudGlhbFJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlz
ZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQo
b3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVk
ZW50aWFsJ3MgW1tnZXRdXSB3aXRoIGF1dGhlbnRpY2F0b3IgZG93bmdyYWRlIGluIGEgbW9jayBo
aWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtNjYsOCArNjYsOCBAQAogICAgICAgICAgICAgfQog
ICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVu
dEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIs
IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBjYW5Eb3duZ3JhZGU6IHRydWUsIHBheWxvYWRC
YXNlNjQ6IFt0ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9uc2VCYXNlNjRdIH0gfSk7
CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNl
dE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVl
LCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGlj
aW91cy1wYXlsb2FkIiwgY2FuRG93bmdyYWRlOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEN0
YXBFcnJJbnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1
cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50
aWFscy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIGF1dGhlbnRpY2F0b3IgZG93bmdyYWRlIGlu
IGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gMiIpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZh
aWx1cmUtaGlkLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLmh0dHBzLmh0bWwKaW5kZXggNTQ4NWYz
NzBkNjc5NzFlMjIzNWQ4ZDlhODcyZWFiMzRmOWM1NjZmNy4uMDAyMmVhOTBiMDc2YWZlMmM0NjRi
Zjc2ZjI1ZDQ5YjUzY2E0ODFiOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC5odHRwcy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1n
ZXQtZmFpbHVyZS1oaWQuaHR0cHMuaHRtbApAQCAtNSw4ICs1LDggQEAKIDxzY3JpcHQgc3JjPSIu
L3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAgICAgLy8gRGVmYXVsdCBt
b2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRp
ZmZlcmVudCBjb25maWd1cmF0aW9uLgotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAg
ICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlk
OiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMt
cGF5bG9hZCIgfSB9KTsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJu
YWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6
ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiB9
IH0pOwogCiAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICBjb25zdCBvcHRpb25zID0g
ewpAQCAtMzEsOCArMzEsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0
aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBz
dWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0
OiBbdGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJt
c2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3REdW1t
eU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVj
dHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyks
ICJVbmtub3duIGludGVybmFsIGVycm9yLiBFcnJvciBjb2RlOiAyNTUiKTsKICAgICB9LCAiUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtYWxpY2lvdXMgcGF5bG9hZCBpbiBhIG1v
Y2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTQ0LDggKzQ0LDggQEAKICAgICAgICAgICAg
IH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
ICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBo
aWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInVuc3VwcG9y
dGVkLW9wdGlvbnMiIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAg
ICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBo
aWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInVuc3VwcG9y
dGVkLW9wdGlvbnMiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5r
bm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIlVua25vd24g
aW50ZXJuYWwgZXJyb3IuIEVycm9yIGNvZGU6IDQzIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2dldF1dIHdpdGggdW5zdXBwb3J0ZWQgb3B0aW9ucyBpbiBhIG1vY2sgaGlkIGF1
dGhlbnRpY2F0b3IuIik7CiAKQEAgLTU2LDggKzU2LDggQEAKICAgICAgICAgICAgIH0KICAgICAg
ICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3Rh
Z2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2Fk
IiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENyZWRlbnRpYWxSZXNwb25zZUJh
c2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBp
bnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBz
dGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxv
YWQiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEN0YXBFcnJJbnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNl
QmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25F
cnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJVbmtub3duIGludGVy
bmFsIGVycm9yLiBFcnJvciBjb2RlOiAzNCIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tnZXRdXSB3aXRoIGF1dGhlbnRpY2F0b3IgZG93bmdyYWRlIGZhaWxlZCBpbiBhIG1vY2sg
aGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTY5LDggKzY5LDggQEAKICAgICAgICAgICAgIH0K
ICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6
IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1w
YXlsb2FkIiwgY2FuRG93bmdyYWRlOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEN0YXBFcnJJ
bnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93
LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNn
IiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGNhbkRvd25ncmFkZTogdHJ1ZSwgcGF5bG9h
ZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2NF0gfSB9
KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RTdXBwb3J0ZWRFcnJvciIs
IG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJDYW5ub3QgY29udmVydCB0aGUg
cmVxdWVzdCB0byBVMkYgY29tbWFuZC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdz
IFtbZ2V0XV0gd2l0aCBhdXRoZW50aWNhdG9yIGRvd25ncmFkZSBzdWNjZWVkZWQgYW5kIHRoZW4g
VTJGIGZhaWxlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIDIiKTsKIDwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWdldC1mYWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxvY2Fs
LXNpbGVudC5odHRwcy5odG1sCmluZGV4IDg0M2JhODZmMWY5YTdjZGI5NGFiYmE2YzY3NDNjMDJl
OWMzM2RmNWEuLmYwMmMyNTVlODgyNDA0NzRmMTIyMmMxMmIwNjVjNmI5ZjhlOTlmMzIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1nZXQtZmFpbHVyZS1sb2NhbC1zaWxlbnQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwt
c2lsZW50Lmh0dHBzLmh0bWwKQEAgLTksOCArOSw4IEBACiAgICAgICAgIGNvbnN0IHByaXZhdGVL
ZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKICAgICAgICAgY29u
c3QgY3JlZGVudGlhbElEID0gYXdhaXQgY2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlC
YXNlNjQpOwogICAgICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVl
ZCB0byBvdmVycmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2Vi
QXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGxv
Y2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZh
bHNlLCBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0OiB1c2VyaGFuZGxlQmFzZTY0IH0gfSk7Cisg
ICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBs
b2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0dGVzdGF0aW9uOiBm
YWxzZSwgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDogdXNlcmhhbmRsZUJhc2U2NCB9IH0pOwog
CiAgICAgICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMg
PSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC5o
dHRwcy5odG1sCmluZGV4IGVhMGUyYTQ2YmYwNTFhMGZlNzhhYWYyNDBjZjcyOGM3YTdmNDQyZGEu
LjNlNGY0OTkwNmMzMmU0ZTg5NTI1OGY2NjgzYTBmYmVhNDk5Nzc5ZWYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFp
bHVyZS1sb2NhbC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sCkBAIC05
LDggKzksOCBAQAogICAgICAgICBjb25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQgZ2VuZXJh
dGVQcml2YXRlS2V5QmFzZTY0KCk7CiAgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJRCA9IGF3YWl0
IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChwcml2YXRlS2V5QmFzZTY0KTsKICAgICAgICAgLy8gRGVm
YXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBu
ZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0
dGVzdGF0aW9uOiBmYWxzZSwgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDogdXNlcmhhbmRsZUJh
c2U2NCB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGlu
dGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbG9jYWw6IHsg
YWNjZXB0QXV0aGVudGljYXRpb246IGZhbHNlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UsIHBy
ZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ6IHVzZXJoYW5kbGVCYXNlNjQgfSB9KTsKIAogICAgICAg
ICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWdldC1mYWlsdXJlLW5mYy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLW5mYy5odHRwcy5odG1sCmlu
ZGV4IGRiNjQ4NzRmZmY1ZDgxZmU3YjYxNDQzOWY3MjYyOWE5OWQwMDI1MTMuLjI3NWVlNjZlMjYy
ODc5MTdhYWRlOWNlNTNlNGU5Mjc0N2JkYTYwNGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1uZmMuaHR0
cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwKQEAgLTUsOCArNSw4IEBACiA8c2Ny
aXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogICAgIC8v
IERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRo
ZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KLSAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbih7IG5mYzogeyBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiB9IH0pOworICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiB9IH0p
OwogCiAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICBjb25zdCBvcHRpb25zID0gewpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWdldC1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYtc2ls
ZW50Lmh0dHBzLmh0bWwKaW5kZXggOGE3Y2Q4YTViYjkxZDgxYjE0NzZhZGQ3YzQyZDAxMzYzYjBk
NmM3YS4uYWU1YmJkZDNlMzhiNGRkZjRiYjA2NDNlOWZkNTAzYWY3OThkMjNiYyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdl
dC1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLXNpbGVudC5o
dHRwcy5odG1sCkBAIC0xMyw4ICsxMyw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAK
LSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1
ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxp
Y2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVO
b0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVy
bmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIs
IHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVl
LCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9
IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIs
IG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0
LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1hbGZvcm1l
ZCBzaWduIHJlc3BvbnNlIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtMjcs
OCArMjcsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRp
b25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTog
InJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBp
c1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3Bv
bnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAg
ICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2ls
ZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNn
IiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0
OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAgICAgICAg
IHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwg
IlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbm8gbWF0Y2hlZCBhbGxvdyBjcmVk
ZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTQxLDggKzQxLDgg
QEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0Nv
bmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0
Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRy
dWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2
NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsg
c3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXls
b2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9u
bHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjRd
IH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9y
IiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBv
dXQuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbm8gbWF0
Y2hlZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIDIiKTsK
IDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLXUyZi5odHRwcy5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLXUy
Zi5odHRwcy5odG1sCmluZGV4IDY0OTEzNzgyODRlYjY3YTE5ZTdkNjA1ZTY4NzAwMGRhNjQxZWJk
ZTYuLjVkMWQzMDBlNjg4NTY4NDQ5ZDFkZjNlODQ2ZmQ2ZTIyYWQ4YTI0MDIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQt
ZmFpbHVyZS11MmYuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLmh0dHBzLmh0bWwKQEAgLTEy
LDggKzEyLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0
aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6
ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRC
YXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAg
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwg
c3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUs
IHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjRdIH0g
fSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIkNvdWxkbid0IHBhcnNlIHRoZSBVMkYg
c2lnbiByZXNwb25zZS4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0g
d2l0aCBtYWxmb3JtZWQgc2lnbiByZXNwb25zZSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3Iu
Iik7CiAKQEAgLTI1LDggKzI1LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdl
YkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0
Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRy
dWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2
NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRl
cm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFn
ZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQi
LCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJl
c3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5v
dEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJObyBj
cmVkZW50aWFscyBmcm9tIHRoZSBhbGxvd0NyZWRlbnRpYWxzIGxpc3QgaXMgZm91bmQgaW4gdGhl
IGF1dGhlbnRpY2F0b3IuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1d
IHdpdGggbm8gbWF0Y2hlZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRp
Y2F0b3IuIik7CiAKQEAgLTM4LDggKzM4LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsK
IAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVy
LnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJy
ZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNV
MmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25z
ZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7Cisg
ICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0
Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRy
dWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2
NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAgICAgICAg
IHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk5vIGNyZWRlbnRpYWxzIGZyb20gdGhlIGFsbG93Q3Jl
ZGVudGlhbHMgbGlzdCBpcyBmb3VuZCBpbiB0aGUgYXV0aGVudGljYXRvci4iKTsKICAgICB9LCAi
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBubyBtYXRjaGVkIGFsbG93IGNyZWRl
bnRpYWxzIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gMiIpOwogCkBAIC01Myw4ICs1Myw4
IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tD
b25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwg
ZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBb
dGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdE
YXRhT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6
ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUy
ZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25s
eVJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwg
Ik5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJO
byBjcmVkZW50aWFscyBmcm9tIHRoZSBhbGxvd0NyZWRlbnRpYWxzIGxpc3QgaXMgZm91bmQgaW4g
dGhlIGF1dGhlbnRpY2F0b3IuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dl
dF1dIHdpdGggbm8gbWF0Y2hlZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhl
bnRpY2F0b3IuIChBcHBJRCkiKTsKIApAQCAtNjcsOCArNjcsOCBAQAogICAgICAgICAgICAgfQog
ICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBh
eWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRh
T25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2
NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3Jv
bmdEYXRhT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVy
bmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJy
b3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVz
dFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRh
T25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2
NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAgICAgICAg
IHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk5vIGNyZWRlbnRpYWxzIGZyb20gdGhlIGFsbG93Q3Jl
ZGVudGlhbHMgbGlzdCBpcyBmb3VuZCBpbiB0aGUgYXV0aGVudGljYXRvci4iKTsKICAgICB9LCAi
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBubyBtYXRjaGVkIGFsbG93IGNyZWRl
bnRpYWxzIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gMiAoQXBwSUQpIik7CiA8L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1nZXQtZmFpbHVyZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLmh0dHBzLmh0bWwKaW5k
ZXggZTJmOTVkNjdkOGQ4Zjc0ZDU5NjlmMzU4ZGFjZGZlMWEzMzViNGQyMi4uY2YxOGZmNzdlZjMz
ZmEzMjQzMjBkM2M1YjNhYzY0ZGE5ZWE0MjgzMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLmh0dHBzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWdldC1mYWlsdXJlLmh0dHBzLmh0bWwKQEAgLTUsOCArNSw4IEBACiA8c2NyaXB0IHNyYz0i
Li9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogICAgIC8vIERlZmF1bHQg
bW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBk
aWZmZXJlbnQgY29uZmlndXJhdGlvbi4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IH0p
OworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IH0pOwogCiAgICAgcHJvbWlzZV90ZXN0KHQg
PT4gewogICAgICAgICBjb25zdCBvcHRpb25zID0gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWhpZC5o
dHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWdldC1zdWNjZXNzLWhpZC5odHRwcy5odG1sCmluZGV4IGQ5YjIyYjQyYTlkNzYyMDAy
MTQxMjEwYzQ1ZDY4Y2ZhNmQxYjk1MzYuLjBjZjAzZTdkZDZlOTE5MGI3ZjU2ZjdiOTBlYzkzOWMw
ZTJhZGVkYjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3Mt
aGlkLmh0dHBzLmh0bWwKQEAgLTUsOCArNSw4IEBACiA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMv
dXRpbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1
cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29u
ZmlndXJhdGlvbi4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5u
ZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTog
InJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNl
NjQ6IFt0ZXN0QXNzZXJ0aW9uTWVzc2FnZUJhc2U2NF0gfSB9KTsKKyAgICBpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJv
cjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEFzc2VydGlvbk1lc3NhZ2VCYXNlNjRd
IH0gfSk7CiAKICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAgIGNvbnN0IG9wdGlvbnMg
PSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1sb2NhbC5o
dHRwcy5odG1sCmluZGV4IGUxODIwOTQ4Zjc3ZTViN2Y4NDQzOThlOWQwZmY2NzA2YzU4ZWY3NDMu
LjkzNjBhZmI4ZjU1ODI3NTg0M2Y5MDAzNDU3YzcwZTg3YzQzNzZjYmYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3Vj
Y2Vzcy1sb2NhbC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1sb2NhbC5odHRwcy5odG1sCkBAIC05
LDggKzksOCBAQAogICAgICAgICBjb25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQgZ2VuZXJh
dGVQcml2YXRlS2V5QmFzZTY0KCk7CiAgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJRCA9IGF3YWl0
IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChwcml2YXRlS2V5QmFzZTY0KTsKICAgICAgICAgLy8gRGVm
YXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBu
ZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0QXR0
ZXN0YXRpb246IGZhbHNlLCBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0OiB1c2VyaGFuZGxlQmFz
ZTY0IH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50
ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBsb2NhbDogeyBh
Y2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlLCBwcmVm
ZXJyZWRVc2VyaGFuZGxlQmFzZTY0OiB1c2VyaGFuZGxlQmFzZTY0IH0gfSk7CiAKICAgICAgICAg
ZnVuY3Rpb24gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1z
dWNjZXNzLW5mYy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLW5mYy5odHRwcy5odG1sCmluZGV4IGZjN2M2
YWEzNTVlOGNmZGJiNTQzM2RlMWRiY2U1NWViNWM1ZTY0MTMuLmNjMDUwZGExYzNkMTM0NTExZjFl
MTg3YTc2YWM1NjM5YjE5ZDQxODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1uZmMuaHR0cHMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Z2V0LXN1Y2Nlc3MtbmZjLmh0dHBzLmh0bWwKQEAgLTUsOCArNSw4IEBACiA8c2NyaXB0IHNyYz0i
Li9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogICAgIC8vIERlZmF1bHQg
bW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBk
aWZmZXJlbnQgY29uZmlndXJhdGlvbi4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5m
YzogeyBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdE5mY0N0YXBWZXJzaW9u
QmFzZTY0LCB0ZXN0R2V0SW5mb1Jlc3BvbnNlQXBkdUJhc2U2NCwgdGVzdEFzc2VydGlvbk1lc3Nh
Z2VBcGR1QmFzZTY0XSB9IH0pOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBp
bnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IG5mYzogeyBl
cnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdE5mY0N0YXBWZXJzaW9uQmFzZTY0
LCB0ZXN0R2V0SW5mb1Jlc3BvbnNlQXBkdUJhc2U2NCwgdGVzdEFzc2VydGlvbk1lc3NhZ2VBcGR1
QmFzZTY0XSB9IH0pOwogCiAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICBjb25zdCBv
cHRpb25zID0gewpAQCAtMzAsOCArMzAsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9Owog
Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIu
c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogInN1
Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdE5mY1UyZlZlcnNpb25CYXNlNjQsIHRlc3RVMmZB
cGR1SW5zTm90U3VwcG9ydGVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNl
XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVy
bmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9y
OiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0TmZjVTJmVmVyc2lvbkJhc2U2NCwgdGVz
dFUyZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZTaWduUmVz
cG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9w
dGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tVMmZH
ZXRBc3NlcnRpb25SZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1z
dWNjZXNzLXUyZi5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLXUyZi5odHRwcy5odG1sCmluZGV4IDk1YjJk
MWIyZTE5NGVmMmQzZTgxYzQ4NjllOTQ3NWZjZjBkNDNkN2UuLjBmMDAwOGFiNTQzZjVhZDc1YmNj
NTc4NDNjZGZhNTVkOWNiNDVmYTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Z2V0LXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWwKQEAgLTEzLDggKzEzLDggQEAKICAgICAgICAgICAg
IH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
ICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBo
aWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3Mi
LCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7
CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNl
dE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5
bG9hZEJhc2U2NDogW3Rlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAg
ICAgICAgICAgICByZXR1cm4gY2hlY2tVMmZHZXRBc3NlcnRpb25SZXN1bHQoY3JlZGVudGlhbCk7
CiAgICAgICAgIH0pOwpAQCAtMjksOCArMjksOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9
OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTog
InJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVl
LCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQs
IHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
KQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
InN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdE
YXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOwogICAgICAg
ICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRp
YWwgPT4gewogICAgICAgICAgICAgcmV0dXJuIGNoZWNrVTJmR2V0QXNzZXJ0aW9uUmVzdWx0KGNy
ZWRlbnRpYWwpOwogICAgICAgICB9KTsKQEAgLTQ1LDggKzQ1LDggQEAKICAgICAgICAgICAgIH0K
ICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6
IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBp
c1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlz
ZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVk
T25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOworICAgICAgICBp
ZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0
YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6
IFt0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRl
c3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUy
ZlNpZ25SZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIHJldHVybiBj
aGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7CkBAIC02
Myw4ICs2Myw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNh
dGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdl
OiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0
ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJz
dWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmU2lnblJlc3BvbnNl
XSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25z
KS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgcmV0dXJuIGNoZWNrVTJmR2V0QXNz
ZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKQEAgLTgwLDggKzgwLDggQEAK
ICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJv
cjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZTaWduUmVz
cG9uc2VdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAg
aW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsg
c3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1Uy
ZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CiAgICAg
ICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVu
dGlhbCA9PiB7CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tVMmZHZXRBc3NlcnRpb25SZXN1bHQo
Y3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwpAQCAtOTcsOCArOTcsOCBAQAogICAgICAgICAgICAg
fQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAg
ICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhp
ZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIs
IGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVz
cG9uc2VCYXNlNjQsIHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJt
c2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RV
MmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9
IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50
aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgcmV0dXJuIGNoZWNrVTJmR2V0QXNzZXJ0
aW9uUmVzdWx0KGNyZWRlbnRpYWwsIHRydWUpOwogICAgICAgICB9KTsKQEAgLTExNSw4ICsxMTUs
OCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2Nr
Q29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIs
IGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFw
ZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7
CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNl
dE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5
bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0
VTJmU2lnblJlc3BvbnNlXSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgcmV0dXJu
IGNoZWNrVTJmR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwsIHRydWUsICI3ZWFiYzVjYzMy
NTFiZGM1OTExNWVmODdiNWY3ZWU3NGNiMDM3NDdlMzliYTgzNDE3NDg1NjVjYzEyOWMwNzE5Iik7
CiAgICAgICAgIH0pOwpAQCAtMTMyLDggKzEzMiw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAg
IH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdl
OiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRy
dWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2
NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZTaWduUmVz
cG9uc2VdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAg
aW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsg
c3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1Uy
ZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNl
QmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNp
Z25SZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5n
ZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIHJldHVybiBjaGVj
a1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7CkBAIC0xNDks
OCArMTQ5LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0
aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6
ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rl
c3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0
YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNl
NjQsIHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJv
cjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3Jv
bmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25z
ZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZT
aWduUmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Z2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICByZXR1cm4gY2hl
Y2tVMmZHZXRBc3NlcnRpb25SZXN1bHQoY3JlZGVudGlhbCwgdHJ1ZSk7CiAgICAgICAgIH0pOwpA
QCAtMTY2LDggKzE2Niw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRo
ZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1
YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgY2FuRG93bmdyYWRlOiB0cnVlLCBwYXls
b2FkQmFzZTY0OiBbdGVzdEN0YXBFcnJJbnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNlQmFzZTY0LCB0
ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJz
dWNjZXNzIiwgY2FuRG93bmdyYWRlOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEN0YXBFcnJJ
bnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0p
OwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVu
KGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgcmV0dXJuIGNoZWNrVTJmR2V0QXNzZXJ0aW9u
UmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKQEAgLTE4Myw4ICsxODMsOCBAQAogICAg
ICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAi
c3VjY2VzcyIsIGNhbkRvd25ncmFkZTogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJy
SW52YWxpZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5
UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6
ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBjYW5Eb3duZ3JhZGU6IHRydWUsIHBheWxvYWRCYXNl
NjQ6IFt0ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZB
cGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0p
OwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVu
KGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgcmV0dXJuIGNoZWNrVTJmR2V0QXNzZXJ0aW9u
UmVzdWx0KGNyZWRlbnRpYWwsIHRydWUsICI3ZWFiYzVjYzMyNTFiZGM1OTExNWVmODdiNWY3ZWU3
NGNiMDM3NDdlMzliYTgzNDE3NDg1NjVjYzEyOWMwNzE5Iik7CiAgICAgICAgIH0pOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1pcC1hZGRyZXNzLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9yZXNvdXJjZXMvcHVibGljLWtleS1jcmVkZW50aWFsLWlwLWFkZHJlc3MuaHR0cHMu
aHRtbAppbmRleCA2ZGUzYTk0MzUwNGJmNGZmOTkyM2Y3ODQ2YWRkODc1NDM0NjhkMGNkLi44MTE4
M2MwY2RjY2ZhZmViMGFiNWZmNDNjZDVjNzVjM2JiMWEyYmYwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvcHVibGljLWtleS1jcmVkZW50aWFsLWlw
LWFkZHJlc3MuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9y
ZXNvdXJjZXMvcHVibGljLWtleS1jcmVkZW50aWFsLWlwLWFkZHJlc3MuaHR0cHMuaHRtbApAQCAt
NSw4ICs1LDggQEAKIDxzY3JpcHQgc3JjPSJ1dGlsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAg
ICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUg
aWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgotICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25m
aWd1cmF0aW9uKHsgfSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVy
bmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgfSk7CiAKICAgICBw
cm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewogICAgICAgICBjb25zdCBvcHRpb25zID0gewo=
</data>
<flag name="review"
          id="396304"
          type_id="1"
          status="+"
          setter="cdumez"
    />
    <flag name="commit-queue"
          id="396308"
          type_id="3"
          status="-"
          setter="cdumez"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380572</attachid>
            <date>2019-10-09 14:53:42 -0700</date>
            <delta_ts>2019-10-09 16:03:15 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-202560-20191009145341.patch</filename>
            <type>text/plain</type>
            <size>195047</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwOTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzNlZDcxNTI3MTBkMjU0
YmUxNDNkMjUwYTgzYjkyMzlhNWE1YTRhYy4uZDg2MDZhOWI3Zjc2MWJkZWMxOGZiZjYxMjYyYTUz
NTI2MWJhOTJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE5LTEwLTA4ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBNb3Zl
IHRoZSBtb2NrIHRlc3RpbmcgZW50cmFuY2UgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NjAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzU1OTczNzkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgVGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1v
Y2tDb25maWd1cmF0aW9uIHRvCisgICAgICAgIEludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uIGFuZCByZW1vdmVzIHRoZSBvbGQKKyAgICAgICAgZW50cmFuY2Uu
IFRoZSBwdXJwb3NlIG9mIHRoaXMgcGF0Y2ggaXMgdG8gYWxsb3cgQVBJIHRlc3RzIHRvIHVzZQor
ICAgICAgICB0aGUgc2FtZSBtb2NrIGluZnJhc3RydWN0dXJlIHRoYXQgaXMgdXNlZCBieSBsYXlv
dXQgdGVzdHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IHVwZGF0ZXMgb24g
ZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9QdWJs
aWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmg6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24pOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbjo6TG9jYWxDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TG9jYWxD
b25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENv
bmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uOjpOZmNDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29u
ZmlndXJhdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIHRlc3Rp
bmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGw6IEFkZGVkLgorCiAyMDE5
LTEwLTA5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXSBXYXlsYW5kOiBkbyBub3QgdXNlIEVHTF9QTEFURk9STV9XQVlMQU5EX0tIUiB3
aXRoIGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiMjhmY2I2YmIwOTE2M2Q1
NDMzNGEzMjRlNjU3MWFmNWIwYzk5NWE5Li41MzBmYjc1NmU3ZDM0NjYyM2NmNDFmYjlkNGM3M2Zm
MDMwMTkyYTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE5LTEwLTA4ICBKaWV3ZW4g
VGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBNb3ZlIHRo
ZSBtb2NrIHRlc3RpbmcgZW50cmFuY2UgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NjAKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzU1OTczNzkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAg
IChXS1dlYnNpdGVEYXRhU3RvcmVTZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
b3JUcmFuc3BvcnRTZXJ2aWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvclRy
YW5zcG9ydFNlcnZpY2U6OmNyZWF0ZU1vY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tBdXRoZW50aWNhdG9yTWFuYWdlcjo6TW9ja0F1dGhl
bnRpY2F0b3JNYW5hZ2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
TW9jay9Nb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok1vY2tIaWRDb25uZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKFdlYktpdDo6TW9ja0hpZENv
bm5lY3Rpb246OnJlZ2lzdGVyRGF0YVJlY2VpdmVkQ2FsbGJhY2tJbnRlcm5hbCk6CisgICAgICAg
IChXZWJLaXQ6Ok1vY2tIaWRDb25uZWN0aW9uOjpwYXJzZVJlcXVlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpNb2NrSGlkQ29ubmVjdGlvbjo6ZmVlZFJlcG9ydHMpOgorICAgICAgICAoV2ViS2l0OjpN
b2NrSGlkQ29ubmVjdGlvbjo6c2hvdWxkQ29udGludWVGZWVkUmVwb3J0cyk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkU2VydmljZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tIaWRTZXJ2aWNlOjpNb2NrSGlkU2VydmljZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZFNlcnZpY2Uu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxD
b25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2sv
TW9ja0xvY2FsQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6TW9ja0xvY2FsQ29ubmVj
dGlvbjo6TW9ja0xvY2FsQ29ubmVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL01vY2svTW9ja0xvY2FsU2VydmljZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbFNlcnZpY2UubW06CisgICAgICAgIChXZWJL
aXQ6Ok1vY2tMb2NhbFNlcnZpY2U6Ok1vY2tMb2NhbFNlcnZpY2UpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja05mY1NlcnZpY2UubW06CisgICAg
ICAgIChXZWJLaXQ6Ok1vY2tOZmNTZXJ2aWNlOjpNb2NrTmZjU2VydmljZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok1vY2tOZmNTZXJ2aWNlOjpwbGF0Zm9ybVN0YXJ0RGlzY292ZXJ5KToKKyAgICAgICAg
KFdlYktpdDo6TW9ja05mY1NlcnZpY2U6OmRldGVjdFRhZ3MgY29uc3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFdlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21l
Q2xpZW50OjpzZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorCiAyMDE5LTEw
LTA5ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
dGVzdFJ1bm5lci5zZXRXZWJSVENVbmlmaWVkUGxhbkVuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGVmNDM0MGE2MjgxYjQzYWU1
OWY1NjU5MzYyNDZlMmMzMjMzMjhlOTYuLmYzMjA4NTVhNTNiNjg4YmUzYzMwOTc2MTg4ODNjNjMx
NTA4NGZhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdApAQCAtMTA4OSw2ICsxMDg5LDcgQEAgJChQUk9KRUNUX0RJUikvdGVzdGluZy9Nb2Nr
UGF5bWVudEFkZHJlc3MuaWRsCiAkKFBST0pFQ1RfRElSKS90ZXN0aW5nL01vY2tQYXltZW50Q29u
dGFjdEZpZWxkcy5pZGwKICQoUFJPSkVDVF9ESVIpL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGlu
YXRvci5pZGwKICQoUFJPSkVDVF9ESVIpL3Rlc3RpbmcvTW9ja1BheW1lbnRFcnJvci5pZGwKKyQo
UFJPSkVDVF9ESVIpL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5p
ZGwKICQoUFJPSkVDVF9ESVIpL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwKICQo
UFJPSkVDVF9ESVIpL3Rlc3RpbmcvVHlwZUNvbnZlcnNpb25zLmlkbAogJChQUk9KRUNUX0RJUikv
d29ya2Vycy9BYnN0cmFjdFdvcmtlci5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggMDkwOWQ3YjFmYmZkODUyZDI2YmZiMWJmNWIx
Y2MxMzQ2OTI5YjRkOC4uMTYyZDQ0ZDg0OTMzMTU1YzAxMDY1ODE2MjY1YThiNDc1NDJjMDcwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QK
QEAgLTEwNTksNiArMTA1OSw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTW9ja1BheW1lbnRDb29yZGluYXRvci5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01vY2tQYXltZW50
RXJyb3IuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U01vY2tQYXltZW50RXJyb3IuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmNwcAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTTW91c2VFdmVudC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTTW91c2VFdmVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU01vdXNlRXZlbnRJbml0LmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKaW5kZXggYzBhNGYwMDc0ZDFhNjJhNTdiNWNkYzhjNDRkZjBmN2JmMjViNDIx
NS4uOGU3N2U2ZDBmYTU2ZmExMzBhYjdkOGIyNmY0YmEwZTQ4ZWNlY2NlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMDc2LDYgKzEwNzYsNyBAQCBKU19CSU5ESU5HX0lETFMg
PSBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL01vY2tQYXltZW50Q29udGFjdEZpZWxkcy5pZGwg
XAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS90ZXN0aW5nL01vY2tQYXltZW50RXJyb3IuaWRsIFwKKyAgICAkKFdlYkNv
cmUpL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGwgXAogICAg
ICQoV2ViQ29yZSkvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbCBcCiAgICAgJChX
ZWJDb3JlKS90ZXN0aW5nL1R5cGVDb252ZXJzaW9ucy5pZGwgXAogICAgICQoV2ViQ29yZSkvd29y
a2Vycy9BYnN0cmFjdFdvcmtlci5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnMuaAppbmRleCAzNzJkZjFiOTRlOGJmNjQwMjMzMGU1NDVlZDQ3NTY4MGI3NDIzZGE1Li5k
OGM3YmJiM2M1ZDc5MjdmOTE1Y2Y0ZWU2NzIwZDI4ZGZjMGM4YzM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNy
ZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIlB1
YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiUHVibGljS2V5Q3JlZGVu
dGlhbFR5cGUuaCIKICNpbmNsdWRlICJVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQuaCIKLSNp
bmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2EzYTliZGFlZjg3Mzk5YzA4ZjliM2ZiMzI3
ZjBmNzVjODQ5NGU0Yy4uZTM3M2M4MTlhOWJkNTMzYWExZDExNzcxZWJhM2E0ODBmM2YzOWZiOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTczOCw2ICsxNzM4LDEwIEBACiAJCTU3MTUyQjZFMjFDRDk5NUQwMDBDMzdDQSAvKiBV
MmZDb21tYW5kQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3MTUyQjZDMjFDRDk5NUMwMDBDMzdDQSAvKiBVMmZDb21tYW5kQ29uc3Ry
dWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1NzE1MkI3QzIxREQ4QkExMDAwQzM3Q0EgLyogVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTUyQjdBMjFERDhC
QTEwMDBDMzdDQSAvKiBVMmZSZXNwb25zZUNvbnZlcnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3MTUyQjgwMjFEREE1ODEwMDBDMzdDQSAv
KiBXZWJBdXRoZW50aWNhdGlvblV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NzE1MkI3RTIxRERBNTgxMDAwQzM3Q0EgLyogV2ViQXV0aGVudGlj
YXRpb25VdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTU3MTU2MTBCMjM0QzFCNDkwMDhGQzdBQiAvKiBNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzE1NjEwODIzNEMxQjMxMDA4RkM3QUIgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbi5oICovOyB9OworCQk1NzE1NjEwQzIzNEMxQ0ExMDA4RkM3QUIgLyogTW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTcxNTYxMDgyMzRDMUIzMTAwOEZDN0FCIC8qIE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk1NzE1NjExNDIzNEM3RkQ2MDA4RkM3QUIgLyogSlNNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTU2MTExMjM0QzdGQkMwMDhGQzdBQiAvKiBKU01v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uY3BwICovOyB9OworCQk1NzE1NjExNTIz
NEM3RkRDMDA4RkM3QUIgLyogSlNNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE1NjExMDIz
NEM3RkJDMDA4RkM3QUIgLyogSlNNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgg
Ki87IH07CiAJCTU3MUYyMTg5MURBNTdDNTQwMDVDOUVGRCAvKiBKU1N1YnRsZUNyeXB0by5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcxRjIxODgxREE1
N0M1NDAwNUM5RUZEIC8qIEpTU3VidGxlQ3J5cHRvLmggKi87IH07CiAJCTU3MjA5M0QzMUREQ0VC
OUEwMDMxMEFCMCAvKiBDcnlwdG9BbGdvcml0aG1BZXNDYmNDZmJQYXJhbXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MjA5M0QyMUREQ0VCOUEwMDMx
MEFCMCAvKiBDcnlwdG9BbGdvcml0aG1BZXNDYmNDZmJQYXJhbXMuaCAqLzsgfTsKIAkJNTcyMUE5
ODcxRUNFNTNCMTAwODEyOTVBIC8qIENyeXB0b0RpZ2VzdEFsZ29yaXRobS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyMUE5ODYxRUNFNTNCMTAwODEy
OTVBIC8qIENyeXB0b0RpZ2VzdEFsZ29yaXRobS5oICovOyB9OwpAQCAtODYwNSw2ICs4NjA5LDEw
IEBACiAJCTU3MTUyQjdCMjFERDhCQTEwMDBDMzdDQSAvKiBVMmZSZXNwb25zZUNvbnZlcnRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVMmZSZXNwb25zZUNvbnZlcnRlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MTUyQjdFMjFEREE1ODEwMDBDMzdDQSAvKiBXZWJBdXRo
ZW50aWNhdGlvblV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dGhlbnRpY2F0aW9uVXRpbHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcxNTJCN0YyMUREQTU4MTAwMEMzN0NB
IC8qIFdlYkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXV0
aGVudGljYXRpb25VdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MTU2
MTA4MjM0QzFCMzEwMDhGQzdBQiAvKiBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTcxNTYxMEQy
MzRDNzQ4MTAwOEZDN0FCIC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1NzE1NjExMDIzNEM3RkJDMDA4RkM3QUIgLyogSlNNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1NzE1NjExMTIzNEM3RkJDMDA4RkM3QUIgLyogSlNNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MUYyMTg4MURBNTdDNTQwMDVDOUVGRCAvKiBK
U1N1YnRsZUNyeXB0by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N1YnRs
ZUNyeXB0by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzFGMjE4QTFEQTU3QzdB
MDA1QzlFRkQgLyogSlNTdWJ0bGVDcnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNTdWJ0bGVDcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NzIwOTNEMTFERENFQTRCMDAzMTBBQjAgLyogQWVzQ2JjQ2ZiUGFyYW1zLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBBZXNDYmNDZmJQYXJhbXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc4
OTIsNiArMTc5MDAsOCBAQAogCQkJCUExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAvKiBNb2NrUGF5
bWVudE1ldGhvZC5oICovLAogCQkJCUExNDA2MTg5MUUyRUNBMEEwMDMyQjM0RSAvKiBNb2NrUHJl
dmlld0xvYWRlckNsaWVudC5jcHAgKi8sCiAJCQkJQTE0MDYxOEExRTJFQ0EwQTAwMzJCMzRFIC8q
IE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50LmggKi8sCisJCQkJNTcxNTYxMDgyMzRDMUIzMTAwOEZD
N0FCIC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCAqLywKKwkJCQk1NzE1
NjEwRDIzNEM3NDgxMDA4RkM3QUIgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bi5pZGwgKi8sCiAJCQkJNDE3RjBEODAxRkZFRTE0RjAwOEVGMzAzIC8qIFNlcnZpY2VXb3JrZXJJ
bnRlcm5hbHMuY3BwICovLAogCQkJCTQxN0YwRDdFMUZGRUUxNEUwMDhFRjMwMyAvKiBTZXJ2aWNl
V29ya2VySW50ZXJuYWxzLmggKi8sCiAJCQkJNDE3RjBEODExRkZFRTE1MDAwOEVGMzAzIC8qIFNl
cnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsICovLApAQCAtMTc5MzIsNiArMTc5NDIsOCBAQAogCQkJ
CUExNDZEMzE4MUY5OUJDQkEwMEQyOTE5NiAvKiBKU01vY2tQYXltZW50Q29vcmRpbmF0b3IuaCAq
LywKIAkJCQlBMUJCODVCNDIxNTlCMzg5MDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmNw
cCAqLywKIAkJCQlBMUJCODVCNTIxNTlCMzhBMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9y
LmggKi8sCisJCQkJNTcxNTYxMTEyMzRDN0ZCQzAwOEZDN0FCIC8qIEpTTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbi5jcHAgKi8sCisJCQkJNTcxNTYxMTAyMzRDN0ZCQzAwOEZDN0FC
IC8qIEpTTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oICovLAogCQkJCTQyN0RB
NzFCMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwICovLAog
CQkJCTQyN0RBNzFDMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMu
aCAqLywKIAkJCQlFQkY1MTIxQTE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMu
Y3BwICovLApAQCAtMjg0MjUsNiArMjg0MzcsNyBAQAogCQkJCUExMDRFQzVFMjIwQTNFNEUwMENC
RjY3QSAvKiBKU01vY2tQYXltZW50Q29udGFjdEZpZWxkcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTE0NkQzMUIxRjk5QkNGQjAwRDI5MTk2IC8qIEpTTW9ja1BheW1lbnRDb29yZGluYXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTFCQjg1QjkyMTU5QjNBRTAwNjdFMDdEIC8qIEpTTW9ja1BheW1l
bnRFcnJvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTcxNTYxMTUyMzRDN0ZEQzAwOEZDN0FCIC8q
IEpTTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDI3REE3MUUxMzczNURGQTAwN0M1N0ZCIC8qIEpTU2VydmljZVdvcmtlckludGVybmFscy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRUJGNTEyMUQxNjk2NDk2QzAwNTZCRDI1IC8qIEpTVHlwZUNv
bnZlcnNpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMyNkI0MTE2MEE4Q0NFMDAyNjc1N0Ig
LyogTGVnYWN5TW9ja0NETS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODQ0Miw2ICsyODQ1NSw3IEBA
CiAJCQkJQTFBRkVERTYxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUExQ0JFRjY0MUY5RjExMjkwMDI4REU3QyAvKiBNb2NrUGF5
bWVudE1ldGhvZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE0MDYxOEMxRTJFQ0EwQTAwMzJCMzRF
IC8qIE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzE1NjEw
QjIzNEMxQjQ5MDA4RkM3QUIgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQUE1RjNCOEQxNkNDMzNEMTAwNDU1RUIwIC8qIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJNb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTc2M0YzRjFFMjA1
MjM0MDAxRDU4REUgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTgxNUMxRjEzODMxOTgzMDA1N0FBQTQgLyogV2ViQ29yZVRlc3RTdXBwb3J0LmggaW4gSGVh
ZGVycyAqLywKQEAgLTMxMDIxLDYgKzMxMDM1LDcgQEAKIAkJCQkwN0VFNzZFRjFCRUE2MTk4MDBG
ODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNERjJCMDE3MTgyMDU0MDcwMEYyQjQyNCAvKiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RGMkIwMTkxODIwNTQwNzAwRjJCNDI0IC8qIE1vY2tUcmFja3Mu
aCBpbiBIZWFkZXJzICovLAorCQkJCTU3MTU2MTBDMjM0QzFDQTEwMDhGQzdBQiAvKiBNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNkQ3NEFE
NTA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3MDlBMDFGRTFFM0QwQkREMDA2QjBENEMgLyogTW9kdWxlRmV0Y2hGYWlsdXJl
S2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMyMDFDMUExRjhFODIxMzAwNzZBMDMyIC8qIE1v
ZHVsZUZldGNoUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjk4NCw2ICszMjk5OSw3
IEBACiAJCQkJQTEwNEVDNUQyMjBBM0U0QjAwQ0JGNjdBIC8qIEpTTW9ja1BheW1lbnRDb250YWN0
RmllbGRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDZEMzFBMUY5OUJDRjgwMEQyOTE5NiAv
KiBKU01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFCQjg1
QjgyMTU5QjNBNDAwNjdFMDdEIC8qIEpTTW9ja1BheW1lbnRFcnJvci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1NzE1NjExNDIzNEM3RkQ2MDA4RkM3QUIgLyogSlNNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQyN0RBNzFEMTM3MzVERkEw
MDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRUJGNTEyMUMxNjk2NDk2QzAwNTZCRDI1IC8qIEpTVHlwZUNvbnZlcnNpb25zLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUNEQzI2QjQwMTYwQThDQzYwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RN
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggZmRk
YjE4NjgyYmU3ZTFmNjZhZWRhYWI2OGNiYmM0NDgwODI4MDQ2ZS4uMzUwNWQ0NDA1NDFjM2Y0OWQ4
NjY1YjQ1NjNiZWVmYWVmZjY0ZDQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBA
IC0xMTAsNiArMTEwLDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQ
bHVnaW5zQ2FsbGJhY2s7CiBzdHJ1Y3QgQ29udGVudFJ1bGVMaXN0UmVzdWx0czsKIHN0cnVjdCBE
YXRlVGltZUNob29zZXJQYXJhbWV0ZXJzOwogc3RydWN0IEdyYXBoaWNzRGV2aWNlQWRhcHRlcjsK
K3N0cnVjdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOwogc3RydWN0IFNoYXJl
RGF0YVdpdGhQYXJzZWRVUkw7CiBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7CiBzdHJ1Y3QgV2lu
ZG93RmVhdHVyZXM7CkBAIC01MTAsNiArNTExLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgdXNlcklzSW50ZXJhY3RpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgdm9pZCBzZXRVc2VySXNJbnRlcmFjdGluZyhib29sKSB7IH0KIAorI2lmIEVOQUJMRShXRUJf
QVVUSE4pCisgICAgdmlydHVhbCB2b2lkIHNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24oY29uc3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYpIHsgfQorI2Vu
ZGlmCisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5DaHJvbWVDbGllbnQoKSA9IGRlZmF1bHQ7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGZmNDA5NjllZDY5ZjUz
MjkxMWRjNmU0Zjc2YzJjNDE0YzMzODMxYWEuLjZkYTFjZjNhMTMxZWQ4NWQwMzM0NzM4NGRjZTdh
ZGJhNDRiZWVmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTUyMzQs
NCArNTIzNCwxNyBAQCB2b2lkIEludGVybmFsczo6YWRkUHJlZmV0Y2hMb2FkRXZlbnRMaXN0ZW5l
cihIVE1MTGlua0VsZW1lbnQmIGxpbmssIFJlZlB0cjxFdmVudAogICAgIH0KIH0KIAorI2lmIEVO
QUJMRShXRUJfQVVUSE4pCit2b2lkIEludGVybmFsczo6c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbihjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiBj
b25maWd1cmF0aW9uKQoreworICAgIGF1dG8qIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7
CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8qIHBhZ2UgPSBk
b2N1bWVudC0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIHBh
Z2UtPmNocm9tZSgpLmNsaWVudCgpLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24oY29uZmlndXJhdGlvbik7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggODE2NTk1YzVmNjM5ZjA5NGMwY2E2ZDZl
ZTNjY2M3MDRkYTdjM2RlNS4uYzEzNGRlZmRhYWYxNDBiYTk3ZDNkZTQ1MDBjNDk3NGFlNGM1NTZm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xMTIsNiArMTEyLDggQEAgY2xh
c3MgU2VydmljZVdvcmtlcjsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9N
UHJvbWlzZURlZmVycmVkOwogCitzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbjsKKwogY2xhc3MgSW50ZXJuYWxzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8SW50ZXJu
YWxzPiwgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcgogI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCiAgICAgLCBwcml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyCkBA
IC04ODQsNiArODg2LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkUHJlZmV0Y2hMb2FkRXZl
bnRMaXN0ZW5lcihIVE1MTGlua0VsZW1lbnQmLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJik7CiAK
KyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIHZvaWQgc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbihjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJik7
CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbHMoRG9jdW1lbnQmKTsK
ICAgICBEb2N1bWVudCogY29udGV4dERvY3VtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwKaW5kZXggNDY4ZWYyMzFkNzRlMTk4NjVjMDQ5NDNiMjdjMjY0YzYxNmVh
ZmI5YS4uNGUzYTQxMmExNGM4MmFiNDJjMzIyNDU4OWQwMjY4OGNkNTZhZTA0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNzk0LDQgKzc5NCw2IEBAIGVudW0gQ29tcG9z
aXRpbmdQb2xpY3kgewogICAgIFRleHRJbmRpY2F0b3JJbmZvIHRleHRJbmRpY2F0b3JGb3JSYW5n
ZShSYW5nZSByYW5nZSwgVGV4dEluZGljYXRvck9wdGlvbnMgb3B0aW9ucyk7CiAKICAgICB2b2lk
IGFkZFByZWZldGNoTG9hZEV2ZW50TGlzdGVuZXIoSFRNTExpbmtFbGVtZW50IGxpbmssIEV2ZW50
TGlzdGVuZXI/IGNhbGxiYWNrKTsKKworICAgIFtDb25kaXRpb25hbD1XRUJfQVVUSE5dIHZvaWQg
c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzQ1MGYyNTY3NmFjMTI3YzYzNDljZmVjNmU5YTBmYzU2MzRkZTdlNwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsMjkzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiB7CisgICAgZW51
bSBjbGFzcyBIaWRTdGFnZSA6IGJvb2wgeworICAgICAgICBJbmZvLAorICAgICAgICBSZXF1ZXN0
CisgICAgfTsKKworICAgIGVudW0gY2xhc3MgSGlkU3ViU3RhZ2UgOiBib29sIHsKKyAgICAgICAg
SW5pdCwKKyAgICAgICAgTXNnCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgSGlkRXJyb3IgOiB1
aW50OF90IHsKKyAgICAgICAgU3VjY2VzcywKKyAgICAgICAgRGF0YU5vdFNlbnQsCisgICAgICAg
IEVtcHR5UmVwb3J0LAorICAgICAgICBXcm9uZ0NoYW5uZWxJZCwKKyAgICAgICAgTWFsaWNpb3Vz
UGF5bG9hZCwKKyAgICAgICAgVW5zdXBwb3J0ZWRPcHRpb25zLAorICAgICAgICBXcm9uZ05vbmNl
CisgICAgfTsKKworICAgIGVudW0gY2xhc3MgTmZjRXJyb3IgOiB1aW50OF90IHsKKyAgICAgICAg
U3VjY2VzcywKKyAgICAgICAgTm9UYWdzLAorICAgICAgICBXcm9uZ1RhZ1R5cGUsCisgICAgICAg
IE5vQ29ubmVjdGlvbnMsCisgICAgICAgIE1hbGljaW91c1BheWxvYWQKKyAgICB9OworCisgICAg
c3RydWN0IExvY2FsQ29uZmlndXJhdGlvbiB7CisgICAgICAgIGJvb2wgYWNjZXB0QXV0aGVudGlj
YXRpb24geyBmYWxzZSB9OworICAgICAgICBib29sIGFjY2VwdEF0dGVzdGF0aW9uIHsgZmFsc2Ug
fTsKKyAgICAgICAgU3RyaW5nIHByaXZhdGVLZXlCYXNlNjQ7CisgICAgICAgIFN0cmluZyB1c2Vy
Q2VydGlmaWNhdGVCYXNlNjQ7CisgICAgICAgIFN0cmluZyBpbnRlcm1lZGlhdGVDQUNlcnRpZmlj
YXRlQmFzZTY0OworICAgICAgICBTdHJpbmcgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDsKKwor
ICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CisgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxMb2Nh
bENvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJik7CisgICAgfTsKKworICAgIHN0cnVjdCBI
aWRDb25maWd1cmF0aW9uIHsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gcGF5bG9hZEJhc2U2NDsK
KyAgICAgICAgSGlkU3RhZ2Ugc3RhZ2UgeyBIaWRTdGFnZTo6SW5mbyB9OworICAgICAgICBIaWRT
dWJTdGFnZSBzdWJTdGFnZSB7IEhpZFN1YlN0YWdlOjpJbml0IH07CisgICAgICAgIEhpZEVycm9y
IGVycm9yIHsgSGlkRXJyb3I6OlN1Y2Nlc3MgfTsKKyAgICAgICAgYm9vbCBpc1UyZiB7IGZhbHNl
IH07CisgICAgICAgIGJvb2wga2VlcEFsaXZlIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBmYXN0
RGF0YUFycml2YWwgeyBmYWxzZSB9OworICAgICAgICBib29sIGNvbnRpbnVlQWZ0ZXJFcnJvckRh
dGEgeyBmYWxzZSB9OworICAgICAgICBib29sIGNhbkRvd25ncmFkZSB7IGZhbHNlIH07CisKKyAg
ICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SGlkQ29u
ZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB9OworCisgICAgc3RydWN0IE5mY0Nv
bmZpZ3VyYXRpb24geworICAgICAgICBOZmNFcnJvciBlcnJvciB7IE5mY0Vycm9yOjpTdWNjZXNz
IH07CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBheWxvYWRCYXNlNjQ7CisgICAgICAgIGJvb2wg
bXVsdGlwbGVUYWdzIHsgZmFsc2UgfTsKKworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxOZmNDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYp
OworICAgIH07CisKKyAgICBib29sIHNpbGVudEZhaWx1cmUgeyBmYWxzZSB9OworICAgIE9wdGlv
bmFsPExvY2FsQ29uZmlndXJhdGlvbj4gbG9jYWw7CisgICAgT3B0aW9uYWw8SGlkQ29uZmlndXJh
dGlvbj4gaGlkOworICAgIE9wdGlvbmFsPE5mY0NvbmZpZ3VyYXRpb24+IG5mYzsKKworICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPGNsYXNz
IEVuY29kZXI+Cit2b2lkIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkxvY2Fs
Q29uZmlndXJhdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5j
b2RlciA8PCBhY2NlcHRBdXRoZW50aWNhdGlvbiA8PCBhY2NlcHRBdHRlc3RhdGlvbiA8PCBwcml2
YXRlS2V5QmFzZTY0IDw8IHVzZXJDZXJ0aWZpY2F0ZUJhc2U2NCA8PCBpbnRlcm1lZGlhdGVDQUNl
cnRpZmljYXRlQmFzZTY0IDw8IHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ7Cit9CisKK3RlbXBs
YXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uOjpMb2NhbENvbmZpZ3VyYXRpb24+IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb246OkxvY2FsQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7Cisg
ICAgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TG9jYWxDb25maWd1cmF0aW9u
IHJlc3VsdDsKKworICAgIE9wdGlvbmFsPGJvb2w+IGFjY2VwdEF1dGhlbnRpY2F0aW9uOworICAg
IGRlY29kZXIgPj4gYWNjZXB0QXV0aGVudGljYXRpb247CisgICAgaWYgKCFhY2NlcHRBdXRoZW50
aWNhdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXN1bHQuYWNjZXB0
QXV0aGVudGljYXRpb24gPSAqYWNjZXB0QXV0aGVudGljYXRpb247CisKKyAgICBPcHRpb25hbDxi
b29sPiBhY2NlcHRBdHRlc3RhdGlvbjsKKyAgICBkZWNvZGVyID4+IGFjY2VwdEF0dGVzdGF0aW9u
OworICAgIGlmICghYWNjZXB0QXR0ZXN0YXRpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcmVzdWx0LmFjY2VwdEF0dGVzdGF0aW9uID0gKmFjY2VwdEF0dGVzdGF0aW9uOwor
CisgICAgT3B0aW9uYWw8U3RyaW5nPiBwcml2YXRlS2V5QmFzZTY0OworICAgIGRlY29kZXIgPj4g
cHJpdmF0ZUtleUJhc2U2NDsKKyAgICBpZiAoIXByaXZhdGVLZXlCYXNlNjQpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVzdWx0LnByaXZhdGVLZXlCYXNlNjQgPSBXVEZNb3Zl
KCpwcml2YXRlS2V5QmFzZTY0KTsKKworICAgIE9wdGlvbmFsPFN0cmluZz4gdXNlckNlcnRpZmlj
YXRlQmFzZTY0OworICAgIGRlY29kZXIgPj4gdXNlckNlcnRpZmljYXRlQmFzZTY0OworICAgIGlm
ICghdXNlckNlcnRpZmljYXRlQmFzZTY0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJlc3VsdC51c2VyQ2VydGlmaWNhdGVCYXNlNjQgPSBXVEZNb3ZlKCp1c2VyQ2VydGlmaWNh
dGVCYXNlNjQpOworCisgICAgT3B0aW9uYWw8U3RyaW5nPiBpbnRlcm1lZGlhdGVDQUNlcnRpZmlj
YXRlQmFzZTY0OworICAgIGRlY29kZXIgPj4gaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2
NDsKKyAgICBpZiAoIWludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVzdWx0LmludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVC
YXNlNjQgPSBXVEZNb3ZlKCppbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0KTsKKworICAg
IE9wdGlvbmFsPFN0cmluZz4gcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDsKKyAgICBkZWNvZGVy
ID4+IHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ7CisgICAgaWYgKCFwcmVmZXJyZWRVc2VyaGFu
ZGxlQmFzZTY0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJlc3VsdC5wcmVm
ZXJyZWRVc2VyaGFuZGxlQmFzZTY0ID0gV1RGTW92ZSgqcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2
NCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgor
dm9pZCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRDb25maWd1cmF0aW9u
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHBheWxv
YWRCYXNlNjQgPDwgc3RhZ2UgPDwgc3ViU3RhZ2UgPDwgZXJyb3IgPDwgaXNVMmYgPDwga2VlcEFs
aXZlIDw8IGZhc3REYXRhQXJyaXZhbCA8PCBjb250aW51ZUFmdGVyRXJyb3JEYXRhIDw8IGNhbkRv
d25ncmFkZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENvbmZpZ3VyYXRpb24+IE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENvbmZpZ3VyYXRpb246OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQoreworICAgIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Okhp
ZENvbmZpZ3VyYXRpb24gcmVzdWx0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBh
eWxvYWRCYXNlNjQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVj
b2Rlci5kZWNvZGVFbnVtKHJlc3VsdC5zdGFnZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LnN1YlN0YWdlKSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXN1
bHQuZXJyb3IpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LmlzVTJmKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5rZWVwQWxpdmUpKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmZhc3REYXRhQXJy
aXZhbCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQuY29udGludWVBZnRlckVycm9yRGF0YSkpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2FuRG93bmdyYWRlKSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uOjpOZmNDb25maWd1cmF0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
K3sKKyAgICBlbmNvZGVyIDw8IGVycm9yIDw8IHBheWxvYWRCYXNlNjQgPDwgbXVsdGlwbGVUYWdz
OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29uZmlndXJhdGlvbj4gTW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCit7CisgICAgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29uZmln
dXJhdGlvbiByZXN1bHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LmVycm9y
KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5wYXlsb2FkQmFzZTY0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tdWx0aXBsZVRhZ3MpKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RlbXBsYXRlPGNsYXNz
IEVuY29kZXI+Cit2b2lkIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgc2lsZW50RmFpbHVy
ZSA8PCBsb2NhbCA8PCBoaWQgPDwgbmZjOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgor
T3B0aW9uYWw8TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbj4gTW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAg
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiByZXN1bHQ7CisKKyAgICBPcHRpb25h
bDxib29sPiBzaWxlbnRGYWlsdXJlOworICAgIGRlY29kZXIgPj4gc2lsZW50RmFpbHVyZTsKKyAg
ICBpZiAoIXNpbGVudEZhaWx1cmUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmVzdWx0LnNpbGVudEZhaWx1cmUgPSAqc2lsZW50RmFpbHVyZTsKKworICAgIE9wdGlvbmFsPE9w
dGlvbmFsPExvY2FsQ29uZmlndXJhdGlvbj4+IGxvY2FsOworICAgIGRlY29kZXIgPj4gbG9jYWw7
CisgICAgaWYgKCFsb2NhbCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXN1
bHQubG9jYWwgPSBXVEZNb3ZlKCpsb2NhbCk7CisKKyAgICBPcHRpb25hbDxPcHRpb25hbDxIaWRD
b25maWd1cmF0aW9uPj4gaGlkOworICAgIGRlY29kZXIgPj4gaGlkOworICAgIGlmICghaGlkKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJlc3VsdC5oaWQgPSBXVEZNb3ZlKCpo
aWQpOworCisgICAgT3B0aW9uYWw8T3B0aW9uYWw8TmZjQ29uZmlndXJhdGlvbj4+IG5mYzsKKyAg
ICBkZWNvZGVyID4+IG5mYzsKKyAgICBpZiAoIW5mYykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXN1bHQubmZjID0gV1RGTW92ZSgqbmZjKTsKKworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3Rl
bXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbjo6SGlkU3RhZ2U+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVz
PAorICAgICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpI
aWRTdGFnZSwKKyAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbjo6SGlkU3RhZ2U6OkluZm8sCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb246OkhpZFN0YWdlOjpSZXF1ZXN0CisgICAgPjsKK307CisKK3RlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbjo6SGlkU3ViU3RhZ2U+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVz
PAorICAgICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpI
aWRTdWJTdGFnZSwKKyAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbjo6SGlkU3ViU3RhZ2U6OkluaXQsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZFN1YlN0YWdlOjpNc2cKKyAgICA+OworfTsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uOjpIaWRFcnJvcj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246
OkhpZEVycm9yLAorICAgICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uOjpIaWRFcnJvcjo6U3VjY2VzcywKKyAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkRXJyb3I6OkRhdGFOb3RTZW50LAorICAgICAgICBX
ZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRFcnJvcjo6RW1w
dHlSZXBvcnQsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb246OkhpZEVycm9yOjpXcm9uZ0NoYW5uZWxJZCwKKyAgICAgICAgV2ViQ29yZTo6TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkRXJyb3I6Ok1hbGljaW91c1BheWxvYWQs
CisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Okhp
ZEVycm9yOjpVbnN1cHBvcnRlZE9wdGlvbnMsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZEVycm9yOjpXcm9uZ05vbmNlCisgICAgPjsKK307
CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjRXJyb3I+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVt
VmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uOjpOZmNFcnJvciwKKyAgICAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbjo6TmZjRXJyb3I6OlN1Y2Nlc3MsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mY0Vycm9yOjpOb1RhZ3MsCisgICAgICAgIFdl
YkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mY0Vycm9yOjpXcm9u
Z1RhZ1R5cGUsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb246Ok5mY0Vycm9yOjpOb0Nvbm5lY3Rpb25zLAorICAgICAgICBXZWJDb3JlOjpNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmNFcnJvcjo6TWFsaWNpb3VzUGF5bG9hZAor
ICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZGViODYxY2M5ZTZj
NGM2MjdhMDczMmQ3YWU2YTc0NTY3OWE2ZmRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmlkbApAQCAt
MCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVUSE4s
CitdIGVudW0gTW9ja0hpZFN0YWdlIHsKKyAgICAiaW5mbyIsCisgICAgInJlcXVlc3QiCit9Owor
CitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVVEhOLAorXSBlbnVtIE1vY2tIaWRTdWJTdGFnZSB7
CisgICAgImluaXQiLAorICAgICJtc2ciCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FV
VEhOLAorXSBlbnVtIE1vY2tIaWRFcnJvciB7CisgICAgInN1Y2Nlc3MiLAorICAgICJkYXRhLW5v
dC1zZW50IiwKKyAgICAiZW1wdHktcmVwb3J0IiwKKyAgICAid3JvbmctY2hhbm5lbC1pZCIsCisg
ICAgIm1hbGljaW91cy1wYXlsb2FkIiwKKyAgICAidW5zdXBwb3J0ZWQtb3B0aW9ucyIsCisgICAg
Indyb25nLW5vbmNlIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVVRITiwKK10gZW51
bSBNb2NrTmZjRXJyb3IgeworICAgICJzdWNjZXNzIiwKKyAgICAibm8tdGFncyIsCisgICAgIndy
b25nLXRhZy10eXBlIiwKKyAgICAibm8tY29ubmVjdGlvbnMiLAorICAgICJtYWxpY2lvdXMtcGF5
bG9hZCIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVUSE4sCitdIGRpY3Rpb25hcnkg
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiB7CisgICAgYm9vbGVhbiBzaWxlbnRG
YWlsdXJlID0gZmFsc2U7CisgICAgTW9ja0xvY2FsQ29uZmlndXJhdGlvbiBsb2NhbDsKKyAgICBN
b2NrSGlkQ29uZmlndXJhdGlvbiBoaWQ7CisgICAgTW9ja05mY0NvbmZpZ3VyYXRpb24gbmZjOwor
fTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVVRITiwKK10gZGljdGlvbmFyeSBNb2NrTG9j
YWxDb25maWd1cmF0aW9uIHsKKyAgICBib29sZWFuIGFjY2VwdEF1dGhlbnRpY2F0aW9uID0gZmFs
c2U7CisgICAgYm9vbGVhbiBhY2NlcHRBdHRlc3RhdGlvbiA9IGZhbHNlOworICAgIERPTVN0cmlu
ZyBwcml2YXRlS2V5QmFzZTY0OworICAgIERPTVN0cmluZyB1c2VyQ2VydGlmaWNhdGVCYXNlNjQ7
CisgICAgRE9NU3RyaW5nIGludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQ7CisgICAgRE9N
U3RyaW5nIHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ7Cit9OworCitbCisgICAgQ29uZGl0aW9u
YWw9V0VCX0FVVEhOLAorXSBkaWN0aW9uYXJ5IE1vY2tIaWRDb25maWd1cmF0aW9uIHsKKyAgICBz
ZXF1ZW5jZTxET01TdHJpbmc+IHBheWxvYWRCYXNlNjQ7CisgICAgTW9ja0hpZFN0YWdlIHN0YWdl
ID0gImluZm8iOworICAgIE1vY2tIaWRTdWJTdGFnZSBzdWJTdGFnZSA9ICJpbml0IjsKKyAgICBN
b2NrSGlkRXJyb3IgZXJyb3IgPSAic3VjY2VzcyI7CisgICAgYm9vbGVhbiBpc1UyZiA9IGZhbHNl
OworICAgIGJvb2xlYW4ga2VlcEFsaXZlID0gZmFsc2U7CisgICAgYm9vbGVhbiBmYXN0RGF0YUFy
cml2YWwgPSBmYWxzZTsKKyAgICBib29sZWFuIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEgPSBmYWxz
ZTsKKyAgICBib29sZWFuIGNhbkRvd25ncmFkZSA9IGZhbHNlOworfTsKKworWworICAgIENvbmRp
dGlvbmFsPVdFQl9BVVRITiwKK10gZGljdGlvbmFyeSBNb2NrTmZjQ29uZmlndXJhdGlvbiB7Cisg
ICAgTW9ja05mY0Vycm9yIGVycm9yID0gInN1Y2Nlc3MiOworICAgIHNlcXVlbmNlPERPTVN0cmlu
Zz4gcGF5bG9hZEJhc2U2NDsKKyAgICBib29sZWFuIG11bHRpcGxlVGFncyA9IGZhbHNlOworfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRh
U3RvcmVSZWYuY3BwCmluZGV4IDlkN2ZhN2QzN2M2NmExZjJkOWVjNDhjOTdlNTFiYzZmZDcwYTc3
YTQuLjc0NGZjYmE5ZWUyYTE5NjE3NWExM2E1MTI3OTQ2ZGYxNDNlMDRlNzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRl
ICJBUElIVFRQQ29va2llU3RvcmUuaCIKLSNpbmNsdWRlICJNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgi
CiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tEaWN0aW9uYXJ5LmgiCkBAIC02
NTgsMTA4ICs2NTcsNiBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQWxsRGV2aWNlT3Jp
ZW50YXRpb25QZXJtaXNzaW9ucyhXS1dlYnNpdGVEYXRhU3RvcmVSZQogI2VuZGlmCiB9CiAKLXZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlv
bihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS0RpY3Rpb25hcnlSZWYgY29u
ZmlndXJhdGlvblJlZikKLXsKLSNpZiBFTkFCTEUoV0VCX0FVVEhOKQotICAgIFdlYktpdDo6TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwotCi0gICAgaWYg
KGF1dG8gc2lsZW50RmFpbHVyZVJlZiA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0
aW9uYXJ5R2V0SXRlbUZvcktleShjb25maWd1cmF0aW9uUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJTaWxlbnRGYWlsdXJlIikpLmdldCgpKSkpCi0gICAgICAgIGNv
bmZpZ3VyYXRpb24uc2lsZW50RmFpbHVyZSA9IFdLQm9vbGVhbkdldFZhbHVlKHNpbGVudEZhaWx1
cmVSZWYpOwotCi0gICAgaWYgKGF1dG8gbG9jYWxSZWYgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25h
cnlSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoY29uZmlndXJhdGlvblJlZiwgYWRvcHRX
SyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTG9jYWwiKSkuZ2V0KCkpKSkgewotICAg
ICAgICBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkxvY2FsIGxv
Y2FsOwotICAgICAgICBsb2NhbC5hY2NlcHRBdXRoZW50aWNhdGlvbiA9IFdLQm9vbGVhbkdldFZh
bHVlKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShs
b2NhbFJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQWNjZXB0QXV0
aGVudGljYXRpb24iKSkuZ2V0KCkpKSk7Ci0gICAgICAgIGxvY2FsLmFjY2VwdEF0dGVzdGF0aW9u
ID0gV0tCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25h
cnlHZXRJdGVtRm9yS2V5KGxvY2FsUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJBY2NlcHRBdHRlc3RhdGlvbiIpKS5nZXQoKSkpKTsKLSAgICAgICAgaWYgKGxvY2Fs
LmFjY2VwdEF0dGVzdGF0aW9uKSB7Ci0gICAgICAgICAgICBsb2NhbC5wcml2YXRlS2V5QmFzZTY0
ID0gV2ViS2l0Ojp0b0ltcGwoc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdl
dEl0ZW1Gb3JLZXkobG9jYWxSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIlByaXZhdGVLZXlCYXNlNjQiKSkuZ2V0KCkpKSktPnN0cmluZygpOwotICAgICAgICAgICAg
bG9jYWwudXNlckNlcnRpZmljYXRlQmFzZTY0ID0gV2ViS2l0Ojp0b0ltcGwoc3RhdGljX2Nhc3Q8
V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobG9jYWxSZWYsIGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlVzZXJDZXJ0aWZpY2F0ZUJhc2U2NCIpKS5n
ZXQoKSkpKS0+c3RyaW5nKCk7Ci0gICAgICAgICAgICBsb2NhbC5pbnRlcm1lZGlhdGVDQUNlcnRp
ZmljYXRlQmFzZTY0ID0gV2ViS2l0Ojp0b0ltcGwoc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdL
RGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobG9jYWxSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIkludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQiKSkuZ2V0KCkp
KSktPnN0cmluZygpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChhdXRvIHByZWZlcnJlZFVzZXJo
YW5kbGVCYXNlNjRSZWYgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0
SXRlbUZvcktleShsb2NhbFJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiUHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NCIpKS5nZXQoKSkpKQotICAgICAgICAgICAgbG9j
YWwucHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NCA9IFdlYktpdDo6dG9JbXBsKHByZWZlcnJlZFVz
ZXJoYW5kbGVCYXNlNjRSZWYpLT5zdHJpbmcoKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5sb2Nh
bCA9IFdURk1vdmUobG9jYWwpOwotICAgIH0KLQotICAgIGlmIChhdXRvIGhpZFJlZiA9IHN0YXRp
Y19jYXN0PFdLRGljdGlvbmFyeVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShjb25maWd1
cmF0aW9uUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIaWQiKSku
Z2V0KCkpKSkgewotICAgICAgICBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb246OkhpZCBoaWQ7Ci0KLSAgICAgICAgYXV0byBzdGFnZSA9IFdlYktpdDo6dG9JbXBsKHN0
YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGhpZFJlZiwg
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3RhZ2UiKSkuZ2V0KCkpKSkt
PnN0cmluZygpOwotICAgICAgICBpZiAoc3RhZ2UgPT0gImluZm8iKQotICAgICAgICAgICAgaGlk
LnN0YWdlID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWQ6
OlN0YWdlOjpJbmZvOwotICAgICAgICBlbHNlIGlmIChzdGFnZSA9PSAicmVxdWVzdCIpCi0gICAg
ICAgICAgICBoaWQuc3RhZ2UgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb246OkhpZDo6U3RhZ2U6OlJlcXVlc3Q7Ci0KLSAgICAgICAgYXV0byBzdWJTdGFnZSA9IFdl
YktpdDo6dG9JbXBsKHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVt
Rm9yS2V5KGhpZFJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3Vi
U3RhZ2UiKSkuZ2V0KCkpKSktPnN0cmluZygpOwotICAgICAgICBpZiAoc3ViU3RhZ2UgPT0gImlu
aXQiKQotICAgICAgICAgICAgaGlkLnN1YlN0YWdlID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OlN1YlN0YWdlOjpJbml0OwotICAgICAgICBlbHNlIGlm
IChzdWJTdGFnZSA9PSAibXNnIikKLSAgICAgICAgICAgIGhpZC5zdWJTdGFnZSA9IFdlYktpdDo6
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpTdWJTdGFnZTo6TXNnOwot
Ci0gICAgICAgIGF1dG8gZXJyb3IgPSBXZWJLaXQ6OnRvSW1wbChzdGF0aWNfY2FzdDxXS1N0cmlu
Z1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShoaWRSZWYsIGFkb3B0V0soV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIkVycm9yIikpLmdldCgpKSkpLT5zdHJpbmcoKTsKLSAgICAg
ICAgaWYgKGVycm9yID09ICJzdWNjZXNzIikKLSAgICAgICAgICAgIGhpZC5lcnJvciA9IFdlYktp
dDo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpFcnJvcjo6U3VjY2Vz
czsKLSAgICAgICAgZWxzZSBpZiAoZXJyb3IgPT0gImRhdGEtbm90LXNlbnQiKQotICAgICAgICAg
ICAgaGlkLmVycm9yID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
OjpIaWQ6OkVycm9yOjpEYXRhTm90U2VudDsKLSAgICAgICAgZWxzZSBpZiAoZXJyb3IgPT0gImVt
cHR5LXJlcG9ydCIpCi0gICAgICAgICAgICBoaWQuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZDo6RXJyb3I6OkVtcHR5UmVwb3J0OwotICAgICAg
ICBlbHNlIGlmIChlcnJvciA9PSAid3JvbmctY2hhbm5lbC1pZCIpCi0gICAgICAgICAgICBoaWQu
ZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZDo6
RXJyb3I6Oldyb25nQ2hhbm5lbElkOwotICAgICAgICBlbHNlIGlmIChlcnJvciA9PSAibWFsaWNp
b3VzLXBheWxvYWQiKQotICAgICAgICAgICAgaGlkLmVycm9yID0gV2ViS2l0OjpNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OkVycm9yOjpNYWxpY2lvdXNQYXlsb2FkOwot
ICAgICAgICBlbHNlIGlmIChlcnJvciA9PSAidW5zdXBwb3J0ZWQtb3B0aW9ucyIpCi0gICAgICAg
ICAgICBoaWQuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b246OkhpZDo6RXJyb3I6OlVuc3VwcG9ydGVkT3B0aW9uczsKLSAgICAgICAgZWxzZSBpZiAoZXJy
b3IgPT0gIndyb25nLW5vbmNlIikKLSAgICAgICAgICAgIGhpZC5lcnJvciA9IFdlYktpdDo6TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpFcnJvcjo6V3JvbmdOb25jZTsK
LQotICAgICAgICBpZiAoYXV0byBwYXlsb2FkQmFzZTY0ID0gc3RhdGljX2Nhc3Q8V0tBcnJheVJl
Zj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShoaWRSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIlBheWxvYWRCYXNlNjQiKSkuZ2V0KCkpKSkKLSAgICAgICAgICAg
IGhpZC5wYXlsb2FkQmFzZTY0ID0gV2ViS2l0Ojp0b0ltcGwocGF5bG9hZEJhc2U2NCktPnRvU3Ry
aW5nVmVjdG9yKCk7Ci0KLSAgICAgICAgaWYgKGF1dG8gaXNVMmYgPSBzdGF0aWNfY2FzdDxXS0Jv
b2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaGlkUmVmLCBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJJc1UyZiIpKS5nZXQoKSkpKQotICAgICAgICAgICAg
aGlkLmlzVTJmID0gV0tCb29sZWFuR2V0VmFsdWUoaXNVMmYpOwotCi0gICAgICAgIGlmIChhdXRv
IGtlZXBBbGl2ZSA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRl
bUZvcktleShoaWRSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIktl
ZXBBbGl2ZSIpKS5nZXQoKSkpKQotICAgICAgICAgICAgaGlkLmtlZXBBbGl2ZSA9IFdLQm9vbGVh
bkdldFZhbHVlKGtlZXBBbGl2ZSk7Ci0KLSAgICAgICAgaWYgKGF1dG8gZmFzdERhdGFBcnJpdmFs
ID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGhp
ZFJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRmFzdERhdGFBcnJp
dmFsIikpLmdldCgpKSkpCi0gICAgICAgICAgICBoaWQuZmFzdERhdGFBcnJpdmFsID0gV0tCb29s
ZWFuR2V0VmFsdWUoZmFzdERhdGFBcnJpdmFsKTsKLQotICAgICAgICBpZiAoYXV0byBjb250aW51
ZUFmdGVyRXJyb3JEYXRhID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlH
ZXRJdGVtRm9yS2V5KGhpZFJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiQ29udGludWVBZnRlckVycm9yRGF0YSIpKS5nZXQoKSkpKQotICAgICAgICAgICAgaGlkLmNv
bnRpbnVlQWZ0ZXJFcnJvckRhdGEgPSBXS0Jvb2xlYW5HZXRWYWx1ZShjb250aW51ZUFmdGVyRXJy
b3JEYXRhKTsKLQotICAgICAgICBpZiAoYXV0byBjYW5Eb3duZ3JhZGUgPSBzdGF0aWNfY2FzdDxX
S0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaGlkUmVmLCBhZG9wdFdLKFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYW5Eb3duZ3JhZGUiKSkuZ2V0KCkpKSkKLSAg
ICAgICAgICAgIGhpZC5jYW5Eb3duZ3JhZGUgPSBXS0Jvb2xlYW5HZXRWYWx1ZShjYW5Eb3duZ3Jh
ZGUpOwotCi0gICAgICAgIGNvbmZpZ3VyYXRpb24uaGlkID0gV1RGTW92ZShoaWQpOwotICAgIH0K
LQotICAgIGlmIChhdXRvIG5mY1JlZiA9IHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJlZj4oV0tE
aWN0aW9uYXJ5R2V0SXRlbUZvcktleShjb25maWd1cmF0aW9uUmVmLCBhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJOZmMiKSkuZ2V0KCkpKSkgewotICAgICAgICBXZWJLaXQ6
Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mYyBuZmM7Ci0KLSAgICAgICAg
YXV0byBlcnJvciA9IFdlYktpdDo6dG9JbXBsKHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0Rp
Y3Rpb25hcnlHZXRJdGVtRm9yS2V5KG5mY1JlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiRXJyb3IiKSkuZ2V0KCkpKSktPnN0cmluZygpOwotICAgICAgICBpZiAoZXJy
b3IgPT0gInN1Y2Nlc3MiKQotICAgICAgICAgICAgbmZjLmVycm9yID0gV2ViS2l0OjpNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmM6OkVycm9yOjpTdWNjZXNzOwotICAgICAg
ICBlbHNlIGlmIChlcnJvciA9PSAibm8tdGFncyIpCi0gICAgICAgICAgICBuZmMuZXJyb3IgPSBX
ZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mYzo6RXJyb3I6Ok5v
VGFnczsKLSAgICAgICAgZWxzZSBpZiAoZXJyb3IgPT0gIndyb25nLXRhZy10eXBlIikKLSAgICAg
ICAgICAgIG5mYy5lcnJvciA9IFdlYktpdDo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbjo6TmZjOjpFcnJvcjo6V3JvbmdUYWdUeXBlOwotICAgICAgICBlbHNlIGlmIChlcnJvciA9
PSAibm8tY29ubmVjdGlvbnMiKQotICAgICAgICAgICAgbmZjLmVycm9yID0gV2ViS2l0OjpNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmM6OkVycm9yOjpOb0Nvbm5lY3Rpb25z
OwotICAgICAgICBlbHNlIGlmIChlcnJvciA9PSAibWFsaWNpb3VzLXBheWxvYWQiKQotICAgICAg
ICAgICAgbmZjLmVycm9yID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uOjpOZmM6OkVycm9yOjpNYWxpY2lvdXNQYXlsb2FkOwotCi0gICAgICAgIGlmIChhdXRvIHBh
eWxvYWRCYXNlNjQgPSBzdGF0aWNfY2FzdDxXS0FycmF5UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVt
Rm9yS2V5KG5mY1JlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUGF5
bG9hZEJhc2U2NCIpKS5nZXQoKSkpKQotICAgICAgICAgICAgbmZjLnBheWxvYWRCYXNlNjQgPSBX
ZWJLaXQ6OnRvSW1wbChwYXlsb2FkQmFzZTY0KS0+dG9TdHJpbmdWZWN0b3IoKTsKLQotICAgICAg
ICBpZiAoYXV0byBtdWx0aXBsZVRhZ3MgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdLRGlj
dGlvbmFyeUdldEl0ZW1Gb3JLZXkobmZjUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJNdWx0aXBsZVRhZ3MiKSkuZ2V0KCkpKSkKLSAgICAgICAgICAgIG5mYy5tdWx0
aXBsZVRhZ3MgPSBXS0Jvb2xlYW5HZXRWYWx1ZShtdWx0aXBsZVRhZ3MpOwotCi0gICAgICAgIGNv
bmZpZ3VyYXRpb24ubmZjID0gV1RGTW92ZShuZmMpOwotICAgIH0KLQotICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
V1RGTW92ZShjb25maWd1cmF0aW9uKSk7Ci0jZW5kaWYKLX0KLQogdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVDbGVhckFkQ2xpY2tBdHRyaWJ1dGlvbnNUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0
ZURhdGFTdG9yZUNsZWFyQWRDbGlja0F0dHJpYnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92
YWxGdW5jdGlvbiBjYWxsYmFjaykKIHsKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpBZENsaWNrQXR0cmli
dXRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuaAppbmRleCBjMWY5OTBiMzVhN2IyNjYyNDE1ZmU2ZjE4ZTkwMjgzOTM4
MDg4MmVlLi5lZjQzMzk4NjA0NGFhMTE0NTE1N2Y5YzdiZGJmYWRiNGJkYWZkZjNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVS
ZWYuaApAQCAtMTQzLDggKzE0Myw2IEBAIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoV0tXZWJzaXRlCiAKIFdLX0VY
UE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFBlck9yaWdpblN0b3JhZ2VRdW90YShXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB1aW50NjRfdCBxdW90YSkgV0tfQ19BUElf
REVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b25TZXRQZXJPcmlnaW5TdG9yYWdlUXVvdGEpOwogCi1XS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLRGljdGlvbmFyeVJlZiBjb25maWd1cmF0aW9uKTsK
LQogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBbGxEZXZpY2VPcmllbnRh
dGlvblBlcm1pc3Npb25zKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYpOwogCiB0
eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVDbGVhckFkQ2xpY2tBdHRyaWJ1dGlvbnNU
aHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5jcHAKaW5k
ZXggN2EwZjhmOWIxMWQzNDJlMWQ0NGRhZWMxNDliMTRmY2EwYTEyZDM0OC4uZTgxMDM5YjZkY2I0
MGM1NjI1NWQ3N2Y0ZGVmZGU5NmYxZTRkNGVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlLmNwcApAQCAtNTMsNyArNTMsNyBAQCBVbmlxdWVSZWY8
QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U+IEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2
aWNlOjpjcmVhdGUoVwogICAgIH0KIH0KIAotVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnRTZXJ2aWNlPiBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZTo6Y3JlYXRlTW9jayhXZWJD
b3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0IHRyYW5zcG9ydCwgT2JzZXJ2ZXImIG9ic2VydmVy
LCBjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9u
KQorVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPiBBdXRoZW50aWNhdG9y
VHJhbnNwb3J0U2VydmljZTo6Y3JlYXRlTW9jayhXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNw
b3J0IHRyYW5zcG9ydCwgT2JzZXJ2ZXImIG9ic2VydmVyLCBjb25zdCBXZWJDb3JlOjpNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogewogICAgIHN3aXRj
aCAodHJhbnNwb3J0KSB7CiAgICAgY2FzZSBXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0
OjpJbnRlcm5hbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0U2Vydmlj
ZS5oCmluZGV4IDZjZTQ2MTg3OGRiYTJhZTYwZTc1NjYzZTk3YjFiZGZiNzI0ZDRmZGUuLjA5MDg0
YWI4YTdjNzkwOTA1MTdmMmU3MmViN2E1NDZkOWFkMjZlYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnRT
ZXJ2aWNlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2UuaApAQCAtMzEsMTIgKzMxLDE0IEBACiAjaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
OworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQXV0aGVudGljYXRvcjsKIAotc3Ry
dWN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb247Ci0KIGNsYXNzIEF1dGhlbnRp
Y2F0b3JUcmFuc3BvcnRTZXJ2aWNlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPEF1dGhlbnRpY2F0
b3JUcmFuc3BvcnRTZXJ2aWNlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2UpOwpAQCAt
NDksNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHN0YXRpYyBVbmlxdWVSZWY8QXV0
aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U+IGNyZWF0ZShXZWJDb3JlOjpBdXRoZW50aWNhdG9y
VHJhbnNwb3J0LCBPYnNlcnZlciYpOwotICAgIHN0YXRpYyBVbmlxdWVSZWY8QXV0aGVudGljYXRv
clRyYW5zcG9ydFNlcnZpY2U+IGNyZWF0ZU1vY2soV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5z
cG9ydCwgT2JzZXJ2ZXImLCBjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
Jik7CisgICAgc3RhdGljIFVuaXF1ZVJlZjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZT4g
Y3JlYXRlTW9jayhXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0LCBPYnNlcnZlciYsIGNv
bnN0IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mKTsKIAogICAg
IHZpcnR1YWwgfkF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlKCkgPSBkZWZhdWx0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2Nr
L01vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXgg
MDg0YzliZTIzZmIwYWJkOTU2M2RmOTFmYzY2NmUxMWYxMzUxMDZjNi4uZjhmZjJkNjc2NGJkN2E1
ZDE0YWJjYjE2MDM1MmRjZDFkMTBhNmZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrQXV0aGVudGljYXRvck1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9j
a0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyOjpNb2NrQXV0aGVudGljYXRvck1h
bmFnZXIoTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24p
CitNb2NrQXV0aGVudGljYXRvck1hbmFnZXI6Ok1vY2tBdXRoZW50aWNhdG9yTWFuYWdlcihXZWJD
b3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikK
ICAgICA6IG1fdGVzdENvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkKIHsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01v
Y2svTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oCmluZGV4IDg1
ZDgwMDk5NTY2NGVhNWVjZDkyYTRlYzA0NTc3ZGFhYWVhNTA5OWEuLmE4ZWI4MGE1N2E3N2ZiYjE2
ZGQxNjA4MmE5MjgzZThhOTk1ZWQ5NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrQXV0
aGVudGljYXRvck1hbmFnZXIuaApAQCAtMjgsMjIgKzI4LDIyIEBACiAjaWYgRU5BQkxFKFdFQl9B
VVRITikKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyIGZpbmFsIDogcHVibGljIEF1dGhlbnRp
Y2F0b3JNYW5hZ2VyIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBNb2NrQXV0aGVudGljYXRvck1h
bmFnZXIoTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYmKTsKKyAgICBleHBsaWNp
dCBNb2NrQXV0aGVudGljYXRvck1hbmFnZXIoV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbiYmKTsKIAogICAgIGJvb2wgaXNNb2NrKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQotICAgIHZvaWQgc2V0VGVzdENvbmZpZ3VyYXRpb24oTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pIHsgbV90ZXN0Q29uZmlndXJhdGlv
biA9IFdURk1vdmUoY29uZmlndXJhdGlvbik7IH0KKyAgICB2b2lkIHNldFRlc3RDb25maWd1cmF0
aW9uKFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mJiBjb25maWd1
cmF0aW9uKSB7IG1fdGVzdENvbmZpZ3VyYXRpb24gPSBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pOyB9
CiAKIHByaXZhdGU6CiAgICAgVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNl
PiBjcmVhdGVTZXJ2aWNlKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQsIEF1dGhlbnRp
Y2F0b3JUcmFuc3BvcnRTZXJ2aWNlOjpPYnNlcnZlciYpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQg
cmVzcG9uZFJlY2VpdmVkSW50ZXJuYWwoUmVzcG9uZCYmKSBmaW5hbDsKIAotICAgIE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gbV90ZXN0Q29uZmlndXJhdGlvbjsKKyAgICBXZWJD
b3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uIG1fdGVzdENvbmZpZ3VyYXRp
b247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlk
Q29ubmVjdGlvbi5jcHAKaW5kZXggOGUwZmU1MjZkMjA2ZWRjMGJjMzdlODZlNGFhZjRlZDVkOTdh
NGVmMy4uNjU4NDY2ZGU3YjEzMWViZTU0ZTY3MWY2NzA0M2M3ZmZlNmM1MzY4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlk
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNs
dWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBNb2Nr
SGlkID0gTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOwordXNpbmcgTW9j
ayA9IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb247CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBjYm9yOwogdXNpbmcgbmFtZXNwYWNl
IGZpZG87CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OnNlbmQoVmVj
dG9yPHVpbnQ4X3Q+JiYgZGF0YSwgRGF0YVNlbnRDYWxsYmFjayYmIGNhbGxiYWNrCiAgICAgICAg
ICAgICB3ZWFrVGhpcy0+YXNzZW1ibGVSZXF1ZXN0KFdURk1vdmUoZGF0YSkpOwogCiAgICAgICAg
ICAgICBhdXRvIHNlbnQgPSBEYXRhU2VudDo6WWVzOwotICAgICAgICAgICAgaWYgKHdlYWtUaGlz
LT5zdGFnZXNNYXRjaCgpICYmIHdlYWtUaGlzLT5tX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9
PSBNb2NrSGlkOjpFcnJvcjo6RGF0YU5vdFNlbnQpCisgICAgICAgICAgICBpZiAod2Vha1RoaXMt
PnN0YWdlc01hdGNoKCkgJiYgd2Vha1RoaXMtPm1fY29uZmlndXJhdGlvbi5oaWQtPmVycm9yID09
IE1vY2s6OkhpZEVycm9yOjpEYXRhTm90U2VudCkKICAgICAgICAgICAgICAgICBzZW50ID0gRGF0
YVNlbnQ6Ok5vOwogICAgICAgICAgICAgY2FsbGJhY2soc2VudCk7CiAgICAgICAgIH0pOwpAQCAt
OTIsNyArOTIsNyBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpzZW5kKFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEsIERhdGFTZW50Q2FsbGJhY2smJiBjYWxsYmFjawogCiB2b2lkIE1vY2tIaWRDb25u
ZWN0aW9uOjpyZWdpc3RlckRhdGFSZWNlaXZlZENhbGxiYWNrSW50ZXJuYWwoKQogewotICAgIGlm
IChzdGFnZXNNYXRjaCgpICYmIG1fY29uZmlndXJhdGlvbi5oaWQtPmVycm9yID09IE1vY2tIaWQ6
OkVycm9yOjpFbXB0eVJlcG9ydCkgeworICAgIGlmIChzdGFnZXNNYXRjaCgpICYmIG1fY29uZmln
dXJhdGlvbi5oaWQtPmVycm9yID09IE1vY2s6OkhpZEVycm9yOjpFbXB0eVJlcG9ydCkgewogICAg
ICAgICByZWNlaXZlUmVwb3J0KHsgfSk7CiAgICAgICAgIHNob3VsZENvbnRpbnVlRmVlZFJlcG9y
dHMoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTIzLDE0ICsxMjMsMTQgQEAgdm9pZCBNb2NrSGlk
Q29ubmVjdGlvbjo6cGFyc2VSZXF1ZXN0KCkKICAgICAvLyBTZXQgc3RhZ2VzLgogICAgIGlmICht
X3JlcXVlc3RNZXNzYWdlLT5jbWQoKSA9PSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0luaXQpIHsK
ICAgICAgICAgYXV0byBwcmV2aW91c1N1YlN0YWdlID0gbV9zdWJTdGFnZTsKLSAgICAgICAgbV9z
dWJTdGFnZSA9IE1vY2tIaWQ6OlN1YlN0YWdlOjpJbml0OwotICAgICAgICBpZiAocHJldmlvdXNT
dWJTdGFnZSA9PSBNb2NrSGlkOjpTdWJTdGFnZTo6TXNnKQotICAgICAgICAgICAgbV9zdGFnZSA9
IE1vY2tIaWQ6OlN0YWdlOjpSZXF1ZXN0OworICAgICAgICBtX3N1YlN0YWdlID0gTW9jazo6SGlk
U3ViU3RhZ2U6OkluaXQ7CisgICAgICAgIGlmIChwcmV2aW91c1N1YlN0YWdlID09IE1vY2s6Okhp
ZFN1YlN0YWdlOjpNc2cpCisgICAgICAgICAgICBtX3N0YWdlID0gTW9jazo6SGlkU3RhZ2U6OlJl
cXVlc3Q7CiAgICAgfQogICAgIGlmIChtX3JlcXVlc3RNZXNzYWdlLT5jbWQoKSA9PSBGaWRvSGlk
RGV2aWNlQ29tbWFuZDo6a0Nib3IgfHwgbV9yZXF1ZXN0TWVzc2FnZS0+Y21kKCkgPT0gRmlkb0hp
ZERldmljZUNvbW1hbmQ6OmtNc2cpCi0gICAgICAgIG1fc3ViU3RhZ2UgPSBNb2NrSGlkOjpTdWJT
dGFnZTo6TXNnOworICAgICAgICBtX3N1YlN0YWdlID0gTW9jazo6SGlkU3ViU3RhZ2U6Ok1zZzsK
IAotICAgIGlmIChtX3N0YWdlID09IE1vY2tIaWQ6OlN0YWdlOjpSZXF1ZXN0ICYmIG1fc3ViU3Rh
Z2UgPT0gTW9ja0hpZDo6U3ViU3RhZ2U6Ok1zZykgeworICAgIGlmIChtX3N0YWdlID09IE1vY2s6
OkhpZFN0YWdlOjpSZXF1ZXN0ICYmIG1fc3ViU3RhZ2UgPT0gTW9jazo6SGlkU3ViU3RhZ2U6Ok1z
ZykgewogICAgICAgICAvLyBNYWtlIHN1cmUgd2UgaXNzdWUgZGlmZmVyZW50IG1zZyBjbWQgZm9y
IENUQVAgYW5kIFUyRi4KICAgICAgICAgaWYgKG1fY29uZmlndXJhdGlvbi5oaWQtPmNhbkRvd25n
cmFkZSAmJiAhbV9jb25maWd1cmF0aW9uLmhpZC0+aXNVMmYpCiAgICAgICAgICAgICBtX2NvbmZp
Z3VyYXRpb24uaGlkLT5pc1UyZiA9IG1fcmVxdWVzdE1lc3NhZ2UtPmNtZCgpID09IEZpZG9IaWRE
ZXZpY2VDb21tYW5kOjprTXNnOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgTW9ja0hpZENvbm5l
Y3Rpb246OnBhcnNlUmVxdWVzdCgpCiAgICAgfQogCiAgICAgLy8gU3RvcmUgbm9uY2UuCi0gICAg
aWYgKG1fc3ViU3RhZ2UgPT0gTW9ja0hpZDo6U3ViU3RhZ2U6OkluaXQpIHsKKyAgICBpZiAobV9z
dWJTdGFnZSA9PSBNb2NrOjpIaWRTdWJTdGFnZTo6SW5pdCkgewogICAgICAgICBtX25vbmNlID0g
bV9yZXF1ZXN0TWVzc2FnZS0+Z2V0TWVzc2FnZVBheWxvYWQoKTsKICAgICAgICAgQVNTRVJUKG1f
bm9uY2Uuc2l6ZSgpID09IGtIaWRJbml0Tm9uY2VMZW5ndGgpOwogICAgIH0KQEAgLTE5MSwxNyAr
MTkxLDE3IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OmZlZWRSZXBvcnRzKCkKIHsKICAgICB1
c2luZyBuYW1lc3BhY2UgTW9ja0hpZENvbm5lY3Rpb25JbnRlcm5hbDsKIAotICAgIGlmIChtX3N1
YlN0YWdlID09IE1vY2tIaWQ6OlN1YlN0YWdlOjpJbml0KSB7CisgICAgaWYgKG1fc3ViU3RhZ2Ug
PT0gTW9jazo6SGlkU3ViU3RhZ2U6OkluaXQpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHBh
eWxvYWQ7CiAgICAgICAgIHBheWxvYWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShrSGlkSW5pdFJl
c3BvbnNlU2l6ZSk7CiAgICAgICAgIHBheWxvYWQuYXBwZW5kVmVjdG9yKG1fbm9uY2UpOwogICAg
ICAgICBzaXplX3Qgd3JpdGVQb3NpdGlvbiA9IHBheWxvYWQuc2l6ZSgpOwotICAgICAgICBpZiAo
c3RhZ2VzTWF0Y2goKSAmJiBtX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBNb2NrSGlkOjpF
cnJvcjo6V3JvbmdOb25jZSkKKyAgICAgICAgaWYgKHN0YWdlc01hdGNoKCkgJiYgbV9jb25maWd1
cmF0aW9uLmhpZC0+ZXJyb3IgPT0gTW9jazo6SGlkRXJyb3I6Oldyb25nTm9uY2UpCiAgICAgICAg
ICAgICBwYXlsb2FkWzBdLS07CiAgICAgICAgIHBheWxvYWQuZ3JvdyhrSGlkSW5pdFJlc3BvbnNl
U2l6ZSk7CiAgICAgICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKHBheWxvYWQuZGF0
YSgpICsgd3JpdGVQb3NpdGlvbiwgQ3RhcENoYW5uZWxJZFNpemUpOwogICAgICAgICBhdXRvIGNo
YW5uZWwgPSBrSGlkQnJvYWRjYXN0Q2hhbm5lbDsKLSAgICAgICAgaWYgKHN0YWdlc01hdGNoKCkg
JiYgbV9jb25maWd1cmF0aW9uLmhpZC0+ZXJyb3IgPT0gTW9ja0hpZDo6RXJyb3I6Oldyb25nQ2hh
bm5lbElkKQorICAgICAgICBpZiAoc3RhZ2VzTWF0Y2goKSAmJiBtX2NvbmZpZ3VyYXRpb24uaGlk
LT5lcnJvciA9PSBNb2NrOjpIaWRFcnJvcjo6V3JvbmdDaGFubmVsSWQpCiAgICAgICAgICAgICBj
aGFubmVsLS07CiAgICAgICAgIEZpZG9IaWRJbml0UGFja2V0IGluaXRQYWNrZXQoY2hhbm5lbCwg
Rmlkb0hpZERldmljZUNvbW1hbmQ6OmtJbml0LCBXVEZNb3ZlKHBheWxvYWQpLCBwYXlsb2FkLnNp
emUoKSk7CiAgICAgICAgIHJlY2VpdmVSZXBvcnQoaW5pdFBhY2tldC5nZXRTZXJpYWxpemVkRGF0
YSgpKTsKQEAgLTIxMCwxNCArMjEwLDE0IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OmZlZWRS
ZXBvcnRzKCkKICAgICB9CiAKICAgICBPcHRpb25hbDxGaWRvSGlkTWVzc2FnZT4gbWVzc2FnZTsK
LSAgICBpZiAobV9zdGFnZSA9PSBNb2NrSGlkOjpTdGFnZTo6SW5mbyAmJiBtX3N1YlN0YWdlID09
IE1vY2tIaWQ6OlN1YlN0YWdlOjpNc2cpIHsKKyAgICBpZiAobV9zdGFnZSA9PSBNb2NrOjpIaWRT
dGFnZTo6SW5mbyAmJiBtX3N1YlN0YWdlID09IE1vY2s6OkhpZFN1YlN0YWdlOjpNc2cpIHsKICAg
ICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGluZm9EYXRhOwogICAgICAgICBpZiAobV9jb25maWd1cmF0
aW9uLmhpZC0+Y2FuRG93bmdyYWRlKQogICAgICAgICAgICAgaW5mb0RhdGEgPSBlbmNvZGVBc0NC
T1IoQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSh7IFByb3RvY29sVmVyc2lvbjo6a0N0YXAs
IFByb3RvY29sVmVyc2lvbjo6a1UyZiB9LCBWZWN0b3I8dWludDhfdD4oYWFndWlkTGVuZ3RoLCAw
dSkpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaW5mb0RhdGEgPSBlbmNvZGVBc0NCT1Io
QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSh7IFByb3RvY29sVmVyc2lvbjo6a0N0YXAgfSwg
VmVjdG9yPHVpbnQ4X3Q+KGFhZ3VpZExlbmd0aCwgMHUpKSk7CiAgICAgICAgIGluZm9EYXRhLmlu
c2VydCgwLCBzdGF0aWNfY2FzdDx1aW50OF90PihDdGFwRGV2aWNlUmVzcG9uc2VDb2RlOjprU3Vj
Y2VzcykpOyAvLyBQcmVwZW5kIHN0YXR1cyBjb2RlLgotICAgICAgICBpZiAoc3RhZ2VzTWF0Y2go
KSAmJiBtX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBNb2NrSGlkOjpFcnJvcjo6V3JvbmdD
aGFubmVsSWQpCisgICAgICAgIGlmIChzdGFnZXNNYXRjaCgpICYmIG1fY29uZmlndXJhdGlvbi5o
aWQtPmVycm9yID09IE1vY2s6OkhpZEVycm9yOjpXcm9uZ0NoYW5uZWxJZCkKICAgICAgICAgICAg
IG1lc3NhZ2UgPSBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKG1fY3VycmVudENoYW5uZWwgLSAxLCBG
aWRvSGlkRGV2aWNlQ29tbWFuZDo6a0Nib3IsIGluZm9EYXRhKTsKICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi5oaWQtPmlzVTJmKQpAQCAtMjI3LDcgKzIy
Nyw3IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OmZlZWRSZXBvcnRzKCkKICAgICAgICAgfQog
ICAgIH0KIAotICAgIGlmIChtX3N0YWdlID09IE1vY2tIaWQ6OlN0YWdlOjpSZXF1ZXN0ICYmIG1f
c3ViU3RhZ2UgPT0gTW9ja0hpZDo6U3ViU3RhZ2U6Ok1zZykgeworICAgIGlmIChtX3N0YWdlID09
IE1vY2s6OkhpZFN0YWdlOjpSZXF1ZXN0ICYmIG1fc3ViU3RhZ2UgPT0gTW9jazo6SGlkU3ViU3Rh
Z2U6Ok1zZykgewogICAgICAgICBpZiAobV9jb25maWd1cmF0aW9uLmhpZC0+a2VlcEFsaXZlKSB7
CiAgICAgICAgICAgICBtX2NvbmZpZ3VyYXRpb24uaGlkLT5rZWVwQWxpdmUgPSBmYWxzZTsKICAg
ICAgICAgICAgIEZpZG9IaWRJbml0UGFja2V0IGluaXRQYWNrZXQobV9jdXJyZW50Q2hhbm5lbCwg
Rmlkb0hpZERldmljZUNvbW1hbmQ6OmtLZWVwQWxpdmUsIHsgQ3RhcEtlZXBBbGl2ZVN0YXR1c1By
b2Nlc3NpbmcgfSwgMSk7CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBNb2NrSGlkQ29ubmVjdGlv
bjo6ZmVlZFJlcG9ydHMoKQogICAgICAgICAgICAgY29udGludWVGZWVkUmVwb3J0cygpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlmIChzdGFnZXNNYXRjaCgpICYm
IG1fY29uZmlndXJhdGlvbi5oaWQtPmVycm9yID09IE1vY2tIaWQ6OkVycm9yOjpVbnN1cHBvcnRl
ZE9wdGlvbnMgJiYgKG1fcmVxdWlyZVJlc2lkZW50S2V5IHx8IG1fcmVxdWlyZVVzZXJWZXJpZmlj
YXRpb24pKQorICAgICAgICBpZiAoc3RhZ2VzTWF0Y2goKSAmJiBtX2NvbmZpZ3VyYXRpb24uaGlk
LT5lcnJvciA9PSBNb2NrOjpIaWRFcnJvcjo6VW5zdXBwb3J0ZWRPcHRpb25zICYmIChtX3JlcXVp
cmVSZXNpZGVudEtleSB8fCBtX3JlcXVpcmVVc2VyVmVyaWZpY2F0aW9uKSkKICAgICAgICAgICAg
IG1lc3NhZ2UgPSBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKG1fY3VycmVudENoYW5uZWwsIEZpZG9I
aWREZXZpY2VDb21tYW5kOjprQ2JvciwgeyBzdGF0aWNfY2FzdDx1aW50OF90PihDdGFwRGV2aWNl
UmVzcG9uc2VDb2RlOjprQ3RhcDJFcnJVbnN1cHBvcnRlZE9wdGlvbikgfSk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHBheWxvYWQ7CkBAIC0yNTQsNyArMjU0
LDcgQEAgdm9pZCBNb2NrSGlkQ29ubmVjdGlvbjo6ZmVlZFJlcG9ydHMoKQogICAgIGJvb2wgaXNG
aXJzdCA9IHRydWU7CiAgICAgd2hpbGUgKG1lc3NhZ2UtPm51bVBhY2tldHMoKSkgewogICAgICAg
ICBhdXRvIHJlcG9ydCA9IG1lc3NhZ2UtPnBvcE5leHRQYWNrZXQoKTsKLSAgICAgICAgaWYgKCFp
c0ZpcnN0ICYmIHN0YWdlc01hdGNoKCkgJiYgbV9jb25maWd1cmF0aW9uLmhpZC0+ZXJyb3IgPT0g
TW9ja0hpZDo6RXJyb3I6Oldyb25nQ2hhbm5lbElkKQorICAgICAgICBpZiAoIWlzRmlyc3QgJiYg
c3RhZ2VzTWF0Y2goKSAmJiBtX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBNb2NrOjpIaWRF
cnJvcjo6V3JvbmdDaGFubmVsSWQpCiAgICAgICAgICAgICByZXBvcnQgPSBGaWRvSGlkQ29udGlu
dWF0aW9uUGFja2V0KG1fY3VycmVudENoYW5uZWwgLSAxLCAwLCB7IH0pLmdldFNlcmlhbGl6ZWRE
YXRhKCk7CiAgICAgICAgIC8vIFBhY2tldHMgYXJlIGZlZWQgYXN5bmNocm9ub3VzbHkgdG8gbWlt
aWMgYWN0dWFsIGRhdGEgdHJhbnNtaXNzaW9uLgogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3JlcG9ydCA9IFdURk1vdmUocmVwb3J0KSwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyldKCkgbXV0YWJsZSB7CkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBNb2NrSGlkQ29ubmVj
dGlvbjo6c2hvdWxkQ29udGludWVGZWVkUmVwb3J0cygpCiAgICAgaWYgKCFtX2NvbmZpZ3VyYXRp
b24uaGlkLT5jb250aW51ZUFmdGVyRXJyb3JEYXRhKQogICAgICAgICByZXR1cm47CiAgICAgbV9j
b25maWd1cmF0aW9uLmhpZC0+Y29udGludWVBZnRlckVycm9yRGF0YSA9IGZhbHNlOwotICAgIG1f
Y29uZmlndXJhdGlvbi5oaWQtPmVycm9yID0gTW9ja0hpZDo6RXJyb3I6OlN1Y2Nlc3M7CisgICAg
bV9jb25maWd1cmF0aW9uLmhpZC0+ZXJyb3IgPSBNb2NrOjpIaWRFcnJvcjo6U3VjY2VzczsKICAg
ICBjb250aW51ZUZlZWRSZXBvcnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5l
Y3Rpb24uaAppbmRleCAzNzg4NjZmMzY4YWU4NGI2ZmM1OWNlYzcwZWE2ZTM0ODM5ZjdlMWE2Li40
MDgzNmQyODNmZGUwMTUyNWY1NjllMDcyOTY4MTk2ODdlMTdlMGRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9j
ay9Nb2NrSGlkQ29ubmVjdGlvbi5oCkBAIC0yOCw4ICsyOCw4IEBACiAjaWYgRU5BQkxFKFdFQl9B
VVRITikKIAogI2luY2x1ZGUgIkhpZENvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWRvSGlkTWVz
c2FnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIC8vIEFjY29yZGluZyB0byBkaWZm
ZXJlbnQgY29tYmluYXRpb25zIG9mIGVycm9yIGFuZCBzdGFnZXMsIGVycm9yIHdpbGwgbWFuaWZl
c3QgZGlmZmVyZW50bHkuCiBjbGFzcyBNb2NrSGlkQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxNb2NrSGlkQ29ubmVjdGlvbj4sIHB1YmxpYyBIaWRDb25uZWN0aW9uIHsK
IHB1YmxpYzoKLSAgICBNb2NrSGlkQ29ubmVjdGlvbihJT0hJRERldmljZVJlZiwgY29uc3QgTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYpOworICAgIE1vY2tIaWRDb25uZWN0aW9u
KElPSElERGV2aWNlUmVmLCBjb25zdCBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uJik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzZW5kKFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEsIERhdGFTZW50Q2FsbGJhY2smJikgZmluYWw7CkBAIC02MCwxMCArNjAsMTAgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNob3VsZENvbnRpbnVlRmVlZFJlcG9ydHMoKTsKICAgICB2b2lkIGNv
bnRpbnVlRmVlZFJlcG9ydHMoKTsKIAotICAgIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24gbV9jb25maWd1cmF0aW9uOworICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9uOwogICAgIE9wdGlvbmFsPGZpZG86OkZpZG9I
aWRNZXNzYWdlPiBtX3JlcXVlc3RNZXNzYWdlOwotICAgIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb246OkhpZDo6U3RhZ2UgbV9zdGFnZSB7IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb246OkhpZDo6U3RhZ2U6OkluZm8gfTsKLSAgICBNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uOjpIaWQ6OlN1YlN0YWdlIG1fc3ViU3RhZ2UgeyBNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OlN1YlN0YWdlOjpJbml0IH07CisgICAgV2ViQ29y
ZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkU3RhZ2UgbV9zdGFnZSB7
IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZFN0YWdlOjpJbmZvIH07Cisg
ICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkU3ViU3Rh
Z2UgbV9zdWJTdGFnZSB7IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZFN1
YlN0YWdlOjpJbml0IH07CiAgICAgdWludDMyX3QgbV9jdXJyZW50Q2hhbm5lbCB7IGZpZG86OmtI
aWRCcm9hZGNhc3RDaGFubmVsIH07CiAgICAgYm9vbCBtX3JlcXVpcmVSZXNpZGVudEtleSB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX3JlcXVpcmVVc2VyVmVyaWZpY2F0aW9uICB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2Nr
L01vY2tIaWRTZXJ2aWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL01vY2svTW9ja0hpZFNlcnZpY2UuY3BwCmluZGV4IDI0Y2MzNmIyY2Q1MzRkNGYyNTJk
M2ZmMDY4YzliNDk3YTZhOTI1NTkuLjg1MDVmNzVjZTliYmVmMThiYjI5YzY0ZjYyOGRiMGFkMTc4
NWJlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL01vY2svTW9ja0hpZFNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZFNlcnZpY2UuY3BwCkBAIC0zMyw3ICszMyw3
IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1Nb2NrSGlkU2VydmljZTo6TW9ja0hpZFNlcnZp
Y2UoT2JzZXJ2ZXImIG9ic2VydmVyLCBjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uJiBjb25maWd1cmF0aW9uKQorTW9ja0hpZFNlcnZpY2U6Ok1vY2tIaWRTZXJ2aWNlKE9i
c2VydmVyJiBvYnNlcnZlciwgY29uc3QgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICA6IEhpZFNlcnZpY2Uob2JzZXJ2ZXIpCiAg
ICAgLCBtX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZFNlcnZpY2Uu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hp
ZFNlcnZpY2UuaAppbmRleCBjYmUwMTVlZjBkNDU4YjkwNzk1YmI5NDEzZmNhNTJiOGI0OWU2M2Ux
Li5iZTFlYWQ2MTc5ODZhOTM5ZTZhYzJmYjQyYTM3OGEyOTljNTg3NmQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRTZXJ2
aWNlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9j
ay9Nb2NrSGlkU2VydmljZS5oCkBAIC0yOCwxMiArMjgsMTAgQEAKICNpZiBFTkFCTEUoV0VCX0FV
VEhOKQogCiAjaW5jbHVkZSAiSGlkU2VydmljZS5oIgotI2luY2x1ZGUgIk1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0cnVjdCBN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOwotCiBjbGFzcyBNb2NrSGlkU2Vydmlj
ZSBmaW5hbCA6IHB1YmxpYyBIaWRTZXJ2aWNlIHsKIHB1YmxpYzoKICAgICBNb2NrSGlkU2Vydmlj
ZShPYnNlcnZlciYsIGNvbnN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mKTsK
QEAgLTQyLDcgKzQwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtU3RhcnREaXNjb3Zl
cnkoKSBmaW5hbDsKICAgICBVbmlxdWVSZWY8SGlkQ29ubmVjdGlvbj4gY3JlYXRlSGlkQ29ubmVj
dGlvbihJT0hJRERldmljZVJlZikgY29uc3QgZmluYWw7CiAKLSAgICBNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKKyAgICBXZWJDb3JlOjpNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaApp
bmRleCAzMWFkNzFhMzEyN2JhYWE0NjZjNzI5ZGE1YmY0ZDFkNTJiNGUxYWE0Li4zNTU5YjgwZWI5
ODI4MGEwMWMxNTBhYzQyMmE0M2MyM2VjZDNhZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tM
b2NhbENvbm5lY3Rpb24uaApAQCAtMjgsMTMgKzI4LDEzIEBACiAjaWYgRU5BQkxFKFdFQl9BVVRI
TikKIAogI2luY2x1ZGUgIkxvY2FsQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIk1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IE1vY2tMb2NhbENvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgTG9jYWxDb25uZWN0aW9uIHsKIHB1
YmxpYzoKLSAgICBleHBsaWNpdCBNb2NrTG9jYWxDb25uZWN0aW9uKGNvbnN0IE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mKTsKKyAgICBleHBsaWNpdCBNb2NrTG9jYWxDb25uZWN0
aW9uKGNvbnN0IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mKTsK
IAogcHJpdmF0ZToKICAgICB2b2lkIGdldFVzZXJDb25zZW50KGNvbnN0IFN0cmluZyYgcmVhc29u
LCBVc2VyQ29uc2VudENhbGxiYWNrJiYpIGNvbnN0IGZpbmFsOwpAQCAtNDIsNyArNDIsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZ2V0QXR0ZXN0YXRpb24oY29uc3QgU3RyaW5nJiBycElkLCBjb25z
dCBTdHJpbmcmIHVzZXJuYW1lLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIEF0dGVzdGF0
aW9uQ2FsbGJhY2smJikgY29uc3QgZmluYWw7CiAgICAgTlNEaWN0aW9uYXJ5ICpzZWxlY3RDcmVk
ZW50aWFsKGNvbnN0IE5TQXJyYXkgKikgY29uc3QgZmluYWw7CiAKLSAgICBNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKKyAgICBXZWJDb3JlOjpNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9u
Lm1tCmluZGV4IDU3MWVjY2E3ZTRmNDcwZmM2OWI0MWNkZDI2MDM5Y2I5MjcxZDRhMGEuLmNkYjFh
YTM0MjVmOWU4Y2ZjNjI4ZjI1YmVhMmE3MjUwZTk3YWU4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2Nr
L01vY2tMb2NhbENvbm5lY3Rpb24ubW0KQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLU1vY2tMb2NhbENvbm5lY3Rpb246Ok1vY2tMb2NhbENvbm5lY3Rpb24oY29uc3Qg
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK01vY2tM
b2NhbENvbm5lY3Rpb246Ok1vY2tMb2NhbENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICA6IG1fY29u
ZmlndXJhdGlvbihjb25maWd1cmF0aW9uKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxTZXJ2aWNlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbFNl
cnZpY2UuaAppbmRleCA3ZWI4ZjIxNGJjMDRlN2RmZmIxMDEwYTY4MmY0ZjExMTBjNjMyNzYxLi45
MTY5YmQ3NjIzMmYwMGY5YzAyNGNhNDEwY2E0ZTBjOTU3YjkzMjc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbFNlcnZp
Y2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2Nr
L01vY2tMb2NhbFNlcnZpY2UuaApAQCAtMjgsMjEgKzI4LDE5IEBACiAjaWYgRU5BQkxFKFdFQl9B
VVRITikKIAogI2luY2x1ZGUgIkxvY2FsU2VydmljZS5oIgotI2luY2x1ZGUgIk1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0cnVj
dCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOwotCiBjbGFzcyBNb2NrTG9jYWxT
ZXJ2aWNlIGZpbmFsIDogcHVibGljIExvY2FsU2VydmljZSB7CiBwdWJsaWM6Ci0gICAgTW9ja0xv
Y2FsU2VydmljZShPYnNlcnZlciYsIGNvbnN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24mKTsKKyAgICBNb2NrTG9jYWxTZXJ2aWNlKE9ic2VydmVyJiwgY29uc3QgV2ViQ29yZTo6
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYpOwogCiBwcml2YXRlOgogICAgIGJv
b2wgcGxhdGZvcm1TdGFydERpc2NvdmVyeSgpIGNvbnN0IGZpbmFsOwogICAgIFVuaXF1ZVJlZjxM
b2NhbENvbm5lY3Rpb24+IGNyZWF0ZUxvY2FsQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwogCi0g
ICAgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247Cisg
ICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3Vy
YXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsU2VydmljZS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xv
Y2FsU2VydmljZS5tbQppbmRleCAxZWIwMTAyZWNlNzc2MWYzMzRlNDBiNTU0YWMxODgxZjkzMzdk
OTliLi5mZWMxOTI3ZGU1ZGNhMDQ1YjEwMWIzNjU2MTIzYTllYTU1N2E3ZjE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2Nh
bFNlcnZpY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vTW9jay9Nb2NrTG9jYWxTZXJ2aWNlLm1tCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1Nb2NrTG9jYWxTZXJ2aWNlOjpNb2NrTG9jYWxTZXJ2aWNlKE9ic2VydmVy
JiBvYnNlcnZlciwgY29uc3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYgY29u
ZmlndXJhdGlvbikKK01vY2tMb2NhbFNlcnZpY2U6Ok1vY2tMb2NhbFNlcnZpY2UoT2JzZXJ2ZXIm
IG9ic2VydmVyLCBjb25zdCBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uJiBjb25maWd1cmF0aW9uKQogICAgIDogTG9jYWxTZXJ2aWNlKG9ic2VydmVyKQogICAgICwg
bV9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2
aWNlLmgKaW5kZXggMTMyY2RlNGQ2YjY2ZGFjMzFhY2M2Mjk2YzVlOTk4MjZhMjZiMzMwMi4uOWZk
MWM5YjQxMGI4MjMyYjRkMzVlMGUxMjg2N2ZkMzY0NmQ1NjZiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTmZjU2VydmljZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9j
a05mY1NlcnZpY2UuaApAQCAtMjcsMTggKzI3LDE2IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhO
KQogCi0jaW5jbHVkZSAiTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIk5mY1NlcnZpY2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24uaD4KIAogT0JKQ19DTEFTUyBOU0RhdGE7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1zdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjsKLQog
Y2xhc3MgTW9ja05mY1NlcnZpY2UgZmluYWwgOiBwdWJsaWMgTmZjU2VydmljZSB7CiBwdWJsaWM6
Ci0gICAgTW9ja05mY1NlcnZpY2UoT2JzZXJ2ZXImLCBjb25zdCBNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uJik7CisgICAgTW9ja05mY1NlcnZpY2UoT2JzZXJ2ZXImLCBjb25zdCBX
ZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJik7CiAKICAgICBOU0Rh
dGEqIHRyYW5zY2VpdmUoKTsKIApAQCAtNDcsNyArNDUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBkZXRlY3RUYWdzKCkgY29uc3Q7CiAKLSAgICBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKKyAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vTW9jay9Nb2NrTmZjU2VydmljZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja05mY1NlcnZpY2UubW0KaW5kZXggY2EzZGUyMTAyMmIzYTM5
MTI3ODBiYTA3MWIxZmRkNjQ2ZGM5YmE0YS4uY2E1MjJjNWUzYTNkMjhkNDIwNTU4MzcyYjE1NzFm
NzEzZTM3ZDFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vTW9jay9Nb2NrTmZjU2VydmljZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLm1tCkBAIC0xMDgsNyAr
MTA4LDcgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBmaWRv
OwotdXNpbmcgTW9ja05mYyA9IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5m
YzsKK3VzaW5nIE1vY2sgPSBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uOwogCiAjaWYgSEFWRShORUFSX0ZJRUxEKQogCkBAIC0xNDMsNyArMTQzLDcgQEAgc3RhdGlj
IE5TRGF0YSogTkZSZWFkZXJTZXNzaW9uVHJhbnNjZWl2ZShpZCwgU0VMLCBOU0RhdGEgKikKIAog
I2VuZGlmIC8vIEhBVkUoTkVBUl9GSUVMRCkKIAotTW9ja05mY1NlcnZpY2U6Ok1vY2tOZmNTZXJ2
aWNlKE9ic2VydmVyJiBvYnNlcnZlciwgY29uc3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbiYgY29uZmlndXJhdGlvbikKK01vY2tOZmNTZXJ2aWNlOjpNb2NrTmZjU2VydmljZShP
YnNlcnZlciYgb2JzZXJ2ZXIsIGNvbnN0IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBOZmNTZXJ2aWNlKG9ic2VydmVyKQog
ICAgICwgbV9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pCiB7CkBAIC0xNjksNyArMTY5LDcg
QEAgdm9pZCBNb2NrTmZjU2VydmljZTo6cGxhdGZvcm1TdGFydERpc2NvdmVyeSgpCiAgICAgICAg
IG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihtZXRob2RUb1N3aXp6bGUxLCAoSU1QKU5GUmVhZGVy
U2Vzc2lvblNldERlbGVnYXRlKTsKIAogICAgICAgICBNZXRob2QgbWV0aG9kVG9Td2l6emxlMiA9
IGNsYXNzX2dldEluc3RhbmNlTWV0aG9kKGdldE5GUmVhZGVyU2Vzc2lvbkNsYXNzKCksIEBzZWxl
Y3Rvcihjb25uZWN0VGFnOikpOwotICAgICAgICBpZiAobV9jb25maWd1cmF0aW9uLm5mYy0+ZXJy
b3IgPT0gTW9ja05mYzo6RXJyb3I6Ok5vQ29ubmVjdGlvbnMpCisgICAgICAgIGlmIChtX2NvbmZp
Z3VyYXRpb24ubmZjLT5lcnJvciA9PSBNb2NrOjpOZmNFcnJvcjo6Tm9Db25uZWN0aW9ucykKICAg
ICAgICAgICAgIG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihtZXRob2RUb1N3aXp6bGUyLCAoSU1Q
KU5GUmVhZGVyU2Vzc2lvbkNvbm5lY3RUYWdGYWlsKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgbWV0aG9kX3NldEltcGxlbWVudGF0aW9uKG1ldGhvZFRvU3dpenpsZTIsIChJTVApTkZSZWFk
ZXJTZXNzaW9uQ29ubmVjdFRhZyk7CkBAIC0xOTQsMTIgKzE5NCwxMiBAQCB2b2lkIE1vY2tOZmNT
ZXJ2aWNlOjpwbGF0Zm9ybVN0YXJ0RGlzY292ZXJ5KCkKIHZvaWQgTW9ja05mY1NlcnZpY2U6OmRl
dGVjdFRhZ3MoKSBjb25zdAogewogI2lmIEhBVkUoTkVBUl9GSUVMRCkKLSAgICBpZiAobV9jb25m
aWd1cmF0aW9uLm5mYy0+ZXJyb3IgPT0gTW9ja05mYzo6RXJyb3I6Ok5vVGFncykKKyAgICBpZiAo
bV9jb25maWd1cmF0aW9uLm5mYy0+ZXJyb3IgPT0gTW9jazo6TmZjRXJyb3I6Ok5vVGFncykKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VCbG9ja1B0cihbY29uZmln
dXJhdGlvbiA9IG1fY29uZmlndXJhdGlvbl0gewogICAgICAgICBhdXRvIHRhZ3MgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgaWYgKGNvbmZpZ3VyYXRp
b24ubmZjLT5lcnJvciA9PSBNb2NrTmZjOjpFcnJvcjo6V3JvbmdUYWdUeXBlIHx8IGNvbmZpZ3Vy
YXRpb24ubmZjLT5tdWx0aXBsZVRhZ3MpCisgICAgICAgIGlmIChjb25maWd1cmF0aW9uLm5mYy0+
ZXJyb3IgPT0gTW9jazo6TmZjRXJyb3I6Oldyb25nVGFnVHlwZSB8fCBjb25maWd1cmF0aW9uLm5m
Yy0+bXVsdGlwbGVUYWdzKQogICAgICAgICAgICAgW3RhZ3MgYWRkT2JqZWN0OmFkb3B0TlMoW1tX
S01vY2tORlRhZyBhbGxvY10gaW5pdFdpdGhUeXBlOk5GVGFnVHlwZVVua25vd25dKS5nZXQoKV07
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFt0YWdzIGFkZE9iamVjdDphZG9wdE5TKFtbV0tN
b2NrTkZUYWcgYWxsb2NdIGluaXRXaXRoVHlwZTpORlRhZ1R5cGVHZW5lcmljNEFdKS5nZXQoKV07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9N
b2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTNlODVjMThlM2Fj
NmE3ZTk1ZTdkNDYzYjAzOWE2NTliOWU5NmFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL01vY2svTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oCisrKyAvZGV2L251
bGwKQEAgLTEsOTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdFQl9BVVRITikKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24gewotICAgIHN0cnVjdCBMb2NhbCB7Ci0gICAgICAgIGJvb2wgYWNjZXB0QXV0aGVudGljYXRp
b24geyBmYWxzZSB9OwotICAgICAgICBib29sIGFjY2VwdEF0dGVzdGF0aW9uIHsgZmFsc2UgfTsK
LSAgICAgICAgU3RyaW5nIHByaXZhdGVLZXlCYXNlNjQ7Ci0gICAgICAgIFN0cmluZyB1c2VyQ2Vy
dGlmaWNhdGVCYXNlNjQ7Ci0gICAgICAgIFN0cmluZyBpbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRl
QmFzZTY0OwotICAgICAgICBTdHJpbmcgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDsKLSAgICB9
OwotCi0gICAgc3RydWN0IEhpZCB7Ci0gICAgICAgIGVudW0gY2xhc3MgU3RhZ2UgOiBib29sIHsK
LSAgICAgICAgICAgIEluZm8sCi0gICAgICAgICAgICBSZXF1ZXN0Ci0gICAgICAgIH07Ci0KLSAg
ICAgICAgZW51bSBjbGFzcyBTdWJTdGFnZSA6IGJvb2wgewotICAgICAgICAgICAgSW5pdCwKLSAg
ICAgICAgICAgIE1zZwotICAgICAgICB9OwotCi0gICAgICAgIGVudW0gY2xhc3MgRXJyb3IgOiB1
aW50OF90IHsKLSAgICAgICAgICAgIFN1Y2Nlc3MsCi0gICAgICAgICAgICBEYXRhTm90U2VudCwK
LSAgICAgICAgICAgIEVtcHR5UmVwb3J0LAotICAgICAgICAgICAgV3JvbmdDaGFubmVsSWQsCi0g
ICAgICAgICAgICBNYWxpY2lvdXNQYXlsb2FkLAotICAgICAgICAgICAgVW5zdXBwb3J0ZWRPcHRp
b25zLAotICAgICAgICAgICAgV3JvbmdOb25jZQotICAgICAgICB9OwotCi0gICAgICAgIFZlY3Rv
cjxTdHJpbmc+IHBheWxvYWRCYXNlNjQ7Ci0gICAgICAgIFN0YWdlIHN0YWdlIHsgU3RhZ2U6Oklu
Zm8gfTsKLSAgICAgICAgU3ViU3RhZ2Ugc3ViU3RhZ2UgeyBTdWJTdGFnZTo6SW5pdCB9OwotICAg
ICAgICBFcnJvciBlcnJvciB7IEVycm9yOjpTdWNjZXNzIH07Ci0gICAgICAgIGJvb2wgaXNVMmYg
eyBmYWxzZSB9OwotICAgICAgICBib29sIGtlZXBBbGl2ZSB7IGZhbHNlIH07Ci0gICAgICAgIGJv
b2wgZmFzdERhdGFBcnJpdmFsIHsgZmFsc2UgfTsKLSAgICAgICAgYm9vbCBjb250aW51ZUFmdGVy
RXJyb3JEYXRhIHsgZmFsc2UgfTsKLSAgICAgICAgYm9vbCBjYW5Eb3duZ3JhZGUgeyBmYWxzZSB9
OwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgTmZjIHsKLSAgICAgICAgZW51bSBjbGFzcyBFcnJvciA6
IHVpbnQ4X3QgewotICAgICAgICAgICAgU3VjY2VzcywKLSAgICAgICAgICAgIE5vVGFncywKLSAg
ICAgICAgICAgIFdyb25nVGFnVHlwZSwKLSAgICAgICAgICAgIE5vQ29ubmVjdGlvbnMsCi0gICAg
ICAgICAgICBNYWxpY2lvdXNQYXlsb2FkCi0gICAgICAgIH07Ci0KLSAgICAgICAgRXJyb3IgZXJy
b3IgeyBFcnJvcjo6U3VjY2VzcyB9OwotICAgICAgICBWZWN0b3I8U3RyaW5nPiBwYXlsb2FkQmFz
ZTY0OwotICAgICAgICBib29sIG11bHRpcGxlVGFncyB7IGZhbHNlIH07Ci0gICAgfTsKLQotICAg
IGJvb2wgc2lsZW50RmFpbHVyZSB7IGZhbHNlIH07Ci0gICAgT3B0aW9uYWw8TG9jYWw+IGxvY2Fs
OwotICAgIE9wdGlvbmFsPEhpZD4gaGlkOwotICAgIE9wdGlvbmFsPE5mYz4gbmZjOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggODc4MjBkMzNhY2QyM2U4
MWQ4YzczM2UxMDFmY2U4OWJkNTIxYTkzNy4uNmE4ZmFmOTIzOTQ3NjAzMmFlZDUzZjc3ZTIzN2E5
NWIzNzI2NjNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC05MzkyLDYgKzkzOTIsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclNP
QXV0aG9yaXphdGlvbkxvYWQoY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIEMKIH0KICNlbmRpZgog
CisjaWYgRU5BQkxFKFdFQl9BVVRITikKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uKE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24mJiBjb25maWd1cmF0aW9uKQoreworICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+c2V0TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKK30K
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIE1FUkdFX1dIRUVMX0VW
RU5UUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA4Yzc3NTA5NmNk
MTZjNzNhNGQ2MzgzMDQwMjczYjAwOWM4YTI2Nzk5Li5iN2E5YWY4MTdiYTVlZGM5M2FkMDJhOWVi
YjE5MTY3Y2M4ZmQ4ODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtMjEzLDYgKzIxMyw3IEBAIHN0cnVjdCBFeGNlcHRpb25EZXRhaWxzOwogc3RydWN0IEZpbGVD
aG9vc2VyU2V0dGluZ3M7CiBzdHJ1Y3QgR2xvYmFsV2luZG93SWRlbnRpZmllcjsKIHN0cnVjdCBN
ZWRpYVN0cmVhbVJlcXVlc3Q7CitzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbjsKIHN0cnVjdCBQcmV3YXJtSW5mb3JtYXRpb247CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5E
YXRhOwogc3RydWN0IFNoYXJlRGF0YTsKQEAgLTE1ODcsNiArMTU4OCwxMCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoV2ViUHJvY2Vz
c1Byb3h5JiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiByZXNvdXJjZURpcmVjdG9yeVVSTCwgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIHZv
aWQgc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihXZWJDb3JlOjpNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAg
V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBSZWY8QVBJOjpQYWdl
Q29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBk
YzY1Mjc2NmMyOGM0OGZkYmE5MTViNGY3NzE0NTY5ZjgwNGZhM2M0Li44MzkzN2QyMDRlOGQwYmQ4
YzJhMDU3ODExYjU3MjM0MmMwY2E2MDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC01NzQsNCArNTc0LDggQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZVByb3h5IHsKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykK
ICAgICBEaWRDcmVhdGVDb250ZXh0Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKFdlYktpdDo6TGF5
ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJRCk7CiAjZW5kaWYKKworI2lmIEVOQUJMRShXRUJf
QVVUSE4pCisgICAgU2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihzdHJ1Y3Qg
V2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9u
KTsKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDRkNDkwOTFhNzg3YjdmZDVhODNlZjAzZjc2
ZmNmY2RjOWNkNmUxZTUuLjk0ZGU5ZWVjZjNjNTg5M2Y5ZmE5MmQyY2ZjNTMzMTkwMzRmMjdiZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgKQEAgLTY0LDYgKzY0LDggQEAgY2xhc3MgSFRUUENvb2tpZVN0b3JlOwog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVnaXN0cmFibGVEb21haW47CiBjbGFzcyBTZWN1
cml0eU9yaWdpbjsKKworc3RydWN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb247
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzgsNyArODAsNiBAQCBjbGFzcyBXZWJQcm9j
ZXNzUHJveHk7CiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU7CiBlbnVtIGNs
YXNzIFdlYnNpdGVEYXRhRmV0Y2hPcHRpb247CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZTsK
LXN0cnVjdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOwogc3RydWN0IFdlYnNp
dGVEYXRhUmVjb3JkOwogc3RydWN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOwogCkBAIC0y
NTIsNyArMjUzLDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICBBdXRo
ZW50aWNhdG9yTWFuYWdlciYgYXV0aGVudGljYXRvck1hbmFnZXIoKSB7IHJldHVybiBtX2F1dGhl
bnRpY2F0b3JNYW5hZ2VyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uKE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mJik7Cisg
ICAgdm9pZCBzZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKFdlYkNvcmU6Ok1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mJik7CiAjZW5kaWYKIAogICAgIHZvaWQg
ZGlkQ3JlYXRlTmV0d29ya1Byb2Nlc3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA1YTFlYWFmOThlZjJjMDliZjY5YTk1NTE4MDNl
NjBjZmQzNjYwOGEuLjYzOGViZWQ1ODUzZmQ3YWQ0NzQ5OTM1MTNlNmFmYTAxYjA4NzBiN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTA3Myw3ICsxMDczLDYgQEAKIAkJNTdEQ0VEQjEyMTRDNjA0ODAwMTZCODQ3IC8qIEF1dGhlbnRp
Y2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
RENFRDhCMjE0ODVCRDcwMDE2Qjg0NyAvKiBBdXRoZW50aWNhdG9yLmggKi87IH07CiAJCTU3RENF
REIyMjE0QzYwNEMwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRURBNjIxNDlG
OURBMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oICovOyB9OwogCQk1
N0RDRURCMzIxNEM2MDUzMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NjA4
Mjk1MjAyQkQ4QkEwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5o
ICovOyB9OwotCQk1N0RDRURCRjIxNEYwRENGMDAxNkI4NDcgLyogTW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTdEQ0VEQkUyMTRDQTAxQjAwMTZCODQ3IC8qIE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24uaCAqLzsgfTsKIAkJNTdEQ0VEQzMyMTRGMTE0QzAwMTZCODQ3IC8qIE1v
Y2tMb2NhbFNlcnZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3RENFREMxMjE0RjExNEMwMDE2Qjg0NyAvKiBNb2NrTG9jYWxTZXJ2aWNlLmggKi87
IH07CiAJCTU3RENFREM3MjE0RjE4MzAwMDE2Qjg0NyAvKiBNb2NrTG9jYWxDb25uZWN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRURDNTIx
NEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlvbi5oICovOyB9OwogCQk1N0RDRURD
QjIxNEY0RTQyMDAxNkI4NDcgLyogTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRURDOTIxNEY0RTQyMDAx
NkI4NDcgLyogTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggKi87IH07CkBAIC0zNTY0LDcgKzM1
NjMsNiBAQAogCQk1N0RDRURBNzIxNEE1NjhCMDAxNkI4NDcgLyogTG9jYWxDb25uZWN0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IExvY2FsQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1N0RDRURBODIxNEE1NjhCMDAxNkI4NDcgLyogTG9jYWxDb25uZWN0aW9uLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gTG9jYWxDb25uZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1N0RDRURBQTIxNEI5QjQzMDAxNkI4NDcgLyogRGV2aWNlSWRlbnRpdHlT
UEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlSWRlbnRpdHlTUEkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNTdEQ0VEQkUyMTRDQTAxQjAwMTZCODQ3IC8qIE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0RDRURD
MTIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
b2NrTG9jYWxTZXJ2aWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3RENFREMy
MjE0RjExNEMwMDE2Qjg0NyAvKiBNb2NrTG9jYWxTZXJ2aWNlLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gTW9ja0xvY2FsU2VydmljZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTdEQ0VEQzUyMTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTW9ja0xvY2FsQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNzE0Myw3ICs3MTQxLDYgQEAKIAkJCQk1N0RDRURDMjIxNEYxMTRDMDAxNkI4NDcgLyog
TW9ja0xvY2FsU2VydmljZS5tbSAqLywKIAkJCQk1N0I4MjY0QTIzMDYwM0MxMDBCNzJFQjAgLyog
TW9ja05mY1NlcnZpY2UuaCAqLywKIAkJCQk1N0I4MjY0QjIzMDYwM0MxMDBCNzJFQjAgLyogTW9j
a05mY1NlcnZpY2UubW0gKi8sCi0JCQkJNTdEQ0VEQkUyMTRDQTAxQjAwMTZCODQ3IC8qIE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gTW9j
azsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC05NTgzLDcgKzk1ODAsNiBAQAogCQkJ
CTU3RENFREM3MjE0RjE4MzAwMDE2Qjg0NyAvKiBNb2NrTG9jYWxDb25uZWN0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1N0RDRURDMzIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2FsU2Vydmlj
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdCODI2NEMyMzA2MDNDMTAwQjcyRUIwIC8qIE1vY2tO
ZmNTZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKLQkJCQk1N0RDRURCRjIxNEYwRENGMDAxNkI4NDcg
LyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQzBFM0FBN0MxMjA5RTgzQzAwQTQ5RDAxIC8qIE1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkQ1MDM2NkIxQkNERTE3OTAwRTIwQkIzIC8qIE5hdGl2ZVdlYkdlc3R1cmVFdmVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMjYzMTcyQ0YxOEI0Njk0OTAwNjVCOUMzIC8qIE5hdGl2ZVdlYlRv
dWNoRXZlbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAyOWYy
NTMwNzMxMjNmMWU3YWQyYjlhYTU3Y2ViMzQ1OTdhODBlN2E4Li40ZTYyOTU5ODIwM2E1MGU2OWQ1
YWEwN2FhZjg2YzhhOWM3YjVkMGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtOTgsNiAr
OTgsMTAgQEAKICNpbmNsdWRlICJQcmludGVyTGlzdEd0ay5oIgogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoV0VCX0FVVEhOKQorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbi5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMTM1Nyw0ICsxMzYx
LDExIEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRVc2VySXNJbnRlcmFjdGluZyhib29sIHVz
ZXJJc0ludGVyYWN0aW5nKQogICAgIG1fcGFnZS5zZXRVc2VySXNJbnRlcmFjdGluZyh1c2VySXNJ
bnRlcmFjdGluZyk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQordm9pZCBXZWJDaHJvbWVD
bGllbnQ6OnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oY29uc3QgTW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK3sKKyAgICBtX3Bh
Z2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA3N2ZlMzA3NjA1Zjg1ZDNhZDg1NzFkODI1
ZGRkZTE1YzY3M2E3ODIwLi45OTkxOGM3MDA0OTVjMTBmMWFhOTc0YjFjNmM1NzA3YjAyZmFkMWU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zODEsNiArMzgxLDEwIEBAIHByaXZhdGU6CiAgICAg
Ym9vbCB1c2VySXNJbnRlcmFjdGluZygpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2V0VXNlcklz
SW50ZXJhY3RpbmcoYm9vbCkgZmluYWw7CiAKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIHZv
aWQgc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJikgZmluYWw7CisjZW5kaWYKKwogICAg
IFN0cmluZyBtX2NhY2hlZFRvb2xUaXA7CiAgICAgbXV0YWJsZSBSZWZQdHI8V2ViRnJhbWU+IG1f
Y2FjaGVkRnJhbWVTZXRMYXJnZXN0RnJhbWU7CiAgICAgbXV0YWJsZSBib29sIG1fY2FjaGVkTWFp
bkZyYW1lSGFzSG9yaXpvbnRhbFNjcm9sbGJhciB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmMwN2Y3YWYzNzM5YmNhMmYwNWI3
NDRhMjViMDM4M2U0NjFkMDFlZi4uOTUzYzVmN2ExNjRmZDhlNjNiZjIxOTUyYzk5NTgyNmE1M2Q1
ZWIzYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIxIEBACisyMDE5LTEwLTA4ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBNb3ZlIHRoZSBtb2NrIHRlc3RpbmcgZW50cmFu
Y2UgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDI1NjAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1OTczNzkzPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RS
OjpUZXN0UnVubmVyOjpzZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoK
KyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAyMDE5LTEwLTA5ICB5b3Vlbm4gZmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGVzdFJ1bm5lci5zZXRXZWJSVENVbmlm
aWVkUGxhbkVuYWJsZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDhjOTdjN2IwNTg0
ZWQzYTQ5NjVjMzM4OTdjN2RlYTcxZjEyYjgyZWUuLjk1NzAxNDQ0MTU3NDZmODM0ZTczZGMzNzFj
MDQxYTU3NDlhMDFjZGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzkxLDggKzM5
MSw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKIAogICAgIHZvaWQgc2V0U2VydmljZVdvcmtl
ckZldGNoVGltZW91dChkb3VibGUgc2Vjb25kcyk7CiAKLSAgICAvLyBXZWJBdXRoTgotICAgIHZv
aWQgc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihvYmplY3QgY29uZmlndXJh
dGlvbik7CisgICAgLy8gV2ViQXV0aG4KICAgICB2b2lkIGFkZFRlc3RLZXlUb0tleWNoYWluKERP
TVN0cmluZyBwcml2YXRlS2V5QmFzZTY0LCBET01TdHJpbmcgYXR0ckxhYmVsLCBET01TdHJpbmcg
YXBwbGljYXRpb25UYWdCYXNlNjQpOwogICAgIHZvaWQgY2xlYW5VcEtleWNoYWluKERPTVN0cmlu
ZyBhdHRyTGFiZWwsIG9wdGlvbmFsIERPTVN0cmluZyBhcHBsaWNhdGlvblRhZ0Jhc2U2NCk7CiAg
ICAgYm9vbGVhbiBrZXlFeGlzdHNJbktleWNoYWluKERPTVN0cmluZyBhdHRyTGFiZWwsIERPTVN0
cmluZyBhcHBsaWNhdGlvblRhZ0Jhc2U2NCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCA1ZmVhODNkY2Y5ZjRhYThm
YWJmMTJmM2RmOGZjZmZjNTAyOGEyNjBiLi40NjE3ZWUzZDM0MWRjMWEwZTdmYjNjMDFiZWRiNThk
ZjVlZTg3YTgxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTI2MjgsMzAxICsyNjI4LDcgQEAgdm9pZCBUZXN0UnVu
bmVyOjpzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0KGRvdWJsZSBzZWNvbmRzKQogICAgIFdL
QnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCku
YnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7
CiB9CiAKLS8vIFdlYkF1dGhOCi12b2lkIFRlc3RSdW5uZXI6OnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oSlNWYWx1ZVJlZiBjb25maWd1cmF0aW9uVmFsdWUpCi17Ci0gICAg
YXV0byYgaW5qZWN0ZWRCdW5kbGUgPSBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCk7Ci0gICAg
V0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoaW5q
ZWN0ZWRCdW5kbGUucGFnZSgpLT5wYWdlKCkpOwotICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0g
V0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7Ci0gICAgaWYgKCFK
U1ZhbHVlSXNPYmplY3QoY29udGV4dCwgY29uZmlndXJhdGlvblZhbHVlKSkKLSAgICAgICAgcmV0
dXJuOwotICAgIEpTT2JqZWN0UmVmIGNvbmZpZ3VyYXRpb24gPSBKU1ZhbHVlVG9PYmplY3QoY29u
dGV4dCwgY29uZmlndXJhdGlvblZhbHVlLCAwKTsKLQotICAgIFZlY3RvcjxXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4+IGNvbmZpZ3VyYXRpb25LZXlzOwotICAgIFZlY3RvcjxXS1JldGFpblB0cjxX
S1R5cGVSZWY+PiBjb25maWd1cmF0aW9uVmFsdWVzOwotCi0gICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IHNpbGVudEZhaWx1cmVQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJzaWxlbnRGYWlsdXJlIikpOwotICAgIEpTVmFsdWVSZWYgc2lsZW50RmFp
bHVyZVZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBjb25maWd1cmF0aW9uLCBz
aWxlbnRGYWlsdXJlUHJvcGVydHlOYW1lLmdldCgpLCAwKTsKLSAgICBpZiAoIUpTVmFsdWVJc1Vu
ZGVmaW5lZChjb250ZXh0LCBzaWxlbnRGYWlsdXJlVmFsdWUpKSB7Ci0gICAgICAgIGlmICghSlNW
YWx1ZUlzQm9vbGVhbihjb250ZXh0LCBzaWxlbnRGYWlsdXJlVmFsdWUpKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBib29sIHNpbGVudEZhaWx1cmUgPSBKU1ZhbHVlVG9Cb29sZWFuKGNv
bnRleHQsIHNpbGVudEZhaWx1cmVWYWx1ZSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb25LZXlzLmFw
cGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTaWxlbnRGYWlsdXJl
IikpKTsKLSAgICAgICAgY29uZmlndXJhdGlvblZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jvb2xl
YW5DcmVhdGUoc2lsZW50RmFpbHVyZSkpLmdldCgpKTsKLSAgICB9Ci0KLSAgICBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gbG9jYWxQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJsb2NhbCIpKTsKLSAgICBKU1ZhbHVlUmVmIGxvY2FsVmFsdWUgPSBKU09i
amVjdEdldFByb3BlcnR5KGNvbnRleHQsIGNvbmZpZ3VyYXRpb24sIGxvY2FsUHJvcGVydHlOYW1l
LmdldCgpLCAwKTsKLSAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCBsb2NhbFZh
bHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChjb250ZXh0LCBsb2NhbFZhbHVlKSkgewotICAgICAgICBp
ZiAoIUpTVmFsdWVJc09iamVjdChjb250ZXh0LCBsb2NhbFZhbHVlKSkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgSlNPYmplY3RSZWYgbG9jYWwgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4
dCwgbG9jYWxWYWx1ZSwgMCk7Ci0KLSAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGFj
Y2VwdEF1dGhlbnRpY2F0aW9uUHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiYWNjZXB0QXV0aGVudGljYXRpb24iKSk7Ci0gICAgICAgIEpTVmFsdWVSZWYg
YWNjZXB0QXV0aGVudGljYXRpb25WYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwg
bG9jYWwsIGFjY2VwdEF1dGhlbnRpY2F0aW9uUHJvcGVydHlOYW1lLmdldCgpLCAwKTsKLSAgICAg
ICAgaWYgKCFKU1ZhbHVlSXNCb29sZWFuKGNvbnRleHQsIGFjY2VwdEF1dGhlbnRpY2F0aW9uVmFs
dWUpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBib29sIGFjY2VwdEF1dGhlbnRpY2F0
aW9uID0gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhY2NlcHRBdXRoZW50aWNhdGlvblZhbHVl
KTsKLQotICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYWNjZXB0QXR0ZXN0YXRpb25Q
cm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJhY2NlcHRB
dHRlc3RhdGlvbiIpKTsKLSAgICAgICAgSlNWYWx1ZVJlZiBhY2NlcHRBdHRlc3RhdGlvblZhbHVl
ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBsb2NhbCwgYWNjZXB0QXR0ZXN0YXRpb25Q
cm9wZXJ0eU5hbWUuZ2V0KCksIDApOwotICAgICAgICBpZiAoIUpTVmFsdWVJc0Jvb2xlYW4oY29u
dGV4dCwgYWNjZXB0QXR0ZXN0YXRpb25WYWx1ZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGJvb2wgYWNjZXB0QXR0ZXN0YXRpb24gPSBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFj
Y2VwdEF0dGVzdGF0aW9uVmFsdWUpOwotCi0gICAgICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4+IGxvY2FsS2V5czsKLSAgICAgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLVHlwZVJl
Zj4+IGxvY2FsVmFsdWVzOwotICAgICAgICBsb2NhbEtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkFjY2VwdEF1dGhlbnRpY2F0aW9uIikpKTsKLSAgICAg
ICAgbG9jYWxWYWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGFjY2VwdEF1dGhl
bnRpY2F0aW9uKSkuZ2V0KCkpOwotICAgICAgICBsb2NhbEtleXMuYXBwZW5kKGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkFjY2VwdEF0dGVzdGF0aW9uIikpKTsKLSAgICAg
ICAgbG9jYWxWYWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGFjY2VwdEF0dGVz
dGF0aW9uKSkuZ2V0KCkpOwotCi0gICAgICAgIGlmIChhY2NlcHRBdHRlc3RhdGlvbikgewotICAg
ICAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHByaXZhdGVLZXlCYXNlNjRQcm9wZXJ0
eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJwcml2YXRlS2V5QmFz
ZTY0IikpOwotICAgICAgICAgICAgSlNWYWx1ZVJlZiBwcml2YXRlS2V5QmFzZTY0VmFsdWUgPSBK
U09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGxvY2FsLCBwcml2YXRlS2V5QmFzZTY0UHJvcGVy
dHlOYW1lLmdldCgpLCAwKTsKLSAgICAgICAgICAgIGlmICghSlNWYWx1ZUlzU3RyaW5nKGNvbnRl
eHQsIHByaXZhdGVLZXlCYXNlNjRWYWx1ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gdXNlckNlcnRpZmljYXRlQmFzZTY0
UHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygidXNlckNl
cnRpZmljYXRlQmFzZTY0IikpOwotICAgICAgICAgICAgSlNWYWx1ZVJlZiB1c2VyQ2VydGlmaWNh
dGVCYXNlNjRWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgbG9jYWwsIHVzZXJD
ZXJ0aWZpY2F0ZUJhc2U2NFByb3BlcnR5TmFtZS5nZXQoKSwgMCk7Ci0gICAgICAgICAgICBpZiAo
IUpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCB1c2VyQ2VydGlmaWNhdGVCYXNlNjRWYWx1ZSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NFByb3BlcnR5TmFtZShBZG9wdCwg
SlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVC
YXNlNjQiKSk7Ci0gICAgICAgICAgICBKU1ZhbHVlUmVmIGludGVybWVkaWF0ZUNBQ2VydGlmaWNh
dGVCYXNlNjRWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgbG9jYWwsIGludGVy
bWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjRQcm9wZXJ0eU5hbWUuZ2V0KCksIDApOwotICAgICAg
ICAgICAgaWYgKCFKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgaW50ZXJtZWRpYXRlQ0FDZXJ0aWZp
Y2F0ZUJhc2U2NFZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAg
IGxvY2FsS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
UHJpdmF0ZUtleUJhc2U2NCIpKSk7Ci0gICAgICAgICAgICBsb2NhbFZhbHVlcy5hcHBlbmQodG9X
SyhhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHByaXZhdGVLZXlCYXNlNjRWYWx1
ZSwgMCkpLmdldCgpKSk7Ci0gICAgICAgICAgICBsb2NhbEtleXMuYXBwZW5kKGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlVzZXJDZXJ0aWZpY2F0ZUJhc2U2NCIpKSk7Ci0g
ICAgICAgICAgICBsb2NhbFZhbHVlcy5hcHBlbmQodG9XSyhhZG9wdChKU1ZhbHVlVG9TdHJpbmdD
b3B5KGNvbnRleHQsIHVzZXJDZXJ0aWZpY2F0ZUJhc2U2NFZhbHVlLCAwKSkuZ2V0KCkpKTsKLSAg
ICAgICAgICAgIGxvY2FsS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiSW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NCIpKSk7Ci0gICAgICAgICAg
ICBsb2NhbFZhbHVlcy5hcHBlbmQodG9XSyhhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRl
eHQsIGludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjRWYWx1ZSwgMCkpLmdldCgpKSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcHJlZmVycmVkVXNl
cmhhbmRsZUJhc2U2NFByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoInByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQiKSk7Ci0gICAgICAgIEpTVmFsdWVSZWYg
cHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NFZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250
ZXh0LCBsb2NhbCwgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NFByb3BlcnR5TmFtZS5nZXQoKSwg
MCk7Ci0gICAgICAgIGlmICghSlNWYWx1ZUlzVW5kZWZpbmVkKGNvbnRleHQsIHByZWZlcnJlZFVz
ZXJoYW5kbGVCYXNlNjRWYWx1ZSkgJiYgIUpTVmFsdWVJc051bGwoY29udGV4dCwgcHJlZmVycmVk
VXNlcmhhbmRsZUJhc2U2NFZhbHVlKSkgewotICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNTdHJp
bmcoY29udGV4dCwgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NFZhbHVlKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGxvY2FsS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NCIpKSk7
Ci0gICAgICAgICAgICBsb2NhbFZhbHVlcy5hcHBlbmQodG9XSyhhZG9wdChKU1ZhbHVlVG9TdHJp
bmdDb3B5KGNvbnRleHQsIHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjRWYWx1ZSwgMCkpLmdldCgp
KSk7Ci0gICAgICAgIH0KLQotICAgICAgICBWZWN0b3I8V0tTdHJpbmdSZWY+IHJhd0xvY2FsS2V5
czsKLSAgICAgICAgVmVjdG9yPFdLVHlwZVJlZj4gcmF3TG9jYWxWYWx1ZXM7Ci0gICAgICAgIHJh
d0xvY2FsS2V5cy5yZXNpemUobG9jYWxLZXlzLnNpemUoKSk7Ci0gICAgICAgIHJhd0xvY2FsVmFs
dWVzLnJlc2l6ZShsb2NhbFZhbHVlcy5zaXplKCkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxvY2FsS2V5cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgcmF3TG9jYWxLZXlz
W2ldID0gbG9jYWxLZXlzW2ldLmdldCgpOwotICAgICAgICAgICAgcmF3TG9jYWxWYWx1ZXNbaV0g
PSBsb2NhbFZhbHVlc1tpXS5nZXQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbmZpZ3VyYXRp
b25LZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJMb2Nh
bCIpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb25WYWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tEaWN0
aW9uYXJ5Q3JlYXRlKHJhd0xvY2FsS2V5cy5kYXRhKCksIHJhd0xvY2FsVmFsdWVzLmRhdGEoKSwg
cmF3TG9jYWxLZXlzLnNpemUoKSkpKTsKLSAgICB9Ci0KLSAgICBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gaGlkUHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiaGlkIikpOwotICAgIEpTVmFsdWVSZWYgaGlkVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5
KGNvbnRleHQsIGNvbmZpZ3VyYXRpb24sIGhpZFByb3BlcnR5TmFtZS5nZXQoKSwgMCk7Ci0gICAg
aWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgaGlkVmFsdWUpICYmICFKU1ZhbHVlSXNO
dWxsKGNvbnRleHQsIGhpZFZhbHVlKSkgewotICAgICAgICBpZiAoIUpTVmFsdWVJc09iamVjdChj
b250ZXh0LCBoaWRWYWx1ZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEpTT2JqZWN0
UmVmIGhpZCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBoaWRWYWx1ZSwgMCk7Ci0KLSAgICAg
ICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0YWdlUHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygic3RhZ2UiKSk7Ci0gICAgICAgIEpTVmFsdWVSZWYg
c3RhZ2VWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgaGlkLCBzdGFnZVByb3Bl
cnR5TmFtZS5nZXQoKSwgMCk7Ci0gICAgICAgIGlmICghSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQs
IHN0YWdlVmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBzdWJTdGFnZVByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoInN1YlN0YWdlIikpOwotICAgICAgICBKU1ZhbHVlUmVmIHN1YlN0YWdl
VmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGhpZCwgc3ViU3RhZ2VQcm9wZXJ0
eU5hbWUuZ2V0KCksIDApOwotICAgICAgICBpZiAoIUpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCBz
dWJTdGFnZVZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gZXJyb3JQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJlcnJvciIpKTsKLSAgICAgICAgSlNWYWx1ZVJlZiBlcnJvclZhbHVlID0g
SlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBoaWQsIGVycm9yUHJvcGVydHlOYW1lLmdldCgp
LCAwKTsKLSAgICAgICAgaWYgKCFKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgZXJyb3JWYWx1ZSkp
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPj4gaGlkS2V5czsKLSAgICAgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLVHlwZVJlZj4+
IGhpZFZhbHVlczsKLSAgICAgICAgaGlkS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiU3RhZ2UiKSkpOwotICAgICAgICBoaWRWYWx1ZXMuYXBwZW5kKHRv
V0soYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBzdGFnZVZhbHVlLCAwKSkuZ2V0
KCkpKTsKLSAgICAgICAgaGlkS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiU3ViU3RhZ2UiKSkpOwotICAgICAgICBoaWRWYWx1ZXMuYXBwZW5kKHRvV0so
YWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBzdWJTdGFnZVZhbHVlLCAwKSkuZ2V0
KCkpKTsKLSAgICAgICAgaGlkS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiRXJyb3IiKSkpOwotICAgICAgICBoaWRWYWx1ZXMuYXBwZW5kKHRvV0soYWRv
cHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBlcnJvclZhbHVlLCAwKSkuZ2V0KCkpKTsK
LQotICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGF5bG9hZEJhc2U2NFByb3BlcnR5
TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInBheWxvYWRCYXNlNjQi
KSk7Ci0gICAgICAgIEpTVmFsdWVSZWYgcGF5bG9hZEJhc2U2NFZhbHVlID0gSlNPYmplY3RHZXRQ
cm9wZXJ0eShjb250ZXh0LCBoaWQsIHBheWxvYWRCYXNlNjRQcm9wZXJ0eU5hbWUuZ2V0KCksIDAp
OwotICAgICAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCBwYXlsb2FkQmFzZTY0
VmFsdWUpICYmICFKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1ZSkpIHsK
LSAgICAgICAgICAgIGlmICghSlNWYWx1ZUlzQXJyYXkoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZh
bHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIEpTT2JqZWN0UmVm
IHBheWxvYWRCYXNlNjQgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZh
bHVlLCBudWxscHRyKTsKLSAgICAgICAgICAgIHN0YXRpYyBhdXRvIGxlbmd0aFByb3BlcnR5ID0g
YWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImxlbmd0aCIpKTsKLSAgICAgICAg
ICAgIEpTVmFsdWVSZWYgcGF5bG9hZEJhc2U2NExlbmd0aFZhbHVlID0gSlNPYmplY3RHZXRQcm9w
ZXJ0eShjb250ZXh0LCBwYXlsb2FkQmFzZTY0LCBsZW5ndGhQcm9wZXJ0eS5nZXQoKSwgbnVsbHB0
cik7Ci0gICAgICAgICAgICBpZiAoIUpTVmFsdWVJc051bWJlcihjb250ZXh0LCBwYXlsb2FkQmFz
ZTY0TGVuZ3RoVmFsdWUpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAg
YXV0byBwYXlsb2FkQmFzZTY0cyA9IGFkb3B0V0soV0tNdXRhYmxlQXJyYXlDcmVhdGUoKSk7Ci0g
ICAgICAgICAgICBhdXRvIHBheWxvYWRCYXNlNjRMZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+
KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBwYXlsb2FkQmFzZTY0TGVuZ3RoVmFsdWUsIG51bGxw
dHIpKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGF5bG9hZEJhc2U2NExl
bmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBwYXlsb2FkQmFzZTY0VmFs
dWUgPSBKU09iamVjdEdldFByb3BlcnR5QXRJbmRleChjb250ZXh0LCBwYXlsb2FkQmFzZTY0LCBp
LCBudWxscHRyKTsKLSAgICAgICAgICAgICAgICBpZiAoIUpTVmFsdWVJc1N0cmluZyhjb250ZXh0
LCBwYXlsb2FkQmFzZTY0VmFsdWUpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShwYXlsb2FkQmFzZTY0cy5nZXQoKSwgdG9X
SyhhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1ZSwg
MCkpLmdldCgpKS5nZXQoKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGhpZEtleXMu
YXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlBheWxvYWRCYXNl
NjQiKSkpOwotICAgICAgICAgICAgaGlkVmFsdWVzLmFwcGVuZChwYXlsb2FkQmFzZTY0cyk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gaXNVMmZQcm9wZXJ0
eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJpc1UyZiIpKTsKLSAg
ICAgICAgSlNWYWx1ZVJlZiBpc1UyZlZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0
LCBoaWQsIGlzVTJmUHJvcGVydHlOYW1lLmdldCgpLCAwKTsKLSAgICAgICAgaWYgKCFKU1ZhbHVl
SXNVbmRlZmluZWQoY29udGV4dCwgaXNVMmZWYWx1ZSkgJiYgIUpTVmFsdWVJc051bGwoY29udGV4
dCwgaXNVMmZWYWx1ZSkpIHsKLSAgICAgICAgICAgIGlmICghSlNWYWx1ZUlzQm9vbGVhbihjb250
ZXh0LCBpc1UyZlZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBi
b29sIGlzVTJmID0gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBpc1UyZlZhbHVlKTsKLSAgICAg
ICAgICAgIGhpZEtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIklzVTJmIikpKTsKLSAgICAgICAgICAgIGhpZFZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jv
b2xlYW5DcmVhdGUoaXNVMmYpKS5nZXQoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4ga2VlcEFsaXZlUHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygia2VlcEFsaXZlIikpOwotICAgICAgICBKU1ZhbHVlUmVmIGtl
ZXBBbGl2ZVZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBoaWQsIGtlZXBBbGl2
ZVByb3BlcnR5TmFtZS5nZXQoKSwgMCk7Ci0gICAgICAgIGlmICghSlNWYWx1ZUlzVW5kZWZpbmVk
KGNvbnRleHQsIGtlZXBBbGl2ZVZhbHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChjb250ZXh0LCBrZWVw
QWxpdmVWYWx1ZSkpIHsKLSAgICAgICAgICAgIGlmICghSlNWYWx1ZUlzQm9vbGVhbihjb250ZXh0
LCBrZWVwQWxpdmVWYWx1ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
Ym9vbCBrZWVwQWxpdmUgPSBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGtlZXBBbGl2ZVZhbHVl
KTsKLSAgICAgICAgICAgIGhpZEtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIktlZXBBbGl2ZSIpKSk7Ci0gICAgICAgICAgICBoaWRWYWx1ZXMuYXBwZW5k
KGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGtlZXBBbGl2ZSkpLmdldCgpKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBmYXN0RGF0YUFycml2YWxQcm9wZXJ0
eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJmYXN0RGF0YUFycml2
YWwiKSk7Ci0gICAgICAgIEpTVmFsdWVSZWYgZmFzdERhdGFBcnJpdmFsVmFsdWUgPSBKU09iamVj
dEdldFByb3BlcnR5KGNvbnRleHQsIGhpZCwgZmFzdERhdGFBcnJpdmFsUHJvcGVydHlOYW1lLmdl
dCgpLCAwKTsKLSAgICAgICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgZmFzdERh
dGFBcnJpdmFsVmFsdWUpICYmICFKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIGZhc3REYXRhQXJyaXZh
bFZhbHVlKSkgewotICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNCb29sZWFuKGNvbnRleHQsIGZh
c3REYXRhQXJyaXZhbFZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICBib29sIGZhc3REYXRhQXJyaXZhbCA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgZmFzdERh
dGFBcnJpdmFsVmFsdWUpOwotICAgICAgICAgICAgaGlkS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRmFzdERhdGFBcnJpdmFsIikpKTsKLSAgICAgICAg
ICAgIGhpZFZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoZmFzdERhdGFBcnJp
dmFsKSkuZ2V0KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGFQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJjb250aW51ZUFmdGVyRXJyb3JEYXRhIikpOwotICAgICAgICBK
U1ZhbHVlUmVmIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGFWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVy
dHkoY29udGV4dCwgaGlkLCBjb250aW51ZUFmdGVyRXJyb3JEYXRhUHJvcGVydHlOYW1lLmdldCgp
LCAwKTsKLSAgICAgICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgY29udGludWVB
ZnRlckVycm9yRGF0YVZhbHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChjb250ZXh0LCBjb250aW51ZUFm
dGVyRXJyb3JEYXRhVmFsdWUpKSB7Ci0gICAgICAgICAgICBpZiAoIUpTVmFsdWVJc0Jvb2xlYW4o
Y29udGV4dCwgY29udGludWVBZnRlckVycm9yRGF0YVZhbHVlKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICBib29sIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEgPSBKU1ZhbHVl
VG9Cb29sZWFuKGNvbnRleHQsIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGFWYWx1ZSk7Ci0gICAgICAg
ICAgICBoaWRLZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJDb250aW51ZUFmdGVyRXJyb3JEYXRhIikpKTsKLSAgICAgICAgICAgIGhpZFZhbHVlcy5hcHBl
bmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoY29udGludWVBZnRlckVycm9yRGF0YSkpLmdldCgp
KTsKLSAgICAgICAgfQotCi0gICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjYW5Eb3du
Z3JhZGVQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJj
YW5Eb3duZ3JhZGUiKSk7Ci0gICAgICAgIEpTVmFsdWVSZWYgY2FuRG93bmdyYWRlVmFsdWUgPSBK
U09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGhpZCwgY2FuRG93bmdyYWRlUHJvcGVydHlOYW1l
LmdldCgpLCAwKTsKLSAgICAgICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgY2Fu
RG93bmdyYWRlVmFsdWUpICYmICFKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIGNhbkRvd25ncmFkZVZh
bHVlKSkgewotICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNCb29sZWFuKGNvbnRleHQsIGNhbkRv
d25ncmFkZVZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBib29s
IGNhbkRvd25ncmFkZSA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgY2FuRG93bmdyYWRlVmFs
dWUpOwotICAgICAgICAgICAgaGlkS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiQ2FuRG93bmdyYWRlIikpKTsKLSAgICAgICAgICAgIGhpZFZhbHVlcy5h
cHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoY2FuRG93bmdyYWRlKSkuZ2V0KCkpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgVmVjdG9yPFdLU3RyaW5nUmVmPiByYXdIaWRLZXlzOwotICAgICAg
ICBWZWN0b3I8V0tUeXBlUmVmPiByYXdIaWRWYWx1ZXM7Ci0gICAgICAgIHJhd0hpZEtleXMucmVz
aXplKGhpZEtleXMuc2l6ZSgpKTsKLSAgICAgICAgcmF3SGlkVmFsdWVzLnJlc2l6ZShoaWRWYWx1
ZXMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBoaWRLZXlzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgICAgICByYXdIaWRLZXlzW2ldID0gaGlkS2V5c1tpXS5nZXQoKTsK
LSAgICAgICAgICAgIHJhd0hpZFZhbHVlc1tpXSA9IGhpZFZhbHVlc1tpXS5nZXQoKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGNvbmZpZ3VyYXRpb25LZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIaWQiKSkpOwotICAgICAgICBjb25maWd1cmF0aW9uVmFs
dWVzLmFwcGVuZChhZG9wdFdLKFdLRGljdGlvbmFyeUNyZWF0ZShyYXdIaWRLZXlzLmRhdGEoKSwg
cmF3SGlkVmFsdWVzLmRhdGEoKSwgcmF3SGlkS2V5cy5zaXplKCkpKSk7Ci0gICAgfQotCi0gICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IG5mY1Byb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIm5mYyIpKTsKLSAgICBKU1ZhbHVlUmVmIG5mY1ZhbHVlID0g
SlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBjb25maWd1cmF0aW9uLCBuZmNQcm9wZXJ0eU5h
bWUuZ2V0KCksIDApOwotICAgIGlmICghSlNWYWx1ZUlzVW5kZWZpbmVkKGNvbnRleHQsIG5mY1Zh
bHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChjb250ZXh0LCBuZmNWYWx1ZSkpIHsKLSAgICAgICAgaWYg
KCFKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgbmZjVmFsdWUpKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBKU09iamVjdFJlZiBuZmMgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgbmZj
VmFsdWUsIDApOwotCi0gICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBlcnJvclByb3Bl
cnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImVycm9yIikpOwot
ICAgICAgICBKU1ZhbHVlUmVmIGVycm9yVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRl
eHQsIG5mYywgZXJyb3JQcm9wZXJ0eU5hbWUuZ2V0KCksIDApOwotICAgICAgICBpZiAoIUpTVmFs
dWVJc1N0cmluZyhjb250ZXh0LCBlcnJvclZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+PiBuZmNLZXlzOwotICAgICAg
ICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tUeXBlUmVmPj4gbmZjVmFsdWVzOwotICAgICAgICBuZmNL
ZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFcnJvciIp
KSk7Ci0gICAgICAgIG5mY1ZhbHVlcy5hcHBlbmQodG9XSyhhZG9wdChKU1ZhbHVlVG9TdHJpbmdD
b3B5KGNvbnRleHQsIGVycm9yVmFsdWUsIDApKS5nZXQoKSkpOwotCi0gICAgICAgIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBwYXlsb2FkQmFzZTY0UHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygicGF5bG9hZEJhc2U2NCIpKTsKLSAgICAgICAgSlNWYWx1
ZVJlZiBwYXlsb2FkQmFzZTY0VmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIG5m
YywgcGF5bG9hZEJhc2U2NFByb3BlcnR5TmFtZS5nZXQoKSwgMCk7Ci0gICAgICAgIGlmICghSlNW
YWx1ZUlzVW5kZWZpbmVkKGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1ZSkgJiYgIUpTVmFsdWVJ
c051bGwoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlKSkgewotICAgICAgICAgICAgaWYgKCFK
U1ZhbHVlSXNBcnJheShjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFsdWUpKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICAgICAgSlNPYmplY3RSZWYgcGF5bG9hZEJhc2U2NCA9IEpT
VmFsdWVUb09iamVjdChjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFsdWUsIG51bGxwdHIpOwotICAg
ICAgICAgICAgc3RhdGljIGF1dG8gbGVuZ3RoUHJvcGVydHkgPSBhZG9wdChKU1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygibGVuZ3RoIikpOwotICAgICAgICAgICAgSlNWYWx1ZVJlZiBwYXls
b2FkQmFzZTY0TGVuZ3RoVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIHBheWxv
YWRCYXNlNjQsIGxlbmd0aFByb3BlcnR5LmdldCgpLCBudWxscHRyKTsKLSAgICAgICAgICAgIGlm
ICghSlNWYWx1ZUlzTnVtYmVyKGNvbnRleHQsIHBheWxvYWRCYXNlNjRMZW5ndGhWYWx1ZSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBhdXRvIHBheWxvYWRCYXNlNjRz
ID0gYWRvcHRXSyhXS011dGFibGVBcnJheUNyZWF0ZSgpKTsKLSAgICAgICAgICAgIGF1dG8gcGF5
bG9hZEJhc2U2NExlbmd0aCA9IHN0YXRpY19jYXN0PHNpemVfdD4oSlNWYWx1ZVRvTnVtYmVyKGNv
bnRleHQsIHBheWxvYWRCYXNlNjRMZW5ndGhWYWx1ZSwgbnVsbHB0cikpOwotICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXlsb2FkQmFzZTY0TGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgICAgICAgICBKU1ZhbHVlUmVmIHBheWxvYWRCYXNlNjRWYWx1ZSA9IEpTT2JqZWN0R2V0UHJv
cGVydHlBdEluZGV4KGNvbnRleHQsIHBheWxvYWRCYXNlNjQsIGksIG51bGxwdHIpOwotICAgICAg
ICAgICAgICAgIGlmICghSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1
ZSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIFdLQXJy
YXlBcHBlbmRJdGVtKHBheWxvYWRCYXNlNjRzLmdldCgpLCB0b1dLKGFkb3B0KEpTVmFsdWVUb1N0
cmluZ0NvcHkoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlLCAwKSkuZ2V0KCkpLmdldCgpKTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbmZjS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUGF5bG9hZEJhc2U2NCIpKSk7Ci0gICAgICAgICAg
ICBuZmNWYWx1ZXMuYXBwZW5kKHBheWxvYWRCYXNlNjRzKTsKLSAgICAgICAgfQotCi0gICAgICAg
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBtdWx0aXBsZVRhZ3NQcm9wZXJ0eU5hbWUoQWRvcHQs
IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJtdWx0aXBsZVRhZ3MiKSk7Ci0gICAgICAg
IEpTVmFsdWVSZWYgbXVsdGlwbGVUYWdzVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRl
eHQsIG5mYywgbXVsdGlwbGVUYWdzUHJvcGVydHlOYW1lLmdldCgpLCAwKTsKLSAgICAgICAgaWYg
KCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgbXVsdGlwbGVUYWdzVmFsdWUpICYmICFKU1Zh
bHVlSXNOdWxsKGNvbnRleHQsIG11bHRpcGxlVGFnc1ZhbHVlKSkgewotICAgICAgICAgICAgaWYg
KCFKU1ZhbHVlSXNCb29sZWFuKGNvbnRleHQsIG11bHRpcGxlVGFnc1ZhbHVlKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBib29sIG11bHRpcGxlVGFncyA9IEpTVmFsdWVU
b0Jvb2xlYW4oY29udGV4dCwgbXVsdGlwbGVUYWdzVmFsdWUpOwotICAgICAgICAgICAgbmZjS2V5
cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTXVsdGlwbGVU
YWdzIikpKTsKLSAgICAgICAgICAgIG5mY1ZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5D
cmVhdGUobXVsdGlwbGVUYWdzKSkuZ2V0KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgVmVjdG9y
PFdLU3RyaW5nUmVmPiByYXdOZmNLZXlzOwotICAgICAgICBWZWN0b3I8V0tUeXBlUmVmPiByYXdO
ZmNWYWx1ZXM7Ci0gICAgICAgIHJhd05mY0tleXMucmVzaXplKG5mY0tleXMuc2l6ZSgpKTsKLSAg
ICAgICAgcmF3TmZjVmFsdWVzLnJlc2l6ZShuZmNWYWx1ZXMuc2l6ZSgpKTsKLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBuZmNLZXlzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBy
YXdOZmNLZXlzW2ldID0gbmZjS2V5c1tpXS5nZXQoKTsKLSAgICAgICAgICAgIHJhd05mY1ZhbHVl
c1tpXSA9IG5mY1ZhbHVlc1tpXS5nZXQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbmZpZ3Vy
YXRpb25LZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJO
ZmMiKSkpOwotICAgICAgICBjb25maWd1cmF0aW9uVmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLRGlj
dGlvbmFyeUNyZWF0ZShyYXdOZmNLZXlzLmRhdGEoKSwgcmF3TmZjVmFsdWVzLmRhdGEoKSwgcmF3
TmZjS2V5cy5zaXplKCkpKSk7Ci0gICAgfQotCi0gICAgVmVjdG9yPFdLU3RyaW5nUmVmPiByYXdD
b25maWd1cmF0aW9uS2V5czsKLSAgICBWZWN0b3I8V0tUeXBlUmVmPiByYXdDb25maWd1cmF0aW9u
VmFsdWVzOwotICAgIHJhd0NvbmZpZ3VyYXRpb25LZXlzLnJlc2l6ZShjb25maWd1cmF0aW9uS2V5
cy5zaXplKCkpOwotICAgIHJhd0NvbmZpZ3VyYXRpb25WYWx1ZXMucmVzaXplKGNvbmZpZ3VyYXRp
b25WYWx1ZXMuc2l6ZSgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbmZpZ3VyYXRp
b25LZXlzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHJhd0NvbmZpZ3VyYXRpb25LZXlzW2ldID0g
Y29uZmlndXJhdGlvbktleXNbaV0uZ2V0KCk7Ci0gICAgICAgIHJhd0NvbmZpZ3VyYXRpb25WYWx1
ZXNbaV0gPSBjb25maWd1cmF0aW9uVmFsdWVzW2ldLmdldCgpOwotICAgIH0KLQotICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIlNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24iKSk7
Ci0gICAgV0tSZXRhaW5QdHI8V0tEaWN0aW9uYXJ5UmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0V0so
V0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd0NvbmZpZ3VyYXRpb25LZXlzLmRhdGEoKSwgcmF3Q29uZmln
dXJhdGlvblZhbHVlcy5kYXRhKCksIHJhd0NvbmZpZ3VyYXRpb25LZXlzLnNpemUoKSkpOwotICAg
IAotICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShpbmplY3RlZEJ1bmRsZS5idW5k
bGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKLX0K
LQorLy8gV2ViQXV0aG4KIHZvaWQgVGVzdFJ1bm5lcjo6YWRkVGVzdEtleVRvS2V5Y2hhaW4oSlNT
dHJpbmdSZWYgcHJpdmF0ZUtleUJhc2U2NCwgSlNTdHJpbmdSZWYgYXR0ckxhYmVsLCBKU1N0cmlu
Z1JlZiBhcHBsaWNhdGlvblRhZ0Jhc2U2NCkKIHsKICAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+PiBrZXlzOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCA1ZjIzYTgwZTUxZDdhNGRlZDJkN2Q0ZmY0ZDRmY2Yx
YTljNzMzYWIyLi42MjcxZDUyMzExNGQ4NjljNGZhMjYyYTc5NWJjZGZkNjA0ODI3YWI1IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aApAQCAtNDkwLDkgKzQ5MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbmREaXNwbGF5Q29uZmln
dXJhdGlvbkNoYW5nZWRNZXNzYWdlRm9yVGVzdGluZygpOwogCiAgICAgdm9pZCBzZXRTZXJ2aWNl
V29ya2VyRmV0Y2hUaW1lb3V0KGRvdWJsZSBzZWNvbmRzKTsKLSAgICAKLSAgICAvLyBXZWJBdXRo
TgotICAgIHZvaWQgc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihKU1ZhbHVl
UmVmKTsKKwogICAgIC8vIEZJWE1FKDE4OTg3NikKICAgICB2b2lkIGFkZFRlc3RLZXlUb0tleWNo
YWluKEpTU3RyaW5nUmVmIHByaXZhdGVLZXlCYXNlNjQsIEpTU3RyaW5nUmVmIGF0dHJMYWJlbCwg
SlNTdHJpbmdSZWYgYXBwbGljYXRpb25UYWdCYXNlNjQpOwogICAgIHZvaWQgY2xlYW5VcEtleWNo
YWluKEpTU3RyaW5nUmVmIGF0dHJMYWJlbCwgSlNTdHJpbmdSZWYgYXBwbGljYXRpb25UYWdCYXNl
NjQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBlY2Q3
ZDliOGNjYjEzY2Y0ZjUzYjQwZWQ3N2Y4MTJlNjYyYzgwZmNlLi42NTdiNzliOTMwZDgxZDY4NTY4
ZGI3MzFiZGVhNTA4NzkzNzZkZjA2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcApAQCAtMzYyMSwxMSArMzYyMSw2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNl
dFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nKGRvdWJsZSBzZWNvbmRzKQogICAg
IFdLQ29udGV4dFNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nKHBsYXRmb3Jt
Q29udGV4dCgpLCBzZWNvbmRzKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0V2ViQXV0
aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihXS0RpY3Rpb25hcnlSZWYgY29uZmlndXJhdGlv
bikKLXsKLSAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25m
aWd1cmF0aW9uKFRlc3RDb250cm9sbGVyOjp3ZWJzaXRlRGF0YVN0b3JlKCksIGNvbmZpZ3VyYXRp
b24pOwotfQotCiBzdHJ1Y3QgQWRDbGlja0F0dHJpYnV0aW9uU3RyaW5nUmVzdWx0Q2FsbGJhY2tD
b250ZXh0IHsKICAgICBleHBsaWNpdCBBZENsaWNrQXR0cmlidXRpb25TdHJpbmdSZXN1bHRDYWxs
YmFja0NvbnRleHQoVGVzdENvbnRyb2xsZXImIGNvbnRyb2xsZXIpCiAgICAgICAgIDogdGVzdENv
bnRyb2xsZXIoY29udHJvbGxlcikKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aAppbmRleCA1MzBiMzM0ODQyYjZjMTJmNWM0YzU1YjE3NjUyOWYzNDIzYmU3MzY1Li40YmY5MDIz
YWI3MjJhMDkxMDFlZDI1MGZiODI4Y2I3ZjJhYjVhNDZlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oCkBAIC0yOTYsNyArMjk2LDYgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyhkb3VibGUgc2Vjb25kcyk7
CiAKLSAgICB2b2lkIHNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oV0tEaWN0
aW9uYXJ5UmVmKTsKICAgICB2b2lkIGFkZFRlc3RLZXlUb0tleWNoYWluKGNvbnN0IFN0cmluZyYg
cHJpdmF0ZUtleUJhc2U2NCwgY29uc3QgU3RyaW5nJiBhdHRyTGFiZWwsIGNvbnN0IFN0cmluZyYg
YXBwbGljYXRpb25UYWdCYXNlNjQpOwogICAgIHZvaWQgY2xlYW5VcEtleWNoYWluKGNvbnN0IFN0
cmluZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVGFnQmFzZTY0KTsKICAg
ICBib29sIGtleUV4aXN0c0luS2V5Y2hhaW4oY29uc3QgU3RyaW5nJiBhdHRyTGFiZWwsIGNvbnN0
IFN0cmluZyYgYXBwbGljYXRpb25UYWdCYXNlNjQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcAppbmRleCBhZThkNTk0ZGNhODcxYjM0ZjcyOTc5YzQyODIwOTZmYTRi
YTM3YjQ3Li5hOGY5YTc5YmU5NTg1N2I3MDBkN2ZhYjY3NzI4OTc1Yzk5NGQwNGIyIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTYzMCwxMiArMTYzMCw2
IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5j
aHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIAotICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAi
U2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbiIpKSB7Ci0gICAgICAgIEFTU0VS
VChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOwot
ICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbihzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5
KSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQogICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQWRkVGVzdEtleVRvS2V5Y2hhaW4iKSkg
ewogICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRGljdGlvbmFy
eUdldFR5cGVJRCgpKTsKICAgICAgICAgV0tEaWN0aW9uYXJ5UmVmIHRlc3RLZXlEaWN0aW9uYXJ5
ID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPihtZXNzYWdlQm9keSk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjgy
NmRlMTJkODIzMzdkYmM2ZWM3MGZkODkwYTVjZjNiMDUzOWFlZC4uNWM2ZmJiMjBkMmU0YzdlNWVi
MDhlZmE2ZGQ5MWZkYTc3YTY0OTk1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE5LTEwLTA4
ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhu
XSBNb3ZlIHRoZSBtb2NrIHRlc3RpbmcgZW50cmFuY2UgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NjAKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzU1OTczNzkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6
LgorCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtZmFpbHVyZS5odHRwcy5o
dG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLXN1Y2Nlc3MuaHR0cHMu
aHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0dHBz
Lmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vaWRsLmh0dHBzLmh0bWw6CisgICAg
ICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWls
dXJlLWhpZC1zaWxlbnQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtaGlkLmh0dHBzLmh0bWw6CisgICAg
ICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWls
dXJlLWxvY2FsLXNpbGVudC5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sOgor
ICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUt
ZmFpbHVyZS1uZmMuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLXNpbGVudC5odHRwcy5odG1sOgor
ICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUt
ZmFpbHVyZS11MmYuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBo
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlk
Lmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRw
cy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1jcmVhdGUtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5o
dG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1n
ZXQtZmFpbHVyZS1oaWQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLmh0bWw6
CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1m
YWlsdXJlLWxvY2FsLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLW5mYy5odHRwcy5odG1sOgorICAgICAgICAq
IGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYt
c2lsZW50Lmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLXUyZi5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS5odHRwcy5odG1s
OgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQt
c3VjY2Vzcy1oaWQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbDoKKyAgICAgICAg
KiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbmZj
Lmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWdldC1zdWNjZXNzLXUyZi5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dl
YmF1dGhuL3Jlc291cmNlcy9wdWJsaWMta2V5LWNyZWRlbnRpYWwtaXAtYWRkcmVzcy5odHRwcy5o
dG1sOgorCiAyMDE5LTEwLTA5ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW1vdmUgdGVzdFJ1bm5lci5zZXRXZWJSVENVbmlmaWVkUGxhbkVuYWJsZWQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2NyZWRlbnRpYWwtbWFuYWdlbWVudC9jcmVk
ZW50aWFsc2NvbnRhaW5lci1zdG9yZS1iYXNpY3MuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L2NyZWRlbnRpYWwtbWFuYWdlbWVudC9jcmVkZW50aWFsc2NvbnRhaW5lci1zdG9yZS1i
YXNpY3MuaHR0cHMuaHRtbAppbmRleCBiYzAyMTE5MmUwMGNhMWZjNzExNmU1MjAwZWRhMzRhZjA5
ZWQwZTEzLi4xYTE5NTllMWM3NjUyODA2M2NmZDA3NzRhMzljYTRkYWY0ZGNjY2NjIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9jcmVkZW50aWFsLW1hbmFnZW1lbnQvY3JlZGVudGlh
bHNjb250YWluZXItc3RvcmUtYmFzaWNzLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvY3JlZGVudGlhbC1tYW5hZ2VtZW50L2NyZWRlbnRpYWxzY29udGFpbmVyLXN0b3JlLWJh
c2ljcy5odHRwcy5odG1sCkBAIC00Miw4ICs0Miw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAg
IH07CiAgICAgICAgIC8vIEEgbW9jayBhdHRlc3RhdGlvbiBvYmplY3QKLSAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNh
dGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdl
OiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1l
c3NhZ2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAg
ICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBo
aWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3Mi
LCBwYXlsb2FkQmFzZTY0OiBbdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NF0gfSB9KTsKICAgICAg
ICAgY29uc3QgY3JlZGVudGlhbCA9IGF3YWl0IG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUo
b3B0aW9ucyk7CiAKICAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCAiTm90U3VwcG9y
dGVkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuc3RvcmUoY3JlZGVudGlhbCkpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtZmFpbHVyZS5o
dHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtZmFpbHVy
ZS5odHRwcy5odG1sCmluZGV4IDRmMGZkNmFhMDY2MDljOTQzNTE2ZjllNzZhODM3NmNhYTZkYTky
ZDkuLjlkNTNlMWQ0NDAyMTcxYmNkNDg3ZjExMmU2MDY0MjY2YWZmZjBlZGMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLWZhaWx1cmUuaHR0cHMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1mYWlsdXJlLmh0
dHBzLmh0bWwKQEAgLTIxLDUwICsyMSw1MCBAQAogICAgIH07CiAKICAgICBwcm9taXNlX3Rlc3Qo
ZnVuY3Rpb24odCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6
IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJkYXRhLW5vdC1zZW50
IiB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVy
bmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdl
OiAiaW5mbyIsIHN1YlN0YWdlOiAiaW5pdCIsIGVycm9yOiAiZGF0YS1ub3Qtc2VudCIgfSB9KTsK
ICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGRlZmF1bHRPcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1l
ZCBvdXQuIik7CiAgICAgfSwgIkNUQVAgSElEIHdpdGggaW5pdCBzdWIgc3RhZ2UgZGF0YSBub3Qg
c2VudCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKICAgICBwcm9taXNl
X3Rlc3QoZnVuY3Rpb24odCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24o
eyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJlbXB0eS1y
ZXBvcnQiIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAg
aW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsg
c3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJlbXB0eS1yZXBvcnQiIH0g
fSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwg
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucyksICJPcGVyYXRpb24g
dGltZWQgb3V0LiIpOwogICAgIH0sICJDVEFQIEhJRCB3aXRoIGluaXQgc3ViIHN0YWdlIGVtcHR5
IHJlcG9ydCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKICAgICBwcm9t
aXNlX3Rlc3QoZnVuY3Rpb24odCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRp
b24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJ3cm9u
Zy1jaGFubmVsLWlkIiB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAg
ICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsg
aGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAiaW5pdCIsIGVycm9yOiAid3JvbmctY2hh
bm5lbC1pZCIgfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxv
d2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGRlZmF1bHRPcHRpb25zKSwg
Ik9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIkNUQVAgSElEIHdpdGggaW5pdCBzdWIg
c3RhZ2Ugd3JvbmcgY2hhbm5lbCBpZCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3Iu
Iik7CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0
IiwgZXJyb3I6ICJ3cm9uZy1ub25jZSIgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogImluaXQiLCBlcnJvcjog
Indyb25nLW5vbmNlIiB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5v
dEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlv
bnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiQ1RBUCBISUQgd2l0aCBpbml0
IHN1YiBzdGFnZSB3cm9uZyBub25jZSBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3Iu
Iik7CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJtc2ci
LCBlcnJvcjogImRhdGEtbm90LXNlbnQiIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
ImRhdGEtbm90LXNlbnQiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAi
Tm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShkZWZhdWx0T3B0
aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJDVEFQIEhJRCB3aXRoIG1z
ZyBzdWIgc3RhZ2UgZGF0YSBub3Qgc2VudCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0
b3IuIik7CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0
aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJt
c2ciLCBlcnJvcjogImVtcHR5LXJlcG9ydCIgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogIm1zZyIsIGVycm9y
OiAiZW1wdHktcmVwb3J0IiB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwg
Ik5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVmYXVsdE9w
dGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiQ1RBUCBISUQgd2l0aCBt
c2cgc3ViIHN0YWdlIGVtcHR5IHJlcG9ydCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0
b3IuIik7CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0
aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJt
c2ciLCBlcnJvcjogIndyb25nLWNoYW5uZWwtaWQiIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJtc2ciLCBl
cnJvcjogIndyb25nLWNoYW5uZWwtaWQiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVq
ZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShk
ZWZhdWx0T3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJDVEFQIEhJ
RCB3aXRoIG1zZyBzdWIgc3RhZ2Ugd3JvbmcgY2hhbm5lbCBpZCBlcnJvciBpbiBhIG1vY2sgaGlk
IGF1dGhlbnRpY2F0b3IuIik7CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewotICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdl
YkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0
Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIndyb25nLWNoYW5uZWwtaWQiLCBwYXlsb2FkQmFz
ZTY0Olt0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTog
Im1zZyIsIGVycm9yOiAid3JvbmctY2hhbm5lbC1pZCIsIHBheWxvYWRCYXNlNjQ6W3Rlc3REdW1t
eU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVj
dHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVmYXVs
dE9wdGlvbnMpLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogMTgiKTsKICAg
ICB9LCAiQ1RBUCBISUQgd2l0aCByZXF1ZXN0Ojptc2cgc3RhZ2Ugd3JvbmcgY2hhbm5lbCBpZCBl
cnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiA8L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLXN1Y2Nlc3MuaHR0cHMu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLXN1Y2Nlc3MuaHR0
cHMuaHRtbAppbmRleCA4ZTVkMDk1ZTVmZDk4M2ZhYWFjNGQ3ZTNhNDYyYjBjY2RkOTdkNjA1Li5i
NmY5MWY4YzNlZmE2OTA3NjhlNzdlNWRkYjAzMzlhNDBjN2Q5OTcxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1zdWNjZXNzLmh0dHBzLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtc3VjY2Vzcy5odHRwcy5o
dG1sCkBAIC0yMCw4ICsyMCw4IEBACiAgICAgfTsKIAogICAgIHByb21pc2VfdGVzdChmdW5jdGlv
bih0KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RS
dW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFn
ZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRC
YXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSwga2VlcEFsaXZlOiB0cnVlIH0gfSk7
CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNl
dE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBb
dGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NF0sIGtlZXBBbGl2ZTogdHJ1ZSB9IH0pOwogICAgICAg
ICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucykudGhl
bihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRp
YWwsIHVuZGVmaW5lZCk7CiAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFs
LCBudWxsKTsKQEAgLTI5LDggKzI5LDggQEAKICAgICB9LCAiQ1RBUCBISUQgd2l0aCBrZWVwIGFs
aXZlIG1lc3NhZ2UgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlz
ZV90ZXN0KGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9u
KHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNj
ZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdLCBmYXN0RGF0
YUFycml2YWw6IHRydWUgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAg
ICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7
IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2Vz
cyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSwgZmFzdERhdGFB
cnJpdmFsOiB0cnVlIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Y3JlYXRlKGRlZmF1bHRPcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAg
YXNzZXJ0X25vdF9lcXVhbHMoY3JlZGVudGlhbCwgdW5kZWZpbmVkKTsKICAgICAgICAgICAgIGFz
c2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIG51bGwpOwpAQCAtMzgsOCArMzgsOCBAQAogICAg
IH0sICJDVEFQIEhJRCB3aXRoIGZhc3QgZGF0YSBhcnJpdmFsIGluIGEgbW9jayBoaWQgYXV0aGVu
dGljYXRvci4iKTsKIAogICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7Ci0gICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVu
dGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJTdGFn
ZTogImluaXQiLCBlcnJvcjogImVtcHR5LXJlcG9ydCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3Jl
YXRpb25NZXNzYWdlQmFzZTY0XSwgY29udGludWVBZnRlckVycm9yRGF0YTogdHJ1ZSB9IH0pOwor
ICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIs
IHN1YlN0YWdlOiAiaW5pdCIsIGVycm9yOiAiZW1wdHktcmVwb3J0IiwgcGF5bG9hZEJhc2U2NDog
W3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdLCBjb250aW51ZUFmdGVyRXJyb3JEYXRhOiB0cnVl
IH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGRlZmF1
bHRPcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgYXNzZXJ0X25vdF9l
cXVhbHMoY3JlZGVudGlhbCwgdW5kZWZpbmVkKTsKICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1
YWxzKGNyZWRlbnRpYWwsIG51bGwpOwpAQCAtNDcsOCArNDcsOCBAQAogICAgIH0sICJDVEFQIEhJ
RCB3aXRoIGNvbnRpbnVlIGFmdGVyIGVtcHR5IHJlcG9ydCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRp
Y2F0b3IuIik7CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewotICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRp
Y2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6
ICJpbml0IiwgZXJyb3I6ICJ3cm9uZy1jaGFubmVsLWlkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RD
cmVhdGlvbk1lc3NhZ2VCYXNlNjRdLCBjb250aW51ZUFmdGVyRXJyb3JEYXRhOiB0cnVlIH0gfSk7
CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNl
dE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZv
Iiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJ3cm9uZy1jaGFubmVsLWlkIiwgcGF5bG9hZEJh
c2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdLCBjb250aW51ZUFmdGVyRXJyb3JEYXRh
OiB0cnVlIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRl
KGRlZmF1bHRPcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgYXNzZXJ0
X25vdF9lcXVhbHMoY3JlZGVudGlhbCwgdW5kZWZpbmVkKTsKICAgICAgICAgICAgIGFzc2VydF9u
b3RfZXF1YWxzKGNyZWRlbnRpYWwsIG51bGwpOwpAQCAtNTYsOCArNTYsOCBAQAogICAgIH0sICJD
VEFQIEhJRCB3aXRoIGNvbnRpbnVlIGFmdGVyIHdyb25nIGNoYW5uZWwgaWQgaW4gYSBtb2NrIGhp
ZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRX
ZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIs
IHN1YlN0YWdlOiAiaW5pdCIsIGVycm9yOiAid3Jvbmctbm9uY2UiLCBwYXlsb2FkQmFzZTY0OiBb
dGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NF0sIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGE6IHRydWUg
fSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5h
bHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTog
ImluZm8iLCBzdWJTdGFnZTogImluaXQiLCBlcnJvcjogIndyb25nLW5vbmNlIiwgcGF5bG9hZEJh
c2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdLCBjb250aW51ZUFmdGVyRXJyb3JEYXRh
OiB0cnVlIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRl
KGRlZmF1bHRPcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgYXNzZXJ0
X25vdF9lcXVhbHMoY3JlZGVudGlhbCwgdW5kZWZpbmVkKTsKICAgICAgICAgICAgIGFzc2VydF9u
b3RfZXF1YWxzKGNyZWRlbnRpYWwsIG51bGwpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vY3RhcC1uZmMtZmFpbHVyZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vY3RhcC1uZmMtZmFpbHVyZS5odHRwcy5odG1sCmluZGV4IDVjMGIx
YjhhZTQ2ODg3ZjVmYmE1YjEzM2I4ODJmNGU2NDlkOGFkMjQuLjIwNTA2MGFjNjdmNGIzMmM3MDMw
YzgzOGYyZWNlMTQwYTIyM2Y0YWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL2N0YXAtbmZjLWZhaWx1cmUuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0dHBzLmh0bWwKQEAgLTIxLDE0ICsyMSwx
NCBAQAogICAgIH07CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhl
bnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJtYWxpY2lvdXMtcGF5
bG9hZCIsIHBheWxvYWRCYXNlNjQ6W3Rlc3ROZmNVMmZWZXJzaW9uQmFzZTY0LCAiIl0gfSB9KTsK
KyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogIm1hbGlj
aW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDpbdGVzdE5mY1UyZlZlcnNpb25CYXNlNjQsICIi
XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJv
ciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlvbnMpLCAiT3BlcmF0
aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiQ1RBUCBORkMgd2l0aCBlbXB0eSBhcGR1IHJlc3Bv
bnNlIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKIAogICAgIHByb21pc2VfdGVzdChm
dW5jdGlvbih0KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5mYzog
eyBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDpbdGVzdE5mY1UyZlZl
cnNpb25CYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0XSB9IH0p
OworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5z
ZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAibWFs
aWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0Olt0ZXN0TmZjVTJmVmVyc2lvbkJhc2U2NCwg
dGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJl
dHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwog
ICAgIH0sICJDVEFQIE5GQyB3aXRoIHdyb25nIGRhdGEgZXJyb3IgaW4gYSBtb2NrIG5mYyBhdXRo
ZW50aWNhdG9yLiIpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9pZGwuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhu
L2lkbC5odHRwcy5odG1sCmluZGV4IGRjMTJiNzIyNGIxZTBmZDA2ODU3OTcwNTBhY2M5ZWZmYjk4
NWNmNjEuLjA5YWZjYjBlMTZlNDczODEwOGI1ZTljODA1ZmFmN2NiOTdmZTRkOTggMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2lkbC5odHRwcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2lkbC5odHRwcy5odG1sCkBAIC01Miw4ICs1Miw4
IEBAIHByb21pc2VfdGVzdChhc3luYyAoKSA9PiB7CiAgICAgICAgIH0KICAgICB9OwogICAgIC8v
IEEgbW9jayBhdHRlc3RhdGlvbiBvYmplY3QKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7
IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2Vz
cyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSB9IH0pOworICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFn
ZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25N
ZXNzYWdlQmFzZTY0XSB9IH0pOwogICAgIGNyZWF0ZWRDcmVkZW50aWFsID0gYXdhaXQgbmF2aWdh
dG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShjcmVhdGlvbk9wdGlvbnMpOwogCiAgICAgY29uc3QgcmVx
dWVzdE9wdGlvbnMgPSB7CkBAIC02MSw4ICs2MSw4IEBAIHByb21pc2VfdGVzdChhc3luYyAoKSA9
PiB7CiAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwK
ICAgICAgICAgfQogICAgIH07Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0
ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsg
c3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBwYXls
b2FkQmFzZTY0OiBbdGVzdEFzc2VydGlvbk1lc3NhZ2VCYXNlNjRdIH0gfSk7CisgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNn
IiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RBc3NlcnRpb25NZXNzYWdl
QmFzZTY0XSB9IH0pOwogICAgIHJlcXVlc3RlZENyZWRlbnRpYWwgPSBhd2FpdCBuYXZpZ2F0b3Iu
Y3JlZGVudGlhbHMuZ2V0KHJlcXVlc3RPcHRpb25zKTsKIAogICAgIGlkbEFycmF5LmFkZF9vYmpl
Y3RzKHsiUHVibGljS2V5Q3JlZGVudGlhbCI6IFsiY3JlYXRlZENyZWRlbnRpYWwiXSwgIkF1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIjogWyJjcmVhdGVkQ3JlZGVudGlhbC5yZXNwb25z
ZSJdLCAiQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlIjogWyJyZXF1ZXN0ZWRDcmVkZW50
aWFsLnJlc3BvbnNlIl19KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1oaWQtc2lsZW50Lmh0dHBz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtY3JlYXRlLWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1sCmluZGV4IDY2YjVkYTRmMzk5
MmNlY2Y2MTc4YjdmNmI2M2JmNjdlNzhkODUyMzYuLmYzNTg2NmE2ZTM2MTY2NWEzMjUwZWVkNTk0
YmM0MGRhMmQwYjZkMmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1oaWQtc2lsZW50Lmh0dHBzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWNyZWF0ZS1mYWlsdXJlLWhpZC1zaWxlbnQuaHR0cHMuaHRtbApAQCAtMjEsOCArMjEsOCBA
QAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29u
ZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3Qi
LCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFz
ZTY0OiBbdGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6
ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwg
cGF5bG9hZEJhc2U2NDogW3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0pOwogICAg
ICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRv
ci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwog
ICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hbGljaW91cyBw
YXlsb2FkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtNDQsOCArNDQsOCBA
QAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29u
ZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3Qi
LCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAidW5zdXBwb3J0ZWQtb3B0aW9ucyIgfSB9KTsKKyAg
ICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhp
ZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAidW5zdXBwb3J0
ZWQtb3B0aW9ucyIgfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RB
bGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3Bl
cmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3Jl
YXRlXV0gd2l0aCB1bnN1cHBvcnRlZCBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRv
ci4iKTsKIApAQCAtNjcsOCArNjcsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUs
IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAidW5zdXBw
b3J0ZWQtb3B0aW9ucyIgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAg
ICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7
IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTog
Im1zZyIsIGVycm9yOiAidW5zdXBwb3J0ZWQtb3B0aW9ucyIgfSB9KTsKICAgICAgICAgcmV0dXJu
IHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlh
bHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1bnN1cHBvcnRlZCBvcHRpb25zIGlu
IGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gMiIpOwogCkBAIC05MCw4ICs5MCw4IEBACiAgICAg
ICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0
aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0
YWdlOiAibXNnIiwgZXJyb3I6ICJ1bnN1cHBvcnRlZC1vcHRpb25zIiB9IH0pOworICAgICAgICBp
ZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0
YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ1bnN1cHBvcnRlZC1vcHRp
b25zIiB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRF
cnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24g
dGltZWQgb3V0LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3
aXRoIG1peGVkIG9wdGlvbnMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC0x
MTEsOCArMTExLDggQEAKICAgICAgICAgICAgfQogICAgICAgIH07CiAKLSAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRp
b25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTog
Im1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEN0
YXBFcnJDcmVkZW50aWFsRXhjbHVkZWRPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0
YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFt0
ZXN0Q3RhcEVyckNyZWRlbnRpYWxFeGNsdWRlZE9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKICAg
ICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIkludmFsaWRTdGF0ZUVycm9yIiwgbmF2aWdh
dG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkF0IGxlYXN0IG9uZSBjcmVkZW50aWFs
IG1hdGNoZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBsaXN0IGluIHRoZSBh
dXRoZW50aWNhdG9yLiIpOwogICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1d
IHdpdGggSW52YWxpZFN0YXRlRXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwog
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtaGlkLmh0dHBzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1
cmUtaGlkLmh0dHBzLmh0bWwKaW5kZXggMmY4MzdjNjYzMjZiODdmZjdhOTI4N2FiMTcwMmRhZDM0
MDA2NmRmMC4uMTBjZmVhZGZlNTYyNmJjODRmOWYwZWMyOTA0MGFhOTJkN2JiODkyNiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWNyZWF0ZS1mYWlsdXJlLWhpZC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1oaWQuaHR0cHMu
aHRtbApAQCAtNSw4ICs1LDggQEAKIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy91dGlsLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQ+CiAgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRl
c3RzIG5lZWQgdG8gb3ZlcnJpZGUgaXQgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0
aW9uLgotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRX
ZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVz
dCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIgfSB9KTsKKyAg
ICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3Rh
Z2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiB9IH0pOwogCiAgICAgcHJvbWlz
ZV90ZXN0KGZ1bmN0aW9uKHQpIHsKICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKQEAgLTQ1LDgg
KzQ1LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJt
c2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3REdW1t
eU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6
ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0RHVtbXlNZXNzYWdlUGF5
bG9hZEJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtu
b3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiVW5rbm93
biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogMjU1Iik7CiAgICAgfSwgIlB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWFsaWNpb3VzIHBheWxvYWQgaW4gYSBtb2NrIGhp
ZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC02Nyw4ICs2Nyw4IEBACiAgICAgICAgICAgICB9CiAg
ICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ1bnN1cHBvcnRlZC1v
cHRpb25zIiB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAg
IGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ1bnN1cHBvcnRlZC1v
cHRpb25zIiB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25F
cnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJVbmtub3duIGlu
dGVybmFsIGVycm9yLiBFcnJvciBjb2RlOiA0MyIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50
aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHVuc3VwcG9ydGVkIG9wdGlvbnMgaW4gYSBtb2NrIGhpZCBh
dXRoZW50aWNhdG9yLiIpOwogCkBAIC04OSw4ICs4OSw4IEBACiAgICAgICAgICAgICB9CiAgICAg
ICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVz
dFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0
YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ1bnN1cHBvcnRlZC1vcHRp
b25zIiB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGlu
dGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0
YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ1bnN1cHBvcnRlZC1vcHRp
b25zIiB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJv
ciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJVbmtub3duIGludGVy
bmFsIGVycm9yLiBFcnJvciBjb2RlOiA0MyIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tjcmVhdGVdXSB3aXRoIHVuc3VwcG9ydGVkIG9wdGlvbnMgaW4gYSBtb2NrIGhpZCBhdXRo
ZW50aWNhdG9yLiAyIik7CiAKQEAgLTExMiw4ICsxMTIsOCBAQAogICAgICAgICAgICAgfQogICAg
ICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBz
dGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAidW5zdXBwb3J0ZWQtb3B0
aW9ucyIgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBp
bnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBz
dGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAidW5zdXBwb3J0ZWQtb3B0
aW9ucyIgfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2Vk
RXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9u
IHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0g
d2l0aCBtaXhlZCBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAt
MTM0LDggKzEzNCw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50
aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0
YWdlOiAibXNnIiwgZXJyb3I6ICJ1bnN1cHBvcnRlZC1vcHRpb25zIiB9IH0pOworICAgICAgICBp
ZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0
YWdlOiAibXNnIiwgZXJyb3I6ICJ1bnN1cHBvcnRlZC1vcHRpb25zIiB9IH0pOwogICAgICAgICBy
ZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50
aWFscy5jcmVhdGUob3B0aW9ucyksICJVbmtub3duIGludGVybmFsIGVycm9yLiBFcnJvciBjb2Rl
OiA0MyIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1p
eGVkIG9wdGlvbnMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAyIik7CiAKQEAgLTE1NSw4
ICsxNTUsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRp
b25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTog
Im1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEN0
YXBFcnJDcmVkZW50aWFsRXhjbHVkZWRPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3Vi
U3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDog
W3Rlc3RDdGFwRXJyQ3JlZGVudGlhbEV4Y2x1ZGVkT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwog
ICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIkludmFsaWRTdGF0ZUVycm9yIiwgbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkF0IGxlYXN0IG9uZSBjcmVkZW50
aWFsIG1hdGNoZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBsaXN0IGluIHRo
ZSBhdXRoZW50aWNhdG9yLiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVh
dGVdXSB3aXRoIEludmFsaWRTdGF0ZUVycm9yIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4i
KTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWNyZWF0ZS1mYWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy5odG1sCmluZGV4IDZhMDBiZWRlNmRk
OWJlNzgzMDZhZTdkNDBlNzVmZWQzYmM0Y2FjMmQuLjRkY2Y0YTI5NGQ5ZmU3M2M3YzIxNmY4ZmQx
OTRlMzI2NjdhNzY4ZTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC1zaWxlbnQuaHR0cHMu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLmh0bWwKQEAgLTksOCArOSw4
IEBACiAgICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZh
dGVLZXlCYXNlNjQoKTsKICAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0gYXdhaXQgY2FsY3Vs
YXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOwogICAgICAgICAvLyBEZWZhdWx0IG1v
Y2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBpZiB0aGV5IG5lZWQgZGlm
ZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlv
bih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBm
YWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBsb2NhbDogeyBhY2NlcHRBdXRo
ZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOwogCiAgICAg
ICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CkBA
IC0xMjEsOCArMTIxLDggQEAKICAgICAgICAgICAgICAgICAgICAgdGltZW91dDogMTAKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9OwotICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGxvY2FsOiB7IGFjY2VwdEF1
dGhlbnRpY2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgICAgIGludGVybmFscy5z
ZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1
ZSwgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9u
OiBmYWxzZSB9IH0pOwogICAgICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RB
bGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3Bl
cmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBb
W2NyZWF0ZV1dIHdpdGggc2lsZW50IGZhaWx1cmUgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0
b3IuIDUiKTsKIApAQCAtMTQyLDggKzE0Miw4IEBACiAgICAgICAgICAgICAgICAgICAgIHRpbWVv
dXQ6IDEwCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2Vi
QXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGxv
Y2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFs
c2UgfSB9KTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAg
ICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBz
aWxlbnRGYWlsdXJlOiB0cnVlLCBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwg
YWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CiAgICAgICAgICAgICAgICAgdGVzdFJ1bm5l
ci5hZGRUZXN0S2V5VG9LZXljaGFpbihwcml2YXRlS2V5QmFzZTY0LCB0ZXN0UnBJZCwgdXNlcmhh
bmRsZUJhc2U2NCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJl
amVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUo
b3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpLnRoZW4oKCkgPT4gewpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNy
ZWF0ZS1mYWlsdXJlLWxvY2FsLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRt
bAppbmRleCBjM2M5MzcyNjQ0YjM4MTRjYjRhMzQ1YzM1MTk2MTM4NzhlZWUyNDUzLi4zOWM3ZWM3
ZmFjNTRkZjcxN2RiMzdhYTA4NDk1N2Q3NDBjMjcyZTU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUt
bG9jYWwuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbApAQCAtOSw4
ICs5LDggQEAKICAgICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2NCA9IGF3YWl0IGdlbmVyYXRl
UHJpdmF0ZUtleUJhc2U2NCgpOwogICAgICAgICBjb25zdCBjcmVkZW50aWFsSUQgPSBhd2FpdCBj
YWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7CiAgICAgICAgIC8vIERlZmF1
bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVl
ZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1
cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IGZhbHNlLCBhY2NlcHRBdHRl
c3RhdGlvbjogZmFsc2UgfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAg
ICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7
IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246
IGZhbHNlIH0gfSk7CiAKICAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICAgICAg
Y29uc3Qgb3B0aW9ucyA9IHsKQEAgLTExNiw4ICsxMTYsOCBAQAogICAgICAgICAgICAgICAgICAg
ICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0KICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9OwotICAgICAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRp
b25Nb2NrQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVl
LCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQorICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUs
IGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOwogICAgICAgICAgICAgcmV0dXJuIHByb21p
c2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRl
KG9wdGlvbnMpLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iKTsKICAgICAgICAgfSwgIlB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGhvdXQgYXR0ZXN0YXRpb24gaW4gYSBtb2Nr
IGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTEzNiw4ICsxMzYsOCBAQAogICAgICAgICAg
ICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzog
LTcgfV0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9OwotICAgICAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJB
dXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGlj
YXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOworICAgICAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRp
Y2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKICAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLmFkZFRlc3RLZXlUb0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRl
c3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJl
dHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmNyZWF0ZShvcHRpb25zKSwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIikudGhlbigoKSA9
PiB7CkBAIC0xNjQsOCArMTY0LDggQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
OwogCi0gICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbG9jYWw6
IHsgYWNjZXB0QXV0aGVudGljYXRpb246IGZhbHNlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2Ug
fSB9KTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgICAg
IGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbG9jYWw6
IHsgYWNjZXB0QXV0aGVudGljYXRpb246IGZhbHNlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2Ug
fSB9KTsKICAgICAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVy
cm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0
aW1lZCBvdXQuIik7CiAgICAgICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVd
XSB3aXRoIHRpbWVvdXQgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CiAgICAgfSko
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1uZmMu
aHR0cHMuaHRtbAppbmRleCA0ODI0ODU3MzNjNWFmMzcyMzgzMjFiNmYyNGIyMjAzNGRmZWQ0Yjcx
Li4yNTM1M2YwOTI2OGFhNTcxYjg3ZmQyYjExNTNlYzg2ZDg2MmYxNDViIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRl
LWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy5odG1sCkBA
IC01LDggKzUsOCBAQAogPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0
PgogPHNjcmlwdD4KICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVl
ZCB0byBvdmVycmlkZSBpdCBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0g
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhl
bnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJuby10YWdzIiB9IH0p
OworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogIm5vLXRhZ3MiIH0g
fSk7CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewogICAgICAgICBjb25zdCBvcHRp
b25zID0gewpAQCAtNjYsOCArNjYsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogIndyb25n
LXRhZy10eXBlIiB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAg
ICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbmZj
OiB7IGVycm9yOiAid3JvbmctdGFnLXR5cGUiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNl
UmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0
ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggd3JvbmcgdGFnIHR5cGUgaW4gYSBtb2NrIG5mYyBh
dXRoZW50aWNhdG9yLiIpOwogCkBAIC04OCw4ICs4OCw4IEBACiAgICAgICAgICAgICB9CiAgICAg
ICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVz
dFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7IGVy
cm9yOiAibm8tY29ubmVjdGlvbnMiIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
KQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24oeyBuZmM6IHsgZXJyb3I6ICJuby1jb25uZWN0aW9ucyIgfSB9KTsKICAgICAgICAgcmV0
dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAi
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBubyBjb25uZWN0aW9ucyBpbiBh
IG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTExMCw4ICsxMTAsOCBAQAogICAgICAg
ICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlv
bih7IG5mYzogeyBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogWyBd
IH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJu
YWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6
ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFsgXSB9IH0pOwogICAgICAgICBy
ZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0s
ICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG51bGwgdmVyc2lvbiBpbiBh
IG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTEzMiw4ICsxMzIsOCBAQAogICAgICAg
ICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlv
bih7IG5mYzogeyBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDpbdGVz
dER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRC
YXNlNjQ6W3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1
cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50
aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHdyb25nIHZlcnNpb24gaW4gYSBt
b2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLXNp
bGVudC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMuaHRtbAppbmRleCBh
ZWQ5N2MyNTY2MTYyOWRiOWFjNzAzOGUxNzE3YzQ0ODQ4ZWY2YWQ0Li43ZTcwNGY3ZTExY2RlMzMx
MDQ5MDE0YzkzMzdmNmRhZDkxY2M4YTNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLXNpbGVu
dC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBzLmh0bWwKQEAgLTIx
LDggKzIxLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0
aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6
ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwg
aXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFsiQVE9PSJdIH0gfSk7CisgICAgICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6
ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwg
aXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFsiQVE9PSJdIH0gfSk7CiAgICAgICAgIHJldHVy
biBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWFsZm9ybWVkIEFQRFUgcGF5bG9h
ZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTQzLDggKzQzLDggQEAKICAg
ICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3Vi
U3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBh
eWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7
CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNl
dE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVl
LCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGlj
aW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5v
RXJyb3JPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVq
ZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShv
cHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWFsZm9ybWVkIFUyRiByZWdpc3RlciByZXNwb25zZSBp
biBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTY1LDggKzY1LDggQEAKICAgICAg
ICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRp
b24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3Rh
Z2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxv
YWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNwb25zZUJhc2U2NF0g
fSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5h
bHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6
IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAi
bWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZB
cGR1SW5zTm90U3VwcG9ydGVkT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1
cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50
aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHJlZ2lzdGVyIGNvbW1hbmQgZXJy
b3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC04OCw4ICs4OCw4IEBACiAg
ICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1
cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1
YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBw
YXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0
VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBz
dGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxv
YWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlS
ZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5UmVzcG9uc2VCYXNl
NjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVy
cm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0
aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdp
dGggYm9ndXMgY29tbWFuZCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAK
QEAgLTExMCw4ICsxMTAsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0
aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBh
eWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9u
bHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9
IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFs
cy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTog
dHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJt
YWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFw
ZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9u
c2VCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiSW52YWxp
ZFN0YXRlRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiQXQg
bGVhc3Qgb25lIGNyZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNyZWRl
bnRpYWxzIGxpc3QgaW4gdGhlIGF1dGhlbnRpY2F0b3IuIik7CiAgICAgfSwgIlB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZmlyc3QgZXhjbHVkZSBjcmVkZW50aWFsIG1hdGNo
ZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC0xMzMsOCArMTMzLDggQEAK
ICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwg
c3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUs
IHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwg
dGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJyb3JP
bmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQor
ICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3Rh
Z2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxv
YWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUy
ZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVz
cG9uc2VCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiSW52
YWxpZFN0YXRlRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAi
QXQgbGVhc3Qgb25lIGNyZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNy
ZWRlbnRpYWxzIGxpc3QgaW4gdGhlIGF1dGhlbnRpY2F0b3IuIik7CiAgICAgfSwgIlB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggc2Vjb25kIGV4Y2x1ZGUgY3JlZGVudGlhbCBt
YXRjaGVkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtMTU2LDggKzE1Niw4
IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tD
b25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVz
dCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0
cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25s
eVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVz
cG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25z
ZUJhc2U2NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAg
ICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlk
OiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMt
cGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVDb25kaXRp
b25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlvbnNO
b3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNh
dGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNl
QmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93
ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRp
b24gdGltZWQgb3V0LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVd
XSB3aXRoIGZpcnN0IGV4Y2x1ZGUgY3JlZGVudGlhbCBtYXRjaGVkIGluIGEgbW9jayBoaWQgYXV0
aGVudGljYXRvci4gVGVzdCBvZiB1c2VyIHByZXNlbmNlLiIpOwogPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLWZhaWx1cmUtdTJmLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLmh0dHBzLmh0bWwK
aW5kZXggMTU3ZDllODhhMDZiZWQ0NmM3ZDRmZDg1ZTE2MDFjZTJhZWNmNDIzZC4uOTQ3ZGNmZjJi
ZjUwOWQzZmFmYTA1NTA0MjVjNzk5MDExMjM0OGM2YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUy
Zi5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYuaHR0cHMuaHRtbApAQCAtMjAsOCArMjAs
OCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2Nr
Q29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIs
IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDog
WyJBUT09Il0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAg
ICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBh
eWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogWyJBUT09Il0gfSB9KTsKICAgICAg
ICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiQ291bGRuJ3QgcGFyc2UgdGhlIEFQRFUgcmVzcG9u
c2UuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWFs
Zm9ybWVkIEFQRFUgcGF5bG9hZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAg
LTQxLDggKzQxLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRp
Y2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3Rh
Z2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxv
YWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7Cisg
ICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0
Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRy
dWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjRd
IH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwg
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkNvdWxkbid0IHBhcnNlIHRo
ZSBVMkYgcmVnaXN0ZXIgcmVzcG9uc2UuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2NyZWF0ZV1dIHdpdGggbWFsZm9ybWVkIFUyRiByZWdpc3RlciByZXNwb25zZSBpbiBhIG1v
Y2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTYyLDggKzYyLDggQEAKICAgICAgICAgICAg
IH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
ICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBo
aWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91
cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdUluc05v
dFN1cHBvcnRlZE9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIs
IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDog
W3Rlc3RVMmZBcGR1SW5zTm90U3VwcG9ydGVkT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAg
ICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5j
cmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJVbmtub3duIGludGVybmFsIGVycm9yLiBFcnJv
ciBjb2RlOiAyNzkwNCIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVd
XSB3aXRoIHJlZ2lzdGVyIGNvbW1hbmQgZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9y
LiIpOwogCkBAIC04NCw4ICs4NCw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRX
ZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVz
dCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0
cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0
LCB0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAg
ICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3Qi
LCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1
ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NCwg
dGVzdFUyZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAgICAg
ICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIEVycm9y
IGNvZGU6IDI3OTA0Iik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1d
IHdpdGggYm9ndXMgY29tbWFuZCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7
CiAKQEAgLTEwNiw4ICsxMDYsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2Vi
QXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3Qi
LCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1
ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NCwg
dGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAo
d2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdl
OiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2Fk
QmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBk
dU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNl
UmVqZWN0cyh0LCAiSW52YWxpZFN0YXRlRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3Jl
YXRlKG9wdGlvbnMpLCAiQXQgbGVhc3Qgb25lIGNyZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBv
ZiB0aGUgZXhjbHVkZUNyZWRlbnRpYWxzIGxpc3QgaW4gdGhlIGF1dGhlbnRpY2F0b3IuIik7CiAg
ICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZmlyc3QgZXhjbHVk
ZSBjcmVkZW50aWFsIG1hdGNoZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBA
IC0xMjksOCArMTI5LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhl
bnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3Vi
U3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBh
eWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVz
dFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5
UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
eyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGlj
aW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdy
b25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNl
QmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAgICAg
ICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiSW52YWxpZFN0YXRlRXJyb3IiLCBuYXZpZ2F0
b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiQXQgbGVhc3Qgb25lIGNyZWRlbnRpYWwg
bWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNyZWRlbnRpYWxzIGxpc3QgaW4gdGhlIGF1
dGhlbnRpY2F0b3IuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1d
IHdpdGggc2Vjb25kIGV4Y2x1ZGUgY3JlZGVudGlhbCBtYXRjaGVkIGluIGEgbW9jayBoaWQgYXV0
aGVudGljYXRvci4iKTsKIApAQCAtMTUxLDggKzE1MSw4IEBACiAgICAgICAgICAgICB9CiAgICAg
ICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVz
dFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0
YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9h
ZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVDb25kaXRpb25zTm90
U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRp
c2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmll
ZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0
XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVy
bmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdl
OiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIs
IGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0
aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2Zp
ZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9u
bHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9
IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIkludmFsaWRTdGF0ZUVycm9y
IiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkF0IGxlYXN0IG9uZSBj
cmVkZW50aWFsIG1hdGNoZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBsaXN0
IGluIHRoZSBhdXRoZW50aWNhdG9yLiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3Mg
W1tjcmVhdGVdXSB3aXRoIGZpcnN0IGV4Y2x1ZGUgY3JlZGVudGlhbCBtYXRjaGVkIGluIGEgbW9j
ayBoaWQgYXV0aGVudGljYXRvci4gVGVzdCBvZiB1c2VyIHByZXNlbmNlLiIpOwogPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS5odHRwcy5odG1s
CmluZGV4IDQ2NDJhNWJhMGZiZTdhOGIzYzhhZGZmNTM5Njk5NTViMGM1ZDY2Y2IuLjVlOGY1Yjgx
MmJlNTc2M2MzMWJjNWQyZGZjODk0YzA5NTBmNTc4OTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS5o
dHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS5odHRwcy5odG1sCkBAIC01LDggKzUsOCBAQAogPHNj
cmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KICAgICAv
LyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBpZiB0
aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyB9KTsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxz
LnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyB9KTsKIAogICAgIHByb21p
c2VfdGVzdChmdW5jdGlvbih0KSB7CiAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwK
aW5kZXggNmE4YzM1ODEzZWUyYWQ3MjdiYmM1NjYxMWE4YjJjYjkwYWRiYWY2NC4uNTQ0NmY1NTcw
ZjI5ZDUzNDZhZjc4N2NmNTY0YzkzZTU2NzBhZjcwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhp
ZC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbApAQCAtNiw4ICs2LDgg
QEAKIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy9jYm9yLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+
CiAgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJp
ZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgotICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tD
b25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwg
ZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNl
NjRdIH0gfSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5z
ZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVx
dWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDog
W3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdIH0gfSk7CiAKICAgICBwcm9taXNlX3Rlc3QodCA9
PiB7CiAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbG9j
YWwuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1sb2NhbC5odHRwcy5odG1sCmluZGV4IGU1MWJhNWZk
ZTZhOGVmNGY0OTA4NjdmYWJhZmM3YmJkNTcyZTRlZWUuLjA4OGU4NjMxOGQxYmU4YTA0NDU3ZDQx
MThiM2QxYWY4ODNkYzAyYzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1sb2NhbC5odHRwcy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1jcmVhdGUtc3VjY2Vzcy1sb2NhbC5odHRwcy5odG1sCkBAIC0xMCw4ICsxMCw4IEBACiAgICAg
ICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlCYXNl
NjQoKTsKICAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0gYXdhaXQgY2FsY3VsYXRlQ3JlZGVu
dGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOwogICAgICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmln
dXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNv
bmZpZ3VyYXRpb24uCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7CisgICAg
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oewogICAgICAgICAgICAgICAgIGxvY2FsOiB7
CiAgICAgICAgICAgICAgICAgICAgIGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLAogICAgICAg
ICAgICAgICAgICAgICBhY2NlcHRBdHRlc3RhdGlvbjogdHJ1ZSwKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3Vj
Y2Vzcy1uZmMuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1uZmMuaHR0cHMuaHRtbAppbmRleCA4ZDIy
ZTU0NGQ0YWI5NTA5OTUyNTdmYTZiOWUwZTVmMDJjODYxNTVkLi44MmQwNzA2MThiM2UwMzNjMzQ4
YTc3NDJjMTBhZjZlYzExYzY2MzU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbmZjLmh0dHBzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy5odG1sCkBAIC02LDggKzYsOCBAQAogPHNjcmlw
dCBzcmM9Ii4vcmVzb3VyY2VzL2Nib3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KICAgICAvLyBE
ZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBpZiB0aGV5
IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRp
b24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3ROZmNDdGFw
VmVyc2lvbkJhc2U2NCwgdGVzdEdldEluZm9SZXNwb25zZUFwZHVCYXNlNjQsIHRlc3RDcmVhdGlv
bk1lc3NhZ2VBcGR1QmFzZTY0XSB9IH0pOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IG5m
YzogeyBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdE5mY0N0YXBWZXJzaW9u
QmFzZTY0LCB0ZXN0R2V0SW5mb1Jlc3BvbnNlQXBkdUJhc2U2NCwgdGVzdENyZWF0aW9uTWVzc2Fn
ZUFwZHVCYXNlNjRdIH0gfSk7CiAKICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAgIGNv
bnN0IG9wdGlvbnMgPSB7CkBAIC03MSw4ICs3MSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAg
IH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9y
OiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0TmZjQ3RhcFZlcnNpb25CYXNlNjQsIHRl
c3RHZXRJbmZvUmVzcG9uc2VBcGR1QmFzZTY0LCB0ZXN0Q3JlYXRpb25NZXNzYWdlQXBkdUJhc2U2
NF0sIG11bHRpcGxlVGFnczogdHJ1ZSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0TmZj
Q3RhcFZlcnNpb25CYXNlNjQsIHRlc3RHZXRJbmZvUmVzcG9uc2VBcGR1QmFzZTY0LCB0ZXN0Q3Jl
YXRpb25NZXNzYWdlQXBkdUJhc2U2NF0sIG11bHRpcGxlVGFnczogdHJ1ZSB9IH0pOwogICAgICAg
ICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRl
bnRpYWwgPT4gewogICAgICAgICAgICAgY2hlY2tDdGFwTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3Jl
ZGVudGlhbCk7CiAgICAgICAgIH0pOwpAQCAtOTUsOCArOTUsOCBAQAogICAgICAgICAgICAgfQog
ICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5mYzog
eyBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdE5mY1UyZlZlcnNpb25CYXNl
NjQsIHRlc3RVMmZBcGR1SW5zTm90U3VwcG9ydGVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJm
UmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bih7IG5mYzogeyBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdE5mY1UyZlZl
cnNpb25CYXNlNjQsIHRlc3RVMmZBcGR1SW5zTm90U3VwcG9ydGVkT25seVJlc3BvbnNlQmFzZTY0
LCB0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRv
ci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAg
ICAgICAgIGNoZWNrVTJmTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAg
IH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLXUyZi5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLXUy
Zi5odHRwcy5odG1sCmluZGV4IDQ3ZDhiZDQ0OTQ3NWFkNDUzOWU3YTM5YWIxMmMzOWQyMzQ2Yzdh
M2MuLmMyYmM4ZjUyNmI3NDAyMTFiMTk0OTczMDU3MDE1YjVkMTBhZTY1N2EgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVh
dGUtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWwK
QEAgLTIxLDggKzIxLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhl
bnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3Vi
U3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2
NDogW3Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOworICAgICAgICBpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwg
ZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmUmVn
aXN0ZXJSZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIGNoZWNr
VTJmTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwpAQCAtNDUs
OCArNDUsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRp
b25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTog
Im1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVz
dFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZSZWdpc3RlclJlc3Bv
bnNlXSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGlu
dGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0
YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6
IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJh
c2U2NCwgdGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAg
ICAgICAgICAgICBjaGVja1UyZk1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwpOwogICAg
ICAgICB9KTsKQEAgLTY5LDggKzY5LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5
bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0
VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlJlZ2lzdGVyUmVzcG9u
c2VdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50
ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3Rh
Z2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjog
dHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFz
ZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlJlZ2lz
dGVyUmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Y3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBjaGVja1Uy
Zk1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKQEAgLTkyLDgg
KzkyLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJt
c2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RV
MmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFw
ZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmUmVnaXN0
ZXJSZXNwb25zZV0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAg
ICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhp
ZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIs
IGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0
aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2Zp
ZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOwogICAg
ICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNy
ZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgY2hlY2tVMmZNYWtlQ3JlZGVudGlhbFJlc3VsdChj
cmVkZW50aWFsKTsKICAgICAgICAgfSk7CkBAIC0xMTYsOCArMTE2LDggQEAKICAgICAgICAgICAg
IH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
ICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBo
aWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3Mi
LCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9
IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFs
cy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAi
cmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUs
IHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKICAgICAgICAg
cmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50
aWFsID0+IHsKICAgICAgICAgICAgIGNoZWNrVTJmTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVu
dGlhbCk7CiAgICAgICAgIH0pOwpAQCAtMTQwLDggKzE0MCw4IEBACiAgICAgICAgICAgICB9CiAg
ICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNV
MmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsK
KyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVl
c3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXls
b2FkQmFzZTY0OiBbdGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVy
biBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9
PiB7CiAgICAgICAgICAgICBjaGVja1UyZk1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWws
IGZhbHNlKTsKICAgICAgICAgfSk7CkBAIC0xNjQsOCArMTY0LDggQEAKICAgICAgICAgICAgIH0K
ICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6
IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBp
c1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0p
OworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5z
ZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVx
dWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBh
eWxvYWRCYXNlNjQ6IFt0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0
dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFs
ID0+IHsKICAgICAgICAgICAgIGNoZWNrVTJmTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVudGlh
bCwgZmFsc2UpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQtc2lsZW50Lmh0
dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtZ2V0LWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1sCmluZGV4IGU4NWMyYzg0YWY3
MjJkNzUxOWM1NWVjN2M1Y2U2YzUwMDYzNmFjMjAuLjM4ZjQwNzQ5ZTk1YWUwNWJjOTI3ZjFkY2Ji
M2NiOWUxZDkyMWU3NzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQtc2lsZW50Lmh0dHBzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWdldC1mYWlsdXJlLWhpZC1zaWxlbnQuaHR0cHMuaHRtbApAQCAtMTIsOCArMTIsOCBAQAogICAg
ICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJT
dGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0OiBb
dGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9h
ZEJhc2U2NDogW3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0pOwogICAgICAgICBy
ZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1hbGljaW91cyBwYXlsb2FkIGluIGEg
bW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtMjYsOCArMjYsOCBAQAogICAgICAgICAg
ICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7
IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTog
Im1zZyIsIGVycm9yOiAidW5zdXBwb3J0ZWQtb3B0aW9ucyIgfSB9KTsKKyAgICAgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTog
InJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAidW5zdXBwb3J0ZWQtb3B0aW9ucyIg
fSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3Ii
LCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91
dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCB1bnN1cHBv
cnRlZCBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtMzksOCAr
MzksOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJl
cXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXls
b2FkQmFzZTY0OiBbdGVzdEN0YXBFcnJJbnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNlQmFzZTY0XSB9
IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFs
cy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTog
dHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJt
YWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3RhcEVyckludmFsaWRDcmVk
ZW50aWFsUmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0
cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25z
KSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2dldF1dIHdpdGggaW52YWxpZCBjcmVkZW50aWFsIGluIGEgbW9jayBoaWQgYXV0aGVudGlj
YXRvci4iKTsKIApAQCAtNTIsOCArNTIsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9Owog
Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIu
c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRy
dWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFs
aWNpb3VzLXBheWxvYWQiLCBjYW5Eb3duZ3JhZGU6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0
Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3Rh
Z2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2Fk
IiwgY2FuRG93bmdyYWRlOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEN0YXBFcnJJbnZhbGlk
Q3JlZGVudGlhbFJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJl
amVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0
aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50
aWFsJ3MgW1tnZXRdXSB3aXRoIGF1dGhlbnRpY2F0b3IgZG93bmdyYWRlIGluIGEgbW9jayBoaWQg
YXV0aGVudGljYXRvci4iKTsKIApAQCAtNjYsOCArNjYsOCBAQAogICAgICAgICAgICAgfQogICAg
ICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZh
aWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVy
cm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBjYW5Eb3duZ3JhZGU6IHRydWUsIHBheWxvYWRCYXNl
NjQ6IFt0ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9uc2VCYXNlNjRdIH0gfSk7Cisg
ICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBo
aWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91
cy1wYXlsb2FkIiwgY2FuRG93bmdyYWRlOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEN0YXBF
cnJJbnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4g
cHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJQdWJsaWNL
ZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIGF1dGhlbnRpY2F0b3IgZG93bmdyYWRlIGluIGEg
bW9jayBoaWQgYXV0aGVudGljYXRvci4gMiIpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1
cmUtaGlkLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLmh0dHBzLmh0bWwKaW5kZXggNTQ4NWYzNzBk
Njc5NzFlMjIzNWQ4ZDlhODcyZWFiMzRmOWM1NjZmNy4uMDAyMmVhOTBiMDc2YWZlMmM0NjRiZjc2
ZjI1ZDQ5YjUzY2E0ODFiOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC5odHRwcy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQt
ZmFpbHVyZS1oaWQuaHR0cHMuaHRtbApAQCAtNSw4ICs1LDggQEAKIDxzY3JpcHQgc3JjPSIuL3Jl
c291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAgICAgLy8gRGVmYXVsdCBtb2Nr
IGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZl
cmVudCBjb25maWd1cmF0aW9uLgotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5
bG9hZCIgfSB9KTsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxz
LnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJy
ZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiB9IH0p
OwogCiAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICBjb25zdCBvcHRpb25zID0gewpA
QCAtMzEsOCArMzEsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVu
dGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJT
dGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0OiBb
dGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjRdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ci
LCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3REdW1teU1l
c3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHMo
dCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJV
bmtub3duIGludGVybmFsIGVycm9yLiBFcnJvciBjb2RlOiAyNTUiKTsKICAgICB9LCAiUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtYWxpY2lvdXMgcGF5bG9hZCBpbiBhIG1vY2sg
aGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTQ0LDggKzQ0LDggQEAKICAgICAgICAgICAgIH0K
ICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6
IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInVuc3VwcG9ydGVk
LW9wdGlvbnMiIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAg
ICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6
IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInVuc3VwcG9ydGVk
LW9wdGlvbnMiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93
bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIlVua25vd24gaW50
ZXJuYWwgZXJyb3IuIEVycm9yIGNvZGU6IDQzIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRp
YWwncyBbW2dldF1dIHdpdGggdW5zdXBwb3J0ZWQgb3B0aW9ucyBpbiBhIG1vY2sgaGlkIGF1dGhl
bnRpY2F0b3IuIik7CiAKQEAgLTU2LDggKzU2LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAg
fTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6
ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwg
cGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2
NF0gfSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRl
cm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFn
ZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQi
LCBwYXlsb2FkQmFzZTY0OiBbdGVzdEN0YXBFcnJJbnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNlQmFz
ZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJv
ciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJVbmtub3duIGludGVybmFs
IGVycm9yLiBFcnJvciBjb2RlOiAzNCIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3Mg
W1tnZXRdXSB3aXRoIGF1dGhlbnRpY2F0b3IgZG93bmdyYWRlIGZhaWxlZCBpbiBhIG1vY2sgaGlk
IGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTY5LDggKzY5LDggQEAKICAgICAgICAgICAgIH0KICAg
ICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsg
c3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXls
b2FkIiwgY2FuRG93bmdyYWRlOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEN0YXBFcnJJbnZh
bGlkQ3JlZGVudGlhbFJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwg
ZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGNhbkRvd25ncmFkZTogdHJ1ZSwgcGF5bG9hZEJh
c2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2NF0gfSB9KTsK
ICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RTdXBwb3J0ZWRFcnJvciIsIG5h
dmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJDYW5ub3QgY29udmVydCB0aGUgcmVx
dWVzdCB0byBVMkYgY29tbWFuZC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Z2V0XV0gd2l0aCBhdXRoZW50aWNhdG9yIGRvd25ncmFkZSBzdWNjZWVkZWQgYW5kIHRoZW4gVTJG
IGZhaWxlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIDIiKTsKIDwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWdldC1mYWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxvY2FsLXNp
bGVudC5odHRwcy5odG1sCmluZGV4IDg0M2JhODZmMWY5YTdjZGI5NGFiYmE2YzY3NDNjMDJlOWMz
M2RmNWEuLmYwMmMyNTVlODgyNDA0NzRmMTIyMmMxMmIwNjVjNmI5ZjhlOTlmMzIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1n
ZXQtZmFpbHVyZS1sb2NhbC1zaWxlbnQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwtc2ls
ZW50Lmh0dHBzLmh0bWwKQEAgLTksOCArOSw4IEBACiAgICAgICAgIGNvbnN0IHByaXZhdGVLZXlC
YXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKICAgICAgICAgY29uc3Qg
Y3JlZGVudGlhbElEID0gYXdhaXQgY2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNl
NjQpOwogICAgICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0
byBvdmVycmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0
aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGxvY2Fs
OiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNl
LCBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0OiB1c2VyaGFuZGxlQmFzZTY0IH0gfSk7CisgICAg
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBsb2Nh
bDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxz
ZSwgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDogdXNlcmhhbmRsZUJhc2U2NCB9IH0pOwogCiAg
ICAgICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC5odHRw
cy5odG1sCmluZGV4IGVhMGUyYTQ2YmYwNTFhMGZlNzhhYWYyNDBjZjcyOGM3YTdmNDQyZGEuLjNl
NGY0OTkwNmMzMmU0ZTg5NTI1OGY2NjgzYTBmYmVhNDk5Nzc5ZWYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVy
ZS1sb2NhbC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sCkBAIC05LDgg
KzksOCBAQAogICAgICAgICBjb25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQgZ2VuZXJhdGVQ
cml2YXRlS2V5QmFzZTY0KCk7CiAgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJRCA9IGF3YWl0IGNh
bGN1bGF0ZUNyZWRlbnRpYWxJRChwcml2YXRlS2V5QmFzZTY0KTsKICAgICAgICAgLy8gRGVmYXVs
dCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVk
IGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0dGVz
dGF0aW9uOiBmYWxzZSwgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDogdXNlcmhhbmRsZUJhc2U2
NCB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVy
bmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNj
ZXB0QXV0aGVudGljYXRpb246IGZhbHNlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UsIHByZWZl
cnJlZFVzZXJoYW5kbGVCYXNlNjQ6IHVzZXJoYW5kbGVCYXNlNjQgfSB9KTsKIAogICAgICAgICBw
cm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWdldC1mYWlsdXJlLW5mYy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLW5mYy5odHRwcy5odG1sCmluZGV4
IGRiNjQ4NzRmZmY1ZDgxZmU3YjYxNDQzOWY3MjYyOWE5OWQwMDI1MTMuLjI3NWVlNjZlMjYyODc5
MTdhYWRlOWNlNTNlNGU5Mjc0N2JkYTYwNGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1uZmMuaHR0cHMu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtZ2V0LWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwKQEAgLTUsOCArNSw4IEBACiA8c2NyaXB0
IHNyYz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogICAgIC8vIERl
ZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkg
bmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlv
bih7IG5mYzogeyBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiB9IH0pOworICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiB9IH0pOwog
CiAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICBjb25zdCBvcHRpb25zID0gewpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWdldC1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYtc2lsZW50
Lmh0dHBzLmh0bWwKaW5kZXggOGE3Y2Q4YTViYjkxZDgxYjE0NzZhZGQ3YzQyZDAxMzYzYjBkNmM3
YS4uYWU1YmJkZDNlMzhiNGRkZjRiYjA2NDNlOWZkNTAzYWY3OThkMjNiYyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1m
YWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLXNpbGVudC5odHRw
cy5odG1sCkBAIC0xMyw4ICsxMyw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRX
ZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwg
aGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lv
dXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vy
cm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1
YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBw
YXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0p
OwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5h
dmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIp
OwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1hbGZvcm1lZCBz
aWduIHJlc3BvbnNlIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtMjcsOCAr
MjcsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJl
cXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1Uy
ZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNl
QmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAg
IGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50
RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwg
ZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBb
dGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJl
dHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbm8gbWF0Y2hlZCBhbGxvdyBjcmVkZW50
aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTQxLDggKzQxLDggQEAK
ICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwg
c3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUs
IHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwg
dGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3Rh
Z2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2Fk
IiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlS
ZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjRdIH0g
fSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwg
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQu
Iik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbm8gbWF0Y2hl
ZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIDIiKTsKIDwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLXUyZi5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLXUyZi5o
dHRwcy5odG1sCmluZGV4IDY0OTEzNzgyODRlYjY3YTE5ZTdkNjA1ZTY4NzAwMGRhNjQxZWJkZTYu
LjVkMWQzMDBlNjg4NTY4NDQ5ZDFkZjNlODQ2ZmQ2ZTIyYWQ4YTI0MDIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFp
bHVyZS11MmYuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLmh0dHBzLmh0bWwKQEAgLTEyLDgg
KzEyLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJt
c2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNl
NjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3Vi
U3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBh
eWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7
CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2aWdh
dG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIkNvdWxkbid0IHBhcnNlIHRoZSBVMkYgc2ln
biByZXNwb25zZS4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0
aCBtYWxmb3JtZWQgc2lnbiByZXNwb25zZSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7
CiAKQEAgLTI1LDggKzI1LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1
dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwg
c3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUs
IHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NF0g
fSB9KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5h
bHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTog
InJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBp
c1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3Bv
bnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFs
bG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJObyBjcmVk
ZW50aWFscyBmcm9tIHRoZSBhbGxvd0NyZWRlbnRpYWxzIGxpc3QgaXMgZm91bmQgaW4gdGhlIGF1
dGhlbnRpY2F0b3IuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdp
dGggbm8gbWF0Y2hlZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0
b3IuIik7CiAKQEAgLTM4LDggKzM4LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6
IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJh
c2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAg
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwg
c3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUs
IHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwg
dGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJl
dHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmdldChvcHRpb25zKSwgIk5vIGNyZWRlbnRpYWxzIGZyb20gdGhlIGFsbG93Q3JlZGVu
dGlhbHMgbGlzdCBpcyBmb3VuZCBpbiB0aGUgYXV0aGVudGljYXRvci4iKTsKICAgICB9LCAiUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBubyBtYXRjaGVkIGFsbG93IGNyZWRlbnRp
YWxzIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gMiIpOwogCkBAIC01Myw4ICs1Myw4IEBA
CiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25m
aWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJy
b3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVz
dFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRh
T25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJt
YWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFw
ZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJl
c3BvbnNlQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5v
dEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJObyBj
cmVkZW50aWFscyBmcm9tIHRoZSBhbGxvd0NyZWRlbnRpYWxzIGxpc3QgaXMgZm91bmQgaW4gdGhl
IGF1dGhlbnRpY2F0b3IuIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1d
IHdpdGggbm8gbWF0Y2hlZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRp
Y2F0b3IuIChBcHBJRCkiKTsKIApAQCAtNjcsOCArNjcsOCBAQAogICAgICAgICAgICAgfQogICAg
ICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBz
dGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxv
YWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25s
eVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwg
dGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdE
YXRhT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6
ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUy
ZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25s
eVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwg
dGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJl
dHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmdldChvcHRpb25zKSwgIk5vIGNyZWRlbnRpYWxzIGZyb20gdGhlIGFsbG93Q3JlZGVu
dGlhbHMgbGlzdCBpcyBmb3VuZCBpbiB0aGUgYXV0aGVudGljYXRvci4iKTsKICAgICB9LCAiUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBubyBtYXRjaGVkIGFsbG93IGNyZWRlbnRp
YWxzIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gMiAoQXBwSUQpIik7CiA8L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1nZXQtZmFpbHVyZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLmh0dHBzLmh0bWwKaW5kZXgg
ZTJmOTVkNjdkOGQ4Zjc0ZDU5NjlmMzU4ZGFjZGZlMWEzMzViNGQyMi4uY2YxOGZmNzdlZjMzZmEz
MjQzMjBkM2M1YjNhYzY0ZGE5ZWE0MjgzMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLmh0dHBzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWdldC1mYWlsdXJlLmh0dHBzLmh0bWwKQEAgLTUsOCArNSw4IEBACiA8c2NyaXB0IHNyYz0iLi9y
ZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogICAgIC8vIERlZmF1bHQgbW9j
ayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZm
ZXJlbnQgY29uZmlndXJhdGlvbi4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IH0pOwor
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IH0pOwogCiAgICAgcHJvbWlzZV90ZXN0KHQgPT4g
ewogICAgICAgICBjb25zdCBvcHRpb25zID0gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWhpZC5odHRw
cy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWdldC1zdWNjZXNzLWhpZC5odHRwcy5odG1sCmluZGV4IGQ5YjIyYjQyYTlkNzYyMDAyMTQx
MjEwYzQ1ZDY4Y2ZhNmQxYjk1MzYuLjBjZjAzZTdkZDZlOTE5MGI3ZjU2ZjdiOTBlYzkzOWMwZTJh
ZGVkYjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlk
Lmh0dHBzLmh0bWwKQEAgLTUsOCArNSw4IEBACiA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRp
bC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0
aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmln
dXJhdGlvbi4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIu
c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJl
cXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6
IFt0ZXN0QXNzZXJ0aW9uTWVzc2FnZUJhc2U2NF0gfSB9KTsKKyAgICBpZiAod2luZG93LmludGVy
bmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
InN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEFzc2VydGlvbk1lc3NhZ2VCYXNlNjRdIH0g
fSk7CiAKICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1sb2NhbC5odHRw
cy5odG1sCmluZGV4IGUxODIwOTQ4Zjc3ZTViN2Y4NDQzOThlOWQwZmY2NzA2YzU4ZWY3NDMuLjkz
NjBhZmI4ZjU1ODI3NTg0M2Y5MDAzNDU3YzcwZTg3YzQzNzZjYmYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vz
cy1sb2NhbC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1sb2NhbC5odHRwcy5odG1sCkBAIC05LDgg
KzksOCBAQAogICAgICAgICBjb25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQgZ2VuZXJhdGVQ
cml2YXRlS2V5QmFzZTY0KCk7CiAgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJRCA9IGF3YWl0IGNh
bGN1bGF0ZUNyZWRlbnRpYWxJRChwcml2YXRlS2V5QmFzZTY0KTsKICAgICAgICAgLy8gRGVmYXVs
dCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVk
IGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0QXR0ZXN0
YXRpb246IGZhbHNlLCBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0OiB1c2VyaGFuZGxlQmFzZTY0
IH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJu
YWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBsb2NhbDogeyBhY2Nl
cHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlLCBwcmVmZXJy
ZWRVc2VyaGFuZGxlQmFzZTY0OiB1c2VyaGFuZGxlQmFzZTY0IH0gfSk7CiAKICAgICAgICAgZnVu
Y3Rpb24gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNj
ZXNzLW5mYy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLW5mYy5odHRwcy5odG1sCmluZGV4IGZjN2M2YWEz
NTVlOGNmZGJiNTQzM2RlMWRiY2U1NWViNWM1ZTY0MTMuLmNjMDUwZGExYzNkMTM0NTExZjFlMTg3
YTc2YWM1NjM5YjE5ZDQxODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1uZmMuaHR0cHMuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0
LXN1Y2Nlc3MtbmZjLmh0dHBzLmh0bWwKQEAgLTUsOCArNSw4IEBACiA8c2NyaXB0IHNyYz0iLi9y
ZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogICAgIC8vIERlZmF1bHQgbW9j
ayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZm
ZXJlbnQgY29uZmlndXJhdGlvbi4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5mYzog
eyBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdE5mY0N0YXBWZXJzaW9uQmFz
ZTY0LCB0ZXN0R2V0SW5mb1Jlc3BvbnNlQXBkdUJhc2U2NCwgdGVzdEFzc2VydGlvbk1lc3NhZ2VB
cGR1QmFzZTY0XSB9IH0pOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRl
cm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJv
cjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdE5mY0N0YXBWZXJzaW9uQmFzZTY0LCB0
ZXN0R2V0SW5mb1Jlc3BvbnNlQXBkdUJhc2U2NCwgdGVzdEFzc2VydGlvbk1lc3NhZ2VBcGR1QmFz
ZTY0XSB9IH0pOwogCiAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICBjb25zdCBvcHRp
b25zID0gewpAQCAtMzAsOCArMzAsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogInN1Y2Nl
c3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdE5mY1UyZlZlcnNpb25CYXNlNjQsIHRlc3RVMmZBcGR1
SW5zTm90U3VwcG9ydGVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9
IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFs
cy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAi
c3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0TmZjVTJmVmVyc2lvbkJhc2U2NCwgdGVzdFUy
ZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZTaWduUmVzcG9u
c2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlv
bnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tVMmZHZXRB
c3NlcnRpb25SZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNj
ZXNzLXUyZi5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLXUyZi5odHRwcy5odG1sCmluZGV4IDk1YjJkMWIy
ZTE5NGVmMmQzZTgxYzQ4NjllOTQ3NWZjZjBkNDNkN2UuLjBmMDAwOGFiNTQzZjVhZDc1YmNjNTc4
NDNjZGZhNTVkOWNiNDVmYTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0
LXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWwKQEAgLTEzLDggKzEzLDggQEAKICAgICAgICAgICAgIH0K
ICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6
IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBp
c1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7Cisg
ICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0
Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9h
ZEJhc2U2NDogW3Rlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAg
ICAgICAgICByZXR1cm4gY2hlY2tVMmZHZXRBc3NlcnRpb25SZXN1bHQoY3JlZGVudGlhbCk7CiAg
ICAgICAgIH0pOwpAQCAtMjksOCArMjksOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9Owog
Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIu
c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJl
cXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBw
YXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRl
c3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQor
ICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1
Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRh
T25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOwogICAgICAgICBy
ZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwg
PT4gewogICAgICAgICAgICAgcmV0dXJuIGNoZWNrVTJmR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRl
bnRpYWwpOwogICAgICAgICB9KTsKQEAgLTQ1LDggKzQ1LDggQEAKICAgICAgICAgICAgIH0KICAg
ICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsg
c3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1Uy
ZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmll
ZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25s
eVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOworICAgICAgICBpZiAo
d2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdl
OiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0
ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RV
MmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNp
Z25SZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5n
ZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIHJldHVybiBjaGVj
a1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7CkBAIC02Myw4
ICs2Myw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlv
bk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAi
bXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0
VTJmU2lnblJlc3BvbnNlXSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
KHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNj
ZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmU2lnblJlc3BvbnNlXSB9
IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50
aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgcmV0dXJuIGNoZWNrVTJmR2V0QXNzZXJ0
aW9uUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKQEAgLTgwLDggKzgwLDggQEAKICAg
ICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
InN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZTaWduUmVzcG9u
c2VdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50
ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3Rh
Z2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjog
dHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CiAgICAgICAg
IHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlh
bCA9PiB7CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tVMmZHZXRBc3NlcnRpb25SZXN1bHQoY3Jl
ZGVudGlhbCk7CiAgICAgICAgIH0pOwpAQCAtOTcsOCArOTcsOCBAQAogICAgICAgICAgICAgfQog
ICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlz
VTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9u
c2VCYXNlNjQsIHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ci
LCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZB
cGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0p
OwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVu
KGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgcmV0dXJuIGNoZWNrVTJmR2V0QXNzZXJ0aW9u
UmVzdWx0KGNyZWRlbnRpYWwsIHRydWUpOwogICAgICAgICB9KTsKQEAgLTExNSw4ICsxMTUsOCBA
QAogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29u
ZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVy
cm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVX
cm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7Cisg
ICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0
Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9h
ZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJm
U2lnblJlc3BvbnNlXSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxz
LmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgcmV0dXJuIGNo
ZWNrVTJmR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwsIHRydWUsICI3ZWFiYzVjYzMyNTFi
ZGM1OTExNWVmODdiNWY3ZWU3NGNiMDM3NDdlMzliYTgzNDE3NDg1NjVjYzEyOWMwNzE5Iik7CiAg
ICAgICAgIH0pOwpAQCAtMTMyLDggKzEzMiw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07
CiAKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAi
cmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUs
IHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwg
dGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZTaWduUmVzcG9u
c2VdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50
ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3Rh
Z2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjog
dHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFz
ZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNpZ25S
ZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQo
b3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIHJldHVybiBjaGVja1Uy
ZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7CkBAIC0xNDksOCAr
MTQ5LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJt
c2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RV
MmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9u
bHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQs
IHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
KQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
InN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdE
YXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJh
c2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZTaWdu
UmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0
KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tV
MmZHZXRBc3NlcnRpb25SZXN1bHQoY3JlZGVudGlhbCwgdHJ1ZSk7CiAgICAgICAgIH0pOwpAQCAt
MTY2LDggKzE2Niw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50
aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0
YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgY2FuRG93bmdyYWRlOiB0cnVlLCBwYXlsb2Fk
QmFzZTY0OiBbdGVzdEN0YXBFcnJJbnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNlQmFzZTY0LCB0ZXN0
VTJmU2lnblJlc3BvbnNlXSB9IH0pOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
KHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNj
ZXNzIiwgY2FuRG93bmdyYWRlOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEN0YXBFcnJJbnZh
bGlkQ3JlZGVudGlhbFJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOwog
ICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNy
ZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgcmV0dXJuIGNoZWNrVTJmR2V0QXNzZXJ0aW9uUmVz
dWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKQEAgLTE4Myw4ICsxODMsOCBAQAogICAgICAg
ICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlv
bih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3Vj
Y2VzcyIsIGNhbkRvd25ncmFkZTogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52
YWxpZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVz
cG9uc2VCYXNlNjQsIHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJt
c2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBjYW5Eb3duZ3JhZGU6IHRydWUsIHBheWxvYWRCYXNlNjQ6
IFt0ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1
V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOwog
ICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNy
ZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgcmV0dXJuIGNoZWNrVTJmR2V0QXNzZXJ0aW9uUmVz
dWx0KGNyZWRlbnRpYWwsIHRydWUsICI3ZWFiYzVjYzMyNTFiZGM1OTExNWVmODdiNWY3ZWU3NGNi
MDM3NDdlMzliYTgzNDE3NDg1NjVjYzEyOWMwNzE5Iik7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1pcC1hZGRyZXNzLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9yZXNvdXJjZXMvcHVibGljLWtleS1jcmVkZW50aWFsLWlwLWFkZHJlc3MuaHR0cHMuaHRt
bAppbmRleCA2ZGUzYTk0MzUwNGJmNGZmOTkyM2Y3ODQ2YWRkODc1NDM0NjhkMGNkLi44MTE4M2Mw
Y2RjY2ZhZmViMGFiNWZmNDNjZDVjNzVjM2JiMWEyYmYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvcHVibGljLWtleS1jcmVkZW50aWFsLWlwLWFk
ZHJlc3MuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNv
dXJjZXMvcHVibGljLWtleS1jcmVkZW50aWFsLWlwLWFkZHJlc3MuaHR0cHMuaHRtbApAQCAtNSw4
ICs1LDggQEAKIDxzY3JpcHQgc3JjPSJ1dGlsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAgICAg
Ly8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYg
dGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgotICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1
cmF0aW9uKHsgfSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFs
cy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgfSk7CiAKICAgICBwcm9t
aXNlX3Rlc3QoZnVuY3Rpb24odCkgewogICAgICAgICBjb25zdCBvcHRpb25zID0gewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>