<?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>66354</bug_id>
          
          <creation_ts>2011-08-16 17:10:32 -0700</creation_ts>
          <short_desc>Regression:  On Lion, redirects lose HTTP authentication headers</short_desc>
          <delta_ts>2011-09-01 10:47:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>67374</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>ap</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>452000</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-08-16 17:10:32 -0700</bug_when>
    <thetext>Regression:  On Lion, redirects lose HTTP authentication headers

Lion CFNetwork no longer carries offer authentication headers for redirects.  The WebCore credential storage can easily do it&apos;s automatic application of authentication headers in the case where redirects are within the same origin.

In radar as &lt;rdar://problem/9965209&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452019</commentid>
    <comment_count>1</comment_count>
      <attachid>104129</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-08-16 17:25:36 -0700</bug_when>
    <thetext>Created attachment 104129
Patch v1 - Apply any known credentials inside willSendRequest for same origin redirects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452036</commentid>
    <comment_count>2</comment_count>
      <attachid>104129</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-16 17:51:58 -0700</bug_when>
    <thetext>Comment on attachment 104129
Patch v1 - Apply any known credentials inside willSendRequest for same origin redirects.

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

Looks good to me, but the fix needs a test and a ResourceHandleCFNet.cpp counterpart.

&gt; Source/WebCore/platform/network/mac/ResourceHandleMac.mm:503
&gt; +        Credential credential = CredentialStorage::get(request.url());

