<?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>225426</bug_id>
          
          <creation_ts>2021-05-05 17:14:40 -0700</creation_ts>
          <short_desc>Add SPI to restrict networking to a set of hosts</short_desc>
          <delta_ts>2021-12-21 15:50:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=234543</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>thorton</cc>
    
    <cc>toyoshim</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1757183</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-05-05 17:14:40 -0700</bug_when>
    <thetext>Add SPI to restrict networking to a set of hosts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757187</commentid>
    <comment_count>1</comment_count>
      <attachid>427826</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-05-05 17:18:43 -0700</bug_when>
    <thetext>Created attachment 427826
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757196</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-05-05 17:42:42 -0700</bug_when>
    <thetext>rdar://77571521</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757199</commentid>
    <comment_count>3</comment_count>
      <attachid>427831</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-05-05 17:44:58 -0700</bug_when>
    <thetext>Created attachment 427831
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757202</commentid>
    <comment_count>4</comment_count>
      <attachid>427833</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-05-05 17:57:46 -0700</bug_when>
    <thetext>Created attachment 427833
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759008</commentid>
    <comment_count>5</comment_count>
      <attachid>427833</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-05-11 11:28:15 -0700</bug_when>
    <thetext>Comment on attachment 427833
Patch

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

&gt; Source/WebCore/page/Page.cpp:3307
&gt; +    if (!url.protocolIsInHTTPFamily() &amp;&amp; !url.protocolIs(&quot;ws&quot;) &amp;&amp; !url.protocolIs(&quot;wss&quot;))
&gt; +        return true;

Do we not have a helper somewhere else that is like &quot;the host in this is a host in the HTTP sense&quot;? It seems weird for Page to know this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759029</commentid>
    <comment_count>6</comment_count>
      <attachid>427833</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-05-11 12:31:11 -0700</bug_when>
    <thetext>Comment on attachment 427833
Patch

We don&apos;t.  This needs to be more than HTTP.  This needs to be schemes that access the network, which includes http, https, ws, and wss.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759037</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-11 12:47:59 -0700</bug_when>
    <thetext>Committed r277336 (237595@main): &lt;https://commits.webkit.org/237595@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 427833.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759038</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-11 12:48:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/77857370&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427826</attachid>
            <date>2021-05-05 17:18:43 -0700</date>
            <delta_ts>2021-05-05 17:49:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225426-20210505171842.patch</filename>
            <type>text/plain</type>
            <size>31841</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDBhYzc1YzU1OTFjMWQz
