<?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>88766</bug_id>
          
          <creation_ts>2012-06-11 00:56:08 -0700</creation_ts>
          <short_desc>Use testRunner instead of layoutTestController in compositing tests</short_desc>
          <delta_ts>2012-06-11 11:29:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>88210</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>hclam</cc>
    
    <cc>igor.oliveira</cc>
    
    <cc>jturcotte</cc>
    
    <cc>senorblanco</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>645807</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-11 00:56:08 -0700</bug_when>
    <thetext>Use testRunner instead of layoutTestController in compositing tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645822</commentid>
    <comment_count>1</comment_count>
      <attachid>146807</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-11 01:15:34 -0700</bug_when>
    <thetext>Created attachment 146807
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645825</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-11 01:17:33 -0700</bug_when>
    <thetext>Ran: find LayoutTests/compositing/ LayoutTests/platform/*/compositing/ -type f -not -iwholename &quot;*.svn*&quot; -not -name &quot;*.png&quot; -not -name &quot;*.ttf&quot; -not -name &quot;*.gif&quot; -not -name &quot;*.mp4&quot; -not -name &quot;*.jpg&quot; -not -name &quot;*.ogv&quot; -not -name &quot;*.mov&quot; | xargs sed -i -e &quot;s/layoutTestController/testRunner/g&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646126</commentid>
    <comment_count>3</comment_count>
      <attachid>146807</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-11 11:29:46 -0700</bug_when>
    <thetext>Comment on attachment 146807
Patch

Clearing flags on attachment: 146807

Committed r119992: &lt;http://trac.webkit.org/changeset/119992&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646127</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-11 11:29:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146807</attachid>
            <date>2012-06-11 01:15:34 -0700</date>
            <delta_ts>2012-06-11 11:29:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88766-20120611011534.patch</filename>
            <type>text/plain</type>
            <size>256417</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDExOTk1OCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA2LTExICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSB0ZXN0UnVubmVyIGluc3RlYWQgb2YgbGF5
b3V0VGVzdENvbnRyb2xsZXIgaW4gY29tcG9zaXRpbmcgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NzY2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjb21wb3NpdGluZy86CisgICAgICAgICog
Y29tcG9zaXRpbmcvYW5pbWF0aW9uLzoKKyAgICAgICAgKiBjb21wb3NpdGluZy9iYWNrZmFjZS12
aXNpYmlsaXR5LzoKKyAgICAgICAgKiBjb21wb3NpdGluZy9iYWNraW5nLzoKKyAgICAgICAgKiBj
b21wb3NpdGluZy9jdWxsaW5nLzoKKyAgICAgICAgKiBjb21wb3NpdGluZy9nZW9tZXRyeS86Cisg
ICAgICAgICogY29tcG9zaXRpbmcvaWZyYW1lcy86CisgICAgICAgICogY29tcG9zaXRpbmcvaWZy
YW1lcy9yZXNvdXJjZXMvOgorICAgICAgICAqIGNvbXBvc2l0aW5nL2ltYWdlcy86CisgICAgICAg
ICogY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vOgorICAgICAgICAqIGNvbXBvc2l0aW5nL21h
c2tzLzoKKyAgICAgICAgKiBjb21wb3NpdGluZy9vdmVyZmxvdy86CisgICAgICAgICogY29tcG9z
aXRpbmcvcGx1Z2lucy86CisgICAgICAgICogY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvOgorICAg
ICAgICAqIGNvbXBvc2l0aW5nL3JlcGFpbnQvOgorICAgICAgICAqIGNvbXBvc2l0aW5nL3Jlc291
cmNlcy86CisgICAgICAgICogY29tcG9zaXRpbmcvcnRsLzoKKyAgICAgICAgKiBjb21wb3NpdGlu
Zy9zY2FsaW5nLzoKKyAgICAgICAgKiBjb21wb3NpdGluZy90aWxpbmcvOgorICAgICAgICAqIGNv
bXBvc2l0aW5nL3RyYW5zaXRpb25zLzoKKyAgICAgICAgKiBjb21wb3NpdGluZy92aWRlby86Cisg
ICAgICAgICogY29tcG9zaXRpbmcvdmlzaWJpbGl0eS86CisgICAgICAgICogY29tcG9zaXRpbmcv
d2ViZ2wvOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nLzoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9mb3JjZS1jb21wb3NpdGluZy1tb2Rl
LzoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9ydWJiZXJiYW5kaW5n
LzoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvY29tcG9zaXRpbmcvY2FudmFzLzoKKwogMjAxMi0w
Ni0wOCAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXNp
bmcgQmxvYkJ1aWxkZXIgc2hvdWxkIHNob3cgYSBkZXByZWNhdGlvbiB3YXJuaW5nIG1lc3NhZ2Ug
KGlmIGl0IGlzIGVuYWJsZWQpCkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9hYnNvbHV0
ZS1wb3NpdGlvbi1jaGFuZ2VkLWluLWNvbXBvc2l0ZWQtbGF5ZXIuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9hYnNvbHV0ZS1wb3NpdGlvbi1jaGFuZ2VkLWluLWNv
bXBvc2l0ZWQtbGF5ZXIuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hhbmdlZC1pbi1jb21wb3NpdGVkLWxheWVyLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDggKzExLDggQEAKICAgICAgICAgLmNvbXBvc2l0ZWQg
eyAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsgfQogICAgIDwvc3R5bGU+CiAgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCh0cnVlKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogICAgICAgICBmdW5jdGlvbiBtb3ZlQWJzb2x1
dGVEaXYoKQogICAgICAgICB7CiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
YWJzb2x1dGVEaXYnKS5zdHlsZS50b3AgPSAnNzAwcHgnOwpJbmRleDogTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hhbmdlZC13aXRoLWNvbXBvc2l0ZWQtcGFyZW50
LWxheWVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvYWJzb2x1
dGUtcG9zaXRpb24tY2hhbmdlZC13aXRoLWNvbXBvc2l0ZWQtcGFyZW50LWxheWVyLmh0bWwJKHJl
dmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2Fic29sdXRlLXBvc2l0
aW9uLWNoYW5nZWQtd2l0aC1jb21wb3NpdGVkLXBhcmVudC1sYXllci5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xMiw4ICsxMiw4IEBACiAgICAgICAgIC5jb21wb3NpdGVkIHsgLXdlYmtpdC10cmFu
c2Zvcm06IHRyYW5zbGF0ZVooMCk7IH0KICAgICA8L3N0eWxlPgogICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7Cisg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCh0cnVlKTsKICAgICAgICAgZnVuY3Rpb24gbW92ZUFic29sdXRlRGl2KCkKICAgICAg
ICAgewogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fic29sdXRlRGl2Jyku
c3R5bGUudG9wID0gJzcwMHB4JzsKSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2JvdW5k
cy1pbi1mbGlwcGVkLXdyaXRpbmctbW9kZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL2JvdW5kcy1pbi1mbGlwcGVkLXdyaXRpbmctbW9kZS5odG1sCShyZXZpc2lv
biAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9ib3VuZHMtaW4tZmxpcHBlZC13
cml0aW5nLW1vZGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw5ICs1LDkgQEAKICAgICA8L2Rp
dj4KICAgICA8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KICAgICA8c2NyaXB0PgotICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGxheW91
dFRlc3RDb250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgpKSk7CisgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKHRlc3RSdW5uZXIubGF5ZXJUcmVlQXNUZXh0KCkpKTsKICAg
ICAgICAgfQogICAgIDwvc2NyaXB0PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvY2hlY2tlcmJvYXJkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvY2hlY2tlcmJvYXJkLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL2NoZWNrZXJib2FyZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQs
OCBAQAogICAgIDxoZWFkPgogICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CiAgICAgICAgICAgICBmdW5jdGlvbiBob3Jpel9zY3JvbGwoKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CiAKICAgICAgICAgICAgICAgICB2YXIgcG9zID0gMDsKICAgICAgICAgICAgICAg
ICB2YXIgaW5uZXIgPSBmdW5jdGlvbiAoKSB7CkBAIC0xMyw4ICsxMyw4IEBACiAgICAgICAgICAg
ICAgICAgICAgIHBvcyArPSAxNTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHBvcyA8IDIwNDcp
CiAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGlubmVyLCAwKTsKLSAgICAgICAg
ICAgICAgICAgICAgZWxzZSBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
ICAgICAgICAgICAgICAgICBlbHNlIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgICAgIH07
CiAgICAgICAgICAgICAgICAgaW5uZXIoKTsKICAgICAgICAgICAgIH0KSW5kZXg6IExheW91dFRl
c3RzL2NvbXBvc2l0aW5nL2NsaXAtY2hhbmdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvY2xpcC1jaGFuZ2UuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvY2xpcC1jaGFuZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MjIsMTEgKzIyLDExIEBACiAgICAgfQogICA8L3N0eWxlPgogICA8c2NyaXB0PgotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KHRydWUpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKICAgICBmdW5jdGlvbiBkb1Rlc3QoKSB7Ci0gICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kaXNwbGF5KCk7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIuZGlzcGxheSgpOwogICAgICAgLy8gVGhlIGNoYW5nZSBpbiBjbGlwIHN0eWxlIHNo
b3VsZCBiZSByZWZsZWN0ZWQgaW1tZWRpYXRlbHkgaW4gdGhlIHNpemUKICAgICAgIC8vIG9mIHRo
ZSBjb21wb3NpdGVkIGNsaXBwZXIgbGF5ZXIuIEFmdGVyIGNoYW5naW5nIHRoZSBjbGlwLCBpdCBz
aG91bGQKICAgICAgIC8vIGVudGlyZWx5IGNvdmVyIHRoZSBpbmRpY2F0b3IuCkluZGV4OiBMYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9jbGlwLWNoaWxkLWJ5LW5vbi1zdGFja2luZy1hbmNlc3Rvci5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2NsaXAtY2hpbGQtYnkt
bm9uLXN0YWNraW5nLWFuY2VzdG9yLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRl
c3RzL2NvbXBvc2l0aW5nL2NsaXAtY2hpbGQtYnktbm9uLXN0YWNraW5nLWFuY2VzdG9yLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDE2ICszMiwxNiBAQAogICAgIDwvc3R5bGU+CiA8L2hlYWQ+
CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBkb1Rlc3QoKQogICAgIHsKLSAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVydHJlZScpLmlubmVyVGV4dCA9IGxheW91dFRlc3RD
b250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnRyZWUnKS5pbm5lclRleHQg
PSB0ZXN0UnVubmVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IExheW91dFRlc3RzL2NvbXBv
c2l0aW5nL2NvbXBvc2l0ZWQtbmVnYXRpdmUtemluZGV4LWNoaWxkLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY29tcG9zaXRlZC1uZWdhdGl2ZS16aW5kZXgtY2hp
bGQuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY29t
cG9zaXRlZC1uZWdhdGl2ZS16aW5kZXgtY2hpbGQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjIs
OCArMjIsOCBAQAogICAgIH0KICAgPC9zdHlsZT4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAg
ZnVuY3Rpb24gZG9UZXN0KCkgewogICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxk
Jykuc3R5bGUud2Via2l0VHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVooMCknOwpJbmRleDogTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvZml4ZWQtcG9zaXRpb24tY2hhbmdlZC1pbi1jb21wb3NpdGVkLWxh
eWVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZml4ZWQtcG9z
aXRpb24tY2hhbmdlZC1pbi1jb21wb3NpdGVkLWxheWVyLmh0bWwJKHJldmlzaW9uIDExOTk0NikK
KysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2ZpeGVkLXBvc2l0aW9uLWNoYW5nZWQtaW4tY29t
cG9zaXRlZC1sYXllci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBACiAgICAg
ICAgIC5jb21wb3NpdGVkIHsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7IH0KICAg
ICA8L3N0eWxlPgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKICAgICAgICAgZnVu
Y3Rpb24gbW92ZUZpeGVkRGl2KCkKICAgICAgICAgewogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2ZpeGVkRGl2Jykuc3R5bGUudG9wID0gJzIwMHB4JzsKSW5kZXg6IExheW91
dFRlc3RzL2NvbXBvc2l0aW5nL2ZpeGVkLXBvc2l0aW9uLWNoYW5nZWQtd2l0aGluLWNvbXBvc2l0
ZWQtcGFyZW50LWxheWVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvZml4ZWQtcG9zaXRpb24tY2hhbmdlZC13aXRoaW4tY29tcG9zaXRlZC1wYXJlbnQtbGF5ZXIu
aHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZml4ZWQt
cG9zaXRpb24tY2hhbmdlZC13aXRoaW4tY29tcG9zaXRlZC1wYXJlbnQtbGF5ZXIuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTEsOCArMTEsOCBAQAogICAgICAgICAuY29tcG9zaXRlZCB7IC13ZWJr
aXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOyB9CiAgICAgPC9zdHlsZT4KICAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRy
dWUpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAgICAgICAgIGZ1bmN0aW9uIG1vdmVGaXhlZERpdigpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaXhlZERpdicp
LnN0eWxlLnRvcCA9ICcyMDBweCc7CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9mbGF0
LXdpdGgtdHJhbnNmb3JtZWQtY2hpbGQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9mbGF0LXdpdGgtdHJhbnNmb3JtZWQtY2hpbGQuaHRtbAkocmV2aXNpb24gMTE5
OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZmxhdC13aXRoLXRyYW5zZm9ybWVkLWNo
aWxkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDggQEAKICAgICB9CiAgIDwvc3R5
bGU+CiAgIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogICA8L3Nj
cmlwdD4KIDwvaGVhZD4KIDxib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5
ZXJzLWluc2lkZS1vdmVyZmxvdy1zY3JvbGwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9sYXllcnMtaW5zaWRlLW92ZXJmbG93LXNjcm9sbC5odG1sCShyZXZpc2lv
biAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllcnMtaW5zaWRlLW92ZXJm
bG93LXNjcm9sbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4ICszOSw4IEBACiAgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KICAgICAgIGZ1bmN0
aW9uIHRlc3REb25lKCkKICAgICAgIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKICAgICAgIH0KICAgICAgIAogICAgICAgZnVuY3Rpb24gbW9kaWZ5RG9jdW1lbnQo
KQpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3ctdHJ1bXBzLXRyYW5zZm9y
bS1zdHlsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJm
bG93LXRydW1wcy10cmFuc2Zvcm0tc3R5bGUuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3ctdHJ1bXBzLXRyYW5zZm9ybS1zdHlsZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xMSw4ICsxMSw4IEBACiAgICAgfQogICA8L3N0eWxlPgogICA8
c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBmdW5jdGlvbiBkdW1wUmVz
dWx0cygpCiAgICAgewpAQCAtMjIsOCArMjIsOCBAQAogICAgICAgcmVzdWx0cy5pbm5lclRleHQg
PSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94MScp
KS53ZWJraXRUcmFuc2Zvcm1TdHlsZSArICdcbic7CiAgICAgICByZXN1bHRzLmlubmVyVGV4dCAr
PSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94Micp
KS53ZWJraXRUcmFuc2Zvcm1TdHlsZSArICdcbic7CiAgICAgICAKLSAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIHJlc3VsdHMuaW5uZXJUZXh0ICs9IGxheW91
dFRlc3RDb250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICByZXN1bHRzLmlubmVyVGV4dCArPSB0ZXN0UnVubmVyLmxheWVyVHJl
ZUFzVGV4dCgpOwogICAgIH0KICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGR1
bXBSZXN1bHRzLCBmYWxzZSk7CiAgIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvc2Nyb2xsLXBhaW50ZWQtY29tcG9zaXRlZC1jb250ZW50Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvc2Nyb2xsLXBhaW50ZWQtY29tcG9zaXRlZC1jb250
ZW50Lmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3Nj
cm9sbC1wYWludGVkLWNvbXBvc2l0ZWQtY29udGVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0y
MSwxMSArMjEsMTEgQEAKICAgICA8ZGl2PjwvZGl2PgogCiAgICAgPHNjcmlwdD4KLSAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICAgICAgLy8g
Rm9yY2UgYSBwYWludCBzbyB0aGF0IHRoZSBjb250ZW50IHdpbGwgYmUgcGFpbnRlZCBhdCB0aGUg
Y3VycmVudCBzY3JvbGwgb2Zmc2V0ICgweDApCiAgICAgICAgICAgICAvLyBiZWZvcmUgd2Ugc2Ny
b2xsLgotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZGlzcGxheSgpOworICAgICAg
ICAgICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7CiAgICAgICAgIH0KICAgICAgICAgd2luZG93LnNj
cm9sbEJ5KDMwMCwgMCk7CiAgICAgPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9zY3JvbGxiYXItcGFpbnRpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9zY3JvbGxiYXItcGFpbnRpbmcuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysg
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvc2Nyb2xsYmFyLXBhaW50aW5nLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDggKzI3LDggQEAKIH0KIDwvc3R5bGU+CiA8c2NyaXB0PgotICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQodHJ1ZSk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQodHJ1ZSk7CiA8L3NjcmlwdD4KIDwhLS0gWW91IHNob3VsZCBzZWUgYSBzaW5nbGUg
NTAlIHRyYW5zcGFyZW50IGdyZWVuIHNxdWFyZSAtLT4KIDxkaXYgaWQ9ImNvbnRhaW5lciIgY2xh
c3M9ImNvbnRhaW5lciBjb21wb3NpdGVkIj4KSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5n
L3NlbGYtcGFpbnRpbmctbGF5ZXJzMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL3NlbGYtcGFpbnRpbmctbGF5ZXJzMi5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisr
KyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9zZWxmLXBhaW50aW5nLWxheWVyczIuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTMsMTYgKzEzLDE2IEBACiAgICAgCiAgICAgPC9zdHlsZT4KICAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKICAgICAgIH0KIAogICAgICAgZnVuY3Rpb24gdGVzdE9uTG9hZCgpCiAgICAgICB7CiAg
ICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0sIDApOwogICAgICAgfQog
ICAgICAgCkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9zZWxmLXBhaW50aW5nLWxheWVy
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3NlbGYtcGFpbnRp
bmctbGF5ZXJzLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0
aW5nL3NlbGYtcGFpbnRpbmctbGF5ZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMz
LDggQEAKICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgi
PgogICAgICAgZnVuY3Rpb24gdGVzdERvbmUoKQogICAgICAgewotICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgfQogCiAgICAgICBmdW5jdGlvbiBtb2RpZnlE
b2N1bWVudCgpCkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9zaWJsaW5nLXBvc2l0aW9u
aW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvc2libGluZy1w
b3NpdGlvbmluZy5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9zaWJsaW5nLXBvc2l0aW9uaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQy
LDggQEAKIAogICA8L3N0eWxlPgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hh
cnNldD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKICAgICBmdW5j
dGlvbiBzdGFydFRlc3QoKQogICAgIHsKQEAgLTUyLDggKzUyLDggQEAKICAgICAgICAgbW92ZXIu
Y2xhc3NOYW1lID0gJ21vdmVkJzsKICAgICAgICAgCiAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgewotICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CiAgICAgICAgIH0sIDApOwogICAgICAgICAKICAgICAgIH0sIDApOwpAQCAtNzEsNCAr
NzEsNCBAQAogICA8cD48YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjY0MzAiPmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjQz
MDwvYT48L3A+CiAgIDxwPkdyZWVuIGJveCBzaG91bGQgbm90IG1vdmUgd2hlbiBob3ZlcmVkPC9w
PgogPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3RleHQtb24tbGFyZ2UtbGF5ZXIuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy90ZXh0LW9uLWxhcmdlLWxheWVy
Lmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3RleHQt
b24tbGFyZ2UtbGF5ZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMSwxMSBAQAogPCFE
T0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7Ci0gIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgLy8g
VGhlIG1hYyBwb3J0IHJlbmRlcnMgdGlsZWQgbGF5ZXJzIGFzeW5jaHJvbm91c2x5LCBzbyB3ZSBo
YXZlIHRvIHdhaXQgYSBiaXQgdG8gZ2V0IHRoZSBhY3R1YWwgcmVuZGVyaW5nIHJlc3VsdC4KICAg
d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICB9LCAxMDApOwog
fQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxlZC1sYXllcnMt
aGlkcGkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxlZC1s
YXllcnMtaGlkcGkuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvdGlsZWQtbGF5ZXJzLWhpZHBpLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksMTcgKzks
MTcgQEAKIAk8L3N0eWxlPgogICAgIDxzY3JpcHQ+CiAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0VGVz
dCgpIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAg
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEJhY2tpbmdTY2FsZUZhY3RvcigyLCBmaW5p
c2hUZXN0KTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0QmFja2lu
Z1NjYWxlRmFjdG9yKDIsIGZpbmlzaFRlc3QpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewogICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsKLQkJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXIt
dHJlZScpLmlubmVyVGV4dCA9IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVB
c1RleHQoKTsKLQkJCQlsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisJCQkJZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVyLXRyZWUnKS5pbm5lclRleHQgPSB3aW5kb3cudGVz
dFJ1bm5lci5sYXllclRyZWVBc1RleHQoKTsKKwkJCQl0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
IAkJCX0sIDApOwogICAgICAgICB9CiAgICAgICAgIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvdG9nZ2xlLWNvbXBvc2l0aW5nLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvdG9nZ2xlLWNvbXBvc2l0aW5nLmh0bWwJKHJldmlzaW9uIDEx
OTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3RvZ2dsZS1jb21wb3NpdGluZy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0yLDkgKzIsOSBAQAogICAgIDwhLS0gVGhpcyB0ZXN0IHNob3Vs
ZCBub3QgYXNzZXJ0IGluIFdlYktpdDIsIG5vciBzaG91bGQgaXQgc2hvdyBmbGFzaGluZyBpZiB5
b3UgbG9hZCBpdCBtYW51YWxseS4gLS0+CiAgICAgPGRpdiBpZD0idGFyZ2V0Ij48L2Rpdj4KICAg
ICA8c2NyaXB0PgotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgdmFyIGNvdW50ID0gMDsKQEAgLTE2LDggKzE2LDggQEAKICAgICAgICAgICAg
IAogICAgICAgICAgICAgaWYgKCsrY291bnQgPT0gMTApIHsKICAgICAgICAgICAgICAgd2luZG93
LmNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJRCk7Ci0gICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0sIDEwMCk7CiAgICAgPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy92aWRlby1wYWdlLXZpc2liaWxpdHkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9j
b21wb3NpdGluZy92aWRlby1wYWdlLXZpc2liaWxpdHkuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQor
KysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdmlkZW8tcGFnZS12aXNpYmlsaXR5Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTcsOSArNyw5IEBACiAgICAgfQogICA8L3N0eWxlPgogICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQodHJ1ZSk7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQodHJ1ZSk7CisgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiAgIDwv
c2NyaXB0PgogPC9oZWFkPgpAQCAtMTksMTIgKzE5LDEyIEBACiAgICAgdmFyIHZpZGVvID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3ZpZGVvJylbMF07CiAgICAgdmlkZW8uc3JjID0g
J3Jlc291cmNlcy92aWRlby4nICsgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9vZ2cnKSA/ICdv
Z3YnIDogJ21wNCcpOwogICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ2NhbnBsYXl0aHJvdWdo
JywgZnVuY3Rpb24oKSB7Ci0gICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuc2V0UGFnZVZpc2liaWxpdHkoImhpZGRlbiIpOwotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kaXNwbGF5KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LnJlc2V0UGFnZVZpc2liaWxpdHkoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RS
dW5uZXIuZGlzcGxheSgpOworICAgICAgICB0ZXN0UnVubmVyLnNldFBhZ2VWaXNpYmlsaXR5KCJo
aWRkZW4iKTsKKyAgICAgICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7CisgICAgICAgIHRlc3RSdW5u
ZXIucmVzZXRQYWdlVmlzaWJpbGl0eSgpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKICAgICAgIH0KICAgICB9LCBmYWxzZSk7CiAgIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvYW5pbWF0aW9uL2FuaW1hdGlvbi1jb21wb3NpdGluZy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2FuaW1hdGlvbi9hbmltYXRpb24tY29t
cG9zaXRpbmcuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvYW5pbWF0aW9uL2FuaW1hdGlvbi1jb21wb3NpdGluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xOSwyNCArMTksMjQgQEAKICAgICB9CiAgIDwvc3R5bGU+CiAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KIAogICAgIGZ1bmN0aW9u
IGRvVGVzdCgpCiAgICAgewogICAgICAgdmFyIGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdib3gnKTsKICAgICAgIGJveC5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRBbmltYXRpb25TdGFy
dCcsIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgICAgICAgICB2YXIgbGF5ZXJzID0gbGF5b3V0VGVzdENvbnRyb2xsZXIubGF5ZXJU
cmVlQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAg
ICAgdmFyIGxheWVycyA9IHRlc3RSdW5uZXIubGF5ZXJUcmVlQXNUZXh0KCk7CiAgICAgICAgICAg
ICB2YXIgcmVzdWx0OwogICAgICAgICAgICAgaWYgKGxheWVycyAhPSAiIikKICAgICAgICAgICAg
ICAgcmVzdWx0ID0gIlBBU1M6IGNyZWF0ZWQgY29tcG9zaXRpbmcgbGF5ZXJzIHdoZW4gYW5pbWF0
aW5nIHRyYW5zZm9ybS4iOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICByZXN1bHQg
PSAiRkFJTDogbm8gbGF5ZXJzIGZvdW5kIjsKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSByZXN1bHQ7Ci0gICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKICAgICAgICAgfQogICAgICAgfSwgZmFsc2UpOwogICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2JveCcpLmNsYXNzTmFtZSA9ICdzcGlubmluZyc7CkluZGV4OiBMYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9hbmltYXRpb24vc3RhdGUtYXQtZW5kLWV2ZW50LXRyYW5zZm9ybS1s
YXllci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2FuaW1hdGlv
bi9zdGF0ZS1hdC1lbmQtZXZlbnQtdHJhbnNmb3JtLWxheWVyLmh0bWwJKHJldmlzaW9uIDExOTk0
NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2FuaW1hdGlvbi9zdGF0ZS1hdC1lbmQtZXZl
bnQtdHJhbnNmb3JtLWxheWVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQzLDE0ICs0MywxNCBA
QAogCiAgICAgZnVuY3Rpb24gdGVzdEVuZGVkKCkKICAgICB7Ci0gICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBzdGFydFRlc3QoKQogICAg
IHsKLSAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0ZXInKS5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRBbmlt
YXRpb25FbmQnLCB0ZXN0RW5kZWQsIGZhbHNlKTsKICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjb250YWluZXInKS5jbGFzc05hbWUgPSAnbW92ZWQnOwpJbmRleDogTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS9iYWNrZmFjZS12aXNpYmlsaXR5LTNkLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJp
bGl0eS9iYWNrZmFjZS12aXNpYmlsaXR5LTNkLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJp
bGl0eS0zZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsOCArMTAzLDggQEAKIDwvZGl2Pgog
CiA8c2NyaXB0PgotICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOyAgLy8gVGhpcyBpcyBvbmx5IHVz
ZWZ1bCBhcyBhIHBpeGVsIHRlc3QuCisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOyAgLy8gVGhpcyBpcyBvbmx5IHVzZWZ1bCBhcyBh
IHBpeGVsIHRlc3QuCiAgICAgICBkb2N1bWVudC53cml0ZSgiPHNwYW4gc3R5bGU9J3Bvc2l0aW9u
OmFic29sdXRlOyB0b3A6LTUwMDBweCc+VGhpcyB0ZXN0IGlzIG9ubHkgdXNlZnVsIGFzIGEgcGl4
ZWwgdGVzdDwvc3Bhbj4iKTsKICAgfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9iYWNrZmFjZS12aXNpYmlsaXR5L2JhY2tmYWNlLXZpc2liaWxpdHktaGllcmFyY2hp
Y2FsLXRyYW5zZm9ybS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5n
L2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS1oaWVyYXJjaGljYWwtdHJh
bnNmb3JtLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5n
L2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS1oaWVyYXJjaGljYWwtdHJh
bnNmb3JtLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExNCw4ICsxMTQsOCBAQAogICA8L2Rpdj4K
IAogICA8c2NyaXB0PgotICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsgIC8vIFRoaXMgaXMgb25seSB1
c2VmdWwgYXMgYSBwaXhlbCB0ZXN0LgorICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7ICAvLyBUaGlzIGlzIG9ubHkgdXNlZnVsIGFzIGEg
cGl4ZWwgdGVzdC4KICAgICBkb2N1bWVudC53cml0ZSgiPHNwYW4gc3R5bGU9J3Bvc2l0aW9uOmFi
c29sdXRlOyB0b3A6LTUwMDBweCc+VGhpcyB0ZXN0IGlzIG9ubHkgdXNlZnVsIGFzIGEgcGl4ZWwg
dGVzdDwvc3Bhbj4iKTsKICAgfQogICA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2NvbXBv
c2l0aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS1ub24zZC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2liaWxp
dHkvYmFja2ZhY2UtdmlzaWJpbGl0eS1ub24zZC5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBM
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9iYWNrZmFjZS12aXNpYmlsaXR5L2JhY2tmYWNlLXZpc2li
aWxpdHktbm9uM2QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNzQsOCArNzQsOCBAQAogPC9kaXY+
CiAKIDxzY3JpcHQ+Ci0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7ICAvLyBUaGlzIGlzIG9ubHkg
dXNlZnVsIGFzIGEgcGl4ZWwgdGVzdC4KKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7ICAvLyBUaGlzIGlzIG9ubHkgdXNlZnVsIGFz
IGEgcGl4ZWwgdGVzdC4KICAgICAgIGRvY3VtZW50LndyaXRlKCI8c3BhbiBzdHlsZT0ncG9zaXRp
b246YWJzb2x1dGU7IHRvcDotNTAwMHB4Jz5UaGlzIHRlc3QgaXMgb25seSB1c2VmdWwgYXMgYSBw
aXhlbCB0ZXN0PC9zcGFuPiIpOwogICB9CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS1zaW1wbGUu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9iYWNrZmFjZS12aXNp
YmlsaXR5L2JhY2tmYWNlLXZpc2liaWxpdHktc2ltcGxlLmh0bWwJKHJldmlzaW9uIDExOTk0NikK
KysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2ZhY2Ut
dmlzaWJpbGl0eS1zaW1wbGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsOCBAQAog
ICAgIDwvZGl2PgogICA8L2Rpdj4KICAgPHNjcmlwdD4KLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7
ICAvLyBUaGlzIGlzIG9ubHkgdXNlZnVsIGFzIGEgcGl4ZWwgdGVzdC4KKyAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOyAgLy8gVGhpcyBp
cyBvbmx5IHVzZWZ1bCBhcyBhIHBpeGVsIHRlc3QuCiAgICAgZG9jdW1lbnQud3JpdGUoIjxzcGFu
IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOi01MDAwcHgnPlRoaXMgdGVzdCBpcyBvbmx5
IHVzZWZ1bCBhcyBhIHBpeGVsIHRlc3Q8L3NwYW4+Iik7CiAgIH0KICAgPC9zY3JpcHQ+CkluZGV4
OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9iYWNraW5nL25vLWJhY2tpbmctZm9yLWNsaXAtb3Zl
cmxhcC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2JhY2tpbmcv
bm8tYmFja2luZy1mb3ItY2xpcC1vdmVybGFwLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL2JhY2tpbmcvbm8tYmFja2luZy1mb3ItY2xpcC1vdmVybGFw
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE0ICsyOCwxNCBAQAogICA8L3N0eWxlPgogCiAg
IDxzY3JpcHQ+Ci0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgCiAgIGZ1bmN0aW9uIGR1bXBMYXllcnMo
KQogICB7CiAgICAgdmFyIGxheWVyc1Jlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCds
YXllcnMnKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgbGF5
ZXJzUmVzdWx0LmlubmVyVGV4dCA9IGxheW91dFRlc3RDb250cm9sbGVyLmxheWVyVHJlZUFzVGV4
dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgIGxheWVyc1Jlc3VsdC5pbm5l
clRleHQgPSB0ZXN0UnVubmVyLmxheWVyVHJlZUFzVGV4dCgpOwogICAgIAogICB9CiAgIHdpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZHVtcExheWVycywgZmFsc2UpCkluZGV4OiBMYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9iYWNraW5nL25vLWJhY2tpbmctZm9yLWNsaXAuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9iYWNraW5nL25vLWJhY2tpbmctZm9y
LWNsaXAuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
YmFja2luZy9uby1iYWNraW5nLWZvci1jbGlwLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE0
ICsyOCwxNCBAQAogICA8L3N0eWxlPgogCiAgIDxzY3JpcHQ+Ci0gIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAg
ICAgCiAgIGZ1bmN0aW9uIGR1bXBMYXllcnMoKQogICB7CiAgICAgdmFyIGxheWVyc1Jlc3VsdCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKTsKLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgbGF5ZXJzUmVzdWx0LmlubmVyVGV4dCA9IGxheW91dFRl
c3RDb250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgIGxheWVyc1Jlc3VsdC5pbm5lclRleHQgPSB0ZXN0UnVubmVyLmxheWVyVHJlZUFz
VGV4dCgpOwogICAgIAogICB9CiAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZHVt
cExheWVycywgZmFsc2UpCkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9iYWNraW5nL25v
LWJhY2tpbmctZm9yLXBlcnNwZWN0aXZlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvYmFja2luZy9uby1iYWNraW5nLWZvci1wZXJzcGVjdGl2ZS5odG1sCShyZXZp
c2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9iYWNraW5nL25vLWJhY2tp
bmctZm9yLXBlcnNwZWN0aXZlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE0ICsyNiwxNCBA
QAogICA8L3N0eWxlPgogCiAgIDxzY3JpcHQ+Ci0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgCiAgIGZ1
bmN0aW9uIGR1bXBMYXllcnMoKQogICB7CiAgICAgdmFyIGxheWVyc1Jlc3VsdCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgbGF5ZXJzUmVzdWx0LmlubmVyVGV4dCA9IGxheW91dFRlc3RDb250cm9s
bGVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
IGxheWVyc1Jlc3VsdC5pbm5lclRleHQgPSB0ZXN0UnVubmVyLmxheWVyVHJlZUFzVGV4dCgpOwog
ICAgIAogICB9CiAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZHVtcExheWVycywg
ZmFsc2UpCkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9iYWNraW5nL25vLWJhY2tpbmct
Zm9yZWdyb3VuZC1sYXllci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0
aW5nL2JhY2tpbmcvbm8tYmFja2luZy1mb3JlZ3JvdW5kLWxheWVyLmh0bWwJKHJldmlzaW9uIDEx
OTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2JhY2tpbmcvbm8tYmFja2luZy1mb3Jl
Z3JvdW5kLWxheWVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDggQEAKICAgICB9
CiAgIDwvc3R5bGU+CiAgIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgPC9z
Y3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1
bGxpbmcvY2xlYXItZml4ZWQtaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvY3VsbGluZy9jbGVhci1maXhlZC1pZnJhbWUuaHRtbAkocmV2aXNpb24gMTE5
OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGluZy9jbGVhci1maXhlZC1pZnJh
bWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTcsOCArMTcsOCBAQCBpZnJhbWUgewogfQogPC9z
dHlsZT4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
dHJ1ZSk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCh0cnVlKTsKICAgfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9jdWxsaW5nL2ZpbHRlci1vY2NsdXNpb24tYWxwaGEtbGFyZ2UuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL2ZpbHRlci1vY2NsdXNp
b24tYWxwaGEtbGFyZ2UuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvY3VsbGluZy9maWx0ZXItb2NjbHVzaW9uLWFscGhhLWxhcmdlLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTIxLDggKzIxLDggQEAKICAgfQogPC9zdHlsZT4KIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKICAgfQogPC9z
Y3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL2Zp
bHRlci1vY2NsdXNpb24tYWxwaGEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9jdWxsaW5nL2ZpbHRlci1vY2NsdXNpb24tYWxwaGEuaHRtbAkocmV2aXNpb24gMTE5
OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGluZy9maWx0ZXItb2NjbHVzaW9u
LWFscGhhLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIxLDggKzIxLDggQEAKICAgfQogPC9zdHls
ZT4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1
ZSk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCh0cnVlKTsKICAgfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9jdWxsaW5nL2ZpbHRlci1vY2NsdXNpb24tYmx1ci1sYXJnZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvZmlsdGVyLW9jY2x1c2lvbi1i
bHVyLWxhcmdlLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0
aW5nL2N1bGxpbmcvZmlsdGVyLW9jY2x1c2lvbi1ibHVyLWxhcmdlLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTE5LDggKzE5LDggQEAKICAgfQogPC9zdHlsZT4KIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKICAgfQogPC9zY3JpcHQ+
CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL2ZpbHRlci1v
Y2NsdXNpb24tYmx1ci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5n
L2N1bGxpbmcvZmlsdGVyLW9jY2x1c2lvbi1ibHVyLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysr
IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvZmlsdGVyLW9jY2x1c2lvbi1ibHVyLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTE5LDggKzE5LDggQEAKICAgfQogPC9zdHlsZT4KIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsK
ICAgfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9j
dWxsaW5nL3Njcm9sbGVkLXdpdGhpbi1ib3hzaGFkb3cuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL3Njcm9sbGVkLXdpdGhpbi1ib3hzaGFkb3cuaHRt
bAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGluZy9z
Y3JvbGxlZC13aXRoaW4tYm94c2hhZG93Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE1ICsz
MywxNSBAQCBib2R5IHsKIH0KIDwvc3R5bGU+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+Ci0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KHRydWUpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICB9
CiAKICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeyBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
ewogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGwnKS5zY3JvbGxUb3AgKz0gMzAw
OwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KICAgfSwgMCk7IH07CiA8L3Nj
cmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvdGlsZS1vY2NsdXNp
b24tYm91bmRhcmllcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5n
L2N1bGxpbmcvdGlsZS1vY2NsdXNpb24tYm91bmRhcmllcy5odG1sCShyZXZpc2lvbiAxMTk5NDYp
CisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL3RpbGUtb2NjbHVzaW9uLWJvdW5k
YXJpZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTIsOCArMTIsOCBAQAogICA8L3N0eWxlPgog
CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKICAgICB9CiAgIDwvc2NyaXB0PgogPC9o
ZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGluZy90cmFuc2xhdGVkLWJv
eHNoYWRvdy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxp
bmcvdHJhbnNsYXRlZC1ib3hzaGFkb3cuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvY3VsbGluZy90cmFuc2xhdGVkLWJveHNoYWRvdy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw4IEBAIGJvZHkgewogfQogPC9zdHlsZT4KIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKICAg
fQogPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxs
aW5nL3Vuc2Nyb2xsZWQtd2l0aGluLWJveHNoYWRvdy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvdW5zY3JvbGxlZC13aXRoaW4tYm94c2hhZG93Lmh0
bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcv
dW5zY3JvbGxlZC13aXRoaW4tYm94c2hhZG93Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE0
ICszMywxNCBAQCBib2R5IHsKIH0KIDwvc3R5bGU+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+Ci0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KHRydWUpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwog
ICB9CiAKICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeyBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KICAgfSwgMCk7IH07CiA8
L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2FuY2VzdG9y
LW92ZXJmbG93LWNoYW5nZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0
aW5nL2dlb21ldHJ5L2FuY2VzdG9yLW92ZXJmbG93LWNoYW5nZS5odG1sCShyZXZpc2lvbiAxMTk5
NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9hbmNlc3Rvci1vdmVyZmxv
dy1jaGFuZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzUsMjAgKzM1LDIwIEBACiAgICAgfQog
ICA8L3N0eWxlPgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRm
LTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CisgICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBjaGFuZ2VPdmVyZmxvdygpCiAgICAgewog
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmNsYXNzTmFtZSA9ICdj
aGFuZ2VkJzsKIAotICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVycycpLmlubmVyVGV4dCA9IGxheW91dFRl
c3RDb250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJzJykuaW5uZXJUZXh0
ID0gdGVzdFJ1bm5lci5sYXllclRyZWVBc1RleHQoKTsKICAgICAgIAotICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiAgICAgCiAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoJ2xvYWQnLCBmdW5jdGlvbigpIHsKSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dl
b21ldHJ5L2JvdW5kcy1jbGlwcGVkLWNvbXBvc2l0ZWQtY2hpbGQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9ib3VuZHMtY2xpcHBlZC1jb21wb3Np
dGVkLWNoaWxkLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0
aW5nL2dlb21ldHJ5L2JvdW5kcy1jbGlwcGVkLWNvbXBvc2l0ZWQtY2hpbGQuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsMTMgKzM2LDEzIEBACiAgICAgfQogICA8L3N0eWxlPgogICA8c2NyaXB0
PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKIAogICAgIGZ1bmN0aW9uIGR1bXBM
YXllcnMoKQogICAgIHsKLSAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5pbm5lclRleHQgPSBsYXlv
dXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVycycpLmlubmVy
VGV4dCA9IHRlc3RSdW5uZXIubGF5ZXJUcmVlQXNUZXh0KCk7CiAgICAgfQogCiAgICAgd2luZG93
LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBkdW1wTGF5ZXJzLCBmYWxzZSk7CkluZGV4OiBMYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9jbGlwLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvY2xpcC5odG1sCShyZXZpc2lvbiAxMTk5NDYp
CisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9jbGlwLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDE1ICszMiwxNSBAQAogICAgIH0KICAgPC9zdHlsZT4KICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KICAgICAgIAogICAgIGZ1
bmN0aW9uIGRvVGVzdCgpIHsKLSAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVycycpLmlubmVyVGV4dCA9
IGxheW91dFRlc3RDb250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgpOwotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVycycpLmlubmVyVGV4dCA9
IHRlc3RSdW5uZXIubGF5ZXJUcmVlQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwogICAgICAgfQogICAgIH0KICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9h
ZCcsIGRvVGVzdCwgZmFsc2UpOwpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0
cnkvY2xpcHBlZC12aWRlby1jb250cm9sbGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvY2xpcHBlZC12aWRlby1jb250cm9sbGVyLmh0bWwJKHJl
dmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2NsaXBw
ZWQtdmlkZW8tY29udHJvbGxlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xOSwxMyArMTksMTMg
QEAKICAgPHNjcmlwdCBzcmM9Ii4uLy4uL21lZGlhL21lZGlhLWZpbGUuanMiPjwvc2NyaXB0Pgog
CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKICAgCiAgICAgZnVuY3Rpb24gdGVzdERvbmUoKQogICAgIHsK
LSAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24g
ZG9UZXN0KCkKSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2NvbXBvc2l0
ZWQtaW4tY29sdW1ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5n
L2dlb21ldHJ5L2NvbXBvc2l0ZWQtaW4tY29sdW1ucy5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisr
KyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9jb21wb3NpdGVkLWluLWNvbHVtbnMu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTMgKzM3LDEzIEBACiAgICAgfQogICA8L3N0eWxl
PgogICA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKICAgICAKICAg
ICBmdW5jdGlvbiBkdW1wTGF5ZXJzKCkKICAgICB7Ci0gICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJzJyku
aW5uZXJUZXh0ID0gbGF5b3V0VGVzdENvbnRyb2xsZXIubGF5ZXJUcmVlQXNUZXh0KCk7CisgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdsYXllcnMnKS5pbm5lclRleHQgPSB0ZXN0UnVubmVyLmxheWVyVHJlZUFzVGV4dCgpOwogICAg
IH0KICAgICAKICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGR1bXBMYXllcnMs
IGZhbHNlKTsKSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2VtcHR5LWVt
YmVkLXJlY3RzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2Vv
bWV0cnkvZW1wdHktZW1iZWQtcmVjdHMuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZW1wdHktZW1iZWQtcmVjdHMuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMyw4ICszLDggQEAKIDxodG1sPgogPGhlYWQ+CiAgICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4K
SW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNv
bXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNjYWxl
LWRvd24uaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
Z2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMTgsOCArMTgsOCBAQAogICAgICAgd2luZG93LmludGVybmFscy5z
ZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7CiAgICAg
ICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFBhZ2VTY2FsZUZhY3RvcigwLjUsIDAsIDAp
OwogICAgIH0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAgIH0KIDwvc2NyaXB0
PgogPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQt
cG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdl
LXNjYWxlLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5n
L2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOCw4ICsxOCw4IEBACiAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRp
bmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKICAgICAgIHdp
bmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0UGFnZVNjYWxlRmFjdG9yKDIsIDAsIDApOwogICAg
IH0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAgIH0KIDwvc2NyaXB0PgogPC9o
ZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRp
b24tY29tcG9zaXRlZC1zd2l0Y2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXN3aXRjaC5odG1sCShy
ZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhl
ZC1wb3NpdGlvbi1jb21wb3NpdGVkLXN3aXRjaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNywy
NSArMjcsMjUgQEAKIAogICAgICAgLy8gSWYgdGhlIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnQgZG9l
c24ndCBoYXZlIGl0cyBvd24gc3RhY2tpbmcgY29udGV4dCB0aGVuCiAgICAgICAvLyBpdCBjYW5u
b3QgZ2V0IGEgY29tcG9zaXRlZCBsYXllci4KLSAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgIGxheWVyVHJlZU91dHB1dCArPSAnQmVmb3JlIChzaG91bGQgYmUg
ZW1wdHkpOiBcbicgKyBsYXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKSArICdc
bic7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIGxheWVyVHJlZU91dHB1
dCArPSAnQmVmb3JlIChzaG91bGQgYmUgZW1wdHkpOiBcbicgKyB0ZXN0UnVubmVyLmxheWVyVHJl
ZUFzVGV4dCgpICsgJ1xuJzsKIAogICAgICAgLy8gQWRkaW5nIGEgei1pbmRleCB0byB0aGUgZml4
ZWQgcG9zaXRpb24gZWxlbWVudCB3aWxsIGdpdmUgaXQgYSBzdGFja2luZyBjb250ZXh0CiAgICAg
ICAvLyBhbmQgYWxsb3cgaXQgdG8gYmUgY29tcG9zaXRlZC4KICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdmaXhlZCcpLnN0eWxlLnpJbmRleCA9ICcxJzsKIAotICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXllclRyZWVPdXRwdXQgKz0gJ0Fm
dGVyIChzaG91bGQgbm90IGJlIGVtcHR5KTogXG4nICsgbGF5b3V0VGVzdENvbnRyb2xsZXIubGF5
ZXJUcmVlQXNUZXh0KCk7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAg
bGF5ZXJUcmVlT3V0cHV0ICs9ICdBZnRlciAoc2hvdWxkIG5vdCBiZSBlbXB0eSk6IFxuJyArIHRl
c3RSdW5uZXIubGF5ZXJUcmVlQXNUZXh0KCk7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdsYXllcnRyZWUnKS5pbm5lclRleHQgPSBsYXllclRyZWVPdXRwdXQ7Ci0gICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAgICAgICB9CiAgICAgICAKICAgICAgIC8vIEFkZGluZyBhIHRyYW5zZm9ybSB0
byB0aGUgY29udGFpbmVyIHdpbGwgdHVybiBvZmYgY29tcG9zaXRpbmcuCiAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykuc3R5bGUud2Via2l0VHJhbnNmb3JtID0gJ3Ry
YW5zbGF0ZVgoMCknOwotICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgICAgICBsYXllclRyZWVPdXRwdXQgKz0gJ0FmdGVyIChzaG91bGQgYmUgZW1wdHkpOiBcbicg
KyBsYXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgICAgICBsYXllclRyZWVPdXRwdXQgKz0gJ0FmdGVyIChzaG91
bGQgYmUgZW1wdHkpOiBcbicgKyB0ZXN0UnVubmVyLmxheWVyVHJlZUFzVGV4dCgpOwogICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJ0cmVlJykuaW5uZXJUZXh0ID0gbGF5ZXJU
cmVlT3V0cHV0OwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgfQogCiAgICAgfQpJbmRleDog
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24taWZyYW1lLWNv
bXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24taWZyYW1lLWNvbXBvc2l0ZWQtcGFn
ZS1zY2FsZS1kb3duLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBv
c2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWlmcmFtZS1jb21wb3NpdGVkLXBhZ2Utc2Nh
bGUtZG93bi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw4ICsxOCw4IEBACiAgICAgICB3aW5k
b3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlv
bih0cnVlKTsKICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0UGFnZVNjYWxlRmFj
dG9yKDAuNSwgMCwgMCk7CiAgICAgfQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsK
IAogICAgIHZhciBkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZyYW1lJykuY29udGVudERv
Y3VtZW50Lm9wZW4oKTsKICAgICBkLndyaXRlKCI8ZGl2IHN0eWxlPSdwb3NpdGlvbjpmaXhlZDsg
ei1pbmRleDogMTsgbGVmdDsgMTBweDsnPlRFU1Q8L2Rpdj4iKTsKSW5kZXg6IExheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWlmcmFtZS1jb21wb3NpdGVkLXBh
Z2Utc2NhbGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9t
ZXRyeS9maXhlZC1wb3NpdGlvbi1pZnJhbWUtY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwJKHJl
dmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVk
LXBvc2l0aW9uLWlmcmFtZS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMTgsOCArMTgsOCBAQAogICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRF
bmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7CiAgICAgICB3aW5kb3cuaW50
ZXJuYWxzLnNldHRpbmdzLnNldFBhZ2VTY2FsZUZhY3RvcigyLCAwLCAwKTsKICAgICB9Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogCiAgICAgdmFyIGQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZnJhbWUnKS5jb250ZW50RG9jdW1lbnQub3BlbigpOwogICAgIGQud3JpdGUo
IjxkaXYgc3R5bGU9J3Bvc2l0aW9uOmZpeGVkOyB6LWluZGV4OiAxOyBsZWZ0OyAxMHB4Oyc+VEVT
VDwvZGl2PiIpOwpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQt
cG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24t
dHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWwJKHJldmlzaW9uIDExOTk0
NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLXRy
YW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0yMCw4ICsyMCw4IEBACiAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJs
ZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKICAgICAgIHdpbmRvdy5pbnRlcm5h
bHMuc2V0dGluZ3Muc2V0UGFnZVNjYWxlRmFjdG9yKDAuNSwgMCwgMCk7CiAgICAgfQotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KHRydWUpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKICAgfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4
OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zv
cm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQt
cGFnZS1zY2FsZS5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNj
YWxlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIwLDggKzIwLDggQEAKICAgICAgIHdpbmRvdy5p
bnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRy
dWUpOwogICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRQYWdlU2NhbGVGYWN0b3Io
MiwgMCwgMCk7CiAgICAgfQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKICAgfQog
PC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRy
eS9mbGlwcGVkLWJsb2Nrcy1pbmxpbmUtbWFwcGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZsaXBwZWQtYmxvY2tzLWlubGluZS1tYXBwaW5n
Lmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21l
dHJ5L2ZsaXBwZWQtYmxvY2tzLWlubGluZS1tYXBwaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDYgKzI4LDYgQEAKICAgICA8L3NwYW4+CiA8L2Rpdj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9mbGlwcGVk
LXdyaXRpbmctbW9kZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5n
L2dlb21ldHJ5L2ZsaXBwZWQtd3JpdGluZy1tb2RlLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysr
IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZsaXBwZWQtd3JpdGluZy1tb2RlLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEzICszNywxMyBAQAogICAgIH0KICAgPC9zdHlsZT4K
ICAgPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAgICAgCiAgICAg
ZnVuY3Rpb24gZHVtcExheWVycygpCiAgICAgewotICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVycycpLmlu
bmVyVGV4dCA9IGxheW91dFRlc3RDb250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
bGF5ZXJzJykuaW5uZXJUZXh0ID0gdGVzdFJ1bm5lci5sYXllclRyZWVBc1RleHQoKTsKICAgICB9
CiAgICAgCiAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBkdW1wTGF5ZXJzLCBm
YWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9mb3JlZ3JvdW5k
LWxheWVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0
cnkvZm9yZWdyb3VuZC1sYXllci5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9nZW9tZXRyeS9mb3JlZ3JvdW5kLWxheWVyLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTU2LDEzICs1NiwxMyBAQAogICAgIAogICA8L3N0eWxlPgogICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRy
dWUpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCh0cnVlKTsKIAogICAgIGZ1bmN0aW9uIGR1bXBMYXllclRyZWUoKQogICAgIHsKLSAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdsYXllci10cmVlJykuaW5uZXJUZXh0ID0gbGF5b3V0VGVzdENvbnRyb2xsZXIu
bGF5ZXJUcmVlQXNUZXh0KCk7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllci10cmVlJykuaW5uZXJUZXh0ID0gdGVzdFJ1
bm5lci5sYXllclRyZWVBc1RleHQoKTsKICAgICB9CiAgICAgCiAgICAgd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoJ2xvYWQnLCBkdW1wTGF5ZXJUcmVlLCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9nZW9tZXRyeS9mb3JlZ3JvdW5kLW9mZnNldC1jaGFuZ2UuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9mb3JlZ3JvdW5kLW9m
ZnNldC1jaGFuZ2UuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvZ2VvbWV0cnkvZm9yZWdyb3VuZC1vZmZzZXQtY2hhbmdlLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDEzICs0NywxMyBAQAogCiAgIDwvc3R5bGU+CiAgIDxzY3JpcHQ+Ci0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQodHJ1ZSk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogCiAgICAgZnVuY3Rpb24gZG9UZXN0KCkKICAgICB7
Ci0gICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kaXNwbGF5KCk7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOwogCiAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgic3RyZXRjaCIpLnN0eWxlLmxlZnQgPSAiLTEwMHB4IjsKICAgICB9CkluZGV4OiBMYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9ob3Jpem9udGFsLXNjcm9sbC1jb21wb3NpdGVk
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvaG9y
aXpvbnRhbC1zY3JvbGwtY29tcG9zaXRlZC5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9ob3Jpem9udGFsLXNjcm9sbC1jb21wb3NpdGVk
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8aGVhZD4KICAgICA8dGl0bGU+
SG9yaXpvbnRhbCBzY3JvbGwgdGVzdCBmb3IgY29tcG9zaXRlZCBlbGVtZW50czwvdGl0bGU+CiAg
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICA8L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL21vY2tfc2Nyb2xsYmFycy5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+
CkBAIC0xMSw4ICsxMSw4IEBACiA8ZGl2IHN0eWxlPSItd2Via2l0LXRyYW5zZm9ybTogdHJhbnNs
YXRleigwKTsgd2lkdGg6IDEwMDBweDsgaGVpZ2h0OiA4MDBweDsgYm9yZGVyLXN0eWxlOiBzb2xp
ZDsgYm9yZGVyLWNvbG9yOiBSZWQ7IGJvcmRlci13aWR0aDogM3B4OyBiYWNrZ3JvdW5kLWltYWdl
OiB1cmwoLi4vcmVzb3VyY2VzL2FwcGxlLmpwZyk7IGJhY2tncm91bmQtcmVwZWF0OnJlcGVhdCI+
PC9kaXY+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgog
ICAgICAgd2luZG93LnNjcm9sbEJ5KDMwMCwgMCk7Ci0gICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwogPC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9nZW9tZXRyeS9odWdlLWxheWVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvaHVnZS1sYXllci5odG1sCShyZXZpc2lvbiAxMTk5
NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9odWdlLWxheWVyLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTE2LDggKzE2LDggQEAKICAgICB9CiAgIDwvc3R5bGU+CiAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KSW5kZXg6IExheW91
dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2xheWVyLWR1ZS10by1sYXllci1jaGlsZHJlbi1k
ZWVwLXN3aXRjaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dl
b21ldHJ5L2xheWVyLWR1ZS10by1sYXllci1jaGlsZHJlbi1kZWVwLXN3aXRjaC5odG1sCShyZXZp
c2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9sYXllci1k
dWUtdG8tbGF5ZXItY2hpbGRyZW4tZGVlcC1zd2l0Y2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
NDQsMTggKzQ0LDE4IEBACiAgICAgCiAgIDwvc3R5bGU+CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KICAgICAKICAgICB2YXIgdGV4
dCA9ICIiOwogICAgIGZ1bmN0aW9uIHNob3dUcmVlKHdoaWNoKQogICAgIHsKICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAg
ICAgICAgICAgIHRleHQgKz0gIlxuIiArIHdoaWNoICsgIiBkdW1wIGxheWVyIHRyZWU6XG4iOwot
ICAgICAgICAgICAgICAgIHRleHQgKz0gbGF5b3V0VGVzdENvbnRyb2xsZXIubGF5ZXJUcmVlQXNU
ZXh0KCk7CisgICAgICAgICAgICAgICAgdGV4dCArPSB0ZXN0UnVubmVyLmxheWVyVHJlZUFzVGV4
dCgpOwogICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5p
bm5lclRleHQgPSB0ZXh0OwogICAgICAgICAgICAgfQogICAgICAgICB9LCAwKTsKQEAgLTYzLDcg
KzYzLDcgQEAKIAogICAgIGZ1bmN0aW9uIGRvVGVzdCgpCiAgICAgewotICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CiAgICAgICAgICAgICAvL2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5pbm5lclRl
eHQgPSAiIjsKICAgICAgICAgc2hvd1RyZWUoIkZpcnN0Iik7CiAKQEAgLTc4LDcgKzc4LDcgQEAK
ICAgICAgICAgICAgICAgICBzaG93VHJlZSgiVGhpcmQiKTsKICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgICAgIH0sIDApOwogICAgICAg
ICAgICAgfSwgMTAwKTsKICAgICAgICAgfSwgMTAwKTsKSW5kZXg6IExheW91dFRlc3RzL2NvbXBv
c2l0aW5nL2dlb21ldHJ5L2xheWVyLWR1ZS10by1sYXllci1jaGlsZHJlbi1kZWVwLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvbGF5ZXItZHVlLXRv
LWxheWVyLWNoaWxkcmVuLWRlZXAuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvbGF5ZXItZHVlLXRvLWxheWVyLWNoaWxkcmVuLWRlZXAu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTMgKzQ1LDEzIEBACiAgICAgCiAgIDwvc3R5bGU+
CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogICAgIGZ1bmN0aW9uIGRvVGVzdCgpCiAgICAg
ewotICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiAKICAgICB3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGRvVGVzdCwgZmFsc2UpOwpJbmRleDogTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvbGF5ZXItZHVlLXRvLWxheWVyLWNoaWxkcmVuLXN3aXRj
aC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2xh
eWVyLWR1ZS10by1sYXllci1jaGlsZHJlbi1zd2l0Y2guaHRtbAkocmV2aXNpb24gMTE5OTQ2KQor
KysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvbGF5ZXItZHVlLXRvLWxheWVyLWNo
aWxkcmVuLXN3aXRjaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxOCArMjUsMTggQEAKICAg
ICAKICAgPC9zdHlsZT4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9
InV0Zi04Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CiAgICAgfQogICAgIAogICAgIHZhciB0ZXh0ID0gIiI7CiAgICAgZnVuY3Rp
b24gc2hvd1RyZWUod2hpY2gpCiAgICAgewogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgICAgICAgICAgdGV4dCArPSAi
XG4iICsgd2hpY2ggKyAiIGR1bXAgbGF5ZXIgdHJlZTpcbiI7Ci0gICAgICAgICAgICAgICAgdGV4
dCArPSBsYXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAgICAgICAg
ICAgICB0ZXh0ICs9IHRlc3RSdW5uZXIubGF5ZXJUcmVlQXNUZXh0KCk7CiAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVycycpLmlubmVyVGV4dCA9IHRleHQ7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0sIDApOwpAQCAtNDQsNyArNDQsNyBAQAogCiAgICAgZnVu
Y3Rpb24gZG9UZXN0KCkKICAgICB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAgIC8vZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVycycpLmlubmVyVGV4dCA9ICIiOwogICAgICAgICBz
aG93VHJlZSgiRmlyc3QiKTsKICAgICAgICAgICAgIApAQCAtNTksNyArNTksNyBAQAogICAgICAg
ICAgICAgICAgIHNob3dUcmVlKCJUaGlyZCIpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICAgICAgfSwgMCk7CiAgICAgICAgICAgICB9
LCAxMDApOwogICAgICAgICB9LCAxMDApOwpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
Z2VvbWV0cnkvbGF5ZXItZHVlLXRvLWxheWVyLWNoaWxkcmVuLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvbGF5ZXItZHVlLXRvLWxheWVyLWNoaWxk
cmVuLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dl
b21ldHJ5L2xheWVyLWR1ZS10by1sYXllci1jaGlsZHJlbi5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiwxMyArMjYsMTMgQEAKICAgICAKICAgPC9zdHlsZT4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwogCiAgICAgZnVuY3Rpb24gZG9UZXN0KCkKICAgICB7Ci0gICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogICAgIH0KIAogICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2Fk
JywgZG9UZXN0LCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRy
eS9saW1pdC1sYXllci1ib3VuZHMtY2xpcHBpbmctYW5jZXN0b3IuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9saW1pdC1sYXllci1ib3VuZHMtY2xp
cHBpbmctYW5jZXN0b3IuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvZ2VvbWV0cnkvbGltaXQtbGF5ZXItYm91bmRzLWNsaXBwaW5nLWFuY2VzdG9yLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2LDkgQEAKICAgICB9CiAgIDwvc3R5bGU+CiAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOwotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiAKICAg
ICBmdW5jdGlvbiBkb1Rlc3QoKQpAQCAtNTcsOSArNTcsOSBAQAogICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBzY3JvbGxhYmxlcy5sZW5ndGg7ICsraSkKICAgICAgICAgc2Nyb2xsYWJsZXNbaV0u
c2Nyb2xsVG9wID0gMTAwOwogCi0gICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5pbm5lclRleHQg
PSBsYXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5pbm5lclRleHQg
PSB0ZXN0UnVubmVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKICAgICAgIH0KICAgICB9CiAKSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5n
L2dlb21ldHJ5L2xpbWl0LWxheWVyLWJvdW5kcy1maXhlZC1wb3NpdGlvbmVkLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvbGltaXQtbGF5ZXItYm91
bmRzLWZpeGVkLXBvc2l0aW9uZWQuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvbGltaXQtbGF5ZXItYm91bmRzLWZpeGVkLXBvc2l0aW9u
ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTggKzQyLDE4IEBACiAgICAgfQogICA8L3N0
eWxlPgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAg
fQogCiAgICAgZnVuY3Rpb24gZG9UZXN0KCkKICAgICB7CiAgICAgICB3aW5kb3cuc2Nyb2xsQnko
MCwgMTAwKTsKIAotICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJzJykuaW5uZXJUZXh0ID0gbGF5b3V0
VGVzdENvbnRyb2xsZXIubGF5ZXJUcmVlQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJzJykuaW5uZXJUZXh0ID0gdGVzdFJ1
bm5lci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CiAgICAgICB9CiAgICAgfQogCkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRy
eS9saW1pdC1sYXllci1ib3VuZHMtb3BhY2l0eS10cmFuc2l0aW9uLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvbGltaXQtbGF5ZXItYm91bmRzLW9w
YWNpdHktdHJhbnNpdGlvbi5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9nZW9tZXRyeS9saW1pdC1sYXllci1ib3VuZHMtb3BhY2l0eS10cmFuc2l0aW9u
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE3LDkgKzE3LDkgQEAKICAgICB9CiAgIDwvc3R5bGU+
CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICB9CiAK
ICAgICBmdW5jdGlvbiBzdGFydEZhZGUoKQpAQCAtMzMsOSArMzMsOSBAQAogICAgIAogICAgIGZ1
bmN0aW9uIGZhZGVEb25lKCkKICAgICB7Ci0gICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7Ci0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5pbm5l
clRleHQgPSBsYXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5pbm5l
clRleHQgPSB0ZXN0UnVubmVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKICAgICAgIH0KICAgICB9CiAgIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvbGltaXQtbGF5ZXItYm91bmRzLW92ZXJmbG93LXJl
cGFpbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRy
eS9saW1pdC1sYXllci1ib3VuZHMtb3ZlcmZsb3ctcmVwYWludC5odG1sCShyZXZpc2lvbiAxMTk5
NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9saW1pdC1sYXllci1ib3Vu
ZHMtb3ZlcmZsb3ctcmVwYWludC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4ICszOSw4IEBA
CiAgICAgfQogICA8L3N0eWxlPgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hh
cnNldD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKICAgICBmdW5j
dGlvbiBkb1Rlc3QoKQogICAgIHsKQEAgLTQ5LDggKzQ5LDggQEAKICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBzY3JvbGxhYmxlcy5sZW5ndGg7ICsraSkKICAgICAgICAgICBzY3JvbGxhYmxl
c1tpXS5zY3JvbGxUb3AgPSA1MDA7CiAKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKIAogICAgICAgfSwgMCk7CiAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvZ2VvbWV0cnkvbGltaXQtbGF5ZXItYm91bmRzLW92ZXJmbG93LXJvb3QuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9saW1pdC1sYXllci1i
b3VuZHMtb3ZlcmZsb3ctcm9vdC5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9nZW9tZXRyeS9saW1pdC1sYXllci1ib3VuZHMtb3ZlcmZsb3ctcm9vdC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxNiArNDYsMTYgQEAKICAgICB9CiAgIDwvc3R5bGU+
CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiAK
ICAgICBmdW5jdGlvbiBkb1Rlc3QoKQogICAgIHsKLSAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVycycp
LmlubmVyVGV4dCA9IGxheW91dFRlc3RDb250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgpOwotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVycycp
LmlubmVyVGV4dCA9IHRlc3RSdW5uZXIubGF5ZXJUcmVlQXNUZXh0KCk7CisgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgfQogICAgIH0KIApJbmRleDogTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvZ2VvbWV0cnkvbGltaXQtbGF5ZXItYm91bmRzLXBvc2l0aW9uZWQtdHJhbnNp
dGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5
L2xpbWl0LWxheWVyLWJvdW5kcy1wb3NpdGlvbmVkLXRyYW5zaXRpb24uaHRtbAkocmV2aXNpb24g
MTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvbGltaXQtbGF5ZXIt
Ym91bmRzLXBvc2l0aW9uZWQtdHJhbnNpdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00NSwx
NyArNDUsMTcgQEAKICAgICB9CiAgIDwvc3R5bGU+CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBkb1Rlc3QoKQogICAg
IHsKICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmYXItbGVmdCcpLmNsYXNzTmFtZSA9
ICdtb3ZlZCc7Ci0gICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5pbm5lclRleHQgPSBsYXlvdXRU
ZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5pbm5lclRleHQgPSB0ZXN0UnVu
bmVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
ICAgICAgIH0KICAgICB9CiAKSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5
L2xpbWl0LWxheWVyLWJvdW5kcy1wb3NpdGlvbmVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvbGltaXQtbGF5ZXItYm91bmRzLXBvc2l0aW9uZWQu
aHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0
cnkvbGltaXQtbGF5ZXItYm91bmRzLXBvc2l0aW9uZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
NDEsMTYgKzQxLDE2IEBACiAgICAgfQogICA8L3N0eWxlPgogICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gZG9UZXN0KCkK
ICAgICB7Ci0gICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5pbm5lclRleHQgPSBsYXlvdXRUZXN0
Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5pbm5lclRleHQgPSB0ZXN0UnVubmVy
LmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAg
ICAgIH0KICAgICB9CiAKSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2xp
bWl0LWxheWVyLWJvdW5kcy10cmFuc2Zvcm1lZC1vdmVyZmxvdy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2xpbWl0LWxheWVyLWJvdW5kcy10cmFu
c2Zvcm1lZC1vdmVyZmxvdy5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9nZW9tZXRyeS9saW1pdC1sYXllci1ib3VuZHMtdHJhbnNmb3JtZWQtb3ZlcmZs
b3cuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTggKzQ3LDE4IEBACiAgICAgfQogICA8L3N0
eWxlPgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAg
fQogCiAgICAgZnVuY3Rpb24gZG9UZXN0KCkKICAgICB7Ci0gICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAg
ICAgLy8gV2UgbmVlZCB0byBjYWxsIGRpc3BsYXkoKSBoZXJlIHRvIHN5bmMgdGhlIGNvbXBvc2l0
b3Igc3RhdGUgYW5kIGF2b2lkIGEgcmFjZSBjb25kaXRpb24uCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmRpc3BsYXkoKTsKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xh
eWVycycpLmlubmVyVGV4dCA9IGxheW91dFRlc3RDb250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgp
OwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIHRl
c3RSdW5uZXIuZGlzcGxheSgpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5
ZXJzJykuaW5uZXJUZXh0ID0gdGVzdFJ1bm5lci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICB9CiAgICAgfQogCkluZGV4OiBMYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9saW1pdC1sYXllci1ib3VuZHMtdHJhbnNmb3JtZWQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9saW1p
dC1sYXllci1ib3VuZHMtdHJhbnNmb3JtZWQuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvbGltaXQtbGF5ZXItYm91bmRzLXRyYW5zZm9y
bWVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQyLDE2ICs0MiwxNiBAQAogICAgIH0KICAgPC9z
dHlsZT4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4K
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAg
IH0KIAogICAgIGZ1bmN0aW9uIGRvVGVzdCgpCiAgICAgewotICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5
ZXJzJykuaW5uZXJUZXh0ID0gbGF5b3V0VGVzdENvbnRyb2xsZXIubGF5ZXJUcmVlQXNUZXh0KCk7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5
ZXJzJykuaW5uZXJUZXh0ID0gdGVzdFJ1bm5lci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICB9CiAgICAgfQogCkluZGV4OiBMYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9vYmplY3QtY2xpcC1yZWN0cy1hc3NlcnRpb24uaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9vYmplY3Qt
Y2xpcC1yZWN0cy1hc3NlcnRpb24uaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvb2JqZWN0LWNsaXAtcmVjdHMtYXNzZXJ0aW9uLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTIyLDggKzIyLDggQEAKICAgICAKICAgPC9zdHlsZT4KICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogICA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgpJbmRleDogTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvb3V0bGluZS1jaGFuZ2UuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9vdXRsaW5lLWNoYW5nZS5odG1s
CShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9v
dXRsaW5lLWNoYW5nZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxNSArMzIsMTUgQEAKICAg
ICAKICAgPC9zdHlsZT4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9
InV0Zi04Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIAogICAgIGZ1bmN0
aW9uIHRlc3QoKQogICAgIHsKICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewog
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdGVyJykuc3R5bGUub3V0bGluZSA9
ICc1cHggc29saWQgZ3JlZW4nOwotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogICAgICAgfSwgMCk7CiAgICAgfQogICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCds
b2FkJywgdGVzdCwgZmFsc2UpOwpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0
cnkvcGFydGlhbC1sYXlvdXQtdXBkYXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvZ2VvbWV0cnkvcGFydGlhbC1sYXlvdXQtdXBkYXRlLmh0bWwJKHJldmlzaW9u
IDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L3BhcnRpYWwtbGF5
b3V0LXVwZGF0ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxNSArNDEsMTUgQEAKICAgfQog
ICA8L3N0eWxlPgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRm
LTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKICAgICBmdW5jdGlvbiBzdGFy
dFByb2dyYW0oKQogICAgIHsKICAgICAgIHZhciBwYW5lbCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJwYW5lbCIpOwogICAgICAgcGFuZWwuYWRkRXZlbnRMaXN0ZW5lcignd2Via2l0VHJhbnNp
dGlvbkVuZCcsIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwogICAgICAgfSwgZmFsc2UpOwogICAgICAgcGFuZWwuc3R5bGUubGVmdCA9ICIwIjsK
ICAgICB9CkBAIC02OCw0ICs2OCw0IEBACiAgIDwvZGl2PgogCiA8L2JvZHk+Ci08L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvZ2VvbWV0cnkvcHJlc2VydmUtM2Qtc3dpdGNoaW5nLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvcHJlc2VydmUtM2Qtc3dpdGNoaW5n
Lmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21l
dHJ5L3ByZXNlcnZlLTNkLXN3aXRjaGluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0
Niw5IEBACiAgICAgfQogICA8L3N0eWxlPgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgY2hhcnNldD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CiAgICAgfQogICAgIAogICAgIHRpbWVvdXQgPSAxMDA7CkBAIC01OSwx
MiArNTksMTIgQEAKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXJlbnQi
KS5zdHlsZS53ZWJraXRUcmFuc2Zvcm1TdHlsZSA9ICJmbGF0IjsKICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInBhcmVudCIpLnN0eWxlLndlYmtpdFRyYW5zZm9ybVN0eWxlID0gInByZXNlcnZlLTNkIjsK
LSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChsYXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsYXllclRyZWUgPSBsYXlvdXRUZXN0Q29u
dHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlc3RSdW5uZXIubGF5ZXJUcmVl
QXNUZXh0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGF5ZXJUcmVlID0gdGVzdFJ1
bm5lci5sYXllclRyZWVBc1RleHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJsYXllclRyZWUiKS5pbm5lckhUTUwgPSAiPHByZT4iICsgbGF5ZXJU
cmVlICsgIjwvcHJlPiI7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9LCB0aW1lb3V0KTsKICAgICAgICAgfSwgdGltZW91dCk7CkluZGV4OiBMYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9nZW9tZXRyeS9yZXBhaW50LWZvcmVncm91bmQtbGF5ZXIuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9yZXBhaW50LWZvcmVncm91
bmQtbGF5ZXIuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvZ2VvbWV0cnkvcmVwYWludC1mb3JlZ3JvdW5kLWxheWVyLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTYxLDkgKzYxLDkgQEAKICAgICAKICAgPC9zdHlsZT4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUp
OwotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwor
ICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24g
cmVwYWludCgpCkBAIC03NCw4ICs3NCw4IEBACiAgICAgICAgIGN1cnJJbWFnZS5zdHlsZS5iYWNr
Z3JvdW5kQ29sb3IgPSAnb3JhbmdlJzsKICAgICAgIH0KIAotICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKICAgICB9CiAgICAgCiAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xv
YWQnLCBmdW5jdGlvbigpIHsKSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5
L3Jvb3QtbGF5ZXItdXBkYXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvZ2VvbWV0cnkvcm9vdC1sYXllci11cGRhdGUuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQor
KysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvcm9vdC1sYXllci11cGRhdGUuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTYgKzQwLDE2IEBACiAgICAgfQogICA8L3N0eWxlPgog
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwogCiAgIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpCiAgIHsKICAgICB3aW5k
b3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVu
dC5zdHlsZS53aWR0aCA9ICc4MDBweCcKICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgfSwg
MCk7CiAgICAgfSwgMCk7CiAgIH0KSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21l
dHJ5L3J0bC1jb21wb3NpdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvZ2VvbWV0cnkvcnRsLWNvbXBvc2l0ZWQuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysg
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvcnRsLWNvbXBvc2l0ZWQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTksOCArMTksOCBAQCBib2R5IHsKIH0KIDwvc3R5bGU+CiA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQodHJ1ZSk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQodHJ1ZSk7CiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgpAQCAtMjks
NCArMjksNCBAQCBib2R5IHsKICAgICA8ZGl2IGlkPSJ3cmFwcGVyIj48L2Rpdj4KICAgICA8ZGl2
IGNsYXNzPSJhY2NlbGVyYXRlZCI+PC9kaXY+CiA8L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
Z2VvbWV0cnkvdmVydGljYWwtc2Nyb2xsLWNvbXBvc2l0ZWQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS92ZXJ0aWNhbC1zY3JvbGwtY29tcG9zaXRl
ZC5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9t
ZXRyeS92ZXJ0aWNhbC1zY3JvbGwtY29tcG9zaXRlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0y
LDggKzIsOCBAQAogPGhlYWQ+CiAgICAgPHRpdGxlPlZlcnRpY2FsIHNjcm9sbCB0ZXN0IGZvciBj
b21wb3NpdGVkIGVsZW1lbnRzPC90aXRsZT4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwogICAgIDwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbW9ja19zY3Jv
bGxiYXJzLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KQEAgLTExLDggKzExLDggQEAKIDxkaXYgc3R5
bGU9Ii13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUzZCgwLDAsMSwyMGRlZyk7IHdpZHRoOiA4MDBw
eDsgaGVpZ2h0OiAxMDAwcHg7IGJvcmRlci1zdHlsZTogc29saWQ7IGJvcmRlci1jb2xvcjogUmVk
OyBib3JkZXItd2lkdGg6IDNweDsgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL3Jlc291cmNlcy9h
cHBsZS5qcGcpOyBiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQiPjwvZGl2PgogPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KICAgICAgIHdpbmRvdy5zY3JvbGxC
eSgwLCAyMDApOwotICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIDwvc2NyaXB0Pgog
PC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkv
dmlkZW8tZml4ZWQtc2Nyb2xsaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvZ2VvbWV0cnkvdmlkZW8tZml4ZWQtc2Nyb2xsaW5nLmh0bWwJKHJldmlzaW9uIDEx
OTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L3ZpZGVvLWZpeGVkLXNj
cm9sbGluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw4IEBACiAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CiAgICAgZnVuY3Rpb24gdGVz
dERvbmUoKQogICAgIHsKLSAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQog
CiAgICAgZnVuY3Rpb24gbW9kaWZ5RG9jdW1lbnQoKQpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvZ2VvbWV0cnkvdmlkZW8tb3BhY2l0eS1vdmVybGF5Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvdmlkZW8tb3BhY2l0eS1vdmVybGF5Lmh0
bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5
L3ZpZGVvLW9wYWNpdHktb3ZlcmxheS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSw4
IEBACiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CiAg
ICAgZnVuY3Rpb24gdGVzdERvbmUoKQogICAgIHsKLSAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
KyAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gZG9UZXN0KCkKSW5kZXg6IExheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL2lmcmFtZXMvYmVjb21lLWNvbXBvc2l0ZWQtbmVzdGVkLWlmcmFtZXMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL2JlY29tZS1j
b21wb3NpdGVkLW5lc3RlZC1pZnJhbWVzLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91
dFRlc3RzL2NvbXBvc2l0aW5nL2lmcmFtZXMvYmVjb21lLWNvbXBvc2l0ZWQtbmVzdGVkLWlmcmFt
ZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjYsOSArMjYsOSBAQAogICAgIH0KICAgPC9zdHls
ZT4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CiAgICAgfQogCiAgICAgZnVuY3Rpb24gZG9UZXN0KCkKQEAgLTM2LDEwICszNiwxMCBAQAogICAg
ICAgICAvLyBGb3Igc29tZSByZWFzb24gdGhpcyBkZWxheSBpcyByZXF1aXJlZCBmb3IgQXBwS2l0
IHRvIG5vdCBzaG9ydC1jaXJjdWl0IHRoZSBkaXNwbGF5LgogICAgICAgICB3aW5kb3cuc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94
JykuY2xhc3NOYW1lID0gJ2NvbXBvc2l0ZWQnOwotICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZGlz
cGxheSgpOwotICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJzJyku
aW5uZXJIVE1MID0gbGF5b3V0VGVzdENvbnRyb2xsZXIubGF5ZXJUcmVlQXNUZXh0KCk7Ci0gICAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kaXNwbGF5
KCk7CisgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5pbm5l
ckhUTUwgPSB0ZXN0UnVubmVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICB9CiAgICAgICAgIH0sIDIwKTsKICAgICB9
CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL2JlY29tZS1vdmVybGFwcGVk
LWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2lmcmFt
ZXMvYmVjb21lLW92ZXJsYXBwZWQtaWZyYW1lLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL2lmcmFtZXMvYmVjb21lLW92ZXJsYXBwZWQtaWZyYW1lLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAKICAgICB9CiAgIDwvc3R5bGU+CiAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAg
IH0KIAogICAgIGZ1bmN0aW9uIGRvVGVzdCgpCkBAIC0zNiwxMCArMzYsMTAgQEAKICAgICAgICAg
Ly8gTmVlZCB0byB3YWl0IGZvciBjb21wb3NpdGluZyBsYXllcnMgdG8gYmUgdXBkYXRlZC4KICAg
ICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ292ZXJsYXknKS5zdHlsZS5oZWlnaHQgPSAnMTUwcHgnOwotICAgICAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsgLy8gUGFpbnRpbmcgaGFzIHRvIGhhcHBl
biB0byBkZXRlY3Qgb3ZlcmxhcC4KLSAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnbGF5ZXJzJykuaW5uZXJIVE1MID0gbGF5b3V0VGVzdENvbnRyb2xsZXIubGF5ZXJUcmVl
QXNUZXh0KCk7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7IC8vIFBhaW50aW5nIGhhcyB0byBoYXBwZW4gdG8gZGV0
ZWN0IG92ZXJsYXAuCisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xh
eWVycycpLmlubmVySFRNTCA9IHRlc3RSdW5uZXIubGF5ZXJUcmVlQXNUZXh0KCk7CisgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0sIDApOwogICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2lmcmFtZXMvY29t
cG9zaXRlZC1pZnJhbWUtc2Nyb2xsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvaWZyYW1lcy9jb21wb3NpdGVkLWlmcmFtZS1zY3JvbGwuaHRtbAkocmV2aXNpb24g
MTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvaWZyYW1lcy9jb21wb3NpdGVkLWlm
cmFtZS1zY3JvbGwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsOCBAQAogICA8L3N0
eWxlPgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgog
ICAgIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKICAgICBmdW5jdGlvbiBkb1Rl
c3QoKQogICAgIHsKQEAgLTQyLDggKzQyLDggQEAKICAgICAgICAgdmFyIGlmcmFtZSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpZnJhbWUnKVswXTsKICAgICAgICAgaWZyYW1lLmNv
bnRlbnRXaW5kb3cuc2Nyb2xsVG8oMCwgMjAwKTsKIAotICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwogICAgICAgfSwgMCkKICAgICB9CiAgICAgCkluZGV4OiBMYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL2NvbXBvc2l0ZWQtcGFyZW50LWlmcmFtZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2lmcmFtZXMvY29tcG9zaXRlZC1w
YXJlbnQtaWZyYW1lLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBv
c2l0aW5nL2lmcmFtZXMvY29tcG9zaXRlZC1wYXJlbnQtaWZyYW1lLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEzLDE2ICsxMywxNiBAQAogICAgIH0KICAgPC9zdHlsZT4KICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogCiAgICAgZnVu
Y3Rpb24gZG9UZXN0KCkKICAgICB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5p
bm5lckhUTUwgPSBsYXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKLSAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
bGF5ZXJzJykuaW5uZXJIVE1MID0gdGVzdFJ1bm5lci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9CiAgICAgfQogCkluZGV4
OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL2Nvbm5lY3QtY29tcG9zaXRpbmctaWZy
YW1lMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2lmcmFtZXMv
Y29ubmVjdC1jb21wb3NpdGluZy1pZnJhbWUyLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL2lmcmFtZXMvY29ubmVjdC1jb21wb3NpdGluZy1pZnJhbWUy
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDIxICsyNCwyMSBAQAogICAgIAogICA8L3N0eWxl
PgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
ICAgICB9CiAKICAgICBmdW5jdGlvbiBkb1Rlc3QoKQogICAgIHsKLSAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmRpc3BsYXkoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
dGVzdFJ1bm5lci5kaXNwbGF5KCk7CiAKICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdp
ZnJhbWUnKS5jbGFzc05hbWUgPSAnY29tcG9zaXRlZCc7CiAKLSAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xh
eWVycycpLmlubmVyVGV4dCA9IGxheW91dFRlc3RDb250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgp
OwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xh
eWVycycpLmlubmVyVGV4dCA9IHRlc3RSdW5uZXIubGF5ZXJUcmVlQXNUZXh0KCk7CisgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgfQogICAgIH0KICAgICAKSW5kZXg6IExh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL2lmcmFtZXMvY29ubmVjdC1jb21wb3NpdGluZy1pZnJhbWUz
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvaWZyYW1lcy9jb25u
ZWN0LWNvbXBvc2l0aW5nLWlmcmFtZTMuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvaWZyYW1lcy9jb25uZWN0LWNvbXBvc2l0aW5nLWlmcmFtZTMuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMTgsMjEgKzE4LDIxIEBACiAgICAgCiAgIDwvc3R5bGU+CiAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAg
IH0KIAogICAgIGZ1bmN0aW9uIGRvVGVzdCgpCiAgICAgewotICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZGlzcGxheSgp
OworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmRpc3Bs
YXkoKTsKIAogICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lmcmFtZScpLmNsYXNzTmFt
ZSA9ICdjb21wb3NpdGVkJzsKIAotICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJzJykuaW5uZXJUZXh0
ID0gbGF5b3V0VGVzdENvbnRyb2xsZXIubGF5ZXJUcmVlQXNUZXh0KCk7Ci0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJzJykuaW5uZXJUZXh0
ID0gdGVzdFJ1bm5lci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CiAgICAgICB9CiAgICAgfQogICAgIApJbmRleDogTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvaWZyYW1lcy9jb25uZWN0LWNvbXBvc2l0aW5nLWlmcmFtZS1kZWxheWVkLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvaWZyYW1lcy9jb25uZWN0LWNvbXBv
c2l0aW5nLWlmcmFtZS1kZWxheWVkLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRl
c3RzL2NvbXBvc2l0aW5nL2lmcmFtZXMvY29ubmVjdC1jb21wb3NpdGluZy1pZnJhbWUtZGVsYXll
ZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwyMSArMjQsMjEgQEAKICAgICAKICAgPC9zdHls
ZT4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CiAgICAgfQogCiAgICAgZnVuY3Rpb24gZG9UZXN0KCkKICAgICB7Ci0gICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kaXNwbGF5KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIuZGlzcGxheSgpOwogCiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdib3gnKS5jbGFzc05hbWUgPSAnY29tcG9zaXRlZCc7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lmcmFtZScpLmNvbnRlbnREb2N1bWVu
dC5ib2R5Lm9mZnNldFdpZHRoOyAvLyB1cGRhdGUgaWZyYW1lIGxheW91dAotICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5pbm5lclRleHQgPSBsYXlvdXRUZXN0Q29u
dHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKLSAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVy
cycpLmlubmVyVGV4dCA9IHRlc3RSdW5uZXIubGF5ZXJUcmVlQXNUZXh0KCk7CisgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkluZGV4OiBM
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL2Nvbm5lY3QtY29tcG9zaXRpbmctaWZyYW1l
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvaWZyYW1lcy9jb25u
ZWN0LWNvbXBvc2l0aW5nLWlmcmFtZS5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL2Nvbm5lY3QtY29tcG9zaXRpbmctaWZyYW1lLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTI0LDkgKzI0LDkgQEAKICAgICAKICAgPC9zdHlsZT4KICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQog
CiAgICAgLy8gQ2FsbGVkIGZyb20gc3ViZnJhbWUuCkBAIC0zNCwxMiArMzQsMTIgQEAKICAgICB7
CiAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFyZW50LWlmcmFtZScpLmNvbnRlbnRE
b2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoOyAvLyB3b3JrIGFyb3VuZCBidWcgNDE5OTkuCiAKLSAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmRpc3BsYXkoKTsKKyAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7CiAKLSAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVycycpLmlu
bmVyVGV4dCA9IGxheW91dFRlc3RDb250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgpOwotICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVycycpLmlu
bmVyVGV4dCA9IHRlc3RSdW5uZXIubGF5ZXJUcmVlQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwogICAgICAgfQogICAgIH0KICAgPC9zY3JpcHQ+CkluZGV4OiBMYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL2VudGVyLWNvbXBvc2l0aW5nLWlmcmFtZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2lmcmFtZXMvZW50ZXItY29t
cG9zaXRpbmctaWZyYW1lLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL2lmcmFtZXMvZW50ZXItY29tcG9zaXRpbmctaWZyYW1lLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTIzLDE5ICsyMywxOSBAQAogICAgIAogICA8L3N0eWxlPgogICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiAKICAgICAv
LyBDYWxsZWQgZnJvbSBzdWJmcmFtZS4KICAgICBmdW5jdGlvbiB0ZXN0RG9uZSgpCiAgICAgewog
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhcmVudC1pZnJhbWUnKS5jb250ZW50RG9j
dW1lbnQuYm9keS5vZmZzZXRXaWR0aDsgLy8gd29yayBhcm91bmQgYnVnIDQxOTk5LgotICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kaXNwbGF5KCk7Ci0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXll
cnMnKS5pbm5lclRleHQgPSBsYXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOworICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJzJykuaW5uZXJUZXh0ID0gdGVzdFJ1bm5l
ci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAg
ICAgICB9CiAgICAgfQogICA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5n
L2lmcmFtZXMvaWZyYW1lLWNvbnRlbnQtZmxpcHBpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL2lmcmFtZS1jb250ZW50LWZsaXBwaW5nLmh0bWwJ
KHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2lmcmFtZXMvaWZy
YW1lLWNvbnRlbnQtZmxpcHBpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTgsOCArMTgsOCBA
QAogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgogICAg
IGZ1bmN0aW9uIGRvVGVzdCgpCiAgICAgewotICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZGlzcGxheSgpOworICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmRpc3BsYXkoKTsKIAog
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lmcmFtZScpLmNsYXNzTmFtZSA9ICdjb21w
b3NpdGVkJzsKICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL2lm
cmFtZS1jb3B5LW9uLXNjcm9sbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBv
c2l0aW5nL2lmcmFtZXMvaWZyYW1lLWNvcHktb24tc2Nyb2xsLmh0bWwJKHJldmlzaW9uIDExOTk0
NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2lmcmFtZXMvaWZyYW1lLWNvcHktb24tc2Ny
b2xsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEzLDE2ICsxMywxNiBAQAogICAgIH0KICAgPC9z
dHlsZT4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4K
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogICAgICAgICBmdW5jdGlvbiBk
b1Rlc3QoKQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBOZWVkIHRvIHdhaXQgZm9yIGNvbXBv
c2l0aW5nIGxheWVycyB0byBiZSB1cGRhdGVkLgogICAgICAgICAgICAgd2luZG93LnNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2lmcmFtZScpLmNvbnRlbnRXaW5kb3cuc2Nyb2xsVG8oMCwgMTIwKTsKLSAgICAgICAgICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKICAgICAgICAgICAgIH0sIDApOwogICAgICAgICB9CiAKSW5kZXg6IExheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL2lmcmFtZXMvaWZyYW1lLWluLWNvbXBvc2l0ZWQtbGF5ZXIuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL2lmcmFtZS1pbi1jb21w
b3NpdGVkLWxheWVyLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBv
c2l0aW5nL2lmcmFtZXMvaWZyYW1lLWluLWNvbXBvc2l0ZWQtbGF5ZXIuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMTQsMTIgKzE0LDEyIEBACiAgICAgIj48L2lmcmFtZT4KIDwvZGl2PgogPHNjcmlw
dD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmcmFtZSIpLmNv
bnRlbnRXaW5kb3cuc2Nyb2xsVG8oNjAwLCA2MDApOwotICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9LCAyMDApOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL2lmcmFtZS1yZXNpemUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL2lmcmFtZS1yZXNpemUuaHRtbAko
cmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvaWZyYW1lcy9pZnJh
bWUtcmVzaXplLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDIzICsyOCwyMyBAQAogICAgIAog
ICA8L3N0eWxlPgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRm
LTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBkb1Rlc3QoKQogICAgIHsKICAgICAgICAg
Ly8gRm9yIHNvbWUgcmVhc29uIHRoaXMgZGVsYXkgaXMgcmVxdWlyZWQgZm9yIEFwcEtpdCB0byBu
b3Qgc2hvcnQtY2lyY3VpdCB0aGUgZGlzcGxheS4KICAgICAgICAgd2luZG93LnNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsKKyAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmRpc3BsYXkoKTsK
IAogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhcmVudC1pZnJhbWUnKS5j
bGFzc05hbWUgPSAnYmlnZ2VyJzsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kaXNwbGF5
KCk7Ci0gICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVycycpLmlu
bmVySFRNTCA9IGxheW91dFRlc3RDb250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgpOwotICAgICAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZGlz
cGxheSgpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMn
KS5pbm5lckhUTUwgPSB0ZXN0UnVubmVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9LCAw
KTsKICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL2lmcmFtZS1z
aXplLWZyb20temVyby5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5n
L2lmcmFtZXMvaWZyYW1lLXNpemUtZnJvbS16ZXJvLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysr
IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2lmcmFtZXMvaWZyYW1lLXNpemUtZnJvbS16ZXJvLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAKICAgICAKICAgPC9zdHlsZT4KICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAg
fQogCiAgICAgZnVuY3Rpb24gZG9UZXN0KCkKQEAgLTM3LDkgKzM3LDkgQEAKICAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpZnJhbWUnKS5jbGFzc05hbWUgPSAnZXhwYW5kZWQn
OwogICAgICAgICAgICAgLy8gTmVlZCB0byB3YWl0IGZvciBjb21wb3NpdGluZyBsYXllcnMgdG8g
YmUgdXBkYXRlZC4KICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVycycpLmlubmVySFRN
TCA9IGxheW91dFRlc3RDb250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgpOwotICAgICAgICAgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5pbm5lckhUTUwgPSB0ZXN0UnVubmVyLmxheWVyVHJl
ZUFzVGV4dCgpOworICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9LCAwKTsKICAgICAgICAgfSwgMCk7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL2lmcmFtZS1zaXplLXRvLXplcm8u
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL2lmcmFt
ZS1zaXplLXRvLXplcm8uaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvaWZyYW1lcy9pZnJhbWUtc2l6ZS10by16ZXJvLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDM3ICsyNiwzNyBAQAogICAgIAogICA8L3N0eWxlPgogICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
ICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiAKICAgICBmdW5jdGlv
biBkb1Rlc3QoKQogICAgIHsKICAgICAgICAgLy8gRm9yIHNvbWUgcmVhc29uIHRoaXMgZGVsYXkg
aXMgcmVxdWlyZWQgZm9yIEFwcEtpdCB0byBub3Qgc2hvcnQtY2lyY3VpdCB0aGUgZGlzcGxheS4K
ICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmRpc3BsYXkoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmRpc3BsYXkoKTsKIAogICAgICAgICAgICAgdmFy
IGhhZExheWVycyA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgICAgICAgICAgICAgIHZhciBsYXllcnMgPSBsYXlvdXRUZXN0Q29udHJv
bGxlci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgICAgICAgICAgICAgIHZhciBsYXllcnMgPSB0ZXN0UnVubmVyLmxheWVyVHJlZUFz
VGV4dCgpOwogICAgICAgICAgICAgICAgIGhhZExheWVycyA9IGxheWVycyAhPSAiIjsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lmcmFtZScp
LmNsYXNzTmFtZSA9ICdjb2xsYXBzZWQnOwogCi0gICAgICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
IAotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsKLSAgICAg
ICAgICAgICAgICB2YXIgaGF2ZUxheWVycyA9IGxheW91dFRlc3RDb250cm9sbGVyLmxheWVyVHJl
ZUFzVGV4dCgpICE9ICIiOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOwor
ICAgICAgICAgICAgICAgIHZhciBoYXZlTGF5ZXJzID0gdGVzdFJ1bm5lci5sYXllclRyZWVBc1Rl
eHQoKSAhPSAiIjsKICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0OwogICAgICAgICAgICAgICAg
IGlmIChoYWRMYXllcnMgJiYgIWhhdmVMYXllcnMpCiAgICAgICAgICAgICAgICAgICByZXN1bHQg
PSAiUEFTUzogaGFkIGxheWVycywgYW5kIG5vdyBkbyBub3QiOwogICAgICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9ICJGQUlMOiBsYXllcnMgc2hvdWxkIGhhdmUg
Z29uZS4gaGFkTGF5ZXJzID0gIiArIGhhZExheWVycyArICIsIGhhdmVMYXllcnMgPSAiICsgaGF2
ZUxheWVyczsKICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0
JykuaW5uZXJIVE1MID0gcmVzdWx0OwotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSwgMCk7CiAgICAgfQpJbmRleDogTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvaWZyYW1lcy9pZnJhbWUtc3JjLWNoYW5nZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2lmcmFtZXMvaWZyYW1lLXNyYy1jaGFuZ2UuaHRt
bAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvaWZyYW1lcy9p
ZnJhbWUtc3JjLWNoYW5nZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw5ICsyMyw5IEBACiAg
ICAgCiAgIDwvc3R5bGU+CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0
PSJ1dGYtOCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIGRvVGVzdCgpCkBAIC0zNCwxNiAr
MzQsMTYgQEAKICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAg
ICAgICB2YXIgaGFkTGF5ZXJzQmVmb3JlID0gZmFsc2U7CiAgICAgICAgICAgICB2YXIgaGFkTGF5
ZXJzQWZ0ZXIgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kaXNwbGF5KCk7
IC8vIE5lZWQgdG8gcGFpbnQgZm9yIG92ZXJsYXAgdGVzdGluZy4KLSAgICAgICAgICAgICAgICBo
YWRMYXllcnNCZWZvcmUgPSBsYXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKSAh
PSAiIjsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAg
ICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOyAvLyBOZWVkIHRvIHBhaW50IGZvciBvdmVybGFwIHRl
c3RpbmcuCisgICAgICAgICAgICAgICAgaGFkTGF5ZXJzQmVmb3JlID0gdGVzdFJ1bm5lci5sYXll
clRyZWVBc1RleHQoKSAhPSAiIjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3BhcmVudC1pZnJhbWUnKS5zcmMgPSAiYWJvdXQ6YmxhbmsiOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGhhZExheWVyc0FmdGVyID0gbGF5b3V0VGVzdENvbnRyb2xsZXIubGF5
ZXJUcmVlQXNUZXh0KCkgIT0gIiI7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgICAgICAgICAgICAgICAgIGhhZExheWVyc0FmdGVyID0gdGVzdFJ1bm5lci5s
YXllclRyZWVBc1RleHQoKSAhPSAiIjsKIAogICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRzJyk7CiAgICAgICAgICAgICAgICAg
ICAgIGlmIChoYWRMYXllcnNCZWZvcmUgJiYgIWhhZExheWVyc0FmdGVyKQpAQCAtNTMsNyArNTMs
NyBAQAogICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChoYWRMYXllcnNBZnRlcikKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuaW5uZXJUZXh0ID0gIkZBSUw6IGxheWVycyBkaWQg
bm90IGRpc2FwcGVhciB3aGVuIGlmcmFtZSBzb3VyY2UgY2hhbmdlZC4iCiAKLSAgICAgICAgICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9LCAwKTsKICAgICAgICAgfSwgMCk7CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9pZnJhbWVzL2ludmlzaWJsZS1uZXN0ZWQtaWZyYW1lLWhpZGUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL2ludmlzaWJsZS1uZXN0ZWQtaWZy
YW1lLWhpZGUuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvaWZyYW1lcy9pbnZpc2libGUtbmVzdGVkLWlmcmFtZS1oaWRlLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDkgKzI1LDkgQEAKICAgPC9zdHlsZT4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KICAgICAKLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIGRvVGVz
dCgpCkBAIC0zNSwxMCArMzUsMTAgQEAKICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgewogICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ludmlzaWJs
ZScpOwogICAgICAgICBkaXYuc3R5bGUuY3NzVGV4dCA9ICJkaXNwbGF5Om5vbmU7IjsKLSAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmRpc3BsYXkoKTsKLSAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnbGF5ZXJzJykuaW5uZXJIVE1MID0gbGF5b3V0VGVzdENvbnRyb2xsZXIubGF5ZXJUcmVlQXNU
ZXh0KCk7Ci0gICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICB0ZXN0UnVubmVyLmRpc3Bs
YXkoKTsKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJzJykuaW5uZXJI
VE1MID0gdGVzdFJ1bm5lci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKICAgICAgICAgfQogICAgICAgfSwgMCkKICAgICB9CkluZGV4OiBMYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL2ludmlzaWJsZS1uZXN0ZWQtaWZyYW1lLXNob3cu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL2ludmlz
aWJsZS1uZXN0ZWQtaWZyYW1lLXNob3cuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvaWZyYW1lcy9pbnZpc2libGUtbmVzdGVkLWlmcmFtZS1zaG93Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDkgKzI1LDkgQEAKICAgPC9zdHlsZT4KICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KICAgICAKLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KIAogICAg
IGZ1bmN0aW9uIGRvVGVzdCgpCkBAIC0zNSwxMCArMzUsMTAgQEAKICAgICAgIHdpbmRvdy5zZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2ludmlzaWJsZScpOwogICAgICAgICBkaXYuc3R5bGUuY3NzVGV4dCA9ICIiOwotICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZGlzcGxheSgpOwotICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdsYXllcnMnKS5pbm5lckhUTUwgPSBsYXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVB
c1RleHQoKTsKLSAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgIHRlc3RSdW5uZXIuZGlz
cGxheSgpOworICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5pbm5l
ckhUTUwgPSB0ZXN0UnVubmVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9CiAgICAgICB9LCAwKQogICAgIH0KSW5kZXg6IExh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL2lmcmFtZXMvbGF5b3V0LW9uLWNvbXBvc2l0aW5nLWNoYW5n
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2lmcmFtZXMvbGF5
b3V0LW9uLWNvbXBvc2l0aW5nLWNoYW5nZS5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL2xheW91dC1vbi1jb21wb3NpdGluZy1jaGFuZ2Uu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDMsOSArNDMsOSBAQAogICAgIH0KICAgPC9zdHlsZT4K
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiAKICAgICAvLyBD
YWxsZWQgZnJvbSBzdWJmcmFtZS4KQEAgLTU3LDggKzU3LDggQEAKICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlVXAoKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBub2RlQ2xpY2tl
ZChub2RlKQpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvaWZyYW1lcy9sZWF2ZS1jb21w
b3NpdGluZy1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9pZnJhbWVzL2xlYXZlLWNvbXBvc2l0aW5nLWlmcmFtZS5odG1sCShyZXZpc2lvbiAxMTk5NDYp
CisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL2xlYXZlLWNvbXBvc2l0aW5nLWlm
cmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMywyMSArMjMsMjEgQEAKICAgICAKICAgPC9z
dHlsZT4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4K
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CiAgICAgfQogCiAgICAgLy8gQ2FsbGVkIGZyb20gc3ViZnJhbWUuCiAgICAgZnVuY3Rpb24g
dGVzdERvbmUoKQogICAgIHsKICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXJlbnQt
aWZyYW1lJykuY29udGVudERvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGg7IC8vIHdvcmsgYXJvdW5k
IGJ1ZyA0MTk5OS4KLSAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsKKyAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7CiAKLSAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2xheWVycycpLmlubmVyVGV4dCA9IGxheW91dFRlc3RDb250cm9sbGVyLmxheWVyVHJlZUFz
VGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2xheWVycycpLmlubmVyVGV4dCA9IHRlc3RSdW5uZXIubGF5ZXJUcmVlQXNUZXh0KCk7Cisg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgfQogICAgIH0KICAgPC9zY3Jp
cHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL25lc3RlZC1jb21wb3Np
dGVkLWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2lm
cmFtZXMvbmVzdGVkLWNvbXBvc2l0ZWQtaWZyYW1lLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysr
IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2lmcmFtZXMvbmVzdGVkLWNvbXBvc2l0ZWQtaWZyYW1l
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE5LDggKzE5LDggQEAKICAgICAgICAgdmFyIGlmcmFt
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpZnJhbWUiKVswXTsKICAgICAgICAg
aWZyYW1lLmNvbnRlbnRXaW5kb3cuc2Nyb2xsVG8oMCwgMjUwKTsKICAgICAgIH0KLSAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKICAgICAgIHdpbmRvdy5hZGRFdmVudExp
c3RlbmVyKCJsb2FkIiwgcnVuVGVzdCwgZmFsc2UpOwogICAgIDwvc2NyaXB0PgogICA8L2hlYWQ+
CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL25lc3RlZC1pZnJhbWUtc2Ny
b2xsaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvaWZyYW1l
cy9uZXN0ZWQtaWZyYW1lLXNjcm9sbGluZy5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL25lc3RlZC1pZnJhbWUtc2Nyb2xsaW5nLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTIyLDggKzIyLDggQEAKICAgPC9zdHlsZT4KICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KICAgICAKLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgIHsK
QEAgLTMxLDggKzMxLDggQEAKICAgICAgICAgdmFyIHN1YmZyYW1lV2luZG93ID0gZnJhbWVEb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnc3ViZnJhbWUnKS5jb250ZW50V2luZG93OwogICAgICAgICBz
dWJmcmFtZVdpbmRvdy5zY3JvbGxUbygwLCAxMDApOwogCi0gICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KICAgICAKICAgICB3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uKCkgewpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvaWZyYW1lcy9vdmVybGFwcGVkLWlmcmFtZS1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL292ZXJsYXBwZWQtaWZyYW1lLWlmcmFtZS5o
dG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVz
L292ZXJsYXBwZWQtaWZyYW1lLWlmcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw5ICsy
NCw5IEBACiAgICAgfQogICA8L3N0eWxlPgogICA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICB9CiAKICAgICBm
dW5jdGlvbiBkb1Rlc3QoKQpAQCAtMzQsMTAgKzM0LDEwIEBACiAgICAgICAgIC8vIEZvciBzb21l
IHJlYXNvbiB0aGlzIGRlbGF5IGlzIHJlcXVpcmVkIGZvciBBcHBLaXQgdG8gbm90IHNob3J0LWNp
cmN1aXQgdGhlIGRpc3BsYXkgd2hpY2ggaXMgcmVxdWlyZWQKICAgICAgICAgLy8gZm9yIG92ZXJs
YXAgdGVzdGluZyB0byBraWNrIGluLgogICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kaXNwbGF5KCk7Ci0gICAgICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVycycpLmlubmVySFRNTCA9IGxheW91
dFRlc3RDb250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgpOwotICAgICAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOworICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5pbm5lckhUTUwgPSB0
ZXN0UnVubmVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9LCAwKTsKICAgICB9CkluZGV4
OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL292ZXJsYXBwZWQtaWZyYW1lLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvaWZyYW1lcy9vdmVybGFwcGVk
LWlmcmFtZS5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9pZnJhbWVzL292ZXJsYXBwZWQtaWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDE5
ICsyMywxOSBAQAogICAgIAogICA8L3N0eWxlPgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBkb1Rlc3Qo
KQogICAgIHsKICAgICAgICAgLy8gRm9yIHNvbWUgcmVhc29uIHRoaXMgZGVsYXkgaXMgcmVxdWly
ZWQgZm9yIEFwcEtpdCB0byBub3Qgc2hvcnQtY2lyY3VpdCB0aGUgZGlzcGxheS4KICAgICAgICAg
d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
aXNwbGF5KCk7Ci0gICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMn
KS5pbm5lckhUTUwgPSBsYXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKLSAg
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICB0ZXN0UnVubmVyLmRpc3Bs
YXkoKTsKKyAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVycycpLmlu
bmVySFRNTCA9IHRlc3RSdW5uZXIubGF5ZXJUcmVlQXNUZXh0KCk7CisgICAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgIH0KICAgICAgICAgfSwgMCk7CiAgICAg
fQpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvaWZyYW1lcy9vdmVybGFwcGVkLW5lc3Rl
ZC1pZnJhbWVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvaWZy
YW1lcy9vdmVybGFwcGVkLW5lc3RlZC1pZnJhbWVzLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysr
IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2lmcmFtZXMvb3ZlcmxhcHBlZC1uZXN0ZWQtaWZyYW1l
cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw5ICsyMiw5IEBACiAgICAgfQogICA8L3N0eWxl
PgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
ICAgICB9CiAKICAgICBmdW5jdGlvbiBkb1Rlc3QoKQpAQCAtMzMsMTIgKzMzLDEyIEBACiAgICAg
ICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgIHdpbmRvdy5zY3Jv
bGxUbygwLCAxMDApOwogICAgICAgICAgIC8vIEZvcmNlIGEgcGFpbnQsIGFuZCBnaXZlIGxheWVy
cyBhIGNoYW5jZSB0byB1cGRhdGUuCi0gICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsKKyAg
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmRp
c3BsYXkoKTsKICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJzJykuaW5uZXJIVE1MID0gbGF5b3V0VGVz
dENvbnRyb2xsZXIubGF5ZXJUcmVlQXNUZXh0KCk7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVycycp
LmlubmVySFRNTCA9IHRlc3RSdW5uZXIubGF5ZXJUcmVlQXNUZXh0KCk7CisgICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgfSwg
MCk7CiAgICAgICAgIH0sIDApOwpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvaWZyYW1l
cy9wYWdlLWNhY2hlLWxheWVyLXRyZWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9pZnJhbWVzL3BhZ2UtY2FjaGUtbGF5ZXItdHJlZS5odG1sCShyZXZpc2lvbiAx
MTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL3BhZ2UtY2FjaGUtbGF5
ZXItdHJlZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxOCArNDYsMTggQEAKICAgICA8cHJl
IGlkPSJvdXRwdXQiPjwvcHJlPgogCiAgICAgPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7Ci0gICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7Ci0gICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVBy
ZWZlcmVuY2UoIldlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5IiwgMSk7CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgd2luZG93LnRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAg
ICB3aW5kb3cudGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFVzZXNQYWdlQ2Fj
aGVQcmVmZXJlbmNlS2V5IiwgMSk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgp
IHsKICAgICAgICAgdmFyIG91dHB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQi
KTsKLSAgICAgICAgb3V0cHV0LmlubmVyVGV4dCA9IGxheW91dFRlc3RDb250cm9sbGVyLmxheWVy
VHJlZUFzVGV4dCgpOworICAgICAgICBvdXRwdXQuaW5uZXJUZXh0ID0gdGVzdFJ1bm5lci5sYXll
clRyZWVBc1RleHQoKTsKIAotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsg
ICAgICAgIAorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB3aW5k
b3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7ICAgICAgICAKICAgICB9CiAKICAgICB3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcigicGFnZXNob3ciLCBmdW5jdGlvbihldmVudCkgewpJbmRleDogTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvaWZyYW1lcy9yZW1vdmUtaWZyYW1lLWNyYXNoLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvaWZyYW1lcy9yZW1vdmUtaWZyYW1l
LWNyYXNoLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5n
L2lmcmFtZXMvcmVtb3ZlLWlmcmFtZS1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4
ICsyMyw4IEBACiAgICAgfQogICA8L3N0eWxlPgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBm
dW5jdGlvbiBkb1Rlc3QoKQogICAgIHsKSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2lm
cmFtZXMvcmVwYWludC1hZnRlci1sb3Npbmctc2Nyb2xsYmFycy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2lmcmFtZXMvcmVwYWludC1hZnRlci1sb3Npbmctc2Ny
b2xsYmFycy5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9pZnJhbWVzL3JlcGFpbnQtYWZ0ZXItbG9zaW5nLXNjcm9sbGJhcnMuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMzMsOSArMzMsOSBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJob3Jpem9udGFsIikuY29udGVudERvY3VtZW50LmJvZHkuY2xhc3NMaXN0
LmFkZCgid2lkZSIpOyAvLyBtaWRkbGUgaWZyYW1lIHN0YXJ0cyB3aXRoIGEgaG9yaXpvbnRhbCBz
Y3JvbGxiYXIKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm90aCIpLmNvbnRlbnREb2N1
bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoIndpZGUiKTsgLy8gYm90dG9tIGlmcmFtZSBzdGFydHMg
d2l0aCBib3RoCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvdGgiKS5jb250ZW50RG9j
dW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCJ0YWxsIik7IC8vIHZlcnRpY2FsIGFuZCBob3Jpem9u
dGFsIHNjcm9sbGJhcnMKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7Ci0gICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsgLy8gUGFpbnQgb25jZSB3aXRoIGFsbCBvdmVy
ZmxvdyBjb250cm9scyB2aXNpYmxlLgorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CisgICAgICAgIHRlc3RSdW5uZXIuZGlz
cGxheSgpOyAvLyBQYWludCBvbmNlIHdpdGggYWxsIG92ZXJmbG93IGNvbnRyb2xzIHZpc2libGUu
CiAgICAgICAgIGZpbmlzaFRlc3QoKTsKICAgICB9IGVsc2UKICAgICAgICAgd2luZG93LnNldFRp
bWVvdXQoZmluaXNoVGVzdCwgNTAwMCk7CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9p
ZnJhbWVzL3Jlc2l6ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9pZnJhbWVzL3Jlc2l6ZXIuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvaWZyYW1lcy9yZXNpemVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsOSAr
Nyw5IEBACiA8L3N0eWxlPgogPHNjcmlwdD4KIGZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMn
KS5pbm5lckhUTUwgPSBsYXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5pbm5lckhUTUwg
PSB0ZXN0UnVubmVyLmxheWVyVHJlZUFzVGV4dCgpOwogICAgIH0KIH0KIDwvc2NyaXB0PgpJbmRl
eDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvaWZyYW1lcy9zY3JvbGxpbmctaWZyYW1lLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvaWZyYW1lcy9zY3JvbGxpbmct
aWZyYW1lLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5n
L2lmcmFtZXMvc2Nyb2xsaW5nLWlmcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMywyMiAr
MjMsMjIgQEAKICAgICAKICAgPC9zdHlsZT4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gZG9UZXN0KCkK
ICAgICB7CiAgICAgICAgIC8vIEZvciBzb21lIHJlYXNvbiB0aGlzIGRlbGF5IGlzIHJlcXVpcmVk
IGZvciBBcHBLaXQgdG8gbm90IHNob3J0LWNpcmN1aXQgdGhlIGRpc3BsYXkuCiAgICAgICAgIHdp
bmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
aXNwbGF5KCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7CiAKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdwYXJlbnQtaWZyYW1lJykuY29udGVudFdpbmRvdy5zY3JvbGxUbyg4MCwgODAp
OwotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5pbm5lckhUTUwgPSBs
YXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKLSAgICAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
bGF5ZXJzJykuaW5uZXJIVE1MID0gdGVzdFJ1bm5lci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSwgMCk7CiAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvaWZyYW1lcy9y
ZXNvdXJjZXMvZml4ZWQtcG9zaXRpb24tc3ViZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL3Jlc291cmNlcy9maXhlZC1wb3NpdGlvbi1zdWJm
cmFtZS5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9p
ZnJhbWVzL3Jlc291cmNlcy9maXhlZC1wb3NpdGlvbi1zdWJmcmFtZS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0yMywxMSArMjMsMTEgQEAKIDwvaGVhZD4KIDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24g
ZG9UZXN0KCkgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KHRydWUpOwogICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMjAwMCk7Ci0gICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kaXNwbGF5KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOwogICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMTgw
MCk7CiAgICAgfQogICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZG9UZXN0LCBm
YWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL3Jlc291cmNlcy9m
aXhlZC1wb3NpdGlvbi10cmFuc2Zvcm1lZC1zdWJmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL2lmcmFtZXMvcmVzb3VyY2VzL2ZpeGVkLXBvc2l0aW9uLXRy
YW5zZm9ybWVkLXN1YmZyYW1lLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL2lmcmFtZXMvcmVzb3VyY2VzL2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9ybWVk
LXN1YmZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE0ICszMCwxNCBAQAogICAgIH0K
ICAgPC9zdHlsZT4KICAgPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRy
dWUpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIGRvVGVzdCgpCiAgICAgewotICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZGlzcGxheSgpOworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVu
bmVyLmRpc3BsYXkoKTsKIAogICAgICAgLy8gQW55IHNjcm9sbCBzaG91bGQga2VlcCB0aGUgZml4
ZWQtcG9zaXRpb24gZWxlbWVudCB3aGVyZSBpdCBpcy4KICAgICAgIC8vIElmIGl0IHN0dXR0ZXJz
IG9yIGRpc2FwcGVhcnMgaW5jb3JyZWN0bHksIHRoZW4gdGhlIHJlZCBiYWNrZ3JvdW5kIHdpbGwg
YmUgcmV2ZWFsZWQuCkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL3Jlc291
cmNlcy9zY3JvbGxncmFuZGNoaWxkLWlubmVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvaWZyYW1lcy9yZXNvdXJjZXMvc2Nyb2xsZ3JhbmRjaGlsZC1pbm5lci5o
dG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVz
L3Jlc291cmNlcy9zY3JvbGxncmFuZGNoaWxkLWlubmVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDE5ICsyNCwxOSBAQAogICA8c2NyaXB0PgogICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQog
ICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWQo
dHJ1ZSk7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKLSAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIGRvVGVzdCgpCiAgICAgewotICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZGlzcGxheSgpOworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0
ZXN0UnVubmVyLmRpc3BsYXkoKTsKICAgICAgIC8vIFNjcm9sbCByZWQgYm94IG9mZiBzY3JlZW4g
YW5kIHNjcm9sbCBncmVlbiBib3ggaW50byBzYW1lIHBsYWNlLgogICAgICAgd2luZG93LnNjcm9s
bFRvKDAsIDQwMCk7Ci0gICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIAog
ICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZG9UZXN0LCBmYWxzZSk7CkluZGV4
OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pbWFnZXMvY2xpcC1vbi1kaXJlY3RseS1jb21wb3Np
dGVkLWltYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvaW1h
Z2VzL2NsaXAtb24tZGlyZWN0bHktY29tcG9zaXRlZC1pbWFnZS5odG1sCShyZXZpc2lvbiAxMTk5
NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pbWFnZXMvY2xpcC1vbi1kaXJlY3RseS1j
b21wb3NpdGVkLWltYWdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIyLDE1ICsyMiwxNSBAQAog
ICAgIH0KICAgPC9zdHlsZT4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJz
ZXQ9InV0Zi04Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwogICAgIH0KICAgICAgIAogICAgIGZ1bmN0aW9uIGRvVGVzdCgpIHsKLSAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2xheWVycycpLmlubmVyVGV4dCA9IGxheW91dFRlc3RDb250cm9sbGVyLmxheWVy
VHJlZUFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2xheWVycycpLmlubmVyVGV4dCA9IHRlc3RSdW5uZXIubGF5ZXJUcmVlQXNUZXh0
KCk7CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgfQogICAgIH0KICAg
ICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGRvVGVzdCwgZmFsc2UpOwpJbmRleDog
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvaW1hZ2VzL2NvbnRlbnQtaW1hZ2UtY2hhbmdlLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvaW1hZ2VzL2NvbnRlbnQtaW1h
Z2UtY2hhbmdlLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0
aW5nL2ltYWdlcy9jb250ZW50LWltYWdlLWNoYW5nZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
MSw5ICsxMSw5IEBACiAgICAgfQogPC9zdHlsZT4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAgICAgfQogICAgIGZ1bmN0aW9uIGRv
VGVzdCgpCiAgICAgewpAQCAtMjIsOSArMjIsOSBAQAogICAgICAgICB3aW5kb3cuc2V0VGltZW91
dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgIC8vIENoYW5nZSB0aGUgY29udGVudHMgdG8gZ3Jl
ZW4uCiAgICAgICAgICAgICBpbWFnZS5zcmMgPSAgImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJP
UncwS0dnb0FBQUFOU1VoRVVnQUFBQUVBQUFBQkNBSUFBQUNRZDFQZUFBQUFDWEJJV1hNQUFBN0VB
QUFPeEFHVkt3NGJBQUFBREVsRVFWUjRuR05nK004QUFBSUNBUUI3Q1lGNEFBQUFBRWxGVGtTdVFt
Q0MiCi0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgICAgICAgICB3aW5kb3cu
c2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKICAgICAgICAgICAgICAgICB9LCAwKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSwgMCk7CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pbWFnZXMvY29udGVudC1p
bWFnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2ltYWdlcy9j
b250ZW50LWltYWdlLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBv
c2l0aW5nL2ltYWdlcy9jb250ZW50LWltYWdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsOCAr
OCw4IEBACiAgICAgICAgIH0KICAgICA8L3N0eWxlPgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogICAgIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CkluZGV4OiBM
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1hbmQt
dHJhbnNmb3JtLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5
ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tYW5kLXRyYW5zZm9ybS5odG1sCShyZXZpc2lvbiAx
MTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1w
b3NpdGlvbi1hbmQtdHJhbnNmb3JtLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDkgKzI4LDkg
QEAKIDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24gZG9UZXN0KCkgewogICAgICAgICB3aW5kb3cuc2Ny
b2xsVG8oMCwgMTAwMCk7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnRyZWUnKS5pbm5l
clRleHQgPSBsYXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKLSAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2xheWVydHJlZScpLmlubmVyVGV4dCA9IHRlc3RSdW5uZXIubGF5ZXJUcmVlQXNUZXh0KCk7Cisg
ICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAgICAgICAgIH0KICAgICB9
CiAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBkb1Rlc3QsIGZhbHNlKTsKSW5k
ZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9u
LW91dC1vZi12aWV3Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
bGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXcuaHRtbAkocmV2aXNpb24g
MTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQt
cG9zaXRpb24tb3V0LW9mLXZpZXcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTQsMTEgKzE0LDEx
IEBACiAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCiAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNl
dHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKIAotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigibG9hZCIsIGZ1bmN0aW9uKCkgewotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
bGF5ZXJ0cmVlIikuaW5uZXJUZXh0ID0gbGF5b3V0VGVzdENvbnRyb2xsZXIubGF5ZXJUcmVlQXNU
ZXh0KCk7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsYXllcnRyZWUiKS5pbm5l
clRleHQgPSB0ZXN0UnVubmVyLmxheWVyVHJlZUFzVGV4dCgpOwogICAgICAgfSwgZmFsc2UpOwog
ICAgIH0KICAgPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1j
cmVhdGlvbi9maXhlZC1wb3NpdGlvbi1zY3JvbGwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1zY3JvbGwuaHRt
bAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3Jl
YXRpb24vZml4ZWQtcG9zaXRpb24tc2Nyb2xsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE2
ICszMywxNiBAQAogICAgIDwvc3R5bGU+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvcmVw
YWludC9yZXNvdXJjZXMvcmVwYWludC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCh0cnVlKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCh0cnVlKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICB9
CiAKICAgICAgIGZ1bmN0aW9uIHJlcGFpbnRUZXN0KCkKICAgICAgIHsKICAgICAgICAgd2luZG93
LnNjcm9sbEJ5KDAsLTk2KTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKICAgICAgIH0KIAogICAgICAgZnVuY3Rpb24gZG9UZXN0KCkKSW5kZXg6IExheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLXVuZGVyLXRyYW5zZm9y
bS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0
aW9uL2ZpeGVkLXBvc2l0aW9uLXVuZGVyLXRyYW5zZm9ybS5odG1sCShyZXZpc2lvbiAxMTk5NDYp
CisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlv
bi11bmRlci10cmFuc2Zvcm0uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsOSBAQAog
PHNjcmlwdD4KICAgICBmdW5jdGlvbiBkb1Rlc3QoKSB7CiAgICAgICAgIHdpbmRvdy5zY3JvbGxU
bygwLCAxMDAwKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVydHJlZScpLmlubmVyVGV4
dCA9IGxheW91dFRlc3RDb250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgpOwotICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5
ZXJ0cmVlJykuaW5uZXJUZXh0ID0gdGVzdFJ1bm5lci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKICAgICAgICAgfQogICAgIH0KICAg
ICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGRvVGVzdCwgZmFsc2UpOwpJbmRleDog
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vbm8tY29tcG9zaXRpbmctZm9y
LXByZXNlcnZlLTNkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
bGF5ZXItY3JlYXRpb24vbm8tY29tcG9zaXRpbmctZm9yLXByZXNlcnZlLTNkLmh0bWwJKHJldmlz
aW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL25v
LWNvbXBvc2l0aW5nLWZvci1wcmVzZXJ2ZS0zZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMywx
NCArMjMsMTQgQEAKICAgPC9zdHlsZT4KIAogICA8c2NyaXB0PgotICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
ICAgIAogICBmdW5jdGlvbiBkdW1wTGF5ZXJzKCkKICAgewogICAgIHZhciBsYXllcnNSZXN1bHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJzJyk7Ci0gICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgIGxheWVyc1Jlc3VsdC5pbm5lclRleHQgPSBsYXlvdXRU
ZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICBsYXllcnNSZXN1bHQuaW5uZXJUZXh0ID0gdGVzdFJ1bm5lci5sYXllclRyZWVB
c1RleHQoKTsKICAgICAKICAgfQogICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGR1
bXBMYXllcnMsIGZhbHNlKQpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3Jl
YXRpb24vb3ZlcmZsb3ctc2Nyb2xsLW92ZXJsYXAuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9vdmVyZmxvdy1zY3JvbGwtb3ZlcmxhcC5o
dG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1j
cmVhdGlvbi9vdmVyZmxvdy1zY3JvbGwtb3ZlcmxhcC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw5ICszNiw5IEBACiAgIDwvc3R5bGU+CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBjaGFyc2V0PSJ1dGYtOCI+CiAgICAgCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBkb1Rlc3QoKQpAQCAt
NDgsOSArNDgsOSBAQAogICAgICAgICBzY3JvbGxEaXYuc2Nyb2xsVG9wID0gMjAwOwogCiAgICAg
ICAgIAotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdHMnKS5pbm5lclRleHQgPSB3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIubGF5ZXJUcmVlQXNUZXh0KCk7Ci0gICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0cycpLmlubmVy
VGV4dCA9IHdpbmRvdy50ZXN0UnVubmVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9CiAgICAgICB9LCAxNTApOwogICAgIH0K
SW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL292ZXJsYXAtYW5p
bWF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXIt
Y3JlYXRpb24vb3ZlcmxhcC1hbmltYXRpb24uaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vb3ZlcmxhcC1hbmltYXRpb24uaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMzAsOSArMzAsOSBAQAogICAgIH0KICAgPC9zdHlsZT4KICAg
PHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwogICAgIH0KICAgICAgIAogICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQpAQCAtNDQsOSArNDQs
OSBAQAogICAgIAogICAgIGZ1bmN0aW9uIGFuaW1hdGlvblN0YXJ0ZWQoKQogICAgIHsKLSAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2xheWVycycpLmlubmVyVGV4dCA9IGxheW91dFRlc3RDb250cm9sbGVyLmxh
eWVyVHJlZUFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2xheWVycycpLmlubmVyVGV4dCA9IHRlc3RSdW5uZXIubGF5ZXJUcmVlQXNU
ZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgfQogICAgIH0K
ICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHJ1blRlc3QsIGZhbHNlKTsKSW5k
ZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL292ZXJsYXAtY2hpbGQt
bGF5ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1j
cmVhdGlvbi9vdmVybGFwLWNoaWxkLWxheWVyLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL292ZXJsYXAtY2hpbGQtbGF5ZXIu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzksMTUgKzM5LDE1IEBACiA8L3N0eWxlPgogCiA8c2Ny
aXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CisgICAgICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwogICAgIH0KIAogICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCds
b2FkJywgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsYXllcnRyZWUiKS5p
bm5lclRleHQgPSBsYXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKLSAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
bGF5ZXJ0cmVlIikuaW5uZXJUZXh0ID0gdGVzdFJ1bm5lci5sYXllclRyZWVBc1RleHQoKTsKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9CiAgICAgfSwgZmFs
c2UpOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVh
dGlvbi9vdmVybGFwLWNsaXBwaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vb3ZlcmxhcC1jbGlwcGluZy5odG1sCShyZXZpc2lvbiAx
MTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9vdmVybGFw
LWNsaXBwaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQwLDEwICs0MCwxMCBAQAogICAgIH0K
IDwvc3R5bGU+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dChmYWxzZSk7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dChm
YWxzZSk7CiAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGF5ZXJ0cmVlIikuaW5u
ZXJUZXh0ID0gbGF5b3V0VGVzdENvbnRyb2xsZXIubGF5ZXJUcmVlQXNUZXh0KCk7CisgICAgICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGF5ZXJ0cmVlIikuaW5uZXJUZXh0ID0gdGVz
dFJ1bm5lci5sYXllclRyZWVBc1RleHQoKTsKICAgICAgICAgfSwgZmFsc2UpOwogICAgIH0KIDwv
c2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vb3Zl
cmxhcC10cmFuc2Zvcm1lZC1hbmQtY2xpcHBlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL292ZXJsYXAtdHJhbnNmb3JtZWQtYW5kLWNs
aXBwZWQuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
bGF5ZXItY3JlYXRpb24vb3ZlcmxhcC10cmFuc2Zvcm1lZC1hbmQtY2xpcHBlZC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OSwxMCArNDksMTAgQEAKIDwvc3R5bGU+CiAKIDxzY3JpcHQ+Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAgICAgICAgIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgibGF5ZXJ0cmVlIikuaW5uZXJUZXh0ID0gbGF5b3V0VGVzdENvbnRyb2xs
ZXIubGF5ZXJUcmVlQXNUZXh0KCk7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgibGF5ZXJ0cmVlIikuaW5uZXJUZXh0ID0gdGVzdFJ1bm5lci5sYXllclRyZWVBc1RleHQoKTsK
ICAgICAgICAgfSwgZmFsc2UpOwogICAgIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vb3ZlcmxhcC10cmFuc2Zvcm1lZC1sYXllci5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL292
ZXJsYXAtdHJhbnNmb3JtZWQtbGF5ZXIuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vb3ZlcmxhcC10cmFuc2Zvcm1lZC1sYXll
ci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMCArNDIsMTAgQEAKIDwvc3R5bGU+CiAKIDxz
Y3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAgICAgICAg
IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGF5ZXJ0cmVlIikuaW5uZXJUZXh0ID0gbGF5b3V0
VGVzdENvbnRyb2xsZXIubGF5ZXJUcmVlQXNUZXh0KCk7CisgICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgibGF5ZXJ0cmVlIikuaW5uZXJUZXh0ID0gdGVzdFJ1bm5lci5sYXllclRy
ZWVBc1RleHQoKTsKICAgICAgICAgfSwgZmFsc2UpOwogICAgIH0KIDwvc2NyaXB0PgpJbmRleDog
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vb3ZlcmxhcC10cmFuc2Zvcm1z
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRp
b24vb3ZlcmxhcC10cmFuc2Zvcm1zLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRl
c3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL292ZXJsYXAtdHJhbnNmb3Jtcy5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSwxMyArMjUsMTMgQEAKICAgICB9CiAgIDwvc3R5bGU+CiAgIDxz
Y3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgIAogICAgIGZ1bmN0aW9uIHRl
c3REb25lKCkKICAgICB7Ci0gICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJzJykuaW5uZXJUZXh0ID0gbGF5
b3V0VGVzdENvbnRyb2xsZXIubGF5ZXJUcmVlQXNUZXh0KCk7CisgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5pbm5l
clRleHQgPSB0ZXN0UnVubmVyLmxheWVyVHJlZUFzVGV4dCgpOwogICAgIH0KICAgICB3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHRlc3REb25lLCBmYWxzZSk7CiAgIDwvc2NyaXB0PgpJ
bmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vcm90YXRlM2Qtb3Zl
cmxhcC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNy
ZWF0aW9uL3JvdGF0ZTNkLW92ZXJsYXAuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vcm90YXRlM2Qtb3ZlcmxhcC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xNiwxNCArMTYsMTQgQEAKICAgICB9CiAgIDwvc3R5bGU+CiAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogCiAgICBmdW5jdGlvbiBkb1Rlc3QoKQogICAgewotICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdyZXN1bHRzJykuaW5uZXJUZXh0ID0gd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmxh
eWVyVHJlZUFzVGV4dCgpOwotICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdHMnKS5pbm5lclRleHQgPSB3aW5kb3cudGVzdFJ1bm5lci5s
YXllclRyZWVBc1RleHQoKTsKKyAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAg
ICAgIH0KICAgIH0KICAgIApJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3Jl
YXRpb24vc2Nyb2xsLXBhcnRpYWwtdXBkYXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vc2Nyb2xsLXBhcnRpYWwtdXBkYXRlLmh0bWwJ
KHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0
aW9uL3Njcm9sbC1wYXJ0aWFsLXVwZGF0ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxOCAr
MzYsMTggQEAKICAgICAgIH0KICAgICA8L3N0eWxlPgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
ICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgIH0KIAogICAgICAgZnVu
Y3Rpb24gZG9UZXN0KCkKICAgICAgIHsKICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7CiAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJykuc2Ny
b2xsVG9wID0gNTA7Ci0gICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdHMnKS5pbm5lclRl
eHQgPSBsYXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKLSAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1
bHRzJykuaW5uZXJUZXh0ID0gdGVzdFJ1bm5lci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgIH0KICAgICAgICAgfSwgMjAp
OwogICAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24v
c3Bhbk92ZXJsYXBzQ2FudmFzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvbGF5ZXItY3JlYXRpb24vc3Bhbk92ZXJsYXBzQ2FudmFzLmh0bWwJKHJldmlzaW9uIDEx
OTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL3NwYW5PdmVy
bGFwc0NhbnZhcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMSwxMCArMTEsMTAgQEAKIAkgICAg
ICAgIGN0eC5maWxsU3R5bGUgPSAicmVkIjsKIAkgICAgICAgIGN0eC5maWxsUmVjdCgwLDAsY3R4
LmNhbnZhcy53aWR0aCxjdHguY2FudmFzLmhlaWdodCk7CiAJICAgICAgICAKLSAgICAgICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICB3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVy
LmR1bXBBc1RleHQodHJ1ZSk7CiAgICAgICAgICAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgibGF5ZXJvdXRwdXQiKTsKLSAgICAgICAgICAgICAgICBjb25zb2xl
LmlubmVySFRNTCA9IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQo
KTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmlubmVySFRNTCA9IHdpbmRvdy50ZXN0UnVubmVy
LmxheWVyVHJlZUFzVGV4dCgpOwogICAgICAgICAgICAgfQogCSAgICB9CiAJPC9zY3JpcHQ+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9zdGFja2luZy1jb250
ZXh0LW92ZXJsYXAtbmVzdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvbGF5ZXItY3JlYXRpb24vc3RhY2tpbmctY29udGV4dC1vdmVybGFwLW5lc3RlZC5odG1s
CShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVh
dGlvbi9zdGFja2luZy1jb250ZXh0LW92ZXJsYXAtbmVzdGVkLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDE2ICszNSwxNiBAQAogICAgIH0KICAgPC9zdHlsZT4KICAgPHNjcmlwdD4KLSAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CiAgICAgICB9CiAKICAgICAgIGZ1bmN0aW9uIGRvVGVzdCgpCiAgICAgICB7Ci0g
ICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJ0cmVlJykuaW5uZXJUZXh0ID0gbGF5b3V0
VGVzdENvbnRyb2xsZXIubGF5ZXJUcmVlQXNUZXh0KCk7Ci0gICAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVydHJlZScp
LmlubmVyVGV4dCA9IHRlc3RSdW5uZXIubGF5ZXJUcmVlQXNUZXh0KCk7CisgICAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgIH0KICAgICAgIH0KIApJbmRleDog
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vc3RhY2tpbmctY29udGV4dC1v
dmVybGFwLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXIt
Y3JlYXRpb24vc3RhY2tpbmctY29udGV4dC1vdmVybGFwLmh0bWwJKHJldmlzaW9uIDExOTk0NikK
KysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL3N0YWNraW5nLWNvbnRl
eHQtb3ZlcmxhcC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNiArMzAsMTYgQEAKICAgICA8
L3N0eWxlPgogPC9oZWFkPgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gZG9U
ZXN0KCkKICAgICB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
LSAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnRyZWUnKS5pbm5lclRl
eHQgPSBsYXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKLSAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJ0
cmVlJykuaW5uZXJUZXh0ID0gdGVzdFJ1bm5lci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBM
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi90cmFuc2xhdGV6LW92ZXJsYXAu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlv
bi90cmFuc2xhdGV6LW92ZXJsYXAuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vdHJhbnNsYXRlei1vdmVybGFwLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTE1LDE0ICsxNSwxNCBAQAogICAgIH0KICAgPC9zdHlsZT4KICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAKICAgIGZ1bmN0aW9uIGRvVGVzdCgpCiAgICB7Ci0gICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Jlc3VsdHMnKS5pbm5lclRleHQgPSB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubGF5
ZXJUcmVlQXNUZXh0KCk7Ci0gICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncmVzdWx0cycpLmlubmVyVGV4dCA9IHdpbmRvdy50ZXN0UnVubmVyLmxh
eWVyVHJlZUFzVGV4dCgpOworICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAg
ICAgfQogICAgfQogICAgCkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9tYXNrcy9sYXll
ci1tYXNrLXBsYWNlbWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0
aW5nL21hc2tzL2xheWVyLW1hc2stcGxhY2VtZW50Lmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysr
IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL21hc2tzL2xheWVyLW1hc2stcGxhY2VtZW50Lmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDggQEAKICAgICB9CiAgIDwvc3R5bGU+CiAgIDxz
Y3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogCiAgICAgZnVuY3Rpb24g
ZHJhd01hc2soKQogICAgIHsKSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93
L2NsaXAtY29udGVudC11bmRlci1vdmVyZmxvdy1jb250cm9scy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L2NsaXAtY29udGVudC11bmRlci1vdmVy
Zmxvdy1jb250cm9scy5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9vdmVyZmxvdy9jbGlwLWNvbnRlbnQtdW5kZXItb3ZlcmZsb3ctY29udHJvbHMuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtNTcsOCArNTcsOCBAQAogfQogPC9zdHlsZT4KIDxzY3JpcHQ+
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQodHJ1ZSk7IC8vIE9ubHkgdXNlZnVsIGFzIGEgcGl4ZWwgdGVzdAoraWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsgLy8g
T25seSB1c2VmdWwgYXMgYSBwaXhlbCB0ZXN0CiA8L3NjcmlwdD4KIDwhLS0gTm8gcmVkIHNob3Vs
ZCBiZSB2aXNpYmxlLCBvbmx5IGEgc29saWQgZ3JlZW4gc3F1YXJlLiAtLT4KIDxkaXYgY2xhc3M9
ImNvbnRhaW5lciBjb21wb3NpdGVkIj4KSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL292
ZXJmbG93L2NsaXAtZGVzY2VuZGVudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9vdmVyZmxvdy9jbGlwLWRlc2NlbmRlbnRzLmh0bWwJKHJldmlzaW9uIDExOTk0
NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L2NsaXAtZGVzY2VuZGVudHMu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTUgKzMyLDE1IEBACiAgICAgfQogICA8L3N0eWxl
PgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQog
ICAgICAgCiAgICAgZnVuY3Rpb24gZG9UZXN0KCkgewotICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJz
JykuaW5uZXJUZXh0ID0gbGF5b3V0VGVzdENvbnRyb2xsZXIubGF5ZXJUcmVlQXNUZXh0KCk7Ci0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJz
JykuaW5uZXJUZXh0ID0gdGVzdFJ1bm5lci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICB9CiAgICAgfQogICAgIHdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCdsb2FkJywgZG9UZXN0LCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9vdmVyZmxvdy9jb250ZW50LWdhaW5zLXNjcm9sbGJhcnMuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9jb250ZW50LWdhaW5zLXNjcm9s
bGJhcnMuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
b3ZlcmZsb3cvY29udGVudC1nYWlucy1zY3JvbGxiYXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDE1ICs0OCwxNSBAQCBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewogICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJib3RoIikuY2xhc3NMaXN0LmFkZCgid2lkZSIpOyAvLyB0aGlyZCBkaXYg
Z2V0cyBib3RoCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvdGgiKS5jbGFzc0xpc3Qu
YWRkKCJ0YWxsIik7IC8vIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIHNjcm9sbGJhcnMKICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29ybmVyIikuY2xhc3NMaXN0LmFkZCgicmVzaXplV2lk
Z2V0Iik7IC8vIGJvdHRvbSBkaXYgZ2V0cyBhIHJlc2l6ZSBjb3JuZXIgYnV0IG5vIHNjcm9sbGJh
cnMKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsgLy8gRW5zdXJlIGNvbXBvc2l0b3IgdHJlZSBpcyB1
cCB0byBkYXRlLgotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGF5ZXJUcmVlIiku
aW5uZXJUZXh0ID0gbGF5b3V0VGVzdENvbnRyb2xsZXIubGF5ZXJUcmVlQXNUZXh0KCk7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOyAv
LyBFbnN1cmUgY29tcG9zaXRvciB0cmVlIGlzIHVwIHRvIGRhdGUuCisgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJsYXllclRyZWUiKS5pbm5lclRleHQgPSB0ZXN0UnVubmVyLmxheWVy
VHJlZUFzVGV4dCgpOwogICAgIH0KIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kaXNwbGF5KCk7IC8vIEZvcmNlIGNvbXBvc2l0b3Igc3RhdGUgdG8gYmUg
dXBkYXRlZCBiZWZvcmUgdGhlIGNvbnRhaW5lciBuZWVkcyBhbnkgb3ZlcmZsb3cgY29udHJvbHMK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
ICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOyAvLyBGb3JjZSBjb21wb3NpdG9yIHN0YXRlIHRvIGJl
IHVwZGF0ZWQgYmVmb3JlIHRoZSBjb250YWluZXIgbmVlZHMgYW55IG92ZXJmbG93IGNvbnRyb2xz
CiAgICAgZmluaXNoVGVzdCgpOwogfSBlbHNlCiAgICAgd2luZG93LnNldFRpbWVvdXQoZmluaXNo
VGVzdCwgMCk7CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9jb250ZW50
LWxvc2VzLXNjcm9sbGJhcnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9vdmVyZmxvdy9jb250ZW50LWxvc2VzLXNjcm9sbGJhcnMuaHRtbAkocmV2aXNpb24gMTE5
OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvY29udGVudC1sb3Nlcy1z
Y3JvbGxiYXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDE1ICs0OCwxNSBAQCBmdW5jdGlv
biBmaW5pc2hUZXN0KCkgewogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib3RoIikuY2xh
c3NMaXN0LnJlbW92ZSgid2lkZSIpOyAvLyB0aGlyZCBkaXYgbG9zZXMgYm90aAogICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJib3RoIikuY2xhc3NMaXN0LnJlbW92ZSgidGFsbCIpOyAvLyB2
ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbCBzY3JvbGxiYXJzCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNvcm5lciIpLmNsYXNzTGlzdC5yZW1vdmUoInJlc2l6ZVdpZGdldCIpOyAvLyBib3R0
b20gZGl2IGxvc2VzIGEgcmVzaXplIGNvcm5lciBidXQgbm8gc2Nyb2xsYmFycwotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZGlzcGxheSgpOyAvLyBFbnN1cmUgY29tcG9zaXRvciB0cmVlIGlzIHVwIHRvIGRhdGUuCi0g
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsYXllclRyZWUiKS5pbm5lclRleHQgPSBs
YXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7IC8vIEVuc3VyZSBjb21w
b3NpdG9yIHRyZWUgaXMgdXAgdG8gZGF0ZS4KKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImxheWVyVHJlZSIpLmlubmVyVGV4dCA9IHRlc3RSdW5uZXIubGF5ZXJUcmVlQXNUZXh0KCk7
CiAgICAgfQogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmRpc3BsYXkoKTsgLy8gRm9yY2UgY29tcG9zaXRvciBzdGF0ZSB0byBiZSB1cGRhdGVkIGJlZm9y
ZSB0aGUgY29udGFpbmVyIG5lZWRzIGFueSBvdmVyZmxvdyBjb250cm9scworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5l
ci5kaXNwbGF5KCk7IC8vIEZvcmNlIGNvbXBvc2l0b3Igc3RhdGUgdG8gYmUgdXBkYXRlZCBiZWZv
cmUgdGhlIGNvbnRhaW5lciBuZWVkcyBhbnkgb3ZlcmZsb3cgY29udHJvbHMKICAgICBmaW5pc2hU
ZXN0KCk7CiB9IGVsc2UKICAgICB3aW5kb3cuc2V0VGltZW91dChmaW5pc2hUZXN0LCAwKTsKSW5k
ZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L2dldC10cmFuc2Zvcm0tZnJvbS1u
b24tYm94LWNvbnRhaW5lci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0
aW5nL292ZXJmbG93L2dldC10cmFuc2Zvcm0tZnJvbS1ub24tYm94LWNvbnRhaW5lci5odG1sCShy
ZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9nZXQt
dHJhbnNmb3JtLWZyb20tbm9uLWJveC1jb250YWluZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MTcsOCArMTcsOCBAQAogICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICA8L2Rpdj4NCiAgICAg
ICAgIDxzY3JpcHQ+DQotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikNCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOw0K
KyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikNCisgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7DQogICAgICAgICA8L3NjcmlwdD4NCiAgICAgPC9ib2R5Pg0K
IDwvaHRtbD4NCkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9vdmVyZmxv
dy1jb21wb3NpdGluZy1kZXNjZW5kYW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvb3ZlcmZsb3cvb3ZlcmZsb3ctY29tcG9zaXRpbmctZGVzY2VuZGFudC5odG1s
CShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9v
dmVyZmxvdy1jb21wb3NpdGluZy1kZXNjZW5kYW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDggKzMzLDggQEAKICAgICB9CiAgIDwvc3R5bGU+CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
ICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KQEAgLTUwLDggKzUwLDggQEAKICAgICAgIHZh
ciB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpWzBdOwogICAg
ICAgdmlkZW8uc3JjID0gJy4uL3Jlc291cmNlcy92aWRlby4nICsgKHZpZGVvLmNhblBsYXlUeXBl
KCd2aWRlby9vZ2cnKSA/ICdvZ3YnIDogJ21wNCcpOwogICAgICAgdmlkZW8uYWRkRXZlbnRMaXN0
ZW5lcignY2FucGxheXRocm91Z2gnLCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgIH0sIGZhbHNlKTsKICAgICA8L3NjcmlwdD4KICAg
ICAKSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L292ZXJmbG93LXBvc2l0
aW9uaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZs
b3cvb3ZlcmZsb3ctcG9zaXRpb25pbmcuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvb3ZlcmZsb3ctcG9zaXRpb25pbmcuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtNTEsOCArNTEsOCBAQAogICB9CiAgIDwvc3R5bGU+CiAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKIAogICAgIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpCiAgICAgewpAQCAtNjEs
OCArNjEsOCBAQAogICAgICAgICBtb3Zlci5jbGFzc05hbWUgPSAnbW92aW5nJzsKICAgICAgICAg
CiAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0sIDApOwogICAgICAg
ICAKICAgICAgIH0sIDApOwpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cv
b3ZlcmZsb3ctc2NhbGVkLWRlc2NlbmRhbnQtb3ZlcmxhcHBpbmcuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9vdmVyZmxvdy1zY2FsZWQtZGVzY2Vu
ZGFudC1vdmVybGFwcGluZy5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9vdmVyZmxvdy9vdmVyZmxvdy1zY2FsZWQtZGVzY2VuZGFudC1vdmVybGFwcGlu
Zy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDggKzUsOCBAQAogICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Njg1MCAtLT4KICAgICA8c2NyaXB0PgogICAgICAg
ICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQodHJ1ZSk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogICAgICAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpCiAgICAgICAgICAgICAgICAgd2luZG93LmludGVybmFscy5z
ZXR0aW5ncy5zZXRQYWdlU2NhbGVGYWN0b3IoMC41LCAwLCAwKTsKICAgICAgICAgfQpJbmRleDog
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvb3ZlcmZsb3ctc2Nyb2xsLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvb3ZlcmZsb3ctc2Ny
b2xsLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL292
ZXJmbG93L292ZXJmbG93LXNjcm9sbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4ICsyNCw4
IEBACiAgICAgfQogICA8L3N0eWxlPgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
Y2hhcnNldD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKICAgICBm
dW5jdGlvbiBkb1Rlc3QoKQogICAgIHsKQEAgLTM1LDggKzM1LDggQEAKICAgICAgICAgc2Nyb2xs
YWJsZXNbaV0uc2Nyb2xsVG9wID0gNTA7CiAgICAgICB9CiAKLSAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiAgICAgfQogCiAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQn
LCBkb1Rlc3QsIGZhbHNlKTsKSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93
L292ZXJmbG93LXNjcm9sbGJhci1sYXllcnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9vdmVyZmxvdy9vdmVyZmxvdy1zY3JvbGxiYXItbGF5ZXJzLmh0bWwJKHJl
dmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L292ZXJm
bG93LXNjcm9sbGJhci1sYXllcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDIsOSArNDIsOSBA
QCByZXNpemU6IGJvdGg7CiAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPjwvZGl2PgogPC9kaXY+CiA8
c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kaXNw
bGF5KCk7IC8vIEVuc3VyZSBjb21wb3NpdG9yIHRyZWUgaXMgdXAgdG8gZGF0ZS4KLSAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgibGF5ZXJUcmVlIikuaW5uZXJUZXh0ID0gbGF5b3V0VGVzdENv
bnRyb2xsZXIubGF5ZXJUcmVlQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmRpc3BsYXkoKTsgLy8g
RW5zdXJlIGNvbXBvc2l0b3IgdHJlZSBpcyB1cCB0byBkYXRlLgorICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJsYXllclRyZWUiKS5pbm5lclRleHQgPSB0ZXN0UnVubmVyLmxheWVyVHJlZUFz
VGV4dCgpOwogfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVy
Zmxvdy9yZXBhaW50LWFmdGVyLWxvc2luZy1zY3JvbGxiYXJzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvcmVwYWludC1hZnRlci1sb3Npbmctc2Ny
b2xsYmFycy5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9vdmVyZmxvdy9yZXBhaW50LWFmdGVyLWxvc2luZy1zY3JvbGxiYXJzLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTU5LDkgKzU5LDkgQEAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29ybmVyIikuY2xhc3NMaXN0LnJlbW92ZSgicmVzaXplV2lk
Z2V0Iik7IC8vIGJvdHRvbSBkaXYgbG9zZXMgYSByZXNpemUgY29ybmVyIGJ1dCBubyBzY3JvbGxi
YXJzCiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmRpc3BsYXkoKTsgLy8gUGFpbnQgb25jZSB3aXRoIGFsbCBvdmVyZmxvdyBjb250cm9scyB2aXNp
YmxlLgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KHRydWUpOworICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOyAvLyBQYWludCBvbmNlIHdpdGggYWxs
IG92ZXJmbG93IGNvbnRyb2xzIHZpc2libGUuCiAgICAgZmluaXNoVGVzdCgpOwogfSBlbHNlCiAg
ICAgd2luZG93LnNldFRpbWVvdXQoZmluaXNoVGVzdCwgMCk7CkluZGV4OiBMYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9vdmVyZmxvdy9yZXNpemUtcGFpbnRpbmcuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9yZXNpemUtcGFpbnRpbmcuaHRtbAkocmV2
aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvcmVzaXpl
LXBhaW50aW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE5LDEzICsxOSwxMyBAQAogICB9CiAg
IDwvc3R5bGU+CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYt
OCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBmdW5jdGlvbiBkb1Rlc3Qo
KQogICAgIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJzJykuaW5uZXJUZXh0ID0gbGF5b3V0
VGVzdENvbnRyb2xsZXIubGF5ZXJUcmVlQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJzJykuaW5u
ZXJUZXh0ID0gdGVzdFJ1bm5lci5sYXllclRyZWVBc1RleHQoKTsKICAgICB9CiAgICAgCiAgICAg
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBkb1Rlc3QsIGZhbHNlKTsKSW5kZXg6IExh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L3Njcm9sbC1hbmNlc3Rvci11cGRhdGUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9zY3JvbGwt
YW5jZXN0b3ItdXBkYXRlLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL292ZXJmbG93L3Njcm9sbC1hbmNlc3Rvci11cGRhdGUuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtNTYsOCArNTYsOCBAQAogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBjaGFyc2V0PSJ1dGYtOCI+CiAgICAgICBmdW5jdGlvbiB0ZXN0RG9uZSgpCiAgICAgICB7Ci0g
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICB9CiAKICAgICAg
IGZ1bmN0aW9uIG1vZGlmeURvY3VtZW50KCkKSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5n
L292ZXJmbG93L3Njcm9sbGJhci1wYWludGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L3Njcm9sbGJhci1wYWludGluZy5odG1sCShyZXZpc2lv
biAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9zY3JvbGxiYXIt
cGFpbnRpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzgsNCArMzgsNCBAQAogICA8ZGl2IGNs
YXNzPSJyZXNpemFibGUgY29tcG9zaXRlZCBib3giPgogICA8L2Rpdj4KIDwvYm9keT4KLTwvaHRt
bD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9vdmVyZmxvdy90aGVtZS1hZmZlY3RzLXZpc3VhbC1vdmVyZmxvdy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L3RoZW1lLWFm
ZmVjdHMtdmlzdWFsLW92ZXJmbG93Lmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRl
c3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L3RoZW1lLWFmZmVjdHMtdmlzdWFsLW92ZXJmbG93Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDQgKzI0LDQgQEAgc3BhbiB7CiAgICAgPGlucHV0IHR5
cGU9ImNoZWNrYm94IiBjaGVja2VkIC8+CiA8L2Rpdj4KIDwvYm9keT4KLTwvaHRtbD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9vdmVyZmxvdy90cmFuc2Zvcm0taW4tZW1wdHktY29udGFpbmVyLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvdHJhbnNmb3JtLWluLWVtcHR5
LWNvbnRhaW5lci5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9vdmVyZmxvdy90cmFuc2Zvcm0taW4tZW1wdHktY29udGFpbmVyLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDggKzI0LDggQEAKICAgfQogPC9zdHlsZT4KIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKICAgfQogPC9zY3Jp
cHQ+CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9wbHVnaW5zLzF4MS1j
b21wb3NpdGVkLXBsdWdpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0
aW5nL3BsdWdpbnMvMXgxLWNvbXBvc2l0ZWQtcGx1Z2luLmh0bWwJKHJldmlzaW9uIDExOTk0NikK
KysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3BsdWdpbnMvMXgxLWNvbXBvc2l0ZWQtcGx1Z2lu
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksMjMgKzksMjMgQEAKICAgICB9CiAgIDwvc3R5bGU+
CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwog
ICAgIH0KIAogICAgIGZ1bmN0aW9uIGRvVGVzdCgpCiAgICAgewogICAgICAgICB3aW5kb3cuc2V0
VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICB2YXIgbGF5ZXJzID0gbGF5b3V0VGVzdENvbnRy
b2xsZXIubGF5ZXJUcmVlQXNUZXh0KCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICAgICAgICAgICAgICB2YXIgbGF5ZXJzID0gdGVzdFJ1bm5lci5sYXllclRyZWVB
c1RleHQoKTsKICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0OwogICAgICAgICAgICAgICAgIGlm
IChsYXllcnMgPT0gIiIpCiAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAiUEFTUzogbm8gbGF5
ZXJzIGZvdW5kIjsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICByZXN1
bHQgPSAiRkFJTDogZm91bmQgbGF5ZXJzICIgKyBsYXllcnM7CiAgICAgICAgICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9IHJlc3VsdDsKLSAgICAg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0s
IDApOwogICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3BsdWdpbnMvaW52YWxp
ZGF0ZV9yZWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcGx1
Z2lucy9pbnZhbGlkYXRlX3JlY3QuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvcGx1Z2lucy9pbnZhbGlkYXRlX3JlY3QuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMTAsMTcgKzEwLDE3IEBACiAgIDwvc3R5bGU+CiAKICAgPHNjcmlwdD4KLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHZhciBwYWludENvdW50ID0gMDsKIAogICAgIGZ1
bmN0aW9uIG9uTG9hZCgpCiAgICAgewotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZGlzcGxh
eSgpOworICAgICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7CiAgICAgICBwYWludENvdW50ID0gMDsK
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0UGx1Z2luJykuaW52YWxpZGF0ZVJl
Y3QoMCwgMCwgMjAwLCAyMDApOwotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZGlzcGxheUlu
dmFsaWRhdGVkUmVnaW9uKCk7CisgICAgICB0ZXN0UnVubmVyLmRpc3BsYXlJbnZhbGlkYXRlZFJl
Z2lvbigpOwogICAgICAgaWYgKHBhaW50Q291bnQgPiAwKQogICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAiU1VDQ0VTUyI7CiAgICAgfQpJbmRl
eDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcGx1Z2lucy9sYXJnZS10by1zbWFsbC1jb21wb3Np
dGVkLXBsdWdpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3Bs
dWdpbnMvbGFyZ2UtdG8tc21hbGwtY29tcG9zaXRlZC1wbHVnaW4uaHRtbAkocmV2aXNpb24gMTE5
OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcGx1Z2lucy9sYXJnZS10by1zbWFsbC1j
b21wb3NpdGVkLXBsdWdpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw5ICsyMCw5IEBACiAg
ICAgfQogICA8L3N0eWxlPgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNl
dD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBkb1Rlc3QoKQpAQCAtMzEsMTUg
KzMxLDE1IEBACiAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsdWdpbicpLmNs
YXNzTmFtZSA9ICdzbWFsbCc7CiAgICAgICAgICAgLy8gTmVlZCB0byB3YWl0IGZvciBjb21wb3Np
dGluZyBsYXllcnMgdG8gYmUgdXBkYXRlZC4KICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgICAgICAgICAgICAgICAgdmFyIGxheWVycyA9IGxheW91dFRlc3RDb250cm9sbGVy
LmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgICAgICAgICAgIHZhciBsYXllcnMgPSB0ZXN0UnVubmVyLmxheWVyVHJlZUFz
VGV4dCgpOwogICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdDsKICAgICAgICAgICAgICAgICAg
IGlmIChsYXllcnMgPT0gIiIpCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9ICJQQVNTOiBu
byBsYXllcnMgZm91bmQiOwogICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
ICAgICByZXN1bHQgPSAiRkFJTDogZm91bmQgbGF5ZXJzICIgKyBsYXllcnM7CiAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gcmVz
dWx0OwotICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICB9LCAwKTsKICAgICAgICAgfSwgMCk7CkluZGV4OiBMYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9wbHVnaW5zL3NtYWxsLXRvLWxhcmdlLWNvbXBvc2l0ZWQtcGx1Z2luLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcGx1Z2lucy9zbWFsbC10
by1sYXJnZS1jb21wb3NpdGVkLXBsdWdpbi5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9wbHVnaW5zL3NtYWxsLXRvLWxhcmdlLWNvbXBvc2l0ZWQtcGx1
Z2luLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIwLDkgKzIwLDkgQEAKICAgICB9CiAgIDwvc3R5
bGU+CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwogICAgIH0KIAogICAgIGZ1bmN0aW9uIGRvVGVzdCgpCkBAIC0zMSw5ICszMSw5IEBACiAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsdWdpbicpLmNsYXNzTmFtZSA9ICdsYXJn
ZSc7CiAgICAgICAgICAgLy8gTmVlZCB0byB3YWl0IGZvciBjb21wb3NpdGluZyBsYXllcnMgdG8g
YmUgdXBkYXRlZC4gRklYTUUgcmVtb3ZlLgogICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5pbm5l
ckhUTUwgPSBsYXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKLSAgICAgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnbGF5ZXJzJykuaW5uZXJIVE1MID0gdGVzdFJ1bm5lci5sYXllclRyZWVBc1RleHQo
KTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICB9LCAwKQogICAgICAgICB9LCAwKTsKSW5kZXg6IExheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL3JlZmxlY3Rpb25zL2FuaW1hdGlvbi1pbnNpZGUtcmVmbGVjdGlvbi5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL2FuaW1hdGlv
bi1pbnNpZGUtcmVmbGVjdGlvbi5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9hbmltYXRpb24taW5zaWRlLXJlZmxlY3Rpb24uaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtNjcsNCArNjcsNCBAQAogICA8L2Rpdj4KICAgPGRpdiBpZD0i
cmVzdWx0Ij48L2Rpdj4KIDwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9i
ZWNvbWUtc2ltcGxlLWNvbXBvc2l0ZWQtcmVmbGVjdGlvbi5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL2JlY29tZS1zaW1wbGUtY29tcG9zaXRl
ZC1yZWZsZWN0aW9uLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBv
c2l0aW5nL3JlZmxlY3Rpb25zL2JlY29tZS1zaW1wbGUtY29tcG9zaXRlZC1yZWZsZWN0aW9uLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE3ICsyNiwxNyBAQAogICA8L3N0eWxlPgogICA8c2Ny
aXB0PgogICAgIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7Ci0gICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CisgICAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKICAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gZG9UZXN0KCkKICAgICB7
CiAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAndHJhbnNwYXJl
bnQnOwotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgfSwg
MCk7CiAgICAgfQogICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZG9UZXN0LCBm
YWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9jb21wb3Np
dGluZy1jaGFuZ2UtaW5zaWRlLXJlZmxlY3Rpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9jb21wb3NpdGluZy1jaGFuZ2UtaW5zaWRlLXJl
ZmxlY3Rpb24uaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvcmVmbGVjdGlvbnMvY29tcG9zaXRpbmctY2hhbmdlLWluc2lkZS1yZWZsZWN0aW9uLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDE1ICszOCwxNSBAQAogICAgIH0KICAgPC9zdHlsZT4KICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiAgICAgZnVuY3Rpb24gZG9UZXN0KCkKICAgICB7CiAg
ICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2lubmVyJykuY2xhc3NOYW1lID0gJ2NvbXBvc2l0ZWQnOwotICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgfSwgMCk7CiAgICAgfQogICAg
IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZG9UZXN0LCBmYWxzZSk7CkluZGV4OiBM
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9lbXB0eS1yZWZsZWN0aW9uLXdpdGgt
bWFzay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlZmxlY3Rp
b25zL2VtcHR5LXJlZmxlY3Rpb24td2l0aC1tYXNrLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysr
IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL2VtcHR5LXJlZmxlY3Rpb24td2l0
aC1tYXNrLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEzLDggKzEzLDggQEAKIAkJfQogCTwvc3R5
bGU+CiAJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLQkJ
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLQkJCWxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKwkJaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorCQkJdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CiAJPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KSW5kZXg6IExheW91dFRl
c3RzL2NvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL2xvYWQtdmlkZW8taW4tcmVmbGVjdGlvbi5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL2xvYWQt
dmlkZW8taW4tcmVmbGVjdGlvbi5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9sb2FkLXZpZGVvLWluLXJlZmxlY3Rpb24uaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUsOCBAQAogICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgogICAgIGZ1bmN0aW9uIHRlc3REb25lKCkKICAgICB7
Ci0gICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIAogICAgIGZ1bmN0aW9u
IGRvVGVzdCgpCkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0
ZWQtcmVmbGVjdGlvbi1hbmNob3ItcG9pbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVmbGVjdGlvbi1hbmNob3ItcG9pbnQu
aHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVmbGVj
dGlvbnMvbmVzdGVkLXJlZmxlY3Rpb24tYW5jaG9yLXBvaW50Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDE1ICsyNywxNSBAQAogICB9CiAgIDwvc3R5bGU+CiAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKIAogICAgIGZ1bmN0aW9uIGRvVGVzdCgpCiAgICAgewogICAgICAgd2luZG93LnNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbm5l
cicpLmNsYXNzTmFtZSA9ICdpbm5lciBjb21wb3NpdGVkIGNoYW5nZWQnOwotICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgfSwgMCk7CiAgICAgfQogICAgIHdp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZG9UZXN0LCBmYWxzZSk7CkBAIC00OSw0ICs0
OSw0IEBACiAgICAgPC9kaXY+CiAgIDwvZGl2PgogPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5n
L3JlZmxlY3Rpb25zL25lc3RlZC1yZWZsZWN0aW9uLWFuaW1hdGVkLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvbmVzdGVkLXJlZmxlY3Rpb24t
YW5pbWF0ZWQuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvcmVmbGVjdGlvbnMvbmVzdGVkLXJlZmxlY3Rpb24tYW5pbWF0ZWQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtNTksNCArNTksNCBAQAogICA8L2Rpdj4KICAgPGRpdiBpZD0icmVzdWx0Ij48L2Rp
dj4KIDwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVmbGVj
dGlvbi1tYXNrLWNoYW5nZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0
aW5nL3JlZmxlY3Rpb25zL25lc3RlZC1yZWZsZWN0aW9uLW1hc2stY2hhbmdlLmh0bWwJKHJldmlz
aW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL25lc3Rl
ZC1yZWZsZWN0aW9uLW1hc2stY2hhbmdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE1ICsz
MCwxNSBAQAogICB9CiAgIDwvc3R5bGU+CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogICAg
IGZ1bmN0aW9uIGRvVGVzdCgpCiAgICAgewogICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbm5lcicpLmNsYXNzTmFt
ZSA9ICdpbm5lciBjb21wb3NpdGVkIG1hc2tlZCc7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7CiAgICAgICB9LCAwKTsKICAgICB9CiAgICAgd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoJ2xvYWQnLCBkb1Rlc3QsIGZhbHNlKTsKSW5kZXg6IExheW91dFRlc3RzL2NvbXBv
c2l0aW5nL3JlZmxlY3Rpb25zL25lc3RlZC1yZWZsZWN0aW9uLW9uLW92ZXJmbG93Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvbmVzdGVkLXJl
ZmxlY3Rpb24tb24tb3ZlcmZsb3cuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvbmVzdGVkLXJlZmxlY3Rpb24tb24tb3ZlcmZsb3cu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDUsNCArNDUsNCBAQAogICAgIDwvZGl2PgogICA8L2Rp
dj4KIDwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVmbGVj
dGlvbi1vcGFjaXR5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
cmVmbGVjdGlvbnMvbmVzdGVkLXJlZmxlY3Rpb24tb3BhY2l0eS5odG1sCShyZXZpc2lvbiAxMTk5
NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVmbGVj
dGlvbi1vcGFjaXR5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE1ICsyNiwxNSBAQAogICB9
CiAgIDwvc3R5bGU+CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1
dGYtOCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogICAgIGZ1bmN0aW9uIGRv
VGVzdCgpCiAgICAgewogICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbm5lcicpLnN0eWxlLm9wYWNpdHkgPSAnMC41
JzsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgIH0sIDAp
OwogICAgIH0KICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGRvVGVzdCwgZmFs
c2UpOwpAQCAtNDgsNCArNDgsNCBAQAogICAgIDwvZGl2PgogICA8L2Rpdj4KIDwvYm9keT4KLTwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVmbGVjdGlvbi1zaXplLWNoYW5n
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlZmxlY3Rpb25z
L25lc3RlZC1yZWZsZWN0aW9uLXNpemUtY2hhbmdlLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysr
IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL25lc3RlZC1yZWZsZWN0aW9uLXNp
emUtY2hhbmdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE1ICszMCwxNSBAQAogICB9CiAg
IDwvc3R5bGU+CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYt
OCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogICAgIGZ1bmN0aW9uIGRvVGVz
dCgpCiAgICAgewogICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbm5lcicpLmNsYXNzTmFtZSA9ICdpbm5lciBjb21w
b3NpdGVkIGJpZ2dlcic7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CiAgICAgICB9LCAwKTsKICAgICB9CiAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQn
LCBkb1Rlc3QsIGZhbHNlKTsKQEAgLTUyLDQgKzUyLDQgQEAKICAgICA8L2Rpdj4KICAgPC9kaXY+
CiA8L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvbmVzdGVkLXJlZmxlY3Rp
b24tdHJhbnNmb3JtZWQyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvcmVmbGVjdGlvbnMvbmVzdGVkLXJlZmxlY3Rpb24tdHJhbnNmb3JtZWQyLmh0bWwJKHJldmlz
aW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL25lc3Rl
ZC1yZWZsZWN0aW9uLXRyYW5zZm9ybWVkMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00Miw0ICs0
Miw0IEBACiAgICAgPC9kaXY+CiAgIDwvZGl2PgogPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5n
L3JlZmxlY3Rpb25zL25lc3RlZC1yZWZsZWN0aW9uLXRyYW5zZm9ybWVkLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvbmVzdGVkLXJlZmxlY3Rp
b24tdHJhbnNmb3JtZWQuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvcmVmbGVjdGlvbnMvbmVzdGVkLXJlZmxlY3Rpb24tdHJhbnNmb3JtZWQuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtNDEsNCArNDEsNCBAQAogICAgIDwvZGl2PgogICA8L2Rpdj4KIDwv
Ym9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVmbGVjdGlvbi10
cmFuc2l0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVm
bGVjdGlvbnMvbmVzdGVkLXJlZmxlY3Rpb24tdHJhbnNpdGlvbi5odG1sCShyZXZpc2lvbiAxMTk5
NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVmbGVj
dGlvbi10cmFuc2l0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTU5LDQgKzU5LDQgQEAKICAg
PC9kaXY+CiAgIDxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+CiA8L2JvZHk+Ci08L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvcmVmbGVjdGlvbnMvbmVzdGVkLXJlZmxlY3Rpb24uaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVmbGVjdGlvbi5odG1s
CShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZWZsZWN0aW9u
cy9uZXN0ZWQtcmVmbGVjdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw0ICszNSw0IEBA
CiAgICAgPC9kaXY+CiAgIDwvZGl2PgogPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlZmxl
Y3Rpb25zL3JlZmxlY3Rpb24tb3BhY2l0eS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL3JlZmxlY3Rpb24tb3BhY2l0eS5odG1sCShyZXZpc2lv
biAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9yZWZsZWN0
aW9uLW9wYWNpdHkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNCArMjcsNCBAQAogICA8ZGl2
IGNsYXNzPSJyZWZsZWN0ZWQgY29tcG9zaXRlZCI+CiAgIDwvZGl2PgogCi08L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvcmVmbGVjdGlvbnMvcmVmbGVjdGlvbi1wb3NpdGlvbmluZzIuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9yZWZsZWN0aW9uLXBvc2l0
aW9uaW5nMi5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9yZWZsZWN0aW9ucy9yZWZsZWN0aW9uLXBvc2l0aW9uaW5nMi5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC02NSw0ICs2NSw0IEBACiAgICAgPC9kaXY+CiAgIDwvZGl2PgogCi08L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvcmVmbGVjdGlvbnMvcmVmbGVjdGlvbi1wb3NpdGlvbmluZy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL3JlZmxlY3Rpb24tcG9zaXRp
b25pbmcuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
cmVmbGVjdGlvbnMvcmVmbGVjdGlvbi1wb3NpdGlvbmluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC02NCw0ICs2NCw0IEBACiAgICAgPC9kaXY+CiAgIDwvZGl2PgogCi08L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvcmVmbGVjdGlvbnMvcmVtb3ZlLWFkZC1yZWZsZWN0aW9uLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvcmVtb3ZlLWFkZC1yZWZsZWN0aW9u
Lmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlZmxl
Y3Rpb25zL3JlbW92ZS1hZGQtcmVmbGVjdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw4
ICsyMiw4IEBACiAgICAgICB9CiAgICAgPC9zdHlsZT4KICAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+Ci0gICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiAg
ICAgICB2YXIgcmVmbGVjdGlvbk9uID0gdHJ1ZTsKICAgICAgIGZ1bmN0aW9uIHRvZ2dsZVJlZmxl
Y3Rpb24oKQpAQCAtNDEsOCArNDEsOCBAQAogICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgewogICAgICAgICAgICAgdG9nZ2xlUmVmbGVjdGlvbigpOyAvLyBhZGQKICAgICAg
ICAgICAKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CiAgICAgICAgICAgfSwgMCk7CiAgICAgICAgIH0sIDUwKTsKICAgICAgIH0KQEAgLTU1
LDQgKzU1LDQgQEAKICAgICA8ZGl2IGlkPSJpbmRpY2F0b3IiPjwvZGl2PgogICAgIDxkaXYgaWQ9
ImJveCI+PC9kaXY+CiAgIDwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9y
ZW1vdmUtcmVmbGVjdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0
aW5nL3JlZmxlY3Rpb25zL3JlbW92ZS1yZWZsZWN0aW9uLmh0bWwJKHJldmlzaW9uIDExOTk0NikK
KysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL3JlbW92ZS1yZWZsZWN0aW9u
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE1LDggKzE1LDggQEAKIAogPHNjcmlwdD4KIAotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKIAogd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgIGRvY3VtZW50LmV4ZWND
b21tYW5kKCJTZWxlY3RBbGwiLCBmYWxzZSwgZmFsc2UpCkluZGV4OiBMYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9yZWZsZWN0aW9ucy90cmFuc2Zvcm0taW5zaWRlLXJlZmxlY3Rpb24uaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy90cmFuc2Zvcm0t
aW5zaWRlLXJlZmxlY3Rpb24uaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvdHJhbnNmb3JtLWluc2lkZS1yZWZsZWN0aW9uLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDQgKzQ1LDQgQEAKICAgICA8L2Rpdj4KICAgPC9kaXY+CiA8
L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9iZWNvbWUtb3ZlcmxheS1jb21wb3Np
dGVkLWxheWVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVw
YWludC9iZWNvbWUtb3ZlcmxheS1jb21wb3NpdGVkLWxheWVyLmh0bWwJKHJldmlzaW9uIDExOTk0
NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvYmVjb21lLW92ZXJsYXktY29t
cG9zaXRlZC1sYXllci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00Myw4ICs0Myw4IEBACiAgICAg
fQogICAgIDwvc3R5bGU+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJz
ZXQ9InV0Zi04Ij4KLSAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKICAg
ICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgICAgewpAQCAtNTIsOCArNTIsOCBAQAogICAgICAg
ICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29udGFpbmVyIikuY2xhc3NOYW1lID0gIiI7CiAgICAgICAgICAgd2luZG93
LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgIH0sIDI1MCk7CiAgICAgICAgIH0s
IDI1MCk7CiAgICAgICB9CkBAIC02OCw0ICs2OCw0IEBACiAgICAgICAgIDxkaXYgaWQ9ImZhZGVy
Ij48L2Rpdj4KICAgICA8L2Rpdj4KIAotPC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCis8L2JvZHk+PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
cmVwYWludC9jb21wb3NpdGVkLWRvY3VtZW50LWVsZW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXBhaW50L2NvbXBvc2l0ZWQtZG9jdW1lbnQtZWxlbWVu
dC5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXBh
aW50L2NvbXBvc2l0ZWQtZG9jdW1lbnQtZWxlbWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0y
MCwxNSArMjAsMTUgQEAKICAgICB9CiAgIDwvc3R5bGU+CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKIAogICAgIGZ1bmN0aW9uIGRvVGVzdCgpCiAgICAgewogICAgICAgd2luZG93LnNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7CiAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc05h
bWUgPSAnY2hhbmdlZCc7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CiAgICAgICB9LCAwKTsKICAgICB9CiAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQn
LCBkb1Rlc3QsIGZhbHNlKTsKSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQv
Y29udGVudC1pbnRvLW92ZXJmbG93Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvcmVwYWludC9jb250ZW50LWludG8tb3ZlcmZsb3cuaHRtbAkocmV2aXNpb24gMTE5
OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9jb250ZW50LWludG8tb3Zl
cmZsb3cuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTgsOCArMTgsOCBAQAogICAgICAgICAjdGFy
Z2V0MyB7IGRpc3BsYXk6IG5vbmU7IGNsZWFyOiBib3RoOyBoZWlnaHQ6IDIwcHg7IGJhY2tncm91
bmQ6IGdyZWVuOyB9CiAgICAgPC9zdHlsZT4KICAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiAgICAgICAgIGZ1bmN0aW9uIHJlcGFp
bnRUZXN0KCkKICAgICAgICAgewpAQCAtMjcsOCArMjcsOCBAQAogICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldDInKS5zdHlsZS5oZWlnaHQgPSAnYXV0byc7CiAgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0MycpLnN0eWxlLmRpc3BsYXkg
PSAnYmxvY2snOwogCi0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gcnVuUmVwYWludFRl
c3QoKQpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9pbmxpbmUtcmVwYWlu
dC1jb250YWluZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9y
ZXBhaW50L2lubGluZS1yZXBhaW50LWNvbnRhaW5lci5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisr
KyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXBhaW50L2lubGluZS1yZXBhaW50LWNvbnRhaW5l
ci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw4ICsxNyw4IEBACiAgICAgfQogICA8L3N0eWxl
PgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgZnVuY3Rpb24gZG9UZXN0KCkKICAgICB7
CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXBhaW50L2xheWVyLXJlcGFpbnQtcmVj
dHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXBhaW50L2xh
eWVyLXJlcGFpbnQtcmVjdHMuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvcmVwYWludC9sYXllci1yZXBhaW50LXJlY3RzLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTUzLDE2ICs1MywxNiBAQAogICAgIDwvc3R5bGU+CiAgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KICAgICAgIAotICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogICAgICAgZnVuY3Rpb24gc3RhcnRUZXN0KCkKICAg
ICAgIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmNsYXNz
TmFtZSA9ICdvdmVyJzsKICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmNsYXNzTmFtZSA9
ICcnOwotICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAg
ICAgICAgIH0sIDE1MCk7CiAgICAgICB9CiAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcign
bG9hZCcsIHN0YXJ0VGVzdCwgZmFsc2UpOwpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
cmVwYWludC9sYXllci1yZXBhaW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvcmVwYWludC9sYXllci1yZXBhaW50Lmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysr
IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvbGF5ZXItcmVwYWludC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMywxMSArMjMsMTEgQEAKICAgICB9CiAgICAgZnVuY3Rpb24gY2hhbmdl
QmFja2dyb3VuZCgpIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Rlcicp
LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICdncmVlbic7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGRvVGVzdCwgZmFs
c2UpOwogICA8L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5n
L3JlcGFpbnQvbmV3bHktY29tcG9zaXRlZC1yZXBhaW50LXJlY3QuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXBhaW50L25ld2x5LWNvbXBvc2l0ZWQtcmVwYWlu
dC1yZWN0Lmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5n
L3JlcGFpbnQvbmV3bHktY29tcG9zaXRlZC1yZXBhaW50LXJlY3QuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtNDksOSArNDksOSBAQAogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvcmVwYWludC9yZXNv
dXJjZXMvcmVwYWludC5qcyI+PC9zY3JpcHQ+CiAKIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KHRydWUpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCh0cnVlKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAg
fQogCiAgICAgZnVuY3Rpb24gY2hhbmdlRGl2UG9zaXRpb24oKSB7CkBAIC02NCwxMyArNjQsMTMg
QEAKIAogICAgICAgICAvLyBGb3JjZSBEdW1wUmVuZGVyVHJlZSB0byBkbyBhIGxheW91dCBhbmQg
cmVwYWludCBoZXJlLCB0aGlzIGlzIHdoZXJlIHRoZSByZXBhaW50UmVjdAogICAgICAgICAvLyBn
b2VzIHdyb25nIGJlY2F1c2UgaXQgZG9lcyBub3QgZ2V0IHVwZGF0ZWQgZm9yIGEgbmV3bHkgY29t
cG9zaXRlZCBlbGVtZW50LgotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZGlzcGxheSgpOworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmRpc3BsYXkoKTsK
IAogICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgIC8v
IFNjcm9sbGluZyBhIGxpdHRsZSB3aWxsIGRlbW9uc3RyYXRlIHdoZXRoZXIgdGhlIHJlcGFpbnQg
cmVjdCBpcyBjb3JyZWN0IG9yIG5vdC4KICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdzY3JvbGxkaXYnKS5zY3JvbGxUb3AgPSA1MDA7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKICAgICAgICAgfSwgMCk7CiAgICAgfQogCkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9yZXBhaW50L29wYWNpdHktYmV0d2Vlbi1hYnNvbHV0ZTIuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXBhaW50L29wYWNpdHktYmV0d2Vlbi1hYnNvbHV0
ZTIuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVw
YWludC9vcGFjaXR5LWJldHdlZW4tYWJzb2x1dGUyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDggKzQwLDggQEAKICAgICB9CiAgIDwvc3R5bGU+CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
IAogICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgIHsKQEAgLTUyLDggKzUyLDggQEAKICAgICAg
ICAgLy8gTm93IHRlc3QgcmVkcmF3IG9uIC5pbm5lcgogICAgICAgICB2YXIgaW5uZXIgPSBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuaW5uZXInKVswXTsKICAgICAgICAgaW5uZXIuc3R5bGUu
YmFja2dyb3VuZENvbG9yID0gJ2dyZWVuJzsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKICAgICAgIH0sIDApOwogICAgIH0KIApJbmRleDogTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvcmVwYWludC9vcGFjaXR5LWJldHdlZW4tYWJzb2x1dGUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXBhaW50L29wYWNpdHktYmV0d2Vlbi1hYnNv
bHV0ZS5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9y
ZXBhaW50L29wYWNpdHktYmV0d2Vlbi1hYnNvbHV0ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00
MSw4ICs0MSw4IEBACiAgICAgfQogICA8L3N0eWxlPgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CiAKICAgICBmdW5jdGlvbiBydW5UZXN0KCkKICAgICB7CkBAIC01Myw4ICs1Myw4IEBACiAgICAg
ICAgIC8vIE5vdyB0ZXN0IHJlZHJhdyBvbiAuaW5uZXIKICAgICAgICAgdmFyIGlubmVyID0gZG9j
dW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmlubmVyJylbMF07CiAgICAgICAgIGlubmVyLnN0eWxl
LmJhY2tncm91bmRDb2xvciA9ICdncmVlbic7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiAgICAgICB9LCAwKTsKICAgICB9CiAKSW5kZXg6IExheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL3JlcGFpbnQvb3ZlcmZsb3ctaW50by1jb250ZW50Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9vdmVyZmxvdy1pbnRvLWNvbnRlbnQu
aHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWlu
dC9vdmVyZmxvdy1pbnRvLWNvbnRlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTgsMTYgKzE4
LDE2IEBACiAgICAgICAgICN0YXJnZXQzIHsgZGlzcGxheTogbm9uZTsgY2xlYXI6IGJvdGg7IGhl
aWdodDogMjBweDsgYmFja2dyb3VuZDogZ3JlZW47IH0KICAgICA8L3N0eWxlPgogICAgIDxzY3Jp
cHQ+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKICAg
ICAgICAgZnVuY3Rpb24gcmVwYWludFRlc3QoKQogICAgICAgICB7CiAgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0MScpLnN0eWxlLndpZHRoID0gJyc7CiAgICAgICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0MicpLnN0eWxlLmhlaWdodCA9ICcn
OwogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldDMnKS5zdHlsZS5k
aXNwbGF5ID0gJyc7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogICAgICAgICB9CiAgICAgICAgIGZ1bmN0aW9uIHJ1blJlcGFpbnRUZXN0
KCkKICAgICAgICAgewpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9zYW1l
LXNpemUtaW52YWxpZGF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvcmVwYWludC9zYW1lLXNpemUtaW52YWxpZGF0aW9uLmh0bWwJKHJldmlzaW9uIDExOTk0
NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvc2FtZS1zaXplLWludmFsaWRh
dGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMiArMjcsMTIgQEAKICAgICB9CiAgICAg
ZnVuY3Rpb24gY2hhbmdlQmFja2dyb3VuZDIoKSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCd0ZXN0ZXInKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnZ3JlZW4nOwotICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KLSAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUp
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAgICAgfQogICAg
IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZG9UZXN0LCBmYWxzZSk7CiAgIDwvc2Ny
aXB0PgpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9zaHJpbmstbGF5ZXIu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXBhaW50L3Nocmlu
ay1sYXllci5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9yZXBhaW50L3Nocmluay1sYXllci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI1ICsxLDI1
IEBACi08aHRtbD4NCi08aGVhZD4NCi0gICAgPHRpdGxlPlRlc3QgZm9yIGJ1ZyA2MjI0MzwvdGl0
bGU+DQotICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQotICAgICAgICAjcnVsZXIgew0KLSAg
ICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOw0KLSAgICAgICAgICAg
IGJvcmRlci1ib3R0b206IDEwcHggc29saWQgYmxhY2s7DQotICAgICAgICAgICAgd2lkdGg6IDU1
MHB4Ow0KLSAgICAgICAgICAgIGhlaWdodDogNTAwcHg7DQotICAgICAgICB9DQotICAgIDwvc3R5
bGU+DQotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L3JlcGFpbnQvcmVzb3VyY2VzL3JlcGFp
bnQuanMiPjwvc2NyaXB0Pg0KLSAgICA8c2NyaXB0Pg0KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikNCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KHRydWUpOw0KLSAgICAgICAgZnVuY3Rpb24gcmVwYWludFRlc3QoKQ0KLSAgICAgICAg
ew0KLSAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJydWxlciIpLnN0eWxlLmhl
aWdodCA9ICI0NTBweCI7DQotICAgICAgICB9DQotICAgIDwvc2NyaXB0Pg0KLTwvaGVhZD4NCi08
Ym9keSBvbmxvYWQ9InJ1blJlcGFpbnRUZXN0KCkiPg0KLSAgICA8ZGl2IGlkPSJydWxlciI+DQot
PC9ib2R5Pg0KLTwvaHRtbD4NCis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5UZXN0IGZvciBi
dWcgNjIyNDM8L3RpdGxlPgorICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgICAgICNy
dWxlciB7CisgICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKKyAg
ICAgICAgICAgIGJvcmRlci1ib3R0b206IDEwcHggc29saWQgYmxhY2s7CisgICAgICAgICAgICB3
aWR0aDogNTUwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDUwMHB4OworICAgICAgICB9CisgICAg
PC9zdHlsZT4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9yZXBhaW50L3Jlc291cmNlcy9y
ZXBhaW50LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CisgICAg
ICAgIGZ1bmN0aW9uIHJlcGFpbnRUZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJ1bGVyIikuc3R5bGUuaGVpZ2h0ID0gIjQ1MHB4IjsKKyAgICAg
ICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5SZXBhaW50VGVz
dCgpIj4KKyAgICA8ZGl2IGlkPSJydWxlciI+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9yZXBhaW50L3RyYW5zZm9ybS1zdHlsZS1jaGFuZ2UuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXBhaW50L3RyYW5zZm9ybS1z
dHlsZS1jaGFuZ2UuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvcmVwYWludC90cmFuc2Zvcm0tc3R5bGUtY2hhbmdlLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTIsMTUgKzIsMTUgQEAKIDwhLS0gVGVzdHMgdGhhdCBhbiBlbGVtZW50IGNvbXBvc2l0ZWQg
d2l0aCB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkIHN0aWxsIHJlbmRlcnMgd2hlbiBzd2l0
Y2hlZCB0byB0cmFuc2Zvcm0tc3R5bGU6IGZsYXQgLS0+CiA8ZGl2IGlkPSJib3giIHN0eWxlPSJ3
aWR0aDoxMDBweDsgaGVpZ2h0OjEwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgLXdlYmtp
dC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7IC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBwcmVz
ZXJ2ZS0zZCI+PC9kaXY+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOyAvLyBPbmx5IHBp
eGVsIHJlc3VsdHMgYXJlIHVzZWZ1bAoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsgLy8gT25seSBwaXhlbCByZXN1bHRzIGFyZSB1c2VmdWwK
IAogZnVuY3Rpb24gdGVzdCgpIHsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm94Iiku
c3R5bGUud2Via2l0VHJhbnNmb3JtU3R5bGUgPSAiZmxhdCI7CiB9CiAKLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kaXNwbGF5KCk7
IC8vIEZvcmNlIG9uZSBjb21wb3NpdGUgd2l0aCBwcmVzZXJ2ZS0zZAoraWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7IC8vIEZvcmNlIG9uZSBjb21wb3Np
dGUgd2l0aCBwcmVzZXJ2ZS0zZAogICAgIHRlc3QoKTsKIH0gZWxzZQogICAgIHdpbmRvdy5zZXRU
aW1lb3V0KHRlc3QsIDApOwpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVzb3VyY2Vz
L21lZGlhLXRlc3RpbmcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
cmVzb3VyY2VzL21lZGlhLXRlc3RpbmcuanMJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRl
c3RzL2NvbXBvc2l0aW5nL3Jlc291cmNlcy9tZWRpYS10ZXN0aW5nLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogZnVuY3Rpb24gZW5zdXJl
RnJhbWVWaXNpYmxlKHZpZGVvLCB2aWRlb1JlbmRlcmVkQ2FsbGJhY2spCiB7CkluZGV4OiBMYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9ydGwvcnRsLWFic29sdXRlLW92ZXJmbG93LXNjcm9sbGVkLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcnRsL3J0bC1hYnNvbHV0
ZS1vdmVyZmxvdy1zY3JvbGxlZC5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9ydGwvcnRsLWFic29sdXRlLW92ZXJmbG93LXNjcm9sbGVkLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDkgKzM4LDkgQEAKIDwvc3R5bGU+CiA8c2NyaXB0PgogICAgIGZ1
bmN0aW9uIGRvVGVzdCgpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwot
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKICAg
ICAgICAgfQogCiAgICAgICAgIC8vIFRoZSBmYXIgbGVmdCBjb29yZGluYXRlIG9mIHRoZSBkb2N1
bWVudCB2YXJpZXMgYnkgd2luZG93IHdpZHRoLgpAQCAtNTAsMTAgKzUwLDEwIEBACiAKICAgICAg
ICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICB3aW5kb3cuc2Ny
b2xsVG8ob2Zmc2V0LCAwKTsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAgICAg
ICAgICAgIGlmICh0b3AgPT0gc2VsZikKLSAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2xheWVydHJlZScpLmlubmVyVGV4dCA9IGxheW91dFRlc3RDb250cm9sbGVy
LmxheWVyVHJlZUFzVGV4dCgpOwotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2xheWVydHJlZScpLmlubmVyVGV4dCA9IHRlc3RSdW5uZXIubGF5ZXJUcmVlQXNUZXh0KCk7
CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0sIDApOwogICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3J0
bC9ydGwtYWJzb2x1dGUtb3ZlcmZsb3cuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9ydGwvcnRsLWFic29sdXRlLW92ZXJmbG93Lmh0bWwJKHJldmlzaW9uIDExOTk0
NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3J0bC9ydGwtYWJzb2x1dGUtb3ZlcmZsb3cu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEwIEBACiA8L3N0eWxlPgogPHNjcmlw
dD4KICAgICBmdW5jdGlvbiBkb1Rlc3QoKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAg
ICAgICBpZiAodG9wID09IHNlbGYpCi0gICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2xheWVydHJlZScpLmlubmVyVGV4dCA9IGxheW91dFRlc3RDb250cm9sbGVyLmxheWVy
VHJlZUFzVGV4dCgpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCh0cnVlKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJ0
cmVlJykuaW5uZXJUZXh0ID0gdGVzdFJ1bm5lci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKICAgICAgICAgfQogICAgIH0KICAgICB3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGRvVGVzdCwgZmFsc2UpOwpJbmRleDogTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvcnRsL3J0bC1hYnNvbHV0ZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3J0bC9ydGwtYWJzb2x1dGUuaHRtbAkocmV2aXNpb24g
MTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcnRsL3J0bC1hYnNvbHV0ZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMTAgQEAKIDwvc3R5bGU+CiA8c2NyaXB0Pgog
ICAgIGZ1bmN0aW9uIGRvVGVzdCgpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgICAg
IGlmICh0b3AgPT0gc2VsZikKLSAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnbGF5ZXJ0cmVlJykuaW5uZXJUZXh0ID0gbGF5b3V0VGVzdENvbnRyb2xsZXIubGF5ZXJUcmVl
QXNUZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRy
dWUpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnRyZWUn
KS5pbm5lclRleHQgPSB0ZXN0UnVubmVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogICAgICAgICB9CiAgICAgfQogICAgIHdpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZG9UZXN0LCBmYWxzZSk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9ydGwvcnRsLWZpeGVkLW92ZXJmbG93LXNjcm9sbGVkLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcnRsL3J0bC1maXhlZC1vdmVyZmxv
dy1zY3JvbGxlZC5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9ydGwvcnRsLWZpeGVkLW92ZXJmbG93LXNjcm9sbGVkLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDkgKzM4LDkgQEAKIDwvc3R5bGU+CiA8c2NyaXB0PgogICAgIGZ1bmN0aW9uIGRvVGVz
dCgpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKICAgICAgICAgfQogCiAg
ICAgICAgIC8vIFRoZSBmYXIgbGVmdCBjb29yZGluYXRlIG9mIHRoZSBkb2N1bWVudCB2YXJpZXMg
Ynkgd2luZG93IHdpZHRoLgpAQCAtNDgsMTAgKzQ4LDEwIEBACiAKICAgICAgICAgd2luZG93LnNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8ob2Zmc2V0
LCAwKTsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAgICAgICAgICAgIGlmICh0
b3AgPT0gc2VsZikKLSAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2xheWVydHJlZScpLmlubmVyVGV4dCA9IGxheW91dFRlc3RDb250cm9sbGVyLmxheWVyVHJlZUFz
VGV4dCgpOwotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVydHJl
ZScpLmlubmVyVGV4dCA9IHRlc3RSdW5uZXIubGF5ZXJUcmVlQXNUZXh0KCk7CisgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0s
IDApOwogICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3J0bC9ydGwtZml4ZWQt
b3ZlcmZsb3cuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9ydGwv
cnRsLWZpeGVkLW92ZXJmbG93Lmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL3J0bC9ydGwtZml4ZWQtb3ZlcmZsb3cuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMzgsMTAgKzM4LDEwIEBACiA8L3N0eWxlPgogPHNjcmlwdD4KICAgICBmdW5jdGlvbiBkb1Rl
c3QoKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgICAgICBpZiAodG9wID09IHNlbGYp
Ci0gICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVydHJlZScpLmlu
bmVyVGV4dCA9IGxheW91dFRlc3RDb250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgpOwotICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgICAgICAgICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJ0cmVlJykuaW5uZXJUZXh0ID0gdGVz
dFJ1bm5lci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCh0cnVlKTsKICAgICAgICAgfQogICAgIH0KICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cignbG9hZCcsIGRvVGVzdCwgZmFsc2UpOwpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
cnRsL3J0bC1maXhlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5n
L3J0bC9ydGwtZml4ZWQuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvcnRsL3J0bC1maXhlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgs
MTAgQEAKIDwvc3R5bGU+CiA8c2NyaXB0PgogICAgIGZ1bmN0aW9uIGRvVGVzdCgpIHsKLSAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKICAgICAgICAgICAgIGlmICh0b3AgPT0gc2VsZikKLSAgICAgICAgICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJ0cmVlJykuaW5uZXJUZXh0ID0gbGF5
b3V0VGVzdENvbnRyb2xsZXIubGF5ZXJUcmVlQXNUZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOworICAgICAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdsYXllcnRyZWUnKS5pbm5lclRleHQgPSB0ZXN0UnVubmVyLmxheWVy
VHJlZUFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwog
ICAgICAgICB9CiAgICAgfQogICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZG9U
ZXN0LCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9ydGwvcnRsLWlmcmFt
ZS1hYnNvbHV0ZS1vdmVyZmxvdy1zY3JvbGxlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2NvbXBvc2l0aW5nL3J0bC9ydGwtaWZyYW1lLWFic29sdXRlLW92ZXJmbG93LXNjcm9sbGVk
Lmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3J0bC9y
dGwtaWZyYW1lLWFic29sdXRlLW92ZXJmbG93LXNjcm9sbGVkLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTIyLDkgKzIyLDkgQEAKIDwvc3R5bGU+CiA8c2NyaXB0PgogICAgIGZ1bmN0aW9uIGRvVGVz
dCgpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVydHJlZScpLmlubmVyVGV4dCA9IGxh
eW91dFRlc3RDb250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgpOwotICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJ0cmVl
JykuaW5uZXJUZXh0ID0gdGVzdFJ1bm5lci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKICAgICAgICAgfQogICAgIH0KICAgICB3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGRvVGVzdCwgZmFsc2UpOwpJbmRleDogTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvcnRsL3J0bC1pZnJhbWUtYWJzb2x1dGUtb3ZlcmZsb3cuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9ydGwvcnRsLWlmcmFtZS1hYnNv
bHV0ZS1vdmVyZmxvdy5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9ydGwvcnRsLWlmcmFtZS1hYnNvbHV0ZS1vdmVyZmxvdy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0yMiw5ICsyMiw5IEBACiA8L3N0eWxlPgogPHNjcmlwdD4KICAgICBmdW5jdGlvbiBk
b1Rlc3QoKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnRyZWUnKS5pbm5lclRleHQg
PSBsYXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKLSAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVy
dHJlZScpLmlubmVyVGV4dCA9IHRlc3RSdW5uZXIubGF5ZXJUcmVlQXNUZXh0KCk7CisgICAgICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAg
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBkb1Rlc3QsIGZhbHNlKTsKSW5kZXg6IExh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL3J0bC9ydGwtaWZyYW1lLWFic29sdXRlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcnRsL3J0bC1pZnJhbWUtYWJzb2x1dGUu
aHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcnRsL3J0
bC1pZnJhbWUtYWJzb2x1dGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjIsOSArMjIsOSBAQAog
PC9zdHlsZT4KIDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24gZG9UZXN0KCkgewotICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnbGF5ZXJ0cmVlJykuaW5uZXJUZXh0ID0gbGF5b3V0VGVzdENvbnRyb2xsZXIu
bGF5ZXJUcmVlQXNUZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KHRydWUpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnRyZWUnKS5pbm5lclRleHQgPSB0ZXN0
UnVubmVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KHRydWUpOwogICAgICAgICB9CiAgICAgfQogICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVy
KCdsb2FkJywgZG9UZXN0LCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9y
dGwvcnRsLWlmcmFtZS1maXhlZC1vdmVyZmxvdy1zY3JvbGxlZC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3J0bC9ydGwtaWZyYW1lLWZpeGVkLW92ZXJmbG93LXNj
cm9sbGVkLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5n
L3J0bC9ydGwtaWZyYW1lLWZpeGVkLW92ZXJmbG93LXNjcm9sbGVkLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTIyLDkgKzIyLDkgQEAKIDwvc3R5bGU+CiA8c2NyaXB0PgogICAgIGZ1bmN0aW9uIGRv
VGVzdCgpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVydHJlZScpLmlubmVyVGV4dCA9
IGxheW91dFRlc3RDb250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgpOwotICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJ0
cmVlJykuaW5uZXJUZXh0ID0gdGVzdFJ1bm5lci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKICAgICAgICAgfQogICAgIH0KICAgICB3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGRvVGVzdCwgZmFsc2UpOwpJbmRleDogTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvcnRsL3J0bC1pZnJhbWUtZml4ZWQtb3ZlcmZsb3cuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9ydGwvcnRsLWlmcmFtZS1maXhl
ZC1vdmVyZmxvdy5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9ydGwvcnRsLWlmcmFtZS1maXhlZC1vdmVyZmxvdy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0yMiw5ICsyMiw5IEBACiA8L3N0eWxlPgogPHNjcmlwdD4KICAgICBmdW5jdGlvbiBkb1Rlc3Qo
KSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnRyZWUnKS5pbm5lclRleHQgPSBsYXlv
dXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKLSAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVydHJlZScp
LmlubmVyVGV4dCA9IHRlc3RSdW5uZXIubGF5ZXJUcmVlQXNUZXh0KCk7CisgICAgICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgd2luZG93
LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBkb1Rlc3QsIGZhbHNlKTsKSW5kZXg6IExheW91dFRl
c3RzL2NvbXBvc2l0aW5nL3J0bC9ydGwtaWZyYW1lLWZpeGVkLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcnRsL3J0bC1pZnJhbWUtZml4ZWQuaHRtbAkocmV2aXNp
b24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcnRsL3J0bC1pZnJhbWUtZml4
ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjIsOSArMjIsOSBAQAogPC9zdHlsZT4KIDxzY3Jp
cHQ+CiAgICAgZnVuY3Rpb24gZG9UZXN0KCkgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5
ZXJ0cmVlJykuaW5uZXJUZXh0ID0gbGF5b3V0VGVzdENvbnRyb2xsZXIubGF5ZXJUcmVlQXNUZXh0
KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOwor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdsYXllcnRyZWUnKS5pbm5lclRleHQgPSB0ZXN0UnVubmVyLmxheWVyVHJl
ZUFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogICAg
ICAgICB9CiAgICAgfQogICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZG9UZXN0
LCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9ydGwvcnRsLWlmcmFtZS1y
ZWxhdGl2ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3J0bC9y
dGwtaWZyYW1lLXJlbGF0aXZlLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL3J0bC9ydGwtaWZyYW1lLXJlbGF0aXZlLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDkgKzMxLDkgQEAKIDwvc3R5bGU+CiA8c2NyaXB0PgogICAgIGZ1bmN0aW9uIGRvVGVz
dCgpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVydHJlZScpLmlubmVyVGV4dCA9IGxh
eW91dFRlc3RDb250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgpOwotICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJ0cmVl
JykuaW5uZXJUZXh0ID0gdGVzdFJ1bm5lci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKICAgICAgICAgfQogICAgIH0KICAgICB3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGRvVGVzdCwgZmFsc2UpOwpJbmRleDogTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvcnRsL3J0bC1yZWxhdGl2ZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL3J0bC9ydGwtcmVsYXRpdmUuaHRtbAkocmV2aXNpb24gMTE5
OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcnRsL3J0bC1yZWxhdGl2ZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMsMTAgQEAKIDwvc3R5bGU+CiA8c2NyaXB0PgogICAg
IGZ1bmN0aW9uIGRvVGVzdCgpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgICAgIGlm
ICh0b3AgPT0gc2VsZikKLSAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
bGF5ZXJ0cmVlJykuaW5uZXJUZXh0ID0gbGF5b3V0VGVzdENvbnRyb2xsZXIubGF5ZXJUcmVlQXNU
ZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUp
OworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnRyZWUnKS5p
bm5lclRleHQgPSB0ZXN0UnVubmVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogICAgICAgICB9CiAgICAgfQogICAgIHdpbmRvdy5h
ZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZG9UZXN0LCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9zY2FsaW5nL3RpbGVkLWxheWVyLXJlY3Vyc2lvbi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3NjYWxpbmcvdGlsZWQtbGF5ZXItcmVjdXJz
aW9uLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3Nj
YWxpbmcvdGlsZWQtbGF5ZXItcmVjdXJzaW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDgg
KzExLDggQEAKICAgICB9CiAgIDwvc3R5bGU+CiAgIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQodHJ1ZSk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KHRydWUpOwogCiAgICAgZnVuY3Rpb24gc2NhbGVQYWdlKCkKICAgICB7CkluZGV4
OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvY29uc3RyYWluZWQtbGF5ZXItc2l6ZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGluZy9jb25zdHJh
aW5lZC1sYXllci1zaXplLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL3RpbGluZy9jb25zdHJhaW5lZC1sYXllci1zaXplLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTE1LDE1ICsxNSwxNSBAQAogICAgICAgICB9CiAgICAgPC9zdHlsZT4KICAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogICAgICAgICBmdW5jdGlv
biB0ZXN0T25Mb2FkKCkKICAgICAgICAgewogICAgICAgICAgICAgLy8gV2FpdCBmb3IgYSBsYXll
ciB1cGRhdGUgYW5kIHRoZSB0aWxlZCBsYXllciB0byBmaWxsIGluLgogICAgICAgICAgICAgd2lu
ZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgd2luZG93LnNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CiAgICAgICAgICAgICAgICAgfSwgMCk7CiAgICAgICAgICAgICB9LCAwKTsKICAgICAg
ICAgfQpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5nL2NyYXNoLWh1Z2UtbGF5
ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvY3Jh
c2gtaHVnZS1sYXllci5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21w
b3NpdGluZy90aWxpbmcvY3Jhc2gtaHVnZS1sYXllci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDcgKzEsNyBAQAogPCFET0NUWVBFIGh0bWw+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8cD5UaGlzIGlzIGEgdGVzdCBmb3IgPGEgaHJlZj0iaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NjM3Ij5CdWcgNjU2Mzc6IENy
YXNoIGJlbmVhdGggUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OnVwZGF0ZVRpbGVzIHdoZW4g
em9vbWluZyBvbiBHb29nbGUgTWFwczwvYT4uIFRoZSB0ZXN0IHBhc3NlcyBpZiB0aGUgYnJvd3Nl
ciBkb2VzIG5vdCBjcmFzaC48L3A+CiA8ZGl2IHN0eWxlPSJ3aWR0aDogMzM1NTQ0MzJweDsgaGVp
Z2h0OiAzMzU1NDQzMnB4OyAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsiPkRpZCB5
b3UgY3Jhc2g/PC9kaXY+CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvY3Jh
c2gtcmVwYXJlbnQtdGlsZWQtbGF5ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9j
b21wb3NpdGluZy90aWxpbmcvY3Jhc2gtcmVwYXJlbnQtdGlsZWQtbGF5ZXIuaHRtbAkocmV2aXNp
b24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5nL2NyYXNoLXJlcGFy
ZW50LXRpbGVkLWxheWVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDkgKzI0LDkgQEAKICAg
ICB9CiAgICAgPC9zdHlsZT4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hh
cnNldD0idXRmLTgiPgotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgcmVzdWx0ID0gIiI7CkBAIC0zOCw5ICszOCw5IEBACiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgLy8gTGV0IGl0IHJlbmRlcgogICAgICAgICAgICAgICAg
IHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJzJykuaW5uZXJIVE1MID0gbGF5b3V0VGVzdENv
bnRyb2xsZXIubGF5ZXJUcmVlQXNUZXh0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2xheWVycycpLmlubmVySFRNTCA9IHRlc3RSdW5uZXIubGF5ZXJUcmVlQXNU
ZXh0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0sIDApOwogICAgICAgICAg
ICAgfSwgMCk7CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXll
ci1hZGQtcmVtb3ZlLWNoaWxkLmh0bWwtZGlzYWJsZWQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXItYWRkLXJlbW92ZS1jaGlsZC5odG1sLWRp
c2FibGVkCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxp
bmcvaHVnZS1sYXllci1hZGQtcmVtb3ZlLWNoaWxkLmh0bWwtZGlzYWJsZWQJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDkgKzI3LDkgQEAKICAgICAKICAgICA8L3N0eWxlPgogICAgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICByZXN1bHQgPSAiIjsKQEAgLTM4
LDggKzM4LDggQEAKICAgICAgICAgewogICAgICAgICAgICAgLy8gRmlyc3Qgd2l0aCBubyBraWRz
CiAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAg
ICByZXN1bHQgPSAiRmlyc3QgKG5vIGNoaWxkcmVuKTo8YnI+IiArIGxheW91dFRlc3RDb250cm9s
bGVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gIkZpcnN0IChubyBjaGlsZHJlbik6
PGJyPiIgKyB0ZXN0UnVubmVyLmxheWVyVHJlZUFzVGV4dCgpOwogICAgICAgICAgICAgfSwgMCk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFNlY29uZCBhZGQga2lkCkBAIC01MCw4ICs1
MCw4IEBACiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgLy8gTGV0IGl0IHJlbmRl
cgogICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0ICs9ICI8YnI+PGJyPlNlY29uZCAoY2hpbGQgYWRkZWQpOjxi
cj4iICsgbGF5b3V0VGVzdENvbnRyb2xsZXIubGF5ZXJUcmVlQXNUZXh0KCk7CisgICAgICAgICAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdCArPSAiPGJyPjxicj5TZWNvbmQgKGNoaWxkIGFkZGVkKTo8YnI+IiArIHRlc3RSdW5u
ZXIubGF5ZXJUcmVlQXNUZXh0KCk7CiAgICAgICAgICAgICAgICAgfSwgMCk7CiAgICAgICAgICAg
ICB9LCAxMDApOwogICAgICAgICAgICAgCkBAIC02MiwxMCArNjIsMTAgQEAKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAvLyBMZXQgaXQgcmVuZGVyCiAgICAgICAgICAgICAgICAg
d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdCArPSAiPGJyPjxicj5UaGlyZCAoY2hpbGQgcmVtb3ZlZCk6PGJyPiIgKyBsYXlvdXRUZXN0
Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIjxi
cj48YnI+VGhpcmQgKGNoaWxkIHJlbW92ZWQpOjxicj4iICsgdGVzdFJ1bm5lci5sYXllclRyZWVB
c1RleHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdsYXllcnMnKS5pbm5lckhUTUwgPSByZXN1bHQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIH0sIDApOwogICAgICAgICAgICAgfSwgMjAwKTsKSW5kZXg6IExheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLWltZy5odG1sLWRpc2FibGVkCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLWltZy5odG1s
LWRpc2FibGVkCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy90
aWxpbmcvaHVnZS1sYXllci1pbWcuaHRtbC1kaXNhYmxlZAkod29ya2luZyBjb3B5KQpAQCAtMTQs
OSArMTQsOSBAQAogICAgIH0KICAgICA8L3N0eWxlPgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQodHJ1ZSk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KHRydWUpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiB0ZXN0T25Mb2FkKCkKQEAgLTMz
LDkgKzMzLDkgQEAKICAgICAgICAgICAgIGltZy5zcmMgPSBjYW52YXMudG9EYXRhVVJMKCk7CiAK
ICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVycycpLmlubmVySFRNTCA9IGxheW91dFRl
c3RDb250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgpOwotICAgICAgICAgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdsYXllcnMnKS5pbm5lckhUTUwgPSB0ZXN0UnVubmVyLmxheWVyVHJlZUFzVGV4dCgpOwor
ICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9LCAwKTsKICAgICAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXItcmVzaXplLmh0bWwtZGlzYWJsZWQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXItcmVzaXpl
Lmh0bWwtZGlzYWJsZWQJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0
aW5nL3RpbGluZy9odWdlLWxheWVyLXJlc2l6ZS5odG1sLWRpc2FibGVkCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw4ICsyNiw4IEBACiAgICAgfQogICAgIDwvc3R5bGU+CiAgICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgIAogICAgICAgICBmdW5jdGlvbiB0ZXN0
T25Mb2FkKCkKICAgICAgICAgewpAQCAtNDcsMTUgKzQ3LDE1IEBACiAKICAgICAgICAgZnVuY3Rp
b24gcmVjb3JkTGF5ZXJUcmVlKG1lc3NhZ2VQcmVmaXgpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgaWYgKCF3aW5k
b3cudGVzdFJ1bm5lcikKICAgICAgICAgICAgICAgICByZXR1cm4gIiI7CiAKICAgICAgICAgICAg
IC8vIEZvcmNlIGEgbGF5b3V0IGFuZCBhIHBhaW50IHRvIG1ha2Ugc3VyZSB0aGUgY29tcG9zaXRp
bmcgbGF5ZXJzCiAgICAgICAgICAgICAvLyBoYXZlIGJlZW4gdXBkYXRlZC4KICAgICAgICAgICAg
IGRvY3VtZW50LmJvZHkub2Zmc2V0TGVmdDsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmRpc3BsYXkoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOwogCi0gICAg
ICAgICAgICByZXR1cm4gbWVzc2FnZVByZWZpeCArIGxheW91dFRlc3RDb250cm9sbGVyLmxheWVy
VHJlZUFzVGV4dCgpOworICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2VQcmVmaXggKyB0ZXN0UnVu
bmVyLmxheWVyVHJlZUFzVGV4dCgpOwogICAgICAgICB9CiAgICAgICAKICAgICAgICAgd2luZG93
LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCB0ZXN0T25Mb2FkLCBmYWxzZSk7CkluZGV4OiBMYXlv
dXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci13aXRoLWxheWVyLWNoaWxkcmVu
LXJlc2l6ZS5odG1sLWRpc2FibGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0
aW5nL3RpbGluZy9odWdlLWxheWVyLXdpdGgtbGF5ZXItY2hpbGRyZW4tcmVzaXplLmh0bWwtZGlz
YWJsZWQJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGlu
Zy9odWdlLWxheWVyLXdpdGgtbGF5ZXItY2hpbGRyZW4tcmVzaXplLmh0bWwtZGlzYWJsZWQJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDkgKzMzLDkgQEAKICAgICB9ICAgCiAgICAgPC9zdHlsZT4KICAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgcmVzdWx0
ID0gIiI7CkBAIC00NCw4ICs0NCw4IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFNtYWxs
IGxheWVyIGZpcnN0CiAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICAgICAgICAgICAgICByZXN1bHQgPSAiRmlyc3QgKHNtYWxsIGxheWVyKTo8YnI+IiArIGxheW91
dFRlc3RDb250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgICAgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gIkZpcnN0IChz
bWFsbCBsYXllcik6PGJyPiIgKyB0ZXN0UnVubmVyLmxheWVyVHJlZUFzVGV4dCgpOwogICAgICAg
ICAgICAgfSwgMCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEh1Z2UgbGF5ZXIgc2Vj
b25kCkBAIC01NSw4ICs1NSw4IEBACiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
Ly8gTGV0IGl0IHJlbmRlcgogICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICI8YnI+PGJyPlNlY29uZCAo
aHVnZSBsYXllcik6PGJyPiIgKyBsYXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQo
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0ICs9ICI8YnI+PGJyPlNlY29uZCAoaHVnZSBsYXllcik6PGJy
PiIgKyB0ZXN0UnVubmVyLmxheWVyVHJlZUFzVGV4dCgpOwogICAgICAgICAgICAgICAgIH0sIDAp
OwogICAgICAgICAgICAgfSwgMTAwKTsKICAgICAgICAgICAgIApAQCAtNjcsMTAgKzY3LDEwIEBA
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgLy8gTGV0IGl0IHJlbmRlcgogICAg
ICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICByZXN1bHQgKz0gIjxicj48YnI+VGhpcmQgKHNtYWxsIGxheWVyKTo8YnI+IiAr
IGxheW91dFRlc3RDb250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgICAgICAgICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdCArPSAiPGJyPjxicj5UaGlyZCAoc21hbGwgbGF5ZXIpOjxicj4iICsgdGVzdFJ1bm5lci5s
YXllclRyZWVBc1RleHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdsYXllcnMnKS5pbm5lckhUTUwgPSByZXN1bHQ7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIH0sIDApOwogICAgICAgICAgICAgfSwgMjAwKTsKSW5kZXg6IExh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLXdpdGgtbGF5ZXItY2hpbGRy
ZW4uaHRtbC1kaXNhYmxlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy90
aWxpbmcvaHVnZS1sYXllci13aXRoLWxheWVyLWNoaWxkcmVuLmh0bWwtZGlzYWJsZWQJKHJldmlz
aW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVy
LXdpdGgtbGF5ZXItY2hpbGRyZW4uaHRtbC1kaXNhYmxlZAkod29ya2luZyBjb3B5KQpAQCAtMzIs
OSArMzIsOSBAQAogICAgIH0gICAKICAgICA8L3N0eWxlPgogICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gdGVzdE9uTG9hZCgpCkBAIC00Miw5ICs0
Miw5IEBACiAgICAgICAgICAgICAvLyBXYWl0IGZvciBhIGxheWVyIHVwZGF0ZSBhbmQgdGhlIHRp
bGVkIGxheWVyIHRvIGZpbGwgaW4uCiAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5j
dGlvbigpIHsKICAgICAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVycycp
LmlubmVySFRNTCA9IGxheW91dFRlc3RDb250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5pbm5lckhUTUwg
PSB0ZXN0UnVubmVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9LCAwKTsKICAgICAgICAgICAgIH0sIDApOwpJbmRleDogTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXIuaHRtbC1kaXNhYmxlZAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci5odG1sLWRpc2FibGVkCShy
ZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvaHVnZS1s
YXllci5odG1sLWRpc2FibGVkCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSw5IEBACiAgICAg
fSAgIAogICAgIDwvc3R5bGU+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNo
YXJzZXQ9InV0Zi04Ij4KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgIH0KIAog
ICAgICAgICBmdW5jdGlvbiB0ZXN0T25Mb2FkKCkKQEAgLTQxLDkgKzQxLDkgQEAKICAgICAgICAg
ICAgIC8vIFdhaXQgZm9yIGEgbGF5ZXIgdXBkYXRlIGFuZCB0aGUgdGlsZWQgbGF5ZXIgdG8gZmls
bCBpbi4KICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJzJykuaW5uZXJIVE1MID0gbGF5
b3V0VGVzdENvbnRyb2xsZXIubGF5ZXJUcmVlQXNUZXh0KCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVycycpLmlubmVySFRNTCA9IHRlc3RSdW5uZXIubGF5
ZXJUcmVlQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0sIDApOwog
ICAgICAgICAgICAgfSwgMCk7CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy90cmFuc2l0
aW9ucy9vcGFjaXR5LW9uLWlubGluZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL3RyYW5zaXRpb25zL29wYWNpdHktb24taW5saW5lLmh0bWwJKHJldmlzaW9uIDEx
OTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3RyYW5zaXRpb25zL29wYWNpdHktb24t
aW5saW5lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE1LDggKzE1LDggQEAKICAgICB9CiAgIDwv
c3R5bGU+CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVy
KCdsb2FkJywgZnVuY3Rpb24oKSB7CiAgICAgICB2YXIgdGVzdFNwYW4gPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZmFkZXInKTsKSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3ZpZGVv
L3ZpZGVvLWJhY2tncm91bmQtY29sb3IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9j
b21wb3NpdGluZy92aWRlby92aWRlby1iYWNrZ3JvdW5kLWNvbG9yLmh0bWwJKHJldmlzaW9uIDEx
OTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVvLWJhY2tncm91bmQt
Y29sb3IuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjEsOCArMjEsOCBAQAogICAgIH0KICAgPC9z
dHlsZT4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4K
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICA8L3NjcmlwdD4KIDwvaGVhZD4KIDxi
b2R5PgpAQCAtMzgsOCArMzgsOCBAQAogICAgIHZhciB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCd2aWRlbycpWzBdOwogICAgIHZpZGVvLnNyYyA9ICcuLi9yZXNvdXJjZXMv
YWxwaGEtZ3JhZGllbnQtc21hbGwuJyArICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vb2dnJykg
PyAnb2d2JyA6ICdtb3YnKTsKICAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdjYW5wbGF5dGhy
b3VnaCcsIGZ1bmN0aW9uKCkgewotICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAg
ICB9LCBmYWxzZSk7CiAgIDwvc2NyaXB0PgogCkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy92aWRlby92aWRlby1wb3N0ZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2NvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVvLXBvc3Rlci1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVvLXBvc3Rlci1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiBBIDx2aWRlbz4gc2hv
dWxkIG5vdCBoYXZlIGEgbGF5ZXIgdW50aWwgcGxheWJhY2sgYmVnaW5zLgotVGhpcyB0ZXN0IGNh
biBub3QgYmUgcnVuIG1hbnVhbGx5LCBpdCByZXF1aXJlcyBsYXlvdXRUZXN0Q29udHJvbGxlci5s
YXllclRyZWVBc1RleHQuCitUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gbWFudWFsbHksIGl0IHJl
cXVpcmVzIHRlc3RSdW5uZXIubGF5ZXJUcmVlQXNUZXh0LgogCiBObyBzcmMsIG5vIHBvc3RlciAK
IMKgwqBQQVNTOiB3YW50cyBsYXllcnMgPSBmYWxzZSwgaGFzIGxheWVycyA9IGZhbHNlCkluZGV4
OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy92aWRlby92aWRlby1wb3N0ZXIuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy92aWRlby92aWRlby1wb3N0ZXIuaHRtbAko
cmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdmlkZW8vdmlkZW8t
cG9zdGVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDggKzEyLDggQEAKIAogICAgICAgICAg
ICAgZnVuY3Rpb24gaGFzTGF5ZXJzKCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbGF5b3V0VGVzdENvbnRyb2xsZXIubGF5ZXJUcmVlQXNUZXh0KCkgIT0gIiI7CisgICAgICAg
ICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdGVzdFJ1bm5lci5sYXllclRyZWVBc1RleHQoKSAhPSAiIjsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAKQEAgLTQxLDE1ICs0MSwxNSBAQAogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNlZWtl
ZCI6CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0xheWVycygiRGlzcGxheWluZyBtb3Zp
ZSIsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcignbG9hZCcsIGxheWVyVGVzdCwgZmFsc2UpOwogICAgICAgICA8L3NjcmlwdD4KQEAg
LTU5LDcgKzU5LDcgQEAKICAgICAgICAgPHZpZGVvIG9uY2FucGxheXRocm91Z2g9ImxheWVyVGVz
dCgpIiBvbnNlZWtlZD0ibGF5ZXJUZXN0KCkiPjwvdmlkZW8+CiAgICAgICAgIAogICAgICAgICA8
cD5BICZsdDt2aWRlbyZndDsgc2hvdWxkIG5vdCBoYXZlIGEgbGF5ZXIgdW50aWwgcGxheWJhY2sg
YmVnaW5zLjxicj4KLSAgICAgICAgVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIG1hbnVhbGx5LCBp
dCByZXF1aXJlcyBsYXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQuPC9wPgorICAg
ICAgICBUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gbWFudWFsbHksIGl0IHJlcXVpcmVzIHRlc3RS
dW5uZXIubGF5ZXJUcmVlQXNUZXh0LjwvcD4KICAgICAgICAgPHAgaWQ9InJlc3VsdCI+PC9wPgog
ICAgIAogICAgIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3ZpZGVvL3Zp
ZGVvLXdpdGgtaW52YWxpZC1zb3VyY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9j
b21wb3NpdGluZy92aWRlby92aWRlby13aXRoLWludmFsaWQtc291cmNlLmh0bWwJKHJldmlzaW9u
IDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVvLXdpdGgtaW52
YWxpZC1zb3VyY2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDwhRE9DVFlQ
RSBodG1sPg0KIDxzY3JpcHQ+DQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgew0K
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7DQotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsNCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsNCisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7DQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOw0KIH0NCiANCiBmdW5jdGlvbiB0ZXN0KCkgew0KQEAgLTEyLDExICsxMiwxMSBAQCBmdW5j
dGlvbiB0ZXN0KCkgew0KICAgICBzcmMuc3JjID0gIm5vdGFyZWFsc291cmNlLnR4dCI7DQogICAg
IHYuYXBwZW5kQ2hpbGQoc3JjKTsNCiAgICAgc3JjLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwg
ZnVuY3Rpb24oKSB7DQotICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsN
Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kaXNwbGF5KCk7DQorICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgew0KKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgp
Ow0KICAgICAgICAgICAgIC8vIElmIHdlIGRpZG4ndCBjcmFzaCBoZXJlLCB5YXkhICBUZXN0IGlz
IGEgc3VjY2Vzcw0KICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoIlBBU1MiKSk7DQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOw0KKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
Ow0KICAgICAgICAgfQ0KICAgICB9LCBmYWxzZSk7DQogfQ0KSW5kZXg6IExheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL3Zpc2liaWxpdHkvY29tcG9zaXRpbmctYW5kLXZpc2liaWxpdHktdHVybmVkLW9m
Zi10b2dldGhlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3Zp
c2liaWxpdHkvY29tcG9zaXRpbmctYW5kLXZpc2liaWxpdHktdHVybmVkLW9mZi10b2dldGhlci5o
dG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy92aXNpYmls
aXR5L2NvbXBvc2l0aW5nLWFuZC12aXNpYmlsaXR5LXR1cm5lZC1vZmYtdG9nZXRoZXIuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDkgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0Pgot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIGZ1bmN0aW9uIGRvdGVzdCgp
CiB7CkBAIC0xMyw4ICsxMyw4IEBAIGZ1bmN0aW9uIGRvdGVzdCgpCiAgICAgLy8gZm9yY2UgbGF5
b3V0CiAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CiAKLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKIH0KIDwvc2NyaXB0PgogPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvdmlzaWJpbGl0eS9oaWRkZW4taWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvdmlzaWJpbGl0eS9oaWRkZW4taWZyYW1lLmh0bWwJKHJldmlzaW9u
IDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3Zpc2liaWxpdHkvaGlkZGVuLWlm
cmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDkgKzcsOSBAQAogICAgICAgfQogICAgIDwv
c3R5bGU+CiAgICAgPHNjcmlwdD4KLSAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICB9CiAKICAgICAgIC8v
IENhbGxlZCBmcm9tIHN1YmZyYW1lLgpAQCAtMTgsOCArMTgsOCBAQAogICAgICAgICAvLyBUaGlz
IHRpbWVvdXQgaXMgbmVjZXNzYXJ5IHRvIGRldGVjdCB0aGUgaGFuZy4KICAgICAgICAgd2luZG93
LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Jlc3VsdHMnKS5pbm5lclRleHQgPSAnUEFTUzogdGVzdCBkaWQgbm90IGhhbmcuJzsKLSAg
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9
LCAwKTsKICAgICAgIH0KICAgICA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0
aW5nL3Zpc2liaWxpdHkvbGF5ZXItdmlzaWJsZS1jb250ZW50Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdmlzaWJpbGl0eS9sYXllci12aXNpYmxlLWNvbnRlbnQu
aHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdmlzaWJp
bGl0eS9sYXllci12aXNpYmxlLWNvbnRlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTMg
KzQxLDEzIEBACiAgICAgfQogICA8L3N0eWxlPgogICA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQodHJ1ZSk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAgICAgCiAgICAgZnVuY3Rpb24gZHVtcExheWVycygpCiAg
ICAgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVyLXRyZWUnKS5pbm5lclRleHQgPSBsYXlv
dXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVyLXRy
ZWUnKS5pbm5lclRleHQgPSB0ZXN0UnVubmVyLmxheWVyVHJlZUFzVGV4dCgpOwogICAgIH0KICAg
ICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGR1bXBMYXllcnMsIGZhbHNlKTsKICAg
PC9zY3JpcHQ+CkBAIC02OCw0ICs2OCw0IEBACiAgIDwvZGl2PgogPHByZSBpZD0ibGF5ZXItdHJl
ZSI+TGF5ZXIgdHJlZSBnb2VzIGhlcmUgaW4gRFJUPC9wcmU+CiA8L2JvZHk+Ci08L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvdmlzaWJpbGl0eS92aXNpYmlsaXR5LWltYWdlLWxheWVycy1keW5hbWljLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdmlzaWJpbGl0eS92aXNpYmls
aXR5LWltYWdlLWxheWVycy1keW5hbWljLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91
dFRlc3RzL2NvbXBvc2l0aW5nL3Zpc2liaWxpdHkvdmlzaWJpbGl0eS1pbWFnZS1sYXllcnMtZHlu
YW1pYy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00NiwzMCArNDYsMzAgQEAKICAgICB9CiAgIDwv
c3R5bGU+CiAgIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBkb1Rlc3QoKQogICAgIHsKLSAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdsYXllcnMxJykuaW5uZXJUZXh0ID0gbGF5b3V0VGVzdENvbnRyb2xsZXIu
bGF5ZXJUcmVlQXNUZXh0KCk7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMxJykuaW5uZXJUZXh0ID0gdGVzdFJ1bm5l
ci5sYXllclRyZWVBc1RleHQoKTsKIAogICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7CiAgICAgICAgIHZhciBmaXJzdEltYWdlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgn
aW1nJylbMF07CiAgICAgICAgIGZpcnN0SW1hZ2Uuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxl
JzsKIAotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMyJykuaW5uZXJUZXh0ID0gbGF5b3V0VGVz
dENvbnRyb2xsZXIubGF5ZXJUcmVlQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJzMicpLmlubmVy
VGV4dCA9IHRlc3RSdW5uZXIubGF5ZXJUcmVlQXNUZXh0KCk7CiAKICAgICAgICAgICB3aW5kb3cu
c2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHZhciBzZWNvbmRDb250YWluZXIg
PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY29udGFpbmVyJylbMV07CiAgICAgICAgICAg
ICBzZWNvbmRDb250YWluZXIuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJzsKIAotICAgICAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJzMycpLmlubmVyVGV4dCA9IGxheW91dFRlc3RD
b250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgpOwotICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVyczMnKS5pbm5l
clRleHQgPSB0ZXN0UnVubmVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICB9LCAwKTsKICAg
ICAgIH0sIDApOwpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdmlzaWJpbGl0eS92aXNp
YmlsaXR5LWltYWdlLWxheWVycy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBv
c2l0aW5nL3Zpc2liaWxpdHkvdmlzaWJpbGl0eS1pbWFnZS1sYXllcnMuaHRtbAkocmV2aXNpb24g
MTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdmlzaWJpbGl0eS92aXNpYmlsaXR5
LWltYWdlLWxheWVycy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw4IEBACiAgICAg
fQogICA8L3N0eWxlPgogICA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVl
KTsKICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2NvbXBv
c2l0aW5nL3Zpc2liaWxpdHkvdmlzaWJpbGl0eS1zaW1wbGUtY2FudmFzMmQtbGF5ZXIuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy92aXNpYmlsaXR5L3Zpc2liaWxp
dHktc2ltcGxlLWNhbnZhczJkLWxheWVyLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91
dFRlc3RzL2NvbXBvc2l0aW5nL3Zpc2liaWxpdHkvdmlzaWJpbGl0eS1zaW1wbGUtY2FudmFzMmQt
bGF5ZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsOCBAQAogICAgIDwvc3R5bGU+
CiAKICAgICA8c2NyaXB0PgotICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOworICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0
cnVlKTsKIAogICAgICAgZnVuY3Rpb24gZHJhd0NhbnZhcyhjYW52YXNJRCwgY29sb3IpCiAgICAg
ICB7CkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy92aXNpYmlsaXR5L3Zpc2liaWxpdHkt
c2ltcGxlLXZpZGVvLWxheWVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvdmlzaWJpbGl0eS92aXNpYmlsaXR5LXNpbXBsZS12aWRlby1sYXllci5odG1sCShyZXZp
c2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy92aXNpYmlsaXR5L3Zpc2li
aWxpdHktc2ltcGxlLXZpZGVvLWxheWVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE0ICsz
MSwxNCBAQAogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWVkaWEtdGVzdGluZy5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL21lZGlhL21lZGlhLWZpbGUuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYt
OCI+Ci0gICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogCiAgICAg
ICB2YXIgY291bnRlciA9IDA7CiAgICAgICBmdW5jdGlvbiBub3RpZnlWaWRlb0RvbmUoKSB7CiAg
ICAgICAgICAgY291bnRlciA9IGNvdW50ZXIgKyAxOwotICAgICAgICAgIGlmICgoY291bnRlciA9
PT0gMykgJiYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikpCi0gICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICBpZiAoKGNvdW50ZXIg
PT09IDMpICYmICh3aW5kb3cudGVzdFJ1bm5lcikpCisgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogICAgICAgfQogCiAgICAgICBmdW5jdGlvbiBkb1Rlc3QoKQpJbmRleDog
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdmlzaWJpbGl0eS92aXNpYmlsaXR5LXNpbXBsZS13ZWJn
bC1sYXllci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3Zpc2li
aWxpdHkvdmlzaWJpbGl0eS1zaW1wbGUtd2ViZ2wtbGF5ZXIuaHRtbAkocmV2aXNpb24gMTE5OTQ2
KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdmlzaWJpbGl0eS92aXNpYmlsaXR5LXNpbXBs
ZS13ZWJnbC1sYXllci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw5ICsxNiw5IEBACiAgICAg
PC9zdHlsZT4KIAogICAgIDxzY3JpcHQ+Ci0gICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7Ci0gICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVl
KTsKLSAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldl
YktpdFdlYkdMRW5hYmxlZCIsICIxIik7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CisgICAgICAgICAgdGVzdFJ1
bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFdlYkdMRW5hYmxlZCIsICIxIik7CiAgICAg
ICB9CiAKICAgICAgIGZ1bmN0aW9uIGRyYXdDYW52YXMoY2FudmFzSUQsIGNsZWFyQ29sb3IpCklu
ZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy93ZWJnbC93ZWJnbC1iYWNrZ3JvdW5kLWNvbG9y
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvd2ViZ2wvd2ViZ2wt
YmFja2dyb3VuZC1jb2xvci5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9j
b21wb3NpdGluZy93ZWJnbC93ZWJnbC1iYWNrZ3JvdW5kLWNvbG9yLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTIyLDggKzIyLDggQEAKICAgICAgIH0KICAgICA8L3N0eWxlPgogICAgIDxzY3JpcHQ+
Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFdlYkdMRW5hYmxl
ZCIsICIxIik7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRXZWJHTEVuYWJsZWQiLCAiMSIpOwog
CiAgICAgICAgIGZ1bmN0aW9uIGluaXRXZWJHTChjYW52YXNOYW1lLCB2c2hhZGVyLCBmc2hhZGVy
LCBhdHRyaWJzLCBjbGVhckNvbG9yLCBjbGVhckRlcHRoKQogICAgICAgICB7CkluZGV4OiBMYXlv
dXRUZXN0cy9jb21wb3NpdGluZy93ZWJnbC93ZWJnbC1uby1hbHBoYS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3dlYmdsL3dlYmdsLW5vLWFscGhhLmh0bWwJKHJl
dmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3dlYmdsL3dlYmdsLW5v
LWFscGhhLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIxLDkgKzIxLDkgQEAKICAgICAgIH0KICAg
ICA8L3N0eWxlPgogICAgIDxzY3JpcHQ+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJl
ZmVyZW5jZSgiV2ViS2l0V2ViR0xFbmFibGVkIiwgIjEiKTsKLSAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktp
dFdlYkdMRW5hYmxlZCIsICIxIik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
dHJ1ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiBpbml0V2ViR0woY2FudmFzTmFt
ZSwgdnNoYWRlciwgZnNoYWRlciwgYXR0cmlicywgY2xlYXJDb2xvciwgY2xlYXJEZXB0aCkKSW5k
ZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3dlYmdsL3dlYmdsLW5vbnByZW11bHRpcGxpZWQt
YmxlbmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy93ZWJnbC93
ZWJnbC1ub25wcmVtdWx0aXBsaWVkLWJsZW5kLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL3dlYmdsL3dlYmdsLW5vbnByZW11bHRpcGxpZWQtYmxlbmQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsOCArMTMsOCBAQAogICAgICAgfQogICAgIDwvc3R5
bGU+CiAgICAgPHNjcmlwdD4KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgi
V2ViS2l0V2ViR0xFbmFibGVkIiwgIjEiKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICAgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFdlYkdM
RW5hYmxlZCIsICIxIik7CiAKICAgICAgICAgZnVuY3Rpb24gaW5pdFdlYkdMKGNhbnZhc05hbWUs
IHZzaGFkZXIsIGZzaGFkZXIsIGF0dHJpYnMsIGNsZWFyQ29sb3IsIGNsZWFyRGVwdGgsIHByZW11
bHRBbHBoYSkKICAgICAgICAgewpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvd2ViZ2wv
d2ViZ2wtcmVmbGVjdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0
aW5nL3dlYmdsL3dlYmdsLXJlZmxlY3Rpb24uaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvd2ViZ2wvd2ViZ2wtcmVmbGVjdGlvbi5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw4ICsyNyw4IEBACiAgICAgICB9CiAgICAgPC9zY3JpcHQ+CiAgICAgPHNj
cmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFdlYkdMRW5hYmxlZCIs
ICIxIik7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm92
ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0V2ViR0xFbmFibGVkIiwgIjEiKTsKIAogICAgIHZhciBn
bCA9IG51bGw7CiAKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0
aW5nLzNkLWNvcm5lcnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9jb21wb3NpdGluZy8zZC1jb3JuZXJzLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nLzNkLWNvcm5lcnMuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMzYsOCArMzYsOCBAQAogICAgIH0KICAgPC9zdHlsZT4KICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCh0cnVlKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAgIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgc3R5
bGU9Im92ZXJmbG93OmhpZGRlbiI+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9jb21wb3NpdGluZy9iYWNrZmFjZS12aXNpYmlsaXR5LXRyYW5zZm9ybWVkLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvYmFja2Zh
Y2UtdmlzaWJpbGl0eS10cmFuc2Zvcm1lZC5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9iYWNrZmFjZS12aXNpYmlsaXR5
LXRyYW5zZm9ybWVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM4LDggKzM4LDggQEAKICAgICAg
IDwvZGl2PgogICA8L2Rpdj4KICAgPHNjcmlwdD4KLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7ICAv
LyBUaGlzIGlzIG9ubHkgdXNlZnVsIGFzIGEgcGl4ZWwgdGVzdC4KKyAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOyAgLy8gVGhpcyBpcyBv
bmx5IHVzZWZ1bCBhcyBhIHBpeGVsIHRlc3QuCiAgICAgZG9jdW1lbnQud3JpdGUoIjxzcGFuIHN0
eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOi01MDAwcHgnPlRoaXMgdGVzdCBpcyBvbmx5IHVz
ZWZ1bCBhcyBhIHBpeGVsIHRlc3Q8L3NwYW4+Iik7CiAgIH0KICAgPC9zY3JpcHQ+CkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9jaGlsZC1sYXllci0zZC1z
b3J0aW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
Y29tcG9zaXRpbmcvY2hpbGQtbGF5ZXItM2Qtc29ydGluZy5odG1sCShyZXZpc2lvbiAxMTk5NDYp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9jaGlsZC1sYXll
ci0zZC1zb3J0aW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIyLDkgKzIyLDkgQEAKICAgICB9
CiA8L3N0eWxlPgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04
Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCh0cnVlKTsKICAgICB9CiAgICAgZnVuY3Rpb24gZG9UZXN0KCkKICAgICB7CkBAIC0z
Myw5ICszMyw5IEBACiAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAg
ICAgICAgICAgLy8gTW92ZSB0aGUgcGFyZW50IGZvcndhcmQKICAgICAgICAgICAgIGNoaWxkLnN0
eWxlLndlYmtpdFRyYW5zZm9ybSA9ICJ0cmFuc2xhdGVaKDEwcHgpIjsKLSAgICAgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgewogICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAg
ICAgICAgICAgIH0sIDApOwogICAgICAgICAgICAgfQogICAgICAgICB9LCAwKTsKSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2VtcHR5LXJlbmRlci1zdXJm
YWNlLWNyYXNoZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9jb21wb3NpdGluZy9lbXB0eS1yZW5kZXItc3VyZmFjZS1jcmFzaGVyLmh0bWwJKHJldmlz
aW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5n
L2VtcHR5LXJlbmRlci1zdXJmYWNlLWNyYXNoZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTgs
OCArMTgsOCBAQAogICAgIH0gICAgCiAgIDwvc3R5bGU+CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAg
PC9zY3JpcHQ+CiAKIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2NvbXBvc2l0aW5nL2h1Z2UtbGF5ZXItcm90YXRlZC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2h1Z2UtbGF5ZXItcm90YXRlZC5o
dG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9j
b21wb3NpdGluZy9odWdlLWxheWVyLXJvdGF0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEs
OCArMTEsOCBAQAogICAgIH0KICAgPC9zdHlsZT4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7
CiAgIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgc3R5bGU9Im92ZXJmbG93OmhpZGRlbiI+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9odWdlLW1hc2st
bGF5ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9j
b21wb3NpdGluZy9odWdlLW1hc2stbGF5ZXIuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvaHVnZS1tYXNrLWxheWVyLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTksOCArOSw4IEBACiAgICAgICAgICB9CiAgICAgIDwvc3R5
bGU+CiAgICAgIDxzY3JpcHQ+Ci0gICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAgICAgIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9pbWctbGF5ZXItZ3Jvdy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2lt
Zy1sYXllci1ncm93Lmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2ltZy1sYXllci1ncm93Lmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTQsMjAgKzQsMjAgQEAKIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9jb21wb3NpdGluZy9y
ZXNvdXJjZXMvbW9ja19zY3JvbGxiYXJzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CiAKLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOyAvLyBUaGlzIGlzIG9u
bHkgdXNlZnVsIGFzIGEgcGl4ZWwgdGVzdC4KKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KHRydWUpOyAvLyBUaGlzIGlzIG9ubHkgdXNlZnVsIGFzIGEgcGl4ZWwgdGVzdC4KICAgfQogCiAg
IGZ1bmN0aW9uIGRvVGVzdCgpCiAgIHsKICAgICBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiZGl2Iik7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICB0ZXN0UnVubmVyLmRpc3BsYXkoKTsKICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5j
dGlvbigpIHsKICAgICAgIGRpdi5zdHlsZS5oZWlnaHQgPSAiMTYwMHB4IjsKLSAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfSwgMCk7CiAgIH0KIApJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvbGF5b3V0LXdpZHRoLWNoYW5nZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5n
L2xheW91dC13aWR0aC1jaGFuZ2UuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvbGF5b3V0LXdpZHRoLWNoYW5nZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw5ICsyNCw5IEBACiAgIH0KICAgPC9zdHlsZT4KICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCh0cnVlKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsK
ICAgICB9CiAgICAgZnVuY3Rpb24gZG9UZXN0KCkKICAgICB7CkBAIC0zOCw5ICszOCw5IEBACiAg
ICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgIHBhbmVsLmNsYXNz
TmFtZSArPSAiIGNvbXBvc2l0ZWQiCiAgICAgICAgICBjb250YWluZXIuc3R5bGUuaGVpZ2h0ID0g
IjMwMCI7Ci0gICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAg
ICAgICAgICAgIH0sIDIwKTsKICAgICAgICAgIH0KICAgICAgIH0sIDIwKTsKQEAgLTU4LDQgKzU4
LDQgQEAKICAgPC9kaXY+CiAKIDwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21w
b3NpdGluZy9sb3N0LWNvbXBvc2l0b3ItY29udGV4dC1wZXJtYW5lbnRseS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2xvc3QtY29t
cG9zaXRvci1jb250ZXh0LXBlcm1hbmVudGx5Lmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2xvc3QtY29tcG9zaXRvci1j
b250ZXh0LXBlcm1hbmVudGx5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE2ICsyOCwxNiBA
QAogICA8L2Rpdj4KICAgPHA+CiAgIDxzY3JpcHQ+Ci0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOyAg
Ly8gVGhpcyBpcyBvbmx5IHVzZWZ1bCBhcyBhIHBpeGVsIHRlc3QuCi0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZGlzcGxheSgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmxvc2VDb21wb3Np
dG9yQ29udGV4dCgxMDApOyAvLyBNYWtlIGl0IGxvc2UgdGhlIGNvbnRleHQgb3ZlciBhbmQgb3Zl
ciBhZ2Fpbi4KKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KHRydWUpOyAgLy8gVGhpcyBpcyBvbmx5IHVzZWZ1bCBhcyBhIHBpeGVsIHRlc3QuCisg
ICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7CisgICAgdGVzdFJ1bm5lci5sb3NlQ29tcG9zaXRvckNv
bnRleHQoMTAwKTsgLy8gTWFrZSBpdCBsb3NlIHRoZSBjb250ZXh0IG92ZXIgYW5kIG92ZXIgYWdh
aW4uCiAKICAgICAvLyBGb3JjZSBkaXNwbGF5IG1hbnkgdGltZXMgc28gdGhhdCB0aGUgY29tcG9z
aXRvciBnaXZlcyB1cCBvbiBHUFUgYWNjZWxlcmF0aW9uCiAgICAgLy8gVGhlIG51bWJlciBvZiB0
aW1lcyB0byB0cnkgc2hvdWxkIGJlIGF0IGxlYXN0IGFzIG1hbnkgYXMgdGhlCiAgICAgLy8gbV9u
dW1GYWlsZWRSZWNyZWF0ZUF0dGVtcHRzIGluIENDU2luZ2xlVGhyZWFkUHJveHkuCiAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
aXNwbGF5KCk7CisgICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOwogICB9CiAgIHZhciB0YXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7CiAgIHRhcmdldC5jbGFzc0xp
c3QucmVtb3ZlKCJyZWQiKTsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Nv
bXBvc2l0aW5nL2xvc3QtY29tcG9zaXRvci1jb250ZXh0LXR3aWNlLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvbG9zdC1jb21wb3Np
dG9yLWNvbnRleHQtdHdpY2UuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvbG9zdC1jb21wb3NpdG9yLWNvbnRleHQtdHdp
Y2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTEgKzI4LDExIEBACiAgIDwvZGl2PgogICA8
cD4KICAgPHNjcmlwdD4KLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7ICAvLyBUaGlzIGlzIG9ubHkg
dXNlZnVsIGFzIGEgcGl4ZWwgdGVzdC4KLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kaXNwbGF5
KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubG9zZUNvbXBvc2l0b3JDb250ZXh0KDIpOyAv
LyBMb3NlIHRoZSBjb21wb3NpdG9yIGNvbnRleHQsIHRoZW4gbG9zZSBpdCBhZ2FpbiBvbiB0aGUg
bmV4dCByZWRpc3BsYXkKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kaXNwbGF5KCk7IC8vIFdp
bGwgYWxzbyBmYWlsCisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCh0cnVlKTsgIC8vIFRoaXMgaXMgb25seSB1c2VmdWwgYXMgYSBwaXhlbCB0ZXN0
LgorICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOworICAgIHRlc3RSdW5uZXIubG9zZUNvbXBvc2l0
b3JDb250ZXh0KDIpOyAvLyBMb3NlIHRoZSBjb21wb3NpdG9yIGNvbnRleHQsIHRoZW4gbG9zZSBp
dCBhZ2FpbiBvbiB0aGUgbmV4dCByZWRpc3BsYXkKKyAgICB0ZXN0UnVubmVyLmRpc3BsYXkoKTsg
Ly8gV2lsbCBhbHNvIGZhaWwKICAgfQogICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRhcmdldCIpOwogICB0YXJnZXQuY2xhc3NMaXN0LnJlbW92ZSgicmVkIik7CkluZGV4
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9sb3N0LWNvbXBvc2l0
b3ItY29udGV4dC13aXRoLXJlbmRlcnN1cmZhY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9sb3N0LWNvbXBvc2l0b3ItY29udGV4
dC13aXRoLXJlbmRlcnN1cmZhY2UuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvbG9zdC1jb21wb3NpdG9yLWNvbnRleHQt
d2l0aC1yZW5kZXJzdXJmYWNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEwICszMSwxMCBA
QAogICA8L2Rpdj4KICAgPHA+CiAgIDxzY3JpcHQ+Ci0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOyAg
Ly8gVGhpcyBpcyBvbmx5IHVzZWZ1bCBhcyBhIHBpeGVsIHRlc3QuCi0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZGlzcGxheSgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmxvc2VDb21wb3Np
dG9yQ29udGV4dCgxKTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KHRydWUpOyAgLy8gVGhpcyBpcyBvbmx5IHVzZWZ1bCBhcyBhIHBpeGVsIHRl
c3QuCisgICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7CisgICAgdGVzdFJ1bm5lci5sb3NlQ29tcG9z
aXRvckNvbnRleHQoMSk7CiAgIH0KICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0YXJnZXQiKTsKICAgdGFyZ2V0LmNsYXNzTGlzdC5yZW1vdmUoInJlZCIpOwpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvbG9zdC1jb21wb3NpdG9y
LWNvbnRleHQtd2l0aC12aWRlby5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2xvc3QtY29tcG9zaXRvci1jb250ZXh0LXdpdGgtdmlk
ZW8uaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vY29tcG9zaXRpbmcvbG9zdC1jb21wb3NpdG9yLWNvbnRleHQtd2l0aC12aWRlby5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC00LDE5ICs0LDE5IEBACiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9tZWRpYS9tZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCh0cnVlKTsgIC8vIFRoaXMgaXMgb25seSB1c2VmdWwgYXMgYSBwaXhlbCB0ZXN0LgotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsgIC8vIFRoaXMgaXMgb25s
eSB1c2VmdWwgYXMgYSBwaXhlbCB0ZXN0LgorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwogfQogCiBmdW5jdGlvbiB0ZXN0KCkgewogICAgIHZhciB2ID0gZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcigndmlkZW8nKTsKICAgICB2LmFkZEV2ZW50TGlzdGVuZXIoInNlZWtlZCIsIGZ1bmN0aW9u
KCkgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kaXNwbGF5KCk7Ci0gICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5sb3NlQ29tcG9zaXRvckNvbnRleHQoMSk7Ci0gICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kaXNwbGF5KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICAgICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmxv
c2VDb21wb3NpdG9yQ29udGV4dCgxKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgp
OworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0KICAgICB9
LCBmYWxzZSk7CiAgICAgdi5jdXJyZW50VGltZSA9IDA7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9sb3N0LWNvbXBvc2l0b3ItY29udGV4dC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2xv
c3QtY29tcG9zaXRvci1jb250ZXh0Lmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2xvc3QtY29tcG9zaXRvci1jb250ZXh0
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEwICsyOCwxMCBAQAogICA8L2Rpdj4KICAgPHA+
CiAgIDxzY3JpcHQ+Ci0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOyAgLy8gVGhpcyBpcyBvbmx5IHVz
ZWZ1bCBhcyBhIHBpeGVsIHRlc3QuCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZGlzcGxheSgp
OwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmxvc2VDb21wb3NpdG9yQ29udGV4dCgxKTsKKyAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUp
OyAgLy8gVGhpcyBpcyBvbmx5IHVzZWZ1bCBhcyBhIHBpeGVsIHRlc3QuCisgICAgdGVzdFJ1bm5l
ci5kaXNwbGF5KCk7CisgICAgdGVzdFJ1bm5lci5sb3NlQ29tcG9zaXRvckNvbnRleHQoMSk7CiAg
IH0KICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKICAg
dGFyZ2V0LmNsYXNzTGlzdC5yZW1vdmUoInJlZCIpOwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vY29tcG9zaXRpbmcvcGVycGVuZGljdWxhci1sYXllci1zb3J0aW5nLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcv
cGVycGVuZGljdWxhci1sYXllci1zb3J0aW5nLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3BlcnBlbmRpY3VsYXItbGF5
ZXItc29ydGluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw4IEBACiAgICAgfQog
PC9zdHlsZT4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKIDwvc2NyaXB0PgogPC9oZWFk
PgogPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGlu
Zy9zY2lzc29yLW91dC1vZi12aWV3cG9ydC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3NjaXNzb3Itb3V0LW9mLXZpZXdwb3J0Lmh0
bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Nv
bXBvc2l0aW5nL3NjaXNzb3Itb3V0LW9mLXZpZXdwb3J0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTE5LDYgKzE5LDYgQEAgY3R4LmZpbGxTdHlsZSA9ICJyZWQiOwogY3R4LmZpbGxSZWN0KDAsIDAs
IDUwMCwgNTAwKTsKIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpIikuc3JjID0gY2FuLnRvRGF0
YVVSTCgpOwogZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgPSA1MDsKLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVl
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1
ZSk7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBv
c2l0aW5nL3RpbnktbGF5ZXItcm90YXRlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3RpbnktbGF5ZXItcm90YXRlZC5odG1sCShy
ZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3Np
dGluZy90aW55LWxheWVyLXJvdGF0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEsOCArMTEs
OCBAQAogICAgIH0KICAgPC9zdHlsZT4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAgIDwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHkgc3R5bGU9Im92ZXJmbG93OmhpZGRlbiI+CkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy92aWRlby1mcmFtZS1zaXpl
LWNoYW5nZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2NvbXBvc2l0aW5nL3ZpZGVvLWZyYW1lLXNpemUtY2hhbmdlLmh0bWwJKHJldmlzaW9uIDExOTk0
NikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3ZpZGVvLWZy
YW1lLXNpemUtY2hhbmdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBACiAgICAg
ICAgIDx2aWRlbyB3aWR0aD0zMjA+PC92aWRlbz4KICAgICAgICAgPHZpZGVvIHdpZHRoPTMyMD48
L3ZpZGVvPgogICAgICAgICA8c2NyaXB0PgotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBmdW5jdGlvbiBsb2FkKCkgewpAQCAtMTYsOCArMTYsOCBAQAogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSByZW5kZXIgdGhlIGZpcnN0IGZyYW1lLgotICAg
ICAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kaXNwbGF5KCk7CisgICAg
ICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgdmlkZW8ucGxheSgpOwogICAgICAgICAgICAgICAgIH07CkBAIC00
NCw4ICs0NCw4IEBACiAgICAgICAgICAgICAgICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncGF1
c2UnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gTm93IHNlZWsgYmFjayB0
byBhIHBvaW50IHdoZXJlIHJlc29sdXRpb24gc2hvdWxkIGJlIGRpZmZlcmVudC4KICAgICAgICAg
ICAgICAgICAgICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcignc2Vla2VkJywgZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0pOwogCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy93ZWJnbC1sb3Nl
cy1jb21wb3NpdG9yLWNvbnRleHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy93ZWJnbC1sb3Nlcy1jb21wb3NpdG9yLWNvbnRleHQu
aHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
Y29tcG9zaXRpbmcvd2ViZ2wtbG9zZXMtY29tcG9zaXRvci1jb250ZXh0Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTcsMTAgKzcsMTAgQEAKICAgICB9CiAgIDwvc3R5bGU+CiAgIDxzY3JpcHQ+Ci0g
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0V2ViR0xFbmFibGVkIiwgIjEiKTsKLSAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFdlYkdMRW5hYmxl
ZCIsICIxIik7CisgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKICAgfQogCiAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgewpAQCAtMTksMTcgKzE5LDE3IEBACiAgICAgICAvLyBmb3JjZSBhIHN3aXRjaCBmcm9t
IHRoZSBpbnRlZ3JhdGVkIHRvIHRoZSBkaXNjcmV0ZSBHUFUgCiAgICAgICAvLyBhbmQgdGhlIGxv
c3Mgb2YgdGhlIGNvbXBvc2l0b3IncyBjb250ZXh0LgogICAgICAgdmFyIGdsID0gYy5nZXRDb250
ZXh0KCJleHBlcmltZW50YWwtd2ViZ2wiKTsKLSAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAgICAgIC8v
IFRoaXMgdW5mb3J0dW5hdGVseSBkb2Vzbid0IHByb3Zva2UgdGhlIGZhaWx1cmUgaW4gRFJULgog
ICAgICAgICAgIC8vIEl0IHNlZW1zIHRoYXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIGxvc2VDb21w
b3NpdG9yQ29udGV4dAogICAgICAgICAgIC8vIHdvdWxkIG5lZWQgdG8gaW52YWxpZGF0ZSB0aGUg
Y29udGV4dCBhdCBhIGxvd2VyIGxldmVsLgotICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lmxvc2VDb21wb3NpdG9yQ29udGV4dCgxKTsKKyAgICAgICAgICB0ZXN0UnVubmVyLmxvc2VDb21w
b3NpdG9yQ29udGV4dCgxKTsKICAgICAgIH0KICAgICAgIGdsLmNsZWFyQ29sb3IoMCwgMSwgMCwg
MSk7CiAgICAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKLSAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
ewogICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
ICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAg
ICB3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgfSwgMCk7CiAgICAg
ICB9CiAgIH0sIDApOwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9z
aXRpbmcvYWNjZWxlcmF0ZWQtZHJhd2luZy9hbHBoYS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2FjY2VsZXJhdGVkLWRyYXdpbmcv
YWxwaGEuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vY29tcG9zaXRpbmcvYWNjZWxlcmF0ZWQtZHJhd2luZy9hbHBoYS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xNyw4ICsxNyw4IEBACiAgIH0KIDwvc3R5bGU+CiA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+Ci0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsgLy8gVGhpcyBpcyBvbmx5IHVz
ZWZ1bCBhcyBwaXhlbCB0ZXN0LgorICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KHRydWUpOyAvLyBUaGlzIGlzIG9ubHkgdXNlZnVsIGFzIHBpeGVsIHRl
c3QuCiAKICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCiAgICAgd2luZG93LmludGVybmFscy5zZXR0
aW5ncy5zZXRBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKHRydWUpOwpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvYWNjZWxlcmF0ZWQtZHJhd2luZy9zdmct
ZmlsdGVycy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2NvbXBvc2l0aW5nL2FjY2VsZXJhdGVkLWRyYXdpbmcvc3ZnLWZpbHRlcnMuaHRtbAkocmV2aXNp
b24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcv
YWNjZWxlcmF0ZWQtZHJhd2luZy9zdmctZmlsdGVycy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0y
LDggKzIsOCBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOyAvLyBUaGlzIGlzIG9ubHkgdXNlZnVsIGFzIHBpeGVs
IHRlc3QuCisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQodHJ1ZSk7IC8vIFRoaXMgaXMgb25seSB1c2VmdWwgYXMgcGl4ZWwgdGVzdC4KIAogICBpZiAo
d2luZG93LmludGVybmFscykKICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEFjY2Vs
ZXJhdGVkRHJhd2luZ0VuYWJsZWQodHJ1ZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItb2ZmLWF4
aXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21w
b3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItb2ZmLWF4aXMuaHRtbAkocmV2
aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRp
bmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLW9mZi1heGlzLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTE4LDEzICsxOCwxMyBAQAogPC9zdHlsZT4KIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KICAgZnVuY3Rpb24gc2V0Qmx1cigpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kaXNwbGF5KCk7IC8vIEZvcmNlIGNvbXBvc2l0b3IgdG8gc3RhcnQuCisgICAgdGVzdFJ1
bm5lci5kaXNwbGF5KCk7IC8vIEZvcmNlIGNvbXBvc2l0b3IgdG8gc3RhcnQuCiAgICAgdmFyIGJs
dXJOb2RlID0gd2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdibHVyJyk7CiAgICAgd2lu
ZG93LmludGVybmFscy5zZXRCYWNrZ3JvdW5kQmx1ck9uTm9kZShibHVyTm9kZSwgMik7CiAgIH0K
IAotICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
KQogICAgICAgd2luZG93Lm9ubG9hZCA9IHNldEJsdXI7CiAgIH0KSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXIt
Ymx1ci1vdXRzZXRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLW91dHNldHMu
aHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
Y29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLW91dHNldHMuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMTEsMTMgKzExLDEzIEBACiA8L3N0eWxlPgogPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgogICBmdW5jdGlvbiBzZXRCbHVyKCkgewotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmRpc3BsYXkoKTsgLy8gRm9yY2UgY29tcG9zaXRvciB0byBzdGFydC4KKyAg
ICB0ZXN0UnVubmVyLmRpc3BsYXkoKTsgLy8gRm9yY2UgY29tcG9zaXRvciB0byBzdGFydC4KICAg
ICB2YXIgYmx1ck5vZGUgPSB3aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JsdXInKTsK
ICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldEJhY2tncm91bmRCbHVyT25Ob2RlKGJsdXJOb2RlLCA1
KTsKICAgfQogCi0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOworICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpCiAgICAgICB3aW5kb3cub25sb2FkID0gc2V0Qmx1cjsKICAgfQpJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5k
LWZpbHRlci1ibHVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLmh0bWwJKHJl
dmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0
aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xMSwxMyArMTEsMTMgQEAKIDwvc3R5bGU+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+CiAgIGZ1bmN0aW9uIHNldEJsdXIoKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZGlz
cGxheSgpOyAvLyBGb3JjZSBjb21wb3NpdG9yIHRvIHN0YXJ0LgorICAgIHRlc3RSdW5uZXIuZGlz
cGxheSgpOyAvLyBGb3JjZSBjb21wb3NpdG9yIHRvIHN0YXJ0LgogICAgIHZhciBibHVyTm9kZSA9
IHdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmx1cicpOwogICAgIHdpbmRvdy5pbnRl
cm5hbHMuc2V0QmFja2dyb3VuZEJsdXJPbk5vZGUoYmx1ck5vZGUsIDIpOwogICB9CiAKLSAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQodHJ1ZSk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKICAgICBpZiAod2luZG93LmludGVybmFscykKICAgICAg
IHdpbmRvdy5vbmxvYWQgPSBzZXRCbHVyOwogICB9CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9jb21wb3NpdGluZy9mb3JjZS1jb21wb3NpdGluZy1tb2RlL2ZvcmNlLWNvbXBv
c2l0ZS1lbXB0eS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2NvbXBvc2l0aW5nL2ZvcmNlLWNvbXBvc2l0aW5nLW1vZGUvZm9yY2UtY29tcG9zaXRlLWVt
cHR5Lmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2NvbXBvc2l0aW5nL2ZvcmNlLWNvbXBvc2l0aW5nLW1vZGUvZm9yY2UtY29tcG9zaXRlLWVt
cHR5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsOSArNiw5IEBACiAgICAgICAgIHdpbmRvdy5p
bnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JTY3JvbGxhYmxlRnJhbWVz
KHRydWUpOwogICAgICAgfQogICAgICAgZnVuY3Rpb24gZG9UZXN0KCkgewotICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImxheWVydHJlZSIpLmlubmVyVGV4dCA9IGxheW91dFRlc3RDb250cm9sbGVyLmxh
eWVyVHJlZUFzVGV4dCgpOwotICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImxheWVydHJlZSIpLmlubmVyVGV4dCA9IHRlc3RSdW5uZXIubGF5
ZXJUcmVlQXNUZXh0KCk7CisgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAg
ICAgIH0KICAgICAgIH0KICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZG9U
ZXN0LCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3Np
dGluZy9mb3JjZS1jb21wb3NpdGluZy1tb2RlL25vLW92ZXJmbG93LWlmcmFtZS1sYXllci5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5n
L2ZvcmNlLWNvbXBvc2l0aW5nLW1vZGUvbm8tb3ZlcmZsb3ctaWZyYW1lLWxheWVyLmh0bWwJKHJl
dmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0
aW5nL2ZvcmNlLWNvbXBvc2l0aW5nLW1vZGUvbm8tb3ZlcmZsb3ctaWZyYW1lLWxheWVyLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTksOSArOSw5IEBACiAgIDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24g
ZG9UZXN0KCkKICAgICB7Ci0gICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoZmFsc2UpOwotICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJ0cmVlJykuaW5uZXJUZXh0ID0gbGF5b3V0
VGVzdENvbnRyb2xsZXIubGF5ZXJUcmVlQXNUZXh0KCk7CisgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KGZhbHNlKTsKKyAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVydHJlZScpLmlubmVyVGV4dCA9IHRlc3RSdW5u
ZXIubGF5ZXJUcmVlQXNUZXh0KCk7CiAgICAgICB9CiAgICAgfQogICAgIHdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCJsb2FkIiwgZG9UZXN0LCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9mb3JjZS1jb21wb3NpdGluZy1tb2RlL292ZXJmbG93
LWhpZGRlbi1pZnJhbWUtbGF5ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9mb3JjZS1jb21wb3NpdGluZy1tb2RlL292ZXJmbG93
LWhpZGRlbi1pZnJhbWUtbGF5ZXIuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZm9yY2UtY29tcG9zaXRpbmctbW9kZS9v
dmVyZmxvdy1oaWRkZW4taWZyYW1lLWxheWVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEzLDE0
ICsxMywxNCBAQAogICAgIH0KICAgICBmdW5jdGlvbiBkb1Rlc3QoKQogICAgIHsKLSAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmRpc3BsYXkoKTsKKyAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVz
dFJ1bm5lci5kaXNwbGF5KCk7CiAgICAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInBhcmVudC1pZnJhbWUiKTsKICAgICAgIGlmcmFtZS5jb250ZW50RG9jdW1lbnQuYm9k
eS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgIm92ZXJmbG93OmhpZGRlbiIpOwogICAgICAgaWZyYW1l
LmNvbnRlbnREb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoOyAvLyBTZWUgYnVnIDQxOTk5Ci0gICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoZmFsc2UpOwotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnbGF5ZXJ0cmVlJykuaW5uZXJUZXh0ID0gbGF5b3V0VGVzdENvbnRyb2xsZXIubGF5ZXJU
cmVlQXNUZXh0KCk7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KGZhbHNlKTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2xheWVydHJlZScpLmlubmVyVGV4dCA9IHRlc3RSdW5uZXIubGF5ZXJUcmVlQXNUZXh0KCk7
CiAgICAgICB9CiAgICAgfQogICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZG9U
ZXN0LCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3Np
dGluZy9mb3JjZS1jb21wb3NpdGluZy1tb2RlL292ZXJmbG93LWlmcmFtZS1lbnRlci1jb21wb3Np
dGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Nv
bXBvc2l0aW5nL2ZvcmNlLWNvbXBvc2l0aW5nLW1vZGUvb3ZlcmZsb3ctaWZyYW1lLWVudGVyLWNv
bXBvc2l0aW5nLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2NvbXBvc2l0aW5nL2ZvcmNlLWNvbXBvc2l0aW5nLW1vZGUvb3ZlcmZsb3ctaWZy
YW1lLWVudGVyLWNvbXBvc2l0aW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEzLDE1ICsxMywx
NSBAQAogICAgIH0KICAgICBmdW5jdGlvbiBkb1Rlc3QoKQogICAgIHsKLSAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmRp
c3BsYXkoKTsKKyAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5l
ci5kaXNwbGF5KCk7CiAgICAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InBhcmVudC1pZnJhbWUiKTsKICAgICAgIHZhciBib3ggPSBpZnJhbWUuY29udGVudERvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJib3giKTsKICAgICAgIGJveC5zZXRBdHRyaWJ1dGUoInN0eWxlIiwg
ImhlaWdodDo1MDBweDt3aWR0aDo1MDBweDsiKTsKICAgICAgIGlmcmFtZS5jb250ZW50RG9jdW1l
bnQuYm9keS5vZmZzZXRXaWR0aDsgLy8gU2VlIGJ1ZyA0MTk5OQotICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KGZhbHNlKTsKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVydHJl
ZScpLmlubmVyVGV4dCA9IGxheW91dFRlc3RDb250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgpOwor
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dChmYWxzZSk7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnRyZWUn
KS5pbm5lclRleHQgPSB0ZXN0UnVubmVyLmxheWVyVHJlZUFzVGV4dCgpOwogICAgICAgfQogICAg
IH0KICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGRvVGVzdCwgZmFsc2UpOwpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZm9yY2UtY29t
cG9zaXRpbmctbW9kZS9vdmVyZmxvdy1pZnJhbWUtbGF5ZXIuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9mb3JjZS1jb21wb3NpdGlu
Zy1tb2RlL292ZXJmbG93LWlmcmFtZS1sYXllci5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9mb3JjZS1jb21wb3NpdGlu
Zy1tb2RlL292ZXJmbG93LWlmcmFtZS1sYXllci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw5
ICsxMyw5IEBACiAgICAgfQogICAgIGZ1bmN0aW9uIGRvVGVzdCgpCiAgICAgewotICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KGZhbHNlKTsKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2xheWVydHJlZScpLmlubmVyVGV4dCA9IGxheW91dFRlc3RDb250cm9sbGVyLmxheWVyVHJlZUFz
VGV4dCgpOworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dChmYWxzZSk7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCds
YXllcnRyZWUnKS5pbm5lclRleHQgPSB0ZXN0UnVubmVyLmxheWVyVHJlZUFzVGV4dCgpOwogICAg
ICAgfQogICAgIH0KICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGRvVGVzdCwg
ZmFsc2UpOwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcv
Zm9yY2UtY29tcG9zaXRpbmctbW9kZS9vdmVyZmxvdy1pZnJhbWUtbGVhdmUtY29tcG9zaXRpbmcu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3Np
dGluZy9mb3JjZS1jb21wb3NpdGluZy1tb2RlL292ZXJmbG93LWlmcmFtZS1sZWF2ZS1jb21wb3Np
dGluZy5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9jb21wb3NpdGluZy9mb3JjZS1jb21wb3NpdGluZy1tb2RlL292ZXJmbG93LWlmcmFtZS1s
ZWF2ZS1jb21wb3NpdGluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMywxNSArMTMsMTUgQEAK
ICAgICB9CiAgICAgZnVuY3Rpb24gZG9UZXN0KCkKICAgICB7Ci0gICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kaXNwbGF5
KCk7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZGlz
cGxheSgpOwogICAgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXJl
bnQtaWZyYW1lIik7CiAgICAgICB2YXIgYm94ID0gaWZyYW1lLmNvbnRlbnREb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiYm94Iik7CiAgICAgICBib3guc2V0QXR0cmlidXRlKCJzdHlsZSIsICJoZWln
aHQ6NTBweDt3aWR0aDo1MHB4OyIpOwogICAgICAgaWZyYW1lLmNvbnRlbnREb2N1bWVudC5ib2R5
Lm9mZnNldFdpZHRoOyAvLyBTZWUgYnVnIDQxOTk5Ci0gICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
ZmFsc2UpOwotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJ0cmVlJykuaW5u
ZXJUZXh0ID0gbGF5b3V0VGVzdENvbnRyb2xsZXIubGF5ZXJUcmVlQXNUZXh0KCk7CisgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KGZh
bHNlKTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVydHJlZScpLmlubmVy
VGV4dCA9IHRlc3RSdW5uZXIubGF5ZXJUcmVlQXNUZXh0KCk7CiAgICAgICB9CiAgICAgfQogICAg
IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZG9UZXN0LCBmYWxzZSk7CkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9ydWJiZXJiYW5kaW5nL3Ry
YW5zZm9ybS1vdmVyaGFuZy1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vY29tcG9zaXRpbmcvcnViYmVyYmFuZGluZy90cmFuc2Zvcm0tb3Zlcmhhbmct
ZS5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9jb21wb3NpdGluZy9ydWJiZXJiYW5kaW5nL3RyYW5zZm9ybS1vdmVyaGFuZy1lLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTcsOCArNyw4IEBACiAKIDxkaXYgaWQ9ImluZm8iPlRoaXMgdGVzdCBy
ZXF1aXJlcyBEUlQuPC9kaXY+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzICYm
IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KHRydWUpOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luZm8nKS5zdHlsZS52aXNpYmlsaXR5ID0g
ImhpZGRlbiI7CiAgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRNb2NrU2Nyb2xsYmFyc0Vu
YWJsZWQoZmFsc2UpOwogICAgICAgICBpbnRlcm5hbHMuc2V0U2Nyb2xsVmlld1Bvc2l0aW9uKGRv
Y3VtZW50LCA1MCwgMCk7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21w
b3NpdGluZy9ydWJiZXJiYW5kaW5nL3RyYW5zZm9ybS1vdmVyaGFuZy1uLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvcnViYmVyYmFu
ZGluZy90cmFuc2Zvcm0tb3Zlcmhhbmctbi5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9ydWJiZXJiYW5kaW5nL3RyYW5z
Zm9ybS1vdmVyaGFuZy1uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsOCArNyw4IEBACiAKIDxk
aXYgaWQ9ImluZm8iPlRoaXMgdGVzdCByZXF1aXJlcyBEUlQuPC9kaXY+CiA8c2NyaXB0PgotICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOworICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCh0cnVlKTsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lu
Zm8nKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICAgICAgIGludGVybmFscy5zZXR0
aW5ncy5zZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWQoZmFsc2UpOwogICAgICAgICBpbnRlcm5hbHMu
c2V0U2Nyb2xsVmlld1Bvc2l0aW9uKGRvY3VtZW50LCAwLCAtNTApOwpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvcnViYmVyYmFuZGluZy90cmFuc2Zvcm0t
b3ZlcmhhbmctbmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9jb21wb3NpdGluZy9ydWJiZXJiYW5kaW5nL3RyYW5zZm9ybS1vdmVyaGFuZy1uZS5odG1s
CShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21w
b3NpdGluZy9ydWJiZXJiYW5kaW5nL3RyYW5zZm9ybS1vdmVyaGFuZy1uZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC03LDggKzcsOCBAQAogCiA8ZGl2IGlkPSJpbmZvIj5UaGlzIHRlc3QgcmVxdWly
ZXMgRFJULjwvZGl2PgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmludGVybmFscyAmJiB3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCh0cnVlKTsKKyAgICBpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbmZvJykuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRk
ZW4iOwogICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0TW9ja1Njcm9sbGJhcnNFbmFibGVk
KGZhbHNlKTsKICAgICAgICAgaW50ZXJuYWxzLnNldFNjcm9sbFZpZXdQb3NpdGlvbihkb2N1bWVu
dCwgNTAsIC01MCk7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3Np
dGluZy9ydWJiZXJiYW5kaW5nL3RyYW5zZm9ybS1vdmVyaGFuZy1udy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3J1YmJlcmJhbmRp
bmcvdHJhbnNmb3JtLW92ZXJoYW5nLW53Lmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3J1YmJlcmJhbmRpbmcvdHJhbnNm
b3JtLW92ZXJoYW5nLW53Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsOCArNyw4IEBACiAKIDxk
aXYgaWQ9ImluZm8iPlRoaXMgdGVzdCByZXF1aXJlcyBEUlQuPC9kaXY+CiA8c2NyaXB0PgotICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOworICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCh0cnVlKTsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lu
Zm8nKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICAgICAgIGludGVybmFscy5zZXR0
aW5ncy5zZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWQoZmFsc2UpOwogICAgICAgICBpbnRlcm5hbHMu
c2V0U2Nyb2xsVmlld1Bvc2l0aW9uKGRvY3VtZW50LCAtNTAsIC01MCk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9ydWJiZXJiYW5kaW5nL3RyYW5zZm9y
bS1vdmVyaGFuZy1zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vY29tcG9zaXRpbmcvcnViYmVyYmFuZGluZy90cmFuc2Zvcm0tb3Zlcmhhbmctcy5odG1s
CShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21w
b3NpdGluZy9ydWJiZXJiYW5kaW5nL3RyYW5zZm9ybS1vdmVyaGFuZy1zLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTcsOCArNyw4IEBACiAKIDxkaXYgaWQ9ImluZm8iPlRoaXMgdGVzdCByZXF1aXJl
cyBEUlQuPC9kaXY+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KHRydWUpOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luZm8nKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRl
biI7CiAgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWQo
ZmFsc2UpOwogICAgICAgICBpbnRlcm5hbHMuc2V0U2Nyb2xsVmlld1Bvc2l0aW9uKGRvY3VtZW50
LCAwLCA1MCk7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGlu
Zy9ydWJiZXJiYW5kaW5nL3RyYW5zZm9ybS1vdmVyaGFuZy1zZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3J1YmJlcmJhbmRpbmcv
dHJhbnNmb3JtLW92ZXJoYW5nLXNlLmh0bWwJKHJldmlzaW9uIDExOTk0NikKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3J1YmJlcmJhbmRpbmcvdHJhbnNmb3Jt
LW92ZXJoYW5nLXNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsOCArNyw4IEBACiAKIDxkaXYg
aWQ9ImluZm8iPlRoaXMgdGVzdCByZXF1aXJlcyBEUlQuPC9kaXY+CiA8c2NyaXB0PgotICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOworICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCh0cnVlKTsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luZm8n
KS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICAgICAgIGludGVybmFscy5zZXR0aW5n
cy5zZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWQoZmFsc2UpOwogICAgICAgICBpbnRlcm5hbHMuc2V0
U2Nyb2xsVmlld1Bvc2l0aW9uKGRvY3VtZW50LCA1MCwgNTApOwpJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvcnViYmVyYmFuZGluZy90cmFuc2Zvcm0tb3Zl
cmhhbmctc2l6ZS1jaGFuZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9jb21wb3NpdGluZy9ydWJiZXJiYW5kaW5nL3RyYW5zZm9ybS1vdmVyaGFuZy1z
aXplLWNoYW5nZS5odG1sCShyZXZpc2lvbiAxMTk5NDYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9jb21wb3NpdGluZy9ydWJiZXJiYW5kaW5nL3RyYW5zZm9ybS1vdmVyaGFuZy1z
aXplLWNoYW5nZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDEyICs3LDEyIEBACiAKIDxkaXYg
aWQ9ImluZm8iPlRoaXMgdGVzdCByZXF1aXJlcyBEUlQuPC9kaXY+CiA8c2NyaXB0PgotICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOworICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCh0cnVlKTsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luZm8n
KS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICAgICAgIGludGVybmFscy5zZXR0aW5n
cy5zZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWQoZmFsc2UpOwogICAgICAgICBpbnRlcm5hbHMuc2V0
U2Nyb2xsVmlld1Bvc2l0aW9uKGRvY3VtZW50LCAtMjAsIC0yMCk7Ci0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmRpc3BsYXkoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7CiAg
ICAgICAgIGludGVybmFscy5zZXRTY3JvbGxWaWV3UG9zaXRpb24oZG9jdW1lbnQsIC02MCwgLTYw
KTsKICAgICB9CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2NvbXBvc2l0aW5nL3J1YmJlcmJhbmRpbmcvdHJhbnNmb3JtLW92ZXJoYW5nLXN3Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvcnVi
YmVyYmFuZGluZy90cmFuc2Zvcm0tb3Zlcmhhbmctc3cuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvcnViYmVyYmFuZGlu
Zy90cmFuc2Zvcm0tb3Zlcmhhbmctc3cuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw4ICs3LDgg
QEAKIAogPGRpdiBpZD0iaW5mbyI+VGhpcyB0ZXN0IHJlcXVpcmVzIERSVC48L2Rpdj4KIDxzY3Jp
cHQ+Ci0gICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7Cisg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnaW5mbycpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKICAgICAgICAgaW50ZXJu
YWxzLnNldHRpbmdzLnNldE1vY2tTY3JvbGxiYXJzRW5hYmxlZChmYWxzZSk7CiAgICAgICAgIGlu
dGVybmFscy5zZXRTY3JvbGxWaWV3UG9zaXRpb24oZG9jdW1lbnQsIC01MCwgNTApOwpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvcnViYmVyYmFuZGluZy90
cmFuc2Zvcm0tb3Zlcmhhbmctdy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3J1YmJlcmJhbmRpbmcvdHJhbnNmb3JtLW92ZXJoYW5n
LXcuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vY29tcG9zaXRpbmcvcnViYmVyYmFuZGluZy90cmFuc2Zvcm0tb3Zlcmhhbmctdy5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC03LDggKzcsOCBAQAogCiA8ZGl2IGlkPSJpbmZvIj5UaGlzIHRlc3Qg
cmVxdWlyZXMgRFJULjwvZGl2PgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmludGVybmFscyAm
JiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgICBpZiAod2luZG93LmludGVybmFscyAmJiB3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbmZvJykuc3R5bGUudmlzaWJpbGl0eSA9
ICJoaWRkZW4iOwogICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0TW9ja1Njcm9sbGJhcnNF
bmFibGVkKGZhbHNlKTsKICAgICAgICAgaW50ZXJuYWxzLnNldFNjcm9sbFZpZXdQb3NpdGlvbihk
b2N1bWVudCwgLTUwLCAwKTsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jb21wb3Np
dGluZy9jYW52YXMvYWNjZWxlcmF0ZWQtY2FudmFzLWNvbXBvc2l0aW5nLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL2NhbnZhcy9hY2NlbGVy
YXRlZC1jYW52YXMtY29tcG9zaXRpbmcuaHRtbAkocmV2aXNpb24gMTE5OTQ2KQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL2NhbnZhcy9hY2NlbGVyYXRlZC1jYW52YXMt
Y29tcG9zaXRpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDkgQEAKIDwhRE9DVFlQ
RSBodG1sPjxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gZG9UZXN0
KCkgewpAQCAtMTIsOSArMTIsOSBAQAogICAgICAgICBjdHguZmlsbFN0eWxlID0gJ3JnYmEoMjU1
LDAsMCwxKSc7CiAgICAgICAgIGN0eC5maWxsUmVjdCgwLDAsYy53aWR0aCwgYy5oZWlnaHQpOwog
Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5pbm5lclRleHQgPSBsYXlvdXRUZXN0
Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJzJykuaW5uZXJUZXh0ID0g
dGVzdFJ1bm5lci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogICAgICAgICB9CiAgICAgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>