<?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>91315</bug_id>
          
          <creation_ts>2012-07-14 01:19:54 -0700</creation_ts>
          <short_desc>Use testRunner instead of layoutTestController in fast/js, layers, leaks, line-grid, lists, loader, loading, media, mediastream, multicol, and mutation tests</short_desc>
          <delta_ts>2012-07-15 18:42:05 -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>abarth</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>koivisto</cc>
    
    <cc>tkent</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>669767</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-14 01:19:54 -0700</bug_when>
    <thetext>Use testRunner instead of layoutTestController in fast/js, layers, leaks, line-grid, lists, loader, loading, media, mediastream, multicol, and mutation tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669769</commentid>
    <comment_count>1</comment_count>
      <attachid>152415</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-14 01:23:12 -0700</bug_when>
    <thetext>Created attachment 152415
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669982</commentid>
    <comment_count>2</comment_count>
      <attachid>152415</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-15 09:50:47 -0700</bug_when>
    <thetext>Comment on attachment 152415
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670034</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-15 18:42:05 -0700</bug_when>
    <thetext>Committed r122687: &lt;http://trac.webkit.org/changeset/122687&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152415</attachid>
            <date>2012-07-14 01:23:12 -0700</date>
            <delta_ts>2012-07-15 09:50:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91315-20120714012311.patch</filename>
            <type>text/plain</type>
            <size>287186</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEyMjY2MikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBAQAorMjAxMi0wNy0xNCAgUnlvc3VrZSBOaXdhICA8
cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgdGVzdFJ1bm5lciBpbnN0ZWFkIG9mIGxh
eW91dFRlc3RDb250cm9sbGVyIGluIGZhc3QvanMsIGxheWVycywgbGVha3MsIGxpbmUtZ3JpZCwg
bGlzdHMsIGxvYWRlciwgbG9hZGluZywgbWVkaWEsIG1lZGlhc3RyZWFtLCBtdWx0aWNvbCwgYW5k
IG11dGF0aW9uIHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MTMxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmFzdC9qcy86CisgICAgICAgICogZmFzdC9sYXllcnMvYWRkLWxheWVyLXdpdGgt
bmVzdGVkLXN0YWNraW5nLmh0bWw6CisgICAgICAgICogZmFzdC9sYXllcnMvYXNzZXJ0LVJlbmRl
ckxheWVyLXVwZGF0ZS1wb3NpdGlvbnMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2xheWVycy9jbGlw
LXJlY3RzLWFzc2VydGlvbi5odG1sOgorICAgICAgICAqIGZhc3QvbGF5ZXJzL2NsaXAtcmVjdHMt
dHJhbnNmb3JtZWQtMi5odG1sOgorICAgICAgICAqIGZhc3QvbGF5ZXJzL2NsaXAtcmVjdHMtdHJh
bnNmb3JtZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2xheWVycy9nZW5lcmF0ZWQtbGF5ZXItc2Ny
b2xsYmFyLWNyYXNoLmh0bWw6CisgICAgICAgICogZmFzdC9sYXllcnMvaW5saW5lLWRpcnR5LXot
b3JkZXItbGlzdHMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2xheWVycy9sYXllci1jb250ZW50LXZp
c2liaWxpdHktY2hhbmdlLmh0bWw6CisgICAgICAgICogZmFzdC9sYXllcnMvbGF5ZXItdmlzaWJp
bGl0eS5odG1sOgorICAgICAgICAqIGZhc3QvbGF5ZXJzL25lc3RlZC1sYXllcnMtMS5odG1sOgor
ICAgICAgICAqIGZhc3QvbGF5ZXJzL25lc3RlZC1sYXllcnMtMi5odG1sOgorICAgICAgICAqIGZh
c3QvbGF5ZXJzL25lc3RlZC1sYXllcnMtMy5odG1sOgorICAgICAgICAqIGZhc3QvbGF5ZXJzL25l
c3RlZC1sYXllcnMtNC5odG1sOgorICAgICAgICAqIGZhc3QvbGF5ZXJzL3JlbW92ZS1sYXllci13
aXRoLW5lc3RlZC1zdGFja2luZy5odG1sOgorICAgICAgICAqIGZhc3QvbGF5ZXJzL3JlbW92ZS1v
bmx5LXRoaXMtbGF5ZXItdXBkYXRlLmh0bWw6CisgICAgICAgICogZmFzdC9sYXllcnMvcmVtb3Zl
ZC1ieS1zY3JvbGwtaGFuZGxlci5odG1sOgorICAgICAgICAqIGZhc3QvbGF5ZXJzL3Jlc2l6ZS1s
YXllci1kZWxldGlvbi1jcmFzaC5odG1sOgorICAgICAgICAqIGZhc3QvbGF5ZXJzL3Njcm9sbC13
aXRoLXRyYW5zZm9ybS1jb21wb3NpdGVkLWxheWVyLmh0bWw6CisgICAgICAgICogZmFzdC9sYXll
cnMvc2Nyb2xsLXdpdGgtdHJhbnNmb3JtLWxheWVyLmh0bWw6CisgICAgICAgICogZmFzdC9sYXll
cnMvc2Nyb2xsQnlMaW5lcy1vdmVyZmxvdy1uby1sYXllci5odG1sOgorICAgICAgICAqIGZhc3Qv
bGF5ZXJzL3Zpc2libGUtbGF5ZXItd2l0aC1oaWRkZW4tcGFyZW50Lmh0bWw6CisgICAgICAgICog
ZmFzdC9sYXllcnMvemluZGV4LWhpdC10ZXN0Lmh0bWw6CisgICAgICAgICogZmFzdC9sZWFrcy8w
MDEuaHRtbDoKKyAgICAgICAgKiBmYXN0L2xlYWtzLzAwMi5odG1sOgorICAgICAgICAqIGZhc3Qv
bGVha3MvMDAzLmh0bWwtZGlzYWJsZWQ6CisgICAgICAgICogZmFzdC9saW5lLWdyaWQvbGluZS1n
cmlkLW5lc3RlZC5odG1sOgorICAgICAgICAqIGZhc3QvbGlzdHMvYWxwaGEtYm91bmRhcnktdmFs
dWVzLmh0bWw6CisgICAgICAgICogZmFzdC9saXN0cy9hbHBoYS1saXN0LXdyYXAuaHRtbDoKKyAg
ICAgICAgKiBmYXN0L2xpc3RzL2NhbGMtd2lkdGgtd2l0aC1zcGFjZS5odG1sOgorICAgICAgICAq
IGZhc3QvbGlzdHMvZGVjaW1hbC1sZWFkaW5nLXplcm8uaHRtbDoKKyAgICAgICAgKiBmYXN0L2xp
c3RzL2RyYWctaW50by1tYXJrZXIuaHRtbDoKKyAgICAgICAgKiBmYXN0L2xpc3RzL2l0ZW0tbm90
LWluLWxpc3QtbGluZS13cmFwcGluZy5odG1sOgorICAgICAgICAqIGZhc3QvbGlzdHMvbGktdmFs
dWVzLmh0bWw6CisgICAgICAgICogZmFzdC9saXN0cy9saXN0LXN0eWxlLXR5cGUtZHluYW1pYy1j
aGFuZ2UuaHRtbDoKKyAgICAgICAgKiBmYXN0L2xpc3RzL29sLW5lc3RlZC1pdGVtcy1keW5hbWlj
LWluc2VydC5odG1sOgorICAgICAgICAqIGZhc3QvbGlzdHMvb2wtbmVzdGVkLWl0ZW1zLWR5bmFt
aWMtcmVtb3ZlLmh0bWw6CisgICAgICAgICogZmFzdC9saXN0cy9vbC1uZXN0ZWQtaXRlbXMuaHRt
bDoKKyAgICAgICAgKiBmYXN0L2xpc3RzL29sLW5lc3RlZC1saXN0LWR5bmFtaWMtaW5zZXJ0Lmh0
bWw6CisgICAgICAgICogZmFzdC9saXN0cy9vbC1uZXN0ZWQtbGlzdC1keW5hbWljLXJlbW92ZS5o
dG1sOgorICAgICAgICAqIGZhc3QvbGlzdHMvb2wtbmVzdGVkLWxpc3QuaHRtbDoKKyAgICAgICAg
KiBmYXN0L2xpc3RzL29sLXJldmVyc2VkLWR5bmFtaWMtc2ltcGxlLmh0bWw6CisgICAgICAgICog
ZmFzdC9saXN0cy9vbC1yZXZlcnNlZC1keW5hbWljLmh0bWw6CisgICAgICAgICogZmFzdC9saXN0
cy9vbC1yZXZlcnNlZC1uZXN0ZWQtaXRlbXMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2xpc3RzL29s
LXJldmVyc2VkLW5lc3RlZC1saXN0Lmh0bWw6CisgICAgICAgICogZmFzdC9saXN0cy9vbC1yZXZl
cnNlZC1zaW1wbGUuaHRtbDoKKyAgICAgICAgKiBmYXN0L2xpc3RzL29sLXJldmVyc2VkLXNpbXBs
ZS54aHRtbDoKKyAgICAgICAgKiBmYXN0L2xpc3RzL29sLXN0YXJ0LXJvbWFuLmh0bWw6CisgICAg
ICAgICogZmFzdC9saXN0cy9wYXJlbnQtYm94LW5vdC1ib3gtY3Jhc2guaHRtbDoKKyAgICAgICAg
KiBmYXN0L2xpc3RzL3Bvc2l0aW9uZWQtY291bnQtY3Jhc2guaHRtbDoKKyAgICAgICAgKiBmYXN0
L2xpc3RzL3JlbW92ZS1saXN0bWFya2VyLWZyb20tYW5vbmJsb2NrLXdpdGgtY29udGludWF0aW9u
LWNyYXNoLmh0bWw6CisgICAgICAgICogZmFzdC9saXN0cy9yZXNvdXJjZXMvZHVtcC1saXN0Lmpz
OgorICAgICAgICAoZHVtcExpc3RJdGVtQXNIVE1MKToKKyAgICAgICAgKHRlc3RMaXN0SXRlbU1h
cmtlckVxdWFsc0xpc3RJdGVtVGV4dCk6CisgICAgICAgICogZmFzdC9saXN0cy93My1jc3MzLWxp
c3Qtc3R5bGVzLWFscGhhYmV0aWMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2xpc3RzL3czLWNzczMt
bGlzdC1zdHlsZXMtZmFsbGJhY2stc3R5bGUuaHRtbDoKKyAgICAgICAgKiBmYXN0L2xpc3RzL3cz
LWNzczMtbGlzdC1zdHlsZXMtbnVtZXJpYy5odG1sOgorICAgICAgICAqIGZhc3QvbGlzdHMvdzMt
Y3NzMy1saXN0LXN0eWxlcy1zeW1ib2xpYy5odG1sOgorICAgICAgICAqIGZhc3QvbGlzdHMvdzMt
Y3NzMy1sb3dlci1hcm1lbmlhbi5odG1sOgorICAgICAgICAqIGZhc3QvbGlzdHMvdzMtY3NzMy11
cHBlci1hcm1lbmlhbi5odG1sOgorICAgICAgICAqIGZhc3QvbGlzdHMvdzMtbGlzdC1zdHlsZXMu
aHRtbDoKKyAgICAgICAgKiBmYXN0L2xvYWRlci86CisgICAgICAgICogZmFzdC9tZWRpYS9jb2xv
ci1kb2VzLW5vdC1pbmNsdWRlLWFscGhhLmh0bWw6CisgICAgICAgICogZmFzdC9tZWRpYS9pbnZh
bGlkLWxlbmd0aHMuaHRtbDoKKyAgICAgICAgKiBmYXN0L21lZGlhL2xpZmV0aW1lLmh0bWw6Cisg
ICAgICAgICogZmFzdC9tZWRpYS9tYXRjaG1lZGl1bS1xdWVyeS1hcGkuaHRtbDoKKyAgICAgICAg
KiBmYXN0L21lZGlhL21lZGlhLXF1ZXJ5LWxpc3QtMDEuaHRtbDoKKyAgICAgICAgKiBmYXN0L21l
ZGlhL21lZGlhLXF1ZXJ5LWxpc3QtMDIuaHRtbDoKKyAgICAgICAgKiBmYXN0L21lZGlhL21lZGlh
LXF1ZXJ5LWxpc3QtMDMuaHRtbDoKKyAgICAgICAgKiBmYXN0L21lZGlhL21lZGlhLXF1ZXJ5LWxp
c3QtMDQuaHRtbDoKKyAgICAgICAgKiBmYXN0L21lZGlhL21lZGlhLXF1ZXJ5LWxpc3QtMDUuaHRt
bDoKKyAgICAgICAgKiBmYXN0L21lZGlhL21lZGlhLXF1ZXJ5LWxpc3QtMDYuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L21lZGlhL21lZGlhLXF1ZXJ5LWxpc3QtMDcuaHRtbDoKKyAgICAgICAgKiBmYXN0
L21lZGlhL21lZGlhLXF1ZXJ5LWxpc3QtY2FsbGJhY2suaHRtbDoKKyAgICAgICAgKiBmYXN0L21l
ZGlhL21lZGlhLXN2Zy1jcmFzaC5odG1sOgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtcG9pbnRl
ci5odG1sOgorICAgICAgICAqIGZhc3QvbWVkaWEvcHJpbnQtcmVzdG9yZXMtcHJldmlvdXMtbWVk
aWF0eXBlLmh0bWw6CisgICAgICAgICogZmFzdC9tZWRpYS91cGRhdGUtbWVkaWEtcXVlcnktY3Nz
LXBhcnNlci5odG1sOgorICAgICAgICAqIGZhc3QvbWVkaWEvdmlldy1tb2RlLW1lZGlhLWZlYXR1
cmUuaHRtbDoKKyAgICAgICAgKiBmYXN0L211bHRpY29sLzoKKyAgICAgICAgKiBmYXN0L211dGF0
aW9uL2VuZC1vZi10YXNrLWRlbGl2ZXJ5Lmh0bWw6CisgICAgICAgICogZmFzdC9tdXRhdGlvbi9p
bmxpbmUtZXZlbnQtbGlzdGVuZXIuaHRtbDoKKyAgICAgICAgKiBmYXN0L211dGF0aW9uL211dGF0
aW9uLWNhbGxiYWNrLW5vbi1lbGVtZW50LWNyYXNoLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vZmFzdC9sb2FkZXIvY3JlYXRlLXZpZXctdGFyZ2V0LWJsYW5rLmh0bWw6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2RvbmUuaHRtbDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZmFzdC9sb2FkZXIvY3Jhc2gtZGlzcGxheS1sb2NhbC1k
aXJlY3RvcnkuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9sb2FkZXIvZmlsZS11
cmwtbWltZXR5cGVzLTIuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9sb2FkZXIv
ZmlsZS11cmwtbWltZXR5cGVzLTMuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9s
b2FkZXIvZmlsZS11cmwtbWltZXR5cGVzLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zh
c3QvbG9hZGVyL25vbi1odG1sLWxvYWQtZXZlbnQuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvZmFzdC9sb2FkZXIvd2ViYXJjaGl2ZS1lbmNvZGluZy1yZXNwZWN0ZWQuaHRtbDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9xdC9mYXN0L2xvYWRlci91c2VyLXN0eWxlc2hlZXQtcXJjLXBhdGguaHRt
bDoKKwogMjAxMi0wNy0xNCAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgR1RLIGdhcmRlbmluZywgbWFya2luZyBodHRwL3Rlc3RzL21p
c2Mvd2VidGltaW5nLW9yaWdpbnMuaHRtbCBhcyBmbGFreS4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvanMvYWN0aXZhdGlvbi1vYmplY3QtZnVuY3Rpb24tbGlmZXRpbWUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2FjdGl2YXRpb24tb2JqZWN0LWZ1bmN0aW9uLWxpZmV0
aW1lLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvYWN0aXZh
dGlvbi1vYmplY3QtZnVuY3Rpb24tbGlmZXRpbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw4
ICs0LDggQEAgUkVHUkVTU0lPTihyMjczNDQpOiBDcmFzaCBvbiBsb2FkIGF0IGZpbgogPHByZSBp
ZD0iY29uc29sZSI+PC9wcmU+CiAKIDxzY3JpcHQ+Ci1pZiAodGhpcy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAodGhpcy50
ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiBsb2co
cykKIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvYWRkLXRvLXByaW1pdGl2ZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvYWRkLXRvLXByaW1pdGl2ZS5odG1sCShy
ZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2FkZC10by1wcmltaXRpdmUu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTYsOCArMTYsOCBAQCBmdW5jdGlvbiBzaG91bGRCZShh
LCBhRGVzY3JpcHRpb24sIGIpCiAgICAgICAgIGxvZygiRkFJTDogIiArIGFEZXNjcmlwdGlvbiAr
ICIgc2hvdWxkIGJlICIgKyBiICsgIiBidXQgaW5zdGVhZCBpcyAiICsgYSArICIuIik7CiB9CiAK
LWlmICh0aGlzLmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKK2lmICh0aGlzLnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAgICAgCiB2YXIgdmFsdWVPZklzWmVybyA9IHsKICAgICB2YWx1ZU9mOiBmdW5j
dGlvbiB2YWx1ZU9mKCkgeyByZXR1cm4gMDsgfSwKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMv
YXJyYXktZm9yZWFjaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvYXJy
YXktZm9yZWFjaC5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pz
L2FycmF5LWZvcmVhY2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw4ICs2LDggQEAgZnVuY3Rp
b24gcHJpbnQoc3RyKSB7CiAgICAgZG9jdW1lbnQud3JpdGVsbihzdHIrIjxici8+Iik7CiB9CiAK
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvanMvYXJyYXktaW5kZXhvZi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvanMvYXJyYXktaW5kZXhvZi5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2pzL2FycmF5LWluZGV4b2YuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTksOCAr
MTksOCBAQCBkZWxldGUgdGVzdEFycmF5NFsxXTsKIHZhciB0ZXN0QXJyYXk1ID0gWzUsIDUsIDUs
IHVuZGVmaW5lZF07CiBkZWxldGUgdGVzdEFycmF5NVszXTsKIHZhciB0ZXN0QXJyYXk2ID0gbmV3
IEFycmF5KDIwKTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAvLyAtLT4KIDwvc2NyaXB0PgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9qcy9hcnJheS1tYXAuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2pzL2FycmF5LW1hcC5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2pzL2FycmF5LW1hcC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBAQCBm
dW5jdGlvbiBwcmludChzdHIpIHsKICAgICBkb2N1bWVudC53cml0ZWxuKHN0cisiPGJyLz4iKTsK
IH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9qcy9hcnJheS1zb21lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9qcy9hcnJheS1zb21lLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvanMvYXJyYXktc29tZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBA
QCBmdW5jdGlvbiBwcmludChzdHIpIHsKICAgICBkb2N1bWVudC53cml0ZWxuKHN0cisiPGJyLz4i
KTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9qcy9iaXR3aXNlLWFuZC1vbi11bmRlZmluZWQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2JpdHdpc2UtYW5kLW9uLXVuZGVmaW5lZC5odG1s
CShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2JpdHdpc2UtYW5kLW9u
LXVuZGVmaW5lZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw3ICsxMCw3IEBACiAgICAgICAg
IDwvc3R5bGU+CiAgICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KIAotICAg
ICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgICAgICBmdW5jdGlvbiBsb2cobXNn
KSB7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVy
SFRNTCArPSBtc2c7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2NvbnN0cnVjdC1nbG9iYWwt
b2JqZWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9jb25zdHJ1Y3Qt
Z2xvYmFsLW9iamVjdC5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2pzL2NvbnN0cnVjdC1nbG9iYWwtb2JqZWN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIwLDgg
KzIwLDggQEAgZnVuY3Rpb24gc2hvdWxkQmUoYSwgYURlc2NyaXB0aW9uLCBiKQogICAgICAgICBs
b2coIkZBSUw6ICIgKyBhRGVzY3JpcHRpb24gKyAiIHNob3VsZCBiZSAiICsgYiArICIgYnV0IGlu
c3RlYWQgaXMgIiArIGEgKyAiLiIpOwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnJhbWVzWzBdLmRv
Y3VtZW50Lm9wZW4oKTsKIGZyYW1lc1swXS5kb2N1bWVudC53cml0ZSgiPFxzY3JpcHQ+ZnVuY3Rp
b24gTygpIHsgfTwvc2NyaXB0XD4iKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvZGVsZXRl
LWZ1bmN0aW9uLXBhcmFtZXRlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
anMvZGVsZXRlLWZ1bmN0aW9uLXBhcmFtZXRlci5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2pzL2RlbGV0ZS1mdW5jdGlvbi1wYXJhbWV0ZXIuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxwPlRoaXMgcGFnZSB2ZXJpZmllcyB0aGF0IGZ1bmN0
aW9uIHBhcmFtZXRlcnMgY2Fubm90IGJlIGRlbGV0ZWQuPC9wPgogPHByZSBpZD0iY29uc29sZSI+
PC9wcmU+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIGxvZyhzKQogewpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9qcy9kaXJlY3QtZW50cnktdG8tZnVuY3Rpb24tY29kZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvZGlyZWN0LWVudHJ5LXRvLWZ1bmN0
aW9uLWNvZGUuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9k
aXJlY3QtZW50cnktdG8tZnVuY3Rpb24tY29kZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogPCEtLSBUaGlzIHRlc3QgY292ZXJzIHJlLWVudHJ5IHRvIGdsb2JhbCBjb2RlIGZy
b20gYSBmdW5jdGlvbiBub2RlLCB3aXRob3V0IGV2ZXIgZXhlY3V0aW5nIGdsb2JhbCBjb2RlIHBy
aW9yIHRvIHRoZSBmaXJzdCBmdW5jdGlvbiBjYWxsLgogICAtLT4KLTxib2R5IGlkPSJib2R5Tm9k
ZSIgb25sb2FkPSJkb2N1bWVudC53cml0ZSgnPHNjcmlwdCcgKyAnPicgKyAndmFyIHggPSAwOyB2
YXIgeSA9IDE7IHZhciB6ID0gMjsgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOyBkb2N1bWVudC53cml0ZShcJzxkaXY+VGhp
cyB0ZXN0IGVuc3VyZXMgdGhhdCB3ZSBjYW4gZGlyZWN0bHkgZW50ZXIgSlMgZnVuY3Rpb24gY29k
ZSBhbmQgcmUtZW50ZXIgZ2xvYmFsbHkgd2l0aG91dCBhbnkgaW5pdGlhbCBnbG9iYWwgY29kZSBi
ZWluZyBleGVjdXRlZC48L2Rpdj5cJyknICsgJzwvc2NyaXB0JyArICc+Jyk7Ij4KKzxib2R5IGlk
PSJib2R5Tm9kZSIgb25sb2FkPSJkb2N1bWVudC53cml0ZSgnPHNjcmlwdCcgKyAnPicgKyAndmFy
IHggPSAwOyB2YXIgeSA9IDE7IHZhciB6ID0gMjsgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsgZG9jdW1lbnQud3JpdGUoXCc8ZGl2PlRoaXMgdGVzdCBlbnN1
cmVzIHRoYXQgd2UgY2FuIGRpcmVjdGx5IGVudGVyIEpTIGZ1bmN0aW9uIGNvZGUgYW5kIHJlLWVu
dGVyIGdsb2JhbGx5IHdpdGhvdXQgYW55IGluaXRpYWwgZ2xvYmFsIGNvZGUgYmVpbmcgZXhlY3V0
ZWQuPC9kaXY+XCcpJyArICc8L3NjcmlwdCcgKyAnPicpOyI+CiAgICAgVGhpcyB0ZXN0IG1ha2Vz
IHN1cmUgSlMgY2FuIGVudGVyIGEgZnVuY3Rpb24gZGlyZWN0bHkgd2l0aG91dCBmaXJzdCBleGVj
dXRpbmcgZ2xvYmFsIGNvZGUuCiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2Rv
LXdoaWxlLWV4cHJlc3Npb24tdmFsdWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2pzL2RvLXdoaWxlLWV4cHJlc3Npb24tdmFsdWUuaHRtbAkocmV2aXNpb24gMTIyNTUxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9qcy9kby13aGlsZS1leHByZXNzaW9uLXZhbHVlLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KIAog
PHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiBsb2cocykKIHsKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvanMvZG8td2hpbGUtd2l0aG91dC1zZW1pY29sb24uaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2RvLXdoaWxlLXdpdGhvdXQtc2VtaWNvbG9uLmh0bWwJ
KHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvZG8td2hpbGUtd2l0aG91
dC1zZW1pY29sb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw4ICs4LDggQEAgZnVuY3Rpb24g
cGFzcygpCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwg
PSAiUEFTUzogU2NyaXB0IGZvbGxvd2luZyBkby93aGlsZSBzdGF0ZW1lbnQgZXhlY3V0ZWQuIjsK
IH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAKIGRve313aGlsZShmYWxzZSlwYXNzKCk7CiA8L3NjcmlwdD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvZW5jb2RlLVVSSS10ZXN0Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9lbmNvZGUtVVJJLXRlc3QuaHRtbAkocmV2aXNpb24g
MTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9lbmNvZGUtVVJJLXRlc3QuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTEsNyArMTEsNyBAQAogCiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIAogLy8gLS0tLS0tLS0KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9q
cy9ldmFsLWNyb3NzLXdpbmRvdy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
anMvZXZhbC1jcm9zcy13aW5kb3cuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9qcy9ldmFsLWNyb3NzLXdpbmRvdy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw4
ICsxMiw4IEBAIGFzc29jaWF0ZWQgd2l0aCwgZXZhbCB0aHJvd3MgYW4gZXhjZXB0aW8KIDxpZnJh
bWUgc3R5bGU9IndpZHRoOjA7IGhlaWdodDowIj48L2lmcmFtZT4KIAogPHNjcmlwdD4KLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogICAgIAogdmFyIHRvcEV2YWwgPSBldmFsOwogdmFyIGZyYW1lRXZhbCA9IGZyYW1l
c1swXS5ldmFsOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9ldmFsLWtleXdvcmQtdnMtZnVu
Y3Rpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2V2YWwta2V5d29y
ZC12cy1mdW5jdGlvbi5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2pzL2V2YWwta2V5d29yZC12cy1mdW5jdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw4
ICsxMiw4IEBAIGludG8gYSBnbG9iYWwgdmFyaWFibGUgKCJnbG9iYWxFdmFsIikgb3IKIDxwcmUg
aWQ9ImNvbnNvbGUiPjwvcHJlPgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgCiB2YXIg
Z2xvYmFsRXZhbCA9IGV2YWw7CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvZXZhbC1vdmVy
cmlkaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9ldmFsLW92ZXJy
aWRpbmcuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9ldmFs
LW92ZXJyaWRpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw4ICs0LDggQEAKIDxocj4KIAog
PHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIAogdmFyIHggPSAiYnVpbHQtaW4gZXZhbCI7CiAK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvZXhjZXB0aW9uLWNvZGVnZW4tY3Jhc2guaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2V4Y2VwdGlvbi1jb2RlZ2VuLWNyYXNo
Lmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvZXhjZXB0aW9u
LWNvZGVnZW4tY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw4ICs0LDggQEAKIDwvcD4K
IAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiB2YXIgc2NyaXB0cyA9IFsKICAgICAiKDErKyku
eDsiLApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9leGNlcHRpb24tc2VxdWVuY2luZy1iaW5v
cHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9leGNlcHRpb24tc2VxdWVu
Y2luZy1iaW5vcHMuanMJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMv
ZXhjZXB0aW9uLXNlcXVlbmNpbmctYmlub3BzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAotaWYgKHRoaXMubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHRoaXMudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIAogaWYgKHRoaXMuZG9jdW1lbnQpIHsKICAgICBsb2cgPSBmdW5jdGlv
bihtc2cpIHtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1zZyAr
ICI8YnIgLz4iO307CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2V4Y2VwdGlvbi1zZXF1ZW5j
aW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9leGNlcHRpb24tc2Vx
dWVuY2luZy5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2V4
Y2VwdGlvbi1zZXF1ZW5jaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsOCArNiw4IEBAIFRl
c3QgZXhjZXB0aW9uIGhhbmRsaW5nIHdpdGggdmFyaW91cyBhcmkKIDwvdWw+CiA8ZGl2IGlkPSJs
b2ciPjwvZGl2PgogPHNjcmlwdD4KLWlmICh0aGlzLmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh0aGlzLnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGlmICh0aGlzLmRvY3VtZW50KSB7CiAg
ICAgbG9nID0gZnVuY3Rpb24obXNnKSB7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlu
bmVySFRNTCArPSBtc2cgKyAiPGJyIC8+Ijt9OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9l
eGNlcHRpb24tdGhyb3duLWZyb20tZXF1YWwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2pzL2V4Y2VwdGlvbi10aHJvd24tZnJvbS1lcXVhbC5odG1sCShyZXZpc2lvbiAxMjI1
NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2V4Y2VwdGlvbi10aHJvd24tZnJvbS1lcXVhbC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw4ICsxOCw4IEBAIGZ1bmN0aW9uIHNob3VsZFRocm93
KGV4cHJlc3Npb24sIGV4Y2VwdGkKICAgICAgICAgbG9nKCJGQUlMOiAiICsgZXhwcmVzc2lvbiAr
ICIgc2hvdWxkIHRocm93IGEgIiArIGV4Y2VwdGlvbiArICIsIGJ1dCBkaWRuJ3QuIik7CiB9CiAK
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogCiB2YXIgbyA9IHsKICAgICB2YWx1ZU9mOiBmdW5jdGlvbigpIHsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMvZXhjZXB0aW9uLXRocm93bi1mcm9tLWV2YWwtaW5zaWRl
LWNsb3N1cmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2V4Y2VwdGlv
bi10aHJvd24tZnJvbS1ldmFsLWluc2lkZS1jbG9zdXJlLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvanMvZXhjZXB0aW9uLXRocm93bi1mcm9tLWV2YWwtaW5zaWRl
LWNsb3N1cmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsOCBAQCBmdW5jdGlvbiBz
aG91bGRCZShhRGVzY3JpcHRpb24sIGEsIGIpCiAgICAgfQogfQogCi1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAog
Ly8gQ3JlYXRlIGEgZnVuY3Rpb24gd2l0aCBhbiBhY3RpdmF0aW9uLgogKGZ1bmN0aW9uICgpIHsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvZXhjZXB0aW9uLXRocm93bi1mcm9tLWZ1bmN0aW9u
LXdpdGgtbGF6eS1hY3RpdmF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9qcy9leGNlcHRpb24tdGhyb3duLWZyb20tZnVuY3Rpb24td2l0aC1sYXp5LWFjdGl2YXRpb24u
aHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9leGNlcHRpb24t
dGhyb3duLWZyb20tZnVuY3Rpb24td2l0aC1sYXp5LWFjdGl2YXRpb24uaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMjAsOCArMjAsOCBAQCBmdW5jdGlvbiBzaG91bGRCZShhRGVzY3JpcHRpb24sIGEs
IGIpCiAgICAgfQogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogdHJ5IHsKICAgICAvLyBMYXppbHkgY3Jl
YXRlIGFuIGFjdGl2YXRpb24gZm9yIGEgZnVuY3Rpb24gdGhhdCBvdGhlcndpc2Ugd291bGRuJ3Qg
bmVlZCBvbmUsIHRoZW4gdGhyb3cuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2V4Y2VwdGlv
bi10aHJvd24tZnJvbS1uZXcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pz
L2V4Y2VwdGlvbi10aHJvd24tZnJvbS1uZXcuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9qcy9leGNlcHRpb24tdGhyb3duLWZyb20tbmV3Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTIwLDggKzIwLDggQEAgZnVuY3Rpb24gc2hvdWxkQmUoYSwgYURlc2NyaXB0aW9u
LCBiKQogICAgIGxvZyAoIkZBSUw6ICIgKyBhRGVzY3JpcHRpb24gKyAiIHNob3VsZCBiZSAnIiAr
IFN0cmluZyhiKSArICInIGJ1dCBpbnN0ZWFkIGlzICciICsgU3RyaW5nKGEpICsgIicuIik7CiB9
CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogCiAoZnVuY3Rpb24gKCkgewogICAgIHRyeSB7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2pzL2V4Y2VwdGlvbnMtdGhyb3duLWluLWNhbGxiYWNrcy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvZXhjZXB0aW9ucy10aHJvd24taW4tY2FsbGJh
Y2tzLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvZXhjZXB0
aW9ucy10aHJvd24taW4tY2FsbGJhY2tzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4
IEBACiBUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IGV4Y2VwdGlvbnMgYXJlIGhhbmRsZWQgY29ycmVj
dGx5IGJ5IHRoZSB2YXJpb3VzIGNhbGxiYWNrIG1lY2hhbmlzbXMgcHJlc2VudCBpbiBXZWJDb3Jl
LgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIHZh
ciBkYiA9IG9wZW5EYXRhYmFzZSgiZXhjZXB0aW9uLWluZm8tdGVzdCIsICIxLjAiLCAiVGVzdCBm
b3IgZXhjZXB0aW9uIGluZm9ybWF0aW9uIHRocm93biBieSBjYWxsYmFja3MgYW5kIHRpbWVycyIs
IDEpOwpAQCAtMzYsOCArMzYsOCBAQCBmdW5jdGlvbiBkYlN0YXRlbWVudFRlc3QoKSB7CiB9CiAK
IGZ1bmN0aW9uIHRpbWVyVGVzdCgpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgICBzZXRUaW1lb3V0KCJsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCkiLCAwKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHNldFRpbWVvdXQo
InRlc3RSdW5uZXIubm90aWZ5RG9uZSgpIiwgMCk7CiAgICAgdGhyb3cgZXJyb3JPYmplY3QoInRp
bWVyIik7CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvZXhlYy1zdGF0ZS1tYXJraW5n
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9leGVjLXN0YXRlLW1hcmtp
bmcuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9leGVjLXN0
YXRlLW1hcmtpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOTEsOCArOTEsOCBAQCBmdW5jdGlv
biBmKCkKICAgICByZXR1cm4gdjEgKyB2MiArIHYzICsgdjQgKyB2NTsKIH0KIAotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiAKIHNob3VsZEJlKGYoKSwgImYoKSIsICIxMjM0NSIpOwogPC9zY3JpcHQ+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2pzL2Zsb2F0aW5nLXBvaW50LXRydW5jYXRlLXJzaGlmdC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvZmxvYXRpbmctcG9pbnQtdHJ1bmNhdGUt
cnNoaWZ0Lmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvZmxv
YXRpbmctcG9pbnQtdHJ1bmNhdGUtcnNoaWZ0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCAr
MSw4IEBACiA8Ym9keT4KIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiB2YXIgbGFyZ2VOZWcg
PSAtMjcxNTIyODA3MjsKIGlmICgobGFyZ2VOZWcgPj4+IDUpID09IDQ5MzY2ODUwKQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9qcy9mdW5jdGlvbi1hcmd1bWVudC1ldmFsdWF0aW9uLWJlZm9yZS1l
eGNlcHRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2Z1bmN0aW9u
LWFyZ3VtZW50LWV2YWx1YXRpb24tYmVmb3JlLWV4Y2VwdGlvbi5odG1sCShyZXZpc2lvbiAxMjI1
NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2Z1bmN0aW9uLWFyZ3VtZW50LWV2YWx1YXRpb24t
YmVmb3JlLWV4Y2VwdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQsOCBAQCBpZiB0
aGUgY2FsbCB0aHJvd3MgYSAibm90IGEgZnVuY3Rpb24iIGV4CiA8cHJlIGlkPSJjb25zb2xlIj5G
QUlMOiBhcmd1bWVudHMgd2VyZSBub3QgZXZhbHVhdGVkLjwvcHJlPgogCiA8c2NyaXB0PgotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAKIHdpbmRvdy5fX2RlZmluZUdldHRlcl9fKCJ4IiwgZnVuY3Rpb24oKSB7IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MID0gIlBBU1M6IGFyZ3Vt
ZW50cyB3ZXJlIGV2YWx1YXRlZCI7IH0pOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2Z1
bmN0aW9uLWFyZ3VtZW50LWV2YWx1YXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2pzL2Z1bmN0aW9uLWFyZ3VtZW50LWV2YWx1YXRpb24uaHRtbAkocmV2aXNpb24gMTIy
NTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9mdW5jdGlvbi1hcmd1bWVudC1ldmFsdWF0aW9u
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDggQEAgZnVuY3Rpb24gdGVzdDIoY2Fs
bGJhY2ssIHgpIHsKIH07CiAKIChmdW5jdGlvbiAoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiAKICAgICB2YXIgY2FsbGJhY2sgPSBmdW5jdGlvbiBjYWxsYmFjayh4KSB7CiAgICAg
ICAgIHJldHVybiB4OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9mdW5jdGlvbi1kZWNsYXJh
dGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2Z1bmN0aW9uLWRl
Y2xhcmF0aW9ucy5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pz
L2Z1bmN0aW9uLWRlY2xhcmF0aW9ucy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBA
QAogPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAg
ICAKIGZ1bmN0aW9uIGxvZyhzKQogewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9mdW5jdGlv
bi1kb3QtYXJndW1lbnRzMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMv
ZnVuY3Rpb24tZG90LWFyZ3VtZW50czIuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9qcy9mdW5jdGlvbi1kb3QtYXJndW1lbnRzMi5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw4ICsyMyw4IEBAIGZ1bmN0aW9uIHNob3VsZEJlTm9FdmFsKGFEZXNjcmlwdGlvbiwg
YSwKICAgICBsb2coIkZBSUw6ICIgKyBhRGVzY3JpcHRpb24gKyAiIHNob3VsZCBiZSAiICsgYiAr
ICIgYnV0IGluc3RlYWQgaXMgIiArIGEgKyAiLiIpOwogfQogCi1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogLy8g
ZXZhbCBzaG91bGQgbGF6aWx5IGNyZWF0ZSAnYXJndW1lbnRzJy4KIGZ1bmN0aW9uIGYxKCkgewpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9mdW5jdGlvbi1kb3QtYXJndW1lbnRzLWFuZC1jYWxs
ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2Z1bmN0aW9uLWRvdC1h
cmd1bWVudHMtYW5kLWNhbGxlci5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2pzL2Z1bmN0aW9uLWRvdC1hcmd1bWVudHMtYW5kLWNhbGxlci5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBAIGZ1bmN0aW9uIGxvZyhzKQogICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUocyArICJcbiIpKTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIGYoKSB7IHJldHVy
biB0aGlzLmV2YWwoJ2YuYXJndW1lbnRzIGluc3RhbmNlb2YgT2JqZWN0ID8gIlBBU1MiIDogIkZB
SUwiJyk7IH0KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9mdW5jdGlvbi1wcm90b3R5cGUu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2Z1bmN0aW9uLXByb3RvdHlw
ZS5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2Z1bmN0aW9u
LXByb3RvdHlwZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDkgKzIsOSBAQAogPGhlYWQ+CiA8
c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogfQogPC9zY3JpcHQ+
CiA8L2hlYWQ+CkBAIC0zNCw4ICszNCw4IEBAIHNob3VsZEJlKCJhY3R1YWwiLCAiJ2Z1bmN0aW9u
ICgpIHsgfSciKTsKIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogPC9zY3JpcHQ+
CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2dsb2JhbC1yZWN1
cnNpb24tb24tZnVsbC1zdGFjay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
anMvZ2xvYmFsLXJlY3Vyc2lvbi1vbi1mdWxsLXN0YWNrLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvanMvZ2xvYmFsLXJlY3Vyc2lvbi1vbi1mdWxsLXN0YWNrLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiBUaGlzIHRlc3RzIGdsb2JhbCBjb2Rl
IHJlY3Vyc2lvbiB3aGVuIHRoZSBKUyBzdGFjayBpcyBmdWxsLgogPGRpdiBpZD0icmVzdWx0Ij5Q
QVNTOiBFbnRlcmluZyBnbG9iYWwgY29kZSB3aXRoIGEgZnVsbCBKUyBzdGFjayBkaWQgbm90IGNy
YXNoLCBhbmQgZGlkIG5vdCBhbGxvdyBjb250aW51ZWQgcmVjdXJzaW9uLjwvaWQ+CiA8c2NyaXB0
PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiAKIHZhciBkZXB0aCA9IDA7CiBmdW5jdGlvbiBmKGEsIGIsIGMsIGQp
IHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvZ2xvYmFsLXZhci1saW1pdC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvZ2xvYmFsLXZhci1saW1pdC5odG1sCShyZXZp
c2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2dsb2JhbC12YXItbGltaXQuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtNCw4ICs0LDggQEAKIDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJl
PgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHZhciBwYXNzID0gIlBBU1M6IEV4aXN0aW5n
IGdsb2JhbCB2YXIgc3Vydml2ZWQuXG4iOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2lt
cGxpY2l0LWdsb2JhbC10by1nbG9iYWwtcmVlbnRyeS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvanMvaW1wbGljaXQtZ2xvYmFsLXRvLWdsb2JhbC1yZWVudHJ5Lmh0bWwJKHJl
dmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvaW1wbGljaXQtZ2xvYmFsLXRv
LWdsb2JhbC1yZWVudHJ5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiBUaGlz
IHRlc3QgZW5zdXJlIHRoYXQgZ2xvYmFsLXRvLWdsb2JhbCByZS1lbnRyeSB3b3JrcyBjb3JyZWN0
bHkgYW5kIGRvZXMgbm90IGNsb2JiZXIgYW55dGhpbmcuICBUaGlzIHBhc3NlcyBpZiBpdCBkb2Vz
IG5vdCBjcmFzaC4KIDxzY3JpcHQ+Ci1pZiAodGhpcy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAodGhpcy50ZXN0UnVubmVy
KQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogdHJ5IHsKICAgICAvLyBUaGUgaW1wb3J0
YW50IHBhcnQgb2YgdGhlIHRlc3QgaXMgdGhlIGdsb2JhbCByZWVudHJ5IGZyb20gdGhlIGRvY3Vt
ZW50LndyaXRlIHBhc3NlZCBpbXBsaWNpdGx5IHRvIGV2YWwKICAgICAvLyB0aGUgcmVzdCBpcyBq
dXN0IHRvIGVuc3VyZSB0aGUgdGVzdCBjcmFoZXMgcmVsaWFibHkgKGVycnIuLi4gb3Igc29tZXRo
aW5nKSBpZiBzb21ldGhpbmcgZ29lcyB3cm9uZyB3aXRoCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2pzL2ludmFsaWQtc3ludGF4LWZvci1mdW5jdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvanMvaW52YWxpZC1zeW50YXgtZm9yLWZ1bmN0aW9uLmh0bWwJKHJldmlzaW9u
IDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvaW52YWxpZC1zeW50YXgtZm9yLWZ1bmN0
aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsNiArMyw2IEBACiAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDI1CiA8L2JvZHk+CiA8c2NyaXB0PgotaWYg
KHRoaXMubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CitpZiAodGhpcy50ZXN0UnVubmVyKQorICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvbGV4aWNhbC1sb29rdXAt
aW4tZnVuY3Rpb24tY29uc3RydWN0b3IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2pzL2xleGljYWwtbG9va3VwLWluLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmh0bWwJKHJldmlz
aW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvbGV4aWNhbC1sb29rdXAtaW4tZnVu
Y3Rpb24tY29uc3RydWN0b3IuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIDxz
Y3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKIAogbWVzc2FnZSA9ICJGQUlMVVJFIChCYWQgbG9va3VwKSI7
CiBmdW5jdGlvbiBkb1Rlc3QoKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL21pc3Npbmct
c3R5bGUtZW5kLXRhZy1qcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMv
bWlzc2luZy1zdHlsZS1lbmQtdGFnLWpzLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvanMvbWlzc2luZy1zdHlsZS1lbmQtdGFnLWpzLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTMsOSArMyw5IEBACiA8c3R5bGU+CiAuZGlmZmVyZW50IHsgY29sb3I6ICMwMDAwZmY7
IH0KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBQaXhlbHMoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVt
cFBpeGVscygpOwogICAgIH0KIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL25hdmlnYXRv
ci1sYW5ndWFnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvbmF2aWdh
dG9yLWxhbmd1YWdlLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
anMvbmF2aWdhdG9yLWxhbmd1YWdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksOSArOSw5IEBA
IGRlc2NyaXB0aW9uKAogICAgICI8cHJlPkNoZWNrIHJldHVybiB2YWx1ZSBvZiBuYXZpZ2F0b3Iu
bGFuZ3VhZ2UuIgogKTsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRQT1NJWExvY2FsZSgiZW5fVVMuaXNvODg1OTEiKTsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuc2V0
UE9TSVhMb2NhbGUoImVuX1VTLmlzbzg4NTkxIik7CiB9CiAKIHZhciBsYW5ndWFnZSA9IG5hdmln
YXRvci5sYW5ndWFnZS50b0xvd2VyQ2FzZSgpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9u
YXZpZ2F0b3ItcGx1Z2lucy1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvanMvbmF2aWdhdG9yLXBsdWdpbnMtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9qcy9uYXZpZ2F0b3ItcGx1Z2lucy1jcmFzaC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPGh0bWw+CiA8c2NyaXB0PgogCi1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogCiB2YXIgcGx1Z2lucyA9IG5ldyBBcnJheTsKIGZvciAodmFyIGkgPSAwOyBpIDwg
bmF2aWdhdG9yLnBsdWdpbnMubGVuZ3RoOyArK2kpIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
anMvbmVnYXRlLW92ZXJmbG93Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9q
cy9uZWdhdGUtb3ZlcmZsb3cuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9qcy9uZWdhdGUtb3ZlcmZsb3cuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjQsOCArMjQs
OCBAQCBmdW5jdGlvbiBzaG91bGRCZShhRGVzY3JpcHRpb24sIGEsIGIpCiB9CiAKIChmdW5jdGlv
biAoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAvLyBDYW4gYmUgY29u
c3RhbnQtZm9sZGVkIGJ5IHRoZSBwYXJzZXIuCiAgICAgdmFyIHggPSAtKC0yMTQ3NDgzNjQ4KTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvbmVzdGVkLWZ1bmN0aW9uLXNjb3BlLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9uZXN0ZWQtZnVuY3Rpb24tc2NvcGUuaHRt
bAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9uZXN0ZWQtZnVuY3Rp
b24tc2NvcGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTYsOCArMTYsOCBAQCBmdW5jdGlvbiBz
aG91bGRCZShldmFsQSwgYSwgYikKICAgICB9CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBsb2coIkJl
Zm9yZSBwYXJzaW5nIGY6Iik7CiBsb2coIi0tLS0tIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2pzL3JlZ2V4cC1jYWNoaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9q
cy9yZWdleHAtY2FjaGluZy5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2pzL3JlZ2V4cC1jYWNoaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDggKzQ1LDgg
QEAgZnVuY3Rpb24gcHJpbnRQcm9wZXJ0aWVzKG9iamVjdCkKIH0KIAogZnVuY3Rpb24gdGVzdCgp
IHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSAgCi0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
ICAKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBwcmludCgiUHJvcGVy
dGllcyBvZiBSZWdFeHAgYXQgc3RhcnR1cDoiKTsKICAgICBwcmludFByb3BlcnRpZXNXaXRoUmVh
ZE9ubHkoUmVnRXhwKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVnZXhwLWNoYXJjbGFz
cy1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVnZXhwLWNo
YXJjbGFzcy1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2pzL3JlZ2V4cC1jaGFyY2xhc3MtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsx
LDcgQEAKIDxwPlRlc3RzIGEgY3Jhc2ggaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBlbmdpbmUu
IElmIHRoaXMgdGVzdCBwcmludHMgYSBQQVNTIG1lc3NhZ2UsIHRoZW4gaXQgc3VjY2VlZGVkLjwv
cD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIHZhciBzdHJpbmcgPSAiIjsKIGZvciAoaSA9IDA7
IGkgPCAxMDAwOyArK2kpCiAgICAgc3RyaW5nICs9ICJbWyoqXV0iOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9qcy9yZWdleHAtdGVzdC1udWxsLXN0cmluZy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvanMvcmVnZXhwLXRlc3QtbnVsbC1zdHJpbmcuaHRtbAkocmV2aXNpb24g
MTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdleHAtdGVzdC1udWxsLXN0cmluZy5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw4IEBAIGZ1bmN0aW9uIHNob3VsZEJlKGEs
IGFEZXNjcmlwdGlvbiwgYikKICAgICBsb2cgKCJGQUlMOiAiICsgYURlc2NyaXB0aW9uICsgIiBz
aG91bGQgYmUgJyIgKyBTdHJpbmcoYikgKyAiJyBidXQgaW5zdGVhZCBpcyAnIiArIFN0cmluZyhh
KSArICInLiIpOwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogdmFyIHJlc3VsdCA9IC9kZWZpbmUvLnRl
c3QoKTsKIHNob3VsZEJlKHJlc3VsdCwgInJlc3VsdCIsIHRydWUpOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9qcy9zYW1lLW9yaWdpbi1zdWJmcmFtZS1hYm91dC1ibGFuay5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvc2FtZS1vcmlnaW4tc3ViZnJhbWUtYWJvdXQtYmxh
bmsuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9zYW1lLW9y
aWdpbi1zdWJmcmFtZS1hYm91dC1ibGFuay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE2ICsx
LDE2IEBACiA8aHRtbD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0K
IAogdmFyIHRhcmdldDsKIGZ1bmN0aW9uIGNoZWNrX2JsYW5rKCkgewogICB2YXIgeCA9IHRhcmdl
dC5sb2NhdGlvbi5wcml2YXRlOwogICByZXN1bHQuaW5uZXJIVE1MID0gIlRlc3QgUEFTU0VEIjsK
LSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKIH0KIAogZnVuY3Rpb24gcmVsb2FkX2JsYW5rKCkgewpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctcmVwbGFjZS1leGNlcHRpb24tY3Jhc2guaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3N0cmluZy1yZXBsYWNlLWV4Y2VwdGlv
bi1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3N0
cmluZy1yZXBsYWNlLWV4Y2VwdGlvbi1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw4
ICsxMyw4IEBAIGZ1bmN0aW9uIGxvZyhzKQogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b25zb2xlIikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocyArICJcbiIpKTsK
IH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAKIC8vIHRoZXNlIHNob3VsZCBub3QgY3Jhc2gKIApJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9qcy90ZXh0LWZpZWxkLXJlc2l6ZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvanMvdGV4dC1maWVsZC1yZXNpemUuaHRtbAkocmV2aXNpb24gMTIy
NTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy90ZXh0LWZpZWxkLXJlc2l6ZS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPEhUTUw+CiA8SEVBRD4KIDxTQ1JJUFQ+Ci1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKIAogZnVuY3Rpb24gbG9nKHMpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pz
L3Rocm93LWZyb20tYXJyYXktc29ydC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvanMvdGhyb3ctZnJvbS1hcnJheS1zb3J0Lmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvanMvdGhyb3ctZnJvbS1hcnJheS1zb3J0Lmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTksOCArOSw4IEBAIGZ1bmN0aW9uIGxvZyhzKQogICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MID0gcyArICJcbiI7CiB9CiAKLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwogCiB2YXIgcGFzc2VkID0gdHJ1ZTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy90b1N0
cmluZy1hbmQtdmFsdWVPZi1vdmVycmlkZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvanMvdG9TdHJpbmctYW5kLXZhbHVlT2Ytb3ZlcnJpZGUuaHRtbAkocmV2aXNpb24gMTIy
NTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy90b1N0cmluZy1hbmQtdmFsdWVPZi1vdmVycmlk
ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02OSw4ICs2OSw4IEBACiAKICAgICAgICAgZnVuY3Rp
b24gcnVuVGVzdHMoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICAgICAgdGVzdCgnc3Bhbics
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7CiAKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvanMvdG9TdHJpbmctZG9udEVudW0uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2pzL3RvU3RyaW5nLWRvbnRFbnVtLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvanMvdG9TdHJpbmctZG9udEVudW0uaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MjEsOCArMjEsOCBAQAogCiAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICAgICAgewot
ICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiAKICAgICAgICAgICAgIC8vIERPTSBvYmplY3RzIHdpdGggY3VzdG9tIHRvU3RyaW5nKCkg
ZnVuY3Rpb25zCiAgICAgICAgICAgICB0ZXN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKSwg
IkhUTUxBbmNob3JFbGVtZW50Iik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3RyaXZpYWwt
ZnVuY3Rpb25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy90cml2aWFs
LWZ1bmN0aW9ucy5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pz
L3RyaXZpYWwtZnVuY3Rpb25zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDggQEAg
ZnVuY3Rpb24gc2hvdWxkQmUoYURlc2NyaXB0aW9uLCBhLCBiKQogZnVuY3Rpb24gZjEoYSwgYikg
eyByZXR1cm4gYVtiXTsgfQogZnVuY3Rpb24gZjIoYSwgYiwgYykgeyByZXR1cm4gYVtiXSA9IGM7
IH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAKIHNob3VsZEJlKCJmMSgwLCAwKSIsIGYxKDAsIDApLCB1bmRl
ZmluZWQpOwogc2hvdWxkQmUoImYyKDAsIDAsIDApIiwgZjIoMCwgMCwgMCksIDApOwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9qcy90cnktY2F0Y2gtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2pzL3RyeS1jYXRjaC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjI1NTEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3RyeS1jYXRjaC1jcmFzaC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDggKzEsOCBAQAogVGhpcyB0ZXN0IGNoZWNrcyB3aGV0aGVyIGZ1bmt5IHNjb3Bl
IGNoYWlucyBjcmVhdGVkIGJ5IGNhdGNoIGJsb2NrcwogYXJlIHByb3Blcmx5IHByb3RlY3RlZCBm
cm9tIEdDLiBJdCBzaG91bGQgbm90IGNyYXNoLgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBm
dW5jdGlvbiBUZXN0X0Vycm9yKCkgewogICAgIGZvciggdmFyIGkgPSAwOyBpIDw9IDUwMDA7IGkr
KyApIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvdW5jYXVnaHQtZXhjZXB0aW9uLWxpbmUt
bnVtYmVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy91bmNhdWdodC1l
eGNlcHRpb24tbGluZS1udW1iZXIuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9qcy91bmNhdWdodC1leGNlcHRpb24tbGluZS1udW1iZXIuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtNSw3ICs1LDcgQEAgZXhhbXBsZSBmb3IgZGlzcGxheSBpbiB0aGUgSmF2YVNjcmlw
dCBlcgogbG9vayBpbiB0aGUgSlMgY29uc29sZSBmb3IgYW4gdW5jYXVnaHQgZXhjZXB0aW9uIG9u
IGxpbmUgMTEuPGJyPgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gZm9vKCkgewogICB0aHJv
dyAndWggb2gsIGFuIGV4Y2VwdGlvbiEnOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy92YXIt
ZGVjbGFyYXRpb25zLXNoYWRvd2luZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvanMvdmFyLWRlY2xhcmF0aW9ucy1zaGFkb3dpbmcuaHRtbAkocmV2aXNpb24gMTIyNTUxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9qcy92YXItZGVjbGFyYXRpb25zLXNoYWRvd2luZy5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBAIElmIHRoZSB0ZXN0IHBhc3NlcywgeW91J2xs
IHNlZSBhIHNlcmllcyAKIDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgogCiA8c2NyaXB0PgotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAKIGZ1bmN0aW9uIGxvZyhzKQogewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9q
cy92YXItZGVjbGFyYXRpb25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9q
cy92YXItZGVjbGFyYXRpb25zLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvanMvdmFyLWRlY2xhcmF0aW9ucy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIs
OCBAQAogPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
ICAgICAKIGZ1bmN0aW9uIGxvZyhzKQogewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy92YXJk
ZWNsLXByZXNlcnZlLXBhcmFtZXRlcnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2pzL3ZhcmRlY2wtcHJlc2VydmUtcGFyYW1ldGVycy5odG1sCShyZXZpc2lvbiAxMjI1NTEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3ZhcmRlY2wtcHJlc2VydmUtcGFyYW1ldGVycy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogPHByZSBpZD0iY29uc29sZSI+PC9wcmU+
CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gbG9nKHMpCiB7CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2pzL3ZhcmRlY2wtcHJlc2VydmUtdmFyZGVjbC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvdmFyZGVjbC1wcmVzZXJ2ZS12YXJkZWNsLmh0bWwJ
KHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvdmFyZGVjbC1wcmVzZXJ2
ZS12YXJkZWNsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8cHJlIGlkPSJj
b25zb2xlIj48L3ByZT4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiBsb2co
cykKIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvd2hpbGUtZXhwcmVzc2lvbi12YWx1ZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvd2hpbGUtZXhwcmVzc2lvbi12
YWx1ZS5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3doaWxl
LWV4cHJlc3Npb24tdmFsdWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxw
cmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0
aW9uIGxvZyhzKQogewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy93aW5kb3ctbG9jYXRpb24t
aHJlZi1maWxlLXVybHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3dp
bmRvdy1sb2NhdGlvbi1ocmVmLWZpbGUtdXJscy5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2pzL3dpbmRvdy1sb2NhdGlvbi1ocmVmLWZpbGUtdXJscy5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC03LDggKzcsOCBAQCBmdW5jdGlvbiBkZWJ1ZyhzdHIpIHsKIH0KIAog
ZnVuY3Rpb24gcnVuVGVzdHMoKSB7Ci0JaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LQkJbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCWlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKwkJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAJCQogCXZhciBzdHIgPSB3aW5kb3cu
bG9jYXRpb24uaHJlZjsKIAkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvbW96aWxsYS9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LWFzeW5jLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvanMvbW96aWxsYS9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWFzeW5jLmpzCShyZXZpc2lvbiAx
MjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL21vemlsbGEvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC1hc3luYy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIHNob3VsZEJlVHJ1
ZSgic3VjY2Vzc2Z1bGx5UGFyc2VkIik7CiBkZWJ1ZygnPGJyIC8+PHNwYW4gY2xhc3M9InBhc3Mi
PlRFU1QgQ09NUExFVEU8L3NwYW4+Jyk7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9qcy9tb3ppbGxhL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9tb3ppbGxhL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMJ
KHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvbW96aWxsYS9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogd2FzUG9z
dFRlc3RTY3JpcHRQYXJzZWQgPSB0cnVlOwogCiBpZiAod2luZG93LmpzVGVzdElzQXN5bmMpIHsK
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICBpZiAod2luZG93Lndhc0Zp
bmlzaEpTVGVzdENhbGxlZCkKICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiB9IGVsc2UKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvanMvbW96aWxsYS9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9tb3ppbGxhL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcwkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9tb3ppbGxh
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAK
IC8vIHN2Zy9keW5hbWljLXVwZGF0ZXMgdGVzdHMgc2V0IGVuYWJsZVBpeGVsVGVzdGluZz10cnVl
LCBhcyB3ZSB3YW50IHRvIGR1bXAgdGV4dCArIHBpeGVsIHJlc3VsdHMKLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh3
aW5kb3cuZW5hYmxlUGl4ZWxUZXN0aW5nKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQod2luZG93LmVuYWJsZVBpeGVsVGVzdGluZyk7CiAKIGZ1bmN0
aW9uIGRlc2NyaXB0aW9uKG1zZykKIHsKQEAgLTMwMiw4ICszMDIsOCBAQCBmdW5jdGlvbiBmaW5p
c2hKU1Rlc3QoKQogICAgICAgICByZXR1cm47CiAgICAgc2hvdWxkQmVUcnVlKCJzdWNjZXNzZnVs
bHlQYXJzZWQiKTsKICAgICBkZWJ1ZygnPGJyIC8+PHNwYW4gY2xhc3M9InBhc3MiPlRFU1QgQ09N
UExFVEU8L3NwYW4+Jyk7Ci0gICAgaWYgKHdpbmRvdy5qc1Rlc3RJc0FzeW5jICYmIHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworICAgIGlmICh3aW5kb3cuanNUZXN0SXNBc3luYyAmJiB3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIC8vIHNoYWRvdyBwcmlu
dCgpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3BpYy9jYWNoZWQtYXJyYXktbGVuZ3RoLWFj
Y2Vzcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcGljL2NhY2hlZC1h
cnJheS1sZW5ndGgtYWNjZXNzLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvanMvcGljL2NhY2hlZC1hcnJheS1sZW5ndGgtYWNjZXNzLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTgsOCArOCw4IEBAIGJlbG93LgogCiA8c2NyaXB0PgogKGZ1bmN0aW9uKCkgewotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgZnVuY3Rpb24gbG9nKHMpCiAgICAgewpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9waWMvY2FjaGVkLWRlbGV0ZWQtcHJvcGVydGllcy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcGljL2NhY2hlZC1kZWxldGVk
LXByb3BlcnRpZXMuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9q
cy9waWMvY2FjaGVkLWRlbGV0ZWQtcHJvcGVydGllcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03
LDggKzcsOCBAQCBwcm9wZXJ0aWVzLiBJZiB0aGUgdGVzdCBwYXNzZXMsIHlvdSdsbCBzCiAKIDxz
Y3JpcHQ+CiAoZnVuY3Rpb24oKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAg
ICBmdW5jdGlvbiBsb2cocykKICAgICB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3BpYy9j
YWNoZWQtZ2V0dGVyLWRpY3Rpb25hcnktYW5kLXByb3RvLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9qcy9waWMvY2FjaGVkLWdldHRlci1kaWN0aW9uYXJ5LWFuZC1wcm90by5o
dG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3BpYy9jYWNoZWQt
Z2V0dGVyLWRpY3Rpb25hcnktYW5kLXByb3RvLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsOCAr
OCw4IEBAIGJlbG93LgogCiA8c2NyaXB0PgogKGZ1bmN0aW9uKCkgewotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogCiAgICAgZnVuY3Rpb24gbG9nKHMpCiAgICAgewpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9qcy9waWMvY2FjaGVkLWdldHRlci1zZXR0ZXIuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2pzL3BpYy9jYWNoZWQtZ2V0dGVyLXNldHRlci5odG1sCShyZXZp
c2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3BpYy9jYWNoZWQtZ2V0dGVyLXNl
dHRlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDggKzcsOCBAQCB5b3UnbGwgc2VlIGEgc2Vy
aWVzIG9mIFBBU1MgbWVzc2FnZXMgYmVsCiAKIDxzY3JpcHQ+CiAoZnVuY3Rpb24oKSB7Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBmdW5jdGlvbiBsb2cocykKICAgICB7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3BpYy9jYWNoZWQtbmFtZWQtcHJvcGVydHktZ2V0dGVy
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9waWMvY2FjaGVkLW5hbWVk
LXByb3BlcnR5LWdldHRlci5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2pzL3BpYy9jYWNoZWQtbmFtZWQtcHJvcGVydHktZ2V0dGVyLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTcsOCArNyw4IEBAIHlvdSdsbCBzZWUgYSBzZXJpZXMgb2YgUEFTUyBtZXNzYWdlcyBi
ZWwKIAogPHNjcmlwdD4KIChmdW5jdGlvbigpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKIAogICAgIGZ1bmN0aW9uIGxvZyhzKQogICAgIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
anMvcGljL2NhY2hlZC1wcm90b3R5cGUtc2V0dGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9qcy9waWMvY2FjaGVkLXByb3RvdHlwZS1zZXR0ZXIuaHRtbAkocmV2aXNpb24g
MTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9waWMvY2FjaGVkLXByb3RvdHlwZS1zZXR0
ZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw4ICs0LDggQEAgSWYgdGhlIHRlc3QgcGFzc2Vz
LCB5b3UnbGwgc2VlIHR3byBQQVNTIAogPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CiAKIDxzY3Jp
cHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gbG9nKHMpCiB7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2pzL3BpYy9jYWNoZWQtcHJvdG90eXBlLXRoZW4taW1tZWRpYXRlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9waWMvY2FjaGVkLXByb3RvdHlwZS10aGVuLWlt
bWVkaWF0ZS5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Bp
Yy9jYWNoZWQtcHJvdG90eXBlLXRoZW4taW1tZWRpYXRlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTQsOCArNCw4IEBAIElmIHRoZSB0ZXN0IHBhc3NlcywgeW91J2xsIHNlZSB0d28gUEFTUyAKIDxw
cmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0
aW9uIGxvZyhzKQogewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9waWMvY2FjaGVkLXNpbmds
ZS1lbnRyeS10cmFuc2l0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9q
cy9waWMvY2FjaGVkLXNpbmdsZS1lbnRyeS10cmFuc2l0aW9uLmh0bWwJKHJldmlzaW9uIDEyMjU1
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcGljL2NhY2hlZC1zaW5nbGUtZW50cnktdHJhbnNp
dGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDggKzgsOCBAQCB5b3UnbGwgc2VlIGEgUEFT
UyBtZXNzYWdlIGJlbG93LgogCiA8c2NyaXB0PgogKGZ1bmN0aW9uKCkgewotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgZnVuY3Rpb24gbG9nKHMpCiAgICAgewpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9qcy9waWMvZGVsZXRlLWdsb2JhbC1vYmplY3QuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3BpYy9kZWxldGUtZ2xvYmFsLW9iamVjdC5odG1sCShy
ZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3BpYy9kZWxldGUtZ2xvYmFs
LW9iamVjdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDggKzcsOCBAQCBoYWQgYSBwcm9wZXJ0
eSBkZWxldGVkLiBJZiB0aGUgdGVzdCBwYXNzCiAKIDxzY3JpcHQ+CiAoZnVuY3Rpb24oKSB7Ci0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBmdW5jdGlvbiBsb2cocykKICAgICB7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3BpYy9kaWN0aW9uYXJ5LXByb3RvdHlwZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcGljL2RpY3Rpb25hcnktcHJvdG90
eXBlLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcGljL2Rp
Y3Rpb25hcnktcHJvdG90eXBlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsOCArNyw4IEBAIHRv
IGRpY3Rpb25hcnkgc3RhdHVzLiBJZiB0aGUgdGVzdCBwYXNzZXMKIAogPHNjcmlwdD4KIChmdW5j
dGlvbigpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIGZ1bmN0aW9uIGxv
ZyhzKQogICAgIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcGljL2dldC1lbXB0eS1zdHJp
bmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3BpYy9nZXQtZW1wdHkt
c3RyaW5nLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcGlj
L2dldC1lbXB0eS1zdHJpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw4ICs2LDggQEAgeW91
J2xsIHNlZSBhIFBBU1MgbWVzc2FnZSBiZWxvdy4KIDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgog
CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIChmdW5jdGlvbigpIHsKICAgICBmdW5jdGlvbiBs
b2cocykKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcGljL2dldC1zZXQtcHJveHktb2JqZWN0
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9waWMvZ2V0LXNldC1wcm94
eS1vYmplY3QuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9w
aWMvZ2V0LXNldC1wcm94eS1vYmplY3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw4ICs2LDgg
QEAgeW91J2xsIHNlZSBhIFBBU1MgbWVzc2FnZSBiZWxvdy4KIDxwcmUgaWQ9ImNvbnNvbGUiPjwv
cHJlPgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIGxvZyhzKQogewpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9qcy9waWMvcmVoYXNoLXBvaXNvbnMtc3RydWN0dXJlLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9waWMvcmVoYXNoLXBvaXNvbnMtc3Ry
dWN0dXJlLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcGlj
L3JlaGFzaC1wb2lzb25zLXN0cnVjdHVyZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDggKzgs
OCBAQCB0ZXN0IHBhc3NlcywgeW91J2xsIHNlZSBhIFBBU1MgbWVzc2FnZSBiCiAKIDxzY3JpcHQ+
CiAoZnVuY3Rpb24oKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBmdW5j
dGlvbiBsb2cocykKICAgICB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3BpYy91bmRpY3Rp
b25hcnkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3BpYy91bmRpY3Rp
b25hcnkuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9waWMv
dW5kaWN0aW9uYXJ5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsOCArNiw4IEBAIElmIHRoZSB0
ZXN0IHBhc3NlcywgeW91J2xsIHNlZSBhIHNlcmllcyAKIDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJl
PgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIGxvZyhzKQogewpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvZnMtdGVzdC1wb3N0LmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2ZzLXRlc3QtcG9zdC5qcwkocmV2aXNp
b24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvZnMtdGVzdC1wb3N0
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogd2FzUG9zdFRlc3RTY3JpcHRQYXJz
ZWQgPSB0cnVlOwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIGlmICh3aW5kb3cud2FzRmluaXNoSlNU
ZXN0Q2FsbGVkKQogICAgIGZpbmlzaEpTVGVzdCgpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9q
cy9yZXNvdXJjZXMvZ2FyYmFnZS1jb2xsZWN0LWFmdGVyLXN0cmluZy1hcHBlbmRzLmpzLWRpc2Fi
bGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2dhcmJhZ2Ut
Y29sbGVjdC1hZnRlci1zdHJpbmctYXBwZW5kcy5qcy1kaXNhYmxlZAkocmV2aXNpb24gMTIyNTUx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvZ2FyYmFnZS1jb2xsZWN0LWFmdGVy
LXN0cmluZy1hcHBlbmRzLmpzLWRpc2FibGVkCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBA
QCBkZXNjcmlwdGlvbigKIC8vIGNvc3QgdG8gdGhlIGdhcmJhZ2UgY29sbGVjdG9yLiAgSXQgc2hv
dWxkIGJlIGltcHJvdmVkIHRvIGJlIGxlc3MgdGllZCB0byB0aGVzZSBpbXBsZW1lbnRhdGlvbiBk
ZXRhaWxzLgogLy8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg3
MT4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAKIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQogICAgIEdDQ29u
dHJvbGxlci5jb2xsZWN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QtYXN5bmMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LWFzeW5jLmpzCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtYXN5bmMuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTMsNSArMyw1IEBAIGlmICghZXJyb3JNZXNzYWdlKQogc2hvdWxkQmVUcnVlKCJz
dWNjZXNzZnVsbHlQYXJzZWQiKTsKIGRlYnVnKCc8YnIgLz48c3BhbiBjbGFzcz0icGFzcyI+VEVT
VCBDT01QTEVURTwvc3Bhbj4nKTsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzCShyZXZpc2lvbiAxMjI1NTEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTEsOCArMSw4IEBACiB3YXNQb3N0VGVzdFNjcmlwdFBhcnNlZCA9IHRydWU7CiAK
IGlmICh3aW5kb3cuanNUZXN0SXNBc3luYykgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwogICAgIGlmICh3aW5kb3cud2FzRmluaXNoSlNUZXN0Q2FsbGVkKQogICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKIH0gZWxzZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
NiBAQAogLy8gc3ZnL2R5bmFtaWMtdXBkYXRlcyB0ZXN0cyBzZXQgZW5hYmxlUGl4ZWxUZXN0aW5n
PXRydWUsIGFzIHdlIHdhbnQgdG8gZHVtcCB0ZXh0ICsgcGl4ZWwgcmVzdWx0cwotaWYgKHNlbGYu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dChzZWxmLmVuYWJsZVBpeGVsVGVzdGluZyk7CitpZiAoc2VsZi50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dChzZWxmLmVuYWJsZVBpeGVsVGVzdGluZyk7CiAKIHZhciBkZXNj
cmlwdGlvbiwgZGVidWcsIHN1Y2Nlc3NmdWxseVBhcnNlZCwgZXJyb3JNZXNzYWdlOwogCkBAIC00
NzcsOCArNDc3LDggQEAgZnVuY3Rpb24gZmluaXNoSlNUZXN0KCkKICAgICBpZiAoIXNlbGYud2Fz
UG9zdFRlc3RTY3JpcHRQYXJzZWQpCiAgICAgICAgIHJldHVybjsKICAgICBpc1N1Y2Nlc3NmdWxs
eVBhcnNlZCgpOwotICAgIGlmIChzZWxmLmpzVGVzdElzQXN5bmMgJiYgc2VsZi5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgIGlmIChzZWxmLmpzVGVzdElzQXN5bmMgJiYgc2VsZi50ZXN0UnVubmVyKQorICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogZnVuY3Rpb24gc3RhcnRXb3JrZXIodGVzdFNj
cmlwdFVSTCwgc2hhcmVkKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMv
Y3Jvc3MtZ2xvYmFsLW9iamVjdC1pbmxpbmUtZ2xvYmFsLXZhci5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9jcm9zcy1nbG9iYWwtb2JqZWN0LWlubGlu
ZS1nbG9iYWwtdmFyLmpzCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pz
L3NjcmlwdC10ZXN0cy9jcm9zcy1nbG9iYWwtb2JqZWN0LWlubGluZS1nbG9iYWwtdmFyLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBAQCBkZXNjcmlwdGlvbigKICJUaGlzIHRlc3RzIHRo
YXQgZnVuY3Rpb24gaW5saW5pbmcgaW4gdGhlIERGRyBKSVQgZG9lc24ndCBnZXQgY29uZnVzZWQg
YnkgZGlmZmVyZW50IGdsb2JhbCBvYmplY3RzLiIKICk7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwog
CiB2YXIgYiA9IDMyMTsKIApAQCAtMTksNyArMTksNyBAQCBmdW5jdGlvbiBkb25lKHZhbHVlKSB7
CiAgICAgICAgIHRlc3RQYXNzZWQoImRvbmUoKSBjYWxsZWQgd2l0aCAiICsgZXhwZWN0ZWQpOwog
ICAgIGVsc2UKICAgICAgICAgdGVzdEZhaWxlZCgiZG9uZSgpIGNhbGxlZCB3aXRoICIgKyB2YWx1
ZSArICIsIGJ1dCBleHBlY3RlZCAiICsgZXhwZWN0ZWQpOwotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogZnVu
Y3Rpb24gZG9pdCgpIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2Rm
Zy1jcm9zcy1nbG9iYWwtb2JqZWN0LWlubGluZS1uZXctYXJyYXktbGl0ZXJhbC13aXRoLXZhcmlh
Ymxlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9k
ZmctY3Jvc3MtZ2xvYmFsLW9iamVjdC1pbmxpbmUtbmV3LWFycmF5LWxpdGVyYWwtd2l0aC12YXJp
YWJsZXMuanMJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0
LXRlc3RzL2RmZy1jcm9zcy1nbG9iYWwtb2JqZWN0LWlubGluZS1uZXctYXJyYXktbGl0ZXJhbC13
aXRoLXZhcmlhYmxlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAgZGVzY3JpcHRp
b24oCiAiVGhpcyB0ZXN0cyB0aGF0IGZ1bmN0aW9uIGlubGluaW5nIGluIHRoZSBERkcgSklUIGRv
ZXNuJ3QgZ2V0IGNvbmZ1c2VkIGFib3V0IHRoZSBnbG9iYWwgb2JqZWN0IHRvIHVzZSBmb3IgYXJy
YXkgYWxsb2NhdGlvbi4iCiApOwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogZnVuY3Rpb24gZm9v
KHgpIHsKICAgICByZXR1cm4gW3gsIHggKyAxLCB4ICogMl07CkBAIC0xNyw3ICsxNyw3IEBAIGZ1
bmN0aW9uIGRvbmUodmFsdWUpIHsKICAgICAgICAgdGVzdFBhc3NlZCgiZG9uZSgpIGNhbGxlZCB3
aXRoICIgKyBleHBlY3RlZCk7CiAgICAgZWxzZQogICAgICAgICB0ZXN0RmFpbGVkKCJkb25lKCkg
Y2FsbGVkIHdpdGggIiArIHZhbHVlICsgIiwgYnV0IGV4cGVjdGVkICIgKyBleHBlY3RlZCk7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogfQogCiBmdW5jdGlvbiBkb2l0KCkgewpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9qcy9zY3JpcHQtdGVzdHMvZGZnLWNyb3NzLWdsb2JhbC1vYmplY3QtaW5saW5lLW5ldy1hcnJh
eS1saXRlcmFsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRl
c3RzL2RmZy1jcm9zcy1nbG9iYWwtb2JqZWN0LWlubGluZS1uZXctYXJyYXktbGl0ZXJhbC5qcwko
cmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvZGZn
LWNyb3NzLWdsb2JhbC1vYmplY3QtaW5saW5lLW5ldy1hcnJheS1saXRlcmFsLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0yLDggKzIsOCBAQCBkZXNjcmlwdGlvbigKICJUaGlzIHRlc3RzIHRoYXQgZnVu
Y3Rpb24gaW5saW5pbmcgaW4gdGhlIERGRyBKSVQgZG9lc24ndCBnZXQgY29uZnVzZWQgYWJvdXQg
dGhlIGdsb2JhbCBvYmplY3QgdG8gdXNlIGZvciBhcnJheSBhbGxvY2F0aW9uLiIKICk7CiAKLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwogCiBmdW5jdGlvbiBmb28oKSB7CiAgICAgcmV0dXJuIFsxLCAyLCAz
XTsKQEAgLTE3LDcgKzE3LDcgQEAgZnVuY3Rpb24gZG9uZSh2YWx1ZSkgewogICAgICAgICB0ZXN0
UGFzc2VkKCJkb25lKCkgY2FsbGVkIHdpdGggIiArIGV4cGVjdGVkKTsKICAgICBlbHNlCiAgICAg
ICAgIHRlc3RGYWlsZWQoImRvbmUoKSBjYWxsZWQgd2l0aCAiICsgdmFsdWUgKyAiLCBidXQgZXhw
ZWN0ZWQgIiArIGV4cGVjdGVkKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGRvaXQoKSB7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9kZmctY3Jvc3MtZ2xvYmFs
LW9iamVjdC1pbmxpbmUtbmV3LWFycmF5LXdpdGgtZWxlbWVudHMuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvZGZnLWNyb3NzLWdsb2JhbC1vYmplY3Qt
aW5saW5lLW5ldy1hcnJheS13aXRoLWVsZW1lbnRzLmpzCShyZXZpc2lvbiAxMjI1NTEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9kZmctY3Jvc3MtZ2xvYmFsLW9iamVjdC1p
bmxpbmUtbmV3LWFycmF5LXdpdGgtZWxlbWVudHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTIsOCAr
Miw4IEBAIGRlc2NyaXB0aW9uKAogIlRoaXMgdGVzdHMgdGhhdCBmdW5jdGlvbiBpbmxpbmluZyBp
biB0aGUgREZHIEpJVCBkb2Vzbid0IGdldCBjb25mdXNlZCBhYm91dCB0aGUgZ2xvYmFsIG9iamVj
dCB0byB1c2UgZm9yIGFycmF5IGFsbG9jYXRpb24uIgogKTsKIAotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CiAKIGZ1bmN0aW9uIGZvbygpIHsKICAgICByZXR1cm4gbmV3IEFycmF5KDEsIDIsIDMpOwpAQCAt
MTcsNyArMTcsNyBAQCBmdW5jdGlvbiBkb25lKHZhbHVlKSB7CiAgICAgICAgIHRlc3RQYXNzZWQo
ImRvbmUoKSBjYWxsZWQgd2l0aCAiICsgZXhwZWN0ZWQpOwogICAgIGVsc2UKICAgICAgICAgdGVz
dEZhaWxlZCgiZG9uZSgpIGNhbGxlZCB3aXRoICIgKyB2YWx1ZSArICIsIGJ1dCBleHBlY3RlZCAi
ICsgZXhwZWN0ZWQpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogZnVuY3Rpb24gZG9pdCgpIHsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2RmZy1jcm9zcy1nbG9iYWwtb2JqZWN0
LWlubGluZS1uZXctYXJyYXktd2l0aC1zaXplLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvanMvc2NyaXB0LXRlc3RzL2RmZy1jcm9zcy1nbG9iYWwtb2JqZWN0LWlubGluZS1uZXct
YXJyYXktd2l0aC1zaXplLmpzCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2pzL3NjcmlwdC10ZXN0cy9kZmctY3Jvc3MtZ2xvYmFsLW9iamVjdC1pbmxpbmUtbmV3LWFycmF5
LXdpdGgtc2l6ZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAgZGVzY3JpcHRpb24o
CiAiVGhpcyB0ZXN0cyB0aGF0IGZ1bmN0aW9uIGlubGluaW5nIGluIHRoZSBERkcgSklUIGRvZXNu
J3QgZ2V0IGNvbmZ1c2VkIGFib3V0IHRoZSBnbG9iYWwgb2JqZWN0IHRvIHVzZSBmb3IgYXJyYXkg
YWxsb2NhdGlvbi4iCiApOwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogZnVuY3Rpb24gZm9vKCkg
ewogICAgIHJldHVybiBuZXcgQXJyYXkoMTAwMCk7CkBAIC0xNyw3ICsxNyw3IEBAIGZ1bmN0aW9u
IGRvbmUodmFsdWUpIHsKICAgICAgICAgdGVzdFBhc3NlZCgiZG9uZSgpIGNhbGxlZCB3aXRoICIg
KyBleHBlY3RlZCk7CiAgICAgZWxzZQogICAgICAgICB0ZXN0RmFpbGVkKCJkb25lKCkgY2FsbGVk
IHdpdGggIiArIHZhbHVlICsgIiwgYnV0IGV4cGVjdGVkICIgKyBleHBlY3RlZCk7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogfQogCiBmdW5jdGlvbiBkb2l0KCkgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9z
Y3JpcHQtdGVzdHMvZGZnLWNyb3NzLWdsb2JhbC1vYmplY3QtaW5saW5lLW5ldy1hcnJheS5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9kZmctY3Jvc3Mt
Z2xvYmFsLW9iamVjdC1pbmxpbmUtbmV3LWFycmF5LmpzCShyZXZpc2lvbiAxMjI1NTEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9kZmctY3Jvc3MtZ2xvYmFsLW9iamVjdC1p
bmxpbmUtbmV3LWFycmF5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBAQCBkZXNjcmlw
dGlvbigKICJUaGlzIHRlc3RzIHRoYXQgZnVuY3Rpb24gaW5saW5pbmcgaW4gdGhlIERGRyBKSVQg
ZG9lc24ndCBnZXQgY29uZnVzZWQgYWJvdXQgdGhlIGdsb2JhbCBvYmplY3QgdG8gdXNlIGZvciBh
cnJheSBhbGxvY2F0aW9uLiIKICk7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiBmdW5jdGlvbiBm
b28oKSB7CiAgICAgcmV0dXJuIG5ldyBBcnJheSgpOwpAQCAtMTcsNyArMTcsNyBAQCBmdW5jdGlv
biBkb25lKHZhbHVlKSB7CiAgICAgICAgIHRlc3RQYXNzZWQoImRvbmUoKSBjYWxsZWQgd2l0aCAi
ICsgZXhwZWN0ZWQpOwogICAgIGVsc2UKICAgICAgICAgdGVzdEZhaWxlZCgiZG9uZSgpIGNhbGxl
ZCB3aXRoICIgKyB2YWx1ZSArICIsIGJ1dCBleHBlY3RlZCAiICsgZXhwZWN0ZWQpOwotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKIH0KIAogZnVuY3Rpb24gZG9pdCgpIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbGF5
ZXJzL2FkZC1sYXllci13aXRoLW5lc3RlZC1zdGFja2luZy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvbGF5ZXJzL2FkZC1sYXllci13aXRoLW5lc3RlZC1zdGFja2luZy5odG1s
CShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xheWVycy9hZGQtbGF5ZXIt
d2l0aC1uZXN0ZWQtc3RhY2tpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTksMTEgKzE5LDEx
IEBACiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iikuc3R5bGUuZGlzcGxh
eSA9ICJibG9jayI7CiAgICAgfQogCi0gICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgc2V0VGltZW91dCh0ZXN0
LCAwKTsKICAgICBlbHNlIHsKICAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7Ci0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5k
aXNwbGF5KCk7CiAgICAgICAgIHRlc3QoKTsKICAgICB9CiA8L3NjcmlwdD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvbGF5ZXJzL2Fzc2VydC1SZW5kZXJMYXllci11cGRhdGUtcG9zaXRpb25zLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sYXllcnMvYXNzZXJ0LVJlbmRlckxh
eWVyLXVwZGF0ZS1wb3NpdGlvbnMuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9sYXllcnMvYXNzZXJ0LVJlbmRlckxheWVyLXVwZGF0ZS1wb3NpdGlvbnMuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMjIsMTYgKzIyLDE2IEBACiAgICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgogICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgIDxzY3JpcHQ+Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYXNzZXJ0KCkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIGRpbWVuc2lvbnNDb250YWluZXIgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiYXNzZXJ0VHJpZ2dlciIpOwogICAgICAgICAgICAgICAgICAgICAgICAgZGlt
ZW5zaW9uc0NvbnRhaW5lci5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgIiIpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgICAgICAgICAvLyBBc3luY2hyb25vdXNseSBjaGFuZ2UgdGhl
IHN0eWxlIHRvIGZvcmNlIGEgc3R5bGUgcmVjYWxjIGxhdGVyLgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9sYXllcnMvY2xpcC1yZWN0cy1hc3NlcnRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2xheWVycy9jbGlwLXJlY3RzLWFzc2VydGlvbi5odG1sCShyZXZpc2lvbiAx
MjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xheWVycy9jbGlwLXJlY3RzLWFzc2VydGlvbi5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4ICsyNCw4IEBACiAgICAgfQogICA8L3N0eWxlPgog
ICA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgCiAgICAgZnVuY3Rpb24g
ZG9UZXN0KCkKICAgICB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xheWVycy9jbGlwLXJlY3Rz
LXRyYW5zZm9ybWVkLTIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xheWVy
cy9jbGlwLXJlY3RzLXRyYW5zZm9ybWVkLTIuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9sYXllcnMvY2xpcC1yZWN0cy10cmFuc2Zvcm1lZC0yLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogPC9zY3JpcHQ+CiA8cD4KICAgICBUZXN0IDIvMiBmb3IgPGk+PGEgaHJlZj0icmRh
cjovL3Byb2JsZW0vNzM5ODk4NyI+cmRhcjovL3Byb2JsZW0vNzM5ODk4NzwvYT4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvbGF5ZXJzL2NsaXAtcmVjdHMtdHJhbnNmb3JtZWQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xheWVycy9jbGlwLXJlY3RzLXRyYW5zZm9ybWVkLmh0
bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbGF5ZXJzL2NsaXAtcmVj
dHMtdHJhbnNmb3JtZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIDxzY3Jp
cHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDxwPgogICAgIFRl
c3QgMS8yIGZvciA8aT48YSBocmVmPSJyZGFyOi8vcHJvYmxlbS83Mzk4OTg3Ij5yZGFyOi8vcHJv
YmxlbS83Mzk4OTg3PC9hPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sYXllcnMvZ2VuZXJhdGVk
LWxheWVyLXNjcm9sbGJhci1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvbGF5ZXJzL2dlbmVyYXRlZC1sYXllci1zY3JvbGxiYXItY3Jhc2guaHRtbAkocmV2aXNpb24g
MTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sYXllcnMvZ2VuZXJhdGVkLWxheWVyLXNjcm9s
bGJhci1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDggKzksOCBAQAogICAgICAgICB9
CiAgICAgPC9zdHlsZT4KICAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKICAgICA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9sYXllcnMvaW5saW5lLWRpcnR5LXotb3JkZXItbGlzdHMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xheWVycy9pbmxpbmUtZGlydHktei1vcmRl
ci1saXN0cy5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xheWVy
cy9pbmxpbmUtZGlydHktei1vcmRlci1saXN0cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw5
ICsxNiw5IEBACiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbm5lciIpLnN0eWxl
LmRpc3BsYXkgPSAibm9uZSI7CiAgICAgfQogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAgICBkb2N1bWVu
dC5ib2R5Lm9mZnNldFRvcDsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZGlzcGxheSgp
OworICAgICAgICB0ZXN0UnVubmVyLmRpc3BsYXkoKTsKICAgICAgICAgdGVzdCgpOwogICAgIH0g
ZWxzZQogICAgICAgICBzZXRUaW1lb3V0KHRlc3QsIDApOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9sYXllcnMvbGF5ZXItY29udGVudC12aXNpYmlsaXR5LWNoYW5nZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvbGF5ZXJzL2xheWVyLWNvbnRlbnQtdmlzaWJpbGl0eS1jaGFu
Z2UuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sYXllcnMvbGF5
ZXItY29udGVudC12aXNpYmlsaXR5LWNoYW5nZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDkg
KzksOSBAQAogICAgIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlubmVyIiku
c3R5bGUudmlzaWJpbGl0eSA9ICJ2aXNpYmxlIjsKICAgICB9Ci0gICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAg
ICBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZGlzcGxheSgpOworICAgICAgICB0ZXN0UnVubmVyLmRpc3BsYXkoKTsKICAgICAgICAgdGVzdCgp
OwogICAgIH0gZWxzZQogICAgICAgICBzZXRUaW1lb3V0KHRlc3QsIDApOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9sYXllcnMvbGF5ZXItdmlzaWJpbGl0eS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvbGF5ZXJzL2xheWVyLXZpc2liaWxpdHkuaHRtbAkocmV2aXNpb24gMTIy
NTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sYXllcnMvbGF5ZXItdmlzaWJpbGl0eS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xMyw4ICsxMyw4IEBACiA8L3N0eWxlPgogCiA8c2NyaXB0PgotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CiAKIHZhciBub2RlMTsKIHZhciBub2RlMjsKQEAgLTk0LDggKzk0LDgg
QEAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJzIyJykuc3R5bGUuc2V0UAogLy8gZm9yY2UgbGF5
b3V0CiBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIDwvc2Ny
aXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sYXllcnMvbmVzdGVkLWxheWVycy0xLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sYXllcnMvbmVzdGVkLWxheWVycy0xLmh0
bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbGF5ZXJzL25lc3RlZC1s
YXllcnMtMS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDkgKzUsOSBAQAogZnVuY3Rpb24gdGVz
dCgpCiB7CiAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7Ci0gICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kaXNwbGF5
KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7CisgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICBmaW5pc2goKTsKICAgICB9IGVs
c2UgewogICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmaW5pc2gsIDUwKTsKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvbGF5ZXJzL25lc3RlZC1sYXllcnMtMi5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvbGF5ZXJzL25lc3RlZC1sYXllcnMtMi5odG1sCShyZXZpc2lvbiAxMjI1
NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xheWVycy9uZXN0ZWQtbGF5ZXJzLTIuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtNSw5ICs1LDkgQEAKIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIGRvY3Vt
ZW50LmJvZHkub2Zmc2V0VG9wOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZGlzcGxheSgpOwotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOworICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKICAgICAgICAgZmluaXNoKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgd2lu
ZG93LnNldFRpbWVvdXQoZmluaXNoLCA1MCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xheWVy
cy9uZXN0ZWQtbGF5ZXJzLTMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xh
eWVycy9uZXN0ZWQtbGF5ZXJzLTMuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9sYXllcnMvbmVzdGVkLWxheWVycy0zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUs
OSArNSw5IEBACiBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldFRv
cDsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0
UnVubmVyLmRpc3BsYXkoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAg
ICAgIGZpbmlzaCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZp
bmlzaCwgNTApOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sYXllcnMvbmVzdGVkLWxheWVycy00
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sYXllcnMvbmVzdGVkLWxheWVy
cy00Lmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbGF5ZXJzL25l
c3RlZC1sYXllcnMtNC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDkgKzUsOSBAQAogZnVuY3Rp
b24gdGVzdCgpCiB7CiAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7Ci0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
aXNwbGF5KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7
CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICBmaW5pc2goKTsKICAg
ICB9IGVsc2UgewogICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmaW5pc2gsIDUwKTsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvbGF5ZXJzL3JlbW92ZS1sYXllci13aXRoLW5lc3RlZC1zdGFja2lu
Zy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbGF5ZXJzL3JlbW92ZS1sYXll
ci13aXRoLW5lc3RlZC1zdGFja2luZy5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2xheWVycy9yZW1vdmUtbGF5ZXItd2l0aC1uZXN0ZWQtc3RhY2tpbmcuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMTEsMTEgKzExLDExIEBAIFRoZSBzcXVhcmUgc2hvdWxkIGJlIGEg
dW5pZm9ybSBzaGFkZSBvZiAKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlubmVy
Iikuc3R5bGUuZmxvYXQgPSAibm9uZSI7CiAgICAgfQogCi0gICAgaWYgKCF3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgc2V0
VGltZW91dCh0ZXN0LCAwKTsKICAgICBlbHNlIHsKICAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZz
ZXRUb3A7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsKKyAgICAgICAg
dGVzdFJ1bm5lci5kaXNwbGF5KCk7CiAgICAgICAgIHRlc3QoKTsKICAgICB9CiA8L3NjcmlwdD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbGF5ZXJzL3JlbW92ZS1vbmx5LXRoaXMtbGF5ZXItdXBk
YXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sYXllcnMvcmVtb3ZlLW9u
bHktdGhpcy1sYXllci11cGRhdGUuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9sYXllcnMvcmVtb3ZlLW9ubHktdGhpcy1sYXllci11cGRhdGUuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtOCwxMSArOCwxMSBAQCBZb3Ugc2hvdWxkIHNlZSBhIDEwMHgxMDAgZ3JlZW4g
cmVjdCBhdCAxCiAgICAgPHNjcmlwdD4KICAgICAgICAgZnVuY3Rpb24gZG9UZXN0KCkgewogICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dGVyIikuc3R5bGUub3BhY2l0eSA9
IDEuMDsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogICAgICAgICB9Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwogICAgICAgICAvLyBEZWxheSB1bnRpbCBhZnRlciB0aGUgZmlyc3Qg
cGFpbnQKICAgICAgICAgc2V0VGltZW91dChkb1Rlc3QsIDApOwogICAgIDwvc2NyaXB0PgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9sYXllcnMvcmVtb3ZlZC1ieS1zY3JvbGwtaGFuZGxlci5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbGF5ZXJzL3JlbW92ZWQtYnktc2Nyb2xs
LWhhbmRsZXIuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sYXll
cnMvcmVtb3ZlZC1ieS1zY3JvbGwtaGFuZGxlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcg
KzEsNyBAQAogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgfQogPC9zY3JpcHQ+CiA8cD4KQEAgLTM2LDggKzM2
LDggQEAKICAgICAgICAgaWYgKHNjcm9sbGVkRmlyc3RDb250YWluZXIgJiYgc2Nyb2xsZWRTZWNv
bmRDb250YWluZXIpIHsKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1
bHQnKS5pbm5lclRleHQgPSAiU1VDQ0VTUyI7CiAgICAgICAgIAotICAgICAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0KICAg
ICB9CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbGF5ZXJzL3Jlc2l6ZS1sYXll
ci1kZWxldGlvbi1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbGF5
ZXJzL3Jlc2l6ZS1sYXllci1kZWxldGlvbi1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2xheWVycy9yZXNpemUtbGF5ZXItZGVsZXRpb24tY3Jhc2guaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMywxNiArMywxNiBAQAogICAgIDxzY3JpcHQ+CiAgICAgICAg
IGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIXdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAg
ICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKICAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKDUwLCA1MCk7CiAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24o
KTsKICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEyNSwgMTI1KTsKICAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEzNSwgMTM1KTsKICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlVXAoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAg
ICB9CiAgICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xheWVy
cy9zY3JvbGwtd2l0aC10cmFuc2Zvcm0tY29tcG9zaXRlZC1sYXllci5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvbGF5ZXJzL3Njcm9sbC13aXRoLXRyYW5zZm9ybS1jb21wb3Np
dGVkLWxheWVyLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbGF5
ZXJzL3Njcm9sbC13aXRoLXRyYW5zZm9ybS1jb21wb3NpdGVkLWxheWVyLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTIxLDggKzIxLDggQEAKICAgICB9CiA8L3N0eWxlPgogPHNjcmlwdD4KLSAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KHRydWUpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbGF5ZXJzL3Njcm9sbC13aXRoLXRyYW5zZm9ybS1s
YXllci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbGF5ZXJzL3Njcm9sbC13
aXRoLXRyYW5zZm9ybS1sYXllci5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2xheWVycy9zY3JvbGwtd2l0aC10cmFuc2Zvcm0tbGF5ZXIuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMjEsOCArMjEsOCBAQAogICAgIH0KIDwvc3R5bGU+CiA8c2NyaXB0PgotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sYXllcnMvc2Nyb2xsQnlMaW5lcy1vdmVyZmxvdy1u
by1sYXllci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbGF5ZXJzL3Njcm9s
bEJ5TGluZXMtb3ZlcmZsb3ctbm8tbGF5ZXIuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9sYXllcnMvc2Nyb2xsQnlMaW5lcy1vdmVyZmxvdy1uby1sYXllci5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC05LDggKzksOCBAQAogICAgIH0KIDwvc3R5bGU+CiA8c2NyaXB0
PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgZnVuY3Rpb24gdGVzdFNjcm9s
bEJ5TGluZSgpCiAgICAgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sYXllcnMvdmlzaWJsZS1s
YXllci13aXRoLWhpZGRlbi1wYXJlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2xheWVycy92aXNpYmxlLWxheWVyLXdpdGgtaGlkZGVuLXBhcmVudC5odG1sCShyZXZpc2lv
biAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xheWVycy92aXNpYmxlLWxheWVyLXdpdGgt
aGlkZGVuLXBhcmVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogPHNjcmlw
dD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiAgICAgfQogPC9zY3JpcHQ+CiAKQEAgLTE1LDggKzE1LDggQEAKICAgICB3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uKCkgewogICAgICAgICB3aW5kb3cuc2V0
VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb250YWluZXIiKS5zdHlsZS52aXNpYmlsaXR5ID0gInZpc2libGUiOwotICAgICAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAg
IH0sIDApOwogICAgIH0sIGZhbHNlKTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9sYXllcnMvemluZGV4LWhpdC10ZXN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9sYXllcnMvemluZGV4LWhpdC10ZXN0Lmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvbGF5ZXJzL3ppbmRleC1oaXQtdGVzdC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xOSw4ICsxOSw4IEBACiAgIH0KICAgPC9zdHlsZT4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
CiAgICAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9s
ZWFrcy8wMDEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xlYWtzLzAwMS5o
dG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xlYWtzLzAwMS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC04LDggKzgsOCBAQAogICAgc3BhbiB7IGNvbG9yOiBibGFjazsg
fQogICA8L3N0eWxlPgogICA8c2NyaXB0PgotICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgIDwvc2NyaXB0
PgogIDwvaGVhZD4KICA8Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbGVha3MvMDAyLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sZWFrcy8wMDIuaHRtbAkocmV2aXNp
b24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sZWFrcy8wMDIuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtOCw4ICs4LDggQEAgcGFydGljdWxhciBtZWFuaW5nLgogPHNjcmlwdD4KIHdpbmRv
dy5vbmxvYWQgPSBmdW5jdGlvbiBtYWluKCkgCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiAKICAgICAvLyBSZXBlYXQsIHRvIGdlbmVyYXRlIGxvdHMgb2YgbGVha3MuCiAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAyMDsgaSsrKSB7IC8vPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9s
ZWFrcy8wMDMuaHRtbC1kaXNhYmxlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xl
YWtzLzAwMy5odG1sLWRpc2FibGVkCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2xlYWtzLzAwMy5odG1sLWRpc2FibGVkCSh3b3JraW5nIGNvcHkpCkBAIC0xNSwxMyArMTUs
MTMgQEAgdmFyIHdpZ2dsZVJvb20gPSAyMDsKIAogd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uIG1h
aW4oKQogewotICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyIHx8ICF3aW5kb3cu
R0NDb250cm9sbGVyKSB7Ci0gICAgICAgIGxvZygiRkFJTDogVGhpcyB0ZXN0IHVzZXMgdGhlIGxh
eW91dFRlc3RDb250cm9sbGVyIGFuZCB0aGUgR0NDb250cm9sbGVyLCBzbyBpdCBjYW4gb25seSBy
dW4gaW4gRHVtcFJlbmRlclRyZWUuXG4iKTsKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8
ICF3aW5kb3cuR0NDb250cm9sbGVyKSB7CisgICAgICAgIGxvZygiRkFJTDogVGhpcyB0ZXN0IHVz
ZXMgdGhlIHRlc3RSdW5uZXIgYW5kIHRoZSBHQ0NvbnRyb2xsZXIsIHNvIGl0IGNhbiBvbmx5IHJ1
biBpbiBEdW1wUmVuZGVyVHJlZS5cbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKICAgICAvLyBTdGFydCB3aXRoIG5vIGdh
cmJhZ2UsIHNvIEdDIGRvZXNuJ3QgcnVuIGF1dG9tYXRpY2FsbHkgZHVyaW5nIHRoZSB0ZXN0Lgog
ICAgIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7CkBAIC01NCw3ICs1NCw3IEBAIHdpbmRvdy5vbmxv
YWQgPSBmdW5jdGlvbiBtYWluKCkKICAgICAgICAgICAgIGxvZygiUEFTUzogIiArIHdpZ2dsZVJv
b20gKyAiIGdhcmJhZ2UgSlMgb2JqZWN0cyBvciBmZXdlciBsZWZ0IHVuY29sbGVjdGVkIGFmdGVy
IGRlc3Ryb3lpbmcgYSBmcmFtZS5cbiIpOwogICAgICAgICB9CiAKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKICAgICB9CiAgICAgc2V0VGltZW91dChjb250aW51ZVRlc3QsIDEwKTsKIH0KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvbGluZS1ncmlkL2xpbmUtZ3JpZC1uZXN0ZWQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xpbmUtZ3JpZC9saW5lLWdyaWQtbmVzdGVkLmh0bWwJKHJl
dmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbGluZS1ncmlkL2xpbmUtZ3JpZC1u
ZXN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAKICAgfQogPC9zdHlsZT4K
IDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCkKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCkKIDwvc2NyaXB0PgogCiA8Ym9keT4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbGlzdHMvYWxwaGEtYm91bmRhcnktdmFsdWVzLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9saXN0cy9hbHBoYS1ib3VuZGFyeS12YWx1
ZXMuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9saXN0cy9hbHBo
YS1ib3VuZGFyeS12YWx1ZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTksOCArMTksOCBAQAog
PC9vbD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZHVtcC1saXN0LmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICBmaWx0ZXJM
aXN0c1dpdGhSZXBsYWNlbWVudChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJvbCIpKTsKICAg
ICB9CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbGlzdHMvYWxwaGEtbGlzdC13
cmFwLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9saXN0cy9hbHBoYS1saXN0
LXdyYXAuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9saXN0cy9h
bHBoYS1saXN0LXdyYXAuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw4ICs5LDggQEAgZm9yICh2
YXIgbiA9IDE7IG4gPCA2MDsgbisrKSB7CiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvZHVtcC1saXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogICAgICAgICBmaWx0ZXJMaXN0c1dpdGhSZXBsYWNlbWVudChbZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKV0pOwogICAgIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9saXN0cy9jYWxjLXdpZHRoLXdpdGgtc3BhY2UuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL2NhbGMtd2lkdGgtd2l0aC1zcGFjZS5odG1sCShy
ZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL2NhbGMtd2lkdGgtd2l0
aC1zcGFjZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw4ICsxNiw4IEBAIGZ1bmN0aW9uIHJ1
bigpCiAgICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgi
RkFJTEVEIikpOwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogPC9oZWFkPgogCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL2RlY2ltYWwtbGVhZGluZy16ZXJvLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9saXN0cy9kZWNpbWFsLWxlYWRpbmctemVyby5odG1s
CShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL2RlY2ltYWwtbGVh
ZGluZy16ZXJvLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDggKzI0LDggQEAKIDwvb2w+CiA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2R1bXAtbGlzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0Pgot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgZmlsdGVyTGlzdHNXaXRo
UmVwbGFjZW1lbnQoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgib2wiKSk7CiAgICAgfQogPC9z
Y3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL2RyYWctaW50by1tYXJrZXIuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL2RyYWctaW50by1tYXJrZXIu
aHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9saXN0cy9kcmFnLWlu
dG8tbWFya2VyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsMTAgKzcsMTAgQEAKIDxzY3JpcHQ+
CiAKIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB3aW5k
b3cudGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgCiAgICAgdmFyIHNwYW5Ub0RyYWcg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BhblRvRHJhZyIpOwogICAgIHZhciB4ID0gc3Bh
blRvRHJhZy5vZmZzZXRMZWZ0ICsgc3BhblRvRHJhZy5vZmZzZXRXaWR0aCAvIDI7CkBAIC00MCw3
ICs0MCw3IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oeCwgeSk7CiAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwogCi0gICAgd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CiB9CiAKIHJ1blRlc3QoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbGlzdHMv
aXRlbS1ub3QtaW4tbGlzdC1saW5lLXdyYXBwaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9saXN0cy9pdGVtLW5vdC1pbi1saXN0LWxpbmUtd3JhcHBpbmcuaHRtbAkocmV2
aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9saXN0cy9pdGVtLW5vdC1pbi1saXN0
LWxpbmUtd3JhcHBpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUsOCBAQAogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICByZXN1bHQuaW5uZXJIVE1MID0gIkZBSUxFRDogdGV4dC5v
ZmZzZXRXaWR0aD0iICsgdGV4dC5vZmZzZXRXaWR0aDsKIAotICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICA8L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbGlzdHMvbGktdmFsdWVzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9saXN0cy9saS12YWx1ZXMuaHRtbAkocmV2aXNpb24gMTIyNTUx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9saXN0cy9saS12YWx1ZXMuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtNiwxNSArNiwxNSBAQCBmdW5jdGlvbiBmaW5pc2hUZXN0KCkKICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVtb3ZlTXlWYWx1ZSIpLnJlbW92ZUF0dHJpYnV0ZSgidmFsdWUiKTsK
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hhbmdlTXlWYWx1ZSIpLnNldEF0dHJpYnV0
ZSgidmFsdWUiLCAiLTUiKTsKICAgICBmaWx0ZXJMaXN0c1dpdGhSZXBsYWNlbWVudChkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yQWxsKCJvbCIpKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
IH0KIAogZnVuY3Rpb24gaW5pdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KICAgICBzZXRUaW1lb3V0KGZpbmlz
aFRlc3QsIDApOwogfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9saXN0cy9saXN0LXN0eWxlLXR5
cGUtZHluYW1pYy1jaGFuZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xp
c3RzL2xpc3Qtc3R5bGUtdHlwZS1keW5hbWljLWNoYW5nZS5odG1sCShyZXZpc2lvbiAxMjI1NTEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL2xpc3Qtc3R5bGUtdHlwZS1keW5hbWljLWNoYW5n
ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw4ICsyMSw4IEBACiAgICAgPC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9kdW1wLWxpc3QuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQ+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
ICAgICAgICAgICAgIGZpbHRlckxpc3RzV2l0aFJlcGxhY2VtZW50KFtkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgibGlzdCIpXSk7CiAgICAgICAgIH0KICAgICA8L3NjcmlwdD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvbGlzdHMvb2wtbmVzdGVkLWl0ZW1zLWR5bmFtaWMtaW5zZXJ0Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9saXN0cy9vbC1uZXN0ZWQtaXRlbXMtZHluYW1p
Yy1pbnNlcnQuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9saXN0
cy9vbC1uZXN0ZWQtaXRlbXMtZHluYW1pYy1pbnNlcnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
NCw4ICs0LDggQEAKICAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3Qo
KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgICAgICAgICAg
dmFyIGxpc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGlzdCIpOwogICAgICAgICAgICAg
ICAgIGxpc3Qub2Zmc2V0VG9wOyAvLyBGb3JjZSBhIHJlbGF5b3V0LgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9saXN0cy9vbC1uZXN0ZWQtaXRlbXMtZHluYW1pYy1yZW1vdmUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL29sLW5lc3RlZC1pdGVtcy1keW5hbWljLXJl
bW92ZS5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL29s
LW5lc3RlZC1pdGVtcy1keW5hbWljLXJlbW92ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDgg
KzQsOCBAQAogICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICAgZnVuY3Rpb24gdGVzdCgpCiAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgICAgICAgICB2YXIg
bGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsaXN0Iik7CiAgICAgICAgICAgICAgICAg
bGlzdC5vZmZzZXRUb3A7IC8vIEZvcmNlIGEgcmVsYXlvdXQuCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2xpc3RzL29sLW5lc3RlZC1pdGVtcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvbGlzdHMvb2wtbmVzdGVkLWl0ZW1zLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvbGlzdHMvb2wtbmVzdGVkLWl0ZW1zLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTQsOCArNCw4IEBACiAgICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgICBmdW5jdGlvbiB0
ZXN0KCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICAgICAg
ICAgIHZhciBsaXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxpc3QiKTsKICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCA9IGR1
bXBMaXN0KGxpc3QpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9saXN0cy9vbC1uZXN0ZWQtbGlz
dC1keW5hbWljLWluc2VydC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbGlz
dHMvb2wtbmVzdGVkLWxpc3QtZHluYW1pYy1pbnNlcnQuaHRtbAkocmV2aXNpb24gMTIyNTUxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9saXN0cy9vbC1uZXN0ZWQtbGlzdC1keW5hbWljLWluc2VydC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQsOCBAQAogICAgICAgICA8c2NyaXB0PgogICAg
ICAgICAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiAKICAgICAgICAgICAgICAgICB2YXIgbGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJsaXN0Iik7CiAgICAgICAgICAgICAgICAgbGlzdC5vZmZzZXRUb3A7IC8vIEZvcmNlIGEgcmVs
YXlvdXQuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL29sLW5lc3RlZC1saXN0LWR5bmFt
aWMtcmVtb3ZlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9saXN0cy9vbC1u
ZXN0ZWQtbGlzdC1keW5hbWljLXJlbW92ZS5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2xpc3RzL29sLW5lc3RlZC1saXN0LWR5bmFtaWMtcmVtb3ZlLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTQsOCArNCw4IEBACiAgICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAg
ICBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAog
ICAgICAgICAgICAgICAgIHZhciBsaXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxpc3Qi
KTsKICAgICAgICAgICAgICAgICBsaXN0Lm9mZnNldFRvcDsgLy8gRm9yY2UgYSByZWxheW91dC4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbGlzdHMvb2wtbmVzdGVkLWxpc3QuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL29sLW5lc3RlZC1saXN0Lmh0bWwJKHJldmlz
aW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbGlzdHMvb2wtbmVzdGVkLWxpc3QuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtNCw4ICs0LDggQEAKICAgICAgICAgPHNjcmlwdD4KICAgICAg
ICAgICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwogCiAgICAgICAgICAgICAgICAgdmFyIGxpc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
bGlzdCIpOwogICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xl
IikuaW5uZXJIVE1MID0gZHVtcExpc3QobGlzdCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xp
c3RzL29sLXJldmVyc2VkLWR5bmFtaWMtc2ltcGxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9saXN0cy9vbC1yZXZlcnNlZC1keW5hbWljLXNpbXBsZS5odG1sCShyZXZpc2lv
biAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL29sLXJldmVyc2VkLWR5bmFtaWMt
c2ltcGxlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsOCArNCw4IEBACiAgICAgICAgIDxzY3Jp
cHQ+CiAgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKIAogICAgICAgICAgICAgICAgIHZhciBsaXN0MSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJsaXN0MSIpOwogICAgICAgICAgICAgICAgIGxpc3QxLm9mZnNldFRvcDsgLy8g
Rm9yY2UgYSByZWxheW91dC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbGlzdHMvb2wtcmV2ZXJz
ZWQtZHluYW1pYy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbGlzdHMvb2wt
cmV2ZXJzZWQtZHluYW1pYy5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2xpc3RzL29sLXJldmVyc2VkLWR5bmFtaWMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw4
ICs0LDggQEAKICAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQog
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgICAgICAgICAgdmFy
IGxpc3QxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxpc3QxIik7CiAgICAgICAgICAgICAg
ICAgbGlzdDEub2Zmc2V0VG9wOyAvLyBGb3JjZSBhIHJlbGF5b3V0LgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9saXN0cy9vbC1yZXZlcnNlZC1uZXN0ZWQtaXRlbXMuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL29sLXJldmVyc2VkLW5lc3RlZC1pdGVtcy5odG1sCShy
ZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL29sLXJldmVyc2VkLW5l
c3RlZC1pdGVtcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQsOCBAQAogICAgICAgICA8
c2NyaXB0PgogICAgICAgICAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgICAgICAgICB2YXIgbGlzdCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJsaXN0Iik7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgPSBkdW1wTGlzdChsaXN0KTsKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvbGlzdHMvb2wtcmV2ZXJzZWQtbmVzdGVkLWxpc3QuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL29sLXJldmVyc2VkLW5lc3RlZC1saXN0Lmh0bWwJ
KHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbGlzdHMvb2wtcmV2ZXJzZWQt
bmVzdGVkLWxpc3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw4ICs0LDggQEAKICAgICAgICAg
PHNjcmlwdD4KICAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgICAgICAgICAgdmFyIGxpc3QgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgibGlzdCIpOwogICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MID0gZHVtcExpc3QobGlzdCk7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2xpc3RzL29sLXJldmVyc2VkLXNpbXBsZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvbGlzdHMvb2wtcmV2ZXJzZWQtc2ltcGxlLmh0bWwJKHJldmlzaW9u
IDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbGlzdHMvb2wtcmV2ZXJzZWQtc2ltcGxlLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsOCArNCw4IEBACiAgICAgICAgIDxzY3JpcHQ+CiAgICAg
ICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKIAogICAgICAgICAgICAgICAgIHZhciBsaXN0MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJsaXN0MSIpOwogICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25z
b2xlMSIpLmlubmVySFRNTCA9IGR1bXBMaXN0KGxpc3QxKTsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvbGlzdHMvb2wtcmV2ZXJzZWQtc2ltcGxlLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvbGlzdHMvb2wtcmV2ZXJzZWQtc2ltcGxlLnhodG1sCShyZXZpc2lvbiAxMjI1NTEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL29sLXJldmVyc2VkLXNpbXBsZS54aHRtbAkod29y
a2luZyBjb3B5KQpAQCAtNSw4ICs1LDggQEAKICAgICA8c2NyaXB0PgogICAgICAgICBmdW5jdGlv
biB0ZXN0KCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgICAgIHZhciBsaXN0MSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJsaXN0MSIpOwogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNvbnNvbGUxIikuaW5uZXJIVE1MID0gZHVtcExpc3QobGlzdDEpOwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9saXN0cy9vbC1zdGFydC1yb21hbi5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvbGlzdHMvb2wtc3RhcnQtcm9tYW4uaHRtbAkocmV2aXNpb24gMTIy
NTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9saXN0cy9vbC1zdGFydC1yb21hbi5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKIDwvc2NyaXB0PgogPG9sIHN0YXJ0PSIzODg4IiB0eXBlPSJpIj4KIDxsaT5QQVNT
OiB0ZXN0IGRpZCBub3QgY3Jhc2gsIGJ1ZyAzMTY1Mi48L2xpPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9saXN0cy9wYXJlbnQtYm94LW5vdC1ib3gtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2xpc3RzL3BhcmVudC1ib3gtbm90LWJveC1jcmFzaC5odG1sCShyZXZp
c2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL3BhcmVudC1ib3gtbm90LWJv
eC1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDggKzksOCBAQAogICAgICAgICAgICAg
fQ0KICAgICAgICAgPC9zdHlsZT4NCiAgICAgICAgIDxzY3JpcHQ+DQotICAgICAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOw0KKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikNCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7DQogICAgICAg
ICA8L3NjcmlwdD4NCiAgICAgPC9oZWFkPg0KICAgICA8Ym9keT4NCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2xpc3RzL3Bvc2l0aW9uZWQtY291bnQtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2xpc3RzL3Bvc2l0aW9uZWQtY291bnQtY3Jhc2guaHRtbAkocmV2aXNp
b24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9saXN0cy9wb3NpdGlvbmVkLWNvdW50LWNy
YXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDggKzEyLDggQEAgRm9yIG1hbnVhbCB0ZXN0
OiBJZiB5b3Ugc2VlIG5vIGNyYXNoIGFuZAogCiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2R1bXAt
bGlzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKICAgICAgICAgZG9jdW1lbnQud3JpdGUodGVzdExpc3RJdGVtTWFya2VyRXF1YWxzTGlz
dEl0ZW1UZXh0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0IikpKTsKICAgICB9CiA8L3Nj
cmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbGlzdHMvcmVtb3ZlLWxpc3RtYXJrZXItZnJv
bS1hbm9uYmxvY2std2l0aC1jb250aW51YXRpb24tY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2xpc3RzL3JlbW92ZS1saXN0bWFya2VyLWZyb20tYW5vbmJsb2NrLXdp
dGgtY29udGludWF0aW9uLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvbGlzdHMvcmVtb3ZlLWxpc3RtYXJrZXItZnJvbS1hbm9uYmxvY2std2l0aC1jb250
aW51YXRpb24tY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjAsNiArMjAsNiBAQCBsaXN0
SXRlbUVsZW1lbnQuc2V0QXR0cmlidXRlKCdjbGFzcycsICdhCiBkb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQub2Zmc2V0SGVpZ2h0OwogbGlzdEl0ZW1FbGVtZW50LnNldEF0dHJpYnV0ZSgnY2xhc3Mn
LCAnY29sU3BhbkFsbCcpOwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9saXN0cy93My1jc3MzLWxpc3Qtc3R5bGVzLWFscGhhYmV0aWMuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL3czLWNzczMtbGlzdC1zdHlsZXMtYWxw
aGFiZXRpYy5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xpc3Rz
L3czLWNzczMtbGlzdC1zdHlsZXMtYWxwaGFiZXRpYy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
MCwxMCArMTAsMTAgQEAKICAgICA8c2NyaXB0PgogICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkK
ICAgICAgICAgewotICAgICAgICAgICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAg
ICAgICAgICAgZmlsdGVyTGlzdHNXaXRoUmVwbGFjZW1lbnQoZG9jdW1lbnQucXVlcnlTZWxlY3Rv
ckFsbCgiLnRlc3Qgb2wiKSwgdGVzdExpc3RJdGVtTWFya2VyRXF1YWxzTGlzdEl0ZW1UZXh0KTsK
ICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImRlc2NyaXB0aW9uIikpOyAvLyBSZW1vdmUgZGVzY3JpcHRpb24gd2hlbiBydW5uaW5n
IGluIERSVC4KICAgICAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9saXN0cy93My1jc3Mz
LWxpc3Qtc3R5bGVzLWZhbGxiYWNrLXN0eWxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9saXN0cy93My1jc3MzLWxpc3Qtc3R5bGVzLWZhbGxiYWNrLXN0eWxlLmh0bWwJKHJl
dmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbGlzdHMvdzMtY3NzMy1saXN0LXN0
eWxlcy1mYWxsYmFjay1zdHlsZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxMCArNTIsMTAg
QEAKICAgICA8c2NyaXB0PgogICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkKICAgICAgICAgewot
ICAgICAgICAgICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAg
ICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICAgICAgZmls
dGVyTGlzdHNXaXRoUmVwbGFjZW1lbnQoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnRlc3Qg
b2wiKSwgdGVzdExpc3RJdGVtTWFya2VyRXF1YWxzTGlzdEl0ZW1UZXh0KTsKICAgICAgICAgICAg
IGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc2Ny
aXB0aW9uIikpOyAvLyBSZW1vdmUgZGVzY3JpcHRpb24gd2hlbiBydW5uaW5nIGluIERSVC4KICAg
ICAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9saXN0cy93My1jc3MzLWxpc3Qtc3R5bGVz
LW51bWVyaWMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL3czLWNz
czMtbGlzdC1zdHlsZXMtbnVtZXJpYy5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2xpc3RzL3czLWNzczMtbGlzdC1zdHlsZXMtbnVtZXJpYy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC02NCwxNSArNjQsMTUgQEAKICAgICAgICAgewogICAgICAgICAgICAgdmFyIGlz
TmVnYXRpdmVOdW1iZXIgPSBsaXN0SXRlbUVsZW1lbnQucGFyZW50Tm9kZS5jbGFzc05hbWUgJiYg
bGlzdEl0ZW1FbGVtZW50LnBhcmVudE5vZGUuY2xhc3NOYW1lLnNwbGl0KCIgIikuaW5kZXhPZigi
bmVnYXRpdmUtbnVtYmVyIikgPiAtMTsKICAgICAgICAgICAgIHZhciBleHBlY3RlZE1hcmtlclRl
eHQgPSAoaXNOZWdhdGl2ZU51bWJlciA/ICItIiA6ICIiKSArIGxpc3RJdGVtRWxlbWVudC5pbm5l
clRleHQ7Ci0gICAgICAgICAgICByZXR1cm4gdGVzdExpc3RJdGVtTWFya2VyRXF1YWxzKGxheW91
dFRlc3RDb250cm9sbGVyLm1hcmtlclRleHRGb3JMaXN0SXRlbShsaXN0SXRlbUVsZW1lbnQpLCBl
eHBlY3RlZE1hcmtlclRleHQpOworICAgICAgICAgICAgcmV0dXJuIHRlc3RMaXN0SXRlbU1hcmtl
ckVxdWFscyh0ZXN0UnVubmVyLm1hcmtlclRleHRGb3JMaXN0SXRlbShsaXN0SXRlbUVsZW1lbnQp
LCBleHBlY3RlZE1hcmtlclRleHQpOwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gcnVu
VGVzdCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
ICAgICAgICAgICAgZmlsdGVyTGlzdHNXaXRoUmVwbGFjZW1lbnQoZG9jdW1lbnQucXVlcnlTZWxl
Y3RvckFsbCgiLnRlc3Qgb2wiKSwgdGVzdExpc3RJdGVtTWFya2VyRXF1YWxzTGlzdEl0ZW1UZXh0
KTsKICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImRlc2NyaXB0aW9uIikpOyAvLyBSZW1vdmUgZGVzY3JpcHRpb24gd2hlbiBydW5u
aW5nIGluIERSVC4KICAgICAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9saXN0cy93My1j
c3MzLWxpc3Qtc3R5bGVzLXN5bWJvbGljLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9saXN0cy93My1jc3MzLWxpc3Qtc3R5bGVzLXN5bWJvbGljLmh0bWwJKHJldmlzaW9uIDEy
MjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbGlzdHMvdzMtY3NzMy1saXN0LXN0eWxlcy1zeW1i
b2xpYy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNywxMCArMTcsMTAgQEAKICAgICA8c2NyaXB0
PgogICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkKICAgICAgICAgewotICAgICAgICAgICAgaWYg
KCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBpZiAoIXdpbmRvdy50
ZXN0UnVubmVyKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICAgICAgZmlsdGVyTGlzdHNXaXRoUmVw
bGFjZW1lbnQoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnRlc3Qgb2wiKSwgdGVzdExpc3RJ
dGVtTWFya2VyRXF1YWxzTGlzdEl0ZW1UZXh0KTsKICAgICAgICAgICAgIGRvY3VtZW50LmJvZHku
cmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc2NyaXB0aW9uIikpOyAvLyBS
ZW1vdmUgZGVzY3JpcHRpb24gd2hlbiBydW5uaW5nIGluIERSVC4KICAgICAgICAgfQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9saXN0cy93My1jc3MzLWxvd2VyLWFybWVuaWFuLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9saXN0cy93My1jc3MzLWxvd2VyLWFybWVuaWFuLmh0
bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbGlzdHMvdzMtY3NzMy1s
b3dlci1hcm1lbmlhbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDEwICs5LDEwIEBACiAgICAg
PHNjcmlwdD4KICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgaWYgKCF3
aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgIGZpbHRlckxpc3Rz
V2l0aFJlcGxhY2VtZW50KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi50ZXN0IG9sIiksIHRl
c3RMaXN0SXRlbU1hcmtlckVxdWFsc0xpc3RJdGVtVGV4dCk7CiAgICAgICAgICAgICBkb2N1bWVu
dC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXNjcmlwdGlvbiIp
KTsgLy8gUmVtb3ZlIGRlc2NyaXB0aW9uIHdoZW4gcnVubmluZyBpbiBEUlQuCiAgICAgICAgIH0K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbGlzdHMvdzMtY3NzMy11cHBlci1hcm1lbmlhbi5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbGlzdHMvdzMtY3NzMy11cHBlci1hcm1l
bmlhbi5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL3cz
LWNzczMtdXBwZXItYXJtZW5pYW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSwxMCArOSwxMCBA
QAogICAgIDxzY3JpcHQ+CiAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAg
IGlmICghd2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgICAgICBmaWx0
ZXJMaXN0c1dpdGhSZXBsYWNlbWVudChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIudGVzdCBv
bCIpLCB0ZXN0TGlzdEl0ZW1NYXJrZXJFcXVhbHNMaXN0SXRlbVRleHQpOwogICAgICAgICAgICAg
ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzY3Jp
cHRpb24iKSk7IC8vIFJlbW92ZSBkZXNjcmlwdGlvbiB3aGVuIHJ1bm5pbmcgaW4gRFJULgogICAg
ICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL3czLWxpc3Qtc3R5bGVzLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9saXN0cy93My1saXN0LXN0eWxlcy5odG1s
CShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL3czLWxpc3Qtc3R5
bGVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDggQEAgb2wgb2wgeyBtYXJnaW4t
Ym90dG9tOiAwZW07IG1hcmdpbi10b3A6IAogPHNjcmlwdD4KICAgICB3aW5kb3cub25sb2FkID0g
ZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogICAgICAgICAgICAgZmlsdGVyTGlzdHNXaXRoUmVwbGFjZW1lbnQoZG9jdW1l
bnQucXVlcnlTZWxlY3RvckFsbCgiLnRlc3Qgb2wiKSk7CiAgICAgICAgIH0KICAgICB9CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL3Jlc291cmNlcy9kdW1wLWxpc3QuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9saXN0cy9yZXNvdXJjZXMvZHVtcC1saXN0LmpzCShyZXZp
c2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL3Jlc291cmNlcy9kdW1wLWxp
c3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEzICszNSwxMyBAQCBmdW5jdGlvbiBwcm9jZXNz
TGlzdChlbGVtZW50LCBwcm9jZXNzTGlzCiAKIGZ1bmN0aW9uIGR1bXBMaXN0SXRlbUFzSFRNTChs
aXN0SXRlbUVsZW1lbnQsIGRlcHRoKQogewotICAgIHZhciBtYXJrZXIgPSBsYXlvdXRUZXN0Q29u
dHJvbGxlci5tYXJrZXJUZXh0Rm9yTGlzdEl0ZW0obGlzdEl0ZW1FbGVtZW50KTsKKyAgICB2YXIg
bWFya2VyID0gdGVzdFJ1bm5lci5tYXJrZXJUZXh0Rm9yTGlzdEl0ZW0obGlzdEl0ZW1FbGVtZW50
KTsKICAgICByZXR1cm4gbWFya2VyID8gaW5kZW50KGRlcHRoKSArICcgJyArIG1hcmtlciArICcg
JyArIGxpc3RJdGVtRWxlbWVudC5pbm5lclRleHQudHJpbSgpICsgJzxici8+JyA6ICcnOwogfQog
CiBmdW5jdGlvbiB0ZXN0TGlzdEl0ZW1NYXJrZXJFcXVhbHNMaXN0SXRlbVRleHQobGlzdEl0ZW1F
bGVtZW50LCBkZXB0aCkKIHsKLSAgICByZXR1cm4gdGVzdExpc3RJdGVtTWFya2VyRXF1YWxzKGxh
eW91dFRlc3RDb250cm9sbGVyLm1hcmtlclRleHRGb3JMaXN0SXRlbShsaXN0SXRlbUVsZW1lbnQp
LCBsaXN0SXRlbUVsZW1lbnQuaW5uZXJUZXh0LnRyaW0oKSk7CisgICAgcmV0dXJuIHRlc3RMaXN0
SXRlbU1hcmtlckVxdWFscyh0ZXN0UnVubmVyLm1hcmtlclRleHRGb3JMaXN0SXRlbShsaXN0SXRl
bUVsZW1lbnQpLCBsaXN0SXRlbUVsZW1lbnQuaW5uZXJUZXh0LnRyaW0oKSk7CiB9CiAKIGZ1bmN0
aW9uIHRlc3RMaXN0SXRlbU1hcmtlckVxdWFscyhhY3R1YWxNYXJrZXJUZXh0LCBleHBlY3RlZE1h
cmtlclRleHQpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9hYm91dC1ibGFuay1oYXNo
LWNoYW5nZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Fib3V0
LWJsYW5rLWhhc2gtY2hhbmdlLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvbG9hZGVyL2Fib3V0LWJsYW5rLWhhc2gtY2hhbmdlLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTksOCArOSw4IEBAIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0K
IHNheXMgIkZBSUwiIHRoZW4gaXQgZmlyZWQgdHdvIG9yIG1vcmUgdGltZXMuIEFsc28sIHRoZSB0
ZXN0IG1heSB0aW1lIG91dAogbG9vcGluZyBvbiB0aGlzIGV2ZW50IGhhbmRsZXIgKHdoaWNoIGlz
IGFsc28gYSBmYWlsdXJlKS4gSWYgdGhlIHRleHQgc2F5cyAiTm8gY2FsbGJhY2siIHRoZW4gc29t
ZXRoaW5nIGVsc2UgaXMgYnJva2VuIDopPC9wPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
IH0KIAogZnVuY3Rpb24gb25sb2FkX2NhbGxiYWNrKCkgewpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9sb2FkZXIvYWJvdXQtYmxhbmstaGFzaC1rZXB0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9sb2FkZXIvYWJvdXQtYmxhbmstaGFzaC1rZXB0Lmh0bWwJKHJldmlzaW9uIDEy
MjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Fib3V0LWJsYW5rLWhhc2gta2VwdC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogPHA+U2VlIDxhIGhyZWY9Imh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTM5OSI+CiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUzOTk8L2E+LjwvcD4KIDxzY3JpcHQ+Ci1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKIH0KIAogZnVuY3Rpb24gb25sb2FkX2NhbGxiYWNrKCkgewpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9sb2FkZXIvYXBpLXRlc3QtZ28tdG8tY3VycmVudC1iYWNrLWZvcndhcmQtaXRl
bS5odG1sLWRpc2FibGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Fw
aS10ZXN0LWdvLXRvLWN1cnJlbnQtYmFjay1mb3J3YXJkLWl0ZW0uaHRtbC1kaXNhYmxlZAkocmV2
aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvYXBpLXRlc3QtZ28tdG8t
Y3VycmVudC1iYWNrLWZvcndhcmQtaXRlbS5odG1sLWRpc2FibGVkCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDE5ICsxLDE5IEBACiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgdGVzdFJ1bm5lci5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCk7CiAgICAgaWYgKHNlc3Np
b25TdG9yYWdlLmFwaV9nb3RvX2N1cnJlbnRfYmZfaXRlbSkgewogICAgICAgICBkZWxldGUgc2Vz
c2lvblN0b3JhZ2UuYXBpX2dvdG9fY3VycmVudF9iZl9pdGVtOwotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwogICAgIH0KIH0KIAogZnVuY3Rpb24gbG9hZGVkKCkKIHsKLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAg
IHNlc3Npb25TdG9yYWdlLmFwaV9nb3RvX2N1cnJlbnRfYmZfaXRlbSA9IHRydWU7Ci0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmFwaVRlc3RHb1RvQ3VycmVudEJhY2tGb3J3YXJkSXRlbSgp
OworICAgICAgICB0ZXN0UnVubmVyLmFwaVRlc3RHb1RvQ3VycmVudEJhY2tGb3J3YXJkSXRlbSgp
OwogICAgIH0KIH0KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvYXBpLXRlc3QtbmV3
LXdpbmRvdy1kYXRhLWxvYWQtYmFzZS11cmwuaHRtbC1kaXNhYmxlZAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9hcGktdGVzdC1uZXctd2luZG93LWRhdGEtbG9hZC1iYXNl
LXVybC5odG1sLWRpc2FibGVkCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci9hcGktdGVzdC1uZXctd2luZG93LWRhdGEtbG9hZC1iYXNlLXVybC5odG1sLWRpc2Fi
bGVkCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogPHNjcmlwdD4KLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKIAogICAgIHZhciBkYXRhVVJMID0gIjxhIGlkPSdhbmNob3InIGhyZWY9JyNmb28nPkhl
bGxvPC9hPjxicj48ZGl2IGlkPSdmb28nPjwvZGl2PjxzIiArICJjcmlwdD4iICsKICAgICAgICAg
ICAgICAgICAgICJ2YXIgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ01vdXNlRXZlbnQnKTsi
ICsKQEAgLTgsNyArOCw3IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKICAg
ICAgICAgICAgICAgICAgICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5jaG9yJykuZGlzcGF0
Y2hFdmVudChldnQpOyIgKwogICAgICAgICAgICAgICAgICAgIjwvcyIgKyAiY3JpcHQ+IjsKICAg
ICAKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5hcGlUZXN0TmV3V2luZG93RGF0YUxvYWRCYXNl
VVJMKGRhdGFVUkwsICJodHRwOi8vZXhhbXBsZS5jb20vZXhhbXBsZS5odG1sIik7CisgICAgdGVz
dFJ1bm5lci5hcGlUZXN0TmV3V2luZG93RGF0YUxvYWRCYXNlVVJMKGRhdGFVUkwsICJodHRwOi8v
ZXhhbXBsZS5jb20vZXhhbXBsZS5odG1sIik7CiB9CiA8L3NjcmlwdD4KIDxib2R5PgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvY2FuY2VsLWxvYWQtZHVyaW5nLXBvcnQtYmxvY2stdGlt
ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9jYW5jZWwtbG9h
ZC1kdXJpbmctcG9ydC1ibG9jay10aW1lci5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9jYW5jZWwtbG9hZC1kdXJpbmctcG9ydC1ibG9jay10aW1lci5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0ICsxLDE0IEBACiA8c2NyaXB0PgotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5kb3dzKCk7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1do
ZW5Db21wbGV0ZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CisgICAgICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKKyAgICAgICAgdGVzdFJ1
bm5lci5zZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUoKTsKICAgICB9CiAKICAg
ICB3aW5kb3cub3BlbigiaHR0cDovLzEyNy4wLjAuMToyMiIpLmRvY3VtZW50LndyaXRlKCcnKTsK
IAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogPC9zY3JpcHQ+CiBJZiB0aGlzIGRvZXMg
Y3Jhc2gsIHRoZSB0ZXN0IGhhcyBwYXNzZWQuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9jaGFyc2V0LXBhcnNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2Fk
ZXIvY2hhcnNldC1wYXJzZS5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2xvYWRlci9jaGFyc2V0LXBhcnNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw4
IEBACiAgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD1jaGFy
PgogICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9ImNoY2hh
cnNldD13aW5kb3dzLTEyNTUiIC8+CiAgICAgICAgIDxzY3JpcHQ+Ci0gICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICA8L3NjcmlwdD4KICAgICA8L2hl
YWQ+CiAgICAgPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9jaGlsZC1mcmFt
ZS1hZGQtYWZ0ZXItYmFjay1mb3J3YXJkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9sb2FkZXIvY2hpbGQtZnJhbWUtYWRkLWFmdGVyLWJhY2stZm9yd2FyZC5odG1sCShyZXZp
c2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9jaGlsZC1mcmFtZS1hZGQt
YWZ0ZXItYmFjay1mb3J3YXJkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsMTAgKzIsMTAgQEAK
IDxoZWFkPgogPHNjcmlwdD4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENo
aWxkRnJhbWVzQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0
ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwogfQogCiBmdW5jdGlvbiBuYXZpZ2F0
ZSgpIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2NyYXNoLWNvcHlpbmctYmFja2Zv
cndhcmRsaXN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvY3Jh
c2gtY29weWluZy1iYWNrZm9yd2FyZGxpc3QuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvY3Jhc2gtY29weWluZy1iYWNrZm9yd2FyZGxpc3QuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMiwxNiArMiwxNiBAQAogPGhlYWQ+CiA8c2NyaXB0PgogCi1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cyh0cnVlKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXROZXdXaW5kb3dzQ29weUJhY2tGb3J3YXJkTGlzdCh0cnVl
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuc2V0Q2Fu
T3BlbldpbmRvd3ModHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXROZXdXaW5kb3dzQ29weUJhY2tG
b3J3YXJkTGlzdCh0cnVlKTsKIH0KIAogPC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9
IndpbmRvdy5vcGVuKCdkYXRhOnRleHQvaHRtbCw8c2NyaXB0PmlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTs8L3NjcmlwdD4n
KTsiPgorPGJvZHkgb25sb2FkPSJ3aW5kb3cub3BlbignZGF0YTp0ZXh0L2h0bWwsPHNjcmlwdD5p
ZiAod2luZG93LnRlc3RSdW5uZXIpIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOzwvc2NyaXB0Picp
OyI+CiA8cHJlPgogVGhpcyB0ZXN0IG9ubHkgd29ya3MgaW4gRFJUIGJ5IHRpY2tsaW5nIHRoZSBb
V2ViVmlldyBfbG9hZEJhY2tGb3J3YXJkTGlzdEZyb21PdGhlclZpZXc6XSBtZXRob2QuCiBJZiBp
dCBkb2Vzbid0IGNyYXNoLCB0aGVuIHRoZSB0ZXN0IHBhc3Nlcy4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvbG9hZGVyL2NyYXNoLXJlcGxhY2luZy1sb2NhdGlvbi1iZWZvcmUtbG9hZC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2NyYXNoLXJlcGxhY2luZy1sb2Nh
dGlvbi1iZWZvcmUtbG9hZC5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2xvYWRlci9jcmFzaC1yZXBsYWNpbmctbG9jYXRpb24tYmVmb3JlLWxvYWQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxzY3JpcHQ+CiBpZiAocGFyZW50ID09IHdpbmRv
dykgewotICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgIH0KICAgZnVu
Y3Rpb24gcmVwbGFjZUhhc2goZnJhZykgewogICAgIGZyYW1lc1swXS5sb2NhdGlvbi5yZXBsYWNl
KCcjJyArIGZyYWcpOwpAQCAtMTMsOCArMTMsOCBAQCBpZiAocGFyZW50ID09IHdpbmRvdykgewog
ICAgIGYub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgICBkZWxldGUgZi5vbmxvYWQ7CiAgICAg
ICByZXBsYWNlSGFzaCgnYmFyJyk7Ci0gICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwog
ICAgIH0KICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGYpOwogICAgIHJlcGxhY2VIYXNo
KCdmb28nKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2NyZWF0ZS1mcmFtZS1pbi1E
T01Db250ZW50TG9hZGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2Fk
ZXIvY3JlYXRlLWZyYW1lLWluLURPTUNvbnRlbnRMb2FkZWQuaHRtbAkocmV2aXNpb24gMTIyNTUx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvY3JlYXRlLWZyYW1lLWluLURPTUNvbnRlbnRM
b2FkZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjIsOCArMjIsOCBAQCBmdW5jdGlvbiBoYW5k
bGVMb2FkRXZlbnQoKQogICAgIHByaW50KCJEKSBFeGl0aW5nIGxvYWQgZXZlbnQgaGFuZGxlciBm
dW5jdGlvbi4iKTsKICAgICBwcmludCgiVGVzdCBwYXNzZWQgaWYgbWVzc2FnZXMgQSwgQiwgQywg
RCB3ZXJlIGFsbCBpbiBvcmRlciBhbmQgdGhlcmUgd2FzIG5vIGNyYXNoLiIpOwogfQotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiBhZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgaGFuZGxlTG9hZEV2ZW50KTsKIGFkZEV2
ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBoYW5kbGVET01Db250ZW50TG9hZGVkRXZl
bnQpOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kYXRhLXVybC1l
bmNvZGluZy1odG1sLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
ZGF0YS11cmwtZW5jb2RpbmctaHRtbC5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9kYXRhLXVybC1lbmNvZGluZy1odG1sLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTMsOCArMyw4IEBACiA8cD5UZXN0IHRoYXQgbm9uLUFTQ0lJIGRhdGE6IFVSTHMgYXJl
IGhhbmRsZWQgY29ycmVjdGx5LjwvcD4KIDxwcmUgaWQ9cmVzdWx0PjwvcHJlPgogPHNjcmlwdD4K
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiB0ZXN0KCkgewogICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gIjEuICIgKyAod2luZG93LmZyYW1lc1swXS5k
b2N1bWVudC5ib2R5LmlubmVySFRNTCA9PSAi8NLP18XSy8EiID8gIlNVQ0NFU1MiIDogIkZBSUxV
UkUiKSArICIuXHIiOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGF0YS11cmwtZW5j
b2Rpbmctc3ZnLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGF0
YS11cmwtZW5jb2Rpbmctc3ZnLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvbG9hZGVyL2RhdGEtdXJsLWVuY29kaW5nLXN2Zy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDggKzEsOCBAQAogPG1ldGEgY2hhcnNldD0ia29pOC1yIj4KIDxib2R5IG9ubG9hZD0idGVz
dCgpIj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gcmVzdWx0KGkpIHsKICAg
ICByZXR1cm4gd2luZG93LmZyYW1lc1tpXS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0
cmlidXRlKCJ0ZXN0Iik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kb2N1bWVudC1k
ZXN0cnVjdGlvbi13aXRoaW4tdW5sb2FkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9sb2FkZXIvZG9jdW1lbnQtZGVzdHJ1Y3Rpb24td2l0aGluLXVubG9hZC5odG1sCShyZXZp
c2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kb2N1bWVudC1kZXN0cnVj
dGlvbi13aXRoaW4tdW5sb2FkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzEsMTQgQEAK
IDxodG1sPgogPGJvZHk+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKIH0KIAogZnVuY3Rpb24gZG9uZSgpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKIH0KIDwvc2NyaXB0PgogPGlmcmFtZSBzcmM9InJlc291cmNlcy9kb2N1bWVudC1kZXN0cnVj
dGlvbi13aXRoaW4tdW5sb2FkLWlmcmFtZS5odG1sIj48L2lmcmFtZT4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL2RvY3VtZW50LXdpdGgtZnJhZ21lbnQtdXJsLTEuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kb2N1bWVudC13aXRoLWZyYWdtZW50LXVy
bC0xLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Rv
Y3VtZW50LXdpdGgtZnJhZ21lbnQtdXJsLTEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw5ICs1
LDkgQEAgaWYgKCFzZXNzaW9uU3RvcmFnZS5pbl9kb2N1bWVudF93aXRoX2ZyYQogZWxzZQogICAg
IGRlbGV0ZSBzZXNzaW9uU3RvcmFnZS5pbl9kb2N1bWVudF93aXRoX2ZyYWdtZW50X3VybF8xOwog
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiBkb2N1
bWVudFVSTEhhc2goKQpAQCAtNDIsOCArNDIsOCBAQCBmdW5jdGlvbiBsb2FkZWQoKQogICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVVwKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYWxlcnQoIlNl
Y29uZCBsb2FkIGNvbXBsZXRlLiAgVVJMJ3MgY3VycmVudCBoYXNoIGlzICIgKyBkb2N1bWVudFVS
TEhhc2goKSk7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwog
ICAgIH0KIH0KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZG9jdW1lbnQtd2l0aC1m
cmFnbWVudC11cmwtMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVy
L2RvY3VtZW50LXdpdGgtZnJhZ21lbnQtdXJsLTIuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZG9jdW1lbnQtd2l0aC1mcmFnbWVudC11cmwtMi5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiB9CiAKIGxvY2F0aW9uID0gInJlc291cmNlcy9kb2N1bWVu
dC13aXRoLWZyYWdtZW50LXVybC10ZXN0Lmh0bWwjZm9vIjsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL2RvY3VtZW50LXdpdGgtZnJhZ21lbnQtdXJsLTMuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kb2N1bWVudC13aXRoLWZyYWdtZW50LXVybC0zLmh0
bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2RvY3VtZW50
LXdpdGgtZnJhZ21lbnQtdXJsLTMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw5ICs1LDkgQEAg
aWYgKCFzZXNzaW9uU3RvcmFnZS5pbl9kb2N1bWVudF93aXRoX2ZyYQogZWxzZQogICAgIGRlbGV0
ZSBzZXNzaW9uU3RvcmFnZS5pbl9kb2N1bWVudF93aXRoX2ZyYWdtZW50X3VybF8zOwogCi1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiBkb2N1bWVudFVS
TEhhc2goKQpAQCAtMzUsOCArMzUsOCBAQCBmdW5jdGlvbiBsb2FkZWQoKQogICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVVwKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYWxlcnQoIlNlY29uZCBs
b2FkIGNvbXBsZXRlLiAgVVJMJ3MgY3VycmVudCBoYXNoIGlzICIgKyBkb2N1bWVudFVSTEhhc2go
KSk7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0K
IH0KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZG9jdW1lbnQtd2l0aC1mcmFnbWVu
dC11cmwtNC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2RvY3Vt
ZW50LXdpdGgtZnJhZ21lbnQtdXJsLTQuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9sb2FkZXIvZG9jdW1lbnQtd2l0aC1mcmFnbWVudC11cmwtNC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC01LDkgKzUsOSBAQCBpZiAoIXNlc3Npb25TdG9yYWdlLmluX2RvY3VtZW50
X3dpdGhfZnJhCiBlbHNlCiAgICAgZGVsZXRlIHNlc3Npb25TdG9yYWdlLmluX2RvY3VtZW50X3dp
dGhfZnJhZ21lbnRfdXJsXzQ7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CiB9CiAKIGZ1bmN0aW9uIGRvY3VtZW50VVJMSGFzaCgpCkBAIC0zNSw4ICszNSw4IEBAIGZ1bmN0
aW9uIGxvYWRlZCgpCiAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBhbGVydCgiU2Vjb25kIGxvYWQgY29tcGxldGUuICBVUkwncyBjdXJyZW50IGhh
c2ggaXMgIiArIGRvY3VtZW50VVJMSGFzaCgpKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xv
YWRlci9keW5hbWljLWlmcmFtZS1leHRyYS1iYWNrLWZvcndhcmQtaXRlbS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2R5bmFtaWMtaWZyYW1lLWV4dHJhLWJhY2st
Zm9yd2FyZC1pdGVtLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
bG9hZGVyL2R5bmFtaWMtaWZyYW1lLWV4dHJhLWJhY2stZm9yd2FyZC1pdGVtLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEJhY2tGb3J3YXJkTGlzdCgpOwotICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgIHRlc3RSdW5uZXIuZHVtcEJhY2tGb3J3YXJk
TGlzdCgpOworICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGxv
YWRlZCgpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9lYXJseS1sb2FkLWNhbmNlbC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Vhcmx5LWxvYWQtY2Fu
Y2VsLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Vh
cmx5LWxvYWQtY2FuY2VsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNyw2IEBAIHN0YXJ0
aW5nKS4gSWYgdGhpcyB0ZXN0IGRvZXMgbm90IGNyYXNoIG8KIGJ1ZyBpcyBmaXhlZC48L3A+CiAK
IDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9sb2FkZXIvZW1wdHktZW1iZWQtc3JjLWF0dHJpYnV0ZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL2VtcHR5LWVtYmVkLXNyYy1hdHRyaWJ1dGUuaHRtbAkocmV2
aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZW1wdHktZW1iZWQtc3Jj
LWF0dHJpYnV0ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPGh0bWw+CiAg
ICAgPGhlYWQ+CiAgICAgICAgIDxzY3JpcHQ+Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgPC9zY3JpcHQ+CiAgICAg
PC9oZWFkPgogICAgIDxib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZW1wdHkt
cmVmLXZlcnN1cy1uby1yZWYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xv
YWRlci9lbXB0eS1yZWYtdmVyc3VzLW5vLXJlZi5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9lbXB0eS1yZWYtdmVyc3VzLW5vLXJlZi5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yLDggKzIsOCBAQAogPGhlYWQ+CiA8c2NyaXB0PgogCi1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKIAogZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICB3aW5kb3cubG9jYXRpb24uaGFzaCA9ICcj
Zm9vYmFyYmF6JzsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2V4dGVybmFsLXNjcmlw
dC1VUkwtbG9jYXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9leHRlcm5hbC1zY3JpcHQtVVJMLWxvY2F0aW9uLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2V4dGVybmFsLXNjcmlwdC1VUkwtbG9jYXRpb24uaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxib2R5IG9ubG9hZD0idGVzdCgpIj4K
IEZBSUxVUkUKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIGZ1bmN0aW9uIHRlc3QoKQogewogICAg
IGRvY3VtZW50LndyaXRlKCI8YnI+VGVzdCAxPGJyPkZpbGUgaW4gVVJMOiAiICsgbGVhZk5hbWUo
ZG9jdW1lbnQuVVJMKSArICI8YnI+PHNjcmlwdCBzcmM9J3Jlc291cmNlcy9leHRlcm5hbC1zY3Jp
cHQtVVJMLWxvY2F0aW9uLmpzJz48L3NjciIgKyAiaXB0PiIpOwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9sb2FkZXIvZmlsZS1VUkwtd2l0aC1wb3J0LW51bWJlci5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ZpbGUtVVJMLXdpdGgtcG9ydC1udW1iZXIuaHRtbAko
cmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZmlsZS1VUkwtd2l0
aC1wb3J0LW51bWJlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDE1ICszLDE1IEBACiBmdW5j
dGlvbiBzdWJmcmFtZUxvYWRlZCgpCiB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
c3VsdCIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJTVUNDRVNTOiBUaGUg
c3ViZnJhbWUgbG9hZGVkLiIpKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAog
ZnVuY3Rpb24gcnVuVGVzdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KIAogICAgIHZhciBzdWJmcmFtZUxvY2F0
aW9uID0gd2luZG93LmxvY2F0aW9uICsgIiI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9maWxlLXByb3RvY29sLWZyYWdtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9sb2FkZXIvZmlsZS1wcm90b2NvbC1mcmFnbWVudC5odG1sCShyZXZpc2lvbiAxMjI1NTEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9maWxlLXByb3RvY29sLWZyYWdtZW50Lmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzEsMTEgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0
PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCk7Ci0gICAgICAgIGlmIChsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRTZXJpYWxpemVIVFRQTG9hZHMpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRTZXJpYWxpemVIVFRQTG9hZHMoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpOworICAgICAgICBpZiAodGVzdFJ1bm5lci5z
ZXRTZXJpYWxpemVIVFRQTG9hZHMpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFNlcmlhbGl6
ZUhUVFBMb2FkcygpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGRvY3VtZW50LndyaXRlICgnVGhp
cyB0ZXN0IG11c3QgYmUgcnVuIHRocm91Z2ggRHVtcFJlbmRlclRyZWUuJykKICAgICB9CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9mb250LWZhY2UtZW1wdHkuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9mb250LWZhY2UtZW1wdHkuaHRtbAkocmV2aXNp
b24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZm9udC1mYWNlLWVtcHR5Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBACiAgICAgfQogPC9zdHlsZT4KIDxzY3Jp
cHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDxwPlRoaXMgaXMg
YSB0ZXN0IGZvciA8YSBocmVmPSJodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjk5NiI+QnVnIDE2OTk2OiBDcmFzaCBpbgogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSB3aGVuIGxvYWRpbmcgMC1ieXRlIGZvbnQgdmlhIEBmb250LWZhY2U8L2E+LjwvcD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Zvci13aW5kb3ctZXZlbnQtb25sb2FkLXNjcmlwdHMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9mb3Itd2luZG93LWV2
ZW50LW9ubG9hZC1zY3JpcHRzLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvbG9hZGVyL2Zvci13aW5kb3ctZXZlbnQtb25sb2FkLXNjcmlwdHMuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0
PgogCiA8c2NyaXB0IGZvcj0iYm9keSIgZXZlbnQ9Im9ubG9hZCgpIj4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL2Zvcm0tZXZlbnRzLWJhY2stZm9yd2FyZC5odG1sLWRpc2FibGVkCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Zvcm0tZXZlbnRzLWJhY2stZm9y
d2FyZC5odG1sLWRpc2FibGVkCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci9mb3JtLWV2ZW50cy1iYWNrLWZvcndhcmQuaHRtbC1kaXNhYmxlZAkod29ya2luZyBj
b3B5KQpAQCAtMyw5ICszLDkgQEAKICAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgIGZ1bmN0
aW9uIHRlc3QoKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmICh3aW5kb3cu
bmF2aWdhdGlvbkNvbnRyb2xsZXIpCkBAIC0xOCw4ICsxOCw4IEBACiAgICAgICAgICAgICAgICAg
ZS5pbml0RXZlbnQoImNsaWNrIiwgdHJ1ZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdidXR0b24nKS5kaXNwYXRjaEV2ZW50KGUpOwogICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
KyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBmdW5jdGlvbiBidXR0b25fb25DbGljaygpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9mb3JtLXN0YXRlLXJlc3RvcmUtd2l0aC1sb2NrZWQtYmFjay1mb3J3YXJkLWxpc3QuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9mb3JtLXN0YXRlLXJlc3RvcmUt
d2l0aC1sb2NrZWQtYmFjay1mb3J3YXJkLWxpc3QuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZm9ybS1zdGF0ZS1yZXN0b3JlLXdpdGgtbG9ja2VkLWJh
Y2stZm9yd2FyZC1saXN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsOSArNiw5IEBACiA8aW5w
dXQgbmFtZT0iVGVzdE5hbWUyIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSJCYWQyIj4KIDwvZm9ybT4K
IDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogPC9zY3Jp
cHQ+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9mb3JtLXN1Ym1pc3Np
b24tYWZ0ZXItYmVmb3JldW5sb2FkLWNhbmNlbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL2Zvcm0tc3VibWlzc2lvbi1hZnRlci1iZWZvcmV1bmxvYWQtY2FuY2Vs
Lmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Zvcm0t
c3VibWlzc2lvbi1hZnRlci1iZWZvcmV1bmxvYWQtY2FuY2VsLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEsOCArMSw4IEBACiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0U2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWQodHJ1ZSk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLnNldFNob3VsZFN0YXlP
blBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkKHRydWUpOwogfQogCiBfY29uZmlybWF0aW9u
RGlhbG9nRGlzcGxheWVkT25jZSA9IGZhbHNlOwpAQCAtMTMsMTMgKzEzLDEzIEBAIHdpbmRvdy5h
ZGRFdmVudExpc3RlbmVyKCJiZWZvcmV1bmxvYWQiLCAKICAgICAgICAgcmV0dXJuICJDbGljayAn
TGVhdmUgUGFnZSciOwogCiAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRTaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9h
ZChmYWxzZSk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2V0U2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWQoZmFs
c2UpOwogCiAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgPSAiRkFJTCI7
Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKICAgICAgICAgfSwgMTAwMCk7CiAKICAgICAgICAgZG9jdW1lbnQuZm9ybXNbMF0uc3Vi
bWl0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9mb3JtLXN1Ym1pc3Npb24tYmVm
b3JlLWxvYWQtZ2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
Zm9ybS1zdWJtaXNzaW9uLWJlZm9yZS1sb2FkLWdldC5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9mb3JtLXN1Ym1pc3Npb24tYmVmb3JlLWxvYWQtZ2V0
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzEsMTAgQEAKIDxmb3JtIG1ldGhvZD0iZ2V0
IiBhY3Rpb249InJlc291cmNlcy9mb3JtLXN1Ym1pc3Npb24tYmVmb3JlLWxvYWQtcGFnZTIuaHRt
bCI+PC9mb3JtPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOwotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBCYWNrRm9yd2FyZExpc3QoKTsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5jbGVh
ckJhY2tGb3J3YXJkTGlzdCgpOworICAgIHRlc3RSdW5uZXIuZHVtcEJhY2tGb3J3YXJkTGlzdCgp
OworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwogfQogLy8gVGVzdCB0aGF0IHN1Ym1pdHRpbmcgdGhlIGZvcm0sIHVzaW5nIGEgR0VU
IG1ldGhvZCwgYmVmb3JlIHRoZSAnbG9hZCcgZXZlbnQKIC8vIHJlc3VsdHMgaW4gdGhlIGN1cnJl
bnQgc2Vzc2lvbiBoaXN0b3J5IGl0ZW0gYmVpbmcgcmVwbGFjZWQgYnkgdGhlIG5leHQgb25lLgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZm9ybS1zdWJtaXNzaW9uLWJlZm9yZS1sb2Fk
LXBvc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9mb3JtLXN1
Ym1pc3Npb24tYmVmb3JlLWxvYWQtcG9zdC5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9mb3JtLXN1Ym1pc3Npb24tYmVmb3JlLWxvYWQtcG9zdC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDEwIEBACiA8Zm9ybSBtZXRob2Q9InBvc3QiIGFj
dGlvbj0icmVzb3VyY2VzL2Zvcm0tc3VibWlzc2lvbi1iZWZvcmUtbG9hZC1wYWdlMi5odG1sIj48
L2Zvcm0+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7Ci0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEJhY2tGb3J3YXJkTGlzdCgpOwotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmNsZWFyQmFj
a0ZvcndhcmRMaXN0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQmFja0ZvcndhcmRMaXN0KCk7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CiB9CiAvLyBUZXN0IHRoYXQgc3VibWl0dGluZyB0aGUgZm9ybSwgdXNpbmcgYSBQT1NUIG1l
dGhvZCwgYmVmb3JlIHRoZSAnbG9hZCcgZXZlbnQKIC8vIHJlc3VsdHMgaW4gdGhlIGN1cnJlbnQg
c2Vzc2lvbiBoaXN0b3J5IGl0ZW0gYmVpbmcgcmVwbGFjZWQgYnkgdGhlIG5leHQgb25lLgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZm9ybS1zdWJtaXQtYWJvcnRzLXBhcnNpbmcuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9mb3JtLXN1Ym1pdC1hYm9y
dHMtcGFyc2luZy5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xv
YWRlci9mb3JtLXN1Ym1pdC1hYm9ydHMtcGFyc2luZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDggKzEsOCBAQAogPGZvcm0gbWV0aG9kPSJQT1NUIiBhY3Rpb249InJlc291cmNlcy9sb2NhdGlv
bi1jaGFuZ2UtYWJvcnRzLXBhcnNpbmctcGFzcy5odG1sIj48L2Zvcm0+CiA8c2NyaXB0PgotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIGRvY3VtZW50LmZvcm1zWzBdLnN1
Ym1pdCgpOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9mcmFnbWVu
dC1hZnRlci1yZWRpcmVjdC1nZXRzLWJhY2stZW50cnkuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9mcmFnbWVudC1hZnRlci1yZWRpcmVjdC1nZXRzLWJhY2stZW50
cnkuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZnJh
Z21lbnQtYWZ0ZXItcmVkaXJlY3QtZ2V0cy1iYWNrLWVudHJ5Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEsOSArMSw5IEBACiA8c2NyaXB0PgogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBCYWNrRm9yd2FyZExpc3QoKTsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBCYWNrRm9yd2FyZExp
c3QoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogd2luZG93LmxvY2F0
aW9uLnJlcGxhY2UoJ3Jlc291cmNlcy9jbGljay1mcmFnbWVudC1saW5rLmh0bWwnKTsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ZyYW1lLWNyZWF0aW9uLXJlbW92YWwuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9mcmFtZS1jcmVhdGlvbi1yZW1vdmFs
Lmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ZyYW1l
LWNyZWF0aW9uLXJlbW92YWwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxo
ZWFkPgogPHNjcmlwdD4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIGxvYWRlZCgpCiB7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9mcmFtZS1sb2NhdGlvbi1jaGFuZ2Utbm90LWFk
ZGVkLXRvLWhpc3RvcnkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9mcmFtZS1sb2NhdGlvbi1jaGFuZ2Utbm90LWFkZGVkLXRvLWhpc3RvcnkuaHRtbAkocmV2aXNp
b24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZnJhbWUtbG9jYXRpb24tY2hh
bmdlLW5vdC1hZGRlZC10by1oaXN0b3J5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDggKzEx
LDggQEAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKIAogICBmLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewog
ICAgIGRvY3VtZW50LmJvZHkuaW5uZXJUZXh0ID0gImhpc3RvcnkubGVuZ3RoID0gIiArIGhpc3Rv
cnkubGVuZ3RoOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgIH0KIH0KIApAQCAtMjEsMTEg
KzIxLDExIEBAIG9udW5sb2FkID0gZnVuY3Rpb24oKSB7CiB9CiAKIG9ubG9hZCA9IGZ1bmN0aW9u
KCkgewotICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBC
YWNrRm9yd2FyZExpc3QoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3
YXJkTGlzdCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQmFja0ZvcndhcmRMaXN0KCk7CisgICAgdGVzdFJ1bm5lci5jbGVh
ckJhY2tGb3J3YXJkTGlzdCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICB9
CiAgIHNldFRpbWVvdXQocnVuVGVzdCwgMCk7CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xv
YWRlci9mcmFtZS1zcmMtY2hhbmdlLWFkZGVkLXRvLWhpc3RvcnkuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9mcmFtZS1zcmMtY2hhbmdlLWFkZGVkLXRvLWhpc3Rv
cnkuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZnJh
bWUtc3JjLWNoYW5nZS1hZGRlZC10by1oaXN0b3J5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIs
MTkgKzIsMTkgQEAKIDxoZWFkPgogPHNjcmlwdD4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwotICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQmFja0ZvcndhcmRMaXN0KCk7Ci0gIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgdGVz
dFJ1bm5lci5kdW1wQmFja0ZvcndhcmRMaXN0KCk7CisgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwogfQogCiB2YXIgY291bnQgPSA0OwogCiBmdW5jdGlvbiBmcmFtZUxvYWRlZCgpIHsKICAg
aWYgKGNvdW50ID09IDApIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICB9IGVsc2Ugewog
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpZnJhbWUnKVswXS5zcmMgPSAiZGF0
YTosIiArIGNvdW50LS07CiAgIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ZyYW1l
LXNyYy1jaGFuZ2Utbm90LWFkZGVkLXRvLWhpc3RvcnkuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9mcmFtZS1zcmMtY2hhbmdlLW5vdC1hZGRlZC10by1oaXN0b3J5
Lmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ZyYW1l
LXNyYy1jaGFuZ2Utbm90LWFkZGVkLXRvLWhpc3RvcnkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MTEsOCArMTEsOCBAQCBmdW5jdGlvbiBydW5UZXN0KCkgewogCiAgIGYub25sb2FkID0gZnVuY3Rp
b24oKSB7CiAgICAgZG9jdW1lbnQuYm9keS5pbm5lclRleHQgPSAiaGlzdG9yeS5sZW5ndGggPSAi
ICsgaGlzdG9yeS5sZW5ndGg7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgfQogfQogCkBA
IC0yMSwxMSArMjEsMTEgQEAgb251bmxvYWQgPSBmdW5jdGlvbigpIHsKIH0KIAogb25sb2FkID0g
ZnVuY3Rpb24oKSB7Ci0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEJhY2tGb3J3YXJkTGlzdCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFy
QmFja0ZvcndhcmRMaXN0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBCYWNrRm9yd2FyZExpc3QoKTsKKyAgICB0ZXN0UnVu
bmVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CiAgIH0KICAgc2V0VGltZW91dChydW5UZXN0LCAwKTsKIH0KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvbG9hZGVyL2ZyYW1lcy13aXRoLXVubG9hZC1oYW5kbGVycy1pbi1wYWdlLWNhY2hlLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZnJhbWVzLXdpdGgtdW5s
b2FkLWhhbmRsZXJzLWluLXBhZ2UtY2FjaGUuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvZnJhbWVzLXdpdGgtdW5sb2FkLWhhbmRsZXJzLWluLXBhZ2Ut
Y2FjaGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiwxMCArMiwxMCBAQAogPGhlYWQ+CiA8c2Ny
aXB0PgogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2Uo
IldlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5IiwgMSk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0
VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXkiLCAxKTsKIH0KIAogd2luZG93Lm9ubG9hZCA9IGZ1
bmN0aW9uKCkgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZ290by1hbmNob3ItaW5m
aW5pdGUtbGF5b3V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
Z290by1hbmNob3ItaW5maW5pdGUtbGF5b3V0Lmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL2dvdG8tYW5jaG9yLWluZmluaXRlLWxheW91dC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xNSw4ICsxNSw4IEBACiAgICAgVGhpcyBpcyB0aGUgYW5jaG9yLgog
PC9kaXY+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgZG9j
dW1lbnQud3JpdGUobG9jYXRpb24uaHJlZj0iI2FuY2hvciIpOwogPC9zY3JpcHQ+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9ncmFuZHBhcmVudC1jb21wbGV0aW9uLXN0YXJ0cy1yZWRp
cmVjdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2dyYW5kcGFy
ZW50LWNvbXBsZXRpb24tc3RhcnRzLXJlZGlyZWN0Lmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2dyYW5kcGFyZW50LWNvbXBsZXRpb24tc3RhcnRzLXJl
ZGlyZWN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzEsMTAgQEAKIDxodG1sPgogPGhl
YWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9oYXNoY2hhbmdlLWV2ZW50LWFzeW5jLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvaGFzaGNoYW5nZS1ldmVudC1hc3lu
Yy5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9oYXNo
Y2hhbmdlLWV2ZW50LWFzeW5jLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE0LDcgKzE0LDcgQEAg
dmFyIGhhc2hDaGFuZ2luZyA9IGZhbHNlOwogdmFyIGZhaWxlZCA9IGZhbHNlOwogdmFyIG1zZ3Mg
PSBbXTsKIAotdmFyIGxjID0gd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyOwordmFyIGxjID0g
d2luZG93LnRlc3RSdW5uZXI7CiBpZiAobGMpIHsKICAgICBsYy5kdW1wQXNUZXh0KCk7CiAgICAg
bGMud2FpdFVudGlsRG9uZSgpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvaGFzaGNo
YW5nZS1ldmVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2hh
c2hjaGFuZ2UtZXZlbnQuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9sb2FkZXIvaGFzaGNoYW5nZS1ldmVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw5ICsx
Nyw5IEBAIGlmIChzZXNzaW9uU3RvcmFnZS50b3RhbEV2ZW50c0ZpcmVkID09IHQKIHNlc3Npb25T
dG9yYWdlLmNsZWFyKCk7CiBzZXNzaW9uU3RvcmFnZS50b3RhbEV2ZW50c0ZpcmVkID0gMDsKIAot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gc3RhcnRU
ZXN0KCkKQEAgLTU0LDggKzU0LDggQEAgZnVuY3Rpb24gaGFzaENoYW5nZWQoZXZlbnRIYW5kbGVy
TmFtZSkKICAgICAgICAgbG9jYXRpb24uaGFzaD0iIjsKICAgICAgICAgbG9jYXRpb24uaHJlZj1s
b2NhdGlvbi5ocmVmLnN1YnN0cigwLCBsb2NhdGlvbi5ocmVmLmxlbmd0aCAtIDEpOwogICAgIH0K
LSAgICBpZiAodGVzdE51bWJlciA9PSAyICYmIHNlc3Npb25TdG9yYWdlLnRvdGFsRXZlbnRzRmly
ZWQgPT0gdGFyZ2V0TnVtYmVyT2ZFdmVudHNGb3JTZWNvbmRUZXN0ICYmIHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgaWYgKHRlc3ROdW1iZXIgPT0gMiAmJiBzZXNzaW9uU3RvcmFnZS50b3RhbEV2ZW50
c0ZpcmVkID09IHRhcmdldE51bWJlck9mRXZlbnRzRm9yU2Vjb25kVGVzdCAmJiB3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgc2Vz
c2lvblN0b3JhZ2UuY2xlYXIoKTsKICAgICB9CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xv
YWRlci9oaXN0b3J5LWZvcndhcmQtaW4taGVhZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL2hpc3RvcnktZm9yd2FyZC1pbi1oZWFkLmh0bWwJKHJldmlzaW9uIDEy
MjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2hpc3RvcnktZm9yd2FyZC1pbi1oZWFk
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8aHRtbD4KIDxoZWFkPgogPHNj
cmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIAogaGlzdG9yeS5mb3J3YXJkKCk7CiA8L3NjcmlwdD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2lmcmFtZS1yZWN1cnNpdmUtc3luY2hyb25v
dXMtbG9hZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2lmcmFt
ZS1yZWN1cnNpdmUtc3luY2hyb25vdXMtbG9hZC5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9pZnJhbWUtcmVjdXJzaXZlLXN5bmNocm9ub3VzLWxvYWQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw4ICs1LDggQEAgZnJvbSBhbm90aGVyIGlmcmFtZSdz
IG9ubG9hZCBoYW5kbGVyLgogPHA+UEFTUzogWW91IGRpZG4ndCBjcmFzaC48L3A+CiAKIDxzY3Jp
cHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gYWRkRnJhbWUoKQogewpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9sb2FkZXIvaW1hZ2UtaW4tcGFnZS1jYWNoZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ltYWdlLWluLXBhZ2UtY2FjaGUuaHRtbAkocmV2aXNp
b24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvaW1hZ2UtaW4tcGFnZS1jYWNo
ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDExICs2LDExIEBACiA8c2NyaXB0PgogdmFyIG90
aGVyV2luZG93OwogZnVuY3Rpb24gcnVuVGVzdCgpIHsKLQlpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0JCWxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLQkJbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotCQlsYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRDYW5PcGVuV2luZG93cygpOwotCQlsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVBy
ZWZlcmVuY2UoIldlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5IiwgMSk7CisJaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisJCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCQl0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKwkJdGVzdFJ1bm5lci5zZXRDYW5PcGVuV2luZG93cygpOwor
CQl0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZl
cmVuY2VLZXkiLCAxKTsKIAl9CiAKIAkvLyBUaGlzIHRlc3Qgb3BlbiB0d28gd2luZG93cy4gT25l
IHByaW1hcnkgd2luZG93IHdpbGwgbG9hZCBhbmltYXRlZC1pbWFnZS5odG1sLgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvaW5oZXJpdC1jaGFyc2V0LXRvLWVtcHR5LWZyYW1lLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvaW5oZXJpdC1jaGFyc2V0LXRv
LWVtcHR5LWZyYW1lLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
bG9hZGVyL2luaGVyaXQtY2hhcnNldC10by1lbXB0eS1mcmFtZS5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC02LDggKzYsOCBAQAogPHA+VGVzdCB0aGF0IGEgcHJvZ3JhbW1hdGljYWxseSBjcmVhdGVk
IGVtcHR5IGlmcmFtZSBpbmhlcml0cyBjaGFyc2V0IGZyb20gdGhlIHBhcmVudC4KIDxwIGlkPXJl
c3VsdD4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBm
dW5jdGlvbiBjcmVhdGVFbXB0eUlmcmFtZSgpIHsKICAgIGlmICghZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NvbnRhaW5lck5hbWUnKSkgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
aW5wdXQtZWxlbWVudC1wYWdlLWNhY2hlLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9sb2FkZXIvaW5wdXQtZWxlbWVudC1wYWdlLWNhY2hlLWNyYXNoLmh0bWwJKHJl
dmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2lucHV0LWVsZW1lbnQt
cGFnZS1jYWNoZS1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDEwICsyLDEwIEBACiA8
aGVhZD4KIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRl
UHJlZmVyZW5jZSgiV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXkiLCAxKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJl
bmNlKCJXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSIsIDEpOwogfQogCiBmdW5jdGlv
biBydW5UZXN0KCkKQEAgLTMzLDggKzMzLDggQEAgZnVuY3Rpb24gcGFnZVNob3duKCkKIHsKICAg
ICBpZiAoc2Vzc2lvblN0b3JhZ2UuZmluaXNoVGVzdCkgewogICAgICAgICBjb25zb2xlLmxvZygn
bmF2aWdhdGVkIGJhY2snKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcnVuVGVzdCgpOwogICAgIH0KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL2phdmFzY3JpcHQtdXJsLWVuY29kaW5nLTIuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9qYXZhc2NyaXB0LXVybC1lbmNvZGlu
Zy0yLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ph
dmFzY3JpcHQtdXJsLWVuY29kaW5nLTIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMywxMSArMywx
MSBAQAogPHNjcmlwdD4KIGZ1bmN0aW9uIHRlc3QoKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9Ci0gICAgd2luZG93
LmxvY2F0aW9uLmhyZWY9ImphdmFzY3JpcHQ6JzxwIGZvbz1cIj9cIj5TaG91bGQgYmUgQ3lyaWxs
aWMgdGV4dCwgbm90IFUrRkZGRCBSRVBMQUNFTUVOVCBDSEFSQUNURVJTOiDP8O7i5fDq4DwvcD48
c2NyaXB0PmlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTwvc2NyIiArICJpcHQ+JyI7CisgICAgd2luZG93LmxvY2F0aW9uLmhy
ZWY9ImphdmFzY3JpcHQ6JzxwIGZvbz1cIj9cIj5TaG91bGQgYmUgQ3lyaWxsaWMgdGV4dCwgbm90
IFUrRkZGRCBSRVBMQUNFTUVOVCBDSEFSQUNURVJTOiDP8O7i5fDq4DwvcD48c2NyaXB0PmlmICh3
aW5kb3cudGVzdFJ1bm5lcikgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk8L3NjciIgKyAiaXB0Pici
OwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9q
YXZhc2NyaXB0LXVybC1lbmNvZGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL2phdmFzY3JpcHQtdXJsLWVuY29kaW5nLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2phdmFzY3JpcHQtdXJsLWVuY29kaW5nLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8bWV0YSBjaGFyc2V0PSJ3aW5kb3dzLTEy
NTEiPgogPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBm
dW5jdGlvbiB0ZXN0KCkgewogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5p
bm5lckhUTUwgPSAiMS4gIiArICh3aW5kb3cuZnJhbWVzWzBdLmRvY3VtZW50LmJvZHkuaW5uZXJI
VE1MID09ICJTVdHRxVNTIiA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFOiAiICsgd2luZG93LmZyYW1l
c1swXS5kb2N1bWVudC5ib2R5LmlubmVySFRNTCkgKyAiLlxyIjsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvbG9hZGVyL2phdmFzY3JpcHQtdXJsLWhpZXJhcmNoaWNhbC1leGVjdXRpb24uaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9qYXZhc2NyaXB0LXVybC1oaWVy
YXJjaGljYWwtZXhlY3V0aW9uLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvbG9hZGVyL2phdmFzY3JpcHQtdXJsLWhpZXJhcmNoaWNhbC1leGVjdXRpb24uaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxodG1sPgogPHNjcmlwdD4KLWlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q3VzdG9tUG9saWN5RGVsZWdh
dGUodHJ1ZSwgdHJ1ZSk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLnNldEN1c3RvbVBvbGljeURlbGVnYXRlKHRy
dWUsIHRydWUpOwogfQogCiBmdW5jdGlvbiBydW5UZXN0KCkKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL2phdmFzY3JpcHQtdXJsLWlmcmFtZS1jcmFzaC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2phdmFzY3JpcHQtdXJsLWlmcmFtZS1jcmFzaC5odG1s
CShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9qYXZhc2NyaXB0
LXVybC1pZnJhbWUtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAKIAog
PGE+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIFRoaXMgdGVzdCBwYXNzZXMg
aWYgaXQgZG9lc24ndCBjcmFzaC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2phdmFz
Y3JpcHQtdXJsLWlmcmFtZS1yZW1vdmUtb24tbmF2aWdhdGUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9qYXZhc2NyaXB0LXVybC1pZnJhbWUtcmVtb3ZlLW9uLW5h
dmlnYXRlLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVy
L2phdmFzY3JpcHQtdXJsLWlmcmFtZS1yZW1vdmUtb24tbmF2aWdhdGUuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSw4ICsxLDggQEAKIDxpZnJhbWUgc3JjPSJodHRwOi8vZG9lcy5ub3QuZXhpc3Qv
IiBpZD0idGFyZ2V0Ij48L2lmcmFtZT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOwogfQogCiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewpAQCAtMTEsNyArMTEs
NyBAQCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogCiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigi
cG9wc3RhdGUiLCBmdW5jdGlvbigpIHsKICAgICAgICAgZG9jdW1lbnQud3JpdGUoIlBBU1MgLSBK
YXZhc2NyaXB0IFVSTCBibG9ja2VkIHdpdGhvdXQgY3Jhc2hpbmcuIik7Ci0gICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0sIGZhbHNlKTsKIDwvc2NyaXB0
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvamF2YXNjcmlwdC11cmwtaW4tZW1iZWQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9qYXZhc2NyaXB0LXVy
bC1pbi1lbWJlZC5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xv
YWRlci9qYXZhc2NyaXB0LXVybC1pbi1lbWJlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYg
KzEsNiBAQAogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0
PgogPHA+VGhpcyB0ZXN0cyB0aGF0IGphdmFzY3JpcHQ6IHVybHMgaW4gYW4gZW1iZWQgdGFnIGRv
IG5vdCBnZXQgZXhlY3V0ZWQuPC9wPgogPGVtYmVkIHNyYz0iamF2YXNjcmlwdDphbGVydCgnRkFJ
TCAtIGphdmFzY3JpcHQ6IHVybCB1cmwgd2FzIGV4ZWN1dGVkLicpOyI+PC9lbWJlZD4gCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9qYXZhc2NyaXB0LXVybC1pbi1vYmplY3QuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9qYXZhc2NyaXB0LXVybC1pbi1v
YmplY3QuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
amF2YXNjcmlwdC11cmwtaW4tb2JqZWN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8
cD5UaGlzIHRlc3RzIHRoYXQgamF2YXNjcmlwdDogdXJscyBpbiBhbiBvYmplY3QgdGFnIGRvIG5v
dCBnZXQgZXhlY3V0ZWQuPC9wPgogPG9iamVjdCBkYXRhPSJqYXZhc2NyaXB0OmFsZXJ0KCdGQUlM
IC0gamF2YXNjcmlwdDogdXJsIHdhcyBleGVjdXRlZC4nKTsiPjwvb2JqZWN0PiAKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL2xpbmstbm8tVVJMLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvbGluay1uby1VUkwuaHRtbAkocmV2aXNpb24gMTIyNTUxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvbGluay1uby1VUkwuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMiw4ICsyLDggQEAKIDxoZWFkPgogPGxpbmsgdHlwZT0idGV4dC9jc3MiPgogPHNjcmlw
dD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvbG9hZGVyL2xvYWRJblByb2dyZXNzLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvbG9hZEluUHJvZ3Jlc3MuaHRtbAkocmV2aXNpb24gMTIyNTUx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvbG9hZEluUHJvZ3Jlc3MuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKICAgICA8aGVhZD4KICAgICAgICAgPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJmYWtlLmNzcyIgdHlwZT0idGV4dC9jc3MiID4KICAgICAgICAgPHNj
cmlwdD4JCi0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBmdW5jdGlvbiB0ZXN0Rm9ybSgpIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KGRvY3VtZW50LkxvZ2luRm9ybSkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2xvY2Fs
LUNTUy1mcm9tLWxvY2FsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2Fk
ZXIvbG9jYWwtQ1NTLWZyb20tbG9jYWwuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9sb2FkZXIvbG9jYWwtQ1NTLWZyb20tbG9jYWwuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMiwxNCArMiwxNCBAQAogPGhlYWQ+CiAgICAgPHNjcmlwdD4KICAgICAgICAgZnVuY3Rp
b24gdGVzdCgpIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0g
ICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAg
ICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHZhciBsb2NhbFN0eWxlU2hlZXRM
b2NhdGlvbiA9ICJmaWxlOi8vL3RtcC9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jl
c291cmNlcy9jc3NTdHlsZS5jc3MiOwotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsb2NhbFN0eWxlU2hlZXRMb2NhdGlvbiA9IGxh
eW91dFRlc3RDb250cm9sbGVyLnBhdGhUb0xvY2FsUmVzb3VyY2UobG9jYWxTdHlsZVNoZWV0TG9j
YXRpb24pOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
ICAgIGxvY2FsU3R5bGVTaGVldExvY2F0aW9uID0gdGVzdFJ1bm5lci5wYXRoVG9Mb2NhbFJlc291
cmNlKGxvY2FsU3R5bGVTaGVldExvY2F0aW9uKTsKIAogICAgICAgICAgICAgdmFyIGxvY2FsTGlu
a0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7CiAgICAgICAgICAgICBs
b2NhbExpbmtFbGVtZW50LnNldEF0dHJpYnV0ZSgidHlwZSIsICJ0ZXh0L2NzcyIpOwpAQCAtMjEs
OCArMjEsOCBAQAogICAgICAgICAgICAgLy8gVW5mb3J0dW5hdGVseSBsaW5rIHRhZ3MgZG8gbm90
IGhhdmUgbG9hZCBldmVudHMsIHNvIHdlIGNhbm5vdCBzaW1wbHkgbWFrZSBhIGxvYWQgaGFuZGxl
ci4KICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGJhY2tncm91bmRDaGVjaywgMSk7CiAg
ICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKICAgICAgICAgICAgIH0sIDUwMDApOwogICAgICAgICB9CiAKQEAgLTMzLDggKzMzLDgg
QEAKICAgICAgICAgICAgIHZhciBiZ0NvbG9yID0gc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgiYmFj
a2dyb3VuZC1jb2xvciIpOwogICAgICAgICAgICAgaWYgKGJnQ29sb3JbNF0gPT0gMikgewogICAg
ICAgICAgICAgICAgIHJlc3VsdC5pbm5lckhUTUwgPSAiVGVzdCBQYXNzZWQuIExvY2FsIENTUyBy
ZW1vdGVseSBsb2FkZWQiOwotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICByZXN1bHQuaW5uZXJIVE1MID0gIlRlc3QgRmFpbGVkOiBMb2Nh
bCBDU1Mgbm90IHJlbW90ZWx5IGxvYWRlZC4iOwogICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRU
aW1lb3V0KGJhY2tncm91bmRDaGVjaywgMSk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9sb2NhbC1KYXZhU2NyaXB0LWZyb20tbG9jYWwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9sb2NhbC1KYXZhU2NyaXB0LWZyb20tbG9jYWwuaHRtbAkocmV2aXNp
b24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvbG9jYWwtSmF2YVNjcmlwdC1m
cm9tLWxvY2FsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsMTQgKzQsMTQgQEAKICAgICB2YXIg
c2VjcmV0bmVzcyA9IDA7CiAKICAgICBmdW5jdGlvbiB0ZXN0KCkgewotICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKICAgICAgICAgfQogCiAgICAgICAgIHZhciBsb2NhbFNjcmlwdExvY2F0aW9u
ID0gImZpbGU6Ly8vdG1wL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2Vz
L2xvY2FsU2NyaXB0LmpzIjsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgICAgIGxvY2FsU2NyaXB0TG9jYXRpb24gPSBsYXlvdXRUZXN0Q29udHJvbGxl
ci5wYXRoVG9Mb2NhbFJlc291cmNlKGxvY2FsU2NyaXB0TG9jYXRpb24pOworICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICBsb2NhbFNjcmlwdExvY2F0aW9uID0gdGVz
dFJ1bm5lci5wYXRoVG9Mb2NhbFJlc291cmNlKGxvY2FsU2NyaXB0TG9jYXRpb24pOwogCiAgICAg
ICAgIHZhciBsb2NhbFNjcmlwdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3Jp
cHQiKTsKICAgICAgICAgbG9jYWxTY3JpcHRFbGVtZW50LnNldEF0dHJpYnV0ZSgic3JjIiwgbG9j
YWxTY3JpcHRMb2NhdGlvbik7CkBAIC0yMiwxNSArMjIsMTUgQEAKICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICB0YWcuaW5uZXJIVE1MID0gIlRlc3QgRmFpbGVkLiBMb2NhbCBzY3Jp
cHQgbG9hZGVkLCBidXQgbm90IHN1Y2Nlc3NmdWxseSBydW4uIjsKIAotICAgICAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0p
OwogICAgICAgICBsb2NhbFNjcmlwdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCBm
dW5jdGlvbigpIHsKICAgICAgICAgICAgIHZhciB0YWcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVzdWx0Iik7CiAgICAgICAgICAgICB0YWcuaW5uZXJIVE1MID0gIlRlc3QgRmFpbGVkOiBM
b2NhbCBzY3JpcHQgbm90IGxvYWRlZC4iOwogCi0gICAgICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgfSk7CiAKICAgICAgICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsb2NhbFNjcmlwdEVsZW1lbnQpCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9sb2NhbC1jc3MtYWxsb3dlZC1pbi1zdHJpY3QtbW9kZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2xvY2FsLWNzcy1hbGxvd2Vk
LWluLXN0cmljdC1tb2RlLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL2xvY2FsLWNzcy1hbGxvd2VkLWluLXN0cmljdC1tb2RlLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTYsOCArNiw4IEBACiAgICAgPHNjcmlwdD4KICAgICAgICAgZnVuY3Rpb24gdGVz
dCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICB2YXIgdGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpOwogICAgICAgICAgICAgdmFyIHN0
eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZSh0YXJnZXQpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvbG9jYWwtaUZyYW1lLXNvdXJjZS1mcm9tLWxvY2FsLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvbG9jYWwtaUZyYW1lLXNvdXJjZS1mcm9tLWxvY2FsLmh0
bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2xvY2FsLWlG
cmFtZS1zb3VyY2UtZnJvbS1sb2NhbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDEyICsyLDEy
IEBACiA8aGVhZD4KICAgICA8c2NyaXB0PgogICAgICAgICBmdW5jdGlvbiBpRnJhbWVUZXN0KCkg
ewotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiAKICAgICAgICAgICAgIHZhciBsb2NhbFBhZ2VMb2NhdGlvbiA9ICJmaWxlOi8vL3Rt
cC9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9sb2NhbFBhZ2UuaHRt
bCI7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICAgICAgICAgIGxvY2FsUGFnZUxvY2F0aW9uID0gbGF5b3V0VGVzdENvbnRyb2xsZXIucGF0aFRv
TG9jYWxSZXNvdXJjZShsb2NhbFBhZ2VMb2NhdGlvbik7CisgICAgICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgbG9jYWxQYWdlTG9jYXRpb24gPSB0ZXN0UnVu
bmVyLnBhdGhUb0xvY2FsUmVzb3VyY2UobG9jYWxQYWdlTG9jYXRpb24pOwogCiAgICAgICAgICAg
ICB2YXIgbG9jYWxJZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaUZyYW1l
Iik7CiAgICAgICAgICAgICBsb2NhbElmcmFtZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJpZCIsICJt
eUZyYW1lIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9sb2NhbC1pbWFnZS1mcm9t
LWxvY2FsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvbG9jYWwt
aW1hZ2UtZnJvbS1sb2NhbC5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2xvYWRlci9sb2NhbC1pbWFnZS1mcm9tLWxvY2FsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTIgKzEsMTIgQEAKIDxodG1sPgogPGhlYWQ+CiAgICAgPHNjcmlwdD4gICAgICAgIAotICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICB2YXIg
bG9jYWxJbWFnZUxvY2F0aW9uID0gImZpbGU6Ly8vdG1wL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvcmVzb3VyY2VzL2NvbXBhc3MuanBnIjsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxvY2FsSW1hZ2VMb2NhdGlvbiA9IGxheW91
dFRlc3RDb250cm9sbGVyLnBhdGhUb0xvY2FsUmVzb3VyY2UobG9jYWxJbWFnZUxvY2F0aW9uKTsK
KyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgbG9jYWxJbWFnZUxv
Y2F0aW9uID0gdGVzdFJ1bm5lci5wYXRoVG9Mb2NhbFJlc291cmNlKGxvY2FsSW1hZ2VMb2NhdGlv
bik7CiAKICAgICAgICAgdmFyIGxvY2FsSW1hZ2VFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiaW1nIik7CiAgICAgICAgIGxvY2FsSW1hZ2VFbGVtZW50LnNldEF0dHJpYnV0ZSgiaWQi
LCAibXlJbWciKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2xvY2FsLXN2Zy1wYXJz
ZWQtYXMtc3ZnLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9sb2Nh
bC1zdmctcGFyc2VkLWFzLXN2Zy5zdmcJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvbG9hZGVyL2xvY2FsLXN2Zy1wYXJzZWQtYXMtc3ZnLnN2Zwkod29ya2luZyBjb3B5KQpA
QCAtMSw3ICsxLDcgQEAKIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4K
ICAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CiAgICAgICAgIHZhciB0YWdOYW1lID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnRhZ05hbWU7
CiAgICAgICAgIGFsZXJ0KHRhZ05hbWUgPT0gInN2ZyIgPyAiUEFTUzogRmlsZSBwYXJzZWQgYXMg
U1ZHIiA6ICJGQUlMOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQudGFnTmFtZSB3YXMgJyIgKyB0
YWdOYW1lICsgIicsIGV4cGVjdGVkICdzdmcnIik7CiAgICAgPC9zY3JpcHQ+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9sb2NhbC14aHRtbC1wYXJzZWQtYXMteGh0bWwueGh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvbG9jYWwteGh0bWwtcGFyc2VkLWFz
LXhodG1sLnhodG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9sb2NhbC14aHRtbC1wYXJzZWQtYXMteGh0bWwueGh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgs
OCArOCw4IEBACiAKICAgICAgICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKICAgICAgICAg
ewotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiAgICAgICAgICAgICB2YXIgdGFnTmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2h0bWwnKS50YWdOYW1lOwogICAgICAgICAgICAgbG9nKHRhZ05hbWUgPT0gImh0bWwiID8gIlBB
U1M6IEZpbGUgcGFyc2VkIGFzIFhIVE1MIiA6ICJGQUlMOiBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdodG1sJykudGFnTmFtZSB3YXMgJyIgKyB0YWdOYW1lICsgIicsIGV4cGVjdGVkICdodG1sJyIp
OwogICAgICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9sb2NhdGlvbi1jaGFu
Z2UtYWJvcnRzLXBhcnNpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xv
YWRlci9sb2NhdGlvbi1jaGFuZ2UtYWJvcnRzLXBhcnNpbmcuaHRtbAkocmV2aXNpb24gMTIyNTUx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvbG9jYXRpb24tY2hhbmdlLWFib3J0cy1wYXJz
aW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiA8c2NyaXB0PgotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0g
J3Jlc291cmNlcy9sb2NhdGlvbi1jaGFuZ2UtYWJvcnRzLXBhcnNpbmctcGFzcy5odG1sJzsKIDwv
c2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvbG9jYXRpb24tcG9ydC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2xvY2F0aW9uLXBvcnQuaHRt
bAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvbG9jYXRpb24t
cG9ydC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxNiArNTEsMTYgQEAKICAgICAgICAgdmFy
IGludGVybmFsRnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCAoJ2ludGVybmFsJyk7CiAg
ICAgICAgIHNob3VsZEJlKCdpbnRlcm5hbEZyYW1lLmNvbnRlbnRXaW5kb3cubG9jYXRpb24uaG9z
dCcsICc6MCcpOwogCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwogICAgIH0KIAogCiAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKSB7Ci0gICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAg
ICAgdGVzdFJ1bm5lci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOworICAgICAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKICAgICAgICAgfQogCiAgICAgICAgIHZhciBpbnRlcm5hbEZyYW1lID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQgKCdpbnRlcm5hbCcpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
bWFpbi1kb2N1bWVudC11cmwtZm9yLW5vbi1odHRwLWxvYWRzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvbWFpbi1kb2N1bWVudC11cmwtZm9yLW5vbi1odHRwLWxv
YWRzLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL21h
aW4tZG9jdW1lbnQtdXJsLWZvci1ub24taHR0cC1sb2Fkcy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0yLDEwICsyLDEwIEBACiA8aGVhZD4KIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wUmVzb3VyY2VMb2Fk
Q2FsbGJhY2tzKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpOworICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwogfQogCiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL21ldGEtcmVm
cmVzaC12cy1vcGVuLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
bWV0YS1yZWZyZXNoLXZzLW9wZW4uaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9sb2FkZXIvbWV0YS1yZWZyZXNoLXZzLW9wZW4uaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMSw5ICsxLDkgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIDwvc2NyaXB0PgogPG1ldGEgaHR0cC1lcXVpdj0icmVm
cmVzaCIgY29udGVudD0iMDt1cmw9ZGF0YTp0ZXh0L3BsYWluLFlvdSBzaG91bGQgbm90IGhhdmUg
YmVlbiByZWRpcmVjdGVkIGhlcmUuIj4KQEAgLTEyLDcgKzEyLDcgQEAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewogPGlmcmFtZSBpZD0iaWZybSIgc3JjPSJhYm91dDpibGFuayI+
PC9pZnJhbWU+CiA8c2NyaXB0PgogICAgIGRvY3VtZW50LmJvZHkub25sb2FkID0gZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCc8cD5GQUlM
OiBvbmxvYWQ8L3A+Jyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFsZXJ0KCdGQUlMOiBv
bmxvYWQnKTsKQEAgLTI3LDggKzI3LDggQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewogICAgICAgICBpZiAod2luZG93LnN0b3ApCiAgICAgICAgICAgICBzdG9wKCk7CiAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpZnJtIikuY29udGVudERvY3VtZW50LmNsb3Nl
KCk7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAg
fSwgNTAwKTsKIDwvc2NyaXB0PgogPHA+U1VDQ0VTUyAtIHNob3VsZG4ndCByZWZyZXNoIG9yIGlu
dm9rZSBvbmxvYWQuPC9wPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvbm9uLWRlZmVy
cmVkLXN1YnN0aXR1dGUtbG9hZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
bG9hZGVyL25vbi1kZWZlcnJlZC1zdWJzdGl0dXRlLWxvYWQuaHRtbAkocmV2aXNpb24gMTIyNTUx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvbm9uLWRlZmVycmVkLXN1YnN0aXR1dGUtbG9h
ZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDEwIEBACiA8cD5UaGlzIHRlc3RzIHRo
YXQgdXNpbmcgc3Vic3RpdHV0ZSBsb2FkIGluIGNvbWJpbmF0aW9uIHdpdGggbm9uLWRlZmVycmVk
IG1haW4gcmVzb3VyY2UgbG9hZGluZyB3aWxsIG5vdCBjYXVzZQogYXNzZXJ0aW9ucyBvciBkdXBs
aWNhdGUgbG9hZHMsIHdoaWNoIGNhbiBoYXBwZW4gaWYgdGhlIHN1YnN0aXR1dGUgZG9jdW1lbnQg
Y29udGFpbnMgSmF2YVNjcmlwdC1hbGVydHMuPC9wPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9h
ZChmYWxzZSk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVMb2FkSFRNTFN0cmluZygi
PHNjcmlwdD5pZiAodHlwZW9mKGhhc0JlZW5Mb2FkZWQpICE9ICd1bmRlZmluZWQnKSB7IiArCitp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICB0ZXN0UnVubmVyLnNldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQoZmFsc2UpOworICAgIHRl
c3RSdW5uZXIucXVldWVMb2FkSFRNTFN0cmluZygiPHNjcmlwdD5pZiAodHlwZW9mKGhhc0JlZW5M
b2FkZWQpICE9ICd1bmRlZmluZWQnKSB7IiArCiAgICAgICAgICJkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ0ZBSUxVUkUnOyIgKwogICAgICJ9IGVsc2UgeyAi
ICsKICAgICAgICAgImhhc0JlZW5Mb2FkZWQgPSB0cnVlOyBkb2N1bWVudC53cml0ZSgnPGRpdiBp
ZD1yZXN1bHQ+UEFTUzwvZGl2PicpOyBhbGVydCgnVHJpZ2dlcmluZyBidWcgdGhyb3VnaCBKUy1h
bGVydCcpOyB9IiArCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9udWxsLXJlcXVlc3Qt
YWZ0ZXItd2lsbFNlbmRSZXF1ZXN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9sb2FkZXIvbnVsbC1yZXF1ZXN0LWFmdGVyLXdpbGxTZW5kUmVxdWVzdC5odG1sCShyZXZpc2lv
biAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9udWxsLXJlcXVlc3QtYWZ0ZXIt
d2lsbFNlbmRSZXF1ZXN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNyw2IEBACiA8L3A+
CiA8aW1nIHNyYz0iaHR0cDovLzEwLjAuMC4xLyI+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9v
bmhhc2hjaGFuZ2UtYXR0cmlidXRlLWxpc3RlbmVycy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvbG9hZGVyL29uaGFzaGNoYW5nZS1hdHRyaWJ1dGUtbGlzdGVuZXJzLmh0bWwJ
KHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL29uaGFzaGNoYW5n
ZS1hdHRyaWJ1dGUtbGlzdGVuZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOSArMiw5IEBA
CiA8aGVhZD4KIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CiB9CiAKIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKQEAgLTM5LDggKzM5LDggQEAgZnVuY3Rpb24g
Ym9keUFzc2lnbmVkQXR0cmlidXRlKCkKIGZ1bmN0aW9uIHdpbmRvd0F0dHJpYnV0ZSgpCiB7CiAg
ICAgYWxlcnQoIndpbmRvdy5vbmhhc2hjaGFuZ2UgYXR0cmlidXRlIGNhbGxlZC4iKTsKLSAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2xvYWRlci9vbmxvYWQtYmFkLXNjaGVtZS1mb3ItZnJhbWUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9vbmxvYWQtYmFkLXNjaGVtZS1mb3ItZnJhbWUu
aHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvb25sb2Fk
LWJhZC1zY2hlbWUtZm9yLWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsMTIgKzMsMTIg
QEAKIDxoZWFkPgogICAgIDx0aXRsZT5UZXN0IGZvciBCdWcgMzM1MzM6IHdpbmRvdy5vbmxvYWQg
bmV2ZXIgZmlyZXMgaWYgcGFnZSBjb250YWlucyBhbiAmbHQ7aWZyYW1lPiB3aXRoIGEgYmFkIHNj
aGVtZSBvciB3aG9zZSBsb2FkIGlzIGNhbmNlbGxlZCBieSByZXR1cm5pbmcgbnVsbCBmcm9tIHJl
c291cmNlIGxvYWQgZGVsZWdhdGUncyB3aWxsU2VuZFJlcXVlc3Q8L3RpdGxlPgogICAgIDxzY3Jp
cHQ+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAg
ICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHZhciByZXN1bHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7Ci0gICAgICAgICAgICBpZiAoIXdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgaWYgKCF3aW5kb3cudGVz
dFJ1bm5lcikgewogICAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgPSAiVGhpcyB0ZXN0
IGNhbiBvbmx5IGJlIHJ1biBpbiBEdW1wUmVuZGVyVHJlZS4iOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL29ubG9h
ZC1wb2xpY3ktaWdub3JlLWZvci1mcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvbG9hZGVyL29ubG9hZC1wb2xpY3ktaWdub3JlLWZvci1mcmFtZS5odG1sCShyZXZpc2lv
biAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9vbmxvYWQtcG9saWN5LWlnbm9y
ZS1mb3ItZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMywxNCArMywxNCBAQAogPGhlYWQ+
CiAgICAgPHRpdGxlPlRlc3QgZm9yIEJ1ZyAzMzUzMzogd2luZG93Lm9ubG9hZCBuZXZlciBmaXJl
cyBpZiBwYWdlIGNvbnRhaW5zIGFuICZsdDtpZnJhbWU+IHdpdGggYSBiYWQgc2NoZW1lIG9yIHdo
b3NlIGxvYWQgaXMgY2FuY2VsbGVkIGJ5IHJldHVybmluZyBudWxsIGZyb20gcmVzb3VyY2UgbG9h
ZCBkZWxlZ2F0ZSdzIHdpbGxTZW5kUmVxdWVzdDwvdGl0bGU+CiAgICAgPHNjcmlwdD4KLSAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUodHJ1ZSk7CisgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgICAgICB0ZXN0UnVubmVyLnNldEN1c3RvbVBvbGljeURlbGVnYXRlKHRydWUpOwogICAgICAg
ICB9CiAKICAgICAgICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAg
dmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKLSAgICAgICAg
ICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICBpZiAo
IXdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCA9
ICJUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIER1bXBSZW5kZXJUcmVlLiI7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvb25sb2FkLXdpbGxTZW5kUmVxdWVzdC1udWxsLWZvci1mcmFtZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL29ubG9hZC13aWxsU2VuZFJlcXVlc3QtbnVs
bC1mb3ItZnJhbWUuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvb25sb2FkLXdpbGxTZW5kUmVxdWVzdC1udWxsLWZvci1mcmFtZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0zLDE0ICszLDE0IEBACiA8aGVhZD4KICAgICA8dGl0bGU+VGVzdCBmb3IgQnVn
IDMzNTMzOiB3aW5kb3cub25sb2FkIG5ldmVyIGZpcmVzIGlmIHBhZ2UgY29udGFpbnMgYW4gJmx0
O2lmcmFtZT4gd2l0aCBhIGJhZCBzY2hlbWUgb3Igd2hvc2UgbG9hZCBpcyBjYW5jZWxsZWQgYnkg
cmV0dXJuaW5nIG51bGwgZnJvbSByZXNvdXJjZSBsb2FkIGRlbGVnYXRlJ3Mgd2lsbFNlbmRSZXF1
ZXN0PC90aXRsZT4KICAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRXaWxsU2VuZFJlcXVlc3RS
ZXR1cm5zTnVsbCh0cnVlKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
c2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwodHJ1ZSk7CiAgICAgICAgIH0KIAogICAgICAg
ICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICB2YXIgcmVzdWx0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOwotICAgICAgICAgICAgaWYgKCF3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIGlmICghd2luZG93LnRlc3RS
dW5uZXIpIHsKICAgICAgICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ID0gIlRoaXMgdGVzdCBj
YW4gb25seSBiZSBydW4gaW4gRHVtcFJlbmRlclRyZWUuIjsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9vbmxvYWQt
d2lsbFNlbmRSZXF1ZXN0LW51bGwtZm9yLXNjcmlwdC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvbG9hZGVyL29ubG9hZC13aWxsU2VuZFJlcXVlc3QtbnVsbC1mb3Itc2NyaXB0
Lmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL29ubG9h
ZC13aWxsU2VuZFJlcXVlc3QtbnVsbC1mb3Itc2NyaXB0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTQsMTQgKzQsMTQgQEAKICAgICA8dGl0bGU+VGVzdCBmb3IgQnVnIDMzNjg3OiB3aW5kb3cub25s
b2FkIG5ldmVyIGZpcmVzIGlmIHBhZ2UgY29udGFpbnMgYSAmbHQ7c2NyaXB0IHNyYz1mb28+CiAg
ICAgd2hvc2UgbG9hZCBpcyBjYW5jZWxsZWQgYnkgcmVzb3VyY2UgbG9hZCBkZWxlZ2F0ZSByZXR1
cm5pbmcgbnVsbCBmcm9tIHdpbGxTZW5kUmVxdWVzdDwvdGl0bGU+CiAgICAgPHNjcmlwdD4KLSAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwodHJ1ZSk7CisgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxs
KHRydWUpOwogICAgICAgICB9CiAKICAgICAgICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkg
ewogICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1
bHQiKTsKLSAgICAgICAgICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgICAgICAgICAgcmVz
dWx0LmlubmVyVGV4dCA9ICJUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIER1bXBSZW5kZXJU
cmVlLiI7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvb251bmxvYWQtZm9ybS1zdWJtaXQtY3Jhc2gtMi5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL29udW5sb2FkLWZvcm0tc3VibWl0
LWNyYXNoLTIuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2Fk
ZXIvb251bmxvYWQtZm9ybS1zdWJtaXQtY3Jhc2gtMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01
LDE1ICs1LDE1IEBACiAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAobG9jYXRpb24uaHJlZi5pbmRleE9mKCI/IikgPT0gLTEpIHsKLSAgICAgICAgICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGxvY2F0aW9uLmhyZWYg
PSAicmVzb3VyY2VzL29udW5sb2FkLWZvcm0tc3VibWl0LXN1Y2Nlc3MuaHRtbCI7CiAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXN1bHQiKS5pbm5lclRleHQgPSAiRkFJTCI7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvb251bmxv
YWQtZm9ybS1zdWJtaXQtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci9vbnVubG9hZC1mb3JtLXN1Ym1pdC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjI1NTEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9vbnVubG9hZC1mb3JtLXN1Ym1pdC1jcmFzaC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBAQAogPGh0bWw+CiAgICAgPGJvZHkgb25V
bmxvYWQ9ImRvY3VtZW50Lm15Rm9ybS5zdWJtaXQoKSI+CiAgICAgICAgIDxzY3JpcHQ+Ci0gICAg
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgibG9jYXRpb24uaHJlZj0ncmVz
b3VyY2VzL29udW5sb2FkLWZvcm0tc3VibWl0LXN1Y2Nlc3MuaHRtbCciLCAwKTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL29wYXF1ZS1iYXNlLXVybC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL29wYXF1ZS1iYXNlLXVybC5odG1sCShyZXZpc2lvbiAx
MjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9vcGFxdWUtYmFzZS11cmwuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxwPlRlc3QgaG93IG9wYXF1ZSBiYXNlIFVS
THMgd29yayBmb3IgZmV0Y2hpbmcgc3VicmVzb3VyY2VzLjwvcD4KIAogPHNjcmlwdD4KLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiA8L3NjcmlwdD4KIAogPG9sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcGFn
ZS1kaXNtaXNzYWwtbW9kYWwtZGlhbG9ncy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvbG9hZGVyL3BhZ2UtZGlzbWlzc2FsLW1vZGFsLWRpYWxvZ3MuaHRtbAkocmV2aXNpb24g
MTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcGFnZS1kaXNtaXNzYWwtbW9kYWwt
ZGlhbG9ncy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw5ICsyMSw5IEBAIGZ1bmN0aW9uIHJl
Z2lzdGVyRXZlbnRzKG5hbWUsIHRoaXNGcmFtZSwKIAogYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIs
IGZ1bmN0aW9uKCkgewogICAgIHJlZ2lzdGVyRXZlbnRzKCJtYWluRnJhbWUiLCB3aW5kb3csIGZy
YW1lc1swXSk7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOwogICAgIH0KICAgICBsb2NhdGlvbiA9ICJyZXNvdXJjZXMvcGFzcy1hbmQt
bm90aWZ5LWRvbmUuaHRtbCI7CiB9LCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xv
YWRlci9waW5nLWVycm9yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2Fk
ZXIvcGluZy1lcnJvci5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci9waW5nLWVycm9yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsMTYgKzIsMTYgQEAK
IDxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00NjU3OSI+YnVnIDQ2NTc5PC9hPjoKIFJlcHJvZHVjaWJsZSBjcmFzaCBpbiBhcHBjYWNo
ZSBjb2RlIHdoZW4gY2xvc2luZyBwZ2F0b3VyLmNvbTwvcD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5zZXRDYW5PcGVuV2luZG93cygpOwogfQog
CiBmdW5jdGlvbiBkb25lKCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSAKLSAgICAgICAgc2V0VGltZW91dCgnbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
JywgMCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSAKKyAgICAgICAgc2V0VGltZW91dCgn
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCknLCAwKTsKIH0KIAogd2luZG93Lm9wZW4oInJlc291cmNl
cy9waW5nLWVycm9yLXdpbmRvdy5odG1sIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9wbGFpbi10ZXh0LWRvY3VtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9sb2FkZXIvcGxhaW4tdGV4dC1kb2N1bWVudC5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9wbGFpbi10ZXh0LWRvY3VtZW50Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNyArMSw3IEBACiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CiAgICAg
fQogPC9zY3JpcHQ+CiA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3BsYWluLXRleHQtZG9jdW1lbnQu
dHh0Ij4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3BvbGljeS1kZWxlZ2F0ZS1hY3Rp
b24taGl0LXRlc3Qtem9vbWVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvcG9saWN5LWRlbGVnYXRlLWFjdGlvbi1oaXQtdGVzdC16b29tZWQuaHRtbAkocmV2aXNp
b24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcG9saWN5LWRlbGVnYXRlLWFj
dGlvbi1oaXQtdGVzdC16b29tZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBA
QAogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSArICdcbicpKTsKICAgICB9CiAKLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgZXZlbnRTZW5kZXIuem9vbVBhZ2VJ
bigpOwogICAgICAgICBldmVudFNlbmRlci56b29tUGFnZUluKCk7CkBAIC0yMiw3ICsyMiw3IEBA
CiAgICAgICAgIHZhciB4ID0gKGxpbmsub2Zmc2V0TGVmdCArIGxpbmsub2Zmc2V0V2lkdGggLyAy
KSAqIHpvb21GYWN0b3I7CiAgICAgICAgIHZhciB5ID0gKGxpbmsub2Zmc2V0VG9wICsgbGluay5v
ZmZzZXRIZWlnaHQgLyAyKSAqIHpvb21GYWN0b3I7CiAKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUodHJ1ZSwgZmFsc2UpOworICAgICAgICB0ZXN0
UnVubmVyLnNldEN1c3RvbVBvbGljeURlbGVnYXRlKHRydWUsIGZhbHNlKTsKIAogICAgICAgICBs
b2coIlRoZSBwb2xpY3kgZGVsZWdhdGUgbWVzc2FnZSBzaG91bGQgaW5kaWNhdGUgdGhhdCB0aGUg
b3JpZ2luYXRpbmcgbm9kZSBpcyB0aGUgdGV4dCBjaGlsZCBvZiBhbiBhbmNob3IgZWxlbWVudC4i
KTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVjdXJzaXZlLWJlZm9yZS11bmxv
YWQtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9yZWN1
cnNpdmUtYmVmb3JlLXVubG9hZC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9yZWN1cnNpdmUtYmVmb3JlLXVubG9hZC1jcmFzaC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiB9CiAKIHZhciBoYXZlQWRkZWRJRnJhbWUgPSBmYWxzZTsKQEAg
LTI2LDggKzI2LDggQEAgZnVuY3Rpb24gYWRkaWZyYW1lKCkgewogICAgIGZyYW1lLnNyYyA9ICJo
dHRwOi8vbG9jYWxob3N0OjEyMzQvIgogICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJh
bWUpOwogICAgIGhhdmVBZGRlZElGcmFtZSA9IHRydWU7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CiB9CiAKIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci9yZWRpcmVjdC13aXRoLW9wZW4tc3ViZnJhbWUtMi5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3JlZGlyZWN0LXdpdGgtb3Blbi1zdWJmcmFtZS0yLmh0
bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3JlZGlyZWN0
LXdpdGgtb3Blbi1zdWJmcmFtZS0yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIgKzEsMTIg
QEAKIDxodG1sPgogPHNjcmlwdD4KIGZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIH0KICAgICBk
b2N1bWVudC5vcGVuKCk7Ci0gICAgdmFyIG5ld0RvYyA9ICJTVUNDRVNTPHNjcmlwdD5pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7PC9zY3IiICsgImlwdD4iOworICAgIHZhciBuZXdEb2MgPSAiU1VDQ0VTUzxzY3JpcHQ+aWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTs8L3NjciIgKyAiaXB0
PiI7CiAgICAgc2V0VGltZW91dCgid2luZG93LmxvY2F0aW9uPSdkYXRhOnRleHQvaHRtbCwiICsg
bmV3RG9jICsgIiciLCA1MDApOwogfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci9yZWRpcmVjdC13aXRoLW9wZW4tc3ViZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9yZWRpcmVjdC13aXRoLW9wZW4tc3ViZnJhbWUuaHRtbAko
cmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVkaXJlY3Qtd2l0
aC1vcGVuLXN1YmZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsMTEgKzMsMTEgQEAKIDxp
ZnJhbWUgaWQ9Imlmcm0iIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgogPHNjcmlwdD4KICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaWZybSIpLmNvbnRlbnREb2N1bWVudC5vcGVuKCk7
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogICAgIH0KLSAgICB2YXIgbmV3RG9jID0gIlNVQ0NFU1M8c2NyaXB0PmlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTs8
L3NjciIgKyAiaXB0PiI7CisgICAgdmFyIG5ld0RvYyA9ICJTVUNDRVNTPHNjcmlwdD5pZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOzwvc2NyIiArICJpcHQ+IjsK
ICAgICBzZXRUaW1lb3V0KCJ3aW5kb3cubG9jYXRpb249J2RhdGE6dGV4dC9odG1sLCIgKyBuZXdE
b2MgKyAiJyIsIDUwMCk7CiA8L3NjcmlwdD4KIDxkaXY+RkFJTFVSRTogc2hvdWxkIHJlZGlyZWN0
LjwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVsb2FkLXBvbGljeS1kZWxl
Z2F0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3JlbG9hZC1w
b2xpY3ktZGVsZWdhdGUuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9sb2FkZXIvcmVsb2FkLXBvbGljeS1kZWxlZ2F0ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0z
LDkgKzMsOSBAQAogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogZnVuY3Rpb24gc3Rh
cnRUZXN0KCkKIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUodHJ1ZSwgdHJ1ZSk7
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVSZWxvYWQoKTsKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLnNldEN1c3RvbVBvbGljeURlbGVnYXRlKHRy
dWUsIHRydWUpOworICAgIHRlc3RSdW5uZXIucXVldWVSZWxvYWQoKTsKIH0KIDwvc2NyaXB0Pgog
PC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVsb2FkLXplcm8tYnl0ZS1w
bHVnaW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9yZWxvYWQt
emVyby1ieXRlLXBsdWdpbi5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2xvYWRlci9yZWxvYWQtemVyby1ieXRlLXBsdWdpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDE3ICsxLDE3IEBACiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0Q2FuT3BlbldpbmRvd3ModHJ1ZSk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2xv
c2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKHRydWUpOworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5zZXRDYW5PcGVuV2luZG93cyh0cnVlKTsKKyAg
ICB0ZXN0UnVubmVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSh0cnVlKTsK
IH0KIAogdmFyIHdpbiA9IHdpbmRvdy5vcGVuKCdkYXRhOmFwcGxpY2F0aW9uL3gtd2Via2l0LXRl
c3QtbmV0c2NhcGUsJyk7CiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgIHdpbi5sb2NhdGlv
bi5yZWxvYWQoKTsKICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9LCAxMDApOwogfSwgMTAwKTsKIDwv
c2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVwZWF0LXNhbWUtZG9jdW1l
bnQtbmF2aWdhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVy
L3JlcGVhdC1zYW1lLWRvY3VtZW50LW5hdmlnYXRpb24uaHRtbAkocmV2aXNpb24gMTIyNTUxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVwZWF0LXNhbWUtZG9jdW1lbnQtbmF2aWdhdGlv
bi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBAQAogPGh0bWw+CiA8aGVhZD4KIDxz
Y3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlv
biBjbGlja0xpbmsoKSB7CkBAIC0yMSw3ICsyMSw3IEBAIGZ1bmN0aW9uIHJ1bigpIHsKICAgICB2
YXIgbGluZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgIGxpbmUuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlNjcm9sbCBwb3NpdGlvbiBpcyAiICsgc2Ny
b2xsWSArICJweCIpKTsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5jaG9yJykuYXBw
ZW5kQ2hpbGQobGluZSk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyAg
ICAKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsgICAgCiB9CiAKIDwvc2NyaXB0PgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc2FuZGJveGVkLXBsdWdpbi1jcmFzaC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3NhbmRib3hlZC1wbHVnaW4tY3Jh
c2guaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc2Fu
ZGJveGVkLXBsdWdpbi1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBAQAog
PGhlYWQ+CiA8c2NyaXB0PgogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogPC9zY3JpcHQ+CiA8L2hlYWQ+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zY3JvbGwtcG9zaXRpb24tcmVzdG9yZWQtb24t
YmFjay1ub24tY2FjaGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2Fk
ZXIvc2Nyb2xsLXBvc2l0aW9uLXJlc3RvcmVkLW9uLWJhY2stbm9uLWNhY2hlZC5odG1sCShyZXZp
c2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zY3JvbGwtcG9zaXRpb24t
cmVzdG9yZWQtb24tYmFjay1ub24tY2FjaGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOSAr
NSw5IEBACiBmdW5jdGlvbiBuYXZpZ2F0ZSgpCiB7CiAgICAgaWYgKGxvY2F0aW9uLmhhc2ggPT0g
IiIpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgIH0KIAogICAgICAgICBz
Y3JvbGxUbygwLDEwMCk7CkBAIC0yMSw4ICsyMSw4IEBAIGZ1bmN0aW9uIG5hdmlnYXRlKCkKICAg
ICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKICAg
ICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uID09IDEwMCkKICAgICAgICAgICAgIHJlc3VsdC5pbm5l
ckhUTUwgPSAiU3VjY2VzcyEgVGhlIHNjcm9sbCBwb3NpdGlvbiB3YXMgcmVzdG9yZWQgYWZ0ZXIg
bmF2aWdhdGlvbi4iCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwogICAgIH0sIDApOwogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zY3JvbGwt
cG9zaXRpb24tcmVzdG9yZWQtb24tYmFjay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvbG9hZGVyL3Njcm9sbC1wb3NpdGlvbi1yZXN0b3JlZC1vbi1iYWNrLmh0bWwJKHJldmlz
aW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3Njcm9sbC1wb3NpdGlvbi1y
ZXN0b3JlZC1vbi1iYWNrLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsMTAgKzUsMTAgQEAKIGZ1
bmN0aW9uIG5hdmlnYXRlKCkKIHsKICAgICBpZiAobG9jYXRpb24uaGFzaCA9PSAiIikgewotICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNl
S2V5IiwgMSk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVy
ZW5jZSgiV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXkiLCAxKTsKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICB9CiAKICAgICAgICAgc2Nyb2xs
VG8oMCwxMDApOwpAQCAtMjIsOCArMjIsOCBAQCBmdW5jdGlvbiBuYXZpZ2F0ZSgpCiAgICAgICAg
IHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7CiAgICAgICAg
IGlmIChzY3JvbGxQb3NpdGlvbiA9PSAxMDApCiAgICAgICAgICAgICByZXN1bHQuaW5uZXJIVE1M
ID0gIlN1Y2Nlc3MhIFRoZSBzY3JvbGwgcG9zaXRpb24gd2FzIHJlc3RvcmVkIGFmdGVyIG5hdmln
YXRpb24uIgotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAg
ICB9LCAwKTsKIH0KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc2ltdWx0YW5lb3Vz
LXJlbG9hZHMtYXNzZXJ0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2Fk
ZXIvc2ltdWx0YW5lb3VzLXJlbG9hZHMtYXNzZXJ0Lmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3NpbXVsdGFuZW91cy1yZWxvYWRzLWFzc2VydC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0yLDkgKzIsOSBAQAogPGhlYWQ+CiAgICAgPHRpdGxlPlRlc3Qg
Zm9yIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDc5PC90aXRsZT4K
ICAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgIGFs
ZXJ0KCJJZiB5b3UgZG8gbm90IGhpdCBhbiBhc3NlcnRpb24gZmFpbHVyZSB3aGVuIHJ1bm5pbmcg
dGhpcyB0ZXN0IHdpdGggYSBkZWJ1ZyBidWlsZCBhbmQgeW91IGdldCBhIFNVQ0NFU1MgbWVzc2Fn
ZSwgdGhlbiB5b3UgcGFzcyB0aGUgdGVzdC4iKTsKICAgICAgICAgfQogCkBAIC0xNSw5ICsxNSw5
IEBACiAgICAgICAgICAgICAgICAgcmVsb2FkZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGZy
YW1lc1swXS5sb2NhdGlvbi5yZWxvYWQoKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAgICAgICAgICAgICAgICBhbGVydCgi
U1VDQ0VTUyIpOwotICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9sb2FkZXIvc3RhcnQtbG9hZC1pbi11bmxvYWQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGFydC1sb2FkLWluLXVubG9hZC5odG1sCShyZXZp
c2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGFydC1sb2FkLWluLXVu
bG9hZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBAQAogPGltZyBpZD0iaSIgc3Jj
PSJub3NyYy5qcGciPgogVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgc3RhcnRpbmcgYSBzdWJyZXNv
dXJjZSBsb2FkIGZyb20gYW4gdW5sb2FkIGhhbmRsZXIgZG9lcyBub3QgY2F1c2UgY3Jhc2hlcyBv
ciBhc3NlcnRpb24gZmFpbHVyZXMuCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogPC9i
b2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RvcC1wcm92aXNpb25hbC1sb2Fk
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0b3AtcHJvdmlz
aW9uYWwtbG9hZHMuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvc3RvcC1wcm92aXNpb25hbC1sb2Fkcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDkg
KzIsOSBAQAogPGhlYWQ+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLnNldFN0b3BQcm92aXNpb25hbEZyYW1lTG9hZHMoKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RS
dW5uZXIuc2V0U3RvcFByb3Zpc2lvbmFsRnJhbWVMb2FkcygpOwogfQogPC9zY3JpcHQ+CiAKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N1YmZyYW1lLW5hdmlnYXRlLWR1cmluZy1tYWlu
LWZyYW1lLWxvYWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
bG9hZGVyL3N1YmZyYW1lLW5hdmlnYXRlLWR1cmluZy1tYWluLWZyYW1lLWxvYWQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdWJmcmFt
ZS1uYXZpZ2F0ZS1kdXJpbmctbWFpbi1mcmFtZS1sb2FkLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtNiw1ICs2LDUgQEAgVGhlIGlmcmFtZSBuYXZpZ2F0aW9uIHNob3VsZCAqbm90KiBy
ZXN1bAogPT09PT09PT09PT09PT0gQmFjayBGb3J3YXJkIExpc3QgPT09PT09PT09PT09PT0KICAg
ICAgICAgKGZpbGUgdGVzdCk6ZmFzdC9sb2FkZXIvc3ViZnJhbWUtbmF2aWdhdGUtZHVyaW5nLW1h
aW4tZnJhbWUtbG9hZC5odG1sICAqKm5hdiB0YXJnZXQqKgogY3Vyci0+ICAoZmlsZSB0ZXN0KTpm
YXN0L2xvYWRlci9yZXNvdXJjZXMvc3ViZnJhbWUtbmF2aWdhdGUtZHVyaW5nLW1haW4tZnJhbWUt
bG9hZDIuaHRtbCAgKipuYXYgdGFyZ2V0KioKLSAgICAgICAgICAgIGRhdGE6dGV4dC9odG1sLDxi
b2R5IG9ubG9hZD0ibGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyI+PC9ib2R5PiAo
aW4gZnJhbWUgInN1YmZyYW1lIikKKyAgICAgICAgICAgIGRhdGE6dGV4dC9odG1sLDxib2R5IG9u
bG9hZD0idGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ij48L2JvZHk+IChpbiBmcmFtZSAic3ViZnJh
bWUiKQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N1YmZyYW1lLW5hdmlnYXRlLWR1cmluZy1tYWlu
LWZyYW1lLWxvYWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9z
dWJmcmFtZS1uYXZpZ2F0ZS1kdXJpbmctbWFpbi1mcmFtZS1sb2FkLmh0bWwJKHJldmlzaW9uIDEy
MjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N1YmZyYW1lLW5hdmlnYXRlLWR1cmlu
Zy1tYWluLWZyYW1lLWxvYWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCwxMCArNCwxMCBAQAog
CiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEJhY2tGb3J3YXJkTGlzdCgpOwotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0
UnVubmVyLmR1bXBCYWNrRm9yd2FyZExpc3QoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CiAgICAgfQogCiAgICAgLy8gTG9jYXRpb24gY2hhbmdlcyBuZWVkIHRvIGhhcHBl
biBvdXRzaWRlIHRoZSBvbmxvYWQgaGFuZGxlciB0byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMu
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdWJmcmFtZS1yZW1vdmVzLWl0c2VsZi5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N1YmZyYW1lLXJlbW92
ZXMtaXRzZWxmLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9h
ZGVyL3N1YmZyYW1lLXJlbW92ZXMtaXRzZWxmLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCAr
MSw4IEBACiBUaGlzIHRlc3RzIGEgc3ViZnJhbWUgdGhhdCByZW1vdmVzIGl0c2VsZiB0byBtYWtl
IHN1cmUgYSBkZWxlZ2F0ZSBtZXNzYWdlIHRvIGluZGljYXRlIHRoZSBpbnRlcnJ1cHRlZCBsb2Fk
IGZpcmVzLgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wRnJhbWVM
b2FkQ2FsbGJhY2tzKCk7CiB9CiA8L3NjcmlwdD4KIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc3Vi
ZnJhbWUtdGhhdC1yZW1vdmVzLWl0c2VsZi5odG1sIj48L2lmcmFtZT4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL3N1YmZyYW1lLXNlbGYtY2xvc2UuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdWJmcmFtZS1zZWxmLWNsb3NlLmh0bWwJKHJldmlzaW9u
IDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N1YmZyYW1lLXNlbGYtY2xvc2Uu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDkgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2Ny
aXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hp
bGRGcmFtZXNBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7
CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N1
Ym1pdC1mb3JtLXdoaWxlLXBhcnNpbmctMS54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2xvYWRlci9zdWJtaXQtZm9ybS13aGlsZS1wYXJzaW5nLTEueGh0bWwJKHJldmlzaW9u
IDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N1Ym1pdC1mb3JtLXdoaWxlLXBh
cnNpbmctMS54aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw5ICs1LDkgQEAKIDxmb3JtIG5hbWU9
ImZvcm0iIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSJyZXNvdXJjZXMvc3VibWl0LWZvcm0td2hpbGUt
cGFyc2luZy1zdWNjZXNzLmh0bWwiLz4NCiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
DQogPCFbQ0RBVEFbDQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgew0KLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7DQotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsNCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsNCisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7DQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOw0K
IH0NCiBkb2N1bWVudC5mb3Jtcy5mb3JtLnN1Ym1pdCgpOw0KIF1dPg0KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL3N1Ym1pdC1mb3JtLXdoaWxlLXBhcnNpbmctMi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N1Ym1pdC1mb3JtLXdoaWxlLXBhcnNpbmct
Mi5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdWJt
aXQtZm9ybS13aGlsZS1wYXJzaW5nLTIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw5ICs1LDkg
QEAgdmFyIHRlc3RJc1N0YXJ0ZWQgPSBmYWxzZTsKIAogZnVuY3Rpb24gc3RhcnRUZXN0KCkKIHsK
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CiAgICAgfQogCiAgICAgdGVzdElzU3RhcnRlZCA9IHRydWU7CkBAIC0yOSw4ICsyOSw4IEBA
IGZ1bmN0aW9uIGZyYW1lTG9hZGVkKCkKIAogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJt
ZXNzYWdlIikuZmlyc3RDaGlsZC5kYXRhID0gIlBBU1NFRDogSWYgd2Ugc3VjY2Vzc2Z1bGx5IGdv
dCBoZXJlIHdpdGhvdXQgYW4gYXNzZXJ0aW9uIG9yIGNyYXNoLCBhbGwgaXMgd2VsbC4iOwogCi0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9sb2FkZXIvc3VicmVzb3VyY2UtbG9hZC1mYWlsZWQtY3Jhc2guaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdWJyZXNvdXJjZS1sb2FkLWZhaWxl
ZC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9zdWJyZXNvdXJjZS1sb2FkLWZhaWxlZC1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDkgKzEsOSBAQAogPGh0bWw+CiA8Ym9keSBpZD0nY29uc29sZSc+CiA8c2NyaXB0PgotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogdmFyIHhociA9IG5ldyBYTUxIdHRw
UmVxdWVzdDsKQEAgLTEzLDcgKzEzLDcgQEAgZnVuY3Rpb24gc2Vjb25kUmVxdWVzdCgpCiAgICAg
ewogICAgICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT0geGhyLkRPTkUpIHsKICAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoIlBBU1MiKSk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAg
ICAgICAgfQogICAgIH0KICAgICB4aHIub3BlbigiR0VUIiwgIiIsIHRydWUpOwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3VicmVzb3VyY2Utd2lsbFNlbmRSZXF1ZXN0LW51bGwuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdWJyZXNvdXJjZS13aWxs
U2VuZFJlcXVlc3QtbnVsbC5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2xvYWRlci9zdWJyZXNvdXJjZS13aWxsU2VuZFJlcXVlc3QtbnVsbC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0zLDkgKzMsOSBAQAogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ5NjkzPGJyPgogRW5zdXJlIGxvYWRzIHRoYXQgZ28gdGhyb3VnaCBvdXIgc2NoZWR1
bGVyIGFuZCBhcmUgY2FuY2VsbGVkIGJ5IHdpbGxTZW5kUmVxdWVzdCgpIGRvbid0IGNhdXNlIHVz
IHRvIGNyYXNoLgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwodHJ1ZSk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLnNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxs
KHRydWUpOwogICAgIH0KICAgICB2YXIgaW1nID0gbmV3IEltYWdlKDEsIDEpOwogICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0uYXBwZW5kQ2hpbGQoaW1nKTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3VubG9hZC1mb3JtLWFib3V0LWJsYW5rLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvdW5sb2FkLWZvcm0tYWJvdXQt
YmxhbmsuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
dW5sb2FkLWZvcm0tYWJvdXQtYmxhbmsuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw5ICs1LDkg
QEAgYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIiwgZnVuY3Rpb24oKSB7CiA8L3NjcmlwdD4KIDxm
b3JtIGlkPSJmbSIgYWN0aW9uPSJhYm91dDpibGFuayIgbWV0aG9kPSJQT1NUIj48L2Zvcm0+CiA8
c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiB3aW5kb3cubG9jYXRpb24g
PSAicmVzb3VyY2VzL3Bhc3MtYW5kLW5vdGlmeS1kb25lLmh0bWwiOwogPC9zY3JpcHQ+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci91bmxvYWQtZm9ybS1wb3N0LWFib3V0LWJsYW5rLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvdW5sb2FkLWZvcm0tcG9z
dC1hYm91dC1ibGFuay5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci91bmxvYWQtZm9ybS1wb3N0LWFib3V0LWJsYW5rLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTUsOSArNSw5IEBAIGFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsIGZ1bmN0aW9uKCkgewog
PC9zY3JpcHQ+CiA8Zm9ybSBpZD0iZm0iIGFjdGlvbj0iYWJvdXQ6YmxhbmsiIG1ldGhvZD0iUE9T
VCI+PC9mb3JtPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
LSAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogd2lu
ZG93LmxvY2F0aW9uID0gInJlc291cmNlcy9wYXNzLWFuZC1ub3RpZnktZG9uZS5odG1sIjsKIDwv
c2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvdW5sb2FkLWZvcm0tcG9zdC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3VubG9hZC1mb3JtLXBv
c3QuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvdW5s
b2FkLWZvcm0tcG9zdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDkgKzUsOSBAQCBhZGRFdmVu
dExpc3RlbmVyKCJ1bmxvYWQiLCBmdW5jdGlvbigpIHsKIDwvc2NyaXB0PgogPGZvcm0gaWQ9ImZt
IiBhY3Rpb249InJlc291cmNlcy9mYWlsLWFuZC1ub3RpZnktZG9uZS5odG1sIiBtZXRob2Q9IlBP
U1QiPjwvZm9ybT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
Ci0gIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIHdp
bmRvdy5sb2NhdGlvbiA9ICJyZXNvdXJjZXMvcGFzcy1hbmQtbm90aWZ5LWRvbmUuaHRtbCI7CiA8
L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3VubG9hZC1mb3JtLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvdW5sb2FkLWZvcm0uaHRtbAko
cmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvdW5sb2FkLWZvcm0u
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw5ICs1LDkgQEAgYWRkRXZlbnRMaXN0ZW5lcigidW5s
b2FkIiwgZnVuY3Rpb24oKSB7CiA8L3NjcmlwdD4KIDxmb3JtIGlkPSJmbSIgYWN0aW9uPSJyZXNv
dXJjZXMvZmFpbC1hbmQtbm90aWZ5LWRvbmUuaHRtbCIgbWV0aG9kPSJHRVQiPjwvZm9ybT4KIDxz
Y3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIHdpbmRvdy5sb2NhdGlvbiA9
ICJyZXNvdXJjZXMvcGFzcy1hbmQtbm90aWZ5LWRvbmUuaHRtbCI7CiA8L3NjcmlwdD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3VubG9hZC1oeXBlcmxpbmstdGFyZ2V0ZWQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci91bmxvYWQtaHlwZXJsaW5rLXRh
cmdldGVkLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVy
L3VubG9hZC1oeXBlcmxpbmstdGFyZ2V0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsx
LDcgQEAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIDwvc2NyaXB0
PgogPGlmcmFtZSBzcmM9InJlc291cmNlcy91bmxvYWQtaHlwZXJsaW5rLXRhcmdldGVkLXN1YmZy
YW1lLmh0bWwiPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvdW5sb2FkLWh5cGVybGlu
ay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3VubG9hZC1oeXBl
cmxpbmsuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
dW5sb2FkLWh5cGVybGluay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw5ICsxMCw5IEBAIGFk
ZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsIGZ1bmN0aW9uKCkgewogPC9zY3JpcHQ+CiA8YSBpZD0i
bGsiIGhyZWY9InJlc291cmNlcy9mYWlsLWFuZC1ub3RpZnktZG9uZS5odG1sIj5MaW5rIHRvIGZh
aWx1cmUuPC9hPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
LSAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogd2lu
ZG93LmxvY2F0aW9uID0gInJlc291cmNlcy9wYXNzLWFuZC1ub3RpZnktZG9uZS5odG1sIjsKIDwv
c2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvdW5sb2FkLWphdmFzY3JpcHQt
dXJsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvdW5sb2FkLWph
dmFzY3JpcHQtdXJsLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
bG9hZGVyL3VubG9hZC1qYXZhc2NyaXB0LXVybC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDkg
KzQsOSBAQCBhZGRFdmVudExpc3RlbmVyKCJ1bmxvYWQiLCBmdW5jdGlvbigpIHsKIH0sIGZhbHNl
KTsKIDwvc2NyaXB0PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQog
d2luZG93LmxvY2F0aW9uID0gInJlc291cmNlcy9wYXNzLWFuZC1ub3RpZnktZG9uZS5odG1sIjsK
IDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvdW5sb2FkLXJlbG9hZC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3VubG9hZC1yZWxvYWQu
aHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvdW5sb2Fk
LXJlbG9hZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDkgKzQsOSBAQCBhZGRFdmVudExpc3Rl
bmVyKCJ1bmxvYWQiLCBmdW5jdGlvbigpIHsKIH0sIGZhbHNlKTsKIDwvc2NyaXB0PgogPHNjcmlw
dD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOwotICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogd2luZG93LmxvY2F0aW9uID0gInJl
c291cmNlcy9wYXNzLWFuZC1ub3RpZnktZG9uZS5odG1sIjsKIDwvc2NyaXB0PgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvdW5sb2FkLXdpbmRvdy1sb2NhdGlvbi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3VubG9hZC13aW5kb3ctbG9jYXRpb24uaHRt
bAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvdW5sb2FkLXdp
bmRvdy1sb2NhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDkgKzQsOSBAQCBhZGRFdmVu
dExpc3RlbmVyKCJ1bmxvYWQiLCBmdW5jdGlvbigpIHsKIH0sIGZhbHNlKTsKIDwvc2NyaXB0Pgog
PHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogd2luZG93LmxvY2F0aW9u
ID0gInJlc291cmNlcy9wYXNzLWFuZC1ub3RpZnktZG9uZS5odG1sIjsKIDwvc2NyaXB0PgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvdW5zY2hlZHVsZS1yZWxheW91dC1hZnRlci11bmxv
YWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci91bnNjaGVkdWxl
LXJlbGF5b3V0LWFmdGVyLXVubG9hZC5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci91bnNjaGVkdWxlLXJlbGF5b3V0LWFmdGVyLXVubG9hZC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC00LDEwICs0LDEwIEBACiA8L2JvZHk+CiA8c2NyaXB0PgogCi1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFVzZXNQ
YWdlQ2FjaGVQcmVmZXJlbmNlS2V5IiwgMSk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0VXNlc1BhZ2VDYWNo
ZVByZWZlcmVuY2VLZXkiLCAxKTsKIH0KIAogd2luZG93Lm9ucGFnZXNob3cgPSBmdW5jdGlvbihl
dnQpIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3VybC1kYXRhLXJlcGxhY2UtYmFj
a3NsYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvdXJsLWRh
dGEtcmVwbGFjZS1iYWNrc2xhc2guaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9sb2FkZXIvdXJsLWRhdGEtcmVwbGFjZS1iYWNrc2xhc2guaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMyw4ICszLDggQEAgdmFyIGQ1ID0gImZhaWwiOwogPC9zY3JpcHQ+CiA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJkYXRhOnRleHQvamF2YXNjcmlwdCxkNSUyMCUz
RCUyMCdmaXZlXHUwMDI3cyclM0IiPjwvc2NyaXB0PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiBpZiAo
ZDUgPT0gImZpdmUncyIpIHsKICAgZG9jdW1lbnQud3JpdGUoIlBBU1MiKTsKIH0gZWxzZSB7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci91cmwtcGFyc2UtMS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3VybC1wYXJzZS0xLmh0bWwJKHJldmlzaW9uIDEy
MjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3VybC1wYXJzZS0xLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDggKzI3LDggQEAKICAgICAgICAgPHRib2R5IGlkID0gInJlc3VsdHMi
PjwvdGJvZHk+CiAgICAgPC90YWJsZT4KICAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICBmdW5jdGlvbiB0ZXN0KHVybCkK
ICAgICAgICAgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvdXJsLXN0cmlwLWNyLWxm
LXRhYi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3VybC1zdHJp
cC1jci1sZi10YWIuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvdXJsLXN0cmlwLWNyLWxmLXRhYi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDkgKzMs
OSBAQCBUZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yCiBYTUxIdHRwUmVx
dWVzdCBzaG91bGQgc3RyaXAgQ1IvTEYgY2hhcmFjdGVycyBmcm9tIHRoZSBVUkwgKG5vdCBqdXN0
IFhNTEh0dHBSZXF1ZXN0LCByZWFsbHksIGFuZCBUQUIgaXMgYWxzbyBzdHJpcHBlZCkuCiAKIDxz
Y3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBpZiAoZG9j
dW1lbnQuVVJMLmluZGV4T2YoJz8nKSA9PSAtMSkgewpAQCAtMTksOCArMTksOCBAQCBpZiAoZG9j
dW1lbnQuVVJMLmluZGV4T2YoJz8nKSA9PSAtMSkgewogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQud3JpdGUoIjxwPkZhaWx1cmU8L3A+Iik7CiAgICAgICAgIAotICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogPC9zY3Jp
cHQ+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci91c2VyLXN0eWxlLXNo
ZWV0LXJlc291cmNlLWxvYWQtY2FsbGJhY2tzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9sb2FkZXIvdXNlci1zdHlsZS1zaGVldC1yZXNvdXJjZS1sb2FkLWNhbGxiYWNrcy5o
dG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci91c2VyLXN0
eWxlLXNoZWV0LXJlc291cmNlLWxvYWQtY2FsbGJhY2tzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTUgKzEsMTUgQEAKIDxodG1sPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpOwotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oImZpbGU6Ly8vdG1w
L0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3Jlc291cmNlcy91c2VyLXN0eWxlLXNoZWV0LmNzcyIp
OwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZCh0cnVl
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgIHRlc3RSdW5uZXIuZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpOworICAgIHRlc3RS
dW5uZXIuc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbigiZmlsZTovLy90bXAvTGF5b3V0VGVzdHMv
ZmFzdC9sb2FkZXIvcmVzb3VyY2VzL3VzZXItc3R5bGUtc2hlZXQuY3NzIik7CisgICAgdGVzdFJ1
bm5lci5zZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQodHJ1ZSk7CiB9IGVsc2UgewogICAgIGRvY3Vt
ZW50LndyaXRlICgnVGhpcyB0ZXN0IG11c3QgYmUgcnVuIHRocm91Z2ggRHVtcFJlbmRlclRyZWUu
JykKIH0KIDwvc2NyaXB0PgotPGJvZHkgb25sb2FkID0gImlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIGxheW91dFRlc3RDb250cm9sbGVyLnNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZChm
YWxzZSk7Ij4KKzxib2R5IG9ubG9hZCA9ICJpZiAod2luZG93LnRlc3RSdW5uZXIpIHRlc3RSdW5u
ZXIuc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKGZhbHNlKTsiPgogICAgIFRoaXMgdGVzdHMgdGhh
dCBubyBkZWxlZ2F0ZSBtZXRob2RzIGFyZSBzZW50IGZvciB0aGUgdXNlciBzdHlsZSBzaGVldC4g
Tm8gc3R5bGVzaGVldCBsb2FkIG1lc3NhZ2VzIHNob3VsZCBiZSBkdW1wZWQuCiA8L2Rpdj4KIDwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci91c2VyLXN0eWxlc2hlZXQtZmFzdC1wYXRoLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvdXNlci1zdHlsZXNoZWV0LWZhc3QtcGF0aC5odG1sCShyZXZp
c2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci91c2VyLXN0eWxlc2hlZXQt
ZmFzdC1wYXRoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE0LDE5ICsxNCwxOSBAQAogICAgICAg
ICB7cmVzdWx0OmZhbHNlLCBzaXplOiIxNjBweCIsIHVybDoiJTUwJTMwJTEwJTAwJTIwJTQwIn0K
ICAgICBdOwogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLnNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZCh0cnVlKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAg
IHRlc3RSdW5uZXIuc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKHRydWUpOwogCiAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdGVzdE9iamVjdHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAg
IHZhciBvYmogPSB0ZXN0T2JqZWN0c1tpXTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24ob2JqLnVybCk7CisgICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24ob2JqLnVybCk7CiAKICAgICAgICAgICAg
IGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwogICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGdldENv
bXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZm9udFNpemUgPT0gb2JqLnNpemU7CiAgICAgICAg
ICAgICBkb2N1bWVudC53cml0ZSgocmVzdWx0ID09IG9iai5yZXN1bHQgPyAiUEFTUyIgOiAiRkFJ
TCIpICsgIiAiICsgb2JqLnNpemUgKyAiPGJyPiIpOwogCi0gICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKCIiKTsKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbigiIik7CiAgICAgICAgIH0KICAgICB9
IGVsc2UKICAgICAgICAgZG9jdW1lbnQud3JpdGUoIlRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4g
aW4gRHVtcFJlbmRlclRyZWUuIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci93aWxs
U2VuZFJlcXVlc3QtbnVsbC1mb3ItcHJlbG9hZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL3dpbGxTZW5kUmVxdWVzdC1udWxsLWZvci1wcmVsb2FkLmh0bWwJKHJl
dmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3dpbGxTZW5kUmVxdWVz
dC1udWxsLWZvci1wcmVsb2FkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOSArMyw5IEBACiA8
aGVhZD4NCiAgICAgPHRpdGxlPkJ1ZyA1MzEyMzogQ3Jhc2hlcyBsb2FkaW5nIHBhZ2VzIHdoZW4g
Y2FuY2VsbGluZyBzdWJyZXNvdXJjZSBsb2FkcyB0aHJvdWdoIFdlYktpdDwvdGl0bGU+DQogICAg
IDxzY3JpcHQ+DQotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7DQot
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOw0KLSAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsKHRy
dWUpOw0KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7DQorICAgICAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7DQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXaWxsU2Vu
ZFJlcXVlc3RSZXR1cm5zTnVsbCh0cnVlKTsNCiAgICAgICAgIH0NCiAgICAgPC9zY3JpcHQ+DQog
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InJlc291cmNlcy9lbXB0eS1z
Y3JpcHQuanMiPjwvc2NyaXB0Pg0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3dpbmRv
dy1jbGVhcmluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3dp
bmRvdy1jbGVhcmluZy5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci93aW5kb3ctY2xlYXJpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw5ICsyLDkg
QEAKIDxoZWFkPgogPHNjcmlwdD4KIGZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KIAogICAg
IC8vIHNldCB1cCB0ZXN0IHZhcmlhYmxlcyAtLSB0aGV5IHNob3VsZCBiZSBjbGVhcmVkCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci93aW5kb3ctcHJvcGVydGllcy1yZXN0b3JlZC1mcm9t
LXBhZ2UtY2FjaGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci93
aW5kb3ctcHJvcGVydGllcy1yZXN0b3JlZC1mcm9tLXBhZ2UtY2FjaGUuaHRtbAkocmV2aXNpb24g
MTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvd2luZG93LXByb3BlcnRpZXMtcmVz
dG9yZWQtZnJvbS1wYWdlLWNhY2hlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBA
CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotCWxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLQlsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7Ci0JbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJL
aXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSIsIDEpOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisJdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CisJdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFVzZXNQYWdlQ2FjaGVQ
cmVmZXJlbmNlS2V5IiwgMSk7CiB9CiAKIHZhciBjYWNoZWRBcHBsaWNhdGlvbkNhY2hlID0gd2lu
ZG93LmFwcGxpY2F0aW9uQ2FjaGU7CkBAIC05OCw4ICs5OCw4IEBAIHdpbmRvdy5vbnBhZ2VzaG93
ID0gZnVuY3Rpb24oZXZ0KSB7CiAJaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlcnJvckRp
diIpLmlubmVyVGV4dCA9PSAiIikKIAkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVycm9yRGl2
IikuaW5uZXJUZXh0ID0gIkFsbCB0ZXN0cyBwYXNzZWQuIjsKIAotCWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0JCWxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKwlp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiA8
L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3Jlc291cmNlcy9jbGljay1m
cmFnbWVudC1saW5rLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
cmVzb3VyY2VzL2NsaWNrLWZyYWdtZW50LWxpbmsuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2NsaWNrLWZyYWdtZW50LWxpbmsuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxv
YWRlZCgpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImZyYWdtZW50bGluayIpOwogICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhlbGVtZW50Lm9mZnNldExlZnQgKyAoZWxlbWVudC5vZmZzZXRXaWR0aCAvIDIpLCBlbGVt
ZW50Lm9mZnNldFRvcCArIChlbGVtZW50Lm9mZnNldEhlaWdodCAvIDIpKTsKICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VEb3duKCk7CkBAIC0xMSw4ICsxMSw4IEBAIGZ1bmN0aW9uIGxvYWRlZCgp
IHsKIAogZnVuY3Rpb24gaGFzaENoYW5nZWQoKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogfQogCiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3Jlc291
cmNlcy9kb2N1bWVudC13aXRoLWZyYWdtZW50LXVybC10ZXN0Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2RvY3VtZW50LXdpdGgtZnJhZ21lbnQt
dXJsLXRlc3QuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2Fk
ZXIvcmVzb3VyY2VzL2RvY3VtZW50LXdpdGgtZnJhZ21lbnQtdXJsLXRlc3QuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsOCArMjgsOCBAQCBmdW5jdGlvbiBsb2FkZWQoKQogICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVVwKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYWxlcnQoIlNlY29uZCBs
b2FkIGNvbXBsZXRlLiAgVVJMJ3MgY3VycmVudCBoYXNoIGlzICIgKyBkb2N1bWVudFVSTEhhc2go
KSk7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0K
IH0KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2ZhaWwtYW5kLW5v
dGlmeS1kb25lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVz
b3VyY2VzL2ZhaWwtYW5kLW5vdGlmeS1kb25lLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL3Jlc291cmNlcy9mYWlsLWFuZC1ub3RpZnktZG9uZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogPGJvZHk+CiBGQUlMCiA8c2NyaXB0Pgot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpCitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpCiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3Jlc291cmNl
cy9mb3JtLXN0YXRlLXJlc3RvcmUtd2l0aC1sb2NrZWQtYmFjay1mb3J3YXJkLWxpc3QtMy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3Jlc291cmNlcy9mb3JtLXN0
YXRlLXJlc3RvcmUtd2l0aC1sb2NrZWQtYmFjay1mb3J3YXJkLWxpc3QtMy5odG1sCShyZXZpc2lv
biAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9yZXNvdXJjZXMvZm9ybS1zdGF0
ZS1yZXN0b3JlLXdpdGgtbG9ja2VkLWJhY2stZm9yd2FyZC1saXN0LTMuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMyw3ICszLDcgQEAKIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
bG9jYXRpb24uc2VhcmNoIiwgJz9UZXN0TmFtZTE9T2sxJlRlc3ROYW1lMj1PazInKTsKLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwogPC9zY3JpcHQ+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9yZXNvdXJjZXMvZm9ybS1zdWJtaXNzaW9uLWJlZm9yZS1sb2FkLXBhZ2UzLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2Zvcm0tc3VibWlzc2lv
bi1iZWZvcmUtbG9hZC1wYWdlMy5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2xvYWRlci9yZXNvdXJjZXMvZm9ybS1zdWJtaXNzaW9uLWJlZm9yZS1sb2FkLXBhZ2Uz
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiBEb25lLgogPHNjcmlwdD4KLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9yZXNv
dXJjZXMvaW52YWxpZC1jaGFyc2V0LW9uLXNjcmlwdC1jcmFzaGVzLWxvYWRlci5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9yZXNvdXJjZXMvaW52YWxpZC1jaGFyc2V0
LW9uLXNjcmlwdC1jcmFzaGVzLWxvYWRlci5qcwkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2ludmFsaWQtY2hhcnNldC1vbi1zY3JpcHQtY3Jh
c2hlcy1sb2FkZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzIEBACi1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKIGRvY3VtZW50LndyaXRlbG4oIlN1Y2Nlc3MhIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci9yZXNvdXJjZXMvbG9jYXRpb24tY2hhbmdlLWFib3J0cy1wYXJzaW5nLWZhaWwuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9yZXNvdXJjZXMvbG9jYXRp
b24tY2hhbmdlLWFib3J0cy1wYXJzaW5nLWZhaWwuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2xvY2F0aW9uLWNoYW5nZS1hYm9ydHMt
cGFyc2luZy1mYWlsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiA8c2NyaXB0
PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7CiA8L3NjcmlwdD4KIEZBSUwKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
bG9hZGVyL3Jlc291cmNlcy9sb2NhdGlvbi1jaGFuZ2UtYWJvcnRzLXBhcnNpbmctcGFzcy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3Jlc291cmNlcy9sb2NhdGlv
bi1jaGFuZ2UtYWJvcnRzLXBhcnNpbmctcGFzcy5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9yZXNvdXJjZXMvbG9jYXRpb24tY2hhbmdlLWFib3J0cy1w
YXJzaW5nLXBhc3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIDxzY3JpcHQ+
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKIDwvc2NyaXB0PgogUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvcmVzb3VyY2VzL25vdGlmeS1kb25lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9sb2FkZXIvcmVzb3VyY2VzL25vdGlmeS1kb25lLmh0bWwJKHJldmlzaW9uIDEyMjU1
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3Jlc291cmNlcy9ub3RpZnktZG9uZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwog
PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9yZXNvdXJjZXMvb251bmxv
YWQtZm9ybS1zdWJtaXQtZmFpbHVyZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL3Jlc291cmNlcy9vbnVubG9hZC1mb3JtLXN1Ym1pdC1mYWlsdXJlLmh0bWwJKHJl
dmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3Jlc291cmNlcy9vbnVu
bG9hZC1mb3JtLXN1Ym1pdC1mYWlsdXJlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw4
IEBACiAgICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgICBmdW5jdGlvbiBjb250aW51ZVRlc3RB
ZnRlck5hdmlnYXRpb24oKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAg
ICAgICAgICAgfQogICAgICAgICA8L3NjcmlwdD4KICAgICA8L2hlYWQ+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9yZXNvdXJjZXMvb251bmxvYWQtZm9ybS1zdWJtaXQtc3VjY2Vzcy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3Jlc291cmNlcy9vbnVu
bG9hZC1mb3JtLXN1Ym1pdC1zdWNjZXNzLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvbG9hZGVyL3Jlc291cmNlcy9vbnVubG9hZC1mb3JtLXN1Ym1pdC1zdWNjZXNz
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw4IEBACiAgICAgICAgIDxzY3JpcHQ+CiAg
ICAgICAgICAgICBmdW5jdGlvbiBjb250aW51ZVRlc3RBZnRlck5hdmlnYXRpb24oKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
KyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgfQogICAgICAgICA8L3Nj
cmlwdD4KICAgICA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9yZXNvdXJj
ZXMvcGFzcy1hbmQtbm90aWZ5LWRvbmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2xvYWRlci9yZXNvdXJjZXMvcGFzcy1hbmQtbm90aWZ5LWRvbmUuaHRtbAkocmV2aXNpb24g
MTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3VyY2VzL3Bhc3MtYW5kLW5v
dGlmeS1kb25lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8Ym9keT4KIFBB
U1MKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCkKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCkKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvcmVzb3VyY2VzL3N1YmZyYW1lLW5hdmlnYXRlLWR1cmluZy1tYWluLWZyYW1lLWxvYWQy
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3VyY2VzL3N1
YmZyYW1lLW5hdmlnYXRlLWR1cmluZy1tYWluLWZyYW1lLWxvYWQyLmh0bWwJKHJldmlzaW9uIDEy
MjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3Jlc291cmNlcy9zdWJmcmFtZS1uYXZp
Z2F0ZS1kdXJpbmctbWFpbi1mcmFtZS1sb2FkMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDcg
KzQsNyBAQAogCiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgic3ViZnJhbWUiKS5jb250ZW50V2luZG93LmxvY2F0aW9uID0gJ2RhdGE6dGV4dC9odG1s
LDxib2R5IG9ubG9hZD0ibGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyI+PC9ib2R5
Pic7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN1YmZyYW1lIikuY29udGVudFdpbmRv
dy5sb2NhdGlvbiA9ICdkYXRhOnRleHQvaHRtbCw8Ym9keSBvbmxvYWQ9InRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOyI+PC9ib2R5Pic7CiB9CiAKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9sb2FkZXIvcmVzb3VyY2VzL3N1YmZyYW1lLW5vdGlmeS1kb25lLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3VyY2VzL3N1YmZyYW1lLW5vdGlmeS1k
b25lLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3Jl
c291cmNlcy9zdWJmcmFtZS1ub3RpZnktZG9uZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDgg
KzIsOCBAQAogPGhlYWQ+CiA8c2NyaXB0PgogZnVuY3Rpb24gbG9hZGVkKCkgewotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiB9CiA8L3NjcmlwdD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvbG9hZGVyL3Jlc291cmNlcy9zdWJtaXQtZm9ybS13aGlsZS1wYXJzaW5nLXN1
YmZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3Vy
Y2VzL3N1Ym1pdC1mb3JtLXdoaWxlLXBhcnNpbmctc3ViZnJhbWUuaHRtbAkocmV2aXNpb24gMTIy
NTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3VyY2VzL3N1Ym1pdC1mb3JtLXdo
aWxlLXBhcnNpbmctc3ViZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAK
IDxmb3JtIG5hbWU9ImZvcm0iIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSJhYm91dDpibGFuayI+PC9m
b3JtPgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKIH0KIGRvY3VtZW50LmZvcm1zLmZvcm0uc3VibWl0KCk7CiBzZXRU
aW1lb3V0KCJsb2NhdGlvbj0ncmVzb3VyY2VzL3N1Ym1pdC1mb3JtLXdoaWxlLXBhcnNpbmctc3Vj
Y2Vzcy5odG1sJyIsIDApOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3VyY2Vz
L3N1Ym1pdC1mb3JtLXdoaWxlLXBhcnNpbmctc3VjY2Vzcy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL3Jlc291cmNlcy9zdWJtaXQtZm9ybS13aGlsZS1wYXJzaW5n
LXN1Y2Nlc3MuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2Fk
ZXIvcmVzb3VyY2VzL3N1Ym1pdC1mb3JtLXdoaWxlLXBhcnNpbmctc3VjY2Vzcy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xICsxIEBACi08Ym9keSBvbmxvYWQ9ImxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKSI+UEFTU0VEOiBJZiB3ZSBzdWNjZXNzZnVsbHkgZ290IGhlcmUgd2l0aG91
dCBhbiBhc3NlcnRpb24gb3IgY3Jhc2gsIGFsbCBpcyB3ZWxsLjwvYm9keT4KKzxib2R5IG9ubG9h
ZD0idGVzdFJ1bm5lci5ub3RpZnlEb25lKCkiPlBBU1NFRDogSWYgd2Ugc3VjY2Vzc2Z1bGx5IGdv
dCBoZXJlIHdpdGhvdXQgYW4gYXNzZXJ0aW9uIG9yIGNyYXNoLCBhbGwgaXMgd2VsbC48L2JvZHk+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9yZXNvdXJjZXMvdW5zY2hlZHVsZS1yZWxh
eW91dC1hZnRlci11bmxvYWQtdGFyZ2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9sb2FkZXIvcmVzb3VyY2VzL3Vuc2NoZWR1bGUtcmVsYXlvdXQtYWZ0ZXItdW5sb2FkLXRh
cmdldC5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9y
ZXNvdXJjZXMvdW5zY2hlZHVsZS1yZWxheW91dC1hZnRlci11bmxvYWQtdGFyZ2V0Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTMsOCArMyw4IEBACiAgIHdpbmRvdy5zZXRUaW1lb3V0KAogICAgIGZ1
bmN0aW9uKCkgewogICAgICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICdTVUNDRVNTOiBO
YXZpZ2F0ZWQnOwotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
ICAgICB9LCAwKTsKIDwvc2NyaXB0PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvcmVzb3VyY2VzL3dpbmRvdy1jbGVhcmluZzIuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9yZXNvdXJjZXMvd2luZG93LWNsZWFyaW5nMi5odG1sCShyZXZp
c2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9yZXNvdXJjZXMvd2luZG93
LWNsZWFyaW5nMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw4IEBAIGZ1bmN0aW9u
IHRlc3QoKSB7CiAgICAgICAgIG8gPSBvLl9fcHJvdG9fXzsKICAgICB9IHdoaWxlKG8pOwogICAg
IAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQtZGVzdHJv
eWVkLW5hdmlnYXRlLWJhY2std2l0aC1mcmFnbWVudC1zY3JvbGwuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQtZGVzdHJveWVk
LW5hdmlnYXRlLWJhY2std2l0aC1mcmFnbWVudC1zY3JvbGwuaHRtbAkocmV2aXNpb24gMTIyNTUx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRlc3Ry
b3llZC1uYXZpZ2F0ZS1iYWNrLXdpdGgtZnJhZ21lbnQtc2Nyb2xsLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTIsMTEgKzIsMTEgQEAKIDxoZWFkPgogPHNjcmlwdD4KIAotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgaWYgKCFz
ZXNzaW9uU3RvcmFnZS5zdGFnZSkKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJC
YWNrRm9yd2FyZExpc3QoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB0ZXN0
UnVubmVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGxhc3RQ
YXRoQ29tcG9uZW50KHVybCkKQEAgLTkwLDggKzkwLDggQEAgb25oYXNoY2hhbmdlID0gZnVuY3Rp
b24oZXZlbnQpCiAgICBpZiAoaGFzaE9mKGV2ZW50Lm5ld1VSTCkgPT0gIiNGaXJzdEVudHJ5V2ls
bExhdGVyQmVSZWFjdGl2YXRlZCIpIHsKICAgICAgICAgYWxlcnQoIlRlc3QgY29tcGxldGUiKTsK
ICAgICAgICAgc2Vzc2lvblN0b3JhZ2UuY2xlYXIoKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQtZGVzdHJveWVkLW5hdmlnYXRlLWJhY2suaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9j
dW1lbnQtZGVzdHJveWVkLW5hdmlnYXRlLWJhY2suaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3llZC1u
YXZpZ2F0ZS1iYWNrLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsMTEgKzIsMTEgQEAKIDxoZWFk
PgogPHNjcmlwdD4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CiAgICAgaWYgKCFzZXNzaW9uU3RvcmFnZS5zdGFnZSkKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgICAgICB0ZXN0UnVubmVyLmNsZWFyQmFja0ZvcndhcmRMaXN0
KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGxhc3RQYXRoQ29tcG9uZW50KCkKQEAgLTY4LDggKzY4
LDggQEAgZnVuY3Rpb24gc3RhdGVQb3BwZWQoKQogICAgIGVsc2UgaWYgKGV2ZW50LnN0YXRlID09
ICJGaXJzdEVudHJ5V2lsbExhdGVyQmVSZWFjdGl2YXRlZCIpIHsKICAgICAgICAgYWxlcnQoIlRl
c3QgY29tcGxldGUiKTsKICAgICAgICAgc2Vzc2lvblN0b3JhZ2UuY2xlYXIoKTsKLSAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogfQogCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0ZXItbG9hZC1j
b21wbGV0ZS1hZGRldmVudGxpc3RlbmVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQtY29tcGxldGUtYWRk
ZXZlbnRsaXN0ZW5lci5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0ZXItbG9hZC1jb21wbGV0ZS1hZGRldmVu
dGxpc3RlbmVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsMTAgKzIsMTAgQEAKIDxoZWFkPgog
PHNjcmlwdD4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7Ci0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuY2xlYXJC
YWNrRm9yd2FyZExpc3QoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gbG9nKHR4dCkKQEAgLTM1LDgg
KzM1LDggQEAgZnVuY3Rpb24gc3RhdGVQb3BwZWQoKQogICAgIGxvZygiU3RhdGUgcG9wcGVkIC0g
IiArIGV2ZW50LnN0YXRlICsgIiAodHlwZSAiICsgdHlwZW9mIGV2ZW50LnN0YXRlICsgIikiKTsK
ICAgICBpZiAoZXZlbnQuc3RhdGUgPT0gbnVsbCkKICAgICAgICAgaGlzdG9yeS5mb3J3YXJkKCk7
Ci0gICAgZWxzZSBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgZWxzZSBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiB3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcigicG9wc3RhdGUiLCBzdGF0ZVBvcHBlZCk7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0ZXItbG9hZC1jb21wbGV0ZS1i
b2R5LWF0dHJpYnV0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVy
L3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRlci1sb2FkLWNvbXBsZXRlLWJvZHktYXR0cmlidXRl
Lmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRl
b2JqZWN0cy9wb3BzdGF0ZS1hZnRlci1sb2FkLWNvbXBsZXRlLWJvZHktYXR0cmlidXRlLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTIsMTAgKzIsMTAgQEAKIDxoZWFkPgogPHNjcmlwdD4KIAotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuY2xlYXJCYWNrRm9yd2FyZExpc3Qo
KTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKIH0KIAogZnVuY3Rpb24gbG9nKHR4dCkKQEAgLTM2LDggKzM2LDggQEAgZnVuY3Rp
b24gc3RhdGVQb3BwZWQoKQogICAgIGlmIChldmVudC5zdGF0ZSA9PSBudWxsKSB7CiAgICAgICAg
IGRvY3VtZW50LmJvZHkub25wb3BzdGF0ZSA9IHN0YXRlUG9wcGVkOwogICAgICAgICBoaXN0b3J5
LmZvcndhcmQoKTsKLSAgICB9IGVsc2UgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0gZWxzZSBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwog
fQogCiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0
cy9wb3BzdGF0ZS1hZnRlci1sb2FkLWNvbXBsZXRlLWJvZHktaW5saW5lLWF0dHJpYnV0ZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3Bz
dGF0ZS1hZnRlci1sb2FkLWNvbXBsZXRlLWJvZHktaW5saW5lLWF0dHJpYnV0ZS5odG1sCShyZXZp
c2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9w
c3RhdGUtYWZ0ZXItbG9hZC1jb21wbGV0ZS1ib2R5LWlubGluZS1hdHRyaWJ1dGUuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMiwxMCArMiwxMCBAQAogPGhlYWQ+CiA8c2NyaXB0PgogCi1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xl
YXJCYWNrRm9yd2FyZExpc3QoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOwor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwogfQogCiBmdW5jdGlvbiBsb2codHh0KQpAQCAtMzYsOCArMzYsOCBAQCBmdW5jdGlvbiBz
dGF0ZVBvcHBlZCgpCiAgICAgaWYgKGV2ZW50LnN0YXRlID09IG51bGwpIHsKICAgICAgICAgZG9j
dW1lbnQuYm9keS5vbnBvcHN0YXRlID0gc3RhdGVQb3BwZWQ7CiAgICAgICAgIGhpc3RvcnkuZm9y
d2FyZCgpOwotICAgIH0gZWxzZSBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfSBlbHNlIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAK
IDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3Bv
cHN0YXRlLWFmdGVyLWxvYWQtY29tcGxldGUtd2luZG93LWF0dHJpYnV0ZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRl
ci1sb2FkLWNvbXBsZXRlLXdpbmRvdy1hdHRyaWJ1dGUuaHRtbAkocmV2aXNpb24gMTIyNTUxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxv
YWQtY29tcGxldGUtd2luZG93LWF0dHJpYnV0ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDEw
ICsyLDEwIEBACiA8aGVhZD4KIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgp
OwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICB0ZXN0UnVubmVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9u
IGxvZyh0eHQpCkBAIC0zNSw4ICszNSw4IEBAIGZ1bmN0aW9uIHN0YXRlUG9wcGVkKCkKICAgICBs
b2coIlN0YXRlIHBvcHBlZCAtICIgKyBldmVudC5zdGF0ZSArICIgKHR5cGUgIiArIHR5cGVvZiBl
dmVudC5zdGF0ZSArICIpIik7CiAgICAgaWYgKGV2ZW50LnN0YXRlID09IG51bGwpCiAgICAgICAg
IGhpc3RvcnkuZm9yd2FyZCgpOwotICAgIGVsc2UgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGVs
c2UgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKIH0KIAogd2luZG93Lm9ucG9wc3RhdGUgPSBzdGF0ZVBvcHBlZDsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1maXJlcy13aXRoLXBhZ2UtY2Fj
aGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVj
dHMvcG9wc3RhdGUtZmlyZXMtd2l0aC1wYWdlLWNhY2hlLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1maXJlcy13
aXRoLXBhZ2UtY2FjaGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEsOSArMTEsOSBAQCB2YXIg
dGVzdFdpbmRvdzsKIAogb25sb2FkID0gZnVuY3Rpb24oKQogewotICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2Fu
T3BlbldpbmRvd3MoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVm
ZXJlbmNlKCdXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleScsIDEpOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dz
KCk7CisgICAgICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdXZWJLaXRVc2VzUGFn
ZUNhY2hlUHJlZmVyZW5jZUtleScsIDEpOwogICAgIH0KICAgICB0ZXN0V2luZG93ID0gd2luZG93
Lm9wZW4oJ3Jlc291cmNlcy9wb3BzdGF0ZS1maXJlcy13aXRoLXBhZ2UtY2FjaGUtMS5odG1sJyk7
CiAgICAgaWYgKCF0ZXN0V2luZG93KQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3Rh
dGVvYmplY3RzL3B1c2hzdGF0ZS1jbGVhcnMtZm9yd2FyZC1oaXN0b3J5Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1jbGVh
cnMtZm9yd2FyZC1oaXN0b3J5Lmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtY2xlYXJzLWZvcndhcmQtaGlzdG9y
eS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDEwICsyLDEwIEBACiBvbmxvYWQgPSBmdW5jdGlv
bigpIHsKICAgaWYgKGxvY2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSkubGVuZ3RoID09IDApIHsK
ICAgICBzZXNzaW9uU3RvcmFnZS50ZXN0U3RhZ2UgPSAwOwotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBCYWNrRm9yd2FyZExpc3QoKTsKLSAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgdGVz
dFJ1bm5lci5kdW1wQmFja0ZvcndhcmRMaXN0KCk7CisgICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKICAgICB9CiAgIH0KIApAQCAtMjMsOCArMjMsOCBAQCBvbmxvYWQgPSBmdW5jdGlv
bigpIHsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIDM6CiAgICAgICAgIGhpc3RvcnkucHVz
aFN0YXRlKG51bGwsIG51bGwpOwotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogICAgICAgICBicmVhazsKICAgICAgIH0KICAgICB9LCAwKTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtaW4tZGF0YS11cmwtZGVuaWVk
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3Rz
L3B1c2hzdGF0ZS1pbi1kYXRhLXVybC1kZW5pZWQuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1pbi1kYXRhLXVy
bC1kZW5pZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIDxzY3JpcHQ+Ci1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogd2luZG93Lm9ubG9hZCA9IGZ1
bmN0aW9uKCkgewogICAgIHdpbmRvdy5sb2NhdGlvbiA9ICdkYXRhOnRleHQvaHRtbCwnICsKQEAg
LTEyLDggKzEyLDggQEAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgICd9IGNhdGNo
KGUpIHsnICsKICAgICAgICAgJ2RvY3VtZW50LndyaXRlKCJQQVNTOiBkYXRhIFVSTHMgY2Fubm90
IGJlIG1hbmlwdWxhdGVkIHZpYSBwdXNoU3RhdGUuIik7JyArCiAgICAgJ30nICsKLSAgICAnaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciknICsKLSAgICAgICAgJ2xheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsnICsKKyAgICAnaWYgKHdpbmRvdy50ZXN0UnVubmVyKScgKwor
ICAgICAgICAndGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7JyArCiAgICAgJyUzQy9zY3JpcHQlM0Un
OwogfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVj
dHMvcHVzaHN0YXRlLWluLWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtaW4taWZyYW1lLmh0bWwJKHJldmlzaW9u
IDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3Rh
dGUtaW4taWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiA8c2NyaXB0
PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7Ci0gIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiA8L3NjcmlwdD4KIDxpZnJhbWUgc3Jj
PSJyZXNvdXJjZXMvcHVzaHN0YXRlLWluLWlmcmFtZS1jaGlsZC5odG1sIj4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtb2JqZWN0LXR5cGVzLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1
c2hzdGF0ZS1vYmplY3QtdHlwZXMuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1vYmplY3QtdHlwZXMuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMiwxMCArMiwxMCBAQAogPGhlYWQ+CiA8c2NyaXB0PgogCi1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
Y2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5jbGVhckJhY2tGb3J3YXJkTGlzdCgp
OworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwogfQogCiBmdW5jdGlvbiBsb2codHh0KQpAQCAtNTksOCArNTksOCBAQCBvbnBvcHN0
YXRlID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgCiAgICAgaWYgKGV2ZW50LnN0YXRlICE9ICJGaXJz
dEVudHJ5IikKICAgICAgICAgaGlzdG9yeS5iYWNrKCk7Ci0gICAgZWxzZSBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgZWxzZSBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwogfQogCiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
bG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtdGhlbi1yZXBsYWNlc3RhdGUuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRl
LXRoZW4tcmVwbGFjZXN0YXRlLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtdGhlbi1yZXBsYWNlc3RhdGUuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMiwxMCArMiwxMCBAQAogPGhlYWQ+CiA8c2NyaXB0PgogCi1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5jbGVhckJhY2tGb3J3YXJkTGlz
dCgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiBsb2codHh0KQpAQCAtMzcsOCArMzcsOCBAQCBvbnBv
cHN0YXRlID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgbG9nKCJTdGF0ZSBwb3BwZWQgLSAiICsgZXZl
bnQuc3RhdGUgKyAiICh0eXBlICIgKyB0eXBlb2YgZXZlbnQuc3RhdGUgKyAiKSIpOwogICAgIGlm
IChldmVudC5zdGF0ZSA9PSBudWxsKQogICAgICAgICBoaXN0b3J5LmZvcndhcmQoKTsKLSAgICBl
bHNlIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBlbHNlIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIDwvc2NyaXB0PgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS11cGRhdGVzLWxv
Y2F0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVv
YmplY3RzL3B1c2hzdGF0ZS11cGRhdGVzLWxvY2F0aW9uLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtdXBkYXRl
cy1sb2NhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogPHNjcmlwdD4K
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAKIG9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICBoaXN0b3J5LnB1c2hTdGF0ZShu
dWxsLCBudWxsLCAiP2ZvbyIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVv
YmplY3RzL3B1c2hzdGF0ZS13aXRoLWZyYWdtZW50LXVybHMtYW5kLWhhc2hjaGFuZ2UuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0
YXRlLXdpdGgtZnJhZ21lbnQtdXJscy1hbmQtaGFzaGNoYW5nZS5odG1sCShyZXZpc2lvbiAxMjI1
NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLXdp
dGgtZnJhZ21lbnQtdXJscy1hbmQtaGFzaGNoYW5nZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0y
LDEwICsyLDEwIEBACiA8aGVhZD4KIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlz
dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICB0ZXN0UnVubmVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0
aW9uIGxvZyh0eHQpCkBAIC01OSw4ICs1OSw4IEBAIG9ucG9wc3RhdGUgPSBmdW5jdGlvbihldmVu
dCkKICAgICBsb2coIlN0YXRlIHBvcHBlZCB3aXRoIGV2ZW50ICIgKyBldmVudC5zdGF0ZSArICIg
KHR5cGUgIiArIHR5cGVvZiBldmVudC5zdGF0ZSArICIpIGFuZCBsYXN0IHBhdGggY29tcG9uZW50
ICIgKyBsYXN0UGF0aENvbXBvbmVudChsb2NhdGlvbi5ocmVmKSk7CiAgICAgaWYgKGV2ZW50LnN0
YXRlICE9ICJPcmlnaW5hbEVudHJ5IikKICAgICAgICAgc2V0VGltZW91dCgiaGlzdG9yeS5iYWNr
KCk7IiwgMCk7Ci0gICAgZWxzZSBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgZWxzZSBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBv
bmhhc2hjaGFuZ2UgPSBmdW5jdGlvbihldmVudCkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9h
ZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtd2l0aGluLXBvcHN0YXRlLWhhbmRsZXItYXNzZXJ0
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3Rz
L3B1c2hzdGF0ZS13aXRoaW4tcG9wc3RhdGUtaGFuZGxlci1hc3NlcnQuaHRtbAkocmV2aXNpb24g
MTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0
ZS13aXRoaW4tcG9wc3RhdGUtaGFuZGxlci1hc3NlcnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MSwxNSArMSwxNSBAQAogPHNjcmlwdD4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOwotICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICB0ZXN0UnVubmVy
LmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CisgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogb25wb3BzdGF0ZSA9IGZ1bmN0aW9uKCkg
ewogICAgIGhpc3RvcnkucHVzaFN0YXRlKG51bGwsIG51bGwpOwotICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogfQogCiBvbmxvYWQgPSBmdW5jdGlvbigpIHsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtd2l0aG91dC1oaXN0b3J5Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hz
dGF0ZS13aXRob3V0LWhpc3RvcnkuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS13aXRob3V0LWhpc3RvcnkuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMiwxMSArMiwxMSBAQAogPGhlYWQ+CiA8c2NyaXB0PgogCi1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJh
Y2tGb3J3YXJkTGlzdCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dzKCk7CisgICAgdGVz
dFJ1bm5lci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogPC9zY3JpcHQ+CiA8Ym9k
eSBvbmxvYWQ9IndpbmRvdy5vcGVuKCdyZXNvdXJjZXMvcHVzaHN0YXRlLXdpdGhvdXQtaGlzdG9y
eS5odG1sJyk7IiA+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMv
cmVwbGFjZXN0YXRlLWluLWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9yZXBsYWNlc3RhdGUtaW4taWZyYW1lLmh0bWwJKHJldmlz
aW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9yZXBs
YWNlc3RhdGUtaW4taWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8
c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9w
ZW5XaW5kb3dzKCk7Ci0gIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgdGVz
dFJ1bm5lci5zZXRDYW5PcGVuV2luZG93cygpOworICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKIH0KIAogLy8gVGhpcyBpcyBhIHRlc3QgdGhhdCByZXBsYWNlU3RhdGUgY2FsbGVkIG9uIGFu
IGlubmVyIGZyYW1lIGRvZXMgbm90IG1vZGlmeQpAQCAtMTgsOCArMTgsOCBAQCBmdW5jdGlvbiBu
b3RpZnlEb25lKHJlc3VsdCkgewogCiAgIGRvY3VtZW50LmJvZHkuaW5uZXJUZXh0ID0gcmVzdWx0
OwogCi0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIHdpbmRvd0xvYWRlZCgpIHsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9yZXBsYWNlc3RhdGUtaW4t
b251bmxvYWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0
ZW9iamVjdHMvcmVwbGFjZXN0YXRlLWluLW9udW5sb2FkLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9yZXBsYWNlc3RhdGUtaW4t
b251bmxvYWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw5ICsyLDkgQEAKIDxoZWFkPgogPHNj
cmlwdD4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rp
b24gbG9nKHR4dCkKQEAgLTIwLDggKzIwLDggQEAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkK
ICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uLmhyZWYgKyAiP1BBU1Mi
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGxvZyh3aW5kb3cubG9jYXRpb24uc2VhcmNoLnNsaWNl
KDEpKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAg
fQogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcmVwbGFj
ZXN0YXRlLXRoZW4tcHVzaHN0YXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9sb2FkZXIvc3RhdGVvYmplY3RzL3JlcGxhY2VzdGF0ZS10aGVuLXB1c2hzdGF0ZS5odG1sCShy
ZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMv
cmVwbGFjZXN0YXRlLXRoZW4tcHVzaHN0YXRlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsMTAg
KzIsMTAgQEAKIDxoZWFkPgogPHNjcmlwdD4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
IHRlc3RSdW5uZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24g
bG9nKHR4dCkKQEAgLTM3LDggKzM3LDggQEAgb25wb3BzdGF0ZSA9IGZ1bmN0aW9uKGV2ZW50KQog
ICAgIGxvZygiU3RhdGUgcG9wcGVkIC0gIiArIGV2ZW50LnN0YXRlICsgIiAodHlwZSAiICsgdHlw
ZW9mIGV2ZW50LnN0YXRlICsgIikiKTsKICAgICBpZiAoZXZlbnQuc3RhdGUgPT0gIk9yaWdpbmFs
SGlzdG9yeUl0ZW0iKQogICAgICAgICBoaXN0b3J5LmZvcndhcmQoKTsKLSAgICBlbHNlIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICBlbHNlIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3JlcGxhY2VzdGF0ZS11cGRhdGVzLWxvY2F0aW9u
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3Rz
L3JlcGxhY2VzdGF0ZS11cGRhdGVzLWxvY2F0aW9uLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9yZXBsYWNlc3RhdGUtdXBkYXRl
cy1sb2NhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogPHNjcmlwdD4K
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAKIG9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICBoaXN0b3J5LnJlcGxhY2VTdGF0
ZShudWxsLCBudWxsLCAiP2ZvbyIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3Rh
dGVvYmplY3RzL3N0YXRlLWFwaS1vbi1kZXRhY2hlZC1mcmFtZS1jcmFzaC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS1hcGktb24t
ZGV0YWNoZWQtZnJhbWUtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLWFwaS1vbi1kZXRhY2hlZC1mcmFtZS1j
cmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPGh0bWw+CiA8c2NyaXB0
PgogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gcnVuVGVzdCgpCiB7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtYXR0cmlidXRlLWhpc3RvcnktZ2V0
dGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmpl
Y3RzL3N0YXRlLWF0dHJpYnV0ZS1oaXN0b3J5LWdldHRlci5odG1sCShyZXZpc2lvbiAxMjI1NTEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtYXR0cmlidXRl
LWhpc3RvcnktZ2V0dGVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsMTAgKzYsMTAgQEAgZnVu
Y3Rpb24gbG9nKG1zZykgewogICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNsb2ciKS5pbm5l
ckhUTUwgKz0gbXNnICsgIjxicj4iOwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
dGVzdFJ1bm5lci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiB0
ZXN0KCkgewpAQCAtMjMsNyArMjMsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgIH0gY2F0Y2gg
KGUpIHsKICAgICAgICAgLy8gaGlzdG9yeS5zdGF0ZSBpcyBub3QgY29uZmlndXJhYmxlIGluIEpT
Qy4KICAgICAgICAgbG9nKGUubmFtZSA9PSAiVHlwZUVycm9yIiA/ICJQQVNTIiA6ICgiRkFJTDog
dW5leHBlY3RlZCBleGNlcHRpb246ICIgKyBlKSk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM5LDggKzM5LDggQEAgZnVuY3Rpb24gdGVzdCgpIHsK
ICAgICAgICAgICAgIGxvZygiRkFJTDogZS5zdGF0ZSBleHBlY3RlZCA0Miwgd2FzICIgKyBlLnN0
YXRlICsgIiAob2YgdHlwZSAiICsgdHlwZW9mIGUuc3RhdGUgKyAiKSIpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBsb2coIlBBU1MiKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7CiAgICAgfQogCiAgICAgaGlzdG9yeS5iYWNrKCk7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtYXR0cmlidXRlLW9iamVjdC10
eXBlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2Jq
ZWN0cy9zdGF0ZS1hdHRyaWJ1dGUtb2JqZWN0LXR5cGVzLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS1hdHRyaWJ1dGUt
b2JqZWN0LXR5cGVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsOCArNyw4IEBACiA8c2NyaXB0
PgogICAgIGRlc2NyaXB0aW9uKCdUaGlzIHRlc3QgY2FsbHMgcHVzaFN0YXRlIHdpdGggc3RhdGUg
b2JqZWN0cyBvZiBhbGwgdGhlIGRpZmZlcmVudCBvYmplY3QgdHlwZXMgc3VwcG9ydGVkIGJ5IHRo
ZSBIVE1MNSAiaW50ZXJuYWwgc3RydWN0dXJlZCBjbG9uaW5nIGFsZ29yaXRobSIgYW5kIG1ha2Vz
IHN1cmUgdGhlIHN0YXRlIGF0dHJpYnV0ZSByZXR1cm5zIHRoZSBleHBlY3RlZCBvYmplY3RzLicp
OwogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKIAog
ICAgIHNob3VsZEJlRGVmaW5lZCgiaGlzdG9yeS5zdGF0ZSIpOwogICAgIGRlYnVnKCJcbmhpc3Rv
cnkuc3RhdGUgc2hvdWxkIGluaXRpYWxseSBiZSBudWxsLiIpOwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLWF0dHJpYnV0ZS1vbmx5LW9uZS1kZXNlcmlh
bGl6YXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0
ZW9iamVjdHMvc3RhdGUtYXR0cmlidXRlLW9ubHktb25lLWRlc2VyaWFsaXphdGlvbi5odG1sCShy
ZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMv
c3RhdGUtYXR0cmlidXRlLW9ubHktb25lLWRlc2VyaWFsaXphdGlvbi5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC04LDkgKzgsOSBAQAogICAgIGRlc2NyaXB0aW9uKCJNYWtlIHN1cmUgdGhlIHNhbWUg
ZGVzZXJpYWxpemF0aW9uIG9mIHRoZSBzdGF0ZSBvYmplY3QgaXMgdXNlZCBldmVyeSB0aW1lIChi
b3RoIGluIHRoZSBoaXN0b3J5IG9iamVjdCBhbmQgcG9wc3RhdGUgZXZlbnRzKS4iKTsKIAogICAg
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0Zvcndh
cmRMaXN0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5jbGVhckJh
Y2tGb3J3YXJkTGlzdCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAg
ICB9CiAKICAgICBzaG91bGRCZURlZmluZWQoImhpc3Rvcnkuc3RhdGUiKTsKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS1hdHRyaWJ1dGUtcG9wc3RhdGUt
ZXZlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9i
amVjdHMvc3RhdGUtYXR0cmlidXRlLXBvcHN0YXRlLWV2ZW50Lmh0bWwJKHJldmlzaW9uIDEyMjU1
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS1hdHRyaWJ1
dGUtcG9wc3RhdGUtZXZlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw5ICs4LDkgQEAKICAg
ICBkZXNjcmlwdGlvbigiQ2hlY2sgdGhhdCBQb3BTdGF0ZUV2ZW50LnN0YXRlIGFsd2F5cyBoYXMg
YSBjb3JyZWN0IHZhbHVlLiIpOwogCiAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgICAgICB0ZXN0UnVubmVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CisgICAgICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KIAogICAgIHNob3VsZEJlRGVmaW5lZCgiaGlz
dG9yeS5zdGF0ZSIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3Rz
L3N0YXRlLXVybC1zZXRzLWxpbmtzLXZpc2l0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtdXJsLXNldHMtbGlua3MtdmlzaXRl
ZC5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0
ZW9iamVjdHMvc3RhdGUtdXJsLXNldHMtbGlua3MtdmlzaXRlZC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDggKzEsOCBAQAogPHNjcmlwdD4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmtlZXBXZWJIaXN0b3J5KCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci5rZWVwV2ViSGlzdG9yeSgpOworICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogfQogCiBmdW5jdGlvbiBsb2FkZWQoKQpAQCAtMTAsOSArMTAsOSBAQCBmdW5j
dGlvbiBsb2FkZWQoKQogICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCAiVGl0
bGUiLCAicmVwbGFjZWRVUkwuaHRtbCIpOwogICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShu
dWxsLCAiVGl0bGUiLCAicHVzaGVkVVJMLmh0bWwiKTsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgdmFyIHN0eWxlMSA9IHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlci5jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2xpbmsxJykpOwotICAgICAgICB2YXIgc3R5bGUyID0gd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyLmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnbGluazInKSk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisgICAgICAgIHZhciBzdHlsZTEgPSB3aW5kb3cudGVzdFJ1bm5lci5jb21wdXRlZFN0eWxlSW5j
bHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xpbmsxJykpOworICAg
ICAgICB2YXIgc3R5bGUyID0gd2luZG93LnRlc3RSdW5uZXIuY29tcHV0ZWRTdHlsZUluY2x1ZGlu
Z1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsaW5rMicpKTsKICAgICAgICAg
dmFyIHJlc3VsdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTsKICAgICAgICAgaWYgKHN0
eWxlMS5jb2xvciAhPSAicmdiKDI1NSwgMTY1LCAwKSIgfHwgc3R5bGUyLmNvbG9yICE9ICJyZ2Io
MjU1LCAxNjUsIDApIikKICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgPSAiRkFJTCI7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcmVzb3VyY2VzL3B1c2hz
dGF0ZS1pbi1pZnJhbWUtY2hpbGQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci9zdGF0ZW9iamVjdHMvcmVzb3VyY2VzL3B1c2hzdGF0ZS1pbi1pZnJhbWUtY2hpbGQu
aHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVv
YmplY3RzL3Jlc291cmNlcy9wdXNoc3RhdGUtaW4taWZyYW1lLWNoaWxkLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTExLDggKzExLDggQEAgb25wb3BzdGF0ZSA9IGZ1bmN0aW9uKCkgewogICB9IGVs
c2UgewogICAgIHRvcFdpbi5kb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICJQQVNTIjsKICAgfQot
ICBpZiAodG9wV2luLmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIHRvcFdpbi5sYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgIGlmICh0b3BXaW4udGVzdFJ1bm5lcikKKyAgICB0
b3BXaW4udGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIG9ubG9hZCA9IGZ1bmN0aW9uKCkg
ewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3Jlc291cmNlcy9w
dXNoc3RhdGUtd2l0aG91dC1oaXN0b3J5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3Jlc291cmNlcy9wdXNoc3RhdGUtd2l0aG91dC1oaXN0
b3J5Lmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0
YXRlb2JqZWN0cy9yZXNvdXJjZXMvcHVzaHN0YXRlLXdpdGhvdXQtaGlzdG9yeS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC04LDggKzgsOCBAQCBmdW5jdGlvbiBydW5UZXN0KCkKICAgICBoaXN0b3J5
LnB1c2hTdGF0ZSgiTmV3IGhpc3RvcnkgSXRlbSIsICIyUGluZyEiKTsKICAgICBoaXN0b3J5LnB1
c2hTdGF0ZSgiTmV3IGhpc3RvcnkgSXRlbSIsICIzUGluZyEiKTsKICAgICB3aW5kb3cub3BlbmVy
LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lclRleHQgPSAiaGlzdG9yeS5s
ZW5ndGggaXM6ICIgKyBoaXN0b3J5Lmxlbmd0aDsKLSAgICBpZiAod2luZG93Lm9wZW5lci5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgd2luZG93Lm9wZW5lci5sYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy5vcGVuZXIudGVzdFJ1bm5lcikKKyAg
ICAgICAgd2luZG93Lm9wZW5lci50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB3aW5kb3cu
Y2xvc2UoKQogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL2NvbG9yLWRvZXMtbm90
LWluY2x1ZGUtYWxwaGEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlh
L2NvbG9yLWRvZXMtbm90LWluY2x1ZGUtYWxwaGEuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9jb2xvci1kb2VzLW5vdC1pbmNsdWRlLWFscGhhLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEzLDggKzEzLDggQEAKIDwvc3R5bGU+CiA8ZGl2IGlkPXRlc3Q+
VGhpcyBib3ggc2hvdWxkIGJlIGdyZWVuLjwvZGl2PgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKICAgICB2YXIgYmFja2dyb3VuZENvbG9yID0gZ2V0Q29tcHV0ZWRTdHls
ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3I7
CiAgICAgY29uc3QgZXhwZWN0ZWRCYWNrZ3JvdW5kQ29sb3IgPSAicmdiKDAsIDEyOCwgMCkiOwog
ICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IgPT09IGV4cGVjdGVkQmFja2dyb3VuZENvbG9yKQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9pbnZhbGlkLWxlbmd0aHMuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL2ludmFsaWQtbGVuZ3Rocy5odG1sCShyZXZpc2lv
biAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL2ludmFsaWQtbGVuZ3Rocy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBAQAogPHByZSBpZD0iY29uc29sZSI+CiA8L3By
ZT4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgIAogICAgIGZ1bmN0
aW9uIGxvZyhtZXNzYWdlKQogICAgIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbGlm
ZXRpbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL2xpZmV0aW1l
Lmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbGlmZXRp
bWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw5ICszLDkgQEAKIDxkaXYgaWQ9cmVzdWx0PlRl
c3RpbmcuLi48L2Rpdj4KIDxpZnJhbWUgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CiA8c2Ny
aXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24g
Z2MoKQpAQCAtMzksOCArMzksOCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgZ2MoKTsKICAg
ICAgICAgdHJ5IHsgbS5tYXRjaE1lZGl1bSgiZm9vYmFyIikgfSBjYXRjaCAoZXgpIHsgfQogICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MID0gIlBBU1Mi
OwotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9LCAw
KTsKIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tYXRjaG1lZGl1
bS1xdWVyeS1hcGkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21h
dGNobWVkaXVtLXF1ZXJ5LWFwaS5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L21lZGlhL21hdGNobWVkaXVtLXF1ZXJ5LWFwaS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC01LDggKzUsOCBAQAogCiA8L3N0eWxlPgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IGNoYXJzZXQ9InV0Zi04Ij4KLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgCiAgIGZ1bmN0aW9uIGxvZyht
KQogICB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLXF1ZXJ5LWxpc3QtMDEu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLXF1ZXJ5LWxp
c3QtMDEuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9t
ZWRpYS1xdWVyeS1saXN0LTAxLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBACiAK
IDwvc3R5bGU+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgi
PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgZnVuY3Rpb24gbG9nKG0pCiAg
ICAgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1saXN0LTAyLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1saXN0
LTAyLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVk
aWEtcXVlcnktbGlzdC0wMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDggKzUsOCBAQAogCiA8
L3N0eWxlPgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4K
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIGZ1bmN0aW9uIGxvZyhtKSB7CiAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRzJykuaW5uZXJIVE1MICs9IG0g
KyAnPGJyPic7CkBAIC0yMiwxMCArMjIsMTAgQEAKIAogICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkK
ICAgICB7Ci0gICAgICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldFZpZXdNb2RlTWVkaWFGZWF0dXJlKCJ3aW5kb3dlZCIp
OworICAgICAgICB0ZXN0UnVubmVyLnNldFZpZXdNb2RlTWVkaWFGZWF0dXJlKCJ3aW5kb3dlZCIp
OwogCiAgICAgICAgIHdpbmRvd2VkUXVlcnkgPSB3aW5kb3cubWF0Y2hNZWRpYSgiKC13ZWJraXQt
dmlldy1tb2RlOiB3aW5kb3dlZCkiKTsKICAgICAgICAgZmxvYXRpbmdRdWVyeSA9IHdpbmRvdy5t
YXRjaE1lZGlhKCIoLXdlYmtpdC12aWV3LW1vZGU6IGZsb2F0aW5nKSIpOwpAQCAtNDMsMTMgKzQz
LDEzIEBACiAgICAgICAgIG1heGltaXplZFF1ZXJ5LmFkZExpc3RlbmVyKGNhbGxiYWNrMik7CiAK
ICAgICAgICAgbG9nKCItLS0tLS0tLS0tLS0tIG1pbmltaXplZCAtLS0tLS0tLS0tLS0tIik7Ci0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFZpZXdNb2RlTWVkaWFGZWF0dXJlKCJtaW5p
bWl6ZWQiKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRWaWV3TW9kZU1lZGlhRmVhdHVyZSgibWlu
aW1pemVkIik7CiAgICAgICAgIGxvZygiLS0tLS0tLS0tLS0tLSBtYXhpbWl6ZWQgLS0tLS0tLS0t
LS0tLSIpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRWaWV3TW9kZU1lZGlhRmVh
dHVyZSgibWF4aW1pemVkIik7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0Vmlld01vZGVNZWRpYUZl
YXR1cmUoIm1heGltaXplZCIpOwogICAgICAgICBsb2coIi0tLS0tLS0tLS0tLS0gd2luZG93ZWQg
LS0tLS0tLS0tLS0tLSIpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRWaWV3TW9k
ZU1lZGlhRmVhdHVyZSgid2luZG93ZWQiKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRWaWV3TW9k
ZU1lZGlhRmVhdHVyZSgid2luZG93ZWQiKTsKICAgICAgICAgbG9nKCItLS0tLS0tLS0tLS0tIGZs
b2F0aW5nIC0tLS0tLS0tLS0tLS0iKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0
Vmlld01vZGVNZWRpYUZlYXR1cmUoImZsb2F0aW5nIik7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0
Vmlld01vZGVNZWRpYUZlYXR1cmUoImZsb2F0aW5nIik7CiAgICAgfQogCiA8L3NjcmlwdD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtcXVlcnktbGlzdC0wMy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtcXVlcnktbGlzdC0wMy5odG1s
CShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLXF1ZXJ5
LWxpc3QtMDMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw4ICs1LDggQEAKIAogPC9zdHlsZT4K
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBmdW5jdGlvbiBsb2cobSkgewogICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0cycpLmlubmVySFRNTCArPSBtICsgJzxicj4n
OwpAQCAtMjIsMTAgKzIyLDEwIEBACiAKICAgICBmdW5jdGlvbiBydW5UZXN0cygpCiAgICAgewot
ICAgICAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgaWYgKCF3
aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRWaWV3TW9kZU1lZGlhRmVhdHVyZSgid2luZG93ZWQiKTsKKyAgICAg
ICAgdGVzdFJ1bm5lci5zZXRWaWV3TW9kZU1lZGlhRmVhdHVyZSgid2luZG93ZWQiKTsKIAogICAg
ICAgICB3aW5kb3dlZFF1ZXJ5ID0gd2luZG93Lm1hdGNoTWVkaWEoIigtd2Via2l0LXZpZXctbW9k
ZTogd2luZG93ZWQpIik7CiAgICAgICAgIG1pbmltaXplZFF1ZXJ5ID0gd2luZG93Lm1hdGNoTWVk
aWEoIigtd2Via2l0LXZpZXctbW9kZTogbWluaW1pemVkKSIpOwpAQCAtMzcsMjcgKzM3LDI3IEBA
CiAgICAgICAgIG1pbmltaXplZFF1ZXJ5LmFkZExpc3RlbmVyKGNhbGxiYWNrMik7CiAKICAgICAg
ICAgbG9nKCItLS0tLS0tLS0tLS0tIG1pbmltaXplZCAtLS0tLS0tLS0tLS0tIik7Ci0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldFZpZXdNb2RlTWVkaWFGZWF0dXJlKCJtaW5pbWl6ZWQi
KTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRWaWV3TW9kZU1lZGlhRmVhdHVyZSgibWluaW1pemVk
Iik7CiAgICAgICAgIGxvZygiLS0tLS0tLS0tLS0tLSB3aW5kb3dlZCAtLS0tLS0tLS0tLS0tIik7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFZpZXdNb2RlTWVkaWFGZWF0dXJlKCJ3
aW5kb3dlZCIpOworICAgICAgICB0ZXN0UnVubmVyLnNldFZpZXdNb2RlTWVkaWFGZWF0dXJlKCJ3
aW5kb3dlZCIpOwogCiAgICAgICAgIGxvZygiPGJyPjxicj5yZW1vdmluZyB3aW5kb3dlZFsxXSBh
bmQgbWluaW1pemVkWzJdPGJyPiIpOwogICAgICAgICB3aW5kb3dlZFF1ZXJ5LnJlbW92ZUxpc3Rl
bmVyKGNhbGxiYWNrMSk7CiAgICAgICAgIG1pbmltaXplZFF1ZXJ5LnJlbW92ZUxpc3RlbmVyKGNh
bGxiYWNrMik7CiAKICAgICAgICAgbG9nKCItLS0tLS0tLS0tLS0tIG1pbmltaXplZCAtLS0tLS0t
LS0tLS0tIik7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFZpZXdNb2RlTWVkaWFG
ZWF0dXJlKCJtaW5pbWl6ZWQiKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRWaWV3TW9kZU1lZGlh
RmVhdHVyZSgibWluaW1pemVkIik7CiAgICAgICAgIGxvZygiLS0tLS0tLS0tLS0tLSB3aW5kb3dl
ZCAtLS0tLS0tLS0tLS0tIik7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFZpZXdN
b2RlTWVkaWFGZWF0dXJlKCJ3aW5kb3dlZCIpOworICAgICAgICB0ZXN0UnVubmVyLnNldFZpZXdN
b2RlTWVkaWFGZWF0dXJlKCJ3aW5kb3dlZCIpOwogCiAgICAgICAgIGxvZygiPGJyPjxicj5hZGRp
bmcgd2luZG93ZWRbMV0gYW5kIG1pbmltaXplZFsyXTxicj4iKTsKICAgICAgICAgd2luZG93ZWRR
dWVyeS5hZGRMaXN0ZW5lcihjYWxsYmFjazEpOwogICAgICAgICBtaW5pbWl6ZWRRdWVyeS5hZGRM
aXN0ZW5lcihjYWxsYmFjazIpOwogCiAgICAgICAgIGxvZygiLS0tLS0tLS0tLS0tLSBtaW5pbWl6
ZWQgLS0tLS0tLS0tLS0tLSIpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRWaWV3
TW9kZU1lZGlhRmVhdHVyZSgibWluaW1pemVkIik7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0Vmll
d01vZGVNZWRpYUZlYXR1cmUoIm1pbmltaXplZCIpOwogICAgICAgICBsb2coIi0tLS0tLS0tLS0t
LS0gd2luZG93ZWQgLS0tLS0tLS0tLS0tLSIpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRWaWV3TW9kZU1lZGlhRmVhdHVyZSgid2luZG93ZWQiKTsKKyAgICAgICAgdGVzdFJ1bm5l
ci5zZXRWaWV3TW9kZU1lZGlhRmVhdHVyZSgid2luZG93ZWQiKTsKIAogICAgIH0KIApJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1saXN0LTA0Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1saXN0LTA0Lmh0bWwJKHJl
dmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtcXVlcnktbGlz
dC0wNC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDEwICszLDEwIEBACiA8dGl0bGU+VGVzdCBD
U1NPTSBWaWV3IG1vZHVsZTogTWVkaWFRdWVyeUxpc3QgaW50ZXJmYWNlPC90aXRsZT4KIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CiAKLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldl
YktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5IiwgMSk7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZl
cmVuY2UoIldlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5IiwgMSk7CiAgICAgfQogCiAg
ICAgZnVuY3Rpb24gbG9nKG0pIHsKQEAgLTQ3LDIxICs0NywyMSBAQAogICAgICAgICAgICAgLy8g
aWYgdGhpcyBwb2ludCBpcyByZWFjaGVkIHRoZSBwYWdlIGlzIGNvbW1pbmcgZnJvbSB0aGUgcGFn
ZSBjYWNoZS4KIAogICAgICAgICAgICAgbG9nKCItLS0tLS0tLS0tLS0tIG1pbmltaXplZCAtLS0t
LS0tLS0tLS0tIik7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRWaWV3TW9k
ZU1lZGlhRmVhdHVyZSgibWluaW1pemVkIik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFZp
ZXdNb2RlTWVkaWFGZWF0dXJlKCJtaW5pbWl6ZWQiKTsKICAgICAgICAgICAgIGxvZygiLS0tLS0t
LS0tLS0tLSBtYXhpbWl6ZWQgLS0tLS0tLS0tLS0tLSIpOwotICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0Vmlld01vZGVNZWRpYUZlYXR1cmUoIm1heGltaXplZCIpOworICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zZXRWaWV3TW9kZU1lZGlhRmVhdHVyZSgibWF4aW1pemVkIik7CiAg
ICAgICAgICAgICBsb2coIi0tLS0tLS0tLS0tLS0gd2luZG93ZWQgLS0tLS0tLS0tLS0tLSIpOwot
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Vmlld01vZGVNZWRpYUZlYXR1cmUo
IndpbmRvd2VkIik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFZpZXdNb2RlTWVkaWFGZWF0
dXJlKCJ3aW5kb3dlZCIpOwogICAgICAgICAgICAgbG9nKCItLS0tLS0tLS0tLS0tIGZsb2F0aW5n
IC0tLS0tLS0tLS0tLS0iKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFZp
ZXdNb2RlTWVkaWFGZWF0dXJlKCJmbG9hdGluZyIpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRWaWV3TW9kZU1lZGlhRmVhdHVyZSgiZmxvYXRpbmciKTsKIAotICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyB9LCAwKTsKKyAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7IH0sIDApOwogCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFZpZXdN
b2RlTWVkaWFGZWF0dXJlKCJ3aW5kb3dlZCIpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgICAgICB0ZXN0UnVubmVyLnNldFZpZXdNb2RlTWVkaWFGZWF0dXJlKCJ3aW5kb3dlZCIp
OwogICAgICAgICB3aW5kb3cub25wYWdlc2hvdyA9IHBhZ2VzaG93OwogICAgIH0KIApJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1saXN0LTA1Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1saXN0LTA1Lmh0bWwJKHJl
dmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtcXVlcnktbGlz
dC0wNS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDggKzUsOCBAQAogCiA8L3N0eWxlPgogPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIAogICAgIGZ1bmN0aW9uIGxvZyhtKSB7CiAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRzJykuaW5uZXJIVE1MICs9IG0gKyAnPGJyPic7CkBA
IC0yMiwxMCArMjIsMTAgQEAKIAogICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICB7Ci0gICAg
ICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBpZiAoIXdpbmRv
dy50ZXN0UnVubmVyKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLnNldFZpZXdNb2RlTWVkaWFGZWF0dXJlKCJ3aW5kb3dlZCIpOworICAgICAgICB0
ZXN0UnVubmVyLnNldFZpZXdNb2RlTWVkaWFGZWF0dXJlKCJ3aW5kb3dlZCIpOwogCiAgICAgICAg
IHZhciBxdWVyeSA9IHdpbmRvdy5tYXRjaE1lZGlhKCIoLXdlYmtpdC12aWV3LW1vZGU6IHdpbmRv
d2VkKSIpOwogCkBAIC0zMyw3ICszMyw3IEBACiAgICAgICAgIHF1ZXJ5LmFkZExpc3RlbmVyKGNh
bGxiYWNrMSk7CiAgICAgICAgIHF1ZXJ5LmFkZExpc3RlbmVyKGNhbGxiYWNrMik7CiAKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Vmlld01vZGVNZWRpYUZlYXR1cmUoIm1pbmltaXpl
ZCIpOworICAgICAgICB0ZXN0UnVubmVyLnNldFZpZXdNb2RlTWVkaWFGZWF0dXJlKCJtaW5pbWl6
ZWQiKTsKICAgICB9CiAKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9t
ZWRpYS1xdWVyeS1saXN0LTA2Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYS9tZWRpYS1xdWVyeS1saXN0LTA2Lmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtcXVlcnktbGlzdC0wNi5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC01LDggKzUsOCBAQAogCiA8L3N0eWxlPgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAg
IGZ1bmN0aW9uIGxvZyhtKSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1
bHRzJykuaW5uZXJIVE1MICs9IG0gKyAnPGJyPic7CkBAIC0xNCwxNCArMTQsMTQgQEAKIAogICAg
IGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICB7Ci0gICAgICAgIGlmICghd2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFZpZXdNb2RlTWVk
aWFGZWF0dXJlKCJ3aW5kb3dlZCIpOworICAgICAgICB0ZXN0UnVubmVyLnNldFZpZXdNb2RlTWVk
aWFGZWF0dXJlKCJ3aW5kb3dlZCIpOwogCiAgICAgICAgIHZhciBxdWVyeSA9IHdpbmRvdy5tYXRj
aE1lZGlhKCIoLXdlYmtpdC12aWV3LW1vZGU6IHdpbmRvd2VkKSIpOwogICAgICAgICBsb2coJ1F1
ZXJ5IHJlc3VsdCBiZWZvcmUgY2hhbmdpbmcgdmlldy1tb2RlOiAnICsgcXVlcnkubWF0Y2hlcyk7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFZpZXdNb2RlTWVkaWFGZWF0dXJlKCJt
aW5pbWl6ZWQiKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRWaWV3TW9kZU1lZGlhRmVhdHVyZSgi
bWluaW1pemVkIik7CiAgICAgICAgIGxvZygnUXVlcnkgcmVzdWx0IGFmdGVyIGNoYW5naW5nIHZp
ZXctbW9kZTogJyArIHF1ZXJ5Lm1hdGNoZXMpOwogICAgIH0KIApJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1saXN0LTA3Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1saXN0LTA3Lmh0bWwJKHJldmlzaW9uIDEyMjU1
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtcXVlcnktbGlzdC0wNy5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC01LDggKzUsOCBAQAogCiA8L3N0eWxlPgogPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKIAogICAgIGZ1bmN0aW9uIGxvZyhtKSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdyZXN1bHRzJykuaW5uZXJIVE1MICs9IG0gKyAnPGJyPic7CkBAIC0yMiwxMCArMjIs
MTAgQEAKIAogICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICB7Ci0gICAgICAgIGlmICghd2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVy
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNl
dFZpZXdNb2RlTWVkaWFGZWF0dXJlKCJ3aW5kb3dlZCIpOworICAgICAgICB0ZXN0UnVubmVyLnNl
dFZpZXdNb2RlTWVkaWFGZWF0dXJlKCJ3aW5kb3dlZCIpOwogCiAgICAgICAgIHZhciBxdWVyeSA9
IHdpbmRvdy5tYXRjaE1lZGlhKCIoLXdlYmtpdC12aWV3LW1vZGU6IHdpbmRvd2VkKSIpOwogCkBA
IC0zNSw3ICszNSw3IEBACiAgICAgICAgIHF1ZXJ5LmFkZExpc3RlbmVyKFsxLDJdKTsKICAgICAg
ICAgcXVlcnkuYWRkTGlzdGVuZXIoY2FsbGJhY2syKTsKIAotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRWaWV3TW9kZU1lZGlhRmVhdHVyZSgibWluaW1pemVkIik7CisgICAgICAgIHRl
c3RSdW5uZXIuc2V0Vmlld01vZGVNZWRpYUZlYXR1cmUoIm1pbmltaXplZCIpOwogICAgIH0KIAog
PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLXF1ZXJ5LWxpc3Qt
Y2FsbGJhY2suaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlh
LXF1ZXJ5LWxpc3QtY2FsbGJhY2suaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1saXN0LWNhbGxiYWNrLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNyArMSw3IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKIDwvc2NyaXB0PgogPHA+SWYgdGhpcyBkb2Vzbid0IGNyYXNoLi4uPC9wPgogPHAgc3R5bGU9
ImNvbG9yOmdyZWVuOyI+UEFTUzwvcD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVk
aWEtc3ZnLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9t
ZWRpYS1zdmctY3Jhc2guaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYS9tZWRpYS1zdmctY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcg
QEAKIDxodG1sPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8aW1nIHNyYz0n
ZGF0YTppbWFnZS9zdmcreG1sLDwhRE9DVFlQRWcgUFVCTElDICIiICIvIj48ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxzdHlsZT5AbWVkaWEobWF4LWNvbG9yOjUpeyp7PC9z
dHlsZT4nPgogUEFTUyAtIFNWRyBpbWFnZSB3aXRoIG1lZGlhIHR5cGUgZG9lcyBub3QgY3Jhc2gu
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXBvaW50ZXIuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXBvaW50ZXIuaHRtbAkocmV2aXNpb24gMTIy
NTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1wb2ludGVyLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTUsOCArNSw4IEBACiAKIDwvc3R5bGU+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
CiAgICAgZnVuY3Rpb24gbG9nKG0pIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3Jlc3VsdHMnKS5pbm5lckhUTUwgKz0gbSArICc8YnI+JzsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvbWVkaWEvcHJpbnQtcmVzdG9yZXMtcHJldmlvdXMtbWVkaWF0eXBlLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9wcmludC1yZXN0b3Jlcy1wcmV2aW91cy1tZWRp
YXR5cGUuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9w
cmludC1yZXN0b3Jlcy1wcmV2aW91cy1tZWRpYXR5cGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
NSw5ICs1LDkgQEAKIAogPC9zdHlsZT4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBj
aGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLnNldE1lZGlhVHlwZSgiaGFuZGhlbGQiKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAg
IHRlc3RSdW5uZXIuc2V0TWVkaWFUeXBlKCJoYW5kaGVsZCIpOwogICAgIH0KIAogICAgIGZ1bmN0
aW9uIGxvZyhtKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS91cGRhdGUtbWVkaWEtcXVl
cnktY3NzLXBhcnNlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEv
dXBkYXRlLW1lZGlhLXF1ZXJ5LWNzcy1wYXJzZXIuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYS91cGRhdGUtbWVkaWEtcXVlcnktY3NzLXBhcnNlci5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBACiB9CiA8L3N0eWxlPgogPHNjcmlwdD4K
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvbWVkaWEvdmlldy1tb2RlLW1lZGlhLWZlYXR1cmUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL3ZpZXctbW9kZS1tZWRpYS1mZWF0dXJlLmh0bWwJKHJl
dmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvdmlldy1tb2RlLW1lZGlh
LWZlYXR1cmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTYsOCArMTYsOCBAQAogICAgICAgICB9
CiAgICAgPC9zdHlsZT4KICAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Vmlld01v
ZGVNZWRpYUZlYXR1cmUoIm1pbmltaXplZCIpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFZpZXdNb2RlTWVkaWFGZWF0dXJlKCJtaW5p
bWl6ZWQiKTsKICAgICA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9tdWx0aWNvbC9hbm9ueW1vdXMtYmxvY2stc3BsaXQtY3Jhc2guaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29sL2Fub255bW91cy1ibG9jay1zcGxpdC1j
cmFzaC5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29s
L2Fub255bW91cy1ibG9jay1zcGxpdC1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDgg
KzgsOCBAQAogI3Rlc3Q0IHsgZmxvYXQ6IHJpZ2h0OyB9DQogPC9zdHlsZT4NCiA8c2NyaXB0Pg0K
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpDQotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsNCitpZiAod2luZG93LnRlc3RSdW5uZXIpDQorICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOw0KIA0KIG9ubG9hZCA9IGZ1bmN0aW9uKCkgew0KICAgICB0ZXN0MCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOw0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
bXVsdGljb2wvYnJlYWstcHJvcGVydGllcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvbXVsdGljb2wvYnJlYWstcHJvcGVydGllcy5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29sL2JyZWFrLXByb3BlcnRpZXMuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMsOCArMTMsOCBAQAogPC9kaXY+CiA8cHJlIGlkPSJjb25zb2xlIj48L3By
ZT4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBmdW5jdGlv
biBsb2cobWVzc2FnZSkKICAgICB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29sL2Ns
b25lLWJsb2NrLWNoaWxkcmVuLWlubGluZS1taXNtYXRjaC1jcmFzaC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvY2xvbmUtYmxvY2stY2hpbGRyZW4taW5saW5l
LW1pc21hdGNoLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvbXVsdGljb2wvY2xvbmUtYmxvY2stY2hpbGRyZW4taW5saW5lLW1pc21hdGNoLWNyYXNoLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsOCArOCw4IEBAIFRlc3QgcGFzc2VzIGlmIGl0IGRvZXMg
bm90IGNyYXNoLgogI2RpdjIgeyAtd2Via2l0LWNvbHVtbi1zcGFuOiBhbGw7IH0KIDwvc3R5bGU+
CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIHJ1blRlc3QoKSAKIHsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvY29sdW1uLXNwYW4tcGFyZW50LWNvbnRpbnVhdGlv
bi1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvY29s
dW1uLXNwYW4tcGFyZW50LWNvbnRpbnVhdGlvbi1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjI1NTEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29sL2NvbHVtbi1zcGFuLXBhcmVudC1jb250aW51
YXRpb24tY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw5ICs4LDkgQEAgaDIgeyAtd2Vi
a2l0LWNvbHVtbi1zcGFuOiBhbGw7IH0NCiA8L3N0eWxlPg0KIDxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pg0KIDxzY3JpcHQ+DQotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgew0KLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7DQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsNCitp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsNCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7DQor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOw0KIH0NCiANCiBmdW5jdGlvbiBydW5UZXN0
KCkNCkBAIC0yMiw4ICsyMiw4IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQ0KICAgICBnYygpOw0KICAg
ICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICJQQVNTIjsNCiANCi0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikNCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsNCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQ0KKyAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7DQogfQ0KIA0KIHNldFRpbWVvdXQoInJ1blRlc3QoKSIsIDApOw0KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvY29udGVudC1oZWlnaHQtemVyby1jcmFzaC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvY29udGVudC1oZWln
aHQtemVyby1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L211bHRpY29sL2NvbnRlbnQtaGVpZ2h0LXplcm8tY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMSw2ICsxLDYgQEAKIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8
L3NjcmlwdD4KIDxwPgogICAgIFRoaXMgdGVzdHMgZm9yIGEgY3Jhc2ggd2hlbiBzcGVjaWZ5aW5n
IG11bHRpcGxlIGNvbHVtbnMgZm9yIGEgYmxvY2sgd2l0aCAwIGNvbnRlbnQgaGVpZ2h0LgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9mbGlwcGVkLWJsb2Nrcy1oaXQtdGVzdC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvZmxpcHBlZC1ibG9ja3Mt
aGl0LXRlc3QuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tdWx0
aWNvbC9mbGlwcGVkLWJsb2Nrcy1oaXQtdGVzdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw4
ICsxMSw4IEBACiA8L2Rpdj4KIDxwIGlkPSJyZXN1bHQiPlRoZSB0ZXN0IGRpZCBub3QgcnVuLjwv
cD4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICB2YXIgb2Zm
c2V0ID0gZG9jdW1lbnQuY2FyZXRSYW5nZUZyb21Qb2ludCgzOCwgMTgpLnN0YXJ0T2Zmc2V0Owog
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lclRleHQgPSBvZmZzZXQg
PT09IDI2ID8gIlBBU1MiIDogIkZBSUwiOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNv
bC9mbG9hdC10cnVuY2F0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9t
dWx0aWNvbC9mbG9hdC10cnVuY2F0aW9uLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvbXVsdGljb2wvZmxvYXQtdHJ1bmNhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC05NSw4ICs5NSw4IEBACiAgICAgICAgICAgICBmYWlsdXJlcysrCiAgICAgfQogCi0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGVzdHMiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgIH0KIApJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9nYXAtbm9uLW5lZ2F0aXZlLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9nYXAtbm9uLW5lZ2F0aXZlLmh0bWwJKHJldmlz
aW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvZ2FwLW5vbi1uZWdhdGl2
ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDggKzcsOCBAQAogPHAgaWQgPSAicmVzdWx0Ij48
L3A+CiA8ZGl2IGlkPSJ0YXJnZXQiIHN0eWxlPSItd2Via2l0LWNvbHVtbi1jb3VudDogNDsgLXdl
YmtpdC1jb2x1bW4tZ2FwOiAtMTBweDsiPjwvZGl2PgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIAogICAgIHZhciBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKICAgICB2YXIgY29sdW1uR2FwID0gc3R5bGUu
Z2V0UHJvcGVydHlWYWx1ZSgiLXdlYmtpdC1jb2x1bW4tZ2FwIik7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L211bHRpY29sL2hpdC10ZXN0LWFib3ZlLW9yLWJlbG93Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9oaXQtdGVzdC1hYm92ZS1vci1iZWxvdy5odG1s
CShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29sL2hpdC10ZXN0
LWFib3ZlLW9yLWJlbG93Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDggQEAKICAg
ICAgICAgICAgIGxvZyAoIkZBSUw6IENoYXJhY3RlciBhdCAiICsgeCArICIsICIgKyB5ICsgIiBp
cyAiICsgYWN0dWFsQ2hhcmFjdGVyICsgIi4gRXhwZWN0ZWQgIiArIGNoYXJhY3RlciArICIuIik7
CiAgICAgfQogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICB0ZXN0KDE1MCwg
MjUsICIxIik7CiAgICAgdGVzdCgzNTAsIDI1LCAiZCIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9tdWx0aWNvbC9oaXQtdGVzdC1mbG9hdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvbXVsdGljb2wvaGl0LXRlc3QtZmxvYXQuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9oaXQtdGVzdC1mbG9hdC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xOSw4ICsxOSw4IEBACiA8L2Rpdj4KIDxkaXYgaWQ9InJlc3VsdCI+RkFJTDogVGVz
dCBkaWQgbm90IHJ1bi48L2Rpdj4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiAKICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIp
OwogICAgIHZhciBoaXRFbGVtZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCgzNzAsIDI1
MCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29sL2h1Z2UtY29sdW1uLWNvdW50Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9odWdlLWNvbHVtbi1j
b3VudC5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29s
L2h1Z2UtY29sdW1uLWNvdW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsNiArNSw2IEBACiBU
aGlzIHRlc3Qgc2hvdWxkIG5vdCBjcmFzaC4KIDwvYm9keT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9odWdlLWNvbHVt
bi1nYXAtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29s
L2h1Z2UtY29sdW1uLWdhcC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L211bHRpY29sL2h1Z2UtY29sdW1uLWdhcC1jcmFzaC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC04LDggKzgsOCBAQCBib2R5IHsKIDwvc3R5bGU+CiAKIDxzY3JpcHQ+Ci0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDwvaGVhZD4KIApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9tdWx0aWNvbC9pbWFnZS1pbnNpZGUtbmVzdGVkLWJsb2Nrcy13aXRoLWJvcmRl
ci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvaW1hZ2UtaW5z
aWRlLW5lc3RlZC1ibG9ja3Mtd2l0aC1ib3JkZXIuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9pbWFnZS1pbnNpZGUtbmVzdGVkLWJsb2Nrcy13aXRo
LWJvcmRlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCw4IEBACiAgICAgICAgICAg
ICBmYWlsdXJlcysrCiAgICAgfQogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdHMiKS5zdHlsZS5kaXNwbGF5ID0g
Im5vbmUiOwogICAgIH0KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9pbmhlcml0
LWNvbHVtbi12YWx1ZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L211bHRp
Y29sL2luaGVyaXQtY29sdW1uLXZhbHVlcy5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L211bHRpY29sL2luaGVyaXQtY29sdW1uLXZhbHVlcy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw4ICszMSw4IEBACiAgICAgICAgIG91dHB1dCArPSAocmVzdWx0ID09IHZh
bHVlKSA/ICJcbiIgOiAoIiBleHBlY3RlZCAiICsgdmFsdWUgKyAiXG4iKTsKICAgICB9CiAKLSAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJwYXJlbnQiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgIH0KIApJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9pbml0aWFsLWNvbHVtbi12YWx1ZXMuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29sL2luaXRpYWwtY29sdW1uLXZhbHVl
cy5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29sL2lu
aXRpYWwtY29sdW1uLXZhbHVlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSw4IEBA
IFZlc3RpYnVsdW0gYSBzYXBpZW4uIFBoYXNlbGx1cyBhbnRlIGxhY3UKICAgICAgICAgb3V0cHV0
ICs9IChyZXN1bHQgPT0gdmFsdWUpID8gIlxuIiA6ICgiIGV4cGVjdGVkICIgKyB2YWx1ZSArICJc
biIpOwogICAgIH0KIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbHVtbnMtdGVzdCIpLnN0eWxlLmRpc3BsYXkgPSAi
bm9uZSI7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb3VudC10ZXN0Iikuc3R5
bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdh
cC10ZXN0Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
bXVsdGljb2wvbmVnYXRpdmVDb2x1bW5XaWR0aC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvbXVsdGljb2wvbmVnYXRpdmVDb2x1bW5XaWR0aC5odG1sCShyZXZpc2lvbiAxMjI1
NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29sL25lZ2F0aXZlQ29sdW1uV2lkdGguaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMyw2ICszLDYgQEAgVGhpcyB0ZXN0IHN1Y2NlZWRzIGlmIGl0
IGRvZXMgbm90IGNyYXNoLgogPHRhYmxlPjx0ZCBzdHlsZT0iLXdlYmtpdC1jb2x1bW5zOiAtOTk5
OXB4OyI+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9tdWx0aWNvbC9udWxsLWxhc3RGbG9hdC1pbi1yZW1vdmVGbG9hdGluZ09iamVj
dHNCZWxvdy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvbnVs
bC1sYXN0RmxvYXQtaW4tcmVtb3ZlRmxvYXRpbmdPYmplY3RzQmVsb3cuaHRtbAkocmV2aXNpb24g
MTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9udWxsLWxhc3RGbG9hdC1pbi1y
ZW1vdmVGbG9hdGluZ09iamVjdHNCZWxvdy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDggKzcs
OCBAQAogICAgIFRoZSB0ZXN0IHBhc3NlcyBpZiBpdCBkb2VzIG5vdCBjYXVzZSBhIGNyYXNoIG9y
IGFzc2VydGlvbiBmYWlsdXJlLgogPC9wPgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKIDwvc2NyaXB0PgogPGRpdiBzdHlsZT0iLXdlYmtpdC1jb2x1bW5zOiAyOyB3aWR0
aDogMjAwcHg7IGhlaWdodDogNDBweDsgZm9udC1mYW1pbHk6IGFoZW07IC13ZWJraXQtZm9udC1z
bW9vdGhpbmc6IG5vbmU7Ij4KICAgICA8ZGl2IHN0eWxlPSJoZWlnaHQ6IDEycHg7Ij48L2Rpdj4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvcGFnaW5hdGVkLWxheWVyLWNyYXNoLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9wYWdpbmF0ZWQtbGF5
ZXItY3Jhc2guaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tdWx0
aWNvbC9wYWdpbmF0ZWQtbGF5ZXItY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiAr
MjYsNiBAQAogICAgIDwvZGl2PgogPC9kaXY+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29sL3Jl
bmRlcmVyLXBvc2l0aW9uZWQtYXNzZXJ0LWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9tdWx0aWNvbC9yZW5kZXJlci1wb3NpdGlvbmVkLWFzc2VydC1jcmFzaC5odG1s
CShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29sL3JlbmRlcmVy
LXBvc2l0aW9uZWQtYXNzZXJ0LWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3
IEBACiA8aHRtbD4NCiAgICAgPHNjcmlwdD4NCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpDQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOw0KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQ0KKyAgICAgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOw0KICAgICA8L3NjcmlwdD4NCiAgICAgPHN0eWxlPg0KICAgICAg
ICAgLmJveA0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvemVyb0NvbHVtbkNvdW50
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC96ZXJvQ29sdW1u
Q291bnQuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNv
bC96ZXJvQ29sdW1uQ291bnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw2ICszLDYgQEAgVGhp
cyB0ZXN0IHN1Y2NlZWRzIGlmIGl0IGRvZXMgbm90IGNyYXNoLgogPGgyIHN0eWxlPSItd2Via2l0
LWNvbHVtbi1jb3VudDogMDsiPgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvc3Bhbi9jbG9uZS1iZWZvcmUtYWZ0ZXIt
Y29udGVudC1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbXVsdGlj
b2wvc3Bhbi9jbG9uZS1iZWZvcmUtYWZ0ZXItY29udGVudC1jcmFzaC5odG1sCShyZXZpc2lvbiAx
MjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29sL3NwYW4vY2xvbmUtYmVmb3JlLWFm
dGVyLWNvbnRlbnQtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAKICAg
ICAgICN0ZXN0NCB7IC13ZWJraXQtY29sdW1uLXNwYW46IGFsbDsgfQogICAgIDwvc3R5bGU+CiAg
ICAgPHNjcmlwdD4KLQkgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0JICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCSAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorCSAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgZnVuY3Rpb24gcnVu
VGVzdCgpewogICAgICAgICB0ZXN0MSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwog
ICAgICAgICB0ZXN0MS5zZXRBdHRyaWJ1dGUoJ2lkJywgJ3Rlc3QxJyk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L211bHRpY29sL3NwYW4vZG91YmxlLW1lcmdlLWFub255bW91cy1ibG9jay1jcmFz
aC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvc3Bhbi9kb3Vi
bGUtbWVyZ2UtYW5vbnltb3VzLWJsb2NrLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvc3Bhbi9kb3VibGUtbWVyZ2UtYW5vbnltb3VzLWJs
b2NrLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8aHRtbD4NCiAg
ICAgPGhlYWQ+DQogICAgICAgICA8c2NyaXB0Pg0KLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpDQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsNCisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpDQorICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOw0KICAgICAgICAgPC9zY3JpcHQ+
DQogICAgIDwvaGVhZD4NCiAgICAgPHN0eWxlPg0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbXVs
dGljb2wvc3Bhbi9lbXB0eS1hbm9ueW1vdXMtYmxvY2stc3BsaXQtY3Jhc2guaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29sL3NwYW4vZW1wdHktYW5vbnltb3VzLWJs
b2NrLXNwbGl0LWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvbXVsdGljb2wvc3Bhbi9lbXB0eS1hbm9ueW1vdXMtYmxvY2stc3BsaXQtY3Jhc2guaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAKICN0ZXN0MyB7IGNvbnRlbnQ6IGNvdW50ZXIo
Yyk7IC13ZWJraXQtY29sdW1uLXNwYW46IGFsbDsgfQ0KIDwvc3R5bGU+DQogPHNjcmlwdD4NCi1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQ0KLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7DQoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQ0KKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsNCiANCiBvbmxvYWQgPSBmdW5jdGlvbigpIHsNCiAgICAgdGVzdDAgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsNCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L211
bHRpY29sL3NwYW4vcG9zaXRpb25lZC1jaGlsZC1ub3QtcmVtb3ZlZC1jcmFzaC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvc3Bhbi9wb3NpdGlvbmVkLWNoaWxk
LW5vdC1yZW1vdmVkLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvbXVsdGljb2wvc3Bhbi9wb3NpdGlvbmVkLWNoaWxkLW5vdC1yZW1vdmVkLWNyYXNoLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTksOCArOSw4IEBAIFRlc3QgcGFzc2VzIGlmIGl0IGRvZXMg
bm90IGNyYXNoLgogLmZsZXhib3gxIHsgZGlzcGxheTogLXdlYmtpdC1mbGV4Ym94OyBwYWRkaW5n
LXJpZ2h0OiAxMHB4OyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlM2QoMCwgMSwgMCwgOTBkZWcp
OyB9CiA8L3N0eWxlPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiBydW5UZXN0
KCkgewogICAgIGNhcHRpb24xID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FwdGlvbicpOwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9zcGFuL3Bvc2l0aW9uZWQtb2JqZWN0cy1u
b3QtcmVtb3ZlZC1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbXVs
dGljb2wvc3Bhbi9wb3NpdGlvbmVkLW9iamVjdHMtbm90LXJlbW92ZWQtY3Jhc2guaHRtbAkocmV2
aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9zcGFuL3Bvc2l0aW9u
ZWQtb2JqZWN0cy1ub3QtcmVtb3ZlZC1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw4
ICsxMiw4IEBACiAuYzE6Zmlyc3QtbGV0dGVyIHsgY29udGVudDogIiI7IH0KIDwvc3R5bGU+CiA8
c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIG9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgIHRlc3Qw
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L211bHRpY29sL3NwYW4vcmVtb3ZhbC1vZi1tdWx0aWNvbC1zcGFuLWNyYXNoLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9zcGFuL3JlbW92YWwtb2YtbXVsdGlj
b2wtc3Bhbi1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L211bHRpY29sL3NwYW4vcmVtb3ZhbC1vZi1tdWx0aWNvbC1zcGFuLWNyYXNoLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTgsMTQgKzgsMTQgQEAgYm9keSB7IC13ZWJraXQtY29sdW1uLXdpZHRoOiAw
OyB9CiAgICAgZnVuY3Rpb24gY2xlYXIoKSB7CiAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxl
bWVudC5yZW1vdmVDaGlsZChkb2N1bWVudC5ib2R5KTsKICAgICAgICAgZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50LmlubmVySFRNTD0nUEFTUywgaWYgbm8gZXhjZXB0aW9uIG9yIGNyYXNoJzsKLSAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9
CiAgICAgfQogICAgIHNldFRpbWVvdXQoImNsZWFyKCk7IiwgMCk7Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIH0KIDwvc2Ny
aXB0PgogPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29sL3NwYW4vcnVuaW4t
Y29udGludWF0aW9uLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9t
dWx0aWNvbC9zcGFuL3J1bmluLWNvbnRpbnVhdGlvbi1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjI1
NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29sL3NwYW4vcnVuaW4tY29udGludWF0aW9u
LWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsOCArOCw4IEBACiAucnVuaW4geyBkaXNw
bGF5OiBydW4taW47IH0KIDwvc3R5bGU+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGRvY3Vt
ZW50LmJvZHkub2Zmc2V0VG9wOwogZGl2MSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9zcGFuL3NwbGl0LWZsb3ctYW5vbnlt
b3VzLXdyYXBwZXItY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L211
bHRpY29sL3NwYW4vc3BsaXQtZmxvdy1hbm9ueW1vdXMtd3JhcHBlci1jcmFzaC5odG1sCShyZXZp
c2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29sL3NwYW4vc3BsaXQtZmxv
dy1hbm9ueW1vdXMtd3JhcHBlci1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYs
OCBAQCBUZXN0IHBhc3NlcyBpZiBpdCBkb2VzIGNyYXNoLg0KIC5kMSB7IC13ZWJraXQtY29sdW1u
LXNwYW46IGFsbDsgfQ0KIDwvc3R5bGU+DQogPHNjcmlwdD4NCi1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQ0KLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7DQor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQ0KKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsNCiAN
CiBmdW5jdGlvbiBydW5UZXN0KCkgew0KIGRpdjEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsNCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29sL3NwYW4vc3BsaXQtaW5saW5l
LXdyb25nLXBvc3QtYmxvY2stY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L211bHRpY29sL3NwYW4vc3BsaXQtaW5saW5lLXdyb25nLXBvc3QtYmxvY2stY3Jhc2guaHRt
bAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9zcGFuL3Nw
bGl0LWlubGluZS13cm9uZy1wb3N0LWJsb2NrLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsOCArMSw4IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBm
dW5jdGlvbiBydW5UZXN0KCkgewogICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvc3Bhbi90YWJs
ZS1tdWx0aS1jb2x1bW4tY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L211bHRpY29sL3NwYW4vdGFibGUtbXVsdGktY29sdW1uLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEy
MjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvc3Bhbi90YWJsZS1tdWx0aS1jb2x1
bW4tY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAgVGVzdCBwYXNzZXMg
aWYgaXQgZG9lcyBub3QgY3Jhc2guCiAudGFibGVfY29udGFpbmVyIHsgLXdlYmtpdC1jb2x1bW4t
Y291bnQ6IDI7IH0KIDwvc3R5bGU+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGRvY3VtZW50
LmJvZHkub2Zmc2V0VG9wOwogdGFibGVfc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Rh
YmxlJyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29sL3NwYW4vdGV4dGJveC1ub3Qt
cmVtb3ZlZC1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbXVsdGlj
b2wvc3Bhbi90ZXh0Ym94LW5vdC1yZW1vdmVkLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvc3Bhbi90ZXh0Ym94LW5vdC1yZW1vdmVkLWNy
YXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDggKzEyLDggQEAKIH0KIDwvc3R5bGU+CiA8
c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIGNyYXNoKCkgewogICAgIHRlc3QxID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9t
dWx0aWNvbC9zcGFuL3VwZGF0ZS1hZnRlci1jb250ZW50LWJlZm9yZS1jaGlsZC1jcmFzaC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvc3Bhbi91cGRhdGUtYWZ0
ZXItY29udGVudC1iZWZvcmUtY2hpbGQtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9zcGFuL3VwZGF0ZS1hZnRlci1jb250ZW50LWJlZm9y
ZS1jaGlsZC1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDggKzgsOCBAQAogI3RhYmxl
IHsgZmxvYXQ6IHJpZ2h0OyB9CiA8L3N0eWxlPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBv
bmxvYWQgPSBmdW5jdGlvbigpIHsKICAgICBjb2x1bW5Db250YWluZXIgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvdmVydGlj
YWwtbHIvYnJlYWstcHJvcGVydGllcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvbXVsdGljb2wvdmVydGljYWwtbHIvYnJlYWstcHJvcGVydGllcy5odG1sCShyZXZpc2lvbiAx
MjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29sL3ZlcnRpY2FsLWxyL2JyZWFrLXBy
b3BlcnRpZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTQsOCArMTQsOCBAQAogPC9kaXY+CiA8
cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiAKICAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKICAgICB7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L211bHRpY29sL3ZlcnRpY2FsLWxyL2Zsb2F0LXRydW5jYXRpb24uaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29sL3ZlcnRpY2FsLWxyL2Zsb2F0LXRy
dW5jYXRpb24uaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tdWx0
aWNvbC92ZXJ0aWNhbC1sci9mbG9hdC10cnVuY2F0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTk0LDggKzk0LDggQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RzIikuc3R5
bGUuZGlzcGxheSA9ICJub25lIjsKICAgICB9CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbXVs
dGljb2wvdmVydGljYWwtbHIvZ2FwLW5vbi1uZWdhdGl2ZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvdmVydGljYWwtbHIvZ2FwLW5vbi1uZWdhdGl2ZS5odG1s
CShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29sL3ZlcnRpY2Fs
LWxyL2dhcC1ub24tbmVnYXRpdmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw4ICs4LDggQEAK
IDxwIGlkID0gInJlc3VsdCI+PC9wPgogPGRpdiBpZD0idGFyZ2V0IiBzdHlsZT0iLXdlYmtpdC1j
b2x1bW4tY291bnQ6IDQ7IC13ZWJraXQtY29sdW1uLWdhcDogLTEwcHg7Ij48L2Rpdj4KIDxzY3Jp
cHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICB2YXIgc3R5bGUgPSBnZXRD
b21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CiAgICAgdmFy
IGNvbHVtbkdhcCA9IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoIi13ZWJraXQtY29sdW1uLWdhcCIp
OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC92ZXJ0aWNhbC1sci9pbWFnZS1pbnNp
ZGUtbmVzdGVkLWJsb2Nrcy13aXRoLWJvcmRlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvbXVsdGljb2wvdmVydGljYWwtbHIvaW1hZ2UtaW5zaWRlLW5lc3RlZC1ibG9ja3Mt
d2l0aC1ib3JkZXIuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9t
dWx0aWNvbC92ZXJ0aWNhbC1sci9pbWFnZS1pbnNpZGUtbmVzdGVkLWJsb2Nrcy13aXRoLWJvcmRl
ci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCw4IEBACiAgICAgICAgICAgICBmYWls
dXJlcysrCiAgICAgfQogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdHMiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUi
OwogICAgIH0KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC92ZXJ0aWNhbC1ybC9i
cmVhay1wcm9wZXJ0aWVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tdWx0
aWNvbC92ZXJ0aWNhbC1ybC9icmVhay1wcm9wZXJ0aWVzLmh0bWwJKHJldmlzaW9uIDEyMjU1MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvdmVydGljYWwtcmwvYnJlYWstcHJvcGVydGll
cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw4ICsxNyw4IEBACiA8L2Rpdj4KIDxwcmUgaWQ9
ImNvbnNvbGUiPjwvcHJlPgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
IAogICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQogICAgIHsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvbXVsdGljb2wvdmVydGljYWwtcmwvZmxvYXQtdHJ1bmNhdGlvbi5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvdmVydGljYWwtcmwvZmxvYXQtdHJ1bmNhdGlv
bi5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29sL3Zl
cnRpY2FsLXJsL2Zsb2F0LXRydW5jYXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOTcsOCAr
OTcsOCBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdHMiKS5zdHlsZS5kaXNw
bGF5ID0gIm5vbmUiOwogICAgIH0KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC92
ZXJ0aWNhbC1ybC9nYXAtbm9uLW5lZ2F0aXZlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9tdWx0aWNvbC92ZXJ0aWNhbC1ybC9nYXAtbm9uLW5lZ2F0aXZlLmh0bWwJKHJldmlz
aW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvdmVydGljYWwtcmwvZ2Fw
LW5vbi1uZWdhdGl2ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDggKzgsOCBAQAogPHAgaWQg
PSAicmVzdWx0Ij48L3A+CiA8ZGl2IGlkPSJ0YXJnZXQiIHN0eWxlPSItd2Via2l0LWNvbHVtbi1j
b3VudDogNDsgLXdlYmtpdC1jb2x1bW4tZ2FwOiAtMTBweDsiPjwvZGl2PgogPHNjcmlwdD4KLSAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHZhciBzdHlsZSA9IGdldENvbXB1dGVk
U3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKICAgICB2YXIgY29sdW1u
R2FwID0gc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgiLXdlYmtpdC1jb2x1bW4tZ2FwIik7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29sL3ZlcnRpY2FsLXJsL2ltYWdlLWluc2lkZS1uZXN0
ZWQtYmxvY2tzLXdpdGgtYm9yZGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9tdWx0aWNvbC92ZXJ0aWNhbC1ybC9pbWFnZS1pbnNpZGUtbmVzdGVkLWJsb2Nrcy13aXRoLWJv
cmRlci5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29s
L3ZlcnRpY2FsLXJsL2ltYWdlLWluc2lkZS1uZXN0ZWQtYmxvY2tzLXdpdGgtYm9yZGVyLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDggQEAKICAgICAgICAgfQogICAgIH0KIAotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRlc3RzIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICB9CiAKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vZW5kLW9mLXRhc2stZGVsaXZlcnkuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2VuZC1vZi10YXNrLWRlbGl2ZXJ5Lmh0
bWwJKHJldmlzaW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vZW5kLW9m
LXRhc2stZGVsaXZlcnkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw5ICs0LDkgQEAKIDwvb2w+
CiA8cD5UaGVuIGNsaWNrIGhlcmU8L3A+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiAKICAgICB2YXIg
bGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ29sJyk7CkBAIC0xNiw4ICsxNiw4IEBACiAg
ICAgb2JzZXJ2ZXIub2JzZXJ2ZShsaXN0LCB7Y2hpbGRMaXN0OiB0cnVlfSk7CiAgICAgbGlzdC5h
ZGRFdmVudExpc3RlbmVyKCdibHVyJywgZnVuY3Rpb24oKSB7CiAgICAgICAgIGRvY3VtZW50LmJv
ZHkuaW5uZXJIVE1MID0gb2JzZXJ2ZXJSdW5zID09IDEgPyAnUEFTU0VEJyA6ICdGQUlMRUQnOwot
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9KTsKICAg
ICBsaXN0LmZvY3VzKCk7CiAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9pbmxpbmUtZXZlbnQtbGlzdGVuZXIuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2lubGluZS1ldmVudC1saXN0ZW5lci5o
dG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2lubGlu
ZS1ldmVudC1saXN0ZW5lci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICsxLDExIEBACiA8
IURPQ1RZUEUgaHRtbD4KLTxvbCBjb250ZW50ZWRpdGFibGUgb25pbnB1dD0iZG9jdW1lbnQuYm9k
eS5pbm5lckhUTUwgPSBvYnNlcnZlclJhbiA/ICdGQUlMRUQnIDogJ1BBU1NFRCc7IGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KSI+Cis8b2wgY29udGVudGVkaXRhYmxlIG9uaW5wdXQ9ImRvY3VtZW50LmJvZHkuaW5uZXJIVE1M
ID0gb2JzZXJ2ZXJSYW4gPyAnRkFJTEVEJyA6ICdQQVNTRUQnOyBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpIj4KICAgICA8bGk+UHJlc3MgZW50ZXIKIDwvb2w+
CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKICAgICB9CiAKICAgICB2YXIgbGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJ29sJyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL211dGF0aW9uLWNh
bGxiYWNrLW5vbi1lbGVtZW50LWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9tdXRhdGlvbi9tdXRhdGlvbi1jYWxsYmFjay1ub24tZWxlbWVudC1jcmFzaC5odG1sCShy
ZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL211dGF0aW9uLWNh
bGxiYWNrLW5vbi1lbGVtZW50LWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4
IEBACiA8aHRtbD4KIDxib2R5PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiBt
dXRhdGlvbkNhbGxiYWNrKG11dGF0aW9ucywgb2JzZXJ2ZXIpIHsKICAgICBtdXRhdGlvbnNbMF0u
YWRkZWROb2Rlc1stMV07CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0
L2xvYWRlci9jcmVhdGUtdmlldy10YXJnZXQtYmxhbmsuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2xvYWRlci9jcmVhdGUtdmlldy10YXJnZXQt
YmxhbmsuaHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vZmFzdC9sb2FkZXIvY3JlYXRlLXZpZXctdGFyZ2V0LWJsYW5rLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTIgKzEsMTIgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ3JlYXRlVmlldygpOwot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5kb3dzKCk7Ci0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuc2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKCk7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5k
dW1wQ3JlYXRlVmlldygpOworICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKKyAg
ICB0ZXN0UnVubmVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSgpOworICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiBydW5UZXN0KCkgewpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9sb2FkZXIvcmVzb3VyY2Vz
L2RvbmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9m
YXN0L2xvYWRlci9yZXNvdXJjZXMvZG9uZS5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2xvYWRlci9yZXNvdXJjZXMvZG9uZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwog
PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9sb2FkZXIvY3Jh
c2gtZGlzcGxheS1sb2NhbC1kaXJlY3RvcnkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvZmFzdC9sb2FkZXIvY3Jhc2gtZGlzcGxheS1sb2NhbC1kaXJlY3Rvcnku
aHRtbAkocmV2aXNpb24gMTIyNTUxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3Qv
bG9hZGVyL2NyYXNoLWRpc3BsYXktbG9jYWwtZGlyZWN0b3J5Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTMsOCArMyw4IEBACiAgICAgPHRpdGxlPlRlc3QgY3Jhc2ggb24gZGlyZWN0b3J5IGRpc3Bs
YXk8L3RpdGxlPgogICAgIDxzY3JpcHQ+CiAgICAgICAgIGZ1bmN0aW9uIGRpcmVjdG9yeVRlc3Qo
KSB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKIAogICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZXN1bHQiKTsKIApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvbG9h
ZGVyL2ZpbGUtdXJsLW1pbWV0eXBlcy0yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2Zhc3QvbG9hZGVyL2ZpbGUtdXJsLW1pbWV0eXBlcy0yLmh0bWwJKHJldmlz
aW9uIDEyMjU1MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2xvYWRlci9maWxl
LXVybC1taW1ldHlwZXMtMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDEwICsyLDEwIEBACiA8
aGVhZD4KIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMoKTsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBSZXNvdXJjZVJlc3Bv
bnNlTUlNRVR5cGVzKCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIHZh
ciB0ZXN0SW1hZ2U7CkBAIC0xNTIsOCArMTUyLDggQEAgZnVuY3Rpb24gaW1hZ2VMb2FkZWQoKQog
CiBmdW5jdGlvbiBmaW5pc2goKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQog
CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2xvYWRlci9m
aWxlLXVybC1taW1ldHlwZXMtMy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9mYXN0L2xvYWRlci9maWxlLXVybC1taW1ldHlwZXMtMy5odG1sCShyZXZpc2lvbiAx
MjI1NTEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9sb2FkZXIvZmlsZS11cmwt
bWltZXR5cGVzLTMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiwxMCArMiwxMCBAQAogPGhlYWQ+
CiA8c2NyaXB0PgogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wUmVzb3VyY2VSZXNwb25zZU1J
TUVUeXBlcygpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiB2YXIgdGVz
dEltYWdlOwpAQCAtMTM0LDggKzEzNCw4IEBAIGZ1bmN0aW9uIGltYWdlTG9hZGVkKCkKIAogZnVu
Y3Rpb24gZmluaXNoKCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogPC9z
Y3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9sb2FkZXIvZmlsZS11
cmwtbWltZXR5cGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvbG9hZGVyL2ZpbGUtdXJsLW1pbWV0eXBlcy5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisr
KyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9sb2FkZXIvZmlsZS11cmwtbWltZXR5cGVz
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsMTAgKzIsMTAgQEAKIDxoZWFkPgogPHNjcmlwdD4K
IAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wUmVzb3Vy
Y2VSZXNwb25zZU1JTUVUeXBlcygpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworICAgIHRlc3RSdW5uZXIuZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMoKTsK
KyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogdmFyIHRlc3RJbWFnZTsKQEAg
LTE1NCw4ICsxNTQsOCBAQCBmdW5jdGlvbiBpbWFnZUxvYWRlZCgpCiAKIGZ1bmN0aW9uIGZpbmlz
aCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIDwvc2NyaXB0PgpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvbG9hZGVyL25vbi1odG1sLWxvYWQtZXZl
bnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9sb2Fk
ZXIvbm9uLWh0bWwtbG9hZC1ldmVudC5odG1sCShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9sb2FkZXIvbm9uLWh0bWwtbG9hZC1ldmVudC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogPHNjcmlwdD4KLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKIAogICAgIGZ1bmN0aW9uIGZyYW1lTG9hZGVkKCkKICAgICB7CkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9sb2FkZXIvd2ViYXJjaGl2ZS1lbmNvZGluZy1y
ZXNwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFz
dC9sb2FkZXIvd2ViYXJjaGl2ZS1lbmNvZGluZy1yZXNwZWN0ZWQuaHRtbAkocmV2aXNpb24gMTIy
NTUxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvbG9hZGVyL3dlYmFyY2hpdmUt
ZW5jb2RpbmctcmVzcGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiA8
c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotCWxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLQlsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRG
cmFtZXNBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCXRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworCXRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CiB9CiA8L3Nj
cmlwdD4KIFRoZSB3ZWJhcmNoaXZlIGluIHRoaXMgaWZyYW1lIGlzIHV0Zi04IGVuY29kZWQgYW5k
IHdpbGwgb25seSBkaXNwbGF5IHByb3Blcmx5IGlmIHRoZSB3ZWJhcmNoaXZlJ3MgZW5jb2Rpbmcg
aXMgcmVzcGVjdGVkLjxicj4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvbG9h
ZGVyL3VzZXItc3R5bGVzaGVldC1xcmMtcGF0aC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL3F0L2Zhc3QvbG9hZGVyL3VzZXItc3R5bGVzaGVldC1xcmMtcGF0aC5odG1s
CShyZXZpc2lvbiAxMjI1NTEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2xvYWRl
ci91c2VyLXN0eWxlc2hlZXQtcXJjLXBhdGguaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiwxMCAr
MiwxMCBAQAogICAgIFRoaXMgdGVzdHMgdGhhdCBhIHFyYyBVUkwgaXMgcHJvcGVybHkgbG9hZGVk
IGFzIGEgdXNlciBzdHlsZSBzaGVldC4KIDwvcD4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFVzZXJTdHlsZVNoZWV0
RW5hYmxlZCh0cnVlKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0VXNlclN0eWxl
U2hlZXRMb2NhdGlvbigncXJjOi8vL3Jlc291cmNlcy91c2VyLmNzcycpOworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAg
ICAgdGVzdFJ1bm5lci5zZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQodHJ1ZSk7CisgICAgICAgIHRl
c3RSdW5uZXIuc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbigncXJjOi8vL3Jlc291cmNlcy91c2Vy
LmNzcycpOwogICAgICAgICAKICAgICAgICAgdmFyIGNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRl
ZFN0eWxlKGRvY3VtZW50LmJvZHkpLAogICAgICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZWRTdHls
ZS5mb250U2l6ZSA9PSAnNTBweCcgJiYgY29tcHV0ZWRTdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPT0g
J3JnYigyNTUsIDI1NSwgMCknLAo=
</data>
<flag name="review"
          id="161103"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>