MzU3NTZkNjMyZmFhMWM3MzAxZDQxNmY4Ny4uMzQ0M2JjNWIxYjY4ZDNjZTlhM2ZmMWQ0ZjcxM2I3
NGY0ZmQ5ZGMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTA1LTA1ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQ
SSB0byByZXN0cmljdCBuZXR3b3JraW5nIHRvIGEgc2V0IG9mIGhvc3RzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU0MjYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiByMjU5MzkyIEkgYWRkZWQgU1BJ
IHRvIHR1cm4gbmV0d29yayBhY2Nlc3Mgb24gYW5kIG9mZiwgYnV0IGEgY2xpZW50IG5lZWRzIGZp
bmVyIGdyYWluZWQgY29udHJvbC4KKyAgICAgICAgVGhpcyB1c2VzIHRoZSBzYW1lIGluZnJhc3Ry
dWN0dXJlIHRvIGFkZCBhIHNldCBvZiBob3N0cyB0byBhbGxvdy4gIFNldHRpbmcgaXQgdG8gbmls
ICh0aGUgZGVmYXVsdCkgYWxsb3dzIGFsbCBob3N0cywKKyAgICAgICAgYnV0IHNldHRpbmcgaXQg
dG8gYW4gZW1wdHkgc2V0IGFsbG93cyBubyBuZXR3b3JrIGFjY2Vzcy4gIFRoaXMgYWNjb21wbGlz
aGVzIHRoZSBzYW1lIGFiaWxpdHkgYXMgdGhlIG9sZCBTUEksIHNvIEknbSBkZXByZWNhdGluZyBp
dAorICAgICAgICB3aXRoIHRoaXMgYXMgYSByZXBsYWNlbWVudC4gIFRoZSBuZXcgYWJpbGl0eSB0
byBzcGVjaWZ5IGEgZmluaXRlIG51bWJlciBvZiBob3N0cyB0byBhbGxvdyBjcmVhdGVzIGEgbGlt
aXRlZCBXS1dlYlZpZXcuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OnZhbGlkYXRlVVJMKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2Fk
Tm90aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRp
c3BhdGNoV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZTo6YWxsb3dzTG9hZEZyb21VUkwgY29uc3QpOgorICAgICAgICAqIHBh
Z2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6bG9hZHNGcm9tTmV0d29yayBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oOgorCiAyMDIx
LTA1LTA1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBTYW1w
bGVkIFBhZ2UgVG9wIENvbG9yOiB0YWtlIGFkZGl0aW9uYWwgc25hcHNob3RzIGZ1cnRoZXIgZG93
biB0aGUgcGFnZSB0byBzZWUgaWYgdGhlIHNhbXBsZWQgdG9wIGNvbG9yIGlzIG1vcmUgdGhhbiBq
dXN0IGEgdGlueSBzdHJpcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxNjIwNzk3ZjEzYjAzY2VjODYyNGNiZGUzZjQ4
ZWU2YTZlOWVhNzMzLi4xNDlkN2U3Zjg3ZjMyMjg4MTFiNGYwNTI4ZWY3ODA2YTVkZGIyOTE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIxLTA1LTA1ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0byByZXN0cmljdCBu
ZXR3b3JraW5nIHRvIGEgc2V0IG9mIGhvc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU0MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJ
OjpQYWdlQ29uZmlndXJhdGlvbjo6Y29weSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElQYWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlv
bjo6YWxsb3dlZE5ldHdvcmtIb3N0cyBjb25zdCk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1
cmF0aW9uOjpzZXRBbGxvd2VkTmV0d29ya0hvc3RzKToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZp
Z3VyYXRpb246OmxvYWRzRnJvbU5ldHdvcmsgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoQVBJ
OjpQYWdlQ29uZmlndXJhdGlvbjo6c2V0TG9hZHNGcm9tTmV0d29yayk6IERlbGV0ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAg
ICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9zZXRMb2Fkc0Zyb21OZXR3b3JrOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9sb2Fkc0Zyb21OZXR3b3JrXSk6Cisg
ICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3NldEFsbG93ZWROZXR3b3JrSG9zdHM6
XSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX2FsbG93ZWROZXR3b3JrSG9z
dHNdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b25Qcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fbGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6CisKIDIwMjEtMDUtMDUgIERldmluIFJvdXNzbyAgPGRy
b3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFNhbXBsZWQgUGFnZSBUb3AgQ29sb3I6IHRha2Ug
YWRkaXRpb25hbCBzbmFwc2hvdHMgZnVydGhlciBkb3duIHRoZSBwYWdlIHRvIHNlZSBpZiB0aGUg
c2FtcGxlZCB0b3AgY29sb3IgaXMgbW9yZSB0aGFuIGp1c3QgYSB0aW55IHN0cmlwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA0Y2NhMDYyYzA1MDdkN2FmYzBlMDk5ZTQzMDgw
NGU4YjkzMjU1ZWQ5Li4xNjlkOWM5ZGUzMzBhMTY0YTQ3NDdhNzU5MTgxYzg4YWQzOWJhYmNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgT3B0aW9u
YWw8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlZhbGlkYXRlZFVSTD4gVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OnYKIHsKICAgICBWYWxpZGF0ZWRVUkwgdmFsaWRhdGVkVVJMIHsgcmVx
dWVzdGVkVVJMLCB0cnVlIH07CiAgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCkp
IHsKLSAgICAgICAgaWYgKCFwYWdlLT5sb2Fkc0Zyb21OZXR3b3JrKCkpCisgICAgICAgIGlmICgh
cGFnZS0+YWxsb3dzTG9hZEZyb21VUkwocmVxdWVzdGVkVVJMKSkKICAgICAgICAgICAgIHJldHVy
biB7IH07CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICAgICAgaWYgKGF1dG8q
IGRvY3VtZW50TG9hZGVyID0gZG9jdW1lbnQubG9hZGVyKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCmluZGV4IDczZTdhYzg4OTE4YTczZjk0
MDZlNjlkMzU4NTA2MGYzODgxNTdhNjIuLmNjMWJjZWUyNmMzYTQxZjVkODljYzhlYmI0MmY0NDRm
NzAzMzMyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRO
b3RpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlm
aWVyLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRp
c3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnCiAgICAg
ICAgIGlmICghcGFnZS0+bG9hZHNTdWJyZXNvdXJjZXMoKSkgewogICAgICAgICAgICAgaWYgKCFt
X2ZyYW1lLmlzTWFpbkZyYW1lKCkgfHwgKG1faW5pdGlhbFJlcXVlc3RJZGVudGlmaWVyICYmICpt
X2luaXRpYWxSZXF1ZXN0SWRlbnRpZmllciAhPSBpZGVudGlmaWVyKSkKICAgICAgICAgICAgICAg
ICByZXF1ZXN0ID0geyB9OwotICAgICAgICB9IGVsc2UgaWYgKCFwYWdlLT5sb2Fkc0Zyb21OZXR3
b3JrKCkgJiYgcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpCisgICAgICAg
IH0gZWxzZSBpZiAoIXBhZ2UtPmFsbG93c0xvYWRGcm9tVVJMKHJlcXVlc3QudXJsKCkpKQogICAg
ICAgICAgICAgcmVxdWVzdCA9IHsgfTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRl
eCA1MzRhMjZlNDAxMWYzYTgxMTYyMzhlMGMxMmYxZDRhYWQyOTg1MjViLi5jNGU0Yzc3YzVhMTJk
NDU5M2JkZWVkYzJmMzM1ZWVhZTVkYWI5N2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTMwNSw4
ICszMDUsOCBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRp
b24pCiAgICAgLCBtX2RldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIoV1RGTW92ZShwYWdl
Q29uZmlndXJhdGlvbi5kZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyKSkKICNlbmRpZgog
ICAgICwgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5j
b3JzRGlzYWJsaW5nUGF0dGVybnMpKQorICAgICwgbV9hbGxvd2VkTmV0d29ya0hvc3RzKFdURk1v
dmUocGFnZUNvbmZpZ3VyYXRpb24uYWxsb3dlZE5ldHdvcmtIb3N0cykpCiAgICAgLCBtX2xvYWRz
U3VicmVzb3VyY2VzKHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzU3VicmVzb3VyY2VzKQotICAgICwg
bV9sb2Fkc0Zyb21OZXR3b3JrKHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzRnJvbU5ldHdvcmspCiAg
ICAgLCBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKHBhZ2VDb25maWd1cmF0
aW9uLnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQogICAgICwgbV9odHRwc1Vw
Z3JhZGVFbmFibGVkKHBhZ2VDb25maWd1cmF0aW9uLmh0dHBzVXBncmFkZUVuYWJsZWQpCiB7CkBA
IC0zMjk5LDYgKzMyOTksMTUgQEAgdm9pZCBQYWdlOjpmb3JFYWNoTWVkaWFFbGVtZW50KGNvbnN0
IEZ1bmN0aW9uPHZvaWQoSFRNTE1lZGlhRWxlbWVudCYpPiYgZnVuY3RvcikKICNlbmRpZgogfQog
Citib29sIFBhZ2U6OmFsbG93c0xvYWRGcm9tVVJMKGNvbnN0IFVSTCYgdXJsKSBjb25zdAorewor
ICAgIGlmICghbV9hbGxvd2VkTmV0d29ya0hvc3RzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBpZiAoIXVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgIXVybC5wcm90b2NvbElzKCJ3
cyIpICYmICF1cmwucHJvdG9jb2xJcygid3NzIikpCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IHJldHVybiBtX2FsbG93ZWROZXR3b3JrSG9zdHMtPmNvbnRhaW5zKHVybC5ob3N0KCkudG9TdHJp
bmdXaXRob3V0Q29weWluZygpKTsKK30KKwogdm9pZCBQYWdlOjphcHBsaWNhdGlvbldpbGxSZXNp
Z25BY3RpdmUoKQogewogI2lmIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggNmRkMDdl
MWJhOTFmMzE0ZGE2MGUyYWYzYzc0MDljYTUzODJlZGU1MS4uODBjNjIzOWJhZWZkZGRiMTI4Yzgy
MTY1NDA1NDY5ZDZiOWRiZGM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTc5NCw3ICs3OTQsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc1V0aWxpdHlQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pc1V0aWxp
dHlQYWdlOyB9CiAKICAgICBib29sIGxvYWRzU3VicmVzb3VyY2VzKCkgY29uc3QgeyByZXR1cm4g
bV9sb2Fkc1N1YnJlc291cmNlczsgfQotICAgIGJvb2wgbG9hZHNGcm9tTmV0d29yaygpIGNvbnN0
IHsgcmV0dXJuIG1fbG9hZHNGcm9tTmV0d29yazsgfQorICAgIGJvb2wgYWxsb3dzTG9hZEZyb21V
UkwoY29uc3QgVVJMJikgY29uc3Q7CiAgICAgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoKSBjb25zdCB7IHJldHVy
biBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOyB9CiAKICAgICBib29sIGlz
TG93UG93ZXJNb2RlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhyb3R0bGluZ1JlYXNvbnMu
Y29udGFpbnMoVGhyb3R0bGluZ1JlYXNvbjo6TG93UG93ZXJNb2RlKTsgfQpAQCAtMTE0Miw5ICsx
MTQyLDkgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxVc2VyQ29udGVudFVSTFBhdHRlcm4+IG1f
Y29yc0Rpc2FibGluZ1BhdHRlcm5zOwogICAgIFZlY3RvcjxVc2VyU3R5bGVTaGVldD4gbV91c2Vy
U3R5bGVTaGVldHNQZW5kaW5nSW5qZWN0aW9uOworICAgIE9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5n
Pj4gbV9hbGxvd2VkTmV0d29ya0hvc3RzOwogICAgIGJvb2wgbV9pc1Rha2luZ1NuYXBzaG90c0Zv
ckFwcGxpY2F0aW9uU3VzcGVuc2lvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2xvYWRzU3VicmVz
b3VyY2VzIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9sb2Fkc0Zyb21OZXR3b3JrIHsgdHJ1ZSB9Owog
ICAgIGJvb2wgbV9jYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSB7IHRydWUgfTsKICAgICBTaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nIHsgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vIH07CiAg
ICAgTG9hZFNjaGVkdWxpbmdNb2RlIG1fbG9hZFNjaGVkdWxpbmdNb2RlIHsgTG9hZFNjaGVkdWxp
bmdNb2RlOjpEaXJlY3QgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNv
bmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaApp
bmRleCA5MjI3ZmNiYjFmYzRhNTIyZTA1YWJmNGYwNDBmMmRmNjczYTE3OWJlLi5hMTRmMjJkYWZi
YTk3MDYzMDkxZjMxMmM3OWI3ZWQ4MGY3ZmMyOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
Q29uZmlndXJhdGlvbi5oCkBAIC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgogCiAgICAgLy8gRklY
TUU6IFRoZXNlIHNob3VsZCBiZSBhbGwgYmUgU2V0dGluZ3MuCiAgICAgYm9vbCBsb2Fkc1N1YnJl
c291cmNlcyB7IHRydWUgfTsKLSAgICBib29sIGxvYWRzRnJvbU5ldHdvcmsgeyB0cnVlIH07Cisg
ICAgT3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+PiBhbGxvd2VkTmV0d29ya0hvc3RzOwogICAgIGJv
b2wgdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24geyB0cnVlIH07CiAgICAg
U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmcgeyBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6Tm8g
fTsKICAgICBib29sIGh0dHBzVXBncmFkZUVuYWJsZWQgeyB0cnVlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGMyY2E3
YmIzNTcxZTQ0OGI5NDFhNWYwMDk2NGJkYzVmZWJiNTEzNTYuLmFiMjViYzk1MWY1YTg4MDY3NzMx
NDE1NTA4YWM0OGQ5OWJiODY4MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogICAgIGVuY29kZXIgPDwgb3ZlcnJpZGRlbk1lZGlhVHlwZTsKICAgICBlbmNvZGVyIDw8IGNv
cnNEaXNhYmxpbmdQYXR0ZXJuczsKICAgICBlbmNvZGVyIDw8IGxvYWRzU3VicmVzb3VyY2VzOwot
ICAgIGVuY29kZXIgPDwgbG9hZHNGcm9tTmV0d29yazsKKyAgICBlbmNvZGVyIDw8IGFsbG93ZWRO
ZXR3b3JrSG9zdHM7CiAgICAgZW5jb2RlciA8PCB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5v
dGlmaWNhdGlvbjsKICAgICBlbmNvZGVyIDw8IGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNr
RW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IHByb2Nlc3NEaXNwbGF5TmFtZTsKQEAgLTUwOSwxMSAr
NTA5LDExIEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5sb2Fkc1N1YnJlc291cmNlcyA9ICpsb2Fkc1N1YnJlc291
cmNlczsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGxvYWRzRnJvbU5ldHdvcms7Ci0gICAgZGVjb2Rl
ciA+PiBsb2Fkc0Zyb21OZXR3b3JrOwotICAgIGlmICghbG9hZHNGcm9tTmV0d29yaykKKyAgICBP
cHRpb25hbDxPcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+PiBhbGxvd2VkTmV0d29ya0hvc3RzOwor
ICAgIGRlY29kZXIgPj4gYWxsb3dlZE5ldHdvcmtIb3N0czsKKyAgICBpZiAoIWFsbG93ZWROZXR3
b3JrSG9zdHMpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgcGFyYW1ldGVycy5s
b2Fkc0Zyb21OZXR3b3JrID0gKmxvYWRzRnJvbU5ldHdvcms7CisgICAgcGFyYW1ldGVycy5hbGxv
d2VkTmV0d29ya0hvc3RzID0gKmFsbG93ZWROZXR3b3JrSG9zdHM7CiAKICAgICBPcHRpb25hbDxi
b29sPiB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsKICAgICBkZWNvZGVy
ID4+IHVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGVjN2I1ZjM4
NDRjNWViYjMxYjdjMTlmNWI2MmQ4ZmQ2MjAyY2E0OWIuLmZmMTRmNGE1OGU0Y2JkN2U2N2NlMTEx
Mjc4NzNlNmQ1ZWU2Y2VjOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgVmVjdG9yPFN0cmluZz4gY29yc0Rpc2FibGluZ1BhdHRl
cm5zOwogICAgIGJvb2wgdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24geyB0
cnVlIH07CiAgICAgYm9vbCBsb2Fkc1N1YnJlc291cmNlcyB7IHRydWUgfTsKLSAgICBib29sIGxv
YWRzRnJvbU5ldHdvcmsgeyB0cnVlIH07CisgICAgT3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+PiBh
bGxvd2VkTmV0d29ya0hvc3RzOwogCiAgICAgYm9vbCBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xD
aGVja0VuYWJsZWQgeyB0cnVlIH07CiAgICAgU3RyaW5nIHByb2Nlc3NEaXNwbGF5TmFtZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24u
Y3BwCmluZGV4IGEzMzUyZTZlYjljNzhmNDc2ODE5MjBiMWI5YzZiODUxZWRjMjc2ODUuLjdlZjA0
YWU4OTJkNTQ0YTM5NzU5MDFiMmIwOTQwYzEwZTM3ZTEyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcApAQCAtODcsNyAr
ODcsNyBAQCBSZWY8UGFnZUNvbmZpZ3VyYXRpb24+IFBhZ2VDb25maWd1cmF0aW9uOjpjb3B5KCkg
Y29uc3QKIAogICAgIGNvcHktPm1fcHJvY2Vzc0Rpc3BsYXlOYW1lID0gdGhpcy0+bV9wcm9jZXNz
RGlzcGxheU5hbWU7CiAgICAgY29weS0+bV9sb2Fkc1N1YnJlc291cmNlcyA9IHRoaXMtPm1fbG9h
ZHNTdWJyZXNvdXJjZXM7Ci0gICAgY29weS0+bV9sb2Fkc0Zyb21OZXR3b3JrID0gdGhpcy0+bV9s
b2Fkc0Zyb21OZXR3b3JrOworICAgIGNvcHktPm1fYWxsb3dlZE5ldHdvcmtIb3N0cyA9IHRoaXMt
Pm1fYWxsb3dlZE5ldHdvcmtIb3N0czsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAg
ICAgY29weS0+bV9pZ25vcmVzQXBwQm91bmREb21haW5zID0gdGhpcy0+bV9pZ25vcmVzQXBwQm91
bmREb21haW5zOwogICAgIGNvcHktPm1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlu
cyA9IHRoaXMtPm1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWluczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKaW5kZXgg
NTY5MmQ2MjkxNmNjNTNiYzZlZDIzOWQ5NjI1YWZjZjcwNjkyMWY2OC4uNDU5NTc4ZGQzNmVjY2Nh
ZGE4MWQ5YWMwNzhiZTU4MzRmYTRhMWYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKQEAgLTE0Niw4ICsxNDYsOCBAQCBwdWJs
aWM6CiAgICAgYm9vbCBsb2Fkc1N1YnJlc291cmNlcygpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZHNT
dWJyZXNvdXJjZXM7IH0KICAgICB2b2lkIHNldExvYWRzU3VicmVzb3VyY2VzKGJvb2wgbG9hZHMp
IHsgbV9sb2Fkc1N1YnJlc291cmNlcyA9IGxvYWRzOyB9CiAKLSAgICBib29sIGxvYWRzRnJvbU5l
dHdvcmsoKSBjb25zdCB7IHJldHVybiBtX2xvYWRzRnJvbU5ldHdvcms7IH0KLSAgICB2b2lkIHNl
dExvYWRzRnJvbU5ldHdvcmsoYm9vbCBsb2FkcykgeyBtX2xvYWRzRnJvbU5ldHdvcmsgPSBsb2Fk
czsgfQorICAgIGNvbnN0IE9wdGlvbmFsPEhhc2hTZXQ8V1RGOjpTdHJpbmc+PiYgYWxsb3dlZE5l
dHdvcmtIb3N0cygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dlZE5ldHdvcmtIb3N0czsgfQorICAg
IHZvaWQgc2V0QWxsb3dlZE5ldHdvcmtIb3N0cyhPcHRpb25hbDxIYXNoU2V0PFdURjo6U3RyaW5n
Pj4mJiBob3N0cykgeyBtX2FsbG93ZWROZXR3b3JrSG9zdHMgPSBXVEZNb3ZlKGhvc3RzKTsgfQog
CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGJvb2wgaWdub3Jlc0FwcEJvdW5k
RG9tYWlucygpIGNvbnN0IHsgcmV0dXJuIG1faWdub3Jlc0FwcEJvdW5kRG9tYWluczsgfQpAQCAt
MjA1LDcgKzIwNSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Nyb3NzT3JpZ2luQWNjZXNzQ29u
dHJvbENoZWNrRW5hYmxlZCB7IHRydWUgfTsKICAgICBXVEY6OlN0cmluZyBtX3Byb2Nlc3NEaXNw
bGF5TmFtZTsKICAgICBib29sIG1fbG9hZHNTdWJyZXNvdXJjZXMgeyB0cnVlIH07Ci0gICAgYm9v
bCBtX2xvYWRzRnJvbU5ldHdvcmsgeyB0cnVlIH07CisgICAgT3B0aW9uYWw8SGFzaFNldDxXVEY6
OlN0cmluZz4+IG1fYWxsb3dlZE5ldHdvcmtIb3N0czsKICAgICAKICNpZiBFTkFCTEUoQVBQX0JP
VU5EX0RPTUFJTlMpCiAgICAgYm9vbCBtX2lnbm9yZXNBcHBCb3VuZERvbWFpbnMgeyBmYWxzZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbi5tbQppbmRleCA0MDYyOGRhZjQxMTE5ZjE3NGI5ZDM4OTMxNjAz
MGMyMWMxNjA2OTNmLi5jZTViN2JkNWIwMWFiYzgyMTA5NWQwNTU5NWFhZTk2OWI2OGNmNWZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpAQCAtOTUyLDEyICs5NTIsMzMgQEAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIC0gKHZvaWQpX3NldExvYWRzRnJvbU5ldHdvcms6KEJP
T0wpbG9hZHMKIHsKLSAgICBfcGFnZUNvbmZpZ3VyYXRpb24tPnNldExvYWRzRnJvbU5ldHdvcmso
bG9hZHMpOworICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0QWxsb3dlZE5ldHdvcmtIb3N0cyhs
b2FkcyA/IFdURjo6bnVsbG9wdCA6IE9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nPj4geyBIYXNoU2V0
PFN0cmluZz4geyB9IH0pOwogfQogCiAtIChCT09MKV9sb2Fkc0Zyb21OZXR3b3JrCiB7Ci0gICAg
cmV0dXJuIF9wYWdlQ29uZmlndXJhdGlvbi0+bG9hZHNGcm9tTmV0d29yaygpOworICAgIHJldHVy
biBfcGFnZUNvbmZpZ3VyYXRpb24tPmFsbG93ZWROZXR3b3JrSG9zdHMoKSA9PSBXVEY6Om51bGxv
cHQ7Cit9CisKKy0gKHZvaWQpX3NldEFsbG93ZWROZXR3b3JrSG9zdHM6KE5TU2V0PE5TU3RyaW5n
ICo+ICopaG9zdHMKK3sKKyAgICBpZiAoIWhvc3RzKQorICAgICAgICByZXR1cm4gX3BhZ2VDb25m
aWd1cmF0aW9uLT5zZXRBbGxvd2VkTmV0d29ya0hvc3RzKFdURjo6bnVsbG9wdCk7CisgICAgSGFz
aFNldDxTdHJpbmc+IHNldDsKKyAgICBmb3IgKE5TU3RyaW5nICpob3N0IGluIGhvc3RzKQorICAg
ICAgICBzZXQuYWRkKGhvc3QpOworICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0QWxsb3dlZE5l
dHdvcmtIb3N0cyhXVEZNb3ZlKHNldCkpOworfQorCistIChOU1NldDxOU1N0cmluZyAqPiAqKV9h
bGxvd2VkTmV0d29ya0hvc3RzCit7CisgICAgY29uc3QgYXV0byYgaG9zdHMgPSBfcGFnZUNvbmZp
Z3VyYXRpb24tPmFsbG93ZWROZXR3b3JrSG9zdHMoKTsKKyAgICBpZiAoIWhvc3RzKQorICAgICAg
ICByZXR1cm4gbmlsOworICAgIE5TTXV0YWJsZVNldDxOU1N0cmluZyAqPiAqc2V0ID0gW05TTXV0
YWJsZVNldCBzZXRXaXRoQ2FwYWNpdHk6aG9zdHMtPnNpemUoKV07CisgICAgZm9yIChjb25zdCBh
dXRvJiBob3N0IDogKmhvc3RzKQorICAgICAgICBbc2V0IGFkZE9iamVjdDpob3N0XTsKKyAgICBy
ZXR1cm4gc2V0OwogfQogCiAtICh2b2lkKV9zZXRMb2Fkc1N1YnJlc291cmNlczooQk9PTClsb2Fk
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d0NvbmZpZ3VyYXRpb25Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAppbmRleCA5MDljOTk3NWUwNzMyNTMz
ZTkwZDgxYmE0M2U0NjlhNzlhYzdiN2MyLi4yNDI1ZWM2ZmZjYWMwYmM1NmQ2NGI4ZDM3OTUyOTQz
MWY1OWEwMzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaApAQCAtNzksNyAr
NzksOCBAQCB0eXBlZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwgX1dLRHJhZ0xpZnREZWxheSkgewog
QHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0RGVmZXJyYWJsZVVzZXJTY3JpcHRzU2hv
dWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOikgQk9PTCBfZGVmZXJyYWJsZVVzZXJTY3JpcHRzU2hv
dWxkV2FpdFVudGlsTm90aWZpY2F0aW9uIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCksIGlv
cygxNC4wKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRDcm9zc09yaWdpbkFj
Y2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ6KSBCT09MIF9jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xD
aGVja0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4wKSwgaW9zKDE0LjApKTsKIAot
QHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0TG9hZHNGcm9tTmV0d29yazopIEJPT0wg
X2xvYWRzRnJvbU5ldHdvcmsgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4wKSwgaW9zKDE0LjAp
KTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldExvYWRzRnJvbU5ldHdvcms6KSBC
T09MIF9sb2Fkc0Zyb21OZXR3b3JrIFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQo
Il9hbGxvd2VkTmV0d29ya0hvc3RzIiwgbWFjb3MoMTEuMCwgV0tfTUFDX1RCQSksIGlvcygxNC4w
LCBXS19JT1NfVEJBKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgc2V0dGVyPV9zZXRB
bGxvd2VkTmV0d29ya0hvc3RzOikgTlNTZXQ8TlNTdHJpbmcgKj4gKl9hbGxvd2VkTmV0d29ya0hv
c3RzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRMb2Fkc1N1YnJlc291cmNlczopIEJP
T0wgX2xvYWRzU3VicmVzb3VyY2VzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCksIGlvcygx
NC4wKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRJZ25vcmVzQXBwQm91bmRE
b21haW5zOikgQk9PTCBfaWdub3Jlc0FwcEJvdW5kRG9tYWlucyBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDExLjApLCBpb3MoMTQuMCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAppbmRleCBlODJkYzE4NmZkNmU5MzNkMjQ5MDE3YTYwZWYyZmI4MTVhYmNjNmEyLi5j
NTk4ODNhZTFlNTViYjJiOWExMmNlYWRmNzk0ZTU0NGIxYWYzNGVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTgwMDQsNyArODAwNCw3IEBAIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJv
Y2Vzc1Byb3h5JiBwcm9jCiAgICAgcGFyYW1ldGVycy5vdmVycmlkZGVuTWVkaWFUeXBlID0gbV9v
dmVycmlkZGVuTWVkaWFUeXBlOwogICAgIHBhcmFtZXRlcnMuY29yc0Rpc2FibGluZ1BhdHRlcm5z
ID0gY29yc0Rpc2FibGluZ1BhdHRlcm5zKCk7CiAgICAgcGFyYW1ldGVycy51c2VyU2NyaXB0c1No
b3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiA9IG1fY29uZmlndXJhdGlvbi0+dXNlclNjcmlwdHNT
aG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24oKTsKLSAgICBwYXJhbWV0ZXJzLmxvYWRzRnJvbU5l
dHdvcmsgPSBtX2NvbmZpZ3VyYXRpb24tPmxvYWRzRnJvbU5ldHdvcmsoKTsKKyAgICBwYXJhbWV0
ZXJzLmFsbG93ZWROZXR3b3JrSG9zdHMgPSBtX2NvbmZpZ3VyYXRpb24tPmFsbG93ZWROZXR3b3Jr
SG9zdHMoKTsKICAgICBwYXJhbWV0ZXJzLmxvYWRzU3VicmVzb3VyY2VzID0gbV9jb25maWd1cmF0
aW9uLT5sb2Fkc1N1YnJlc291cmNlcygpOwogICAgIHBhcmFtZXRlcnMuY3Jvc3NPcmlnaW5BY2Nl
c3NDb250cm9sQ2hlY2tFbmFibGVkID0gbV9jb25maWd1cmF0aW9uLT5jcm9zc09yaWdpbkFjY2Vz
c0NvbnRyb2xDaGVja0VuYWJsZWQoKTsKICAgICBwYXJhbWV0ZXJzLmhhc1Jlc291cmNlTG9hZENs
aWVudCA9ICEhbV9yZXNvdXJjZUxvYWRDbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDZlNDE2ZjQzMTYxNDc5ZGU5NTU2MDUyZDUxODY0
MjBiNDkxYzE0YjkuLmQ0NDZiY2Q0ZGU5MGY4Nzc3MGJjYjM1YmRmNjcyOGQyYjMxZDFiNjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02MDQs
NyArNjA0LDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogCiAgICAgcGFnZUNvbmZpZ3VyYXRp
b24udXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24gPSBwYXJhbWV0ZXJzLnVz
ZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOwogICAgIHBhZ2VDb25maWd1cmF0
aW9uLmxvYWRzU3VicmVzb3VyY2VzID0gcGFyYW1ldGVycy5sb2Fkc1N1YnJlc291cmNlczsKLSAg
ICBwYWdlQ29uZmlndXJhdGlvbi5sb2Fkc0Zyb21OZXR3b3JrID0gcGFyYW1ldGVycy5sb2Fkc0Zy
b21OZXR3b3JrOworICAgIHBhZ2VDb25maWd1cmF0aW9uLmFsbG93ZWROZXR3b3JrSG9zdHMgPSBw
YXJhbWV0ZXJzLmFsbG93ZWROZXR3b3JrSG9zdHM7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uc2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgPSBwYXJhbWV0ZXJzLnNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmh0dHBzVXBn
cmFkZUVuYWJsZWQgPSBwYXJhbWV0ZXJzLmh0dHBzVXBncmFkZUVuYWJsZWQ7CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1YjA2YzJlNWI2MjZi
MTMxMGI5NDdkZGY0Y2YxN2M3NDk1NjNjODNjLi5iOTI0YTYwYWNlNWYzNjYyMmJjYjFjZmQzZGM4
OTgzYmMxODMwNGY0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDUtMDUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIHRvIHJlc3RyaWN0IG5l
dHdvcmtpbmcgdG8gYSBzZXQgb2YgaG9zdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNTQyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250
ZW50UnVsZUxpc3ROb3RpZmljYXRpb24ubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKHdl
YlNvY2tldEFjY2VwdFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Q29u
bmVjdGlvbjo6d2ViU29ja2V0SGFuZHNoYWtlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2Nv
Y29hL0hUVFBTZXJ2ZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uOjp3
ZWJTb2NrZXRIYW5kc2hha2UpOgorCiAyMDIxLTA1LTA1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3Nv
QGFwcGxlLmNvbT4KIAogICAgICAgICBTYW1wbGVkIFBhZ2UgVG9wIENvbG9yOiB0YWtlIGFkZGl0
aW9uYWwgc25hcHNob3RzIGZ1cnRoZXIgZG93biB0aGUgcGFnZSB0byBzZWUgaWYgdGhlIHNhbXBs
ZWQgdG9wIGNvbG9yIGlzIG1vcmUgdGhhbiBqdXN0IGEgdGlueSBzdHJpcApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50UnVsZUxpc3ROb3Rp
ZmljYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRl
bnRSdWxlTGlzdE5vdGlmaWNhdGlvbi5tbQppbmRleCA3NmY4NThiMGU0MDMwYjczNmY4ZDBmZjQ0
Yzg2MDdkZDZhY2E0NjE2Li44NjI3MmY5N2M5ZGE0ZTAzZmNlN2QyNGZmNjM3MWU1Y2M2ZjliZGMz
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRl
bnRSdWxlTGlzdE5vdGlmaWNhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0NvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbi5tbQpAQCAtNDIsMTAgKzQy
LDggQEAKICNpbXBvcnQgPFdlYktpdC9fV0tDb250ZW50UnVsZUxpc3RBY3Rpb24uaD4KICNpbXBv
cnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgotI2ltcG9ydCA8d3RmL1NIQTEuaD4KICNpbXBvcnQgPHd0Zi9VUkwu
aD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgotI2ltcG9ydCA8d3RmL3RleHQv
QmFzZTY0Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogc3RhdGljIGJvb2wg
cmVjZWl2ZWROb3RpZmljYXRpb247CkBAIC0xODEsMzQgKzE3OSwxMSBAQCBURVNUKENvbnRlbnRS
dWxlTGlzdCwgUGVyZm9ybWVkQWN0aW9uRm9yVVJMKQogICAgIEVYUEVDVF9UUlVFKGV4cGVjdGVk
Tm90aWZpY2F0aW9ucyA9PSBub3RpZmljYXRpb25MaXN0KTsKIH0KIAotc3RhdGljIFN0cmluZyB3
ZWJTb2NrZXRBY2NlcHRWYWx1ZShjb25zdCBWZWN0b3I8Y2hhcj4mIHJlcXVlc3QpCi17Ci0gICAg
Y29uc3RleHByIGF1dG8qIGtleUhlYWRlckZpZWxkID0gIlNlYy1XZWJTb2NrZXQtS2V5OiAiOwot
ICAgIGNvbnN0IGNoYXIqIGtleUJlZ2luID0gc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwga2V5SGVh
ZGVyRmllbGQsIHJlcXVlc3Quc2l6ZSgpKSArIHN0cmxlbihrZXlIZWFkZXJGaWVsZCk7Ci0gICAg
RVhQRUNUX05PVF9OVUxMKGtleUJlZ2luKTsKLSAgICBjb25zdCBjaGFyKiBrZXlFbmQgPSBzdHJu
c3RyKGtleUJlZ2luLCAiXHJcbiIsIHJlcXVlc3Quc2l6ZSgpICsgKGtleUJlZ2luIC0gcmVxdWVz
dC5kYXRhKCkpKTsKLSAgICBFWFBFQ1RfTk9UX05VTEwoa2V5RW5kKTsKLQotICAgIGNvbnN0ZXhw
ciBhdXRvKiB3ZWJTb2NrZXRLZXlHVUlEID0gIjI1OEVBRkE1LUU5MTQtNDdEQS05NUNBLUM1QUIw
REM4NUIxMSI7Ci0gICAgU0hBMSBzaGExOwotICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oa2V5QmVnaW4pLCBrZXlFbmQgLSBrZXlCZWdpbik7Ci0gICAg
c2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih3ZWJTb2NrZXRL
ZXlHVUlEKSwgc3RybGVuKHdlYlNvY2tldEtleUdVSUQpKTsKLSAgICBTSEExOjpEaWdlc3QgaGFz
aDsKLSAgICBzaGExLmNvbXB1dGVIYXNoKGhhc2gpOwotICAgIHJldHVybiBiYXNlNjRFbmNvZGUo
aGFzaC5kYXRhKCksIFNIQTE6Omhhc2hTaXplKTsKLX0KLQogVEVTVChDb250ZW50UnVsZUxpc3Qs
IFJlc291cmNlVHlwZXMpCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAg
ICAgSFRUUFNlcnZlciB3ZWJTb2NrZXRTZXJ2ZXIoW10oQ29ubmVjdGlvbiBjb25uZWN0aW9uKSB7
Ci0gICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4m
JiByZXF1ZXN0KSB7Ci0gICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQoSFRUUFJlc3BvbnNlKDEw
MSwgewotICAgICAgICAgICAgICAgIHsgIlVwZ3JhZGUiLCAid2Vic29ja2V0IiB9LAotICAgICAg
ICAgICAgICAgIHsgIkNvbm5lY3Rpb24iLCAiVXBncmFkZSIgfSwKLSAgICAgICAgICAgICAgICB7
ICJTZWMtV2ViU29ja2V0LUFjY2VwdCIsIHdlYlNvY2tldEFjY2VwdFZhbHVlKHJlcXVlc3QpIH0K
LSAgICAgICAgICAgIH0pLnNlcmlhbGl6ZShIVFRQUmVzcG9uc2U6OkluY2x1ZGVDb250ZW50TGVu
Z3RoOjpObykpOwotICAgICAgICB9KTsKKyAgICAgICAgY29ubmVjdGlvbi53ZWJTb2NrZXRIYW5k
c2hha2UoKTsKICAgICB9KTsKICAgICBhdXRvIHNlcnZlclBvcnQgPSB3ZWJTb2NrZXRTZXJ2ZXIu
cG9ydCgpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQppbmRleCA3YWE0YzlkOTc1OGQ2OGQz
ODZmM2EwOTI0Y2UwMjZiMzg2ZGUyYWM5Li4zNTExMWNkODU1MTg4NmQxYzE2YTNkM2ZhYTQ5NWJi
ODBhMzgzMmNiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0KQEAgLTQ4LDYgKzQ4LDcgQEAK
ICNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBv
cnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5h
dGVOdW1iZXJzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW1wb3J0IDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMTEwMCwxMiArMTEwMSwxNyBAQCBURVNUKFVSTFNj
aGVtZUhhbmRsZXIsIERpc2FibGVDT1JTQ2FudmFzKQogCiBURVNUKFVSTFNjaGVtZUhhbmRsZXIs
IExvYWRzRnJvbU5ldHdvcmspCiB7Ci0gICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2
ZXIoeworICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOworICAgIEhUVFBTZXJ2ZXIg
c2VydmVyKHsKICAgICAgICAgeyAiLyIsIHsge3sgIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdp
biIsICIqIiB9fSwgInRlc3QgY29udGVudCIgfSB9CiAgICAgfSk7CiAKLSAgICBib29sIGxvYWRT
dWNjZXNzID0gZmFsc2U7Ci0gICAgYm9vbCBsb2FkRmFpbCA9IGZhbHNlOworICAgIEhUVFBTZXJ2
ZXIgd2ViU29ja2V0U2VydmVyKFtdKENvbm5lY3Rpb24gY29ubmVjdGlvbikgeworICAgICAgICBj
b25uZWN0aW9uLndlYlNvY2tldEhhbmRzaGFrZSgpOworICAgIH0pOworCisgICAgT3B0aW9uYWw8
Ym9vbD4gbG9hZFN1Y2Nlc3M7CisgICAgT3B0aW9uYWw8Ym9vbD4gd2ViU29ja2V0U3VjY2VzczsK
ICAgICBib29sIGRvbmUgPSBmYWxzZTsKIAogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1Rl
c3RVUkxTY2hlbWVIYW5kbGVyIG5ld10pOwpAQCAtMTExNCw1MCArMTEyMCwxNDEgQEAgVEVTVChV
UkxTY2hlbWVIYW5kbGVyLCBMb2Fkc0Zyb21OZXR3b3JrKQogICAgIFtjb25maWd1cmF0aW9uIHNl
dFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJ0ZXN0Il07CiAK
ICAgICBbaGFuZGxlciBzZXRTdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyOlsmXShXS1dlYlZpZXcg
KiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7Ci0gICAgICAgIGlmIChbdGFzay5yZXF1ZXN0
LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9tYWluLmh0bWwiXSkgewotICAgICAgICAgICAg
TlNEYXRhICpkYXRhID0gW1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPHNjcmlwdD4iCi0g
ICAgICAgICAgICAgICAgImZldGNoKCdodHRwOi8vMTI3LjAuMC4xOiVkLycpLnRoZW4oKCk9Pnsi
Ci0gICAgICAgICAgICAgICAgICAgICJmZXRjaCgnL2xvYWRTdWNjZXNzJykiCi0gICAgICAgICAg
ICAgICAgIn0pLmNhdGNoKCgpPT57IgorICAgICAgICBOU1N0cmluZyAqcGF0aCA9IHRhc2sucmVx
dWVzdC5VUkwucGF0aDsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJsb2FkaW5nICVAIiwgcGF0aCk7
CisgICAgICAgIGlmIChbcGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvbWFpbi5odG1sIl0pIHsKKyAg
ICAgICAgICAgIHJlc3BvbmQodGFzaywgW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8c2Ny
aXB0PiIKKyAgICAgICAgICAgICAgICAiZnVuY3Rpb24gY2hlY2tXZWJTb2NrZXRzKCkgeyIKICAg
ICAgICAgICAgICAgICAgICAgInZhciB3cyA9IG5ldyBXZWJTb2NrZXQoJ3dzOi8vMTI3LjAuMC4x
OiVkJyk7IgotICAgICAgICAgICAgICAgICAgICAid3Mub25lcnJvciA9IGZ1bmN0aW9uKCkgeyBm
ZXRjaCgnL2xvYWRGYWlsJykgfTsiCisgICAgICAgICAgICAgICAgICAgICJ3cy5vbmVycm9yID0g
ZnVuY3Rpb24oKSB7IGZldGNoKCcvd2ViU29ja2V0RmFpbCcpIH07IgorICAgICAgICAgICAgICAg
ICAgICAid3Mub25vcGVuID0gZnVuY3Rpb24oKSB7IGZldGNoKCcvd2ViU29ja2V0U3VjY2Vzcycp
IH07IgorICAgICAgICAgICAgICAgICJ9IgorICAgICAgICAgICAgICAgICJmZXRjaCgnaHR0cDov
L2xvY2FsaG9zdDolZC8nKS50aGVuKCgpPT57IgorICAgICAgICAgICAgICAgICAgICAiZmV0Y2go
Jy9sb2FkU3VjY2VzcycpLnRoZW4oKCk9PnsgY2hlY2tXZWJTb2NrZXRzKCkgfSkiCisgICAgICAg
ICAgICAgICAgIn0pLmNhdGNoKCgpPT57IgorICAgICAgICAgICAgICAgICAgICAiZmV0Y2goJy9s
b2FkRmFpbCcpLnRoZW4oKCk9PnsgY2hlY2tXZWJTb2NrZXRzKCkgfSkiCiAgICAgICAgICAgICAg
ICAgIn0pIgotICAgICAgICAgICAgICAgICI8L3NjcmlwdD4iLCBzZXJ2ZXIucG9ydCgpLCBzZXJ2
ZXIucG9ydCgpXSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAg
ICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhbW05TVVJMUmVzcG9uc2Ug
YWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwi
IGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0p
LmdldCgpXTsKLSAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOmRhdGFdOwotICAgICAg
ICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKLSAgICAgICAgfSBlbHNlIGlmIChbdGFzay5yZXF1ZXN0
LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9sb2FkU3VjY2VzcyJdKSB7CisgICAgICAgICAg
ICAgICAgIjwvc2NyaXB0PiIsIHdlYlNvY2tldFNlcnZlci5wb3J0KCksIHNlcnZlci5wb3J0KCld
LlVURjhTdHJpbmcpOworICAgICAgICB9IGVsc2UgaWYgKFtwYXRoIGlzRXF1YWxUb1N0cmluZzpA
Ii9sb2FkU3VjY2VzcyJdKSB7CisgICAgICAgICAgICByZXNwb25kKHRhc2ssICJoaSIpOwogICAg
ICAgICAgICAgbG9hZFN1Y2Nlc3MgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKFtwYXRoIGlz
RXF1YWxUb1N0cmluZzpAIi9sb2FkRmFpbCJdKSB7CisgICAgICAgICAgICByZXNwb25kKHRhc2ss
ICJoaSIpOworICAgICAgICAgICAgbG9hZFN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgfSBlbHNl
IGlmIChbcGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvd2ViU29ja2V0U3VjY2VzcyJdKSB7CisgICAg
ICAgICAgICB3ZWJTb2NrZXRTdWNjZXNzID0gdHJ1ZTsKICAgICAgICAgICAgIGRvbmUgPSB0cnVl
OwotICAgICAgICB9IGVsc2UgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3Ry
aW5nOkAiL2xvYWRGYWlsIl0pIHsKLSAgICAgICAgICAgIGxvYWRGYWlsID0gdHJ1ZTsKKyAgICAg
ICAgfSBlbHNlIGlmIChbcGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvd2ViU29ja2V0RmFpbCJdKSB7
CisgICAgICAgICAgICB3ZWJTb2NrZXRTdWNjZXNzID0gZmFsc2U7CiAgICAgICAgICAgICBkb25l
ID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICB9XTsKICAgICAKLSAgICB7CisgICAgYXV0byBydW5UZXN0ID0gWyZdIHsKKyAgICAg
ICAgbG9hZFN1Y2Nlc3MgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIHdlYlNvY2tldFN1Y2Nlc3Mg
PSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGRvbmUgPSBmYWxzZTsKICAgICAgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtl
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAg
ICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpAInRlc3Q6Ly9ob3N0MS9tYWluLmh0bWwiXV1dOwogICAgICAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwotICAgIH0KLSAgICBFWFBFQ1RfVFJV
RShsb2FkU3VjY2Vzcyk7Ci0gICAgRVhQRUNUX0ZBTFNFKGxvYWRGYWlsKTsKKyAgICB9OworCisg
ICAgcnVuVGVzdCgpOworICAgIEVYUEVDVF9UUlVFKCpsb2FkU3VjY2Vzcyk7CisgICAgRVhQRUNU
X1RSVUUoKndlYlNvY2tldFN1Y2Nlc3MpOwogICAgIEVYUEVDVF9FUShzZXJ2ZXIudG90YWxSZXF1
ZXN0cygpLCAxdSk7Ci0gICAgCi0gICAgbG9hZFN1Y2Nlc3MgPSBmYWxzZTsKLSAgICBsb2FkRmFp
bCA9IGZhbHNlOwotICAgIGRvbmUgPSBmYWxzZTsKIAogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCku
X2xvYWRzRnJvbU5ldHdvcmsgPSBOTzsKLSAgICB7CisgICAgcnVuVGVzdCgpOworICAgIEVYUEVD
VF9GQUxTRSgqbG9hZFN1Y2Nlc3MpOworICAgIEVYUEVDVF9GQUxTRSgqd2ViU29ja2V0U3VjY2Vz
cyk7CisgICAgRVhQRUNUX0VRKHNlcnZlci50b3RhbFJlcXVlc3RzKCksIDF1KTsKKyAgICAKKyAg
ICBjb25maWd1cmF0aW9uLmdldCgpLl9hbGxvd2VkTmV0d29ya0hvc3RzID0gW05TU2V0IHNldF07
CisgICAgcnVuVGVzdCgpOworICAgIEVYUEVDVF9GQUxTRSgqbG9hZFN1Y2Nlc3MpOworICAgIEVY
UEVDVF9GQUxTRSgqd2ViU29ja2V0U3VjY2Vzcyk7CisgICAgRVhQRUNUX0VRKHNlcnZlci50b3Rh
bFJlcXVlc3RzKCksIDF1KTsKKworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuX2FsbG93ZWROZXR3
b3JrSG9zdHMgPSBuaWw7CisgICAgcnVuVGVzdCgpOworICAgIEVYUEVDVF9UUlVFKCpsb2FkU3Vj
Y2Vzcyk7CisgICAgRVhQRUNUX1RSVUUoKndlYlNvY2tldFN1Y2Nlc3MpOworICAgIEVYUEVDVF9F
UShzZXJ2ZXIudG90YWxSZXF1ZXN0cygpLCAydSk7CisKKyAgICBjb25maWd1cmF0aW9uLmdldCgp
Ll9hbGxvd2VkTmV0d29ya0hvc3RzID0gW05TU2V0IHNldFdpdGhPYmplY3Q6QCJsb2NhbGhvc3Qi
XTsKKyAgICBydW5UZXN0KCk7CisgICAgRVhQRUNUX1RSVUUoKmxvYWRTdWNjZXNzKTsKKyAgICBF
WFBFQ1RfRkFMU0UoKndlYlNvY2tldFN1Y2Nlc3MpOworICAgIEVYUEVDVF9FUShzZXJ2ZXIudG90
YWxSZXF1ZXN0cygpLCAzdSk7Cit9CisKK1RFU1QoVVJMU2NoZW1lSGFuZGxlciwgQWxsb3dlZE5l
dHdvcmtIb3N0c1JlZGlyZWN0KQoreworICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2Vy
dmVyTG9jYWxob3N0KHsKKyAgICAgICAgeyAiL3JlZGlyZWN0VGFyZ2V0IiwgeyB7eyAiQWNjZXNz
LUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgIioiIH19LCAidGVzdCBjb250ZW50IiB9IH0KKyAgICB9
KTsKKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEyNzAwMSh7CisgICAgICAg
IHsgIi8iLCB7IDMwMSwgeworICAgICAgICAgICAgeyAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3Jp
Z2luIiwgIioiIH0sCisgICAgICAgICAgICB7ICJMb2NhdGlvbiIsIG1ha2VTdHJpbmcoImh0dHA6
Ly9sb2NhbGhvc3Q6Iiwgc2VydmVyTG9jYWxob3N0LnBvcnQoKSwgIi9yZWRpcmVjdFRhcmdldCIp
IH0KKyAgICAgICAgfX19LAorICAgIH0pOworCisgICAgT3B0aW9uYWw8Ym9vbD4gbG9hZFN1Y2Nl
c3M7CisgICAgYm9vbCBkb25lID0gZmFsc2U7CisKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5T
KFtUZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddKTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2Nv
bmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVt
ZTpAInRlc3QiXTsKKworICAgIFtoYW5kbGVyIHNldFN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXI6
WyZdKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKKyAgICAgICAgTlNT
dHJpbmcgKnBhdGggPSB0YXNrLnJlcXVlc3QuVVJMLnBhdGg7CisgICAgICAgIFdURkxvZ0Fsd2F5
cygibG9hZGluZyAlQCIsIHBhdGgpOworICAgICAgICBpZiAoW3BhdGggaXNFcXVhbFRvU3RyaW5n
OkAiL21haW4uaHRtbCJdKSB7CisgICAgICAgICAgICByZXNwb25kKHRhc2ssIFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiPHNjcmlwdD4iCisgICAgICAgICAgICAgICAgImZldGNoKCdodHRw
Oi8vMTI3LjAuMC4xOiVkLycpLnRoZW4oKCk9PnsiCisgICAgICAgICAgICAgICAgICAgICJmZXRj
aCgnL2xvYWRTdWNjZXNzJykiCisgICAgICAgICAgICAgICAgIn0pLmNhdGNoKCgpPT57IgorICAg
ICAgICAgICAgICAgICAgICAiZmV0Y2goJy9sb2FkRmFpbCcpIgorICAgICAgICAgICAgICAgICJ9
KSIKKyAgICAgICAgICAgICAgICAiPC9zY3JpcHQ+Iiwgc2VydmVyMTI3MDAxLnBvcnQoKV0uVVRG
OFN0cmluZyk7CisgICAgICAgIH0gZWxzZSBpZiAoW3BhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2xv
YWRTdWNjZXNzIl0pIHsKKyAgICAgICAgICAgIGxvYWRTdWNjZXNzID0gdHJ1ZTsKKyAgICAgICAg
ICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKFtwYXRoIGlzRXF1YWxUb1N0cmlu
ZzpAIi9sb2FkRmFpbCJdKSB7CisgICAgICAgICAgICBsb2FkU3VjY2VzcyA9IGZhbHNlOworICAg
ICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0KKyAgICB9XTsKKworICAgIGF1dG8gcnVu
VGVzdCA9IFsmXSB7CisgICAgICAgIGxvYWRTdWNjZXNzID0gV1RGOjpudWxsb3B0OworICAgICAg
ICBkb25lID0gZmFsc2U7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFT
dG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgbm9uUGVyc2lzdGVudERhdGFTdG9yZV07CiAgICAg
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpXSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0Oi8vaG9zdDEvbWFpbi5odG1s
Il1dXTsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKLSAgICB9Ci0g
ICAgRVhQRUNUX0ZBTFNFKGxvYWRTdWNjZXNzKTsKLSAgICBFWFBFQ1RfVFJVRShsb2FkRmFpbCk7
Ci0gICAgRVhQRUNUX0VRKHNlcnZlci50b3RhbFJlcXVlc3RzKCksIDF1KTsKKyAgICB9OworCisg
ICAgcnVuVGVzdCgpOworICAgIEVYUEVDVF9UUlVFKCpsb2FkU3VjY2Vzcyk7CisgICAgRVhQRUNU
X0VRKHNlcnZlckxvY2FsaG9zdC50b3RhbFJlcXVlc3RzKCksIDF1KTsKKyAgICBFWFBFQ1RfRVEo
c2VydmVyMTI3MDAxLnRvdGFsUmVxdWVzdHMoKSwgMXUpOworICAgIAorICAgIGNvbmZpZ3VyYXRp
b24uZ2V0KCkuX2FsbG93ZWROZXR3b3JrSG9zdHMgPSBbTlNTZXQgc2V0XTsKKyAgICBydW5UZXN0
KCk7CisgICAgRVhQRUNUX0ZBTFNFKCpsb2FkU3VjY2Vzcyk7CisgICAgRVhQRUNUX0VRKHNlcnZl
ckxvY2FsaG9zdC50b3RhbFJlcXVlc3RzKCksIDF1KTsKKyAgICBFWFBFQ1RfRVEoc2VydmVyMTI3
MDAxLnRvdGFsUmVxdWVzdHMoKSwgMXUpOworCisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5fYWxs
b3dlZE5ldHdvcmtIb3N0cyA9IFtOU1NldCBzZXRXaXRoT2JqZWN0OkAiMTI3LjAuMC4xIl07Cisg
ICAgcnVuVGVzdCgpOworICAgIEVYUEVDVF9GQUxTRSgqbG9hZFN1Y2Nlc3MpOworICAgIEVYUEVD
VF9FUShzZXJ2ZXJMb2NhbGhvc3QudG90YWxSZXF1ZXN0cygpLCAxdSk7CisgICAgRVhQRUNUX0VR
KHNlcnZlcjEyNzAwMS50b3RhbFJlcXVlc3RzKCksIDJ1KTsKIH0KIAogVEVTVChVUkxTY2hlbWVI
YW5kbGVyLCBMb2Fkc1N1YnJlc291cmNlcykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvSFRUUFNlcnZlci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2Vy
dmVyLmgKaW5kZXggYzI4MGU1ZGFhOThlZjY2MjMyNmYxYmNmNGZmMjgzZTVmYTM5MDM1MC4uYjky
ODYyYTc2MDczNWU0YzUxOGZmYzk5Nzc3YmM1MTdkYzY3NjcwYyAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9IVFRQU2VydmVyLmgKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2VuZChSZXRhaW5QdHI8ZGlzcGF0Y2hfZGF0YV90PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgPSBudWxscHRyKSBjb25zdDsKICAgICB2b2lkIHJlY2VpdmVCeXRlcyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4mJikgY29uc3Q7CiAgICAgdm9pZCByZWNl
aXZlSFRUUFJlcXVlc3QoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8Y2hhcj4mJik+JiYs
IFZlY3RvcjxjaGFyPiYmIGJ1ZmZlciA9IHsgfSkgY29uc3Q7CisgICAgdm9pZCB3ZWJTb2NrZXRI
YW5kc2hha2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmID0geyB9KTsKICAgICB2b2lkIHRl
cm1pbmF0ZSgpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
SFRUUFNlcnZlci5tbQppbmRleCA5ZTQ2Yzg2OTdhMWEwMWQ5NmRjNzE1MzJiNmRlMjNmMGQxOWI5
YWVhLi42ZDNlNGE1MTBlY2VjYTY4NjFlMjRkYWNiYzI4ZDFlMmM1NjBlYjQ4IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCkBAIC0zMCw3ICszMCw5IEBACiAjaW1wb3J0
IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1NIQTEuaD4KICNpbXBvcnQgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+CiAj
aW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIApAQCAtMzI1LDYgKzMyNywzNCBAQCB2b2lkIENvbm5lY3Rpb246OnNlbmQoUmV0
YWluUHRyPGRpc3BhdGNoX2RhdGFfdD4mJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2bwog
ICAgIH0pLmdldCgpKTsKIH0KIAordm9pZCBDb25uZWN0aW9uOjp3ZWJTb2NrZXRIYW5kc2hha2Uo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbm5lY3Rpb25IYW5kbGVyKQoreworICAgIHJl
Y2VpdmVIVFRQUmVxdWVzdChbY29ubmVjdGlvbiA9IENvbm5lY3Rpb24oKnRoaXMpLCBjb25uZWN0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29ubmVjdGlvbkhhbmRsZXIpXSAoVmVjdG9yPGNoYXI+JiYg
cmVxdWVzdCkgbXV0YWJsZSB7CisKKyAgICAgICAgYXV0byB3ZWJTb2NrZXRBY2NlcHRWYWx1ZSA9
IFtdIChjb25zdCBWZWN0b3I8Y2hhcj4mIHJlcXVlc3QpIHsKKyAgICAgICAgICAgIGNvbnN0ZXhw
ciBhdXRvKiBrZXlIZWFkZXJGaWVsZCA9ICJTZWMtV2ViU29ja2V0LUtleTogIjsKKyAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGtleUJlZ2luID0gc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwga2V5SGVh
ZGVyRmllbGQsIHJlcXVlc3Quc2l6ZSgpKSArIHN0cmxlbihrZXlIZWFkZXJGaWVsZCk7CisgICAg
ICAgICAgICBBU1NFUlQoa2V5QmVnaW4pOworICAgICAgICAgICAgY29uc3QgY2hhcioga2V5RW5k
ID0gc3RybnN0cihrZXlCZWdpbiwgIlxyXG4iLCByZXF1ZXN0LnNpemUoKSArIChrZXlCZWdpbiAt
IHJlcXVlc3QuZGF0YSgpKSk7CisgICAgICAgICAgICBBU1NFUlQoa2V5RW5kKTsKKworICAgICAg
ICAgICAgY29uc3RleHByIGF1dG8qIHdlYlNvY2tldEtleUdVSUQgPSAiMjU4RUFGQTUtRTkxNC00
N0RBLTk1Q0EtQzVBQjBEQzg1QjExIjsKKyAgICAgICAgICAgIFNIQTEgc2hhMTsKKyAgICAgICAg
ICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oa2V5QmVn
aW4pLCBrZXlFbmQgLSBrZXlCZWdpbik7CisgICAgICAgICAgICBzaGExLmFkZEJ5dGVzKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHdlYlNvY2tldEtleUdVSUQpLCBzdHJsZW4od2Vi
U29ja2V0S2V5R1VJRCkpOworICAgICAgICAgICAgU0hBMTo6RGlnZXN0IGhhc2g7CisgICAgICAg
ICAgICBzaGExLmNvbXB1dGVIYXNoKGhhc2gpOworICAgICAgICAgICAgcmV0dXJuIGJhc2U2NEVu
Y29kZShoYXNoLmRhdGEoKSwgU0hBMTo6aGFzaFNpemUpOworICAgICAgICB9OworCisgICAgICAg
IGNvbm5lY3Rpb24uc2VuZChIVFRQUmVzcG9uc2UoMTAxLCB7CisgICAgICAgICAgICB7ICJVcGdy
YWRlIiwgIndlYnNvY2tldCIgfSwKKyAgICAgICAgICAgIHsgIkNvbm5lY3Rpb24iLCAiVXBncmFk
ZSIgfSwKKyAgICAgICAgICAgIHsgIlNlYy1XZWJTb2NrZXQtQWNjZXB0Iiwgd2ViU29ja2V0QWNj
ZXB0VmFsdWUocmVxdWVzdCkgfQorICAgICAgICB9KS5zZXJpYWxpemUoSFRUUFJlc3BvbnNlOjpJ
bmNsdWRlQ29udGVudExlbmd0aDo6Tm8pLCBXVEZNb3ZlKGNvbm5lY3Rpb25IYW5kbGVyKSk7Cisg
ICAgfSk7Cit9CisKIHZvaWQgQ29ubmVjdGlvbjo6dGVybWluYXRlKCkKIHsKICAgICBud19jb25u
ZWN0aW9uX2NhbmNlbChtX2Nvbm5lY3Rpb24uZ2V0KCkpOwo=
</data>
<flag name="commit-queue"
          id="448567"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427831</attachid>
            <date>2021-05-05 17:44:58 -0700</date>
            <delta_ts>2021-05-05 17:57:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225426-20210505174457.patch</filename>
            <type>text/plain</type>
            <size>32104</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDBhYzc1YzU1OTFjMWQz