Stored credentials probably shouldn&apos;t be applied if the redirect had credentials in its Location header (Location: http://user:pass@new.host/path).

Also, perhaps there should be some kind of comment explaining that the above request.clearHTTPAuthorization() call is not needed on Lion. Right now, the code looks a bit confusing unless you know that we try to work regardless of whether CFNetwork has removed credentials.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452326</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-08-17 10:20:14 -0700</bug_when>
    <thetext>*** Bug 66389 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452560</commentid>
    <comment_count>4</comment_count>
      <attachid>104239</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-08-17 14:13:20 -0700</bug_when>
    <thetext>Created attachment 104239
Patch v2 - Requested changes + layout tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452581</commentid>
    <comment_count>5</comment_count>
      <attachid>104239</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-17 14:28:54 -0700</bug_when>
    <thetext>Comment on attachment 104239
Patch v2 - Requested changes + layout tests

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

Great tests!

&gt; Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:556
&gt; +                d-&gt;m_initialCredential = credential;
&gt; +                
&gt; +                // FIXME: Support Digest authentication, and Proxy-Authorization.
&gt; +                applyBasicAuthorizationHeader(request, d-&gt;m_initialCredential);

I think that you wanted to limit this to actual redirect case for now, since for original request, we have already applied the credentials (but do get a willSendRequest on at least some platforms, I think).

&gt; Source/WebCore/platform/network/mac/ResourceHandleMac.mm:512
&gt; +                d-&gt;m_initialCredential = credential;
&gt; +                
&gt; +                // FIXME: Support Digest authentication, and Proxy-Authorization.
&gt; +                applyBasicAuthorizationHeader(request, d-&gt;m_initialCredential);

Ditto.

&gt; LayoutTests/ChangeLog:11
&gt; +        * fast/loader/stateobjects/state-url-sets-links-visited.html:

This file shouldn&apos;t have been changed.

&gt; LayoutTests/fast/loader/stateobjects/state-url-sets-links-visited.html:17
&gt; +        alert(style1.color);
&gt; +        alert(style2.color);

Accidental changes here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452588</commentid>
    <comment_count>6</comment_count>
      <attachid>104239</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-17 14:31:18 -0700</bug_when>
    <thetext>Comment on attachment 104239
Patch v2 - Requested changes + layout tests

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

&gt; Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:139
&gt; +    String authHeader = &quot;Basic &quot; + base64Encode(String(credential.user() + &quot;:&quot; + credential.password()).utf8());

I see no reason to use an abbreviation &quot;auth&quot; here. I suggest naming this local variable value, field, headerValue, or authorization. Or, authorizationHeader. Something made out of words.

I’m surprised the explicit cast to String is needed. Can&apos;t you use use parentheses there without the String?

&gt; Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:548
&gt;          request.clearHTTPAuthorization();

We could consider clearing authorization explicitly in all cases, since we will re-apply it now. Probably a risky change, though.

&gt; Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:550
&gt; +        if (d-&gt;m_user.isEmpty() &amp;&amp; d-&gt;m_pass.isEmpty()) {

I think this needs a why comment. It&apos;s not clear to me at all why the next code should run only if the user and password is empty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452602</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-08-17 14:39:58 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; I’m surprised the explicit cast to String is needed. Can&apos;t you use use parentheses there without the String?

Nope - Something about WTF::StringAppend.  Fun times.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452609</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-08-17 14:44:01 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/93247</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460307</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-01 00:55:33 -0700</bug_when>
    <thetext>According to test failures, the following tests have been failing since this patch was landed.
http/tests/misc/authentication-redirect-2/authentication-sent-to-redirect-same-origin.html
http/tests/misc/authentication-redirect-3/authentication-sent-to-redirect-same-origin-with-location-credentials.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460500</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-01 09:03:49 -0700</bug_when>
    <thetext>I&apos;m going to look into this today if Brady doesn&apos;t beat me to it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104129</attachid>
            <date>2011-08-16 17:25:36 -0700</date>
            <delta_ts>2011-08-17 14:13:20 -0700</delta_ts>
            <desc>Patch v1 - Apply any known credentials inside willSendRequest for same origin redirects.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>3232</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzMTgyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDgtMTYgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NjM1NCBhbmQgPHJkYXI6Ly9wcm9ibGVtLzk5NjUyMDk+Cisg
ICAgICAgIFJlZ3Jlc3Npb246ICBPbiBMaW9uLCByZWRpcmVjdHMgbG9zZSBIVFRQIGF1dGhlbnRp
Y2F0aW9uIGhlYWRlcnMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6YXBwbHlCYXNpY0F1dGhvcml6YXRpb25IZWFkZXIpOiBBcHBseSB0aGUg
dXNlci9wYXNzd29yZCBmcm9tIGEgY3JlZGVudGlhbCB0byB0aGUgSFRUUCBoZWFkZXJzIGZvciBh
IHJlcXVlc3QuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlTlNVUkxD
b25uZWN0aW9uKTogVXNlIHRoZSBhcHBseUJhc2ljQXV0aG9yaXphdGlvbkhlYWRlciBoZWxwZXIu
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KTogSWYg
dGhpcyBpcyBhIHJlZGlyZWN0IHdpdGhpbiB0aGUgc2FtZSBvcmlnaW4sIGFwcGx5IGFueSBzdG9y
ZWQgdGFyZ2V0IGNyZWRlbnRpYWxzIHRvIHRoZSBuZXcgcmVxdWVzdC4KKwogMjAxMS0wOC0xNiAg
UGVyLUVyaWsgQnJvZGluICA8cGVyLWVyaWsuYnJvZGluQGVyaWNzc29uLmNvbT4KIAogICAgICAg
ICBNYWtlIGl0IHBvc3NpYmxlIHRvIGV4cGxpY2l0bHkgcHJldmVudCBhIHByZWZsaWdodCB2aWEg
VGhyZWFkYWJsZUxvYWRlck9wdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCShyZXZpc2lvbiA5
MzA2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFu
ZGxlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsOSArMTMxLDEwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHN0YXRpYyBib29sIGlzSW5pdGlhbGl6aW5nQ29ubmVjdGlvbjsKICNlbmRpZgog
ICAgIAotc3RhdGljIFN0cmluZyBlbmNvZGVCYXNpY0F1dGhvcml6YXRpb24oY29uc3QgU3RyaW5n
JiB1c2VyLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkKQorc3RhdGljIHZvaWQgYXBwbHlCYXNpY0F1
dGhvcml6YXRpb25IZWFkZXIoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBDcmVkZW50
aWFsJiBjcmVkZW50aWFsKQogewotICAgIHJldHVybiBiYXNlNjRFbmNvZGUoU3RyaW5nKHVzZXIg
KyAiOiIgKyBwYXNzd29yZCkudXRmOCgpKTsKKyAgICBTdHJpbmcgYXV0aEhlYWRlciA9ICJCYXNp
YyAiICsgYmFzZTY0RW5jb2RlKFN0cmluZyhjcmVkZW50aWFsLnVzZXIoKSArICI6IiArIGNyZWRl
bnRpYWwucGFzc3dvcmQoKSkudXRmOCgpKTsKKyAgICByZXF1ZXN0LmFkZEhUVFBIZWFkZXJGaWVs
ZCgiQXV0aG9yaXphdGlvbiIsIGF1dGhIZWFkZXIpOwogfQogCiBSZXNvdXJjZUhhbmRsZUludGVy
bmFsOjp+UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCgpCkBAIC0yMTEsOCArMjEyLDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6Y3JlYXRlTlNVUkxDb25uZWN0aQogICAgICAgICAKICAgICBpZiAoIWQt
Pm1faW5pdGlhbENyZWRlbnRpYWwuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTdXBw
b3J0IERpZ2VzdCBhdXRoZW50aWNhdGlvbiwgYW5kIFByb3h5LUF1dGhvcml6YXRpb24uCi0gICAg
ICAgIFN0cmluZyBhdXRoSGVhZGVyID0gIkJhc2ljICIgKyBlbmNvZGVCYXNpY0F1dGhvcml6YXRp
b24oZC0+bV9pbml0aWFsQ3JlZGVudGlhbC51c2VyKCksIGQtPm1faW5pdGlhbENyZWRlbnRpYWwu
cGFzc3dvcmQoKSk7Ci0gICAgICAgIGZpcnN0UmVxdWVzdCgpLmFkZEhUVFBIZWFkZXJGaWVsZCgi
QXV0aG9yaXphdGlvbiIsIGF1dGhIZWFkZXIpOworICAgICAgICBhcHBseUJhc2ljQXV0aG9yaXph
dGlvbkhlYWRlcihmaXJzdFJlcXVlc3QoKSwgZC0+bV9pbml0aWFsQ3JlZGVudGlhbCk7CiAgICAg
fQogCiAgICAgTlNVUkxSZXF1ZXN0ICpuc1JlcXVlc3QgPSBmaXJzdFJlcXVlc3QoKS5uc1VSTFJl
cXVlc3QoKTsKQEAgLTQ5Niw4ICs0OTYsMTggQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNl
bmRSZXF1ZXN0KFJlcwogICAgIGQtPm1fcGFzcyA9IHVybC5wYXNzKCk7CiAgICAgZC0+bV9sYXN0
SFRUUE1ldGhvZCA9IHJlcXVlc3QuaHR0cE1ldGhvZCgpOwogICAgIHJlcXVlc3QucmVtb3ZlQ3Jl
ZGVudGlhbHMoKTsKKwogICAgIGlmICghcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKHJlcXVl
c3QudXJsKCksIHJlZGlyZWN0UmVzcG9uc2UudXJsKCkpKQogICAgICAgICByZXF1ZXN0LmNsZWFy
SFRUUEF1dGhvcml6YXRpb24oKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQ3JlZGVudGlhbCBjcmVk
ZW50aWFsID0gQ3JlZGVudGlhbFN0b3JhZ2U6OmdldChyZXF1ZXN0LnVybCgpKTsKKyAgICAgICAg
aWYgKCFjcmVkZW50aWFsLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgZC0+bV9pbml0aWFsQ3Jl
ZGVudGlhbCA9IGNyZWRlbnRpYWw7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEZJWE1F
OiBTdXBwb3J0IERpZ2VzdCBhdXRoZW50aWNhdGlvbiwgYW5kIFByb3h5LUF1dGhvcml6YXRpb24u
CisgICAgICAgICAgICBhcHBseUJhc2ljQXV0aG9yaXphdGlvbkhlYWRlcihyZXF1ZXN0LCBkLT5t
X2luaXRpYWxDcmVkZW50aWFsKTsKKyAgICAgICAgfQorICAgIH0KIAogI2lmIFVTRShDRlVSTFNU
T1JBR0VTRVNTSU9OUykKICAgICBpZiAoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vz
c2lvbiA9IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpCg==
</data>
<flag name="review"
          id="99867"
          type_id="1"
          status="-"
          setter="ap"
    />
    <flag name="commit-queue"
          id="99868"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104239</attachid>
            <date>2011-08-17 14:13:20 -0700</date>
            <delta_ts>2011-08-17 14:31:18 -0700</delta_ts>
            <desc>Patch v2 - Requested changes + layout tests</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>38732</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzMjM5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDgtMTcgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NjM1NCBhbmQgPHJkYXI6Ly9wcm9ibGVtLzk5NjUyMDk+Cisg
ICAgICAgIFJlZ3Jlc3Npb246ICBPbiBMaW9uLCByZWRpcmVjdHMgbG9zZSBIVFRQIGF1dGhlbnRp
Y2F0aW9uIGhlYWRlcnMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGNoYW5nZXMgbWFrZXMgV2ViQ29yZSB0cnkgdG8gYXBwbHkgYmFzaWMgY3Jl
ZGVudGlhbHMgYWZ0ZXIgYSByZWRpcmVjdCBpZiB0aGUgcmVkaXJlY3QgaXMgdG8gdGhlIHNhbWUg
b3JpZ2luLAorICAgICAgICBhc3N1bWluZyB0aGUgcmVkaXJlY3RlZCBVUkwgZGlkIG5vdCBjb250
YWluIGNyZWRlbnRpYWxzIGRpcmVjdGx5LgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL21p
c2MvYXV0aGVudGljYXRpb24tcmVkaXJlY3QtMS9hdXRoZW50aWNhdGlvbi1zZW50LXRvLXJlZGly
ZWN0LWNyb3NzLW9yaWdpbi5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL21pc2MvYXV0
aGVudGljYXRpb24tcmVkaXJlY3QtMi9hdXRoZW50aWNhdGlvbi1zZW50LXRvLXJlZGlyZWN0LXNh
bWUtb3JpZ2luLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvbWlzYy9hdXRoZW50aWNh
dGlvbi1yZWRpcmVjdC0zL2F1dGhlbnRpY2F0aW9uLXNlbnQtdG8tcmVkaXJlY3Qtc2FtZS1vcmln
aW4td2l0aC1sb2NhdGlvbi1jcmVkZW50aWFscy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBw
bHlCYXNpY0F1dGhvcml6YXRpb25IZWFkZXIpOiBBcHBseSB0aGUgdXNlci9wYXNzd29yZCBmcm9t
IGEgY3JlZGVudGlhbCB0byB0aGUgSFRUUCBoZWFkZXJzIGZvciBhIHJlcXVlc3QuCisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKTogVXNlIHRo
ZSBhcHBseUJhc2ljQXV0aG9yaXphdGlvbkhlYWRlciBoZWxwZXIuCisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KTogSWYgdGhpcyBpcyBhIHJlZGlyZWN0
IHdpdGhpbiB0aGUgc2FtZSBvcmlnaW4sIGFwcGx5IGFueSBzdG9yZWQgdGFyZ2V0IGNyZWRlbnRp
YWxzIHRvIHRoZSBuZXcgcmVxdWVzdC4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlSGFuZGxlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlCYXNpY0F1dGhv
cml6YXRpb25IZWFkZXIpOiBBcHBseSB0aGUgdXNlci9wYXNzd29yZCBmcm9tIGEgY3JlZGVudGlh
bCB0byB0aGUgSFRUUCBoZWFkZXJzIGZvciBhIHJlcXVlc3QuCisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZTo6Y3JlYXRlTlNVUkxDb25uZWN0aW9uKTogVXNlIHRoZSBhcHBseUJhc2lj
QXV0aG9yaXphdGlvbkhlYWRlciBoZWxwZXIuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6d2lsbFNlbmRSZXF1ZXN0KTogSWYgdGhpcyBpcyBhIHJlZGlyZWN0IHdpdGhpbiB0aGUg
c2FtZSBvcmlnaW4sIGFwcGx5IGFueSBzdG9yZWQgdGFyZ2V0IGNyZWRlbnRpYWxzIHRvIHRoZSBu
ZXcgcmVxdWVzdC4KKwogMjAxMS0wOC0xNyAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQ3Jhc2ggaWYgY29tcG9zaXRpbmcgaXMgZGlz
YWJsZWQgZHVyaW5nIHVwZGF0ZUxheWVycygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAJKHJl
dmlzaW9uIDkzMjM2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUhhbmRsZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDkgKzEzNCwxMCBAQCBz
dGF0aWMgdm9pZCBzZXREZWZhdWx0TUlNRVR5cGUoQ0ZVUkxSZXNwCiAgICAgQ0ZVUkxSZXNwb25z
ZVNldE1JTUVUeXBlKHJlc3BvbnNlLCBkZWZhdWx0TUlNRVR5cGVTdHJpbmcpOwogfQogCi1zdGF0
aWMgU3RyaW5nIGVuY29kZUJhc2ljQXV0aG9yaXphdGlvbihjb25zdCBTdHJpbmcmIHVzZXIsIGNv
bnN0IFN0cmluZyYgcGFzc3dvcmQpCitzdGF0aWMgdm9pZCBhcHBseUJhc2ljQXV0aG9yaXphdGlv
bkhlYWRlcihSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRl
bnRpYWwpCiB7Ci0gICAgcmV0dXJuIGJhc2U2NEVuY29kZShTdHJpbmcodXNlciArICI6IiArIHBh
c3N3b3JkKS51dGY4KCkpOworICAgIFN0cmluZyBhdXRoSGVhZGVyID0gIkJhc2ljICIgKyBiYXNl
NjRFbmNvZGUoU3RyaW5nKGNyZWRlbnRpYWwudXNlcigpICsgIjoiICsgY3JlZGVudGlhbC5wYXNz
d29yZCgpKS51dGY4KCkpOworICAgIHJlcXVlc3QuYWRkSFRUUEhlYWRlckZpZWxkKCJBdXRob3Jp
emF0aW9uIiwgYXV0aEhlYWRlcik7CiB9CiAKIHN0YXRpYyBDRlVSTFJlcXVlc3RSZWYgd2lsbFNl
bmRSZXF1ZXN0KENGVVJMQ29ubmVjdGlvblJlZiBjb25uLCBDRlVSTFJlcXVlc3RSZWYgY2ZSZXF1
ZXN0LCBDRlVSTFJlc3BvbnNlUmVmIGNmUmVkaXJlY3RSZXNwb25zZSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKQEAgLTQ3MSw4ICs0NzIsOCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVD
RlVSTENvbm5lY3RpCiAgICAgfQogICAgICAgICAKICAgICBpZiAoIWQtPm1faW5pdGlhbENyZWRl
bnRpYWwuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFN0cmluZyBhdXRoSGVhZGVyID0gIkJhc2ljICIg
KyBlbmNvZGVCYXNpY0F1dGhvcml6YXRpb24oZC0+bV9pbml0aWFsQ3JlZGVudGlhbC51c2VyKCks
IGQtPm1faW5pdGlhbENyZWRlbnRpYWwucGFzc3dvcmQoKSk7Ci0gICAgICAgIGZpcnN0UmVxdWVz
dCgpLmFkZEhUVFBIZWFkZXJGaWVsZCgiQXV0aG9yaXphdGlvbiIsIGF1dGhIZWFkZXIpOworICAg
ICAgICAvLyBGSVhNRTogU3VwcG9ydCBEaWdlc3QgYXV0aGVudGljYXRpb24sIGFuZCBQcm94eS1B
dXRob3JpemF0aW9uLgorICAgICAgICBhcHBseUJhc2ljQXV0aG9yaXphdGlvbkhlYWRlcihmaXJz
dFJlcXVlc3QoKSwgZC0+bV9pbml0aWFsQ3JlZGVudGlhbCk7CiAgICAgfQogCiAgICAgUmV0YWlu
UHRyPENGVVJMUmVxdWVzdFJlZj4gcmVxdWVzdChBZG9wdENGLCBtYWtlRmluYWxSZXF1ZXN0KGZp
cnN0UmVxdWVzdCgpLCBzaG91bGRDb250ZW50U25pZmYpKTsKQEAgLTU0MCw4ICs1NDEsMjIgQEAg
dm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlcwogICAgIGQtPm1fcGFzcyA9
IHVybC5wYXNzKCk7CiAgICAgZC0+bV9sYXN0SFRUUE1ldGhvZCA9IHJlcXVlc3QuaHR0cE1ldGhv
ZCgpOwogICAgIHJlcXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKLSAgICBpZiAoIXByb3RvY29s
SG9zdEFuZFBvcnRBcmVFcXVhbChyZXF1ZXN0LnVybCgpLCByZWRpcmVjdFJlc3BvbnNlLnVybCgp
KSkKKworICAgIGlmICghcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKHJlcXVlc3QudXJsKCks
IHJlZGlyZWN0UmVzcG9uc2UudXJsKCkpKSB7CisgICAgICAgIC8vIElmIHRoZSBuZXR3b3JrIGxh
eWVyIGNhcnJpZXMgb3ZlciBhdXRoZW50aWNhdGlvbiBoZWFkZXJzIGZyb20gdGhlIG9yaWdpbmFs
IHJlcXVlc3QKKyAgICAgICAgLy8gaW4gYSBjcm9zcy1vcmlnaW4gcmVkaXJlY3QsIHdlIHdhbnQg
dG8gY2xlYXIgdGhvc2UgaGVhZGVycyBoZXJlLgogICAgICAgICByZXF1ZXN0LmNsZWFySFRUUEF1
dGhvcml6YXRpb24oKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZC0+bV91c2VyLmlzRW1w
dHkoKSAmJiBkLT5tX3Bhc3MuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBDcmVkZW50aWFsIGNy
ZWRlbnRpYWwgPSBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0KHJlcXVlc3QudXJsKCkpOworICAgICAg
ICAgICAgaWYgKCFjcmVkZW50aWFsLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIGQtPm1f
aW5pdGlhbENyZWRlbnRpYWwgPSBjcmVkZW50aWFsOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IERpZ2VzdCBhdXRoZW50aWNhdGlvbiwgYW5kIFBy
b3h5LUF1dGhvcml6YXRpb24uCisgICAgICAgICAgICAgICAgYXBwbHlCYXNpY0F1dGhvcml6YXRp
b25IZWFkZXIocmVxdWVzdCwgZC0+bV9pbml0aWFsQ3JlZGVudGlhbCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CiAKICNpZiBVU0UoQ0ZVUkxTVE9SQUdFU0VTU0lPTlMpCiAgICAg
IHJlcXVlc3Quc2V0U3RvcmFnZVNlc3Npb24oUmVzb3VyY2VIYW5kbGU6OmN1cnJlbnRTdG9yYWdl
U2Vzc2lvbigpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlSGFuZGxlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCShyZXZpc2lvbiA5MzIzNikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzEsOSArMTMxLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0
YXRpYyBib29sIGlzSW5pdGlhbGl6aW5nQ29ubmVjdGlvbjsKICNlbmRpZgogICAgIAotc3RhdGlj
IFN0cmluZyBlbmNvZGVCYXNpY0F1dGhvcml6YXRpb24oY29uc3QgU3RyaW5nJiB1c2VyLCBjb25z
dCBTdHJpbmcmIHBhc3N3b3JkKQorc3RhdGljIHZvaWQgYXBwbHlCYXNpY0F1dGhvcml6YXRpb25I
ZWFkZXIoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50
aWFsKQogewotICAgIHJldHVybiBiYXNlNjRFbmNvZGUoU3RyaW5nKHVzZXIgKyAiOiIgKyBwYXNz
d29yZCkudXRmOCgpKTsKKyAgICBTdHJpbmcgYXV0aEhlYWRlciA9ICJCYXNpYyAiICsgYmFzZTY0
RW5jb2RlKFN0cmluZyhjcmVkZW50aWFsLnVzZXIoKSArICI6IiArIGNyZWRlbnRpYWwucGFzc3dv
cmQoKSkudXRmOCgpKTsKKyAgICByZXF1ZXN0LmFkZEhUVFBIZWFkZXJGaWVsZCgiQXV0aG9yaXph
dGlvbiIsIGF1dGhIZWFkZXIpOwogfQogCiBSZXNvdXJjZUhhbmRsZUludGVybmFsOjp+UmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbCgpCkBAIC0yMTEsOCArMjEyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRs
ZTo6Y3JlYXRlTlNVUkxDb25uZWN0aQogICAgICAgICAKICAgICBpZiAoIWQtPm1faW5pdGlhbENy
ZWRlbnRpYWwuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IERpZ2VzdCBh
dXRoZW50aWNhdGlvbiwgYW5kIFByb3h5LUF1dGhvcml6YXRpb24uCi0gICAgICAgIFN0cmluZyBh
dXRoSGVhZGVyID0gIkJhc2ljICIgKyBlbmNvZGVCYXNpY0F1dGhvcml6YXRpb24oZC0+bV9pbml0
aWFsQ3JlZGVudGlhbC51c2VyKCksIGQtPm1faW5pdGlhbENyZWRlbnRpYWwucGFzc3dvcmQoKSk7
Ci0gICAgICAgIGZpcnN0UmVxdWVzdCgpLmFkZEhUVFBIZWFkZXJGaWVsZCgiQXV0aG9yaXphdGlv
biIsIGF1dGhIZWFkZXIpOworICAgICAgICBhcHBseUJhc2ljQXV0aG9yaXphdGlvbkhlYWRlcihm
aXJzdFJlcXVlc3QoKSwgZC0+bV9pbml0aWFsQ3JlZGVudGlhbCk7CiAgICAgfQogCiAgICAgTlNV
UkxSZXF1ZXN0ICpuc1JlcXVlc3QgPSBmaXJzdFJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoKTsKQEAg
LTQ5Niw4ICs0OTYsMjMgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJl
cwogICAgIGQtPm1fcGFzcyA9IHVybC5wYXNzKCk7CiAgICAgZC0+bV9sYXN0SFRUUE1ldGhvZCA9
IHJlcXVlc3QuaHR0cE1ldGhvZCgpOwogICAgIHJlcXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsK
LSAgICBpZiAoIXByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChyZXF1ZXN0LnVybCgpLCByZWRp
cmVjdFJlc3BvbnNlLnVybCgpKSkKKworICAgIGlmICghcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVx
dWFsKHJlcXVlc3QudXJsKCksIHJlZGlyZWN0UmVzcG9uc2UudXJsKCkpKSB7CisgICAgICAgIC8v
IElmIHRoZSBuZXR3b3JrIGxheWVyIGNhcnJpZXMgb3ZlciBhdXRoZW50aWNhdGlvbiBoZWFkZXJz
IGZyb20gdGhlIG9yaWdpbmFsIHJlcXVlc3QKKyAgICAgICAgLy8gaW4gYSBjcm9zcy1vcmlnaW4g
cmVkaXJlY3QsIHdlIHdhbnQgdG8gY2xlYXIgdGhvc2UgaGVhZGVycyBoZXJlLgorICAgICAgICAv
LyBBcyBvZiBMaW9uLCBDRk5ldHdvcmsgbm8gbG9uZ2VyIGRvZXMgdGhpcy4KICAgICAgICAgcmVx
dWVzdC5jbGVhckhUVFBBdXRob3JpemF0aW9uKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYg
KGQtPm1fdXNlci5pc0VtcHR5KCkgJiYgZC0+bV9wYXNzLmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gQ3JlZGVudGlhbFN0b3JhZ2U6OmdldChyZXF1ZXN0
LnVybCgpKTsKKyAgICAgICAgICAgIGlmICghY3JlZGVudGlhbC5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgICAgICBkLT5tX2luaXRpYWxDcmVkZW50aWFsID0gY3JlZGVudGlhbDsKKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBEaWdlc3QgYXV0aGVu
dGljYXRpb24sIGFuZCBQcm94eS1BdXRob3JpemF0aW9uLgorICAgICAgICAgICAgICAgIGFwcGx5
QmFzaWNBdXRob3JpemF0aW9uSGVhZGVyKHJlcXVlc3QsIGQtPm1faW5pdGlhbENyZWRlbnRpYWwp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQogCiAjaWYgVVNFKENGVVJMU1RPUkFH
RVNFU1NJT05TKQogICAgIGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9u
ID0gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSkKSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDkz
MjM5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MzggQEAKKzIwMTEtMDgtMTcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjM1NCBhbmQg
PHJkYXI6Ly9wcm9ibGVtLzk5NjUyMDk+CisgICAgICAgIFJlZ3Jlc3Npb246ICBPbiBMaW9uLCBy
ZWRpcmVjdHMgbG9zZSBIVFRQIGF1dGhlbnRpY2F0aW9uIGhlYWRlcnMKKworICAgICAgICBUaGVz
ZSBoYXZlIHRvIGJlIGluIGRpZmZlcmVudCBwYXRocyB0byBwcmV2ZW50IGNyZWRlbnRpYWxzIGZy
b20gbGVha2luZyBvdmVyIGZyb20gdGVzdCB0byB0ZXN0LgorICAgICAgICBTYWQgc2FkIHNhZC4u
LgorICAgICAgICAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtdXJsLXNldHMtbGlua3MtdmlzaXRl
ZC5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9hdXRoZW50aWNhdGlvbi1yZWRpcmVj
dC0xOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvYXV0aGVudGljYXRpb24tcmVk
aXJlY3QtMS9hdXRoZW50aWNhdGlvbi1zZW50LXRvLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1leHBl
Y3RlZC50eHQ6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9hdXRoZW50
aWNhdGlvbi1zZW50LXRvLXJlZGlyZWN0LWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL21pc2MvYXV0aGVudGljYXRpb24tcmVkaXJlY3QtMS9hdXRoZW50aWNhdGlvbi1zZW50LXRv
LXJlZGlyZWN0LWNyb3NzLW9yaWdpbi5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL21pc2MvYXV0aGVudGljYXRpb24tc2VudC10by1yZWRpcmVjdC5odG1sLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvbWlzYy9hdXRoZW50aWNhdGlvbi1yZWRpcmVjdC0xL3Jlc291cmNlczog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL2F1dGhlbnRpY2F0aW9uLXJlZGlyZWN0
LTEvcmVzb3VyY2VzL2F1dGgtZWNoby5waHA6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbWlzYy9yZXNvdXJjZXMvYXV0aC1lY2hvLnBocC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L21pc2MvYXV0aGVudGljYXRpb24tcmVkaXJlY3QtMS9yZXNvdXJjZXMvYXV0aC10aGVuLXJlZGly
ZWN0LnBocDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jlc291cmNl
cy9hdXRoLXRoZW4tcmVkaXJlY3QucGhwLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9hdXRo
ZW50aWNhdGlvbi1yZWRpcmVjdC0yOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2Mv
YXV0aGVudGljYXRpb24tcmVkaXJlY3QtMi9hdXRoZW50aWNhdGlvbi1zZW50LXRvLXJlZGlyZWN0
LXNhbWUtb3JpZ2luLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9t
aXNjL2F1dGhlbnRpY2F0aW9uLXJlZGlyZWN0LTIvYXV0aGVudGljYXRpb24tc2VudC10by1yZWRp
cmVjdC1zYW1lLW9yaWdpbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2Mv
YXV0aGVudGljYXRpb24tcmVkaXJlY3QtMi9yZXNvdXJjZXM6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvbWlzYy9hdXRoZW50aWNhdGlvbi1yZWRpcmVjdC0yL3Jlc291cmNlcy9hdXRoLWVj
aG8ucGhwOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2Vz
L2F1dGgtZWNoby5waHAuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL2F1dGhlbnRpY2F0aW9u
LXJlZGlyZWN0LTIvcmVzb3VyY2VzL2F1dGgtdGhlbi1yZWRpcmVjdC5waHA6IENvcGllZCBmcm9t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMvYXV0aC10aGVuLXJlZGlyZWN0
LnBocC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvYXV0aGVudGljYXRpb24tcmVkaXJlY3Qt
MzogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL2F1dGhlbnRpY2F0aW9uLXJlZGly
ZWN0LTMvYXV0aGVudGljYXRpb24tc2VudC10by1yZWRpcmVjdC1zYW1lLW9yaWdpbi13aXRoLWxv
Y2F0aW9uLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9taXNjL2F1dGhlbnRpY2F0aW9uLXJlZGlyZWN0LTMvYXV0aGVudGljYXRpb24tc2VudC10
by1yZWRpcmVjdC1zYW1lLW9yaWdpbi13aXRoLWxvY2F0aW9uLWNyZWRlbnRpYWxzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9hdXRoZW50aWNhdGlvbi1yZWRpcmVjdC0z
L3Jlc291cmNlczogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL2F1dGhlbnRpY2F0
aW9uLXJlZGlyZWN0LTMvcmVzb3VyY2VzL2F1dGgtZWNoby5waHA6IENvcGllZCBmcm9tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMvYXV0aC1lY2hvLnBocC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL21pc2MvYXV0aGVudGljYXRpb24tcmVkaXJlY3QtMy9yZXNvdXJjZXMvYXV0
aC10aGVuLXJlZGlyZWN0LXdpdGgtdXJsLWNyZWRlbnRpYWxzLnBocDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9taXNjL2F1dGhlbnRpY2F0aW9uLXJlZGlyZWN0LTMvcmVzb3VyY2VzL2F1
dGgtdGhlbi1yZWRpcmVjdC5waHA6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bWlzYy9yZXNvdXJjZXMvYXV0aC10aGVuLXJlZGlyZWN0LnBocC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL21pc2MvYXV0aGVudGljYXRpb24tc2VudC10by1yZWRpcmVjdC1leHBlY3RlZC50eHQ6IFJl
bW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL2F1dGhlbnRpY2F0aW9uLXNlbnQtdG8t
cmVkaXJlY3QuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvcmVzb3Vy
Y2VzL2F1dGgtZWNoby5waHA6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL3Jl
c291cmNlcy9hdXRoLXRoZW4tcmVkaXJlY3QucGhwOiBSZW1vdmVkLgorCiAyMDExLTA4LTE3ICBE
YW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
Lzk5NzEyOTM+IE1pZC13b3JkIGJyZWFrcyBjYW4gb2NjdXIgaW4gdGhlIG1pZGRsZSBvZiBhIHN1
cnJvZ2F0ZSBwYWlyCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMv
c3RhdGUtdXJsLXNldHMtbGlua3MtdmlzaXRlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS11cmwtc2V0cy1saW5rcy12aXNpdGVk
Lmh0bWwJKHJldmlzaW9uIDkzMjM2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVv
YmplY3RzL3N0YXRlLXVybC1zZXRzLWxpbmtzLXZpc2l0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMTMsNiArMTMsOCBAQCBmdW5jdGlvbiBsb2FkZWQoKQogICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKICAgICAgICAgdmFyIHN0eWxlMSA9IHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlci5jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2xpbmsxJykpOwogICAgICAgICB2YXIgc3R5bGUyID0gd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyLmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnbGluazInKSk7CisgICAgICAgIGFsZXJ0KHN0eWxlMS5jb2xvcik7
CisgICAgICAgIGFsZXJ0KHN0eWxlMi5jb2xvcik7CiAgICAgICAgIHZhciByZXN1bHQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJwIik7CiAgICAgICAgIGlmIChzdHlsZTEuY29sb3IgIT0gInJn
YigyNTUsIDE2NSwgMCkiIHx8IHN0eWxlMi5jb2xvciAhPSAicmdiKDI1NSwgMTY1LCAwKSIpCiAg
ICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ID0gIkZBSUwiOwpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9taXNjL2F1dGhlbnRpY2F0aW9uLXNlbnQtdG8tcmVkaXJlY3QtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9hdXRoZW50aWNh
dGlvbi1zZW50LXRvLXJlZGlyZWN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTMyMzYpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYXV0aGVudGljYXRpb24tc2VudC10by1yZWRpcmVj
dC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMjYgKzAsMCBAQAotPHVua25vd24+
IC0gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIC0gUmVzcG9uZGluZyB3aXRoIHRl
c3RVc2VyOnRlc3RQYXNzd29yZAotaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQwMTM4Ci1UaGlzIHRlc3QgbG9hZHMgYSBwaHAgc2NyaXB0IHdoaWNoIGRlbWFuZHMgaHR0
cCBhdXRoZW50aWNhdGlvbiwgdGhlbiB1c2VzIGl0IHRvIHJlZGlyZWN0IHRvIGFub3RoZXIgc2Ny
aXB0IHVzaW5nIHRoYXQgc2hvd3Mgd2hhdCBhdXRoZW50aWNhdGlvbiBoZWFkZXJzIHdlcmUgc2Vu
dCB3aXRoIHRoZSBmaW5hbCByZXF1ZXN0LgotSXQgZG9lcyB0aGlzIG9uY2UgZWFjaCBmb3IgSFRU
UCAzMDEsIDMwMiwgMzAzLCBhbmQgMzA3IHJlZGlyZWN0cy4KLUlmIG5vdCBydW5uaW5nIHVuZGVy
IERSVCwgZW50ZXIgYW55IGNyZWRlbnRpYWxzIHdoZW4gYXNrZWQuCi0KLQotLS0tLS0tLS0KLUZy
YW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCi0tLS0tLS0tLQotUmVzb3Vy
Y2UgbG9hZGVkIHdpdGggSFRUUCBhdXRoZW50aWNhdGlvbiB1c2VybmFtZSAnJyBhbmQgcGFzc3dv
cmQgJycKLQotLS0tLS0tLS0KLUZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4t
LT4nCi0tLS0tLS0tLQotUmVzb3VyY2UgbG9hZGVkIHdpdGggSFRUUCBhdXRoZW50aWNhdGlvbiB1
c2VybmFtZSAnJyBhbmQgcGFzc3dvcmQgJycKLQotLS0tLS0tLS0KLUZyYW1lOiAnPCEtLWZyYW1l
UGF0aCAvLzwhLS1mcmFtZTItLT4tLT4nCi0tLS0tLS0tLQotUmVzb3VyY2UgbG9hZGVkIHdpdGgg
SFRUUCBhdXRoZW50aWNhdGlvbiB1c2VybmFtZSAnJyBhbmQgcGFzc3dvcmQgJycKLQotLS0tLS0t
LS0KLUZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTMtLT4tLT4nCi0tLS0tLS0tLQot
UmVzb3VyY2UgbG9hZGVkIHdpdGggSFRUUCBhdXRoZW50aWNhdGlvbiB1c2VybmFtZSAnJyBhbmQg
cGFzc3dvcmQgJycKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9hdXRoZW50aWNh
dGlvbi1zZW50LXRvLXJlZGlyZWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9taXNjL2F1dGhlbnRpY2F0aW9uLXNlbnQtdG8tcmVkaXJlY3QuaHRtbAkocmV2aXNp
b24gOTMyMzYpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYXV0aGVudGljYXRpb24t
c2VudC10by1yZWRpcmVjdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ2ICswLDAgQEAKLTxz
Y3JpcHQ+Ci0KLXZhciBmcmFtZXNMb2FkZWQgPSAwOwotdmFyIHJlZGlyZWN0Q29kZXMgPSBuZXcg
QXJyYXkoKTsKLXJlZGlyZWN0Q29kZXNbMF0gPSAiMzAxIjsKLXJlZGlyZWN0Q29kZXNbMV0gPSAi
MzAyIjsKLXJlZGlyZWN0Q29kZXNbMl0gPSAiMzAzIjsKLXJlZGlyZWN0Q29kZXNbM10gPSAiMzA3
IjsKLQotZnVuY3Rpb24gZnJhbWVMb2FkZWQoKQotewotICAgIGlmICgrK2ZyYW1lc0xvYWRlZCA9
PSA0KSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgCi0gICAgYXBwZW5kRnJhbWUocmVkaXJlY3RDb2Rlc1tmcmFtZXNMb2FkZWRd
KTsKLX0KLQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNU
ZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0SGFuZGxlc0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlcyh0cnVlKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBdXRoZW50aWNh
dGlvblVzZXJuYW1lKCJ0ZXN0VXNlciIpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEF1
dGhlbnRpY2F0aW9uUGFzc3dvcmQoInRlc3RQYXNzd29yZCIpOwotfQotCi1mdW5jdGlvbiBhcHBl
bmRGcmFtZShjb2RlKQotewotICAgIGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUi
KTsgCi0gICAgaS5zZXRBdHRyaWJ1dGUoInNyYyIsICJodHRwOi8vbG9jYWxob3N0OjgwMDAvbWlz
Yy9yZXNvdXJjZXMvYXV0aC10aGVuLXJlZGlyZWN0LnBocD9yZWRpcmVjdD0iICsgY29kZSk7IAot
ICAgIGkuc2V0QXR0cmlidXRlKCJvbmxvYWQiLCAiZnJhbWVMb2FkZWQoKSIpOwotICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoaSk7Ci19Ci0KLTwvc2NyaXB0PgotCi08Ym9keSBvbmxvYWQ9
ImFwcGVuZEZyYW1lKCczMDEnKTsiPgotaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQwMTM4PGJyPgotVGhpcyB0ZXN0IGxvYWRzIGEgcGhwIHNjcmlwdCB3aGljaCBkZW1h
bmRzIGh0dHAgYXV0aGVudGljYXRpb24sIHRoZW4gdXNlcyBpdCB0byByZWRpcmVjdCB0byBhbm90
aGVyIHNjcmlwdCB1c2luZyB0aGF0IHNob3dzIHdoYXQgYXV0aGVudGljYXRpb24gaGVhZGVycyB3
ZXJlIHNlbnQgd2l0aCB0aGUgZmluYWwgcmVxdWVzdC48YnI+Ci1JdCBkb2VzIHRoaXMgb25jZSBl
YWNoIGZvciBIVFRQIDMwMSwgMzAyLCAzMDMsIGFuZCAzMDcgcmVkaXJlY3RzLjxicj4KLUlmIG5v
dCBydW5uaW5nIHVuZGVyIERSVCwgZW50ZXIgYW55IGNyZWRlbnRpYWxzIHdoZW4gYXNrZWQuPGJy
PgotPC9ib2R5PgotCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYXV0aGVudGlj
YXRpb24tcmVkaXJlY3QtMS9hdXRoZW50aWNhdGlvbi1zZW50LXRvLXJlZGlyZWN0LWNyb3NzLW9y
aWdpbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9t
aXNjL2F1dGhlbnRpY2F0aW9uLXJlZGlyZWN0LTEvYXV0aGVudGljYXRpb24tc2VudC10by1yZWRp
cmVjdC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5MzIxMSkJKGZyb20gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2F1dGhlbnRpY2F0aW9uLXNlbnQtdG8tcmVkaXJlY3Qt
ZXhwZWN0ZWQudHh0OjkzMjExKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2F1dGhl
bnRpY2F0aW9uLXJlZGlyZWN0LTEvYXV0aGVudGljYXRpb24tc2VudC10by1yZWRpcmVjdC1jcm9z
cy1vcmlnaW4tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjYgQEAKKzx1
bmtub3duPiAtIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAtIFJlc3BvbmRpbmcg
d2l0aCB0ZXN0VXNlcjp0ZXN0UGFzc3dvcmQKK2h0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MDEzOAorVGhpcyB0ZXN0IGxvYWRzIGEgcGhwIHNjcmlwdCB3aGljaCBkZW1h
bmRzIGh0dHAgYXV0aGVudGljYXRpb24sIHRoZW4gdXNlcyBpdCB0byByZWRpcmVjdCB0byBhbm90
aGVyIHNjcmlwdCB1c2luZyB0aGF0IHNob3dzIHdoYXQgYXV0aGVudGljYXRpb24gaGVhZGVycyB3
ZXJlIHNlbnQgd2l0aCB0aGUgZmluYWwgcmVxdWVzdC4KK0l0IGRvZXMgdGhpcyBvbmNlIGVhY2gg
Zm9yIEhUVFAgMzAxLCAzMDIsIDMwMywgYW5kIDMwNyByZWRpcmVjdHMuCitJZiBub3QgcnVubmlu
ZyB1bmRlciBEUlQsIGVudGVyIGFueSBjcmVkZW50aWFscyB3aGVuIGFza2VkLgorCisKKy0tLS0t
LS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0K
K1Jlc291cmNlIGxvYWRlZCB3aXRoIEhUVFAgYXV0aGVudGljYXRpb24gdXNlcm5hbWUgJycgYW5k
IHBhc3N3b3JkICcnCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJh
bWUxLS0+LS0+JworLS0tLS0tLS0KK1Jlc291cmNlIGxvYWRlZCB3aXRoIEhUVFAgYXV0aGVudGlj
YXRpb24gdXNlcm5hbWUgJycgYW5kIHBhc3N3b3JkICcnCisKKy0tLS0tLS0tCitGcmFtZTogJzwh
LS1mcmFtZVBhdGggLy88IS0tZnJhbWUyLS0+LS0+JworLS0tLS0tLS0KK1Jlc291cmNlIGxvYWRl
ZCB3aXRoIEhUVFAgYXV0aGVudGljYXRpb24gdXNlcm5hbWUgJycgYW5kIHBhc3N3b3JkICcnCisK
Ky0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUzLS0+LS0+JworLS0t
LS0tLS0KK1Jlc291cmNlIGxvYWRlZCB3aXRoIEhUVFAgYXV0aGVudGljYXRpb24gdXNlcm5hbWUg
JycgYW5kIHBhc3N3b3JkICcnCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYXV0
aGVudGljYXRpb24tcmVkaXJlY3QtMS9hdXRoZW50aWNhdGlvbi1zZW50LXRvLXJlZGlyZWN0LWNy
b3NzLW9yaWdpbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9taXNjL2F1dGhlbnRpY2F0aW9uLXJlZGlyZWN0LTEvYXV0aGVudGljYXRpb24tc2VudC10
by1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2F1dGhlbnRpY2F0aW9uLXJlZGlyZWN0LTEvYXV0aGVu
dGljYXRpb24tc2VudC10by1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogPHVua25vd24+IC0gZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlIC0gUmVzcG9uZGluZyB3aXRoIHRlc3RVc2VyOnRlc3RQYXNzd29yZAog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMTM4Ci1UaGlzIHRlc3Qg
bG9hZHMgYSBwaHAgc2NyaXB0IHdoaWNoIGRlbWFuZHMgaHR0cCBhdXRoZW50aWNhdGlvbiwgdGhl
biB1c2VzIGl0IHRvIHJlZGlyZWN0IHRvIGFub3RoZXIgc2NyaXB0IHVzaW5nIHRoYXQgc2hvd3Mg
d2hhdCBhdXRoZW50aWNhdGlvbiBoZWFkZXJzIHdlcmUgc2VudCB3aXRoIHRoZSBmaW5hbCByZXF1
ZXN0LgorWW91IHNob3VsZCBsb2FkIHRoaXMgcGFnZSBhdCAxMjcuMC4wLjE6ODAwMCBzbyBsb2Nh
bGhvc3Q6ODAwMCBpcyBjb25zaWRlcmVkIGEgZGlmZmVyZW50IHNlY3VyaXR5IG9yaWdpbi4KK1Ro
aXMgdGVzdCBsb2FkcyBhIHBocCBzY3JpcHQgd2hpY2ggZGVtYW5kcyBodHRwIGF1dGhlbnRpY2F0
aW9uLCB0aGVuIHVzZXMgaXQgdG8gcmVkaXJlY3QgdG8gYW5vdGhlciBzY3JpcHQgaW4gYSBkaWZm
ZXJlbnQgb3JpZ2luIHRoYXQgc2hvd3Mgd2hhdCBhdXRoZW50aWNhdGlvbiBoZWFkZXJzIHdlcmUg
c2VudCB3aXRoIHRoZSBmaW5hbCByZXF1ZXN0LgogSXQgZG9lcyB0aGlzIG9uY2UgZWFjaCBmb3Ig
SFRUUCAzMDEsIDMwMiwgMzAzLCBhbmQgMzA3IHJlZGlyZWN0cy4KIElmIG5vdCBydW5uaW5nIHVu
ZGVyIERSVCwgZW50ZXIgYW55IGNyZWRlbnRpYWxzIHdoZW4gYXNrZWQuCiAKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9hdXRoZW50aWNhdGlvbi1yZWRpcmVjdC0xL2F1dGhlbnRp
Y2F0aW9uLXNlbnQtdG8tcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2F1dGhlbnRpY2F0aW9uLXJlZGlyZWN0LTEvYXV0
aGVudGljYXRpb24tc2VudC10by1yZWRpcmVjdC1jcm9zcy1vcmlnaW4uaHRtbAkocmV2aXNpb24g
OTMyMTEpCShmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9hdXRoZW50aWNhdGlvbi1z
ZW50LXRvLXJlZGlyZWN0Lmh0bWw6OTMyMTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21p
c2MvYXV0aGVudGljYXRpb24tcmVkaXJlY3QtMS9hdXRoZW50aWNhdGlvbi1zZW50LXRvLXJlZGly
ZWN0LWNyb3NzLW9yaWdpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYgQEAKKzxz
Y3JpcHQ+CisKK3ZhciBmcmFtZXNMb2FkZWQgPSAwOwordmFyIHJlZGlyZWN0Q29kZXMgPSBuZXcg
QXJyYXkoKTsKK3JlZGlyZWN0Q29kZXNbMF0gPSAiMzAxIjsKK3JlZGlyZWN0Q29kZXNbMV0gPSAi
MzAyIjsKK3JlZGlyZWN0Q29kZXNbMl0gPSAiMzAzIjsKK3JlZGlyZWN0Q29kZXNbM10gPSAiMzA3
IjsKKworZnVuY3Rpb24gZnJhbWVMb2FkZWQoKQoreworICAgIGlmICgrK2ZyYW1lc0xvYWRlZCA9
PSA0KSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgYXBwZW5kRnJhbWUocmVkaXJlY3RDb2Rlc1tmcmFtZXNMb2FkZWRd
KTsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNU
ZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0SGFuZGxlc0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlcyh0cnVlKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBdXRoZW50aWNh
dGlvblVzZXJuYW1lKCJ0ZXN0VXNlciIpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEF1
dGhlbnRpY2F0aW9uUGFzc3dvcmQoInRlc3RQYXNzd29yZCIpOworfQorCitmdW5jdGlvbiBhcHBl
bmRGcmFtZShjb2RlKQoreworICAgIGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUi
KTsgCisgICAgaS5zZXRBdHRyaWJ1dGUoInNyYyIsICJodHRwOi8vbG9jYWxob3N0OjgwMDAvbWlz
Yy9yZXNvdXJjZXMvYXV0aC10aGVuLXJlZGlyZWN0LnBocD9yZWRpcmVjdD0iICsgY29kZSk7IAor
ICAgIGkuc2V0QXR0cmlidXRlKCJvbmxvYWQiLCAiZnJhbWVMb2FkZWQoKSIpOworICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoaSk7Cit9CisKKzwvc2NyaXB0PgorCis8Ym9keSBvbmxvYWQ9
ImFwcGVuZEZyYW1lKCczMDEnKTsiPgoraHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQwMTM4PGJyPgorVGhpcyB0ZXN0IGxvYWRzIGEgcGhwIHNjcmlwdCB3aGljaCBkZW1h
bmRzIGh0dHAgYXV0aGVudGljYXRpb24sIHRoZW4gdXNlcyBpdCB0byByZWRpcmVjdCB0byBhbm90
aGVyIHNjcmlwdCB1c2luZyB0aGF0IHNob3dzIHdoYXQgYXV0aGVudGljYXRpb24gaGVhZGVycyB3
ZXJlIHNlbnQgd2l0aCB0aGUgZmluYWwgcmVxdWVzdC48YnI+CitJdCBkb2VzIHRoaXMgb25jZSBl
YWNoIGZvciBIVFRQIDMwMSwgMzAyLCAzMDMsIGFuZCAzMDcgcmVkaXJlY3RzLjxicj4KK0lmIG5v
dCBydW5uaW5nIHVuZGVyIERSVCwgZW50ZXIgYW55IGNyZWRlbnRpYWxzIHdoZW4gYXNrZWQuPGJy
PgorPC9ib2R5PgorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYXV0aGVudGlj
YXRpb24tcmVkaXJlY3QtMS9hdXRoZW50aWNhdGlvbi1zZW50LXRvLXJlZGlyZWN0LWNyb3NzLW9y
aWdpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9hdXRo
ZW50aWNhdGlvbi1yZWRpcmVjdC0xL2F1dGhlbnRpY2F0aW9uLXNlbnQtdG8tcmVkaXJlY3QtY3Jv
c3Mtb3JpZ2luLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21p
c2MvYXV0aGVudGljYXRpb24tcmVkaXJlY3QtMS9hdXRoZW50aWNhdGlvbi1zZW50LXRvLXJlZGly
ZWN0LWNyb3NzLW9yaWdpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBAIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKIGZ1bmN0aW9uIGFwcGVuZEZyYW1lKGNv
ZGUpCiB7CiAgICAgaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOyAKLSAgICBp
LnNldEF0dHJpYnV0ZSgic3JjIiwgImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9taXNjL3Jlc291cmNl
cy9hdXRoLXRoZW4tcmVkaXJlY3QucGhwP3JlZGlyZWN0PSIgKyBjb2RlKTsgCisgICAgaS5zZXRB
dHRyaWJ1dGUoInNyYyIsICJodHRwOi8vbG9jYWxob3N0OjgwMDAvbWlzYy9hdXRoZW50aWNhdGlv
bi1yZWRpcmVjdC0xL3Jlc291cmNlcy9hdXRoLXRoZW4tcmVkaXJlY3QucGhwP3JlZGlyZWN0PSIg
KyBjb2RlKTsgCiAgICAgaS5zZXRBdHRyaWJ1dGUoIm9ubG9hZCIsICJmcmFtZUxvYWRlZCgpIik7
CiAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpKTsKIH0KQEAgLTM5LDcgKzM5LDggQEAg
ZnVuY3Rpb24gYXBwZW5kRnJhbWUoY29kZSkKIAogPGJvZHkgb25sb2FkPSJhcHBlbmRGcmFtZSgn
MzAxJyk7Ij4KIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDEzODxi
cj4KLVRoaXMgdGVzdCBsb2FkcyBhIHBocCBzY3JpcHQgd2hpY2ggZGVtYW5kcyBodHRwIGF1dGhl
bnRpY2F0aW9uLCB0aGVuIHVzZXMgaXQgdG8gcmVkaXJlY3QgdG8gYW5vdGhlciBzY3JpcHQgdXNp
bmcgdGhhdCBzaG93cyB3aGF0IGF1dGhlbnRpY2F0aW9uIGhlYWRlcnMgd2VyZSBzZW50IHdpdGgg
dGhlIGZpbmFsIHJlcXVlc3QuPGJyPgorWW91IHNob3VsZCBsb2FkIHRoaXMgcGFnZSBhdCAxMjcu
MC4wLjE6ODAwMCBzbyBsb2NhbGhvc3Q6ODAwMCBpcyBjb25zaWRlcmVkIGEgZGlmZmVyZW50IHNl
Y3VyaXR5IG9yaWdpbi48YnI+CitUaGlzIHRlc3QgbG9hZHMgYSBwaHAgc2NyaXB0IHdoaWNoIGRl
bWFuZHMgaHR0cCBhdXRoZW50aWNhdGlvbiwgdGhlbiB1c2VzIGl0IHRvIHJlZGlyZWN0IHRvIGFu
b3RoZXIgc2NyaXB0IGluIGEgZGlmZmVyZW50IG9yaWdpbiB0aGF0IHNob3dzIHdoYXQgYXV0aGVu
dGljYXRpb24gaGVhZGVycyB3ZXJlIHNlbnQgd2l0aCB0aGUgZmluYWwgcmVxdWVzdC48YnI+CiBJ
dCBkb2VzIHRoaXMgb25jZSBlYWNoIGZvciBIVFRQIDMwMSwgMzAyLCAzMDMsIGFuZCAzMDcgcmVk
aXJlY3RzLjxicj4KIElmIG5vdCBydW5uaW5nIHVuZGVyIERSVCwgZW50ZXIgYW55IGNyZWRlbnRp
YWxzIHdoZW4gYXNrZWQuPGJyPgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9taXNjL2F1dGhlbnRpY2F0aW9uLXJlZGlyZWN0LTEvcmVzb3VyY2VzL2F1dGgtZWNoby5waHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2F1dGhlbnRpY2F0aW9u
LXJlZGlyZWN0LTEvcmVzb3VyY2VzL2F1dGgtZWNoby5waHAJKHJldmlzaW9uIDkzMjExKQkoZnJv
bSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2F1dGgtZWNoby5waHA6OTMy
MTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYXV0aGVudGljYXRpb24tcmVkaXJl
Y3QtMS9yZXNvdXJjZXMvYXV0aC1lY2hvLnBocAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMg
QEAKKzw/cGhwCitlY2hvICJSZXNvdXJjZSBsb2FkZWQgd2l0aCBIVFRQIGF1dGhlbnRpY2F0aW9u
IHVzZXJuYW1lICciLCAkX1NFUlZFUlsiUEhQX0FVVEhfVVNFUiJdLCAiJyBhbmQgcGFzc3dvcmQg
JyIsICRfU0VSVkVSWyJQSFBfQVVUSF9QVyJdLCAiJ1xuIjsKKz8+CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL21pc2MvYXV0aGVudGljYXRpb24tcmVkaXJlY3QtMS9yZXNvdXJjZXMvYXV0
aC10aGVuLXJlZGlyZWN0LnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L21pc2MvYXV0aGVudGljYXRpb24tcmVkaXJlY3QtMS9yZXNvdXJjZXMvYXV0aC10aGVuLXJlZGly
ZWN0LnBocAkocmV2aXNpb24gOTMyMTEpCShmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlz
Yy9yZXNvdXJjZXMvYXV0aC10aGVuLXJlZGlyZWN0LnBocDo5MzIxMSkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWlzYy9hdXRoZW50aWNhdGlvbi1yZWRpcmVjdC0xL3Jlc291cmNlcy9hdXRo
LXRoZW4tcmVkaXJlY3QucGhwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjEgQEAKKzw/cGhw
CisKKy8vIHByb21wdCBmb3IgbG9naW4gaWYgbm90IGFscmVhZHkgcHJlc2VudAoraWYgKCFzdHJs
ZW4oJF9TRVJWRVJbIlBIUF9BVVRIX1VTRVIiXSkgfHwgIXN0cmxlbigkX1NFUlZFUlsiUEhQX0FV
VEhfUFciXSkpCit7CisgICAgaGVhZGVyKCJXV1ctQXV0aGVudGljYXRlOiBCYXNpYyByZWFsbT1c
IldlYktpdCBCdWcgVGVzdFwiIik7CisgICAgaGVhZGVyKCJIVFRQLzEuMCA0MDEgVW5hdXRob3Jp
emVkIik7CisgICAgZXhpdDsKK30KKworLy8gZG8gcmVkaXJlY3QgaWYgY2FsbGVkIGZvcgorJHJl
ZGlyZWN0X2NvZGVzPWFycmF5KCIzMDEiLCAiMzAyIiwgIjMwMyIsICIzMDciKTsKK2lmIChpbl9h
cnJheSgkX0dFVFsicmVkaXJlY3QiXSwgJHJlZGlyZWN0X2NvZGVzKSkKK3sKKyAgICBoZWFkZXIo
IkxvY2F0aW9uOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9yZXNvdXJjZXMvYXV0aC1lY2hv
LnBocCIsIHRydWUsICRfR0VUWyJyZWRpcmVjdCJdKTsKKyAgICBleGl0OworfQorCitlY2hvICJV
bmtub3duIHJlZGlyZWN0IHBhcmFtZXRlciBzZW50IjsKKworPz4KSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWlzYy9hdXRoZW50aWNhdGlvbi1yZWRpcmVjdC0xL3Jlc291cmNlcy9hdXRo
LXRoZW4tcmVkaXJlY3QucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bWlzYy9hdXRoZW50aWNhdGlvbi1yZWRpcmVjdC0xL3Jlc291cmNlcy9hdXRoLXRoZW4tcmVkaXJl
Y3QucGhwCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2F1dGhl
bnRpY2F0aW9uLXJlZGlyZWN0LTEvcmVzb3VyY2VzL2F1dGgtdGhlbi1yZWRpcmVjdC5waHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyLDcgKzEyLDcgQEAgaWYgKCFzdHJsZW4oJF9TRVJWRVJbIlBIUF9B
VVRIX1VTRVIiXSkgfAogJHJlZGlyZWN0X2NvZGVzPWFycmF5KCIzMDEiLCAiMzAyIiwgIjMwMyIs
ICIzMDciKTsKIGlmIChpbl9hcnJheSgkX0dFVFsicmVkaXJlY3QiXSwgJHJlZGlyZWN0X2NvZGVz
KSkKIHsKLSAgICBoZWFkZXIoIkxvY2F0aW9uOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9y
ZXNvdXJjZXMvYXV0aC1lY2hvLnBocCIsIHRydWUsICRfR0VUWyJyZWRpcmVjdCJdKTsKKyAgICBo
ZWFkZXIoIkxvY2F0aW9uOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9hdXRoZW50aWNhdGlv
bi1yZWRpcmVjdC0xL3Jlc291cmNlcy9hdXRoLWVjaG8ucGhwIiwgdHJ1ZSwgJF9HRVRbInJlZGly
ZWN0Il0pOwogICAgIGV4aXQ7CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlz
Yy9hdXRoZW50aWNhdGlvbi1yZWRpcmVjdC0yL2F1dGhlbnRpY2F0aW9uLXNlbnQtdG8tcmVkaXJl
Y3Qtc2FtZS1vcmlnaW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbWlzYy9hdXRoZW50aWNhdGlvbi1yZWRpcmVjdC0yL2F1dGhlbnRpY2F0aW9uLXNl
bnQtdG8tcmVkaXJlY3Qtc2FtZS1vcmlnaW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2F1dGhlbnRpY2F0aW9uLXJlZGlyZWN0LTIvYXV0
aGVudGljYXRpb24tc2VudC10by1yZWRpcmVjdC1zYW1lLW9yaWdpbi1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKzx1bmtub3duPiAtIGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSAtIFJlc3BvbmRpbmcgd2l0aCB0ZXN0VXNlcjp0ZXN0UGFzc3dvcmQK
K2h0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjM1NAorWW91IHNob3Vs
ZCBsb2FkIHRoaXMgcGFnZSBhdCAxMjcuMC4wLjE6ODAwMCBiZWNhdXNlIHRoZSB0ZXN0IHJlbGll
cyBvbiByZWRpcmVjdHMgd2l0aGluIHRoZSAxMjcuMC4wLjE6ODAwMCBzZWN1cml0eSBvcmlnaW4u
CitUaGlzIHRlc3QgbG9hZHMgYSBwaHAgc2NyaXB0IHdoaWNoIGRlbWFuZHMgaHR0cCBhdXRoZW50
aWNhdGlvbiwgdGhlbiB1c2VzIGl0IHRvIHJlZGlyZWN0IHRvIGFub3RoZXIgc2NyaXB0IGluIHRo
ZSBzYW1lIG9yaWdpbiB0aGF0IHNob3dzIHdoYXQgYXV0aGVudGljYXRpb24gaGVhZGVycyB3ZXJl
IHNlbnQgd2l0aCB0aGUgZmluYWwgcmVxdWVzdC4KK0l0IGRvZXMgdGhpcyBvbmNlIGVhY2ggZm9y
IEhUVFAgMzAxLCAzMDIsIDMwMywgYW5kIDMwNyByZWRpcmVjdHMuCitJZiBub3QgcnVubmluZyB1
bmRlciBEUlQsIGVudGVyIGFueSBjcmVkZW50aWFscyB3aGVuIGFza2VkLgorCisKKy0tLS0tLS0t
CitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK1Jl
c291cmNlIGxvYWRlZCB3aXRoIEhUVFAgYXV0aGVudGljYXRpb24gdXNlcm5hbWUgJ3Rlc3RVc2Vy
JyBhbmQgcGFzc3dvcmQgJ3Rlc3RQYXNzd29yZCcKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZy
YW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4nCistLS0tLS0tLQorUmVzb3VyY2UgbG9hZGVkIHdp
dGggSFRUUCBhdXRoZW50aWNhdGlvbiB1c2VybmFtZSAndGVzdFVzZXInIGFuZCBwYXNzd29yZCAn
dGVzdFBhc3N3b3JkJworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZy
YW1lMi0tPi0tPicKKy0tLS0tLS0tCitSZXNvdXJjZSBsb2FkZWQgd2l0aCBIVFRQIGF1dGhlbnRp
Y2F0aW9uIHVzZXJuYW1lICd0ZXN0VXNlcicgYW5kIHBhc3N3b3JkICd0ZXN0UGFzc3dvcmQnCisK
Ky0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUzLS0+LS0+JworLS0t
LS0tLS0KK1Jlc291cmNlIGxvYWRlZCB3aXRoIEhUVFAgYXV0aGVudGljYXRpb24gdXNlcm5hbWUg
J3Rlc3RVc2VyJyBhbmQgcGFzc3dvcmQgJ3Rlc3RQYXNzd29yZCcKSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWlzYy9hdXRoZW50aWNhdGlvbi1yZWRpcmVjdC0yL2F1dGhlbnRpY2F0aW9u
LXNlbnQtdG8tcmVkaXJlY3Qtc2FtZS1vcmlnaW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL21pc2MvYXV0aGVudGljYXRpb24tcmVkaXJlY3QtMi9hdXRoZW50aWNh
dGlvbi1zZW50LXRvLXJlZGlyZWN0LXNhbWUtb3JpZ2luLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYXV0aGVudGljYXRpb24tcmVkaXJlY3QtMi9hdXRo
ZW50aWNhdGlvbi1zZW50LXRvLXJlZGlyZWN0LXNhbWUtb3JpZ2luLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNDcgQEAKKzxzY3JpcHQ+CisKK3ZhciBmcmFtZXNMb2FkZWQgPSAwOwordmFy
IHJlZGlyZWN0Q29kZXMgPSBuZXcgQXJyYXkoKTsKK3JlZGlyZWN0Q29kZXNbMF0gPSAiMzAxIjsK
K3JlZGlyZWN0Q29kZXNbMV0gPSAiMzAyIjsKK3JlZGlyZWN0Q29kZXNbMl0gPSAiMzAzIjsKK3Jl
ZGlyZWN0Q29kZXNbM10gPSAiMzA3IjsKKworZnVuY3Rpb24gZnJhbWVMb2FkZWQoKQoreworICAg
IGlmICgrK2ZyYW1lc0xvYWRlZCA9PSA0KSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgYXBwZW5kRnJhbWUocmVkaXJl
Y3RDb2Rlc1tmcmFtZXNMb2FkZWRdKTsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0
SGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyh0cnVlKTsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKCJ0ZXN0VXNlciIpOworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLnNldEF1dGhlbnRpY2F0aW9uUGFzc3dvcmQoInRlc3RQYXNzd29yZCIp
OworfQorCitmdW5jdGlvbiBhcHBlbmRGcmFtZShjb2RlKQoreworICAgIGkgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJpZnJhbWUiKTsgCisgICAgaS5zZXRBdHRyaWJ1dGUoInNyYyIsICJodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9hdXRoZW50aWNhdGlvbi1yZWRpcmVjdC0yL3Jlc291cmNl
cy9hdXRoLXRoZW4tcmVkaXJlY3QucGhwP3JlZGlyZWN0PSIgKyBjb2RlKTsgCisgICAgaS5zZXRB
dHRyaWJ1dGUoIm9ubG9hZCIsICJmcmFtZUxvYWRlZCgpIik7CisgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChpKTsKK30KKworPC9zY3JpcHQ+CisKKzxib2R5IG9ubG9hZD0iYXBwZW5kRnJh
bWUoJzMwMScpOyI+CitodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYz
NTQ8YnI+CitZb3Ugc2hvdWxkIGxvYWQgdGhpcyBwYWdlIGF0IDEyNy4wLjAuMTo4MDAwIGJlY2F1
c2UgdGhlIHRlc3QgcmVsaWVzIG9uIHJlZGlyZWN0cyB3aXRoaW4gdGhlIDEyNy4wLjAuMTo4MDAw
IHNlY3VyaXR5IG9yaWdpbi48YnI+CitUaGlzIHRlc3QgbG9hZHMgYSBwaHAgc2NyaXB0IHdoaWNo
IGRlbWFuZHMgaHR0cCBhdXRoZW50aWNhdGlvbiwgdGhlbiB1c2VzIGl0IHRvIHJlZGlyZWN0IHRv
IGFub3RoZXIgc2NyaXB0IGluIHRoZSBzYW1lIG9yaWdpbiB0aGF0IHNob3dzIHdoYXQgYXV0aGVu
dGljYXRpb24gaGVhZGVycyB3ZXJlIHNlbnQgd2l0aCB0aGUgZmluYWwgcmVxdWVzdC48YnI+CitJ
dCBkb2VzIHRoaXMgb25jZSBlYWNoIGZvciBIVFRQIDMwMSwgMzAyLCAzMDMsIGFuZCAzMDcgcmVk
aXJlY3RzLjxicj4KK0lmIG5vdCBydW5uaW5nIHVuZGVyIERSVCwgZW50ZXIgYW55IGNyZWRlbnRp
YWxzIHdoZW4gYXNrZWQuPGJyPgorPC9ib2R5PgorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL21pc2MvYXV0aGVudGljYXRpb24tcmVkaXJlY3QtMi9yZXNvdXJjZXMvYXV0aC1lY2hvLnBo
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYXV0aGVudGljYXRp
b24tcmVkaXJlY3QtMi9yZXNvdXJjZXMvYXV0aC1lY2hvLnBocAkocmV2aXNpb24gOTMyMTEpCShm
cm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMvYXV0aC1lY2hvLnBocDo5
MzIxMSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9hdXRoZW50aWNhdGlvbi1yZWRp
cmVjdC0yL3Jlc291cmNlcy9hdXRoLWVjaG8ucGhwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MyBAQAorPD9waHAKK2VjaG8gIlJlc291cmNlIGxvYWRlZCB3aXRoIEhUVFAgYXV0aGVudGljYXRp
b24gdXNlcm5hbWUgJyIsICRfU0VSVkVSWyJQSFBfQVVUSF9VU0VSIl0sICInIGFuZCBwYXNzd29y
ZCAnIiwgJF9TRVJWRVJbIlBIUF9BVVRIX1BXIl0sICInXG4iOworPz4KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbWlzYy9hdXRoZW50aWNhdGlvbi1yZWRpcmVjdC0yL3Jlc291cmNlcy9h
dXRoLXRoZW4tcmVkaXJlY3QucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWlzYy9hdXRoZW50aWNhdGlvbi1yZWRpcmVjdC0yL3Jlc291cmNlcy9hdXRoLXRoZW4tcmVk
aXJlY3QucGhwCShyZXZpc2lvbiA5MzIxMSkJKGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9t
aXNjL3Jlc291cmNlcy9hdXRoLXRoZW4tcmVkaXJlY3QucGhwOjkzMjExKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9taXNjL2F1dGhlbnRpY2F0aW9uLXJlZGlyZWN0LTIvcmVzb3VyY2VzL2F1
dGgtdGhlbi1yZWRpcmVjdC5waHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMSBAQAorPD9w
aHAKKworLy8gcHJvbXB0IGZvciBsb2dpbiBpZiBub3QgYWxyZWFkeSBwcmVzZW50CitpZiAoIXN0
cmxlbigkX1NFUlZFUlsiUEhQX0FVVEhfVVNFUiJdKSB8fCAhc3RybGVuKCRfU0VSVkVSWyJQSFBf
QVVUSF9QVyJdKSkKK3sKKyAgICBoZWFkZXIoIldXVy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxt
PVwiV2ViS2l0IEJ1ZyBUZXN0XCIiKTsKKyAgICBoZWFkZXIoIkhUVFAvMS4wIDQwMSBVbmF1dGhv
cml6ZWQiKTsKKyAgICBleGl0OworfQorCisvLyBkbyByZWRpcmVjdCBpZiBjYWxsZWQgZm9yCisk
cmVkaXJlY3RfY29kZXM9YXJyYXkoIjMwMSIsICIzMDIiLCAiMzAzIiwgIjMwNyIpOworaWYgKGlu
X2FycmF5KCRfR0VUWyJyZWRpcmVjdCJdLCAkcmVkaXJlY3RfY29kZXMpKQoreworICAgIGhlYWRl
cigiTG9jYXRpb246IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL3Jlc291cmNlcy9hdXRoLWVj
aG8ucGhwIiwgdHJ1ZSwgJF9HRVRbInJlZGlyZWN0Il0pOworICAgIGV4aXQ7Cit9CisKK2VjaG8g
IlVua25vd24gcmVkaXJlY3QgcGFyYW1ldGVyIHNlbnQiOworCis/PgpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9taXNjL2F1dGhlbnRpY2F0aW9uLXJlZGlyZWN0LTIvcmVzb3VyY2VzL2F1
dGgtdGhlbi1yZWRpcmVjdC5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9taXNjL2F1dGhlbnRpY2F0aW9uLXJlZGlyZWN0LTIvcmVzb3VyY2VzL2F1dGgtdGhlbi1yZWRp
cmVjdC5waHAJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYXV0
aGVudGljYXRpb24tcmVkaXJlY3QtMi9yZXNvdXJjZXMvYXV0aC10aGVuLXJlZGlyZWN0LnBocAko
d29ya2luZyBjb3B5KQpAQCAtMTIsNyArMTIsNyBAQCBpZiAoIXN0cmxlbigkX1NFUlZFUlsiUEhQ
X0FVVEhfVVNFUiJdKSB8CiAkcmVkaXJlY3RfY29kZXM9YXJyYXkoIjMwMSIsICIzMDIiLCAiMzAz
IiwgIjMwNyIpOwogaWYgKGluX2FycmF5KCRfR0VUWyJyZWRpcmVjdCJdLCAkcmVkaXJlY3RfY29k
ZXMpKQogewotICAgIGhlYWRlcigiTG9jYXRpb246IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNj
L3Jlc291cmNlcy9hdXRoLWVjaG8ucGhwIiwgdHJ1ZSwgJF9HRVRbInJlZGlyZWN0Il0pOworICAg
IGhlYWRlcigiTG9jYXRpb246IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2F1dGhlbnRpY2F0
aW9uLXJlZGlyZWN0LTIvcmVzb3VyY2VzL2F1dGgtZWNoby5waHAiLCB0cnVlLCAkX0dFVFsicmVk
aXJlY3QiXSk7CiAgICAgZXhpdDsKIH0KIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9t
aXNjL2F1dGhlbnRpY2F0aW9uLXJlZGlyZWN0LTMvYXV0aGVudGljYXRpb24tc2VudC10by1yZWRp
cmVjdC1zYW1lLW9yaWdpbi13aXRoLWxvY2F0aW9uLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYXV0aGVudGljYXRpb24t
cmVkaXJlY3QtMy9hdXRoZW50aWNhdGlvbi1zZW50LXRvLXJlZGlyZWN0LXNhbWUtb3JpZ2luLXdp
dGgtbG9jYXRpb24tY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2F1dGhlbnRpY2F0aW9uLXJlZGlyZWN0LTMvYXV0aGVu
dGljYXRpb24tc2VudC10by1yZWRpcmVjdC1zYW1lLW9yaWdpbi13aXRoLWxvY2F0aW9uLWNyZWRl
bnRpYWxzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNyBAQAoraHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MzU0CitZb3Ugc2hvdWxkIGxvYWQg
dGhpcyBwYWdlIGF0IDEyNy4wLjAuMTo4MDAwIGJlY2F1c2UgdGhlIHRlc3QgcmVsaWVzIG9uIHJl
ZGlyZWN0cyB3aXRoaW4gdGhlIDEyNy4wLjAuMTo4MDAwIHNlY3VyaXR5IG9yaWdpbi4KK1RoaXMg
dGVzdCBsb2FkcyBhIHBocCBzY3JpcHQgd2hpY2ggZGVtYW5kcyBodHRwIGF1dGhlbnRpY2F0aW9u
LCB0aGVuIHVzZXMgaXQgdG8gcmVkaXJlY3QgdG8gYW5vdGhlciBzY3JpcHQgaW4gdGhlIHNhbWUg
b3JpZ2luIHRoYXQgc2hvd3Mgd2hhdCBhdXRoZW50aWNhdGlvbiBoZWFkZXJzIHdlcmUgc2VudCB3
aXRoIHRoZSBmaW5hbCByZXF1ZXN0LgorVGhlIHJlZGlyZWN0IGluY2x1ZGVzIGNyZWRlbnRpYWxz
IGluIHRoZSBsb2NhdGlvbiB1cmwsIGFuZCB0aGV5IHNob3VsZCBiZSBwcmVmZXJyZWQgb3ZlciBj
cmVkZW50aWFscyB0aGF0IFdlYkNvcmUgaGFzIGNhY2hlZC4KK0l0IGRvZXMgdGhpcyBvbmNlIGVh
Y2ggZm9yIEhUVFAgMzAxLCAzMDIsIDMwMywgYW5kIDMwNyByZWRpcmVjdHMuCitJZiBub3QgcnVu
bmluZyB1bmRlciBEUlQsIGVudGVyIGFueSBjcmVkZW50aWFscyB3aGVuIGFza2VkLgorCisKKy0t
LS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0t
LS0KK1Jlc291cmNlIGxvYWRlZCB3aXRoIEhUVFAgYXV0aGVudGljYXRpb24gdXNlcm5hbWUgJ3Jl
ZGlyZWN0dXNlcicgYW5kIHBhc3N3b3JkICdyZWRpcmVjdHBhc3N3b3JkJworCistLS0tLS0tLQor
RnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0tPicKKy0tLS0tLS0tCitSZXNv
dXJjZSBsb2FkZWQgd2l0aCBIVFRQIGF1dGhlbnRpY2F0aW9uIHVzZXJuYW1lICdyZWRpcmVjdHVz
ZXInIGFuZCBwYXNzd29yZCAncmVkaXJlY3RwYXNzd29yZCcKKworLS0tLS0tLS0KK0ZyYW1lOiAn
PCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTItLT4tLT4nCistLS0tLS0tLQorUmVzb3VyY2UgbG9h
ZGVkIHdpdGggSFRUUCBhdXRoZW50aWNhdGlvbiB1c2VybmFtZSAncmVkaXJlY3R1c2VyJyBhbmQg
cGFzc3dvcmQgJ3JlZGlyZWN0cGFzc3dvcmQnCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFt
ZVBhdGggLy88IS0tZnJhbWUzLS0+LS0+JworLS0tLS0tLS0KK1Jlc291cmNlIGxvYWRlZCB3aXRo
IEhUVFAgYXV0aGVudGljYXRpb24gdXNlcm5hbWUgJ3JlZGlyZWN0dXNlcicgYW5kIHBhc3N3b3Jk
ICdyZWRpcmVjdHBhc3N3b3JkJwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2F1
dGhlbnRpY2F0aW9uLXJlZGlyZWN0LTMvYXV0aGVudGljYXRpb24tc2VudC10by1yZWRpcmVjdC1z
YW1lLW9yaWdpbi13aXRoLWxvY2F0aW9uLWNyZWRlbnRpYWxzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2F1dGhlbnRpY2F0aW9uLXJlZGlyZWN0LTMvYXV0
aGVudGljYXRpb24tc2VudC10by1yZWRpcmVjdC1zYW1lLW9yaWdpbi13aXRoLWxvY2F0aW9uLWNy
ZWRlbnRpYWxzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21p
c2MvYXV0aGVudGljYXRpb24tcmVkaXJlY3QtMy9hdXRoZW50aWNhdGlvbi1zZW50LXRvLXJlZGly
ZWN0LXNhbWUtb3JpZ2luLXdpdGgtbG9jYXRpb24tY3JlZGVudGlhbHMuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw0OCBAQAorPHNjcmlwdD4KKwordmFyIGZyYW1lc0xvYWRlZCA9IDA7Cit2
YXIgcmVkaXJlY3RDb2RlcyA9IG5ldyBBcnJheSgpOworcmVkaXJlY3RDb2Rlc1swXSA9ICIzMDEi
OworcmVkaXJlY3RDb2Rlc1sxXSA9ICIzMDIiOworcmVkaXJlY3RDb2Rlc1syXSA9ICIzMDMiOwor
cmVkaXJlY3RDb2Rlc1szXSA9ICIzMDciOworCitmdW5jdGlvbiBmcmFtZUxvYWRlZCgpCit7Cisg
ICAgaWYgKCsrZnJhbWVzTG9hZGVkID09IDQpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBhcHBlbmRGcmFtZShyZWRp
cmVjdENvZGVzW2ZyYW1lc0xvYWRlZF0pOworfQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKHRydWUpOworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLnNldEF1dGhlbnRpY2F0aW9uVXNlcm5hbWUoInRlc3RVc2VyIik7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0QXV0aGVudGljYXRpb25QYXNzd29yZCgidGVzdFBhc3N3b3Jk
Iik7Cit9CisKK2Z1bmN0aW9uIGFwcGVuZEZyYW1lKGNvZGUpCit7CisgICAgaSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOyAKKyAgICBpLnNldEF0dHJpYnV0ZSgic3JjIiwgImh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2F1dGhlbnRpY2F0aW9uLXJlZGlyZWN0LTMvcmVzb3Vy
Y2VzL2F1dGgtdGhlbi1yZWRpcmVjdC13aXRoLXVybC1jcmVkZW50aWFscy5waHA/cmVkaXJlY3Q9
IiArIGNvZGUpOyAKKyAgICBpLnNldEF0dHJpYnV0ZSgib25sb2FkIiwgImZyYW1lTG9hZGVkKCki
KTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGkpOworfQorCis8L3NjcmlwdD4KKwor
PGJvZHkgb25sb2FkPSJhcHBlbmRGcmFtZSgnMzAxJyk7Ij4KK2h0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NjM1NDxicj4KK1lvdSBzaG91bGQgbG9hZCB0aGlzIHBhZ2Ug
YXQgMTI3LjAuMC4xOjgwMDAgYmVjYXVzZSB0aGUgdGVzdCByZWxpZXMgb24gcmVkaXJlY3RzIHdp
dGhpbiB0aGUgMTI3LjAuMC4xOjgwMDAgc2VjdXJpdHkgb3JpZ2luLjxicj4KK1RoaXMgdGVzdCBs
b2FkcyBhIHBocCBzY3JpcHQgd2hpY2ggZGVtYW5kcyBodHRwIGF1dGhlbnRpY2F0aW9uLCB0aGVu
IHVzZXMgaXQgdG8gcmVkaXJlY3QgdG8gYW5vdGhlciBzY3JpcHQgaW4gdGhlIHNhbWUgb3JpZ2lu
IHRoYXQgc2hvd3Mgd2hhdCBhdXRoZW50aWNhdGlvbiBoZWFkZXJzIHdlcmUgc2VudCB3aXRoIHRo
ZSBmaW5hbCByZXF1ZXN0Ljxicj4KK1RoZSByZWRpcmVjdCBpbmNsdWRlcyBjcmVkZW50aWFscyBp
biB0aGUgbG9jYXRpb24gdXJsLCBhbmQgdGhleSBzaG91bGQgYmUgcHJlZmVycmVkIG92ZXIgY3Jl
ZGVudGlhbHMgdGhhdCBXZWJDb3JlIGhhcyBjYWNoZWQuPGJyPgorSXQgZG9lcyB0aGlzIG9uY2Ug
ZWFjaCBmb3IgSFRUUCAzMDEsIDMwMiwgMzAzLCBhbmQgMzA3IHJlZGlyZWN0cy48YnI+CitJZiBu
b3QgcnVubmluZyB1bmRlciBEUlQsIGVudGVyIGFueSBjcmVkZW50aWFscyB3aGVuIGFza2VkLjxi
cj4KKzwvYm9keT4KKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2F1dGhlbnRp
Y2F0aW9uLXJlZGlyZWN0LTMvcmVzb3VyY2VzL2F1dGgtZWNoby5waHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2F1dGhlbnRpY2F0aW9uLXJlZGlyZWN0LTMvcmVz
b3VyY2VzL2F1dGgtZWNoby5waHAJKHJldmlzaW9uIDkzMjExKQkoZnJvbSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2F1dGgtZWNoby5waHA6OTMyMTEpCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL21pc2MvYXV0aGVudGljYXRpb24tcmVkaXJlY3QtMy9yZXNvdXJjZXMv
YXV0aC1lY2hvLnBocAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMgQEAKKzw/cGhwCitlY2hv
ICJSZXNvdXJjZSBsb2FkZWQgd2l0aCBIVFRQIGF1dGhlbnRpY2F0aW9uIHVzZXJuYW1lICciLCAk
X1NFUlZFUlsiUEhQX0FVVEhfVVNFUiJdLCAiJyBhbmQgcGFzc3dvcmQgJyIsICRfU0VSVkVSWyJQ
SFBfQVVUSF9QVyJdLCAiJ1xuIjsKKz8+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21p
c2MvYXV0aGVudGljYXRpb24tcmVkaXJlY3QtMy9yZXNvdXJjZXMvYXV0aC10aGVuLXJlZGlyZWN0
LXdpdGgtdXJsLWNyZWRlbnRpYWxzLnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL21pc2MvYXV0aGVudGljYXRpb24tcmVkaXJlY3QtMy9yZXNvdXJjZXMvYXV0aC10aGVu
LXJlZGlyZWN0LXdpdGgtdXJsLWNyZWRlbnRpYWxzLnBocAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9hdXRoZW50aWNhdGlvbi1yZWRpcmVjdC0zL3Jlc291cmNl
cy9hdXRoLXRoZW4tcmVkaXJlY3Qtd2l0aC11cmwtY3JlZGVudGlhbHMucGhwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDIxIEBACis8P3BocAorCisvLyBwcm9tcHQgZm9yIGxvZ2luIGlmIG5vdCBh
bHJlYWR5IHByZXNlbnQKK2lmICghc3RybGVuKCRfU0VSVkVSWyJQSFBfQVVUSF9VU0VSIl0pIHx8
ICFzdHJsZW4oJF9TRVJWRVJbIlBIUF9BVVRIX1BXIl0pKQoreworICAgIGhlYWRlcigiV1dXLUF1
dGhlbnRpY2F0ZTogQmFzaWMgcmVhbG09XCJXZWJLaXQgQnVnIFRlc3RcIiIpOworICAgIGhlYWRl
cigiSFRUUC8xLjAgNDAxIFVuYXV0aG9yaXplZCIpOworICAgIGV4aXQ7Cit9CisKKy8vIGRvIHJl
ZGlyZWN0IGlmIGNhbGxlZCBmb3IKKyRyZWRpcmVjdF9jb2Rlcz1hcnJheSgiMzAxIiwgIjMwMiIs
ICIzMDMiLCAiMzA3Iik7CitpZiAoaW5fYXJyYXkoJF9HRVRbInJlZGlyZWN0Il0sICRyZWRpcmVj
dF9jb2RlcykpCit7CisgICAgaGVhZGVyKCJMb2NhdGlvbjogaHR0cDovL3JlZGlyZWN0dXNlcjpy
ZWRpcmVjdHBhc3N3b3JkQDEyNy4wLjAuMTo4MDAwL21pc2MvYXV0aGVudGljYXRpb24tcmVkaXJl
Y3QtMy9yZXNvdXJjZXMvYXV0aC10aGVuLXJlZGlyZWN0LnBocD9yZWRpcmVjdD0iIC4gJF9HRVRb
InJlZGlyZWN0Il0sIHRydWUsICRfR0VUWyJyZWRpcmVjdCJdKTsKKyAgICBleGl0OworfQorCitl
Y2hvICJVbmtub3duIHJlZGlyZWN0IHBhcmFtZXRlciBzZW50IjsKKworPz4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9hdXRoZW50aWNhdGlvbi1yZWRpcmVjdC0zL3Jlc291cmNl
cy9hdXRoLXRoZW4tcmVkaXJlY3QucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbWlzYy9hdXRoZW50aWNhdGlvbi1yZWRpcmVjdC0zL3Jlc291cmNlcy9hdXRoLXRoZW4t
cmVkaXJlY3QucGhwCShyZXZpc2lvbiA5MzIxMSkJKGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9taXNjL3Jlc291cmNlcy9hdXRoLXRoZW4tcmVkaXJlY3QucGhwOjkzMjExKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9taXNjL2F1dGhlbnRpY2F0aW9uLXJlZGlyZWN0LTMvcmVzb3VyY2Vz
L2F1dGgtdGhlbi1yZWRpcmVjdC5waHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMSBAQAor
PD9waHAKKworLy8gcHJvbXB0IGZvciBsb2dpbiBpZiBub3QgYWxyZWFkeSBwcmVzZW50CitpZiAo
IXN0cmxlbigkX1NFUlZFUlsiUEhQX0FVVEhfVVNFUiJdKSB8fCAhc3RybGVuKCRfU0VSVkVSWyJQ
SFBfQVVUSF9QVyJdKSkKK3sKKyAgICBoZWFkZXIoIldXVy1BdXRoZW50aWNhdGU6IEJhc2ljIHJl
YWxtPVwiV2ViS2l0IEJ1ZyBUZXN0XCIiKTsKKyAgICBoZWFkZXIoIkhUVFAvMS4wIDQwMSBVbmF1
dGhvcml6ZWQiKTsKKyAgICBleGl0OworfQorCisvLyBkbyByZWRpcmVjdCBpZiBjYWxsZWQgZm9y
CiskcmVkaXJlY3RfY29kZXM9YXJyYXkoIjMwMSIsICIzMDIiLCAiMzAzIiwgIjMwNyIpOworaWYg
KGluX2FycmF5KCRfR0VUWyJyZWRpcmVjdCJdLCAkcmVkaXJlY3RfY29kZXMpKQoreworICAgIGhl
YWRlcigiTG9jYXRpb246IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL3Jlc291cmNlcy9hdXRo
LWVjaG8ucGhwIiwgdHJ1ZSwgJF9HRVRbInJlZGlyZWN0Il0pOworICAgIGV4aXQ7Cit9CisKK2Vj
aG8gIlVua25vd24gcmVkaXJlY3QgcGFyYW1ldGVyIHNlbnQiOworCis/PgpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9taXNjL2F1dGhlbnRpY2F0aW9uLXJlZGlyZWN0LTMvcmVzb3VyY2Vz
L2F1dGgtdGhlbi1yZWRpcmVjdC5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9taXNjL2F1dGhlbnRpY2F0aW9uLXJlZGlyZWN0LTMvcmVzb3VyY2VzL2F1dGgtdGhlbi1y
ZWRpcmVjdC5waHAJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2Mv
YXV0aGVudGljYXRpb24tcmVkaXJlY3QtMy9yZXNvdXJjZXMvYXV0aC10aGVuLXJlZGlyZWN0LnBo
cAkod29ya2luZyBjb3B5KQpAQCAtMTIsNyArMTIsNyBAQCBpZiAoIXN0cmxlbigkX1NFUlZFUlsi
UEhQX0FVVEhfVVNFUiJdKSB8CiAkcmVkaXJlY3RfY29kZXM9YXJyYXkoIjMwMSIsICIzMDIiLCAi
MzAzIiwgIjMwNyIpOwogaWYgKGluX2FycmF5KCRfR0VUWyJyZWRpcmVjdCJdLCAkcmVkaXJlY3Rf
Y29kZXMpKQogewotICAgIGhlYWRlcigiTG9jYXRpb246IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9t
aXNjL3Jlc291cmNlcy9hdXRoLWVjaG8ucGhwIiwgdHJ1ZSwgJF9HRVRbInJlZGlyZWN0Il0pOwor
ICAgIGhlYWRlcigiTG9jYXRpb246IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2F1dGhlbnRp
Y2F0aW9uLXJlZGlyZWN0LTMvcmVzb3VyY2VzL2F1dGgtZWNoby5waHAiLCB0cnVlLCAkX0dFVFsi
cmVkaXJlY3QiXSk7CiAgICAgZXhpdDsKIH0KIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9taXNjL3Jlc291cmNlcy9hdXRoLWVjaG8ucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMvYXV0aC1lY2hvLnBocAkocmV2aXNpb24gOTMyMzYp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2F1dGgtZWNoby5waHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMCwwIEBACi08P3BocAotZWNobyAiUmVzb3VyY2UgbG9h
ZGVkIHdpdGggSFRUUCBhdXRoZW50aWNhdGlvbiB1c2VybmFtZSAnIiwgJF9TRVJWRVJbIlBIUF9B
VVRIX1VTRVIiXSwgIicgYW5kIHBhc3N3b3JkICciLCAkX1NFUlZFUlsiUEhQX0FVVEhfUFciXSwg
IidcbiI7Ci0/PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jlc291cmNlcy9h
dXRoLXRoZW4tcmVkaXJlY3QucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWlzYy9yZXNvdXJjZXMvYXV0aC10aGVuLXJlZGlyZWN0LnBocAkocmV2aXNpb24gOTMyMzYp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2F1dGgtdGhlbi1yZWRp
cmVjdC5waHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMjEgKzAsMCBAQAotPD9waHAKLQotLy8gcHJv
bXB0IGZvciBsb2dpbiBpZiBub3QgYWxyZWFkeSBwcmVzZW50Ci1pZiAoIXN0cmxlbigkX1NFUlZF
UlsiUEhQX0FVVEhfVVNFUiJdKSB8fCAhc3RybGVuKCRfU0VSVkVSWyJQSFBfQVVUSF9QVyJdKSkK
LXsKLSAgICBoZWFkZXIoIldXVy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPVwiV2ViS2l0IEJ1
ZyBUZXN0XCIiKTsKLSAgICBoZWFkZXIoIkhUVFAvMS4wIDQwMSBVbmF1dGhvcml6ZWQiKTsKLSAg
ICBleGl0OwotfQotCi0vLyBkbyByZWRpcmVjdCBpZiBjYWxsZWQgZm9yCi0kcmVkaXJlY3RfY29k
ZXM9YXJyYXkoIjMwMSIsICIzMDIiLCAiMzAzIiwgIjMwNyIpOwotaWYgKGluX2FycmF5KCRfR0VU
WyJyZWRpcmVjdCJdLCAkcmVkaXJlY3RfY29kZXMpKQotewotICAgIGhlYWRlcigiTG9jYXRpb246
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL3Jlc291cmNlcy9hdXRoLWVjaG8ucGhwIiwgdHJ1
ZSwgJF9HRVRbInJlZGlyZWN0Il0pOwotICAgIGV4aXQ7Ci19Ci0KLWVjaG8gIlVua25vd24gcmVk
aXJlY3QgcGFyYW1ldGVyIHNlbnQiOwotCi0/Pgo=
</data>
<flag name="review"
          id="100011"
          type_id="1"
          status="+"
          setter="ap"
    />
    <flag name="commit-queue"
          id="100012"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>