MzU3NTZkNjMyZmFhMWM3MzAxZDQxNmY4Ny4uMmUyMjJkOGZjZjQxOTM1MjU2NzBiMjdkOGVkOGJk
NDUwYjZjMjA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTA1LTA1ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQ
SSB0byByZXN0cmljdCBuZXR3b3JraW5nIHRvIGEgc2V0IG9mIGhvc3RzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU0MjYKKyAgICAgICAgPHJkYXI6
Ly83NzU3MTUyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbiByMjU5MzkyIEkgYWRkZWQgU1BJIHRvIHR1cm4gbmV0d29yayBhY2Nlc3Mgb24gYW5k
IG9mZiwgYnV0IGEgY2xpZW50IG5lZWRzIGZpbmVyIGdyYWluZWQgY29udHJvbC4KKyAgICAgICAg
VGhpcyB1c2VzIHRoZSBzYW1lIGluZnJhc3RydWN0dXJlIHRvIGFkZCBhIHNldCBvZiBob3N0cyB0
byBhbGxvdy4gIFNldHRpbmcgaXQgdG8gbmlsICh0aGUgZGVmYXVsdCkgYWxsb3dzIGFsbCBob3N0
cywKKyAgICAgICAgYnV0IHNldHRpbmcgaXQgdG8gYW4gZW1wdHkgc2V0IGFsbG93cyBubyBuZXR3
b3JrIGFjY2Vzcy4gIFRoaXMgYWNjb21wbGlzaGVzIHRoZSBzYW1lIGFiaWxpdHkgYXMgdGhlIG9s
ZCBTUEksIHNvIEknbSBkZXByZWNhdGluZyBpdAorICAgICAgICB3aXRoIHRoaXMgYXMgYSByZXBs
YWNlbWVudC4gIFRoZSBuZXcgYWJpbGl0eSB0byBzcGVjaWZ5IGEgZmluaXRlIG51bWJlciBvZiBo
b3N0cyB0byBhbGxvdyBjcmVhdGVzIGEgbGltaXRlZCBXS1dlYlZpZXcuCisKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OnZhbGlkYXRlVVJMKToKKyAg
ICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWxsb3dzTG9hZEZy
b21VUkwgY29uc3QpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZTo6bG9hZHNGcm9tTmV0d29yayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9Q
YWdlQ29uZmlndXJhdGlvbi5oOgorCiAyMDIxLTA1LTA1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3Nv
QGFwcGxlLmNvbT4KIAogICAgICAgICBTYW1wbGVkIFBhZ2UgVG9wIENvbG9yOiB0YWtlIGFkZGl0
aW9uYWwgc25hcHNob3RzIGZ1cnRoZXIgZG93biB0aGUgcGFnZSB0byBzZWUgaWYgdGhlIHNhbXBs
ZWQgdG9wIGNvbG9yIGlzIG1vcmUgdGhhbiBqdXN0IGEgdGlueSBzdHJpcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAx
NjIwNzk3ZjEzYjAzY2VjODYyNGNiZGUzZjQ4ZWU2YTZlOWVhNzMzLi4zOGUzYjdjMWI5ODFhZThm
NDgzM2Y5MWVjNmQxOTU3NDc1YjE4ZTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIx
LTA1LTA1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgQWRkIFNQSSB0byByZXN0cmljdCBuZXR3b3JraW5nIHRvIGEgc2V0IG9mIGhvc3RzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU0MjYKKyAg
ICAgICAgPHJkYXI6Ly83NzU3MTUyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToK
KyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQ
YWdlQ29uZmlndXJhdGlvbjo6Y29weSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElQYWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6
YWxsb3dlZE5ldHdvcmtIb3N0cyBjb25zdCk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0
aW9uOjpzZXRBbGxvd2VkTmV0d29ya0hvc3RzKToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3Vy
YXRpb246OmxvYWRzRnJvbU5ldHdvcmsgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpQ
YWdlQ29uZmlndXJhdGlvbjo6c2V0TG9hZHNGcm9tTmV0d29yayk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAg
ICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9zZXRMb2Fkc0Zyb21OZXR3b3JrOl0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9sb2Fkc0Zyb21OZXR3b3JrXSk6CisgICAg
ICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3NldEFsbG93ZWROZXR3b3JrSG9zdHM6XSk6
CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX2FsbG93ZWROZXR3b3JrSG9zdHNd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Q
cml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fbGFzdE5h
dmlnYXRpb25XYXNBcHBCb3VuZCk6CisKIDIwMjEtMDUtMDUgIERldmluIFJvdXNzbyAgPGRyb3Vz
c29AYXBwbGUuY29tPgogCiAgICAgICAgIFNhbXBsZWQgUGFnZSBUb3AgQ29sb3I6IHRha2UgYWRk
aXRpb25hbCBzbmFwc2hvdHMgZnVydGhlciBkb3duIHRoZSBwYWdlIHRvIHNlZSBpZiB0aGUgc2Ft
cGxlZCB0b3AgY29sb3IgaXMgbW9yZSB0aGFuIGp1c3QgYSB0aW55IHN0cmlwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA0Y2NhMDYyYzA1MDdkN2FmYzBlMDk5ZTQzMDgwNGU4
YjkzMjU1ZWQ5Li4xNjlkOWM5ZGUzMzBhMTY0YTQ3NDdhNzU5MTgxYzg4YWQzOWJhYmNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9U
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgT3B0aW9uYWw8
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlZhbGlkYXRlZFVSTD4gVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OnYKIHsKICAgICBWYWxpZGF0ZWRVUkwgdmFsaWRhdGVkVVJMIHsgcmVxdWVz
dGVkVVJMLCB0cnVlIH07CiAgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCkpIHsK
LSAgICAgICAgaWYgKCFwYWdlLT5sb2Fkc0Zyb21OZXR3b3JrKCkpCisgICAgICAgIGlmICghcGFn
ZS0+YWxsb3dzTG9hZEZyb21VUkwocmVxdWVzdGVkVVJMKSkKICAgICAgICAgICAgIHJldHVybiB7
IH07CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICAgICAgaWYgKGF1dG8qIGRv
Y3VtZW50TG9hZGVyID0gZG9jdW1lbnQubG9hZGVyKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCmluZGV4IDczZTdhYzg4OTE4YTczZjk0MDZl
NjlkMzU4NTA2MGYzODgxNTdhNjIuLmNjMWJjZWUyNmMzYTQxZjVkODljYzhlYmI0MmY0NDRmNzAz
MzMyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3Rp
Zmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVy
LmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3Bh
dGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnCiAgICAgICAg
IGlmICghcGFnZS0+bG9hZHNTdWJyZXNvdXJjZXMoKSkgewogICAgICAgICAgICAgaWYgKCFtX2Zy
YW1lLmlzTWFpbkZyYW1lKCkgfHwgKG1faW5pdGlhbFJlcXVlc3RJZGVudGlmaWVyICYmICptX2lu
aXRpYWxSZXF1ZXN0SWRlbnRpZmllciAhPSBpZGVudGlmaWVyKSkKICAgICAgICAgICAgICAgICBy
ZXF1ZXN0ID0geyB9OwotICAgICAgICB9IGVsc2UgaWYgKCFwYWdlLT5sb2Fkc0Zyb21OZXR3b3Jr
KCkgJiYgcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpCisgICAgICAgIH0g
ZWxzZSBpZiAoIXBhZ2UtPmFsbG93c0xvYWRGcm9tVVJMKHJlcXVlc3QudXJsKCkpKQogICAgICAg
ICAgICAgcmVxdWVzdCA9IHsgfTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA1
MzRhMjZlNDAxMWYzYTgxMTYyMzhlMGMxMmYxZDRhYWQyOTg1MjViLi5jNGU0Yzc3YzVhMTJkNDU5
M2JkZWVkYzJmMzM1ZWVhZTVkYWI5N2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTMwNSw4ICsz
MDUsOCBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24p
CiAgICAgLCBtX2RldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIoV1RGTW92ZShwYWdlQ29u
ZmlndXJhdGlvbi5kZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyKSkKICNlbmRpZgogICAg
ICwgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5jb3Jz
RGlzYWJsaW5nUGF0dGVybnMpKQorICAgICwgbV9hbGxvd2VkTmV0d29ya0hvc3RzKFdURk1vdmUo
cGFnZUNvbmZpZ3VyYXRpb24uYWxsb3dlZE5ldHdvcmtIb3N0cykpCiAgICAgLCBtX2xvYWRzU3Vi
cmVzb3VyY2VzKHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzU3VicmVzb3VyY2VzKQotICAgICwgbV9s
b2Fkc0Zyb21OZXR3b3JrKHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzRnJvbU5ldHdvcmspCiAgICAg
LCBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKHBhZ2VDb25maWd1cmF0aW9u
LnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQogICAgICwgbV9odHRwc1VwZ3Jh
ZGVFbmFibGVkKHBhZ2VDb25maWd1cmF0aW9uLmh0dHBzVXBncmFkZUVuYWJsZWQpCiB7CkBAIC0z
Mjk5LDYgKzMyOTksMTUgQEAgdm9pZCBQYWdlOjpmb3JFYWNoTWVkaWFFbGVtZW50KGNvbnN0IEZ1
bmN0aW9uPHZvaWQoSFRNTE1lZGlhRWxlbWVudCYpPiYgZnVuY3RvcikKICNlbmRpZgogfQogCiti
b29sIFBhZ2U6OmFsbG93c0xvYWRGcm9tVVJMKGNvbnN0IFVSTCYgdXJsKSBjb25zdAoreworICAg
IGlmICghbV9hbGxvd2VkTmV0d29ya0hvc3RzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBp
ZiAoIXVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgIXVybC5wcm90b2NvbElzKCJ3cyIp
ICYmICF1cmwucHJvdG9jb2xJcygid3NzIikpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJl
dHVybiBtX2FsbG93ZWROZXR3b3JrSG9zdHMtPmNvbnRhaW5zKHVybC5ob3N0KCkudG9TdHJpbmdX
aXRob3V0Q29weWluZygpKTsKK30KKwogdm9pZCBQYWdlOjphcHBsaWNhdGlvbldpbGxSZXNpZ25B
Y3RpdmUoKQogewogI2lmIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggNmRkMDdlMWJh
OTFmMzE0ZGE2MGUyYWYzYzc0MDljYTUzODJlZGU1MS4uODBjNjIzOWJhZWZkZGRiMTI4YzgyMTY1
NDA1NDY5ZDZiOWRiZGM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTc5NCw3ICs3OTQsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc1V0aWxpdHlQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pc1V0aWxpdHlQ
YWdlOyB9CiAKICAgICBib29sIGxvYWRzU3VicmVzb3VyY2VzKCkgY29uc3QgeyByZXR1cm4gbV9s
b2Fkc1N1YnJlc291cmNlczsgfQotICAgIGJvb2wgbG9hZHNGcm9tTmV0d29yaygpIGNvbnN0IHsg
cmV0dXJuIG1fbG9hZHNGcm9tTmV0d29yazsgfQorICAgIGJvb2wgYWxsb3dzTG9hZEZyb21VUkwo
Y29uc3QgVVJMJikgY29uc3Q7CiAgICAgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoKSBjb25zdCB7IHJldHVybiBt
X3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOyB9CiAKICAgICBib29sIGlzTG93
UG93ZXJNb2RlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhyb3R0bGluZ1JlYXNvbnMuY29u
dGFpbnMoVGhyb3R0bGluZ1JlYXNvbjo6TG93UG93ZXJNb2RlKTsgfQpAQCAtMTE0Miw5ICsxMTQy
LDkgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxVc2VyQ29udGVudFVSTFBhdHRlcm4+IG1fY29y
c0Rpc2FibGluZ1BhdHRlcm5zOwogICAgIFZlY3RvcjxVc2VyU3R5bGVTaGVldD4gbV91c2VyU3R5
bGVTaGVldHNQZW5kaW5nSW5qZWN0aW9uOworICAgIE9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nPj4g
bV9hbGxvd2VkTmV0d29ya0hvc3RzOwogICAgIGJvb2wgbV9pc1Rha2luZ1NuYXBzaG90c0ZvckFw
cGxpY2F0aW9uU3VzcGVuc2lvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2xvYWRzU3VicmVzb3Vy
Y2VzIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9sb2Fkc0Zyb21OZXR3b3JrIHsgdHJ1ZSB9OwogICAg
IGJvb2wgbV9jYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSB7IHRydWUgfTsKICAgICBTaG91bGRSZWxh
eFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nIHsgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vIH07CiAgICAg
TG9hZFNjaGVkdWxpbmdNb2RlIG1fbG9hZFNjaGVkdWxpbmdNb2RlIHsgTG9hZFNjaGVkdWxpbmdN
b2RlOjpEaXJlY3QgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZp
Z3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAppbmRl
eCA5MjI3ZmNiYjFmYzRhNTIyZTA1YWJmNGYwNDBmMmRmNjczYTE3OWJlLi5hMTRmMjJkYWZiYTk3
MDYzMDkxZjMxMmM3OWI3ZWQ4MGY3ZmMyOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29u
ZmlndXJhdGlvbi5oCkBAIC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6
IFRoZXNlIHNob3VsZCBiZSBhbGwgYmUgU2V0dGluZ3MuCiAgICAgYm9vbCBsb2Fkc1N1YnJlc291
cmNlcyB7IHRydWUgfTsKLSAgICBib29sIGxvYWRzRnJvbU5ldHdvcmsgeyB0cnVlIH07CisgICAg
T3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+PiBhbGxvd2VkTmV0d29ya0hvc3RzOwogICAgIGJvb2wg
dXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24geyB0cnVlIH07CiAgICAgU2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcgeyBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6Tm8gfTsK
ICAgICBib29sIGh0dHBzVXBncmFkZUVuYWJsZWQgeyB0cnVlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGMyY2E3YmIz
NTcxZTQ0OGI5NDFhNWYwMDk2NGJkYzVmZWJiNTEzNTYuLmFiMjViYzk1MWY1YTg4MDY3NzMxNDE1
NTA4YWM0OGQ5OWJiODY4MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ICAgIGVuY29kZXIgPDwgb3ZlcnJpZGRlbk1lZGlhVHlwZTsKICAgICBlbmNvZGVyIDw8IGNvcnNE
aXNhYmxpbmdQYXR0ZXJuczsKICAgICBlbmNvZGVyIDw8IGxvYWRzU3VicmVzb3VyY2VzOwotICAg
IGVuY29kZXIgPDwgbG9hZHNGcm9tTmV0d29yazsKKyAgICBlbmNvZGVyIDw8IGFsbG93ZWROZXR3
b3JrSG9zdHM7CiAgICAgZW5jb2RlciA8PCB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlm
aWNhdGlvbjsKICAgICBlbmNvZGVyIDw8IGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5h
YmxlZDsKICAgICBlbmNvZGVyIDw8IHByb2Nlc3NEaXNwbGF5TmFtZTsKQEAgLTUwOSwxMSArNTA5
LDExIEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAgICAgcGFyYW1ldGVycy5sb2Fkc1N1YnJlc291cmNlcyA9ICpsb2Fkc1N1YnJlc291cmNl
czsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGxvYWRzRnJvbU5ldHdvcms7Ci0gICAgZGVjb2RlciA+
PiBsb2Fkc0Zyb21OZXR3b3JrOwotICAgIGlmICghbG9hZHNGcm9tTmV0d29yaykKKyAgICBPcHRp
b25hbDxPcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+PiBhbGxvd2VkTmV0d29ya0hvc3RzOworICAg
IGRlY29kZXIgPj4gYWxsb3dlZE5ldHdvcmtIb3N0czsKKyAgICBpZiAoIWFsbG93ZWROZXR3b3Jr
SG9zdHMpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgcGFyYW1ldGVycy5sb2Fk
c0Zyb21OZXR3b3JrID0gKmxvYWRzRnJvbU5ldHdvcms7CisgICAgcGFyYW1ldGVycy5hbGxvd2Vk
TmV0d29ya0hvc3RzID0gKmFsbG93ZWROZXR3b3JrSG9zdHM7CiAKICAgICBPcHRpb25hbDxib29s
PiB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsKICAgICBkZWNvZGVyID4+
IHVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGVjN2I1ZjM4NDRj
NWViYjMxYjdjMTlmNWI2MmQ4ZmQ2MjAyY2E0OWIuLmZmMTRmNGE1OGU0Y2JkN2U2N2NlMTExMjc4
NzNlNmQ1ZWU2Y2VjOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyB7CiAgICAgVmVjdG9yPFN0cmluZz4gY29yc0Rpc2FibGluZ1BhdHRlcm5z
OwogICAgIGJvb2wgdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24geyB0cnVl
IH07CiAgICAgYm9vbCBsb2Fkc1N1YnJlc291cmNlcyB7IHRydWUgfTsKLSAgICBib29sIGxvYWRz
RnJvbU5ldHdvcmsgeyB0cnVlIH07CisgICAgT3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+PiBhbGxv
d2VkTmV0d29ya0hvc3RzOwogCiAgICAgYm9vbCBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVj
a0VuYWJsZWQgeyB0cnVlIH07CiAgICAgU3RyaW5nIHByb2Nlc3NEaXNwbGF5TmFtZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3Bw
CmluZGV4IGEzMzUyZTZlYjljNzhmNDc2ODE5MjBiMWI5YzZiODUxZWRjMjc2ODUuLjdlZjA0YWU4
OTJkNTQ0YTM5NzU5MDFiMmIwOTQwYzEwZTM3ZTEyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcApAQCAtODcsNyArODcs
NyBAQCBSZWY8UGFnZUNvbmZpZ3VyYXRpb24+IFBhZ2VDb25maWd1cmF0aW9uOjpjb3B5KCkgY29u
c3QKIAogICAgIGNvcHktPm1fcHJvY2Vzc0Rpc3BsYXlOYW1lID0gdGhpcy0+bV9wcm9jZXNzRGlz
cGxheU5hbWU7CiAgICAgY29weS0+bV9sb2Fkc1N1YnJlc291cmNlcyA9IHRoaXMtPm1fbG9hZHNT
dWJyZXNvdXJjZXM7Ci0gICAgY29weS0+bV9sb2Fkc0Zyb21OZXR3b3JrID0gdGhpcy0+bV9sb2Fk
c0Zyb21OZXR3b3JrOworICAgIGNvcHktPm1fYWxsb3dlZE5ldHdvcmtIb3N0cyA9IHRoaXMtPm1f
YWxsb3dlZE5ldHdvcmtIb3N0czsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAg
Y29weS0+bV9pZ25vcmVzQXBwQm91bmREb21haW5zID0gdGhpcy0+bV9pZ25vcmVzQXBwQm91bmRE
b21haW5zOwogICAgIGNvcHktPm1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9
IHRoaXMtPm1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWluczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKaW5kZXggNTY5
MmQ2MjkxNmNjNTNiYzZlZDIzOWQ5NjI1YWZjZjcwNjkyMWY2OC4uYTk5NTdhYTc1YzY3ODdkZGNm
YTA1MmExMjNkOWJhYzRiYzZkNzNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMTQ2LDggKzE0Nyw4
IEBAIHB1YmxpYzoKICAgICBib29sIGxvYWRzU3VicmVzb3VyY2VzKCkgY29uc3QgeyByZXR1cm4g
bV9sb2Fkc1N1YnJlc291cmNlczsgfQogICAgIHZvaWQgc2V0TG9hZHNTdWJyZXNvdXJjZXMoYm9v
bCBsb2FkcykgeyBtX2xvYWRzU3VicmVzb3VyY2VzID0gbG9hZHM7IH0KIAotICAgIGJvb2wgbG9h
ZHNGcm9tTmV0d29yaygpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZHNGcm9tTmV0d29yazsgfQotICAg
IHZvaWQgc2V0TG9hZHNGcm9tTmV0d29yayhib29sIGxvYWRzKSB7IG1fbG9hZHNGcm9tTmV0d29y
ayA9IGxvYWRzOyB9CisgICAgY29uc3QgT3B0aW9uYWw8SGFzaFNldDxXVEY6OlN0cmluZz4+JiBh
bGxvd2VkTmV0d29ya0hvc3RzKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd2VkTmV0d29ya0hvc3Rz
OyB9CisgICAgdm9pZCBzZXRBbGxvd2VkTmV0d29ya0hvc3RzKE9wdGlvbmFsPEhhc2hTZXQ8V1RG
OjpTdHJpbmc+PiYmIGhvc3RzKSB7IG1fYWxsb3dlZE5ldHdvcmtIb3N0cyA9IFdURk1vdmUoaG9z
dHMpOyB9CiAKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgYm9vbCBpZ25vcmVz
QXBwQm91bmREb21haW5zKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVzQXBwQm91bmREb21haW5z
OyB9CkBAIC0yMDUsNyArMjA2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkIHsgdHJ1ZSB9OwogICAgIFdURjo6U3RyaW5nIG1fcHJv
Y2Vzc0Rpc3BsYXlOYW1lOwogICAgIGJvb2wgbV9sb2Fkc1N1YnJlc291cmNlcyB7IHRydWUgfTsK
LSAgICBib29sIG1fbG9hZHNGcm9tTmV0d29yayB7IHRydWUgfTsKKyAgICBPcHRpb25hbDxIYXNo
U2V0PFdURjo6U3RyaW5nPj4gbV9hbGxvd2VkTmV0d29ya0hvc3RzOwogICAgIAogI2lmIEVOQUJM
RShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBib29sIG1faWdub3Jlc0FwcEJvdW5kRG9tYWlucyB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCmluZGV4IDQwNjI4ZGFmNDExMTlmMTc0Yjlk
Mzg5MzE2MDMwYzIxYzE2MDY5M2YuLmNlNWI3YmQ1YjAxYWJjODIxMDk1ZDA1NTk1YWFlOTY5YjY4
Y2Y1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCkBAIC05NTIsMTIgKzk1MiwzMyBAQCBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAodm9pZClfc2V0TG9hZHNGcm9tTmV0
d29yazooQk9PTClsb2FkcwogewotICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0TG9hZHNGcm9t
TmV0d29yayhsb2Fkcyk7CisgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRBbGxvd2VkTmV0d29y
a0hvc3RzKGxvYWRzID8gV1RGOjpudWxsb3B0IDogT3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+PiB7
IEhhc2hTZXQ8U3RyaW5nPiB7IH0gfSk7CiB9CiAKIC0gKEJPT0wpX2xvYWRzRnJvbU5ldHdvcmsK
IHsKLSAgICByZXR1cm4gX3BhZ2VDb25maWd1cmF0aW9uLT5sb2Fkc0Zyb21OZXR3b3JrKCk7Cisg
ICAgcmV0dXJuIF9wYWdlQ29uZmlndXJhdGlvbi0+YWxsb3dlZE5ldHdvcmtIb3N0cygpID09IFdU
Rjo6bnVsbG9wdDsKK30KKworLSAodm9pZClfc2V0QWxsb3dlZE5ldHdvcmtIb3N0czooTlNTZXQ8
TlNTdHJpbmcgKj4gKilob3N0cworeworICAgIGlmICghaG9zdHMpCisgICAgICAgIHJldHVybiBf
cGFnZUNvbmZpZ3VyYXRpb24tPnNldEFsbG93ZWROZXR3b3JrSG9zdHMoV1RGOjpudWxsb3B0KTsK
KyAgICBIYXNoU2V0PFN0cmluZz4gc2V0OworICAgIGZvciAoTlNTdHJpbmcgKmhvc3QgaW4gaG9z
dHMpCisgICAgICAgIHNldC5hZGQoaG9zdCk7CisgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRB
bGxvd2VkTmV0d29ya0hvc3RzKFdURk1vdmUoc2V0KSk7Cit9CisKKy0gKE5TU2V0PE5TU3RyaW5n
ICo+ICopX2FsbG93ZWROZXR3b3JrSG9zdHMKK3sKKyAgICBjb25zdCBhdXRvJiBob3N0cyA9IF9w
YWdlQ29uZmlndXJhdGlvbi0+YWxsb3dlZE5ldHdvcmtIb3N0cygpOworICAgIGlmICghaG9zdHMp
CisgICAgICAgIHJldHVybiBuaWw7CisgICAgTlNNdXRhYmxlU2V0PE5TU3RyaW5nICo+ICpzZXQg
PSBbTlNNdXRhYmxlU2V0IHNldFdpdGhDYXBhY2l0eTpob3N0cy0+c2l6ZSgpXTsKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIGhvc3QgOiAqaG9zdHMpCisgICAgICAgIFtzZXQgYWRkT2JqZWN0Omhvc3Rd
OworICAgIHJldHVybiBzZXQ7CiB9CiAKIC0gKHZvaWQpX3NldExvYWRzU3VicmVzb3VyY2VzOihC
T09MKWxvYWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCmluZGV4IDkwOWM5OTc1
ZTA3MzI1MzNlOTBkODFiYTQzZTQ2OWE3OWFjN2I3YzIuLjI0MjVlYzZmZmNhYzBiYzU2ZDY0Yjhk
Mzc5NTI5NDMxZjU5YTAzNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCkBA
IC03OSw3ICs3OSw4IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBfV0tEcmFnTGlmdERl
bGF5KSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXREZWZlcnJhYmxlVXNlclNj
cmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb246KSBCT09MIF9kZWZlcnJhYmxlVXNlclNj
cmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
MS4wKSwgaW9zKDE0LjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldENyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDopIEJPT0wgX2Nyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbENoZWNrRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBpb3MoMTQu
MCkpOwogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRMb2Fkc0Zyb21OZXR3b3Jr
OikgQk9PTCBfbG9hZHNGcm9tTmV0d29yayBXS19BUElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBp
b3MoMTQuMCkpOworQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0TG9hZHNGcm9tTmV0
d29yazopIEJPT0wgX2xvYWRzRnJvbU5ldHdvcmsgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBM
QUNFTUVOVCgiX2FsbG93ZWROZXR3b3JrSG9zdHMiLCBtYWNvcygxMS4wLCBXS19NQUNfVEJBKSwg
aW9zKDE0LjAsIFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0
ZXI9X3NldEFsbG93ZWROZXR3b3JrSG9zdHM6KSBOU1NldDxOU1N0cmluZyAqPiAqX2FsbG93ZWRO
ZXR3b3JrSG9zdHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldExvYWRzU3VicmVzb3Vy
Y2VzOikgQk9PTCBfbG9hZHNTdWJyZXNvdXJjZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4w
KSwgaW9zKDE0LjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldElnbm9yZXNB
cHBCb3VuZERvbWFpbnM6KSBCT09MIF9pZ25vcmVzQXBwQm91bmREb21haW5zIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IGU4MmRjMTg2ZmQ2ZTkzM2QyNDkwMTdhNjBlZjJmYjgxNWFi
Y2M2YTIuLmM1OTg4M2FlMWU1NWJiMmI5YTEyY2VhZGY3OTRlNTQ0YjFhZjM0ZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODAwNCw3ICs4MDA0LDcgQEAg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVy
cyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICBwYXJhbWV0ZXJzLm92ZXJyaWRkZW5NZWRpYVR5
cGUgPSBtX292ZXJyaWRkZW5NZWRpYVR5cGU7CiAgICAgcGFyYW1ldGVycy5jb3JzRGlzYWJsaW5n
UGF0dGVybnMgPSBjb3JzRGlzYWJsaW5nUGF0dGVybnMoKTsKICAgICBwYXJhbWV0ZXJzLnVzZXJT
Y3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uID0gbV9jb25maWd1cmF0aW9uLT51c2Vy
U2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbigpOwotICAgIHBhcmFtZXRlcnMubG9h
ZHNGcm9tTmV0d29yayA9IG1fY29uZmlndXJhdGlvbi0+bG9hZHNGcm9tTmV0d29yaygpOworICAg
IHBhcmFtZXRlcnMuYWxsb3dlZE5ldHdvcmtIb3N0cyA9IG1fY29uZmlndXJhdGlvbi0+YWxsb3dl
ZE5ldHdvcmtIb3N0cygpOwogICAgIHBhcmFtZXRlcnMubG9hZHNTdWJyZXNvdXJjZXMgPSBtX2Nv
bmZpZ3VyYXRpb24tPmxvYWRzU3VicmVzb3VyY2VzKCk7CiAgICAgcGFyYW1ldGVycy5jcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgPSBtX2NvbmZpZ3VyYXRpb24tPmNyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCgpOwogICAgIHBhcmFtZXRlcnMuaGFzUmVzb3Vy
Y2VMb2FkQ2xpZW50ID0gISFtX3Jlc291cmNlTG9hZENsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNmU0MTZmNDMxNjE0NzlkZTk1NTYw
NTJkNTE4NjQyMGI0OTFjMTRiOS4uZDQ0NmJjZDRkZTkwZjg3NzcwYmNiMzViZGY2NzI4ZDJiMzFk
MWI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTYwNCw3ICs2MDQsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAKICAgICBwYWdlQ29u
ZmlndXJhdGlvbi51c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiA9IHBhcmFt
ZXRlcnMudXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb247CiAgICAgcGFnZUNv
bmZpZ3VyYXRpb24ubG9hZHNTdWJyZXNvdXJjZXMgPSBwYXJhbWV0ZXJzLmxvYWRzU3VicmVzb3Vy
Y2VzOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzRnJvbU5ldHdvcmsgPSBwYXJhbWV0ZXJz
LmxvYWRzRnJvbU5ldHdvcms7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uYWxsb3dlZE5ldHdvcmtI
b3N0cyA9IHBhcmFtZXRlcnMuYWxsb3dlZE5ldHdvcmtIb3N0czsKICAgICBwYWdlQ29uZmlndXJh
dGlvbi5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyA9IHBhcmFtZXRlcnMuc2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24u
aHR0cHNVcGdyYWRlRW5hYmxlZCA9IHBhcmFtZXRlcnMuaHR0cHNVcGdyYWRlRW5hYmxlZDsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDViMDZj
MmU1YjYyNmIxMzEwYjk0N2RkZjRjZjE3Yzc0OTU2M2M4M2MuLjNhYzk4Y2VhNWY4NDMzNmI4YTJi
Mzg0MWY4ZDRjZTkzMjFkM2M0MmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMS0wNS0wNSAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBTUEkgdG8gcmVz
dHJpY3QgbmV0d29ya2luZyB0byBhIHNldCBvZiBob3N0cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NDI2CisgICAgICAgIDxyZGFyOi8vNzc1NzE1
MjE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlv
bi5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAod2ViU29ja2V0QWNjZXB0VmFsdWUpOiBE
ZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxT
Y2hlbWVIYW5kbGVyLTEubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2Vy
dmVyLmg6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uOjp3ZWJTb2NrZXRIYW5k
c2hha2UpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb246OndlYlNvY2tldEhhbmRzaGFrZSk6CisK
IDIwMjEtMDUtMDUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAg
IFNhbXBsZWQgUGFnZSBUb3AgQ29sb3I6IHRha2UgYWRkaXRpb25hbCBzbmFwc2hvdHMgZnVydGhl
ciBkb3duIHRoZSBwYWdlIHRvIHNlZSBpZiB0aGUgc2FtcGxlZCB0b3AgY29sb3IgaXMgbW9yZSB0
aGFuIGp1c3QgYSB0aW55IHN0cmlwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0NvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbi5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9u
Lm1tCmluZGV4IDc2Zjg1OGIwZTQwMzBiNzM2ZjhkMGZmNDRjODYwN2RkNmFjYTQ2MTYuLjg2Mjcy
Zjk3YzlkYTRlMDNmY2U3ZDI0ZmY2MzcxZTVjYzZmOWJkYzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9u
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1
bGVMaXN0Tm90aWZpY2F0aW9uLm1tCkBAIC00MiwxMCArNDIsOCBAQAogI2ltcG9ydCA8V2ViS2l0
L19XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0jaW1w
b3J0IDx3dGYvU0hBMS5oPgogI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL2NvY29h
L1ZlY3RvckNvY29hLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBzdGF0aWMgYm9vbCByZWNlaXZlZE5vdGlmaWNhdGlvbjsK
QEAgLTE4MSwzNCArMTc5LDExIEBAIFRFU1QoQ29udGVudFJ1bGVMaXN0LCBQZXJmb3JtZWRBY3Rp
b25Gb3JVUkwpCiAgICAgRVhQRUNUX1RSVUUoZXhwZWN0ZWROb3RpZmljYXRpb25zID09IG5vdGlm
aWNhdGlvbkxpc3QpOwogfQogCi1zdGF0aWMgU3RyaW5nIHdlYlNvY2tldEFjY2VwdFZhbHVlKGNv
bnN0IFZlY3RvcjxjaGFyPiYgcmVxdWVzdCkKLXsKLSAgICBjb25zdGV4cHIgYXV0byoga2V5SGVh
ZGVyRmllbGQgPSAiU2VjLVdlYlNvY2tldC1LZXk6ICI7Ci0gICAgY29uc3QgY2hhcioga2V5QmVn
aW4gPSBzdHJuc3RyKHJlcXVlc3QuZGF0YSgpLCBrZXlIZWFkZXJGaWVsZCwgcmVxdWVzdC5zaXpl
KCkpICsgc3RybGVuKGtleUhlYWRlckZpZWxkKTsKLSAgICBFWFBFQ1RfTk9UX05VTEwoa2V5QmVn
aW4pOwotICAgIGNvbnN0IGNoYXIqIGtleUVuZCA9IHN0cm5zdHIoa2V5QmVnaW4sICJcclxuIiwg
cmVxdWVzdC5zaXplKCkgKyAoa2V5QmVnaW4gLSByZXF1ZXN0LmRhdGEoKSkpOwotICAgIEVYUEVD
VF9OT1RfTlVMTChrZXlFbmQpOwotCi0gICAgY29uc3RleHByIGF1dG8qIHdlYlNvY2tldEtleUdV
SUQgPSAiMjU4RUFGQTUtRTkxNC00N0RBLTk1Q0EtQzVBQjBEQzg1QjExIjsKLSAgICBTSEExIHNo
YTE7Ci0gICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihr
ZXlCZWdpbiksIGtleUVuZCAtIGtleUJlZ2luKTsKLSAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHdlYlNvY2tldEtleUdVSUQpLCBzdHJsZW4od2ViU29j
a2V0S2V5R1VJRCkpOwotICAgIFNIQTE6OkRpZ2VzdCBoYXNoOwotICAgIHNoYTEuY29tcHV0ZUhh
c2goaGFzaCk7Ci0gICAgcmV0dXJuIGJhc2U2NEVuY29kZShoYXNoLmRhdGEoKSwgU0hBMTo6aGFz
aFNpemUpOwotfQotCiBURVNUKENvbnRlbnRSdWxlTGlzdCwgUmVzb3VyY2VUeXBlcykKIHsKICAg
ICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKICAgICBIVFRQU2VydmVyIHdlYlNvY2tl
dFNlcnZlcihbXShDb25uZWN0aW9uIGNvbm5lY3Rpb24pIHsKLSAgICAgICAgY29ubmVjdGlvbi5y
ZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKLSAgICAgICAg
ICAgIGNvbm5lY3Rpb24uc2VuZChIVFRQUmVzcG9uc2UoMTAxLCB7Ci0gICAgICAgICAgICAgICAg
eyAiVXBncmFkZSIsICJ3ZWJzb2NrZXQiIH0sCi0gICAgICAgICAgICAgICAgeyAiQ29ubmVjdGlv
biIsICJVcGdyYWRlIiB9LAotICAgICAgICAgICAgICAgIHsgIlNlYy1XZWJTb2NrZXQtQWNjZXB0
Iiwgd2ViU29ja2V0QWNjZXB0VmFsdWUocmVxdWVzdCkgfQotICAgICAgICAgICAgfSkuc2VyaWFs
aXplKEhUVFBSZXNwb25zZTo6SW5jbHVkZUNvbnRlbnRMZW5ndGg6Ok5vKSk7Ci0gICAgICAgIH0p
OworICAgICAgICBjb25uZWN0aW9uLndlYlNvY2tldEhhbmRzaGFrZSgpOwogICAgIH0pOwogICAg
IGF1dG8gc2VydmVyUG9ydCA9IHdlYlNvY2tldFNlcnZlci5wb3J0KCk7CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVy
LTEubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1l
SGFuZGxlci0xLm1tCmluZGV4IDdhYTRjOWQ5NzU4ZDY4ZDM4NmYzYTA5MjRjZTAyNmIzODZkZTJh
YzkuLjM1MTExY2Q4NTUxODg2ZDFjMTZhM2QzZmFhNDk1YmI4MGEzODMyY2IgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVy
LTEubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNj
aGVtZUhhbmRsZXItMS5tbQpAQCAtNDgsNiArNDgsNyBAQAogI2ltcG9ydCA8d3RmL1RocmVhZGlu
Zy5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+
CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KICNpbXBvcnQg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CkBAIC0xMTAwLDEyICsxMTAxLDE3IEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgRGlzYWJsZUNP
UlNDYW52YXMpCiAKIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgTG9hZHNGcm9tTmV0d29yaykKIHsK
LSAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7CisgICAgdXNpbmcgbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEk7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoewogICAgICAgICB7ICIv
IiwgeyB7eyAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgIioiIH19LCAidGVzdCBjb250
ZW50IiB9IH0KICAgICB9KTsKIAotICAgIGJvb2wgbG9hZFN1Y2Nlc3MgPSBmYWxzZTsKLSAgICBi
b29sIGxvYWRGYWlsID0gZmFsc2U7CisgICAgSFRUUFNlcnZlciB3ZWJTb2NrZXRTZXJ2ZXIoW10o
Q29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CisgICAgICAgIGNvbm5lY3Rpb24ud2ViU29ja2V0SGFu
ZHNoYWtlKCk7CisgICAgfSk7CisKKyAgICBPcHRpb25hbDxib29sPiBsb2FkU3VjY2VzczsKKyAg
ICBPcHRpb25hbDxib29sPiB3ZWJTb2NrZXRTdWNjZXNzOwogICAgIGJvb2wgZG9uZSA9IGZhbHNl
OwogCiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbVGVzdFVSTFNjaGVtZUhhbmRsZXIgbmV3
XSk7CkBAIC0xMTE0LDUwICsxMTIwLDE0MSBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIExvYWRz
RnJvbU5ldHdvcmspCiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5k
bGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInRlc3QiXTsKIAogICAgIFtoYW5kbGVyIHNldFN0YXJ0
VVJMU2NoZW1lVGFza0hhbmRsZXI6WyZdKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+
IHRhc2spIHsKLSAgICAgICAgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3Ry
aW5nOkAiL21haW4uaHRtbCJdKSB7Ci0gICAgICAgICAgICBOU0RhdGEgKmRhdGEgPSBbW05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8c2NyaXB0PiIKLSAgICAgICAgICAgICAgICAiZmV0Y2go
J2h0dHA6Ly8xMjcuMC4wLjE6JWQvJykudGhlbigoKT0+eyIKLSAgICAgICAgICAgICAgICAgICAg
ImZldGNoKCcvbG9hZFN1Y2Nlc3MnKSIKLSAgICAgICAgICAgICAgICAifSkuY2F0Y2goKCk9Pnsi
CisgICAgICAgIE5TU3RyaW5nICpwYXRoID0gdGFzay5yZXF1ZXN0LlVSTC5wYXRoOworICAgICAg
ICBXVEZMb2dBbHdheXMoImxvYWRpbmcgJUAiLCBwYXRoKTsKKyAgICAgICAgaWYgKFtwYXRoIGlz
RXF1YWxUb1N0cmluZzpAIi9tYWluLmh0bWwiXSkgeworICAgICAgICAgICAgcmVzcG9uZCh0YXNr
LCBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxzY3JpcHQ+IgorICAgICAgICAgICAgICAg
ICJmdW5jdGlvbiBjaGVja1dlYlNvY2tldHMoKSB7IgogICAgICAgICAgICAgICAgICAgICAidmFy
IHdzID0gbmV3IFdlYlNvY2tldCgnd3M6Ly8xMjcuMC4wLjE6JWQnKTsiCi0gICAgICAgICAgICAg
ICAgICAgICJ3cy5vbmVycm9yID0gZnVuY3Rpb24oKSB7IGZldGNoKCcvbG9hZEZhaWwnKSB9OyIK
KyAgICAgICAgICAgICAgICAgICAgIndzLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsgZmV0Y2goJy93
ZWJTb2NrZXRGYWlsJykgfTsiCisgICAgICAgICAgICAgICAgICAgICJ3cy5vbm9wZW4gPSBmdW5j
dGlvbigpIHsgZmV0Y2goJy93ZWJTb2NrZXRTdWNjZXNzJykgfTsiCisgICAgICAgICAgICAgICAg
In0iCisgICAgICAgICAgICAgICAgImZldGNoKCdodHRwOi8vbG9jYWxob3N0OiVkLycpLnRoZW4o
KCk9PnsiCisgICAgICAgICAgICAgICAgICAgICJmZXRjaCgnL2xvYWRTdWNjZXNzJykudGhlbigo
KT0+eyBjaGVja1dlYlNvY2tldHMoKSB9KSIKKyAgICAgICAgICAgICAgICAifSkuY2F0Y2goKCk9
PnsiCisgICAgICAgICAgICAgICAgICAgICJmZXRjaCgnL2xvYWRGYWlsJykudGhlbigoKT0+eyBj
aGVja1dlYlNvY2tldHMoKSB9KSIKICAgICAgICAgICAgICAgICAifSkiCi0gICAgICAgICAgICAg
ICAgIjwvc2NyaXB0PiIsIHNlcnZlci5wb3J0KCksIHNlcnZlci5wb3J0KCldIGRhdGFVc2luZ0Vu
Y29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICAgICAgICAgIFt0YXNrIGRpZFJlY2Vp
dmVSZXNwb25zZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFz
ay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
OmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSkuZ2V0KCldOwotICAgICAgICAgICAg
W3Rhc2sgZGlkUmVjZWl2ZURhdGE6ZGF0YV07Ci0gICAgICAgICAgICBbdGFzayBkaWRGaW5pc2hd
OwotICAgICAgICB9IGVsc2UgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3Ry
aW5nOkAiL2xvYWRTdWNjZXNzIl0pIHsKKyAgICAgICAgICAgICAgICAiPC9zY3JpcHQ+Iiwgd2Vi
U29ja2V0U2VydmVyLnBvcnQoKSwgc2VydmVyLnBvcnQoKV0uVVRGOFN0cmluZyk7CisgICAgICAg
IH0gZWxzZSBpZiAoW3BhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2xvYWRTdWNjZXNzIl0pIHsKKyAg
ICAgICAgICAgIHJlc3BvbmQodGFzaywgImhpIik7CiAgICAgICAgICAgICBsb2FkU3VjY2VzcyA9
IHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAoW3BhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2xvYWRG
YWlsIl0pIHsKKyAgICAgICAgICAgIHJlc3BvbmQodGFzaywgImhpIik7CisgICAgICAgICAgICBs
b2FkU3VjY2VzcyA9IGZhbHNlOworICAgICAgICB9IGVsc2UgaWYgKFtwYXRoIGlzRXF1YWxUb1N0
cmluZzpAIi93ZWJTb2NrZXRTdWNjZXNzIl0pIHsKKyAgICAgICAgICAgIHdlYlNvY2tldFN1Y2Nl
c3MgPSB0cnVlOwogICAgICAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAo
W3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvbG9hZEZhaWwiXSkgewot
ICAgICAgICAgICAgbG9hZEZhaWwgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKFtwYXRoIGlz
RXF1YWxUb1N0cmluZzpAIi93ZWJTb2NrZXRGYWlsIl0pIHsKKyAgICAgICAgICAgIHdlYlNvY2tl
dFN1Y2Nlc3MgPSBmYWxzZTsKICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH1dOwogICAgIAotICAg
IHsKKyAgICBhdXRvIHJ1blRlc3QgPSBbJl0geworICAgICAgICBsb2FkU3VjY2VzcyA9IFdURjo6
bnVsbG9wdDsKKyAgICAgICAgd2ViU29ja2V0U3VjY2VzcyA9IFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgZG9uZSA9IGZhbHNlOwogICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgICAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
dGVzdDovL2hvc3QxL21haW4uaHRtbCJdXV07CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZSk7Ci0gICAgfQotICAgIEVYUEVDVF9UUlVFKGxvYWRTdWNjZXNzKTsKLSAgICBF
WFBFQ1RfRkFMU0UobG9hZEZhaWwpOworICAgIH07CisKKyAgICBydW5UZXN0KCk7CisgICAgRVhQ
RUNUX1RSVUUoKmxvYWRTdWNjZXNzKTsKKyAgICBFWFBFQ1RfVFJVRSgqd2ViU29ja2V0U3VjY2Vz
cyk7CiAgICAgRVhQRUNUX0VRKHNlcnZlci50b3RhbFJlcXVlc3RzKCksIDF1KTsKLSAgICAKLSAg
ICBsb2FkU3VjY2VzcyA9IGZhbHNlOwotICAgIGxvYWRGYWlsID0gZmFsc2U7Ci0gICAgZG9uZSA9
IGZhbHNlOwogCiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS5fbG9hZHNGcm9tTmV0d29yayA9IE5P
OwotICAgIHsKKyAgICBydW5UZXN0KCk7CisgICAgRVhQRUNUX0ZBTFNFKCpsb2FkU3VjY2Vzcyk7
CisgICAgRVhQRUNUX0ZBTFNFKCp3ZWJTb2NrZXRTdWNjZXNzKTsKKyAgICBFWFBFQ1RfRVEoc2Vy
dmVyLnRvdGFsUmVxdWVzdHMoKSwgMXUpOworICAgIAorICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCku
X2FsbG93ZWROZXR3b3JrSG9zdHMgPSBbTlNTZXQgc2V0XTsKKyAgICBydW5UZXN0KCk7CisgICAg
RVhQRUNUX0ZBTFNFKCpsb2FkU3VjY2Vzcyk7CisgICAgRVhQRUNUX0ZBTFNFKCp3ZWJTb2NrZXRT
dWNjZXNzKTsKKyAgICBFWFBFQ1RfRVEoc2VydmVyLnRvdGFsUmVxdWVzdHMoKSwgMXUpOworCisg
ICAgY29uZmlndXJhdGlvbi5nZXQoKS5fYWxsb3dlZE5ldHdvcmtIb3N0cyA9IG5pbDsKKyAgICBy
dW5UZXN0KCk7CisgICAgRVhQRUNUX1RSVUUoKmxvYWRTdWNjZXNzKTsKKyAgICBFWFBFQ1RfVFJV
RSgqd2ViU29ja2V0U3VjY2Vzcyk7CisgICAgRVhQRUNUX0VRKHNlcnZlci50b3RhbFJlcXVlc3Rz
KCksIDJ1KTsKKworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuX2FsbG93ZWROZXR3b3JrSG9zdHMg
PSBbTlNTZXQgc2V0V2l0aE9iamVjdDpAImxvY2FsaG9zdCJdOworICAgIHJ1blRlc3QoKTsKKyAg
ICBFWFBFQ1RfVFJVRSgqbG9hZFN1Y2Nlc3MpOworICAgIEVYUEVDVF9GQUxTRSgqd2ViU29ja2V0
U3VjY2Vzcyk7CisgICAgRVhQRUNUX0VRKHNlcnZlci50b3RhbFJlcXVlc3RzKCksIDN1KTsKK30K
KworVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBBbGxvd2VkTmV0d29ya0hvc3RzUmVkaXJlY3QpCit7
CisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXJMb2NhbGhvc3QoeworICAgICAg
ICB7ICIvcmVkaXJlY3RUYXJnZXQiLCB7IHt7ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4i
LCAiKiIgfX0sICJ0ZXN0IGNvbnRlbnQiIH0gfQorICAgIH0pOworICAgIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXIgc2VydmVyMTI3MDAxKHsKKyAgICAgICAgeyAiLyIsIHsgMzAxLCB7CisgICAg
ICAgICAgICB7ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAiKiIgfSwKKyAgICAgICAg
ICAgIHsgIkxvY2F0aW9uIiwgbWFrZVN0cmluZygiaHR0cDovL2xvY2FsaG9zdDoiLCBzZXJ2ZXJM
b2NhbGhvc3QucG9ydCgpLCAiL3JlZGlyZWN0VGFyZ2V0IikgfQorICAgICAgICB9fX0sCisgICAg
fSk7CisKKyAgICBPcHRpb25hbDxib29sPiBsb2FkU3VjY2VzczsKKyAgICBib29sIGRvbmUgPSBm
YWxzZTsKKworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1Rlc3RVUkxTY2hlbWVIYW5kbGVy
IG5ld10pOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hl
bWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAidGVzdCJdOworCisgICAgW2hh
bmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpbJl0oV0tXZWJWaWV3ICosIGlkPFdL
VVJMU2NoZW1lVGFzaz4gdGFzaykgeworICAgICAgICBOU1N0cmluZyAqcGF0aCA9IHRhc2sucmVx
dWVzdC5VUkwucGF0aDsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJsb2FkaW5nICVAIiwgcGF0aCk7
CisgICAgICAgIGlmIChbcGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvbWFpbi5odG1sIl0pIHsKKyAg
ICAgICAgICAgIHJlc3BvbmQodGFzaywgW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8c2Ny
aXB0PiIKKyAgICAgICAgICAgICAgICAiZmV0Y2goJ2h0dHA6Ly8xMjcuMC4wLjE6JWQvJykudGhl
bigoKT0+eyIKKyAgICAgICAgICAgICAgICAgICAgImZldGNoKCcvbG9hZFN1Y2Nlc3MnKSIKKyAg
ICAgICAgICAgICAgICAifSkuY2F0Y2goKCk9PnsiCisgICAgICAgICAgICAgICAgICAgICJmZXRj
aCgnL2xvYWRGYWlsJykiCisgICAgICAgICAgICAgICAgIn0pIgorICAgICAgICAgICAgICAgICI8
L3NjcmlwdD4iLCBzZXJ2ZXIxMjcwMDEucG9ydCgpXS5VVEY4U3RyaW5nKTsKKyAgICAgICAgfSBl
bHNlIGlmIChbcGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvbG9hZFN1Y2Nlc3MiXSkgeworICAgICAg
ICAgICAgbG9hZFN1Y2Nlc3MgPSB0cnVlOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAg
ICAgIH0gZWxzZSBpZiAoW3BhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2xvYWRGYWlsIl0pIHsKKyAg
ICAgICAgICAgIGxvYWRTdWNjZXNzID0gZmFsc2U7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsK
KyAgICAgICAgfQorICAgIH1dOworCisgICAgYXV0byBydW5UZXN0ID0gWyZdIHsKKyAgICAgICAg
bG9hZFN1Y2Nlc3MgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGRvbmUgPSBmYWxzZTsKKyAgICAg
ICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFT
dG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXTsKICAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICAgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJM
V2l0aFN0cmluZzpAInRlc3Q6Ly9ob3N0MS9tYWluLmh0bWwiXV1dOwogICAgICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwotICAgIH0KLSAgICBFWFBFQ1RfRkFMU0UobG9hZFN1
Y2Nlc3MpOwotICAgIEVYUEVDVF9UUlVFKGxvYWRGYWlsKTsKLSAgICBFWFBFQ1RfRVEoc2VydmVy
LnRvdGFsUmVxdWVzdHMoKSwgMXUpOworICAgIH07CisKKyAgICBydW5UZXN0KCk7CisgICAgRVhQ
RUNUX1RSVUUoKmxvYWRTdWNjZXNzKTsKKyAgICBFWFBFQ1RfRVEoc2VydmVyTG9jYWxob3N0LnRv
dGFsUmVxdWVzdHMoKSwgMXUpOworICAgIEVYUEVDVF9FUShzZXJ2ZXIxMjcwMDEudG90YWxSZXF1
ZXN0cygpLCAxdSk7CisgICAgCisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5fYWxsb3dlZE5ldHdv
cmtIb3N0cyA9IFtOU1NldCBzZXRdOworICAgIHJ1blRlc3QoKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
KmxvYWRTdWNjZXNzKTsKKyAgICBFWFBFQ1RfRVEoc2VydmVyTG9jYWxob3N0LnRvdGFsUmVxdWVz
dHMoKSwgMXUpOworICAgIEVYUEVDVF9FUShzZXJ2ZXIxMjcwMDEudG90YWxSZXF1ZXN0cygpLCAx
dSk7CisKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLl9hbGxvd2VkTmV0d29ya0hvc3RzID0gW05T
U2V0IHNldFdpdGhPYmplY3Q6QCIxMjcuMC4wLjEiXTsKKyAgICBydW5UZXN0KCk7CisgICAgRVhQ
RUNUX0ZBTFNFKCpsb2FkU3VjY2Vzcyk7CisgICAgRVhQRUNUX0VRKHNlcnZlckxvY2FsaG9zdC50
b3RhbFJlcXVlc3RzKCksIDF1KTsKKyAgICBFWFBFQ1RfRVEoc2VydmVyMTI3MDAxLnRvdGFsUmVx
dWVzdHMoKSwgMnUpOwogfQogCiBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIExvYWRzU3VicmVzb3Vy
Y2VzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAppbmRleCBjMjgwZTVkYWE5
OGVmNjYyMzI2ZjFiY2Y0ZmYyODNlNWZhMzkwMzUwLi5iOTI4NjJhNzYwNzM1ZTRjNTE4ZmZjOTk3
NzdiYzUxN2RjNjc2NzBjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hU
VFBTZXJ2ZXIuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaApA
QCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZW5kKFJldGFpblB0cjxkaXNwYXRj
aF9kYXRhX3Q+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiA9IG51bGxwdHIpIGNvbnN0
OwogICAgIHZvaWQgcmVjZWl2ZUJ5dGVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVp
bnQ4X3Q+JiYpPiYmKSBjb25zdDsKICAgICB2b2lkIHJlY2VpdmVIVFRQUmVxdWVzdChDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxjaGFyPiYmKT4mJiwgVmVjdG9yPGNoYXI+JiYgYnVmZmVy
ID0geyB9KSBjb25zdDsKKyAgICB2b2lkIHdlYlNvY2tldEhhbmRzaGFrZShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgPSB7IH0pOwogICAgIHZvaWQgdGVybWluYXRlKCk7CiAgICAgdm9pZCBj
YW5jZWwoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2Vy
dmVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCmluZGV4IDll
NDZjODY5N2ExYTAxZDk2ZGM3MTUzMmI2ZGUyM2YwZDE5YjlhZWEuLjZkM2U0YTUxMGVjZWNhNjg2
MWUyNGRhY2JjMjhkMWUyYzU2MGViNDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvSFRUUFNlcnZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBT
ZXJ2ZXIubW0KQEAgLTMwLDcgKzMwLDkgQEAKICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2lt
cG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CisjaW1wb3J0IDx3dGYvU0hBMS5oPgogI2ltcG9ydCA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVk
Lmg+CisjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zMjUsNiAr
MzI3LDM0IEBAIHZvaWQgQ29ubmVjdGlvbjo6c2VuZChSZXRhaW5QdHI8ZGlzcGF0Y2hfZGF0YV90
PiYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvCiAgICAgfSkuZ2V0KCkpOwogfQogCit2
b2lkIENvbm5lY3Rpb246OndlYlNvY2tldEhhbmRzaGFrZShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29ubmVjdGlvbkhhbmRsZXIpCit7CisgICAgcmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25u
ZWN0aW9uID0gQ29ubmVjdGlvbigqdGhpcyksIGNvbm5lY3Rpb25IYW5kbGVyID0gV1RGTW92ZShj
b25uZWN0aW9uSGFuZGxlcildIChWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSBtdXRhYmxlIHsKKwor
ICAgICAgICBhdXRvIHdlYlNvY2tldEFjY2VwdFZhbHVlID0gW10gKGNvbnN0IFZlY3RvcjxjaGFy
PiYgcmVxdWVzdCkgeworICAgICAgICAgICAgY29uc3RleHByIGF1dG8qIGtleUhlYWRlckZpZWxk
ID0gIlNlYy1XZWJTb2NrZXQtS2V5OiAiOworICAgICAgICAgICAgY29uc3QgY2hhcioga2V5QmVn
aW4gPSBzdHJuc3RyKHJlcXVlc3QuZGF0YSgpLCBrZXlIZWFkZXJGaWVsZCwgcmVxdWVzdC5zaXpl
KCkpICsgc3RybGVuKGtleUhlYWRlckZpZWxkKTsKKyAgICAgICAgICAgIEFTU0VSVChrZXlCZWdp
bik7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBrZXlFbmQgPSBzdHJuc3RyKGtleUJlZ2luLCAi
XHJcbiIsIHJlcXVlc3Quc2l6ZSgpICsgKGtleUJlZ2luIC0gcmVxdWVzdC5kYXRhKCkpKTsKKyAg
ICAgICAgICAgIEFTU0VSVChrZXlFbmQpOworCisgICAgICAgICAgICBjb25zdGV4cHIgYXV0byog
d2ViU29ja2V0S2V5R1VJRCA9ICIyNThFQUZBNS1FOTE0LTQ3REEtOTVDQS1DNUFCMERDODVCMTEi
OworICAgICAgICAgICAgU0hBMSBzaGExOworICAgICAgICAgICAgc2hhMS5hZGRCeXRlcyhyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihrZXlCZWdpbiksIGtleUVuZCAtIGtleUJlZ2lu
KTsKKyAgICAgICAgICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4od2ViU29ja2V0S2V5R1VJRCksIHN0cmxlbih3ZWJTb2NrZXRLZXlHVUlEKSk7CisgICAg
ICAgICAgICBTSEExOjpEaWdlc3QgaGFzaDsKKyAgICAgICAgICAgIHNoYTEuY29tcHV0ZUhhc2go
aGFzaCk7CisgICAgICAgICAgICByZXR1cm4gYmFzZTY0RW5jb2RlKGhhc2guZGF0YSgpLCBTSEEx
OjpoYXNoU2l6ZSk7CisgICAgICAgIH07CisKKyAgICAgICAgY29ubmVjdGlvbi5zZW5kKEhUVFBS
ZXNwb25zZSgxMDEsIHsKKyAgICAgICAgICAgIHsgIlVwZ3JhZGUiLCAid2Vic29ja2V0IiB9LAor
ICAgICAgICAgICAgeyAiQ29ubmVjdGlvbiIsICJVcGdyYWRlIiB9LAorICAgICAgICAgICAgeyAi
U2VjLVdlYlNvY2tldC1BY2NlcHQiLCB3ZWJTb2NrZXRBY2NlcHRWYWx1ZShyZXF1ZXN0KSB9Cisg
ICAgICAgIH0pLnNlcmlhbGl6ZShIVFRQUmVzcG9uc2U6OkluY2x1ZGVDb250ZW50TGVuZ3RoOjpO
byksIFdURk1vdmUoY29ubmVjdGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwogdm9pZCBDb25u
ZWN0aW9uOjp0ZXJtaW5hdGUoKQogewogICAgIG53X2Nvbm5lY3Rpb25fY2FuY2VsKG1fY29ubmVj
dGlvbi5nZXQoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427833</attachid>
            <date>2021-05-05 17:57:46 -0700</date>
            <delta_ts>2021-05-11 12:48:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225426-20210505175745.patch</filename>
            <type>text/plain</type>
            <size>32018</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDBhYzc1YzU1OTFjMWQz
MzU3NTZkNjMyZmFhMWM3MzAxZDQxNmY4Ny4uMmUyMjJkOGZjZjQxOTM1MjU2NzBiMjdkOGVkOGJk
NDUwYjZjMjA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTA1LTA1ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQ
SSB0byByZXN0cmljdCBuZXR3b3JraW5nIHRvIGEgc2V0IG9mIGhvc3RzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU0MjYKKyAgICAgICAgPHJkYXI6
Ly83NzU3MTUyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbiByMjU5MzkyIEkgYWRkZWQgU1BJIHRvIHR1cm4gbmV0d29yayBhY2Nlc3Mgb24gYW5k
IG9mZiwgYnV0IGEgY2xpZW50IG5lZWRzIGZpbmVyIGdyYWluZWQgY29udHJvbC4KKyAgICAgICAg
VGhpcyB1c2VzIHRoZSBzYW1lIGluZnJhc3RydWN0dXJlIHRvIGFkZCBhIHNldCBvZiBob3N0cyB0
byBhbGxvdy4gIFNldHRpbmcgaXQgdG8gbmlsICh0aGUgZGVmYXVsdCkgYWxsb3dzIGFsbCBob3N0
cywKKyAgICAgICAgYnV0IHNldHRpbmcgaXQgdG8gYW4gZW1wdHkgc2V0IGFsbG93cyBubyBuZXR3
b3JrIGFjY2Vzcy4gIFRoaXMgYWNjb21wbGlzaGVzIHRoZSBzYW1lIGFiaWxpdHkgYXMgdGhlIG9s
ZCBTUEksIHNvIEknbSBkZXByZWNhdGluZyBpdAorICAgICAgICB3aXRoIHRoaXMgYXMgYSByZXBs
YWNlbWVudC4gIFRoZSBuZXcgYWJpbGl0eSB0byBzcGVjaWZ5IGEgZmluaXRlIG51bWJlciBvZiBo
b3N0cyB0byBhbGxvdyBjcmVhdGVzIGEgbGltaXRlZCBXS1dlYlZpZXcuCisKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OnZhbGlkYXRlVVJMKToKKyAg
ICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWxsb3dzTG9hZEZy
b21VUkwgY29uc3QpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZTo6bG9hZHNGcm9tTmV0d29yayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9Q
YWdlQ29uZmlndXJhdGlvbi5oOgorCiAyMDIxLTA1LTA1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3Nv
QGFwcGxlLmNvbT4KIAogICAgICAgICBTYW1wbGVkIFBhZ2UgVG9wIENvbG9yOiB0YWtlIGFkZGl0
aW9uYWwgc25hcHNob3RzIGZ1cnRoZXIgZG93biB0aGUgcGFnZSB0byBzZWUgaWYgdGhlIHNhbXBs
ZWQgdG9wIGNvbG9yIGlzIG1vcmUgdGhhbiBqdXN0IGEgdGlueSBzdHJpcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAx
NjIwNzk3ZjEzYjAzY2VjODYyNGNiZGUzZjQ4ZWU2YTZlOWVhNzMzLi4zOGUzYjdjMWI5ODFhZThm
NDgzM2Y5MWVjNmQxOTU3NDc1YjE4ZTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIx
LTA1LTA1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgQWRkIFNQSSB0byByZXN0cmljdCBuZXR3b3JraW5nIHRvIGEgc2V0IG9mIGhvc3RzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU0MjYKKyAg
ICAgICAgPHJkYXI6Ly83NzU3MTUyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToK
KyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQ
YWdlQ29uZmlndXJhdGlvbjo6Y29weSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElQYWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6
YWxsb3dlZE5ldHdvcmtIb3N0cyBjb25zdCk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0
aW9uOjpzZXRBbGxvd2VkTmV0d29ya0hvc3RzKToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3Vy
YXRpb246OmxvYWRzRnJvbU5ldHdvcmsgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpQ
YWdlQ29uZmlndXJhdGlvbjo6c2V0TG9hZHNGcm9tTmV0d29yayk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAg
ICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9zZXRMb2Fkc0Zyb21OZXR3b3JrOl0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9sb2Fkc0Zyb21OZXR3b3JrXSk6CisgICAg
ICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3NldEFsbG93ZWROZXR3b3JrSG9zdHM6XSk6
CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX2FsbG93ZWROZXR3b3JrSG9zdHNd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Q
cml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fbGFzdE5h
dmlnYXRpb25XYXNBcHBCb3VuZCk6CisKIDIwMjEtMDUtMDUgIERldmluIFJvdXNzbyAgPGRyb3Vz
c29AYXBwbGUuY29tPgogCiAgICAgICAgIFNhbXBsZWQgUGFnZSBUb3AgQ29sb3I6IHRha2UgYWRk
aXRpb25hbCBzbmFwc2hvdHMgZnVydGhlciBkb3duIHRoZSBwYWdlIHRvIHNlZSBpZiB0aGUgc2Ft
cGxlZCB0b3AgY29sb3IgaXMgbW9yZSB0aGFuIGp1c3QgYSB0aW55IHN0cmlwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA0Y2NhMDYyYzA1MDdkN2FmYzBlMDk5ZTQzMDgwNGU4
YjkzMjU1ZWQ5Li4xNjlkOWM5ZGUzMzBhMTY0YTQ3NDdhNzU5MTgxYzg4YWQzOWJhYmNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9U
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgT3B0aW9uYWw8
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlZhbGlkYXRlZFVSTD4gVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OnYKIHsKICAgICBWYWxpZGF0ZWRVUkwgdmFsaWRhdGVkVVJMIHsgcmVxdWVz
dGVkVVJMLCB0cnVlIH07CiAgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCkpIHsK
LSAgICAgICAgaWYgKCFwYWdlLT5sb2Fkc0Zyb21OZXR3b3JrKCkpCisgICAgICAgIGlmICghcGFn
ZS0+YWxsb3dzTG9hZEZyb21VUkwocmVxdWVzdGVkVVJMKSkKICAgICAgICAgICAgIHJldHVybiB7
IH07CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICAgICAgaWYgKGF1dG8qIGRv
Y3VtZW50TG9hZGVyID0gZG9jdW1lbnQubG9hZGVyKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCmluZGV4IDczZTdhYzg4OTE4YTczZjk0MDZl
NjlkMzU4NTA2MGYzODgxNTdhNjIuLmNjMWJjZWUyNmMzYTQxZjVkODljYzhlYmI0MmY0NDRmNzAz
MzMyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3Rp
Zmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVy
LmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3Bh
dGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnCiAgICAgICAg
IGlmICghcGFnZS0+bG9hZHNTdWJyZXNvdXJjZXMoKSkgewogICAgICAgICAgICAgaWYgKCFtX2Zy
YW1lLmlzTWFpbkZyYW1lKCkgfHwgKG1faW5pdGlhbFJlcXVlc3RJZGVudGlmaWVyICYmICptX2lu
aXRpYWxSZXF1ZXN0SWRlbnRpZmllciAhPSBpZGVudGlmaWVyKSkKICAgICAgICAgICAgICAgICBy
ZXF1ZXN0ID0geyB9OwotICAgICAgICB9IGVsc2UgaWYgKCFwYWdlLT5sb2Fkc0Zyb21OZXR3b3Jr
KCkgJiYgcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpCisgICAgICAgIH0g
ZWxzZSBpZiAoIXBhZ2UtPmFsbG93c0xvYWRGcm9tVVJMKHJlcXVlc3QudXJsKCkpKQogICAgICAg
ICAgICAgcmVxdWVzdCA9IHsgfTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA1
MzRhMjZlNDAxMWYzYTgxMTYyMzhlMGMxMmYxZDRhYWQyOTg1MjViLi5jNGU0Yzc3YzVhMTJkNDU5
M2JkZWVkYzJmMzM1ZWVhZTVkYWI5N2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTMwNSw4ICsz
MDUsOCBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24p
CiAgICAgLCBtX2RldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIoV1RGTW92ZShwYWdlQ29u
ZmlndXJhdGlvbi5kZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyKSkKICNlbmRpZgogICAg
ICwgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5jb3Jz
RGlzYWJsaW5nUGF0dGVybnMpKQorICAgICwgbV9hbGxvd2VkTmV0d29ya0hvc3RzKFdURk1vdmUo
cGFnZUNvbmZpZ3VyYXRpb24uYWxsb3dlZE5ldHdvcmtIb3N0cykpCiAgICAgLCBtX2xvYWRzU3Vi
cmVzb3VyY2VzKHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzU3VicmVzb3VyY2VzKQotICAgICwgbV9s
b2Fkc0Zyb21OZXR3b3JrKHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzRnJvbU5ldHdvcmspCiAgICAg
LCBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKHBhZ2VDb25maWd1cmF0aW9u
LnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQogICAgICwgbV9odHRwc1VwZ3Jh
ZGVFbmFibGVkKHBhZ2VDb25maWd1cmF0aW9uLmh0dHBzVXBncmFkZUVuYWJsZWQpCiB7CkBAIC0z
Mjk5LDYgKzMyOTksMTUgQEAgdm9pZCBQYWdlOjpmb3JFYWNoTWVkaWFFbGVtZW50KGNvbnN0IEZ1
bmN0aW9uPHZvaWQoSFRNTE1lZGlhRWxlbWVudCYpPiYgZnVuY3RvcikKICNlbmRpZgogfQogCiti
b29sIFBhZ2U6OmFsbG93c0xvYWRGcm9tVVJMKGNvbnN0IFVSTCYgdXJsKSBjb25zdAoreworICAg
IGlmICghbV9hbGxvd2VkTmV0d29ya0hvc3RzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBp
ZiAoIXVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgIXVybC5wcm90b2NvbElzKCJ3cyIp
ICYmICF1cmwucHJvdG9jb2xJcygid3NzIikpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJl
dHVybiBtX2FsbG93ZWROZXR3b3JrSG9zdHMtPmNvbnRhaW5zKHVybC5ob3N0KCkudG9TdHJpbmdX
aXRob3V0Q29weWluZygpKTsKK30KKwogdm9pZCBQYWdlOjphcHBsaWNhdGlvbldpbGxSZXNpZ25B
Y3RpdmUoKQogewogI2lmIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggNmRkMDdlMWJh
OTFmMzE0ZGE2MGUyYWYzYzc0MDljYTUzODJlZGU1MS4uODBjNjIzOWJhZWZkZGRiMTI4YzgyMTY1
NDA1NDY5ZDZiOWRiZGM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTc5NCw3ICs3OTQsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc1V0aWxpdHlQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pc1V0aWxpdHlQ
YWdlOyB9CiAKICAgICBib29sIGxvYWRzU3VicmVzb3VyY2VzKCkgY29uc3QgeyByZXR1cm4gbV9s
b2Fkc1N1YnJlc291cmNlczsgfQotICAgIGJvb2wgbG9hZHNGcm9tTmV0d29yaygpIGNvbnN0IHsg
cmV0dXJuIG1fbG9hZHNGcm9tTmV0d29yazsgfQorICAgIGJvb2wgYWxsb3dzTG9hZEZyb21VUkwo
Y29uc3QgVVJMJikgY29uc3Q7CiAgICAgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoKSBjb25zdCB7IHJldHVybiBt
X3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOyB9CiAKICAgICBib29sIGlzTG93
UG93ZXJNb2RlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhyb3R0bGluZ1JlYXNvbnMuY29u
dGFpbnMoVGhyb3R0bGluZ1JlYXNvbjo6TG93UG93ZXJNb2RlKTsgfQpAQCAtMTE0Miw5ICsxMTQy
LDkgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxVc2VyQ29udGVudFVSTFBhdHRlcm4+IG1fY29y
c0Rpc2FibGluZ1BhdHRlcm5zOwogICAgIFZlY3RvcjxVc2VyU3R5bGVTaGVldD4gbV91c2VyU3R5
bGVTaGVldHNQZW5kaW5nSW5qZWN0aW9uOworICAgIE9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nPj4g
bV9hbGxvd2VkTmV0d29ya0hvc3RzOwogICAgIGJvb2wgbV9pc1Rha2luZ1NuYXBzaG90c0ZvckFw
cGxpY2F0aW9uU3VzcGVuc2lvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2xvYWRzU3VicmVzb3Vy
Y2VzIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9sb2Fkc0Zyb21OZXR3b3JrIHsgdHJ1ZSB9OwogICAg
IGJvb2wgbV9jYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSB7IHRydWUgfTsKICAgICBTaG91bGRSZWxh
eFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nIHsgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vIH07CiAgICAg
TG9hZFNjaGVkdWxpbmdNb2RlIG1fbG9hZFNjaGVkdWxpbmdNb2RlIHsgTG9hZFNjaGVkdWxpbmdN
b2RlOjpEaXJlY3QgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZp
Z3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAppbmRl
eCA5MjI3ZmNiYjFmYzRhNTIyZTA1YWJmNGYwNDBmMmRmNjczYTE3OWJlLi5hMTRmMjJkYWZiYTk3
MDYzMDkxZjMxMmM3OWI3ZWQ4MGY3ZmMyOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29u
ZmlndXJhdGlvbi5oCkBAIC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6
IFRoZXNlIHNob3VsZCBiZSBhbGwgYmUgU2V0dGluZ3MuCiAgICAgYm9vbCBsb2Fkc1N1YnJlc291
cmNlcyB7IHRydWUgfTsKLSAgICBib29sIGxvYWRzRnJvbU5ldHdvcmsgeyB0cnVlIH07CisgICAg
T3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+PiBhbGxvd2VkTmV0d29ya0hvc3RzOwogICAgIGJvb2wg
dXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24geyB0cnVlIH07CiAgICAgU2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcgeyBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6Tm8gfTsK
ICAgICBib29sIGh0dHBzVXBncmFkZUVuYWJsZWQgeyB0cnVlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGMyY2E3YmIz
NTcxZTQ0OGI5NDFhNWYwMDk2NGJkYzVmZWJiNTEzNTYuLmFiMjViYzk1MWY1YTg4MDY3NzMxNDE1
NTA4YWM0OGQ5OWJiODY4MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ICAgIGVuY29kZXIgPDwgb3ZlcnJpZGRlbk1lZGlhVHlwZTsKICAgICBlbmNvZGVyIDw8IGNvcnNE
aXNhYmxpbmdQYXR0ZXJuczsKICAgICBlbmNvZGVyIDw8IGxvYWRzU3VicmVzb3VyY2VzOwotICAg
IGVuY29kZXIgPDwgbG9hZHNGcm9tTmV0d29yazsKKyAgICBlbmNvZGVyIDw8IGFsbG93ZWROZXR3
b3JrSG9zdHM7CiAgICAgZW5jb2RlciA8PCB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlm
aWNhdGlvbjsKICAgICBlbmNvZGVyIDw8IGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5h
YmxlZDsKICAgICBlbmNvZGVyIDw8IHByb2Nlc3NEaXNwbGF5TmFtZTsKQEAgLTUwOSwxMSArNTA5
LDExIEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAgICAgcGFyYW1ldGVycy5sb2Fkc1N1YnJlc291cmNlcyA9ICpsb2Fkc1N1YnJlc291cmNl
czsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGxvYWRzRnJvbU5ldHdvcms7Ci0gICAgZGVjb2RlciA+
PiBsb2Fkc0Zyb21OZXR3b3JrOwotICAgIGlmICghbG9hZHNGcm9tTmV0d29yaykKKyAgICBPcHRp
b25hbDxPcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+PiBhbGxvd2VkTmV0d29ya0hvc3RzOworICAg
IGRlY29kZXIgPj4gYWxsb3dlZE5ldHdvcmtIb3N0czsKKyAgICBpZiAoIWFsbG93ZWROZXR3b3Jr
SG9zdHMpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgcGFyYW1ldGVycy5sb2Fk
c0Zyb21OZXR3b3JrID0gKmxvYWRzRnJvbU5ldHdvcms7CisgICAgcGFyYW1ldGVycy5hbGxvd2Vk
TmV0d29ya0hvc3RzID0gKmFsbG93ZWROZXR3b3JrSG9zdHM7CiAKICAgICBPcHRpb25hbDxib29s
PiB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsKICAgICBkZWNvZGVyID4+
IHVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGVjN2I1ZjM4NDRj
NWViYjMxYjdjMTlmNWI2MmQ4ZmQ2MjAyY2E0OWIuLmZmMTRmNGE1OGU0Y2JkN2U2N2NlMTExMjc4
NzNlNmQ1ZWU2Y2VjOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyB7CiAgICAgVmVjdG9yPFN0cmluZz4gY29yc0Rpc2FibGluZ1BhdHRlcm5z
OwogICAgIGJvb2wgdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24geyB0cnVl
IH07CiAgICAgYm9vbCBsb2Fkc1N1YnJlc291cmNlcyB7IHRydWUgfTsKLSAgICBib29sIGxvYWRz
RnJvbU5ldHdvcmsgeyB0cnVlIH07CisgICAgT3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+PiBhbGxv
d2VkTmV0d29ya0hvc3RzOwogCiAgICAgYm9vbCBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVj
a0VuYWJsZWQgeyB0cnVlIH07CiAgICAgU3RyaW5nIHByb2Nlc3NEaXNwbGF5TmFtZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3Bw
CmluZGV4IGEzMzUyZTZlYjljNzhmNDc2ODE5MjBiMWI5YzZiODUxZWRjMjc2ODUuLjdlZjA0YWU4
OTJkNTQ0YTM5NzU5MDFiMmIwOTQwYzEwZTM3ZTEyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcApAQCAtODcsNyArODcs
NyBAQCBSZWY8UGFnZUNvbmZpZ3VyYXRpb24+IFBhZ2VDb25maWd1cmF0aW9uOjpjb3B5KCkgY29u
c3QKIAogICAgIGNvcHktPm1fcHJvY2Vzc0Rpc3BsYXlOYW1lID0gdGhpcy0+bV9wcm9jZXNzRGlz
cGxheU5hbWU7CiAgICAgY29weS0+bV9sb2Fkc1N1YnJlc291cmNlcyA9IHRoaXMtPm1fbG9hZHNT
dWJyZXNvdXJjZXM7Ci0gICAgY29weS0+bV9sb2Fkc0Zyb21OZXR3b3JrID0gdGhpcy0+bV9sb2Fk
c0Zyb21OZXR3b3JrOworICAgIGNvcHktPm1fYWxsb3dlZE5ldHdvcmtIb3N0cyA9IHRoaXMtPm1f
YWxsb3dlZE5ldHdvcmtIb3N0czsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAg
Y29weS0+bV9pZ25vcmVzQXBwQm91bmREb21haW5zID0gdGhpcy0+bV9pZ25vcmVzQXBwQm91bmRE
b21haW5zOwogICAgIGNvcHktPm1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9
IHRoaXMtPm1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWluczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKaW5kZXggNTY5
MmQ2MjkxNmNjNTNiYzZlZDIzOWQ5NjI1YWZjZjcwNjkyMWY2OC4uYTk5NTdhYTc1YzY3ODdkZGNm
YTA1MmExMjNkOWJhYzRiYzZkNzNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMTQ2LDggKzE0Nyw4
IEBAIHB1YmxpYzoKICAgICBib29sIGxvYWRzU3VicmVzb3VyY2VzKCkgY29uc3QgeyByZXR1cm4g
bV9sb2Fkc1N1YnJlc291cmNlczsgfQogICAgIHZvaWQgc2V0TG9hZHNTdWJyZXNvdXJjZXMoYm9v
bCBsb2FkcykgeyBtX2xvYWRzU3VicmVzb3VyY2VzID0gbG9hZHM7IH0KIAotICAgIGJvb2wgbG9h
ZHNGcm9tTmV0d29yaygpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZHNGcm9tTmV0d29yazsgfQotICAg
IHZvaWQgc2V0TG9hZHNGcm9tTmV0d29yayhib29sIGxvYWRzKSB7IG1fbG9hZHNGcm9tTmV0d29y
ayA9IGxvYWRzOyB9CisgICAgY29uc3QgT3B0aW9uYWw8SGFzaFNldDxXVEY6OlN0cmluZz4+JiBh
bGxvd2VkTmV0d29ya0hvc3RzKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd2VkTmV0d29ya0hvc3Rz
OyB9CisgICAgdm9pZCBzZXRBbGxvd2VkTmV0d29ya0hvc3RzKE9wdGlvbmFsPEhhc2hTZXQ8V1RG
OjpTdHJpbmc+PiYmIGhvc3RzKSB7IG1fYWxsb3dlZE5ldHdvcmtIb3N0cyA9IFdURk1vdmUoaG9z
dHMpOyB9CiAKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgYm9vbCBpZ25vcmVz
QXBwQm91bmREb21haW5zKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVzQXBwQm91bmREb21haW5z
OyB9CkBAIC0yMDUsNyArMjA2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkIHsgdHJ1ZSB9OwogICAgIFdURjo6U3RyaW5nIG1fcHJv
Y2Vzc0Rpc3BsYXlOYW1lOwogICAgIGJvb2wgbV9sb2Fkc1N1YnJlc291cmNlcyB7IHRydWUgfTsK
LSAgICBib29sIG1fbG9hZHNGcm9tTmV0d29yayB7IHRydWUgfTsKKyAgICBPcHRpb25hbDxIYXNo
U2V0PFdURjo6U3RyaW5nPj4gbV9hbGxvd2VkTmV0d29ya0hvc3RzOwogICAgIAogI2lmIEVOQUJM
RShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBib29sIG1faWdub3Jlc0FwcEJvdW5kRG9tYWlucyB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCmluZGV4IDQwNjI4ZGFmNDExMTlmMTc0Yjlk
Mzg5MzE2MDMwYzIxYzE2MDY5M2YuLmNlNWI3YmQ1YjAxYWJjODIxMDk1ZDA1NTk1YWFlOTY5YjY4
Y2Y1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCkBAIC05NTIsMTIgKzk1MiwzMyBAQCBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAodm9pZClfc2V0TG9hZHNGcm9tTmV0
d29yazooQk9PTClsb2FkcwogewotICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0TG9hZHNGcm9t
TmV0d29yayhsb2Fkcyk7CisgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRBbGxvd2VkTmV0d29y
a0hvc3RzKGxvYWRzID8gV1RGOjpudWxsb3B0IDogT3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+PiB7
IEhhc2hTZXQ8U3RyaW5nPiB7IH0gfSk7CiB9CiAKIC0gKEJPT0wpX2xvYWRzRnJvbU5ldHdvcmsK
IHsKLSAgICByZXR1cm4gX3BhZ2VDb25maWd1cmF0aW9uLT5sb2Fkc0Zyb21OZXR3b3JrKCk7Cisg
ICAgcmV0dXJuIF9wYWdlQ29uZmlndXJhdGlvbi0+YWxsb3dlZE5ldHdvcmtIb3N0cygpID09IFdU
Rjo6bnVsbG9wdDsKK30KKworLSAodm9pZClfc2V0QWxsb3dlZE5ldHdvcmtIb3N0czooTlNTZXQ8
TlNTdHJpbmcgKj4gKilob3N0cworeworICAgIGlmICghaG9zdHMpCisgICAgICAgIHJldHVybiBf
cGFnZUNvbmZpZ3VyYXRpb24tPnNldEFsbG93ZWROZXR3b3JrSG9zdHMoV1RGOjpudWxsb3B0KTsK
KyAgICBIYXNoU2V0PFN0cmluZz4gc2V0OworICAgIGZvciAoTlNTdHJpbmcgKmhvc3QgaW4gaG9z
dHMpCisgICAgICAgIHNldC5hZGQoaG9zdCk7CisgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRB
bGxvd2VkTmV0d29ya0hvc3RzKFdURk1vdmUoc2V0KSk7Cit9CisKKy0gKE5TU2V0PE5TU3RyaW5n
ICo+ICopX2FsbG93ZWROZXR3b3JrSG9zdHMKK3sKKyAgICBjb25zdCBhdXRvJiBob3N0cyA9IF9w
YWdlQ29uZmlndXJhdGlvbi0+YWxsb3dlZE5ldHdvcmtIb3N0cygpOworICAgIGlmICghaG9zdHMp
CisgICAgICAgIHJldHVybiBuaWw7CisgICAgTlNNdXRhYmxlU2V0PE5TU3RyaW5nICo+ICpzZXQg
PSBbTlNNdXRhYmxlU2V0IHNldFdpdGhDYXBhY2l0eTpob3N0cy0+c2l6ZSgpXTsKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIGhvc3QgOiAqaG9zdHMpCisgICAgICAgIFtzZXQgYWRkT2JqZWN0Omhvc3Rd
OworICAgIHJldHVybiBzZXQ7CiB9CiAKIC0gKHZvaWQpX3NldExvYWRzU3VicmVzb3VyY2VzOihC
T09MKWxvYWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCmluZGV4IDkwOWM5OTc1
ZTA3MzI1MzNlOTBkODFiYTQzZTQ2OWE3OWFjN2I3YzIuLjI0MjVlYzZmZmNhYzBiYzU2ZDY0Yjhk
Mzc5NTI5NDMxZjU5YTAzNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCkBA
IC03OSw3ICs3OSw4IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBfV0tEcmFnTGlmdERl
bGF5KSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXREZWZlcnJhYmxlVXNlclNj
cmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb246KSBCT09MIF9kZWZlcnJhYmxlVXNlclNj
cmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
MS4wKSwgaW9zKDE0LjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldENyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDopIEJPT0wgX2Nyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbENoZWNrRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBpb3MoMTQu
MCkpOwogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRMb2Fkc0Zyb21OZXR3b3Jr
OikgQk9PTCBfbG9hZHNGcm9tTmV0d29yayBXS19BUElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBp
b3MoMTQuMCkpOworQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0TG9hZHNGcm9tTmV0
d29yazopIEJPT0wgX2xvYWRzRnJvbU5ldHdvcmsgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBM
QUNFTUVOVCgiX2FsbG93ZWROZXR3b3JrSG9zdHMiLCBtYWNvcygxMS4wLCBXS19NQUNfVEJBKSwg
aW9zKDE0LjAsIFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0
ZXI9X3NldEFsbG93ZWROZXR3b3JrSG9zdHM6KSBOU1NldDxOU1N0cmluZyAqPiAqX2FsbG93ZWRO
ZXR3b3JrSG9zdHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldExvYWRzU3VicmVzb3Vy
Y2VzOikgQk9PTCBfbG9hZHNTdWJyZXNvdXJjZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4w
KSwgaW9zKDE0LjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldElnbm9yZXNB
cHBCb3VuZERvbWFpbnM6KSBCT09MIF9pZ25vcmVzQXBwQm91bmREb21haW5zIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IGU4MmRjMTg2ZmQ2ZTkzM2QyNDkwMTdhNjBlZjJmYjgxNWFi
Y2M2YTIuLmM1OTg4M2FlMWU1NWJiMmI5YTEyY2VhZGY3OTRlNTQ0YjFhZjM0ZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODAwNCw3ICs4MDA0LDcgQEAg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVy
cyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICBwYXJhbWV0ZXJzLm92ZXJyaWRkZW5NZWRpYVR5
cGUgPSBtX292ZXJyaWRkZW5NZWRpYVR5cGU7CiAgICAgcGFyYW1ldGVycy5jb3JzRGlzYWJsaW5n
UGF0dGVybnMgPSBjb3JzRGlzYWJsaW5nUGF0dGVybnMoKTsKICAgICBwYXJhbWV0ZXJzLnVzZXJT
Y3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uID0gbV9jb25maWd1cmF0aW9uLT51c2Vy
U2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbigpOwotICAgIHBhcmFtZXRlcnMubG9h
ZHNGcm9tTmV0d29yayA9IG1fY29uZmlndXJhdGlvbi0+bG9hZHNGcm9tTmV0d29yaygpOworICAg
IHBhcmFtZXRlcnMuYWxsb3dlZE5ldHdvcmtIb3N0cyA9IG1fY29uZmlndXJhdGlvbi0+YWxsb3dl
ZE5ldHdvcmtIb3N0cygpOwogICAgIHBhcmFtZXRlcnMubG9hZHNTdWJyZXNvdXJjZXMgPSBtX2Nv
bmZpZ3VyYXRpb24tPmxvYWRzU3VicmVzb3VyY2VzKCk7CiAgICAgcGFyYW1ldGVycy5jcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgPSBtX2NvbmZpZ3VyYXRpb24tPmNyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCgpOwogICAgIHBhcmFtZXRlcnMuaGFzUmVzb3Vy
Y2VMb2FkQ2xpZW50ID0gISFtX3Jlc291cmNlTG9hZENsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNmU0MTZmNDMxNjE0NzlkZTk1NTYw
NTJkNTE4NjQyMGI0OTFjMTRiOS4uZDQ0NmJjZDRkZTkwZjg3NzcwYmNiMzViZGY2NzI4ZDJiMzFk
MWI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTYwNCw3ICs2MDQsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAKICAgICBwYWdlQ29u
ZmlndXJhdGlvbi51c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiA9IHBhcmFt
ZXRlcnMudXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb247CiAgICAgcGFnZUNv
bmZpZ3VyYXRpb24ubG9hZHNTdWJyZXNvdXJjZXMgPSBwYXJhbWV0ZXJzLmxvYWRzU3VicmVzb3Vy
Y2VzOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzRnJvbU5ldHdvcmsgPSBwYXJhbWV0ZXJz
LmxvYWRzRnJvbU5ldHdvcms7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uYWxsb3dlZE5ldHdvcmtI
b3N0cyA9IHBhcmFtZXRlcnMuYWxsb3dlZE5ldHdvcmtIb3N0czsKICAgICBwYWdlQ29uZmlndXJh
dGlvbi5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyA9IHBhcmFtZXRlcnMuc2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24u
aHR0cHNVcGdyYWRlRW5hYmxlZCA9IHBhcmFtZXRlcnMuaHR0cHNVcGdyYWRlRW5hYmxlZDsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDViMDZj
MmU1YjYyNmIxMzEwYjk0N2RkZjRjZjE3Yzc0OTU2M2M4M2MuLjNhYzk4Y2VhNWY4NDMzNmI4YTJi
Mzg0MWY4ZDRjZTkzMjFkM2M0MmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMS0wNS0wNSAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBTUEkgdG8gcmVz
dHJpY3QgbmV0d29ya2luZyB0byBhIHNldCBvZiBob3N0cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NDI2CisgICAgICAgIDxyZGFyOi8vNzc1NzE1
MjE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlv
bi5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAod2ViU29ja2V0QWNjZXB0VmFsdWUpOiBE
ZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxT
Y2hlbWVIYW5kbGVyLTEubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2Vy
dmVyLmg6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uOjp3ZWJTb2NrZXRIYW5k
c2hha2UpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb246OndlYlNvY2tldEhhbmRzaGFrZSk6CisK
IDIwMjEtMDUtMDUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAg
IFNhbXBsZWQgUGFnZSBUb3AgQ29sb3I6IHRha2UgYWRkaXRpb25hbCBzbmFwc2hvdHMgZnVydGhl
ciBkb3duIHRoZSBwYWdlIHRvIHNlZSBpZiB0aGUgc2FtcGxlZCB0b3AgY29sb3IgaXMgbW9yZSB0
aGFuIGp1c3QgYSB0aW55IHN0cmlwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0NvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbi5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9u
Lm1tCmluZGV4IDc2Zjg1OGIwZTQwMzBiNzM2ZjhkMGZmNDRjODYwN2RkNmFjYTQ2MTYuLjg2Mjcy
Zjk3YzlkYTRlMDNmY2U3ZDI0ZmY2MzcxZTVjYzZmOWJkYzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9u
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1
bGVMaXN0Tm90aWZpY2F0aW9uLm1tCkBAIC00MiwxMCArNDIsOCBAQAogI2ltcG9ydCA8V2ViS2l0
L19XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0jaW1w
b3J0IDx3dGYvU0hBMS5oPgogI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL2NvY29h
L1ZlY3RvckNvY29hLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBzdGF0aWMgYm9vbCByZWNlaXZlZE5vdGlmaWNhdGlvbjsK
QEAgLTE4MSwzNCArMTc5LDExIEBAIFRFU1QoQ29udGVudFJ1bGVMaXN0LCBQZXJmb3JtZWRBY3Rp
b25Gb3JVUkwpCiAgICAgRVhQRUNUX1RSVUUoZXhwZWN0ZWROb3RpZmljYXRpb25zID09IG5vdGlm
aWNhdGlvbkxpc3QpOwogfQogCi1zdGF0aWMgU3RyaW5nIHdlYlNvY2tldEFjY2VwdFZhbHVlKGNv
bnN0IFZlY3RvcjxjaGFyPiYgcmVxdWVzdCkKLXsKLSAgICBjb25zdGV4cHIgYXV0byoga2V5SGVh
ZGVyRmllbGQgPSAiU2VjLVdlYlNvY2tldC1LZXk6ICI7Ci0gICAgY29uc3QgY2hhcioga2V5QmVn
aW4gPSBzdHJuc3RyKHJlcXVlc3QuZGF0YSgpLCBrZXlIZWFkZXJGaWVsZCwgcmVxdWVzdC5zaXpl
KCkpICsgc3RybGVuKGtleUhlYWRlckZpZWxkKTsKLSAgICBFWFBFQ1RfTk9UX05VTEwoa2V5QmVn
aW4pOwotICAgIGNvbnN0IGNoYXIqIGtleUVuZCA9IHN0cm5zdHIoa2V5QmVnaW4sICJcclxuIiwg
cmVxdWVzdC5zaXplKCkgKyAoa2V5QmVnaW4gLSByZXF1ZXN0LmRhdGEoKSkpOwotICAgIEVYUEVD
VF9OT1RfTlVMTChrZXlFbmQpOwotCi0gICAgY29uc3RleHByIGF1dG8qIHdlYlNvY2tldEtleUdV
SUQgPSAiMjU4RUFGQTUtRTkxNC00N0RBLTk1Q0EtQzVBQjBEQzg1QjExIjsKLSAgICBTSEExIHNo
YTE7Ci0gICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihr
ZXlCZWdpbiksIGtleUVuZCAtIGtleUJlZ2luKTsKLSAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHdlYlNvY2tldEtleUdVSUQpLCBzdHJsZW4od2ViU29j
a2V0S2V5R1VJRCkpOwotICAgIFNIQTE6OkRpZ2VzdCBoYXNoOwotICAgIHNoYTEuY29tcHV0ZUhh
c2goaGFzaCk7Ci0gICAgcmV0dXJuIGJhc2U2NEVuY29kZShoYXNoLmRhdGEoKSwgU0hBMTo6aGFz
aFNpemUpOwotfQotCiBURVNUKENvbnRlbnRSdWxlTGlzdCwgUmVzb3VyY2VUeXBlcykKIHsKICAg
ICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKICAgICBIVFRQU2VydmVyIHdlYlNvY2tl
dFNlcnZlcihbXShDb25uZWN0aW9uIGNvbm5lY3Rpb24pIHsKLSAgICAgICAgY29ubmVjdGlvbi5y
ZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKLSAgICAgICAg
ICAgIGNvbm5lY3Rpb24uc2VuZChIVFRQUmVzcG9uc2UoMTAxLCB7Ci0gICAgICAgICAgICAgICAg
eyAiVXBncmFkZSIsICJ3ZWJzb2NrZXQiIH0sCi0gICAgICAgICAgICAgICAgeyAiQ29ubmVjdGlv
biIsICJVcGdyYWRlIiB9LAotICAgICAgICAgICAgICAgIHsgIlNlYy1XZWJTb2NrZXQtQWNjZXB0
Iiwgd2ViU29ja2V0QWNjZXB0VmFsdWUocmVxdWVzdCkgfQotICAgICAgICAgICAgfSkuc2VyaWFs
aXplKEhUVFBSZXNwb25zZTo6SW5jbHVkZUNvbnRlbnRMZW5ndGg6Ok5vKSk7Ci0gICAgICAgIH0p
OworICAgICAgICBjb25uZWN0aW9uLndlYlNvY2tldEhhbmRzaGFrZSgpOwogICAgIH0pOwogICAg
IGF1dG8gc2VydmVyUG9ydCA9IHdlYlNvY2tldFNlcnZlci5wb3J0KCk7CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVy
LTEubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1l
SGFuZGxlci0xLm1tCmluZGV4IDdhYTRjOWQ5NzU4ZDY4ZDM4NmYzYTA5MjRjZTAyNmIzODZkZTJh
YzkuLmNkNzNjMWIwYTQyMTdiMTc5MTMzMjExMTk1NTZlNDY0MDdmZjgyYTAgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVy
LTEubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNj
aGVtZUhhbmRsZXItMS5tbQpAQCAtNDgsNiArNDgsNyBAQAogI2ltcG9ydCA8d3RmL1RocmVhZGlu
Zy5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+
CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KICNpbXBvcnQg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CkBAIC0xMTAwLDEyICsxMTAxLDE3IEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgRGlzYWJsZUNP
UlNDYW52YXMpCiAKIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgTG9hZHNGcm9tTmV0d29yaykKIHsK
LSAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7CisgICAgdXNpbmcgbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEk7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoewogICAgICAgICB7ICIv
IiwgeyB7eyAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgIioiIH19LCAidGVzdCBjb250
ZW50IiB9IH0KICAgICB9KTsKIAotICAgIGJvb2wgbG9hZFN1Y2Nlc3MgPSBmYWxzZTsKLSAgICBi
b29sIGxvYWRGYWlsID0gZmFsc2U7CisgICAgSFRUUFNlcnZlciB3ZWJTb2NrZXRTZXJ2ZXIoW10o
Q29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CisgICAgICAgIGNvbm5lY3Rpb24ud2ViU29ja2V0SGFu
ZHNoYWtlKCk7CisgICAgfSk7CisKKyAgICBPcHRpb25hbDxib29sPiBsb2FkU3VjY2VzczsKKyAg
ICBPcHRpb25hbDxib29sPiB3ZWJTb2NrZXRTdWNjZXNzOwogICAgIGJvb2wgZG9uZSA9IGZhbHNl
OwogCiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbVGVzdFVSTFNjaGVtZUhhbmRsZXIgbmV3
XSk7CkBAIC0xMTE0LDUwICsxMTIwLDEzOSBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIExvYWRz
RnJvbU5ldHdvcmspCiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5k
bGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInRlc3QiXTsKIAogICAgIFtoYW5kbGVyIHNldFN0YXJ0
VVJMU2NoZW1lVGFza0hhbmRsZXI6WyZdKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+
IHRhc2spIHsKLSAgICAgICAgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3Ry
aW5nOkAiL21haW4uaHRtbCJdKSB7Ci0gICAgICAgICAgICBOU0RhdGEgKmRhdGEgPSBbW05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8c2NyaXB0PiIKLSAgICAgICAgICAgICAgICAiZmV0Y2go
J2h0dHA6Ly8xMjcuMC4wLjE6JWQvJykudGhlbigoKT0+eyIKLSAgICAgICAgICAgICAgICAgICAg
ImZldGNoKCcvbG9hZFN1Y2Nlc3MnKSIKLSAgICAgICAgICAgICAgICAifSkuY2F0Y2goKCk9Pnsi
CisgICAgICAgIE5TU3RyaW5nICpwYXRoID0gdGFzay5yZXF1ZXN0LlVSTC5wYXRoOworICAgICAg
ICBpZiAoW3BhdGggaXNFcXVhbFRvU3RyaW5nOkAiL21haW4uaHRtbCJdKSB7CisgICAgICAgICAg
ICByZXNwb25kKHRhc2ssIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPHNjcmlwdD4iCisg
ICAgICAgICAgICAgICAgImZ1bmN0aW9uIGNoZWNrV2ViU29ja2V0cygpIHsiCiAgICAgICAgICAg
ICAgICAgICAgICJ2YXIgd3MgPSBuZXcgV2ViU29ja2V0KCd3czovLzEyNy4wLjAuMTolZCcpOyIK
LSAgICAgICAgICAgICAgICAgICAgIndzLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsgZmV0Y2goJy9s
b2FkRmFpbCcpIH07IgorICAgICAgICAgICAgICAgICAgICAid3Mub25lcnJvciA9IGZ1bmN0aW9u
KCkgeyBmZXRjaCgnL3dlYlNvY2tldEZhaWwnKSB9OyIKKyAgICAgICAgICAgICAgICAgICAgIndz
Lm9ub3BlbiA9IGZ1bmN0aW9uKCkgeyBmZXRjaCgnL3dlYlNvY2tldFN1Y2Nlc3MnKSB9OyIKKyAg
ICAgICAgICAgICAgICAifSIKKyAgICAgICAgICAgICAgICAiZmV0Y2goJ2h0dHA6Ly9sb2NhbGhv
c3Q6JWQvJykudGhlbigoKT0+eyIKKyAgICAgICAgICAgICAgICAgICAgImZldGNoKCcvbG9hZFN1
Y2Nlc3MnKS50aGVuKCgpPT57IGNoZWNrV2ViU29ja2V0cygpIH0pIgorICAgICAgICAgICAgICAg
ICJ9KS5jYXRjaCgoKT0+eyIKKyAgICAgICAgICAgICAgICAgICAgImZldGNoKCcvbG9hZEZhaWwn
KS50aGVuKCgpPT57IGNoZWNrV2ViU29ja2V0cygpIH0pIgogICAgICAgICAgICAgICAgICJ9KSIK
LSAgICAgICAgICAgICAgICAiPC9zY3JpcHQ+Iiwgc2VydmVyLnBvcnQoKSwgc2VydmVyLnBvcnQo
KV0gZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwotICAgICAgICAgICAg
W3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBp
bml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3Rl
ZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdKS5nZXQoKV07
Ci0gICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpkYXRhXTsKLSAgICAgICAgICAgIFt0
YXNrIGRpZEZpbmlzaF07Ci0gICAgICAgIH0gZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0
aCBpc0VxdWFsVG9TdHJpbmc6QCIvbG9hZFN1Y2Nlc3MiXSkgeworICAgICAgICAgICAgICAgICI8
L3NjcmlwdD4iLCB3ZWJTb2NrZXRTZXJ2ZXIucG9ydCgpLCBzZXJ2ZXIucG9ydCgpXS5VVEY4U3Ry
aW5nKTsKKyAgICAgICAgfSBlbHNlIGlmIChbcGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvbG9hZFN1
Y2Nlc3MiXSkgeworICAgICAgICAgICAgcmVzcG9uZCh0YXNrLCAiaGkiKTsKICAgICAgICAgICAg
IGxvYWRTdWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlmIChbcGF0aCBpc0VxdWFsVG9T
dHJpbmc6QCIvbG9hZEZhaWwiXSkgeworICAgICAgICAgICAgcmVzcG9uZCh0YXNrLCAiaGkiKTsK
KyAgICAgICAgICAgIGxvYWRTdWNjZXNzID0gZmFsc2U7CisgICAgICAgIH0gZWxzZSBpZiAoW3Bh
dGggaXNFcXVhbFRvU3RyaW5nOkAiL3dlYlNvY2tldFN1Y2Nlc3MiXSkgeworICAgICAgICAgICAg
d2ViU29ja2V0U3VjY2VzcyA9IHRydWU7CiAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKLSAgICAg
ICAgfSBlbHNlIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9s
b2FkRmFpbCJdKSB7Ci0gICAgICAgICAgICBsb2FkRmFpbCA9IHRydWU7CisgICAgICAgIH0gZWxz
ZSBpZiAoW3BhdGggaXNFcXVhbFRvU3RyaW5nOkAiL3dlYlNvY2tldEZhaWwiXSkgeworICAgICAg
ICAgICAgd2ViU29ja2V0U3VjY2VzcyA9IGZhbHNlOwogICAgICAgICAgICAgZG9uZSA9IHRydWU7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
fV07CiAgICAgCi0gICAgeworICAgIGF1dG8gcnVuVGVzdCA9IFsmXSB7CisgICAgICAgIGxvYWRT
dWNjZXNzID0gV1RGOjpudWxsb3B0OworICAgICAgICB3ZWJTb2NrZXRTdWNjZXNzID0gV1RGOjpu
dWxsb3B0OworICAgICAgICBkb25lID0gZmFsc2U7CiAgICAgICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJ0ZXN0Oi8vaG9zdDEvbWFpbi5odG1sIl1dXTsKICAgICAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKLSAgICB9Ci0gICAgRVhQRUNUX1RSVUUobG9hZFN1
Y2Nlc3MpOwotICAgIEVYUEVDVF9GQUxTRShsb2FkRmFpbCk7CisgICAgfTsKKworICAgIHJ1blRl
c3QoKTsKKyAgICBFWFBFQ1RfVFJVRSgqbG9hZFN1Y2Nlc3MpOworICAgIEVYUEVDVF9UUlVFKCp3
ZWJTb2NrZXRTdWNjZXNzKTsKICAgICBFWFBFQ1RfRVEoc2VydmVyLnRvdGFsUmVxdWVzdHMoKSwg
MXUpOwotICAgIAotICAgIGxvYWRTdWNjZXNzID0gZmFsc2U7Ci0gICAgbG9hZEZhaWwgPSBmYWxz
ZTsKLSAgICBkb25lID0gZmFsc2U7CiAKICAgICBjb25maWd1cmF0aW9uLmdldCgpLl9sb2Fkc0Zy
b21OZXR3b3JrID0gTk87Ci0gICAgeworICAgIHJ1blRlc3QoKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
KmxvYWRTdWNjZXNzKTsKKyAgICBFWFBFQ1RfRkFMU0UoKndlYlNvY2tldFN1Y2Nlc3MpOworICAg
IEVYUEVDVF9FUShzZXJ2ZXIudG90YWxSZXF1ZXN0cygpLCAxdSk7CisgICAgCisgICAgY29uZmln
dXJhdGlvbi5nZXQoKS5fYWxsb3dlZE5ldHdvcmtIb3N0cyA9IFtOU1NldCBzZXRdOworICAgIHJ1
blRlc3QoKTsKKyAgICBFWFBFQ1RfRkFMU0UoKmxvYWRTdWNjZXNzKTsKKyAgICBFWFBFQ1RfRkFM
U0UoKndlYlNvY2tldFN1Y2Nlc3MpOworICAgIEVYUEVDVF9FUShzZXJ2ZXIudG90YWxSZXF1ZXN0
cygpLCAxdSk7CisKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLl9hbGxvd2VkTmV0d29ya0hvc3Rz
ID0gbmlsOworICAgIHJ1blRlc3QoKTsKKyAgICBFWFBFQ1RfVFJVRSgqbG9hZFN1Y2Nlc3MpOwor
ICAgIEVYUEVDVF9UUlVFKCp3ZWJTb2NrZXRTdWNjZXNzKTsKKyAgICBFWFBFQ1RfRVEoc2VydmVy
LnRvdGFsUmVxdWVzdHMoKSwgMnUpOworCisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5fYWxsb3dl
ZE5ldHdvcmtIb3N0cyA9IFtOU1NldCBzZXRXaXRoT2JqZWN0OkAibG9jYWxob3N0Il07CisgICAg
cnVuVGVzdCgpOworICAgIEVYUEVDVF9UUlVFKCpsb2FkU3VjY2Vzcyk7CisgICAgRVhQRUNUX0ZB
TFNFKCp3ZWJTb2NrZXRTdWNjZXNzKTsKKyAgICBFWFBFQ1RfRVEoc2VydmVyLnRvdGFsUmVxdWVz
dHMoKSwgM3UpOworfQorCitURVNUKFVSTFNjaGVtZUhhbmRsZXIsIEFsbG93ZWROZXR3b3JrSG9z
dHNSZWRpcmVjdCkKK3sKKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlckxvY2Fs
aG9zdCh7CisgICAgICAgIHsgIi9yZWRpcmVjdFRhcmdldCIsIHsge3sgIkFjY2Vzcy1Db250cm9s
LUFsbG93LU9yaWdpbiIsICIqIiB9fSwgInRlc3QgY29udGVudCIgfSB9CisgICAgfSk7CisgICAg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIxMjcwMDEoeworICAgICAgICB7ICIvIiwg
eyAzMDEsIHsKKyAgICAgICAgICAgIHsgIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiIsICIq
IiB9LAorICAgICAgICAgICAgeyAiTG9jYXRpb24iLCBtYWtlU3RyaW5nKCJodHRwOi8vbG9jYWxo
b3N0OiIsIHNlcnZlckxvY2FsaG9zdC5wb3J0KCksICIvcmVkaXJlY3RUYXJnZXQiKSB9CisgICAg
ICAgIH19fSwKKyAgICB9KTsKKworICAgIE9wdGlvbmFsPGJvb2w+IGxvYWRTdWNjZXNzOworICAg
IGJvb2wgZG9uZSA9IGZhbHNlOworCisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbVGVzdFVS
TFNjaGVtZUhhbmRsZXIgbmV3XSk7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0
aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJ0ZXN0
Il07CisKKyAgICBbaGFuZGxlciBzZXRTdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyOlsmXShXS1dl
YlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CisgICAgICAgIE5TU3RyaW5nICpw
YXRoID0gdGFzay5yZXF1ZXN0LlVSTC5wYXRoOworICAgICAgICBpZiAoW3BhdGggaXNFcXVhbFRv
U3RyaW5nOkAiL21haW4uaHRtbCJdKSB7CisgICAgICAgICAgICByZXNwb25kKHRhc2ssIFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPHNjcmlwdD4iCisgICAgICAgICAgICAgICAgImZldGNo
KCdodHRwOi8vMTI3LjAuMC4xOiVkLycpLnRoZW4oKCk9PnsiCisgICAgICAgICAgICAgICAgICAg
ICJmZXRjaCgnL2xvYWRTdWNjZXNzJykiCisgICAgICAgICAgICAgICAgIn0pLmNhdGNoKCgpPT57
IgorICAgICAgICAgICAgICAgICAgICAiZmV0Y2goJy9sb2FkRmFpbCcpIgorICAgICAgICAgICAg
ICAgICJ9KSIKKyAgICAgICAgICAgICAgICAiPC9zY3JpcHQ+Iiwgc2VydmVyMTI3MDAxLnBvcnQo
KV0uVVRGOFN0cmluZyk7CisgICAgICAgIH0gZWxzZSBpZiAoW3BhdGggaXNFcXVhbFRvU3RyaW5n
OkAiL2xvYWRTdWNjZXNzIl0pIHsKKyAgICAgICAgICAgIGxvYWRTdWNjZXNzID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKFtwYXRoIGlzRXF1YWxU
b1N0cmluZzpAIi9sb2FkRmFpbCJdKSB7CisgICAgICAgICAgICBsb2FkU3VjY2VzcyA9IGZhbHNl
OworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0KKyAgICB9XTsKKworICAgIGF1
dG8gcnVuVGVzdCA9IFsmXSB7CisgICAgICAgIGxvYWRTdWNjZXNzID0gV1RGOjpudWxsb3B0Owor
ICAgICAgICBkb25lID0gZmFsc2U7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0
ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgbm9uUGVyc2lzdGVudERhdGFTdG9yZV07
CiAgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0Oi8vaG9zdDEvbWFp
bi5odG1sIl1dXTsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKLSAg
ICB9Ci0gICAgRVhQRUNUX0ZBTFNFKGxvYWRTdWNjZXNzKTsKLSAgICBFWFBFQ1RfVFJVRShsb2Fk
RmFpbCk7Ci0gICAgRVhQRUNUX0VRKHNlcnZlci50b3RhbFJlcXVlc3RzKCksIDF1KTsKKyAgICB9
OworCisgICAgcnVuVGVzdCgpOworICAgIEVYUEVDVF9UUlVFKCpsb2FkU3VjY2Vzcyk7CisgICAg
RVhQRUNUX0VRKHNlcnZlckxvY2FsaG9zdC50b3RhbFJlcXVlc3RzKCksIDF1KTsKKyAgICBFWFBF
Q1RfRVEoc2VydmVyMTI3MDAxLnRvdGFsUmVxdWVzdHMoKSwgMXUpOworICAgIAorICAgIGNvbmZp
Z3VyYXRpb24uZ2V0KCkuX2FsbG93ZWROZXR3b3JrSG9zdHMgPSBbTlNTZXQgc2V0XTsKKyAgICBy
dW5UZXN0KCk7CisgICAgRVhQRUNUX0ZBTFNFKCpsb2FkU3VjY2Vzcyk7CisgICAgRVhQRUNUX0VR
KHNlcnZlckxvY2FsaG9zdC50b3RhbFJlcXVlc3RzKCksIDF1KTsKKyAgICBFWFBFQ1RfRVEoc2Vy
dmVyMTI3MDAxLnRvdGFsUmVxdWVzdHMoKSwgMXUpOworCisgICAgY29uZmlndXJhdGlvbi5nZXQo
KS5fYWxsb3dlZE5ldHdvcmtIb3N0cyA9IFtOU1NldCBzZXRXaXRoT2JqZWN0OkAiMTI3LjAuMC4x
Il07CisgICAgcnVuVGVzdCgpOworICAgIEVYUEVDVF9GQUxTRSgqbG9hZFN1Y2Nlc3MpOworICAg
IEVYUEVDVF9FUShzZXJ2ZXJMb2NhbGhvc3QudG90YWxSZXF1ZXN0cygpLCAxdSk7CisgICAgRVhQ
RUNUX0VRKHNlcnZlcjEyNzAwMS50b3RhbFJlcXVlc3RzKCksIDJ1KTsKIH0KIAogVEVTVChVUkxT
Y2hlbWVIYW5kbGVyLCBMb2Fkc1N1YnJlc291cmNlcykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9I
VFRQU2VydmVyLmgKaW5kZXggYzI4MGU1ZGFhOThlZjY2MjMyNmYxYmNmNGZmMjgzZTVmYTM5MDM1
MC4uYjkyODYyYTc2MDczNWU0YzUxOGZmYzk5Nzc3YmM1MTdkYzY3NjcwYyAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2VuZChSZXRhaW5QdHI8ZGlzcGF0Y2hfZGF0YV90PiYmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgPSBudWxscHRyKSBjb25zdDsKICAgICB2b2lkIHJlY2VpdmVCeXRlcyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4mJikgY29uc3Q7CiAgICAgdm9p
ZCByZWNlaXZlSFRUUFJlcXVlc3QoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8Y2hhcj4m
Jik+JiYsIFZlY3RvcjxjaGFyPiYmIGJ1ZmZlciA9IHsgfSkgY29uc3Q7CisgICAgdm9pZCB3ZWJT
b2NrZXRIYW5kc2hha2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmID0geyB9KTsKICAgICB2
b2lkIHRlcm1pbmF0ZSgpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvSFRUUFNlcnZlci5tbQppbmRleCA5ZTQ2Yzg2OTdhMWEwMWQ5NmRjNzE1MzJiNmRlMjNm
MGQxOWI5YWVhLi42ZDNlNGE1MTBlY2VjYTY4NjFlMjRkYWNiYzI4ZDFlMmM1NjBlYjQ4IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCkBAIC0zMCw3ICszMCw5IEBACiAj
aW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1NIQTEuaD4KICNpbXBv
cnQgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0
Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW1wb3J0IDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIApAQCAtMzI1LDYgKzMyNywzNCBAQCB2b2lkIENvbm5lY3Rpb246OnNl
bmQoUmV0YWluUHRyPGRpc3BhdGNoX2RhdGFfdD4mJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxl
cjx2bwogICAgIH0pLmdldCgpKTsKIH0KIAordm9pZCBDb25uZWN0aW9uOjp3ZWJTb2NrZXRIYW5k
c2hha2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbm5lY3Rpb25IYW5kbGVyKQorewor
ICAgIHJlY2VpdmVIVFRQUmVxdWVzdChbY29ubmVjdGlvbiA9IENvbm5lY3Rpb24oKnRoaXMpLCBj
b25uZWN0aW9uSGFuZGxlciA9IFdURk1vdmUoY29ubmVjdGlvbkhhbmRsZXIpXSAoVmVjdG9yPGNo
YXI+JiYgcmVxdWVzdCkgbXV0YWJsZSB7CisKKyAgICAgICAgYXV0byB3ZWJTb2NrZXRBY2NlcHRW
YWx1ZSA9IFtdIChjb25zdCBWZWN0b3I8Y2hhcj4mIHJlcXVlc3QpIHsKKyAgICAgICAgICAgIGNv
bnN0ZXhwciBhdXRvKiBrZXlIZWFkZXJGaWVsZCA9ICJTZWMtV2ViU29ja2V0LUtleTogIjsKKyAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGtleUJlZ2luID0gc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwg
a2V5SGVhZGVyRmllbGQsIHJlcXVlc3Quc2l6ZSgpKSArIHN0cmxlbihrZXlIZWFkZXJGaWVsZCk7
CisgICAgICAgICAgICBBU1NFUlQoa2V5QmVnaW4pOworICAgICAgICAgICAgY29uc3QgY2hhciog
a2V5RW5kID0gc3RybnN0cihrZXlCZWdpbiwgIlxyXG4iLCByZXF1ZXN0LnNpemUoKSArIChrZXlC
ZWdpbiAtIHJlcXVlc3QuZGF0YSgpKSk7CisgICAgICAgICAgICBBU1NFUlQoa2V5RW5kKTsKKwor
ICAgICAgICAgICAgY29uc3RleHByIGF1dG8qIHdlYlNvY2tldEtleUdVSUQgPSAiMjU4RUFGQTUt
RTkxNC00N0RBLTk1Q0EtQzVBQjBEQzg1QjExIjsKKyAgICAgICAgICAgIFNIQTEgc2hhMTsKKyAg
ICAgICAgICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
a2V5QmVnaW4pLCBrZXlFbmQgLSBrZXlCZWdpbik7CisgICAgICAgICAgICBzaGExLmFkZEJ5dGVz
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHdlYlNvY2tldEtleUdVSUQpLCBzdHJs
ZW4od2ViU29ja2V0S2V5R1VJRCkpOworICAgICAgICAgICAgU0hBMTo6RGlnZXN0IGhhc2g7Cisg
ICAgICAgICAgICBzaGExLmNvbXB1dGVIYXNoKGhhc2gpOworICAgICAgICAgICAgcmV0dXJuIGJh
c2U2NEVuY29kZShoYXNoLmRhdGEoKSwgU0hBMTo6aGFzaFNpemUpOworICAgICAgICB9OworCisg
ICAgICAgIGNvbm5lY3Rpb24uc2VuZChIVFRQUmVzcG9uc2UoMTAxLCB7CisgICAgICAgICAgICB7
ICJVcGdyYWRlIiwgIndlYnNvY2tldCIgfSwKKyAgICAgICAgICAgIHsgIkNvbm5lY3Rpb24iLCAi
VXBncmFkZSIgfSwKKyAgICAgICAgICAgIHsgIlNlYy1XZWJTb2NrZXQtQWNjZXB0Iiwgd2ViU29j
a2V0QWNjZXB0VmFsdWUocmVxdWVzdCkgfQorICAgICAgICB9KS5zZXJpYWxpemUoSFRUUFJlc3Bv
bnNlOjpJbmNsdWRlQ29udGVudExlbmd0aDo6Tm8pLCBXVEZNb3ZlKGNvbm5lY3Rpb25IYW5kbGVy
KSk7CisgICAgfSk7Cit9CisKIHZvaWQgQ29ubmVjdGlvbjo6dGVybWluYXRlKCkKIHsKICAgICBu
d19jb25uZWN0aW9uX2NhbmNlbChtX2Nvbm5lY3Rpb24uZ2V0KCkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>