<?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>89431</bug_id>
          
          <creation_ts>2012-06-18 23:34:34 -0700</creation_ts>
          <short_desc>Use testRunner instead of layoutTestController in fast/canvas, clip, compact, constructors, cookies, and css* tests</short_desc>
          <delta_ts>2012-06-19 00:23:24 -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>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>mitz</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>652091</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-18 23:34:34 -0700</bug_when>
    <thetext>Use testRunner instead of layoutTestController in fast/canvas, clip, compact, constructors, cookies, and css* tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652099</commentid>
    <comment_count>1</comment_count>
      <attachid>148262</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-18 23:39:06 -0700</bug_when>
    <thetext>Created attachment 148262
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652125</commentid>
    <comment_count>2</comment_count>
      <attachid>148262</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-06-19 00:03:22 -0700</bug_when>
    <thetext>Comment on attachment 148262
Patch

looks ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652138</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-19 00:23:24 -0700</bug_when>
    <thetext>Committed r120683: &lt;http://trac.webkit.org/changeset/120683&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148262</attachid>
            <date>2012-06-18 23:39:06 -0700</date>
            <delta_ts>2012-06-19 00:03:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89431-20120618233906.patch</filename>
            <type>text/plain</type>
            <size>360739</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEyMDY4MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDEyLTA2LTE4ICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSB0ZXN0UnVubmVyIGluc3RlYWQgb2YgbGF5
b3V0VGVzdENvbnRyb2xsZXIgaW4gZmFzdC9jYW52YXMsIGNsaXAsIGNvbXBhY3QsIGNvbnN0cnVj
dG9ycywgY29va2llcywgYW5kIGNzcyogdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NDMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy86CisgICAgICAgICogZmFzdC9jb25z
dHJ1Y3RvcnMvY29uc3RydWN0b3ItYXMtZnVuY3Rpb24tY3Jhc2guaHRtbDoKKyAgICAgICAgKiBm
YXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9hYnNvbHV0ZS1wb3NpdGlvbi1pbnNpZGUtaW5saW5l
Lmh0bWw6CisgICAgICAgICogZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvYWZ0ZXItd2l0aC1m
aXJzdC1sZXR0ZXItZmxvYXQtY3Jhc2guaHRtbDoKKyAgICAgICAgKiBmYXN0L2Nzcy1nZW5lcmF0
ZWQtY29udGVudC9hdHRyLW1pc3NpbmcuaHRtbDoKKyAgICAgICAgKiBmYXN0L2Nzcy1nZW5lcmF0
ZWQtY29udGVudC9iZWZvcmUtY29udGVudC13aXRoLWxpc3QtbWFya2VyLWluLWFub24tYmxvY2st
Y3Jhc2guaHRtbDoKKyAgICAgICAgKiBmYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9ibG9jay1h
ZnRlci5odG1sOgorICAgICAgICAqIGZhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L2RyYWctc3Rh
dGUuaHRtbDoKKyAgICAgICAgKiBmYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9lbXB0eS1jb250
ZW50LXdpdGgtZmxvYXQtY3Jhc2guaHRtbDoKKyAgICAgICAgKiBmYXN0L2Nzcy1nZW5lcmF0ZWQt
Y29udGVudC9maXJzdC1sZXR0ZXItbmV4dC1zaWJsaW5nLWNyYXNoLmh0bWw6CisgICAgICAgICog
ZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvZmlyc3QtbGV0dGVyLXRhYmxlLWNlbGwtZm9ybWF0
LWJsb2NrLWNyYXNoLmh0bWw6CisgICAgICAgICogZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQv
ZmxvYXQtZmlyc3QtbGV0dGVyLXNpYmxpbmdzLWNvbnZlcnQtdG8taW5saW5lLmh0bWw6CisgICAg
ICAgICogZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvZmxvYXRpbmctYmVmb3JlLWNvbnRlbnQt
d2l0aC1saXN0LW1hcmtlci1jcmFzaC5odG1sOgorICAgICAgICAqIGZhc3QvY3NzLWdlbmVyYXRl
ZC1jb250ZW50L2hpdC10ZXN0LWdlbmVyYXRlZC1jb250ZW50Lmh0bWw6CisgICAgICAgICogZmFz
dC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvaG92ZXItc3R5bGUtY2hhbmdlLmh0bWw6CisgICAgICAg
ICogZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvaW5saW5lLXNwbGl0dGluZy13aXRoLWFmdGVy
LWZsb2F0LWNyYXNoLmh0bWw6CisgICAgICAgICogZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQv
bWFsZm9ybWVkLXVybC5odG1sOgorICAgICAgICAqIGZhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50
L3Bvc2l0aW9uZWQtYmFja2dyb3VuZC1oaXQtdGVzdC1jcmFzaC5odG1sOgorICAgICAgICAqIGZh
c3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3Bvc2l0aW9uZWQtZGl2LXdpdGgtZmxvYXRpbmctYWZ0
ZXItY29udGVudC1jcmFzaC5odG1sOgorICAgICAgICAqIGZhc3QvY3NzLWdlbmVyYXRlZC1jb250
ZW50L3Bvc2l0aW9uZWQtZ2VuZXJhdGVkLWNvbnRlbnQtdW5kZXItcnVuLWluLWNyYXNoLmh0bWw6
CisgICAgICAgICogZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvcmVtb3ZlLWRpdi1mcm9tLWZs
ZXhpYmxlLWJveC13aXRoLWZsb2F0aW5nLWFmdGVyLWNvbnRlbnQtY3Jhc2guaHRtbDoKKyAgICAg
ICAgKiBmYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9yZXNldC1jb250ZW50LXRvLWluaXRpYWwu
aHRtbDoKKyAgICAgICAgKiBmYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9yZXNvdXJjZXMvcGFz
cy5odG1sOgorICAgICAgICAqIGZhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3Jlc291cmNlcy9w
b3NpdGlvbmVkLWRpdi13aXRoLWZsb2F0aW5nLWFmdGVyLWNvbnRlbnQtY3Jhc2gtZnJhbWUyLmh0
bWw6CisgICAgICAgICogZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvc3BlbGxpbmdUb29sVGlw
LWFzc2VydC5odG1sOgorICAgICAgICAqIGZhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3RhYmxl
LXJvdy1hZnRlci1uby1jcmFzaC5odG1sOgorICAgICAgICAqIGZhc3QvY3NzLWdlbmVyYXRlZC1j
b250ZW50L3RhYmxlLXdpdGgtc2Nyb2xsYmFyLWNvcm5lci5odG1sOgorICAgICAgICAqIGZhc3Qv
Y3NzLWdlbmVyYXRlZC1jb250ZW50L3RleHQtYmVmb3JlLXRhYmxlLWNvbC1jcmFzaC5odG1sOgor
ICAgICAgICAqIGZhc3QvY3NzLWdyaWQtbGF5b3V0L2Rpc3BsYXktZ3JpZC1zZXQtZ2V0Lmh0bWw6
CisgICAgICAgICogZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0LXNl
dC1tdWx0aXBsZS5odG1sOgorICAgICAgICAqIGZhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtY29s
dW1ucy1yb3dzLWdldC1zZXQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2Nzcy1ncmlkLWxheW91dC9n
cmlkLWl0ZW0tY29sdW1uLXJvdy1nZXQtc2V0Lmh0bWw6CisgICAgICAgICogZmFzdC9jc3MvOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2NhbnZhcy9jYW52YXMtZHJhdy14Ym0taW1hZ2Uu
aHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9mYXN0L2NhbnZhcy90b0RhdGFVUkwtanBlZy1h
bHBoYS5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL3F0L2Zhc3QvY2FudmFzL3RvRGF0YVVSTC1q
cGVnLXByaW1hcnljb2xvcnMuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9mYXN0L2NhbnZh
cy90b0RhdGFVUkwtanBlZy1xdWFsaXR5LWJhc2ljLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0v
cXQvZmFzdC9jYW52YXMvdG9EYXRhVVJMLWpwZWctcXVhbGl0eS1ub3RudW1iZXIuaHRtbDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9xdC9mYXN0L2NhbnZhcy90b0RhdGFVUkwtanBlZy1xdWFsaXR5LW91
dHNpZGVyYW5nZS5odG1sOgorCiAyMDEyLTA2LTE4ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNl
a0BnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBHVEsgZ2FyZGVuaW5nLCB1cGRhdGlu
ZyBiYXNlbGluZXMgYWZ0ZXIgcm9sbG91dHMgaW4gcjEyMDYyNy4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzLzJkLmJhY2tpbmdTdG9yZVBpeGVsUmF0aW8uaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy8yZC5iYWNraW5nU3RvcmVQaXhlbFJhdGlvLmh0bWwJ
KHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzLzJkLmJhY2tpbmdT
dG9yZVBpeGVsUmF0aW8uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSwyMCArNSwyMCBAQAogICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UgKyAiXG4iKSk7CiAgICAgfQogCi0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICB2YXIgY2FudmFzMSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgICAgICB2YXIgY29udGV4dDEgPSBjYW52YXMxLmdl
dENvbnRleHQoIjJkIik7CiAKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRCYWNraW5nU2NhbGVGYWN0
b3IoMiwgZnVuY3Rpb24oKSB7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgICB0ZXN0UnVubmVyLnNldEJhY2tpbmdTY2FsZUZhY3RvcigyLCBmdW5jdGlvbigpIHsK
ICAgICAgICAgICAgIHZhciBjYW52YXMyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFz
Iik7CiAgICAgICAgICAgICB2YXIgY29udGV4dDIgPSBjYW52YXMyLmdldENvbnRleHQoIjJkIik7
CiAKICAgICAgICAgICAgIGxvZyAoImNvbnRleHQxLndlYmtpdEJhY2tpbmdTdG9yZVBpeGVsUmF0
aW8gaXMgIiArIGNvbnRleHQxLndlYmtpdEJhY2tpbmdTdG9yZVBpeGVsUmF0aW8pOwogICAgICAg
ICAgICAgbG9nICgiY29udGV4dDIud2Via2l0QmFja2luZ1N0b3JlUGl4ZWxSYXRpbyBpcyAiICsg
Y29udGV4dDIud2Via2l0QmFja2luZ1N0b3JlUGl4ZWxSYXRpbyk7CiAKLSAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogICAgICAgICB9KTsKICAgICB9IGVsc2UgewogICAgICAgICBsb2cgKCJX
aGVuIG5vdCBydW4gaW5zaWRlIER1bXBSZW5kZXJUcmVlIG9yIFdlYktpdFRlc3RSdW5uZXIsIHRo
aXMgdGVzdCBqdXN0IHByaW50cyB0aGUgdmFsdWUgb2YiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvY2FudmFzLzJkLmZpbGxUZXh0LmdyYWRpZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvMmQuZmlsbFRleHQuZ3JhZGllbnQuaHRtbAkocmV2aXNpb24gMTIw
Njc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvMmQuZmlsbFRleHQuZ3JhZGllbnQuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMjEsOCArMjEsOCBAQCBmdW5jdGlvbiBkcmF3Q2FudmFzKGN0
eCkgewogICBjdHguZmlsbFRleHQoIkkiLCAtNSwgMTAwKTsKIH0KIAotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAK
IHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYycpOwogdmFyIGN0eCA9IGNh
bnZhcy5nZXRDb250ZXh0KCIyZCIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvMmQu
aW1hZ2VEYXRhSEQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy8y
ZC5pbWFnZURhdGFIRC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy8yZC5pbWFnZURhdGFIRC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBA
QAogPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CiA8c2NyaXB0PgotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAg
IGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQogICAgIHsKQEAgLTQ4LDExICs0OCwxMSBAQAogICAgICAg
ICAgICAgbG9nKCJGQUlMOiBQaXhlbCAiICsgaSArICIgaXMgbm90IGJsdWU6ICIgKyBmb3JtYXRD
b2xvcihyLCBnLCBiLCBhKSArICIuIik7CiAgICAgfQogCi0gICAgaWYgKCF3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgbG9n
KCJUaGlzIHRlc3QgcmVxdWlyZXMgV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVyVHJlZS4i
KTsKIAotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRCYWNraW5nU2NhbGVGYWN0b3IoMiwgZnVuY3Rpb24oKSB7Cisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5zZXRCYWNraW5n
U2NhbGVGYWN0b3IoMiwgZnVuY3Rpb24oKSB7CiAgICAgICAgIHZhciBjYW52YXMgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKICAgICAgICAgY2FudmFzLndpZHRoID0gODsKICAg
ICAgICAgY2FudmFzLmhlaWdodCA9IDg7CkBAIC0xMTMsNiArMTEzLDYgQEAKICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICBsb2coIkhpZ2gtRFBJIGNhbnZhcyBpcyBub3QgZW5hYmxlZC4iKTsK
IAotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0pOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy8yZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5ncmFkaWVudC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzLzJkLnRleHQuZHJhdy5maWxs
Lm1heFdpZHRoLmdyYWRpZW50Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzLzJkLnRleHQuZHJhdy5maWxsLm1heFdpZHRoLmdyYWRpZW50Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTQzLDEzICs0MywxMyBAQCBmdW5jdGlvbiBkb0RlZmVycmVkVGVzdCgp
IHsKICAgZWxzZQogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJI
VE1MID0gIlRFU1QgRkFJTEVEIjsKIAotICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCi1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKIH0KIAogdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjJyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy8yZC50ZXh0LmRyYXcuZmls
bC5tYXhXaWR0aC5uZWdhdGl2ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzLzJkLnRleHQuZHJhdy5maWxsLm1heFdpZHRoLm5lZ2F0aXZlLmh0bWwJKHJldmlzaW9u
IDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzLzJkLnRleHQuZHJhdy5maWxsLm1h
eFdpZHRoLm5lZ2F0aXZlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEzICszOCwxMyBAQCBm
dW5jdGlvbiBkb0RlZmVycmVkVGVzdCgpIHsKICAgZWxzZQogICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MID0gIlRFU1QgRkFJTEVEIjsKIAotICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogdmFyIGNhbnZh
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjJyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy8yZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC52ZXJ5TGFyZ2UuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy8yZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0
aC52ZXJ5TGFyZ2UuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvMmQudGV4dC5kcmF3LmZpbGwubWF4V2lkdGgudmVyeUxhcmdlLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDEzICszOCwxMyBAQCBmdW5jdGlvbiBkb0RlZmVycmVkVGVzdCgpIHsKICAg
ZWxzZQogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MID0g
IlRFU1QgRkFJTEVEIjsKIAotICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCi1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKIH0KIAogdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
Jyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy8yZC50ZXh0LmRyYXcuZmlsbC5tYXhX
aWR0aC52ZXJ5U21hbGwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy8yZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC52ZXJ5U21hbGwuaHRtbAkocmV2aXNpb24gMTIw
Njc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvMmQudGV4dC5kcmF3LmZpbGwubWF4V2lk
dGgudmVyeVNtYWxsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEzICszOCwxMyBAQCBmdW5j
dGlvbiBkb0RlZmVycmVkVGVzdCgpIHsKICAgZWxzZQogICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjb25zb2xlIikuaW5uZXJIVE1MID0gIlRFU1QgRkFJTEVEIjsKIAotICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogdmFyIGNhbnZhcyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjJyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9EcmF3SW1hZ2VTaW5nbGVQaXhlbFN0cmV0Y2guaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9EcmF3SW1hZ2VTaW5nbGVQaXhlbFN0cmV0Y2guaHRtbAkocmV2
aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvRHJhd0ltYWdlU2luZ2xl
UGl4ZWxTdHJldGNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksOSArOSw5IEBACiAgICAgICAg
IHZhciBpbWFnZSwgY3R4OwogCiAgICAgICAgIGZ1bmN0aW9uIGluaXQgKCkgewotICAgICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgICAgfQogCiAgICAgICAgICAgdmFyIGNhbnZh
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjIik7CkBAIC00Miw4ICs0Miw4IEBACiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmVzdWx0LmlubmVySFRNTCA9ICJGQUlMRUQi
OwogCi0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSAKLSAgICAg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIAorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gYXJlQWxsUm93c1VuaWZv
cm0oY3R4KSB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9hY2Nlc3MtemVyby1zaXpl
ZC1jYW52YXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9hY2Nl
c3MtemVyby1zaXplZC1jYW52YXMuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvYWNjZXNzLXplcm8tc2l6ZWQtY2FudmFzLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsOCArMSw4IEBACiBUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IGFjY2Vzc2luZyB0aGUg
Y29udGV4dCBvZiBhIHplcm8gc2l6ZWQgY2FudmFzIGRvZXMgbm90IGNyYXNoLgogPGNhbnZhcyBp
ZD0iY2FudmFzIiB3aWR0aD0iMCIgaGVpZ2h0PSIwIj48L2NhbnZhcz48YnIgLz4KIDxzY3JpcHQ+
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIAogdmFyIGNvbnRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y2FudmFzIikuZ2V0Q29udGV4dCgiMmQiKTsKIGNvbnRleHQuZmlsbFN0eWxlID0gImdyZWVuIjsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2FyYzM2MC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2FyYzM2MC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9hcmMzNjAuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
Miw4ICsyLDggQEAKIDxwPlRlc3QgY2FudmFzIGFyYygpIHN0YXJ0IC8gZW5kIHBvaW50cyB3aGVu
IHRoZSBhcmMgaXMgPj0gMzYwIGRlZ3JlZXMuIFRoZSByZXN1bHQgc2hvdWxkIGJlIGEgY2lyY2xl
IHdpdGggdHdvIGxpbmUgc2VnbWVudHMgY29ubmVjdGVkIHRvIHRoZSBsZWZ0IGhhbmQgc2lkZSwg
dG93YXJkcyB0aGUgdG9wIGxlZnQgYW5kIGJvdHRvbSBsZWZ0IGNvcm5lcnMuCiA8Y2FudmFzIGlk
PSJteWNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgogPHNjcmlwdD4K
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCh0cnVlKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAKIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnbXljYW52YXMnKTsKIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2FyYy1jcmFzaC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2FyYy1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2NzUp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9hcmMtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMjksOCArMjksOCBAQCBmdW5jdGlvbiBydW5UZXN0cygpIHsKICAgICBjb250ZXh0LmZp
bGxTdHlsZSA9ICcjMGYwJzsKICAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0
aCwgY2FudmFzLmhlaWdodCk7CiAgICAgZGVidWcoIlRlc3QgcGFzc2VkLiIpOwotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogfQogPC9zY3JpcHQ+CiA8dGl0bGU+Ym9ya2VkbmVzczwvdGl0
bGU+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtYXMtaW1hZ2UtaW5jcmVt
ZW50YWwtcmVwYWludC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L2NhbnZhcy1hcy1pbWFnZS1pbmNyZW1lbnRhbC1yZXBhaW50Lmh0bWwJKHJldmlzaW9uIDEyMDY3
NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1hcy1pbWFnZS1pbmNyZW1lbnRh
bC1yZXBhaW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDE4ICsxMCwxOCBAQAogICAgPC9z
dHlsZT4KICAKICAgPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiPgotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKICAgICB2YXIgY2FudmFzQ29udGV4dDsKICAg
ICBmdW5jdGlvbiBydW5SZXBhaW50VGVzdCgpCiAgICAgewogICAgICAgY2FudmFzQ29udGV4dCA9
IGRvY3VtZW50LmdldENTU0NhbnZhc0NvbnRleHQoIjJkIiwgInNxdWFyZXMiLCAzMDAsIDMwMCk7
Ci0gICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7Ci0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5k
aXNwbGF5KCk7CiAgICAgICAgIHJlcGFpbnRUZXN0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAg
ICAgICB9IGVsc2UgewogICAgICAgICBzZXRUaW1lb3V0KHJlcGFpbnRUZXN0LCAyMDAwKTsKICAg
ICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1iZWZvcmUtY3NzLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWJlZm9yZS1j
c3MuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2Fu
dmFzLWJlZm9yZS1jc3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw4ICs2LDggQEAKICAgICA8
cD5JZiB0aGUgY2FudmFzIGJlbG93IGlzIGJsYWNrLCB0aGVuIHdlIG1hbmFnZWQgdG8gZHJhdyBi
ZWZvcmUgbG9hZGluZyBzdHlsZXNoZWV0cy4gSG9vcmF5ITwvcD4KICAgICA8Y2FudmFzIGlkPSJt
eWNhbnZhcyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSIyMDAiPjwvY2FudmFzPgogICAgIDxzY3JpcHQg
dHlwZT0iYXBwbGljYXRpb24veC1qYXZhc2NyaXB0Ij4KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQodHJ1ZSk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKIAogICAgICAgICB2YXIgY2FudmFzID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm15Y2FudmFzIik7CiAgICAgICAgIGNhbnZhcy5nZXRDb250
ZXh0KCIyZCIpLmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtYmctbXVsdGlwbGUtcmVtb3ZhbC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1iZy1tdWx0
aXBsZS1yZW1vdmFsLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL2NhbnZhcy1iZy1tdWx0aXBsZS1yZW1vdmFsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTYgKzEsMTYgQEAKIDxodG1sPg0KIDxzY3JpcHQ+DQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgew0KLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7DQot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsNCitpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsNCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7DQorICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOw0KIH0NCiANCiB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKQ0K
IHsNCiAgICAgaWYgKGxvY2F0aW9uLmhhc2ggPT0gIiMyIikgew0KICAgICAgICAgZG9jdW1lbnQu
Ym9keS5pbm5lckhUTUwgPSAiUEFTU0VEOiBEdXBsaWNhdGUgd2Via2l0LWNhbnZhcyBzdHlsZXMg
cmVtb3ZlZCB3aXRob3V0IGNyYXNoLiI7DQotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQ0KLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsNCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikNCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsNCiAgICAgfSBlbHNlIHsNCiAgICAgICAgIGlmIChsb2NhdGlvbi5o
YXNoKQ0KICAgICAgICAgICAgIGxvY2F0aW9uLmhhc2ggPSAiIyIgKyAocGFyc2VJbnQobG9jYXRp
b24uaGFzaC5zbGljZSgxKSkgKyAxKS50b1N0cmluZygpOw0KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL2NhbnZhcy1jb21wb3NpdGUtYWxwaGEuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29tcG9zaXRlLWFscGhhLmh0bWwJKHJldmlzaW9u
IDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb21wb3NpdGUtYWxw
aGEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw5ICszLDkgQEAKICAgICA8dGl0bGU+QSBjYW52
YXMgZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uIHRlc3Qgd2l0aCBhbHBoYSBibGVuZGluZzwvdGl0
bGU+CiAgICAgPCEtLSBUaGlzIHRlc3Qgd2FzIGluc3BpcmVkIGJ5IGh0dHA6Ly9jYW52ZXgubGF6
eWlsbHVtaW5hdGkuY29tL21pc2MvY29tcG9zaXRleC5odG1sIC0tPgogICAgIDxzY3JpcHQgdHlw
ZT0iYXBwbGljYXRpb24veC1qYXZhc2NyaXB0Ij4KLSAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7Ci0gICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICB9CiAK
ICAgICAgIHZhciBjb21wb3NpdGVUeXBlcyA9IFsKQEAgLTQzMyw4ICs0MzMsOCBAQAogICAgICAg
ewogICAgICAgICAgIGRyYXdUYWJsZSh1c2VGaWxsUmVjdCk7CiAgICAgICAgICAgZHJhd1RhYmxl
KHVzZVBhdGhBbmRGaWxsKTsKLSAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKICAgICAgIH0KICAgICA8L3NjcmlwdD4KICAgICA8c3R5bGUgdHlwZT0i
dGV4dC9jc3MiPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbXBvc2l0
ZS1maWxsLXJlcGFpbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9jYW52YXMtY29tcG9zaXRlLWZpbGwtcmVwYWludC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29tcG9zaXRlLWZpbGwtcmVwYWludC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBAQAogICA8c2NyaXB0PgogICB2YXIgY29t
cG9zaXRlVHlwZXMgPSBbJ3NvdXJjZS1pbicsJ2NvcHknXTsKIAotICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1
ZSk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
dHJ1ZSk7CiAKICAgZm9yIChpID0gMDsgaSA8IGNvbXBvc2l0ZVR5cGVzLmxlbmd0aDsgaSsrKSB7
CiAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYW52YXMtJyArIGNv
bXBvc2l0ZVR5cGVzW2ldKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1j
b21wb3NpdGUtdHJhbnNmb3JtY2xpcC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL2NhbnZhcy1jb21wb3NpdGUtdHJhbnNmb3JtY2xpcC5odG1sCShyZXZpc2lvbiAx
MjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29tcG9zaXRlLXRyYW5z
Zm9ybWNsaXAuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw4ICs0LDggQEAKICAgICA8bWV0YSBu
YW1lPSJEQy5jcmVhdG9yIiBjb250ZW50PSJLYW1pZWwgTWFydGluZXQsIGh0dHA6Ly93d3cubWFy
dGluZXQubmwvIj4gCiAgICAgPG1ldGEgbmFtZT0iREMucHVibGlzaGVyIiBjb250ZW50PSJNb3pp
bGxhIERldmVsb3BlciBDZW50ZXIsIGh0dHA6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmciPiAKICAg
ICA8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCI+IAotICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLQkgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCh0cnVlKTsKKyAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKwkgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KHRydWUpOwogCiAgICAgICAvLyBUaGlzIHRlc3Qgc2hvdWxkIHNob3cg
YSB0YWJsZSBvZiBjYW52YXMgZWxlbWVudHMuIFRoZSBjYW52YXMgZWxlbWVudHMgaGF2ZSB0cmFu
c2Zvcm1zCiAgICAgICAvLyBhcHBsaWVkLCBhbmQgb250byB0aGUgYmFja2dyb3VuZCBhIGJsdWUg
c3F1YXJlIGlzIGRyYXduLCBlaXRoZXIgZnVsbHkgb3BhcXVlIG9yIHdpdGggc29tZQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbXBvc2l0ZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb21wb3NpdGUuaHRtbAkocmV2aXNp
b24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbXBvc2l0ZS5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQsOCBAQAogICAgIDxtZXRhIG5hbWU9IkRDLmNy
ZWF0b3IiIGNvbnRlbnQ9IkthbWllbCBNYXJ0aW5ldCwgaHR0cDovL3d3dy5tYXJ0aW5ldC5ubC8i
PgogICAgIDxtZXRhIG5hbWU9IkRDLnB1Ymxpc2hlciIgY29udGVudD0iTW96aWxsYSBEZXZlbG9w
ZXIgQ2VudGVyLCBodHRwOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnIj4KICAgICA8c2NyaXB0IHR5
cGU9ImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCI+Ci0gICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotCSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUp
OworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorCSAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQodHJ1ZSk7CiAKICAgICAgIHZhciBjb21wb3NpdGVUeXBlcyA9IFsKICAgICAgICAgJ3NvdXJj
ZS1vdmVyJywnc291cmNlLWluJywnc291cmNlLW91dCcsJ3NvdXJjZS1hdG9wJywKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1lbXB0eS1pbWFnZS1wYXR0ZXJuLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWVtcHR5LWltYWdlLXBh
dHRlcm4uaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
Y2FudmFzLWVtcHR5LWltYWdlLXBhdHRlcm4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsy
LDggQEAKIDx0aXRsZT5DYW52YXMgdGVzdDogZmlsbGluZyBhIHBhdHRlcm4gd2l0aCBhbiBlbXB0
eSBpbWFnZSBzaG91bGQgbm90IGNyYXNoLjwvdGl0bGU+CiA8Y2FudmFzIGlkPSJjYW52YXMiIGNs
YXNzPSJvdXRwdXQiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIj48cCBjbGFzcz0iZmFsbGJhY2si
PkZBSUwgKGZhbGxiYWNrIGNvbnRlbnQpPC9wPjwvY2FudmFzPgogPHNjcmlwdD4KLWlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCh0cnVlKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQodHJ1ZSk7CiAKIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzIikuZ2V0Q29udGV4dCgiMmQiKTsKIGNhbnZhcy5maWxsU3R5bGUgPSBjYW52YXMuY3JlYXRl
UGF0dGVybihuZXcgSW1hZ2UsICJyZXBlYXQiKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvY2FudmFzLWdldEltYWdlRGF0YS1sYXJnZS1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1nZXRJbWFnZURhdGEtbGFyZ2UtY3Jhc2guaHRt
bAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWdl
dEltYWdlRGF0YS1sYXJnZS1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBA
QAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoZmFsc2UpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dChmYWxzZSk7CiAKIHZh
ciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKIGNhbnZhcy5nZXRD
b250ZXh0KCIyZCIpLmdldEltYWdlRGF0YSgxMCwgMHhmZmZmZmZmZiwgMjE0NzQ4MzY0NywxMCk7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtZ2V0SW1hZ2VEYXRhLWxhcmdl
Tm9uaW50ZWdyYWxEaW1lbnNpb25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvY2FudmFzLWdldEltYWdlRGF0YS1sYXJnZU5vbmludGVncmFsRGltZW5zaW9ucy5o
dG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMt
Z2V0SW1hZ2VEYXRhLWxhcmdlTm9uaW50ZWdyYWxEaW1lbnNpb25zLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsOCArMSw4IEBACiA8aHRtbD4KIFBBU1MhCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHdpbmRvdy50ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIAogdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNh
bnZhcyIpOwogdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWdldEltYWdlRGF0YS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1nZXRJbWFnZURhdGEuaHRtbAkocmV2aXNp
b24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWdldEltYWdlRGF0
YS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogVGhpcyB0ZXN0IGVuc3VyZXMg
dGhhdCBnZXRJbWFnZURhdGEgd29ya3MgY29ycmVjdGx5LgogPGRpdiBpZD0ibG9nIj48L2Rpdj4K
IDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImNhbnZhcyIpOwogY2FudmFzLndpZHRoID0gMjAwOwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvY2FudmFzLWhpZGVzLWZhbGxiYWNrLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWhpZGVzLWZhbGxiYWNrLmh0bWwJKHJldmlzaW9u
IDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1oaWRlcy1mYWxsYmFj
ay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogPGhlYWQ+CiA8c2NyaXB0Pgot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvY2FudmFzLWltYWdlU21vb3RoaW5nRW5hYmxlZC1wYXR0ZXJucy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pbWFnZVNtb290
aGluZ0VuYWJsZWQtcGF0dGVybnMuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvY2FudmFzLWltYWdlU21vb3RoaW5nRW5hYmxlZC1wYXR0ZXJucy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC02Miw4ICs2Miw4IEBACiAgICAgfQogCiAgICAgZnVuY3Rpb24g
ZHJhdygpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0
cnVlKTsKIAogICAgICAgICB2YXIgaW1hZ2UgPSBjcmVhdGVJbWFnZSgpOwogICAgICAgICBkcmF3
RmlsbFJlY3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Vuc21vb3RoZWRGaWxsUmVjdCcpLCBp
bWFnZSwKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pbmNyZW1lbnRhbC1y
ZXBhaW50LTIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52
YXMtaW5jcmVtZW50YWwtcmVwYWludC0yLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pbmNyZW1lbnRhbC1yZXBhaW50LTIuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTIsMTggKzEyLDE4IEBACiAgIDwvc3R5bGU+CiAgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CiAKLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KHRydWUpOwotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KHRydWUpOworICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogCiAgICAg
ZnVuY3Rpb24gcnVuUmVwYWludFRlc3QoKQogICAgIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAg
ICAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwotICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZGlzcGxheSgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7
CiAgICAgICAgICAgICByZXBhaW50VGVzdCgpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzZXRUaW1lb3V0KHJlcGFpbnRUZXN0LCAw
KTsKICAgICAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWluY3Jl
bWVudGFsLXJlcGFpbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9jYW52YXMtaW5jcmVtZW50YWwtcmVwYWludC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtaW5jcmVtZW50YWwtcmVwYWludC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xMiwxOSArMTIsMTkgQEAKICAgPC9zdHlsZT4KICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KIAotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQodHJ1ZSk7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQodHJ1ZSk7CisgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiAKICAg
ICB2YXIgYXBwbGVJbWFnZTsKICAgICBmdW5jdGlvbiBydW5SZXBhaW50VGVzdCgpCiAgICAgewot
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7
Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kaXNwbGF5KCk7CisgICAgICAgICAg
ICB0ZXN0UnVubmVyLmRpc3BsYXkoKTsKICAgICAgICAgICAgIHJlcGFpbnRUZXN0KCk7Ci0gICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHNl
dFRpbWVvdXQocmVwYWludFRlc3QsIDApOwogICAgICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9jYW52YXMtbGFyZ2VkcmF3cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1sYXJnZWRyYXdzLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkK
KysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1sYXJnZWRyYXdzLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8aHRtbD4KICAgPGJvZHk+CiAgICAgPHNjcmlwdD4K
LSAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICBmdW5jdGlvbiBu
ZXdDYW52YXNDb250ZXh0KCkgewogICAgICAgICBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJjYW52YXMiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1wYXRo
LXdpdGgtaW5mLW5hbi1kaW1lbnNpb25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvY2FudmFzLXBhdGgtd2l0aC1pbmYtbmFuLWRpbWVuc2lvbnMuaHRtbAkocmV2
aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXBhdGgtd2l0
aC1pbmYtbmFuLWRpbWVuc2lvbnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAK
IDxjYW52YXMgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIGlkPSJjYW52YXMiPkZBSUw6IG5vIGNh
bnZhcyBzdXBwb3J0PC9jYW52YXM+CiA8ZGl2IGlkPSJsb2ciPjwvZGl2PgogPHNjcmlwdD4KLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogCiB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZh
cyIpLmdldENvbnRleHQoIjJkIik7CiAvL2ZvdXIgdGVzdHMKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL2NhbnZhcy1yZXNpemUtYWZ0ZXItcGFpbnQtd2l0aG91dC1sYXlvdXQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtcmVzaXplLWFmdGVy
LXBhaW50LXdpdGhvdXQtbGF5b3V0Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1yZXNpemUtYWZ0ZXItcGFpbnQtd2l0aG91dC1sYXlvdXQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTQsOCArMTQsOCBAQAogICAgIDwvc3R5bGU+CiAgICAg
PHNjcmlwdCBzcmM9InJlc291cmNlcy9yZXBhaW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
PgotICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogCiAgICAgICBmdW5j
dGlvbiBydW5UZXN0KCkgewogICAgICAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NhbnZhcycpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXJl
c2l6ZS1hZnRlci1wYWludC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL2NhbnZhcy1yZXNpemUtYWZ0ZXItcGFpbnQuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXJlc2l6ZS1hZnRlci1wYWludC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBAQAogPGNhbnZhcyBpZD0iYyIgd2lkdGg9MTAwIGhl
aWdodD0xMDA+PC9jYW52YXM+CiA8IS0tIFRlc3RzIHRoYXQgcmVzaXppbmcgYSBjYW52YXMgdG8g
dmVyeSBsYXJnZSBkaW1lbnNpb25zIGFmdGVyIGEgY29tcG9zaXRlIGRvZXMgbm90IGNyYXNoIC0t
PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogdmFyIGMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiYyIpOwogCiBmdW5jdGlvbiByZXNpemUoKSB7CkBAIC0xMSw4ICsxMSw4IEBAIGZ1bmN0aW9u
IHJlc2l6ZSgpIHsKICAgICBjLmhlaWdodCA9ICIxMDAwMCI7CiB9CiAKLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kaXNwbGF5KCk7
IC8vIEZvcmNlIGEgY29tcG9zaXRlIGF0IG5vcm1hbCB3aWR0aC9oZWlnaHQgdG8gZW5zdXJlIHdl
IGhhdmUgYSBjb21wb3NpdGluZyBsYXllciBmb3IgdGhlIGNhbnZhcy4KK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOyAvLyBGb3JjZSBhIGNvbXBvc2l0
ZSBhdCBub3JtYWwgd2lkdGgvaGVpZ2h0IHRvIGVuc3VyZSB3ZSBoYXZlIGEgY29tcG9zaXRpbmcg
bGF5ZXIgZm9yIHRoZSBjYW52YXMuCiAgICAgcmVzaXplKCk7CiB9IGVsc2UKICAgICB3aW5kb3cu
c2V0VGltZW91dChyZXNpemUsIDApOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2Fu
dmFzLXJlc2l6ZS1yZXNldC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL2NhbnZhcy1yZXNpemUtcmVzZXQuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXJlc2l6ZS1yZXNldC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC03LDggKzcsOCBAQAogICA8cD5UaGVyZSBzaG91bGQgYmUgbm90aGluZyBiZWxvdy4gQnVn
IDg5OTQuIDwvcD4KICAgPHA+PGNhbnZhcyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+RkFJTDwv
Y2FudmFzPjwvcD4KICAgPHNjcmlwdD4KLSAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKIAog
ICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdjYW52YXMnKVsw
XTsKICAgIHZhciBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2tpYS1leGNlc3NpdmUtc2l6ZS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1za2lhLWV4Y2Vzc2l2ZS1z
aXplLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2Nh
bnZhcy1za2lhLWV4Y2Vzc2l2ZS1zaXplLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsOCArOCw4
IEBAIGZ1bmN0aW9uIHByaW50KG1lc3NhZ2UpDQogfQ0KIGZ1bmN0aW9uIHRlc3QoKQ0KIHsNCi0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsNCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQ0KKyAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7DQogDQogICAgIHZhciBjYW52YXMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiYmlnQ2FudmFzIik7DQogICAgIHZhciB3aWR0aCA9IGNhbnZh
cy53aWR0aDsNCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdGV4dC1hbGln
bm1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMt
dGV4dC1hbGlnbm1lbnQuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvY2FudmFzLXRleHQtYWxpZ25tZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIs
OCArMiw4IEBACiA8Ym9keT4KIDxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9NjAwIGhlaWdodD02
MDAgc3R5bGU9ImJvcmRlcjo1cHggc29saWQgYmxhY2siPgogPHNjcmlwdD4KLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
dHJ1ZSk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0
cnVlKTsKIAogdmFyIGN0eCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYW52YXMnKS5nZXRD
b250ZXh0KCcyZCcpOwogdmFyIGxpbmdyYWQgPSBjdHguY3JlYXRlTGluZWFyR3JhZGllbnQoMCww
LDYwMCw2MDApOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRleHQtYmFz
ZWxpbmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMt
dGV4dC1iYXNlbGluZS5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9jYW52YXMtdGV4dC1iYXNlbGluZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDgg
KzIsOCBAQAogPGJvZHk+CiA8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPTYwMCBoZWlnaHQ9MzAw
IHN0eWxlPSJib3JkZXI6NXB4IHNvbGlkIGJsYWNrIj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRy
dWUpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1
ZSk7CiAKIHZhciBjdHggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FudmFzJykuZ2V0Q29u
dGV4dCgnMmQnKTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRvRGF0
YVVSTC1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2Nh
bnZhcy10b0RhdGFVUkwtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvY2FudmFzLXRvRGF0YVVSTC1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC02LDYgKzYsNiBAQCB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zv
CiB2YXIgdXJsID0gY2FudmFzLnRvRGF0YVVSTCgpOwogdmFyIHAgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29uc29sZScpOwogcC5pbm5lckhUTUwgPSAiUEFTUyI7Ci1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9z
Y3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdG9EYXRhVVJMLWpw
ZWctY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52
YXMtdG9EYXRhVVJMLWpwZWctY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRvRGF0YVVSTC1qcGVnLWNyYXNoLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTYsNiArNiw2IEBAIGNhbnZhcy50b0RhdGFVUkwoImltYWdlL2pwZWciKSBz
aG91bGQgbm8KIHZhciB0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbnZhcycpLnRv
RGF0YVVSTCgnaW1hZ2UvanBlZycpOwogLy8gVGVzdCBwYXNzZXMgaWYgd2UgZG9uJ3QgY3Jhc2gu
CiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJykuaW5uZXJIVE1MID0gJ1BBU1MnOwotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZh
cy10b0RhdGFVUkwtd2VicC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL2NhbnZhcy10b0RhdGFVUkwtd2VicC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdG9EYXRhVVJMLXdlYnAuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMiw5ICsyLDkgQEAKIDxwcmUgaWQ9ImxvZyI+PC9wcmU+CiA8aW1nIGlkPSJyZXN1
bHQiPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICB3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dChwaXhlbFRlc3QgPSB0cnVlKTsK
LSAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dChwaXhl
bFRlc3QgPSB0cnVlKTsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9
CiAKIGZ1bmN0aW9uIHdlYnBEYXRhVVJMVGVzdCgpCkBAIC0xOSw4ICsxOSw4IEBAIGZ1bmN0aW9u
IHdlYnBEYXRhVVJMVGVzdCgpCiAgICAgZWxzZQogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgncmVzdWx0Jykuc3JjID0gZGF0YVVSTDsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB3aW5kb3cudGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIHZhciBpbWFnZSA9IG5ldyBJbWFnZSgpOwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybS1pZGVudGl0eS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm0taWRl
bnRpdHkuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
Y2FudmFzLXRyYW5zZm9ybS1pZGVudGl0eS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDggKzUs
OCBAQAogPHRpdGxlPkNhbnZhcyB0ZXN0OiAyZC50cmFuc2Zvcm1hdGlvbi50cmFuc2Zvcm0uaWRl
bnRpdHk8L3RpdGxlPgogPGNhbnZhcyBpZD0iY2FudmFzIiBjbGFzcz0ib3V0cHV0IiB3aWR0aD0i
MTAwIiBoZWlnaHQ9IjEwMCI+PHAgY2xhc3M9ImZhbGxiYWNrIj5GQUlMIChmYWxsYmFjayBjb250
ZW50KTwvcD48L2NhbnZhcz4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAKIHZhciBjYW52
YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIikuZ2V0Q29udGV4dCgiMmQiKTsK
IGNhbnZhcy5maWxsU3R5bGUgPSAnI2YwMCc7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9jYW52YXMtdHJhbnNmb3JtLWluZmluaXR5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybS1pbmZpbml0eS5odG1sCShyZXZpc2lvbiAx
MjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3JtLWluZmlu
aXR5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBACiA8dGl0bGU+Q2FudmFzIHRl
c3Q6IDJkLnRyYW5zZm9ybWF0aW9uLnRyYW5zZm9ybS5pbmZpbml0eTwvdGl0bGU+CiA8Y2FudmFz
IGlkPSJjYW52YXMiIGNsYXNzPSJvdXRwdXQiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIj48cCBj
bGFzcz0iZmFsbGJhY2siPkZBSUwgKGZhbGxiYWNrIGNvbnRlbnQpPC9wPjwvY2FudmFzPgogPHNj
cmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKIAogdmFyIGN0eCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjYW52YXMiKS5nZXRDb250ZXh0KCIyZCIpOwogY3R4LmZpbGxTdHlsZSA9ICcjZjAwJzsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm0tbXVsdGlwbHku
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNm
b3JtLW11bHRpcGx5Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL2NhbnZhcy10cmFuc2Zvcm0tbXVsdGlwbHkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
NSw4ICs1LDggQEAKIDx0aXRsZT5DYW52YXMgdGVzdDogMmQudHJhbnNmb3JtYXRpb24udHJhbnNm
b3JtLm11bHRpcGx5PC90aXRsZT4KIDxjYW52YXMgaWQ9ImNhbnZhcyIgY2xhc3M9Im91dHB1dCIg
d2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiPjxwIGNsYXNzPSJmYWxsYmFjayI+RkFJTCAoZmFsbGJh
Y2sgY29udGVudCk8L3A+PC9jYW52YXM+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogCiB2
YXIgY3R4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpLmdldENvbnRleHQoIjJk
Iik7CiBjdHguZmlsbFN0eWxlID0gJyNmMDAnOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvY2FudmFzLXRyYW5zZm9ybS1uYW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3JtLW5hbi5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3JtLW5hbi5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC01LDggKzUsOCBAQAogPHRpdGxlPkNhbnZhcyB0ZXN0OiAyZC50cmFuc2Zv
cm1hdGlvbi50cmFuc2Zvcm0ubmFuPC90aXRsZT4KIDxjYW52YXMgaWQ9ImNhbnZhcyIgY2xhc3M9
Im91dHB1dCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiPjxwIGNsYXNzPSJmYWxsYmFjayI+RkFJ
TCAoZmFsbGJhY2sgY29udGVudCk8L3A+PC9jYW52YXM+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0
cnVlKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRy
dWUpOwogCiB2YXIgY3R4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpLmdldENv
bnRleHQoIjJkIik7CiBjdHguZmlsbFN0eWxlID0gJyNmMDAnOwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybS1ub24taW52ZXJ0aWJsZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm0tbm9uLWludmVy
dGlibGUuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
Y2FudmFzLXRyYW5zZm9ybS1ub24taW52ZXJ0aWJsZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03
LDggKzcsOCBAQAogPHRpdGxlPkNhbnZhcyB0ZXN0OiAyZC50cmFuc2Zvcm1hdGlvbi50cmFuc2Zv
cm0ubm9uLWludmVydGlibGU8L3RpdGxlPgogPGNhbnZhcyBpZD0iY2FudmFzIiBjbGFzcz0ib3V0
cHV0IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCI+PHAgY2xhc3M9ImZhbGxiYWNrIj5GQUlMIChm
YWxsYmFjayBjb250ZW50KTwvcD48L2NhbnZhcz4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7
CiAKIHZhciBjdHggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIikuZ2V0Q29udGV4
dCgiMmQiKTsKIGN0eC5maWxsU3R5bGUgPSAnIzBmMCc7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9jYW52YXMtdHJhbnNmb3JtLXNrZXdlZC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm0tc2tld2VkLmh0bWwJKHJldmlzaW9u
IDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm0tc2tl
d2VkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBACiA8dGl0bGU+Q2FudmFzIHRl
c3Q6IDJkLnRyYW5zZm9ybWF0aW9uLnRyYW5zZm9ybS5za2V3ZWQ8L3RpdGxlPgogPGNhbnZhcyBp
ZD0iY2FudmFzIiBjbGFzcz0ib3V0cHV0IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCI+PHAgY2xh
c3M9ImZhbGxiYWNrIj5GQUlMIChmYWxsYmFjayBjb250ZW50KTwvcD48L2NhbnZhcz4KIDxzY3Jp
cHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KHRydWUpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAKIHZhciBjdHggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY2FudmFzIikuZ2V0Q29udGV4dCgiMmQiKTsKIC8vIENyZWF0ZSBncmVlbiB3aXRoIGEgcmVk
IHNxdWFyZSByaW5nIGluc2lkZSBpdApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2Fu
dmFzLXRyYW5zZm9ybXMtZHVyaW5nLXBhdGguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1kdXJpbmctcGF0aC5odG1sCShyZXZpc2lv
biAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1k
dXJpbmctcGF0aC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPGh0bWw+CiAg
IDxoZWFkPgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQodHJ1ZSk7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKIAogICAgICAgZnVuY3Rpb24gbWFpbigpIHsK
ICAgICAgICAgdmFyIGcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYyIpLmdldENvbnRleHQo
IjJkIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtd2l0aC1pbmNvcnJl
Y3QtYXJncy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZh
cy13aXRoLWluY29ycmVjdC1hcmdzLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL2NhbnZhcy13aXRoLWluY29ycmVjdC1hcmdzLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4NSw4ICs0ODUsOCBAQCBmdW5jdGlvbiBydW5UZXN0KCkgewogICAgICAgICBj
b250ZXh0LmZpbGxTdHlsZSA9ICcjMGYwJzsKICAgICAgICAgY29udGV4dC5maWxsUmVjdCgwLCAw
LCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOwogICAgIH0KLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKIH0KIDwvc2NyaXB0PgogPHRpdGxlPkNhbnZhcyB0ZXN0IG9mIGRvb208L3Rp
dGxlPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzRHJhd2luZ0ludG9TZWxm
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzRHJhd2lu
Z0ludG9TZWxmLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL2NhbnZhc0RyYXdpbmdJbnRvU2VsZi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEs
OCBAQAogSWYgdGhpcyByZW5kZXJzIGNvcnJlY3RseSB5b3Ugc2hvdWxkIHNlZSBvbmUgYmlnIGZy
aWVuZGx5IGdyZWVuIHNxdWFyZS4KIDxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIwMCIgaGVp
Z2h0PSIyMDAiID48L2NhbnZhcz4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAKIHZhciBj
YW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7CiB2YXIgY29udGV4dCA9
IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
Y2FudmFzX2FyY19sYXJnZWFuZ2xlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL2NhbnZhc19hcmNfbGFyZ2VhbmdsZXMuaHRtbAkocmV2aXNpb24gMTIwNjc1KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzX2FyY19sYXJnZWFuZ2xlcy5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogICA8Ym9keT4KIAk8YSBpZD0icmVzdWx0Ij48
L2E+CiAJICAgPHNjcmlwdD4KLQkgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LQkgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisJICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKwkgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogCQljYW52
YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKIAkJZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChjYW52YXMpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2hhbmdl
LWNvbnRleHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jaGFu
Z2UtY29udGV4dC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9jaGFuZ2UtY29udGV4dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAog
VGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBjaGFuZ2luZyB0aGUgY29udGV4dCBkb2VzIG5vdCBjcmFz
aC4KIDxjYW52YXMgaWQ9ImNhbnZhcyI+PC9jYW52YXM+PGJyIC8+CiA8c2NyaXB0PgotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiAKIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7
CiB2YXIgY3R4MSA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvY2hlY2stc3RhbGUtcHV0SW1hZ2VEYXRhLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2hlY2stc3RhbGUtcHV0SW1hZ2VEYXRhLmh0bWwJKHJl
dmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NoZWNrLXN0YWxlLXB1
dEltYWdlRGF0YS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDggKzksOCBAQAogCiA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CitpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKIAogdmFyIGNhbnZh
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAnY2FudmFzJyApOwogdmFyIGNvbnRleHQgPSBj
YW52YXMuZ2V0Q29udGV4dCggJzJkJyApOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
Y3Jhc2gtc2V0LWZvbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9jcmFzaC1zZXQtZm9udC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9jcmFzaC1zZXQtZm9udC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIs
OCBAQAogPGh0bWw+CiA8aGVhZD4KICAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICBvQ29udGV4dDJkID0gZG9jdW1lbnQu
Z2V0Q1NTQ2FudmFzQ29udGV4dCgiMmQiLCIiLDAsMCk7CiAgICAgICAgIG9Db250ZXh0MmQuZm9u
dCA9ICJzbWFsbC1jYXBzIC4wZXggRyI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9j
cmVhdGUtcGF0dGVybi1kb2VzLW5vdC1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL2NyZWF0ZS1wYXR0ZXJuLWRvZXMtbm90LWNyYXNoLmh0bWwJKHJldmlz
aW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NyZWF0ZS1wYXR0ZXJuLWRv
ZXMtbm90LWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsOCArNCw4IEBAIFRoaXMgdGVz
dCBjYXNlIGVuc3VyZXMgd2UgZG9uJ3QgY3Jhc2ggd2gKIDxzY3JpcHQ+CiB3aW5kb3cub25sb2Fk
ID0gZnVuY3Rpb24gKCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYycpOwogICAg
IHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKICAgICB2YXIgcCA9IGN0eC5jcmVh
dGVQYXR0ZXJuKGNhbnZhcywgJ25vLXJlcGVhdCcpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvZHJhd0ltYWdlLXdpdGgtZ2xvYmFsQWxwaGEuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9kcmF3SW1hZ2Utd2l0aC1nbG9iYWxBbHBoYS5odG1sCShyZXZp
c2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9kcmF3SW1hZ2Utd2l0aC1n
bG9iYWxBbHBoYS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQsOCBAQAogVGhlcmUgc2hv
dWxkIGJlIGEgZ3JlZW4gc3F1YXJlLCBmb2xsb3dlZCBieSA2IHNxdWFyZXMgb2Ygc2hhZGVzIG9m
IGdyZWVuIGZyb20gd2hpdGUgdG8gZnVsbCBncmVlbi48YnI+CiA8Y2FudmFzIGlkPSJjYW52YXMi
IHdpZHRoPSI3MDAiIGhlaWdodD0iMTAwIiA+PC9jYW52YXM+CiA8c2NyaXB0PgotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCh0cnVlKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KHRydWUpOwogCiB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIp
OwogdmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL2RyYXdJbWFnZS13aXRoLWludmFsaWQtYXJncy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2RyYXdJbWFnZS13aXRoLWludmFsaWQtYXJn
cy5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9kcmF3
SW1hZ2Utd2l0aC1pbnZhbGlkLWFyZ3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTYsOCArMTYs
OCBAQAogICAgIH0KIAogICAgIGZ1bmN0aW9uIGRyYXcoKSB7Ci0gICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgIHZhciBjdHggPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY2FudmFzJykuZ2V0Q29udGV4dCgnMmQnKTsKIApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvZHJhd0ltYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvZHJhd0ltYWdlLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL2RyYXdJbWFnZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDgg
KzIsOCBAQCBJZiB0aGlzIHJlbmRlcnMgY29ycmVjdGx5IHlvdSBzaG91bGQgc2VlCiA8Y2FudmFz
IGlkPSJjYW52YXMiIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiA+PC9jYW52YXM+CiA8Y2FudmFz
IGlkPSJjYW52YXMyIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgc3R5bGU9ImRpc3BsYXk6bm9u
ZSIgPjwvY2FudmFzPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CitpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKIAogdmFyIGNhbnZhcyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKIHZhciBjYW52YXMyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhczIiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL2RyYXdJbWFnZUZyb21SZWN0X3dpdGhUb0RhdGFVUkxBc1NvdXJjZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2RyYXdJbWFnZUZyb21SZWN0X3dpdGhUb0Rh
dGFVUkxBc1NvdXJjZS5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9kcmF3SW1hZ2VGcm9tUmVjdF93aXRoVG9EYXRhVVJMQXNTb3VyY2UuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtNCw4ICs0LDggQEAKIAogZnVuY3Rpb24gaW5pdCgpCiB7Ci0JaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLQkJd2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpCisJCXdpbmRvdy50ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHZhciBpbWdDYW52YXMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiYzEiKTsKICAgICB2YXIgaW1nQ2FudmFzMiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjMiIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvZmlsbC1zdHJva2UtY2xp
cC1yZXNldC1wYXRoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
ZmlsbC1zdHJva2UtY2xpcC1yZXNldC1wYXRoLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL2ZpbGwtc3Ryb2tlLWNsaXAtcmVzZXQtcGF0aC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0zLDEwICszLDEwIEBACiA8c2NyaXB0PgogZnVuY3Rpb24gdGVzdE9u
ZShvcGVyYXRpb24sIHF1aXJrKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpewotCQlsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOwotICAgICAgICBp
ZiAobGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUp
Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRVc2VEYXNoYm9hcmRDb21wYXRp
YmlsaXR5TW9kZShxdWlyayk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKXsKKwkJdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KHRydWUpOworICAgICAgICBpZiAodGVzdFJ1bm5lci5zZXRVc2VEYXNo
Ym9hcmRDb21wYXRpYmlsaXR5TW9kZSkKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlRGFz
aGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUocXVpcmspOwogICAgIH0KIAogICAgIHZhciBjYW52YXMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvcGVyYXRpb24gKyAiLSIgKyAocXVpcmsgPyAiIiA6
ICJuby0iKSArICJxdWlyayIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvZmlsbHJl
Y3QtZ3JhZGllbnQtemVyby1zdG9wcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL2ZpbGxyZWN0LWdyYWRpZW50LXplcm8tc3RvcHMuaHRtbAkocmV2aXNpb24gMTIw
Njc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvZmlsbHJlY3QtZ3JhZGllbnQtemVyby1z
dG9wcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogVGhlIGNhbnZhcyBiZWxv
dyBzaG91bGQgc2hvdyBhIGdyYWRpZW50IHdpdGggemVybyBzdG9wcywgd2hpY2ggYWNjb3JkaW5n
IHRvIHRoZSBzcGVjaWZpY2F0aW9uIGlzIGZpbGxlZCB3aXRoIHRyYW5zcGFyYW50IGJsYWNrLCBp
ZS4gbm90IHZpc2libGUuIFRoaXMgdGVzdHMgPGEgaHJlZj0iaHR0cDovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM3ODQiPkJ1ZyAxMzc4NCwgUkVHUkVTU0lPTiAocjEzNzQ0LTEz
NzUwKTogQ3Jhc2ggd2l0aCBlbXB0eSBncmFkaWVudCB3aGVuIGRyYXdpbmcgdG8gY2FudmFzPC9h
PjwvcD4KIDxjYW52YXMgaWQ9ImMiPjwvY2FudmFzPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1
ZSk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVl
KTsKIAogd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKICAgdmFyIGN0eCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjJykuZ2V0Q29udGV4dCgnMmQnKTsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL2ZpbGxyZWN0X2dyYWRpZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvZmlsbHJlY3RfZ3JhZGllbnQuaHRtbAkocmV2aXNpb24gMTIwNjc1
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvZmlsbHJlY3RfZ3JhZGllbnQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAgRWFjaCBzcXVhcmUgY2FudmFzIHNob3VsZCBjb250
YWluIGEgY29sbwogVGhlIGNvbHVtbiBvbiB0aGUgbGVmdCBjb250YWlucyBsaW5lYXIgZ3JhZGll
bnRzLCB0aGUgY29sdW1uIG9uIHRoZSByaWdodCByYWRpYWwgZ3JhZGllbnRzLjxicj4KIAogPHNj
cmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAKICAgICB2YXIgY291bnRl
ciA9IDE7CiAgICAgZnVuY3Rpb24gVGVzdChkZXNjcmlwdGlvbiwgZ3JhZGllbnQpIHsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2ZvbnQtdXBkYXRlLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvZm9udC11cGRhdGUuaHRtbAkocmV2aXNpb24gMTIwNjc1
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvZm9udC11cGRhdGUuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMTMsMTUgKzEzLDE1IEBACiAgICAgY3R4LmZpbGxUZXh0KCJCIiwgMCwgMTAwKTsK
ICAgICBjdHguZmlsbFN0eWxlID0gImdyZWVuIjsKICAgICBjYW52YXMucGFyZW50Tm9kZS5yZW1v
dmVDaGlsZChjYW52YXMpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CisgICAgICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCX0KICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkKICAgICB7CiAgICAgICAgIGN0eC5maWxsVGV4dCgiQSIsIDAsIDEwMCk7CiAgICAgICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfSwgNTApOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9nZXRQdXRJbWFnZURhdGFQYWlyVGVzdC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2dldFB1dEltYWdlRGF0YVBhaXJUZXN0Lmh0
bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2dldFB1dElt
YWdlRGF0YVBhaXJUZXN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsOCArNiw4IEBACiA8YnI+
CiBSZXN1bHQ6IDxhIGlkPSJyZXN1bHQiPjwvYT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAog
dmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjIik7CiB2YXIgY3R4ID0gY2Fu
dmFzLmdldENvbnRleHQoIjJkIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9ncmFk
aWVudC1hZGQtc2Vjb25kLXN0YXJ0LWVuZC1zdG9wLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvZ3JhZGllbnQtYWRkLXNlY29uZC1zdGFydC1lbmQtc3RvcC5odG1s
CShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9ncmFkaWVudC1h
ZGQtc2Vjb25kLXN0YXJ0LWVuZC1zdG9wLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4
IEBACiA8Ym9keT4KIDxjYW52YXMgaWQ9ImMiIHdpZHRoPSI2MDAiIGhlaWdodD0iMTAwIj48L2Nh
bnZhcz4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAKIHZhciBjYW52YXMgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiYyIpOwogdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIp
OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvaW1hZ2Utb2JqZWN0LWluLWNhbnZhcy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2ltYWdlLW9iamVjdC1p
bi1jYW52YXMuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvaW1hZ2Utb2JqZWN0LWluLWNhbnZhcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxNSAr
MzUsMTUgQEAgZnVuY3Rpb24gaW1hZ2VMb2FkZWQoKSB7CiAgICAgYzQudHJhbnNsYXRlKC0gaS53
aWR0aCAvIDIsIC0gaS5oZWlnaHQgLyAyKTsKICAgICBjNC5maWxsUmVjdCgwLCAwLCBpLndpZHRo
LCBpLmhlaWdodCk7CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7IAot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7IAorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9
CiB9CiAKIGZ1bmN0aW9uIHJ1blRlc3RzKCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLQkgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworCSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7Cisg
ICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KICAgICAKICAgICBpID0g
bmV3IEltYWdlKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9pbWFnZS1wYXR0ZXJu
LXJvdGF0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2ltYWdl
LXBhdHRlcm4tcm90YXRlLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL2ltYWdlLXBhdHRlcm4tcm90YXRlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDE1ICsyNywxNSBAQCBmdW5jdGlvbiBpbWFnZUxvYWRlZCgpIHsKICAgICAgICAgY2FudmFzZXMu
YXBwZW5kQ2hpbGQoZGl2KTsKICAgICB9CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiAgICAgfQogfQogCiBmdW5jdGlvbiBydW5UZXN0cygpIHsKLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0JCWxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
dHJ1ZSk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwkJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUp
OworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiAKICAgICBpbWcg
PSBuZXcgSW1hZ2UoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2ludmFsaWQtc2V0
LWZvbnQtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9p
bnZhbGlkLXNldC1mb250LWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL2ludmFsaWQtc2V0LWZvbnQtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMSw4ICsxLDggQEAKIDxodG1sPgogPGhlYWQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgZnVuY3Rp
b24gaW5pdCgpCiAgICAgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcGF0dGVybmZp
bGwtcmVwZWF0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcGF0
dGVybmZpbGwtcmVwZWF0Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3BhdHRlcm5maWxsLXJlcGVhdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDkg
KzQsOSBAQAogICA8dGl0bGU+Y3JlYXRlUGF0dGVybiByZXBlYXQgdGVzdDwvdGl0bGU+CiAgIDxz
dHlsZT4gY2FudmFzIHsgYm9yZGVyOnNvbGlkICMwMDAgfSA8L3N0eWxlPgogICA8c2NyaXB0Pgot
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOwotICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CisgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KHRydWUpOworICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAg
IH0KICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpewogICAgIHZhciBpID0gbmV3IEltYWdl
KCk7CkBAIC00MCw4ICs0MCw4IEBACiAgICAgCWN0eC5zdHJva2VSZWN0KDAsIDAsIDE1MCwgMTUw
KTsKICAgICAJY3R4LmZpbGxSZWN0KDAsIDAsIDE1MCwgMTUwKTsKICAgICAJCi0gICAgCWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgCSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CisgICAgCWlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAJICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgCQl9CiAgICB9CiAgIDwvc2NyaXB0PgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcXVhZHJhdGljQ3VydmVUby54bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcXVhZHJhdGljQ3VydmVUby54bWwJKHJldmlzaW9u
IDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3F1YWRyYXRpY0N1cnZlVG8ueG1s
CSh3b3JraW5nIGNvcHkpCkBAIC03LDggKzcsOCBAQAogCTxoZWFkPgogCQk8dGl0bGU+Q29udGV4
dDJELnF1YWRyYXRpY0N1cnZlVG8gVGVzdCBDYXNlPC90aXRsZT4KIAkJPHNjcmlwdD4KLQkJICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0JCQkgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQodHJ1ZSk7CisJCSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisJCQkg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKIAogCQkJdmFyIGN0eDsKIAkJCXZhciBjdXJy
ZW50X3BvaW50OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcmVzaXplLXdoaWxlLXNh
dmUtYWN0aXZlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcmVz
aXplLXdoaWxlLXNhdmUtYWN0aXZlLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3Jlc2l6ZS13aGlsZS1zYXZlLWFjdGl2ZS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC01LDggKzUsOCBAQAogPGJvZHk+DQogPGNhbnZhcyBpZD0ibXljYW52YXMiIHdpZHRo
PSI1MTIiIGhlaWdodD0iNTEyIj48L2NhbnZhcz4NCiA8c2NyaXB0Pg0KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpDQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KQ0KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikNCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCkN
CiB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ215Y2FudmFzJyk7DQogdmFy
IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOw0KIGN0eC5maWxsU3R5bGUgPSAicmdiKDI1
NSwxNjUsMCkiOw0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC1pbnNpZGUt
Y2FudmFzLWZhbGxiYWNrLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvc2NyaXB0LWluc2lkZS1jYW52YXMtZmFsbGJhY2suaHRtbAkocmV2aXNpb24gMTIwNjc1KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LWluc2lkZS1jYW52YXMtZmFsbGJhY2su
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIDxoZWFkPgogPHNjcmlwdD4KLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3NldFdpZHRoUmVzZXRBZnRlckZvcmNlZFJlbmRlci5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NldFdpZHRoUmVzZXRBZnRlckZvcmNlZFJl
bmRlci5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9z
ZXRXaWR0aFJlc2V0QWZ0ZXJGb3JjZWRSZW5kZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw4
ICs0LDggQEAKIDxoZWFkPgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZXBhaW50LmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAKIGZ1bmN0aW9uIHJlcGFpbnRUZXN0
KCkKIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NoYWRvdy1odWdlLWJsdXIuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zaGFkb3ctaHVnZS1ibHVy
Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NoYWRv
dy1odWdlLWJsdXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDwhRE9DVFlQ
RSBIVE1MPgogPGJvZHk+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCkKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKQogCiBkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKSkuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoIlRoaXMgdGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3QgY2F1c2Ug
YSBjcmFzaCIpKTsKIHZhciBjYW52YXMgPSBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3NoYWRvdy1vZmZzZXQtMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3NoYWRvdy1vZmZzZXQtMS5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9zaGFkb3ctb2Zmc2V0LTEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
Miw4ICsyLDggQEAKIDxib2R5PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctb2Zmc2V0
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAKIHNldHRlciA9IGZ1
bmN0aW9uKGN0eCwgb2Zmc2V0WCwgb2Zmc2V0WSkgewogICAgIGN0eC5zaGFkb3dPZmZzZXRYID0g
b2Zmc2V0WDsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NoYWRvdy1vZmZzZXQtMi5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NoYWRvdy1vZmZzZXQt
Mi5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zaGFk
b3ctb2Zmc2V0LTIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxib2R5Pgog
PHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctb2Zmc2V0LmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KHRydWUpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAKIHNldHRlciA9IGZ1bmN0aW9uKGN0eCwgb2Zmc2V0WCwg
b2Zmc2V0WSkgewogICAgIGN0eC5zZXRTaGFkb3cob2Zmc2V0WCwgb2Zmc2V0WSwgMCwgMC41KTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NoYWRvdy1vZmZzZXQtMy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NoYWRvdy1vZmZzZXQtMy5odG1sCShy
ZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zaGFkb3ctb2Zmc2V0
LTMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxib2R5PgogPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaGFkb3ctb2Zmc2V0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KHRydWUpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQodHJ1ZSk7CiAKIHNldHRlciA9IGZ1bmN0aW9uKGN0eCwgb2Zmc2V0WCwgb2Zmc2V0WSkg
ewogICAgIGN0eC5zZXRTaGFkb3cob2Zmc2V0WCwgb2Zmc2V0WSwgMCwgImdyZWVuIik7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zaGFkb3ctb2Zmc2V0LTQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zaGFkb3ctb2Zmc2V0LTQuaHRtbAkocmV2aXNp
b24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2hhZG93LW9mZnNldC00Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8Ym9keT4KIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2hhZG93LW9mZnNldC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCh0cnVlKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KHRydWUpOwogCiBzZXR0ZXIgPSBmdW5jdGlvbihjdHgsIG9mZnNldFgsIG9mZnNldFkpIHsKICAg
ICBjdHguc2V0U2hhZG93KG9mZnNldFgsIG9mZnNldFksIDAsICJncmVlbiIsIDAuOSk7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zaGFkb3ctb2Zmc2V0LTUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zaGFkb3ctb2Zmc2V0LTUuaHRtbAkocmV2aXNp
b24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2hhZG93LW9mZnNldC01Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8Ym9keT4KIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2hhZG93LW9mZnNldC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCh0cnVlKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KHRydWUpOwogCiBzZXR0ZXIgPSBmdW5jdGlvbihjdHgsIG9mZnNldFgsIG9mZnNldFkpIHsKICAg
ICBjdHguc2V0U2hhZG93KG9mZnNldFgsIG9mZnNldFksIDAsIDAsIDAuNSwgMCwgMC45KTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NoYWRvdy1vZmZzZXQtNi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NoYWRvdy1vZmZzZXQtNi5odG1sCShyZXZp
c2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zaGFkb3ctb2Zmc2V0LTYu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxib2R5PgogPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFkb3ctb2Zmc2V0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KHRydWUpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQodHJ1ZSk7CiAKIHNldHRlciA9IGZ1bmN0aW9uKGN0eCwgb2Zmc2V0WCwgb2Zmc2V0WSkgewog
ICAgIGN0eC5zZXRTaGFkb3cob2Zmc2V0WCwgb2Zmc2V0WSwgMCwgMC4yLCAwLjkpOwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2hhZG93LW9mZnNldC03Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2hhZG93LW9mZnNldC03Lmh0bWwJKHJldmlzaW9u
IDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NoYWRvdy1vZmZzZXQtNy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBAQAogPGJvZHk+CiA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYWRvdy1vZmZzZXQuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
dHJ1ZSk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0
cnVlKTsKIAogc2V0dGVyID0gZnVuY3Rpb24oY3R4LCBvZmZzZXRYLCBvZmZzZXRZKSB7CiAgICAg
Y3R4LnNldFNoYWRvdyhvZmZzZXRYLCBvZmZzZXRZLCAwLCAxLCAwLCAxLCAwLCAwLjkpOwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc3Ryb2tlVGV4dC1taXNzaW5nLWFyZ3MuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zdHJva2VUZXh0LW1pc3Npbmct
YXJncy5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9z
dHJva2VUZXh0LW1pc3NpbmctYXJncy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBA
QAogPGh0bWw+CiA8Ym9keT4KIDxzY3JpcHQ+Ci0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICB0cnkg
ewogICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpLmdldENvbnRleHQoJzJkJyku
c3Ryb2tlVGV4dCgpOwogICB9IGNhdGNoIChlcnIpIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3N2Zy10YWludC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3N2Zy10YWludC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9zdmctdGFpbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDkgQEAKIDxo
dG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAK
IGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CkBAIC0zMCw4ICszMCw4IEBAIGZ1bmN0aW9uIGxvYWRl
ZCgpIHsKICAgICBsb2coJ09oIGRlYXIgLS0gbWlzc2luZyBleGNlcHRpb24hJyk7CiAgIH0gY2F0
Y2ggKGUpIHsKICAgICBsb2coJ0V4Y2VwdGlvbjogJyArIGUubmFtZSk7Ci0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKICAgfQogfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy90b0RhdGFVUkwtYWxwaGEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy90b0RhdGFVUkwtYWxwaGEuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvdG9EYXRhVVJMLWFscGhhLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTMsOCArMyw4IEBACiA8aGVhZD4gCiA8dGl0bGU+Y2FudmFzIHRvRGF0YVVSTCBhbHBoYSBwbmcg
YnVnPC90aXRsZT4gCiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+IAotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCh0cnVlKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KHRydWUpOwogCiAgIGZ1bmN0aW9uIGxvYWQoKSB7CiAgICAgICB2YXIgY29udGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjIikuZ2V0Q29udGV4dCgiMmQiKTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3RvRGF0YVVSTC1ub0RhdGEuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy90b0RhdGFVUkwtbm9EYXRhLmh0bWwJKHJldmlzaW9uIDEyMDY3
NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3RvRGF0YVVSTC1ub0RhdGEuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxodG1sPgogPGhlYWQ+CiAgICAgPHNjcmlwdD4K
LSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAg
ZnVuY3Rpb24gbG9nKG1zZykKICAgICAgICAgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvdG9EYXRhVVJMLXN1cHBvcnRlZFR5cGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvdG9EYXRhVVJMLXN1cHBvcnRlZFR5cGVzLmh0bWwJKHJldmlzaW9uIDEy
MDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3RvRGF0YVVSTC1zdXBwb3J0ZWRUeXBl
cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDggKzUsOCBAQAogICAgICAgICBwcmUgeyBkaXNw
bGF5OiBpbmxpbmUtYmxvY2s7IG1hcmdpbjogNXB4OyB9CiAgICAgPC9zdHlsZT4KICAgICA8c2Ny
aXB0PgotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAg
ICAgICBmdW5jdGlvbiBkcmF3KCkKICAgICAgICAgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvdW5jbG9zZWQtY2FudmFzLTEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy91bmNsb3NlZC1jYW52YXMtMS5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy91bmNsb3NlZC1jYW52YXMtMS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDcgKzEsNyBAQAogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3Nj
cmlwdD4KIDwvaGVhZD4KIDxib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvdW5j
bG9zZWQtY2FudmFzLTIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy91bmNsb3NlZC1jYW52YXMtMi5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy91bmNsb3NlZC1jYW52YXMtMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDcgKzEsNyBAQAogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvdW5jbG9zZWQtY2Fu
dmFzLTMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy91bmNsb3Nl
ZC1jYW52YXMtMy5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy91bmNsb3NlZC1jYW52YXMtMy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBA
QAogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxi
b2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvdW5jbG9zZWQtY2FudmFzLTQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy91bmNsb3NlZC1jYW52YXMt
NC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy91bmNs
b3NlZC1jYW52YXMtNC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogPGhlYWQ+
CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvemVyby1zaXplLWZpbGwtcmVjdC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3plcm8tc2l6ZS1maWxsLXJlY3QuaHRt
bAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvemVyby1zaXpl
LWZpbGwtcmVjdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDggKzksOCBAQAogPGhlYWQ+CiA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24o
KSB7Ci0JaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLQkgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisJaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorCSAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogCQogICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGVzdCIpOwogICAgIHZhciBjb250ZXh0ID0gY2FudmFzLmdldENvbnRl
eHQoIjJkIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9yZXNvdXJjZXMvY2FudmFz
LWNvbXBvc2l0ZS1pbWFnZS1jb21tb24uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvcmVzb3VyY2VzL2NhbnZhcy1jb21wb3NpdGUtaW1hZ2UtY29tbW9uLmpzCShyZXZp
c2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9yZXNvdXJjZXMvY2FudmFz
LWNvbXBvc2l0ZS1pbWFnZS1jb21tb24uanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiAvLyBUaGlzIHRlc3Qg
c2hvdWxkIHNob3cgYSB0YWJsZSBvZiBjYW52YXMgZWxlbWVudHMuIE9udG8gdGhlIGJhY2tncm91
bmQgb2YgZWFjaCBhIGJsdWUKQEAgLTM3NCw2ICszNzQsNiBAQCBmdW5jdGlvbiBydW5UZXN0KCkg
ewogICAgICAgLy9yZWJhc2VsaW5lKGNvbnRleHQsIGksIGopOwogICAgIH0KICAgfQotICBpZiAo
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgIGlmICh0ZXN0UnVubmVyKQorICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9yZXNvdXJjZXMvcmVwYWludC5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9yZXNvdXJjZXMvcmVwYWludC5q
cwkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcmVzb3VyY2Vz
L3JlcGFpbnQuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiBmdW5jdGlvbiBydW5S
ZXBhaW50VGVzdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNl
dFRvcDsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZGlzcGxheSgpOworICAgICAgICB0
ZXN0UnVubmVyLmRpc3BsYXkoKTsKICAgICAgICAgcmVwYWludFRlc3QoKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBzZXRUaW1lb3V0KHJlcGFpbnRUZXN0LCAxMDApOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1kcmF3SW1hZ2UtaW5jb21wbGV0ZS5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2Fu
dmFzLWRyYXdJbWFnZS1pbmNvbXBsZXRlLmpzCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWRyYXdJbWFnZS1pbmNvbXBsZXRl
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogZGVzY3JpcHRpb24oIlRlc3QgdGhh
dCBkcmF3SW1hZ2UoKSBkb2VzIG5vdGhpbmcgd2l0aCBhbiBpbmNvbXBsZXRlIGltYWdlIG9yIHZp
ZGVvIik7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiY2FudmFzIik7CiB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWdyYWRpZW50LWFk
ZFN0b3AtZXJyb3IuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2Ny
aXB0LXRlc3RzL2NhbnZhcy1ncmFkaWVudC1hZGRTdG9wLWVycm9yLmpzCShyZXZpc2lvbiAxMjA2
NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWdyYWRp
ZW50LWFkZFN0b3AtZXJyb3IuanMJKHdvcmtpbmcgY29weSkKQEAgLTYsOSArNiw5IEBAIHNob3Vs
ZFRocm93KCJncmFkaWVudC5hZGRDb2xvclN0b3AoMSwgJ3IKIHZhciBncmFkaWVudCA9IGN0eC5j
cmVhdGVSYWRpYWxHcmFkaWVudCgwLCAwLCAwLCAxMDAsIDAsIDApOwogc2hvdWxkVGhyb3coImdy
YWRpZW50LmFkZENvbG9yU3RvcCgxLCAncmdiKE5hTiUsIE5hTiUsIE5hTiUpJykiKTsKIAotaWYg
KHRoaXMubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKK2lmICh0aGlzLnRlc3RSdW5uZXIpIHsKICAg
ICBkZWJ1ZygiU3dpdGNoaW5nIHRvIGRhc2hib2FyZCBjb21wYXRpYmlsaXR5IG1vZGUuICBJbnZh
bGlkIGNvbG9yIHN0cmluZ3Mgc2hvdWxkIG5vIGxvbmdlciBjYXVzZSBhbiBleGNlcHRpb24uIik7
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1v
ZGUodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9k
ZSh0cnVlKTsKIH0gZWxzZSB7CiAgICAgZGVidWcoIlRoZSBmb2xsb3dpbmcgdGVzdHMgd2lsbCBm
YWlsIGluIHRoZSBicm93c2VyIGFzIHdlIGNhbiBvbmx5IGVuYWJsZSBkYXNoYm9hcmQgY29tcGF0
aWJpbGl0eSBtb2RlIGluIERSVC4iKQogfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
c2NyaXB0LXRlc3RzL2NhbnZhcy1pbWFnZVNtb290aGluZ0VuYWJsZWQtcmVwYWludC5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWlt
YWdlU21vb3RoaW5nRW5hYmxlZC1yZXBhaW50LmpzCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWltYWdlU21vb3RoaW5nRW5h
YmxlZC1yZXBhaW50LmpzCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHZhciBkcmF3
SXRlcmF0aW9ucyA9IDI7CiBmdW5jdGlvbiBUZXN0Q29udHJvbGxlclBhaW50KCkgewogICAgIHdo
aWxlIChkcmF3SXRlcmF0aW9ucyA+IDApIHsKICAgICAgICAgZHJhdygpOwotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kaXNwbGF5KCk7CisgICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgp
OwogICAgICAgICBkcmF3SXRlcmF0aW9ucyA9IGRyYXdJdGVyYXRpb25zIC0gMTsKICAgICB9CiAg
ICAgZHJhdygpOwpAQCAtNjEsNyArNjEsNyBAQCBmdW5jdGlvbiBCcm93c2VyUGFpbnQoKXsKIAog
ZnVuY3Rpb24gb25Mb2FkSGFuZGxlcigpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAgICBUZXN0Q29u
dHJvbGxlclBhaW50KCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQnJvd3NlclBhaW50KCk7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jYW52YXMtMmQtd2ViZ2wtdGV4dHVy
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NhbnZh
cy0yZC13ZWJnbC10ZXh0dXJlLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL2NhbnZhcy0yZC13ZWJnbC10ZXh0dXJlLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTksOSArOSw5IEBAIGRlc2NyaXB0aW9uKCJDaGVja3MgdGhhdCBjb3B5aW5nIGNh
bnZhcyAKIAogdmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwogCi1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwogfQogCiB2YXIgY2FudmFzOwpAQCAtMzQsOCArMzQsOCBAQCBmdW5j
dGlvbiBkcmF3KCkKICAgd3R1LmRyYXdRdWFkKGdsKTsKICAgd3R1LmNoZWNrQ2FudmFzUmVjdChn
bCwgMCwgMCwgMSwgMSwgWzAsIDAsIDIwMCwgMjU1XSwgIlNob3VsZCBoYXZlIHJlbmRlcmVkIGJs
dWUuIiwgMSk7CiAKLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIHdpbmRvdy5vbmxvYWQgPSBm
dW5jdGlvbigpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jYW52YXMtdGVz
dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NhbnZh
cy10ZXN0Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL2NhbnZhcy10ZXN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEzNSw4ICsxMzUsOCBA
QCBpZiAoIWdsKSB7CiAgIGNhbnZhcy5zdHlsZS5oZWlnaHQgPSAiMjVweCI7CiAgIHZhciBpbnRl
cnZhbElkOwogICBpbnRlcnZhbElkID0gd2luZG93LnNldEludGVydmFsKGZ1bmN0aW9uKCkgewot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kaXNwbGF5KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgdGVz
dFJ1bm5lci5kaXNwbGF5KCk7CiAgICAgaWYgKGNhbnZhcy5jbGllbnRXaWR0aCA9PSAxMDAgJiYK
ICAgICAgICAgY2FudmFzLmNsaWVudEhlaWdodCA9PSAyNSkgewogICAgICAgd2luZG93LmNsZWFy
SW50ZXJ2YWwoaW50ZXJ2YWxJZCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9jb250ZXh0LWRlc3Ryb3llZC1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtZGVzdHJveWVkLWNyYXNoLmh0bWwJKHJldmlzaW9u
IDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtZGVzdHJv
eWVkLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsOSArNCw5IEBACiA8L2hlYWQ+CiA8
Ym9keT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQog
CiBmdW5jdGlvbiBnYygpCkBAIC0zNiw4ICszNiw4IEBAIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKQog
ICAgIGV4dGVuc2lvbi5sb3NlQ29udGV4dCgpOwogICAgIAogICAgIGRvY3VtZW50LmJvZHkuaW5u
ZXJIVE1MID0gIlBBU1MiOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogPC9zY3Jp
cHQ+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jc3Mtd2Vi
a2l0LWNhbnZhcy1yZXBhaW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvd2ViZ2wvY3NzLXdlYmtpdC1jYW52YXMtcmVwYWludC5odG1sCShyZXZpc2lvbiAxMjA2
NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jc3Mtd2Via2l0LWNhbnZhcy1y
ZXBhaW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTk0LDkgKzk0LDkgQEAKICAgICAgICAgICAg
ICAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgMyk7IAogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OwotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5j
ZSgiV2ViS2l0V2ViR0xFbmFibGVkIiwgIjEiKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRXZWJH
TEVuYWJsZWQiLCAiMSIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBpbml0aWFsaXplKCk7CkBAIC0xMDUsOCArMTA1LDggQEAKICAgICAgICAgICAgICAgICBkcmF3
KDAuNywgMCwgMCk7CiAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAg
ICAgICAgICAgICAgICAgICAgZHJhdygwLCAwLjUsIDApOwotICAgICAgICAgICAgICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgICAgICB9LCAxMDApOwogICAgICAgICAgICAgfSwg
MTAwKTsKICAgICAgICAgPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9jc3Mtd2Via2l0LWNhbnZhcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL2Nzcy13ZWJraXQtY2FudmFzLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkK
KysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2Nzcy13ZWJraXQtY2FudmFzLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTk0LDggKzk0LDggQEAKICAgICAgICAgICAgICAgICBnbC5kcmF3
QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgMyk7IAogICAgICAgICAgICAgfQogICAgICAgICAgICAg
Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0V2Vi
R0xFbmFibGVkIiwgIjEiKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0V2ViR0xF
bmFibGVkIiwgIjEiKTsKIAogICAgICAgICAgICAgaW5pdGlhbGl6ZSgpOwogICAgICAgICAgICAg
ZHJhdygwLCAwLjUsIDApOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wt
dGV4aW1hZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9nbC10ZXhpbWFnZS5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9nbC10ZXhpbWFnZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5
Myw3IEBAIGZ1bmN0aW9uIHJ1blRlc3RzKGltZ3MpIHsKICAgICAvLyBXaGVuIHJ1bm5pbmcgaW4g
V2ViS2l0J3MgdGVzdCBoYXJuZXNzLCB3ZSBkb24ndCB3YW50IHRvIHByaW50IHRoZQogICAgIC8v
IHBpeGVsIHZhbHVlIHdoZW4gdGhlIHRlc3QgcGFzc2VzLCBiZWNhdXNlIGRpZmZlcmVudCBtYWNo
aW5lcyBtaWdodAogICAgIC8vIGhhdmUgZGlmZmVyZW50IHJlc3VsdHMgYW5kIHdlIHJlY29yZCB0
aGUgdGV4dCBvdXRwdXQuCi0gICAgdmFyIGluRHVtcFJlbmRlclRyZWUgPSB3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXI7CisgICAgdmFyIGluRHVtcFJlbmRlclRyZWUgPSB3aW5kb3cudGVzdFJ1
bm5lcjsKICAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgNDsgKytpaSkgewogICAgICAgaWYgKE1h
dGguYWJzKGJ1ZltvZmYgKyBpaV0gLSBjb2xvcltpaV0pID4gYWxsb3dlZFJhbmdlKSB7CiAgICAg
ICAgIHRlc3RGYWlsZWQobXNnICsgc3ViTXNnKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL3ByZW11bHRpcGx5YWxwaGEtdGVzdC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3ByZW11bHRpcGx5YWxwaGEtdGVzdC5odG1sCShyZXZp
c2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9wcmVtdWx0aXBs
eWFscGhhLXRlc3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNzIsOSArNzIsOSBAQCB2YXIgZ2w7
CiB2YXIgY2FudmFzOwogdmFyIHByZW11bHRpcGxlZEFscGhhOwogCi1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldl
YktpdFdlYkdMRW5hYmxlZCIsICIxIik7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgdGVzdFJ1bm5lci5vdmVycmlkZVBy
ZWZlcmVuY2UoIldlYktpdFdlYkdMRW5hYmxlZCIsICIxIik7CiB9CiAKIGRlc2NyaXB0aW9uKCJU
ZXN0IHRoZSBXZWJHTCBwcmVtdWx0aXBsZWRBbHBoYSBjb250ZXh0IGNyZWF0aW9uIGZsYWcuIik7
CkBAIC0xNTQsOCArMTU0LDggQEAgZnVuY3Rpb24gZG9OZXh0VGVzdCgpIHsKICAgICAgICAgc2V0
VGltZW91dChsb2FkVGV4dHVyZSwgMCk7CiAgICAgIH0KICAgIH0gZWxzZSB7Ci0gICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICBmaW5pc2hUZXN0KCk7CiAgICB9CiB9Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJESW1hZ2VEYXRhVGVz
dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RleElt
YWdlMkRJbWFnZURhdGFUZXN0Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL3RleEltYWdlMkRJbWFnZURhdGFUZXN0Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTUxLDkgKzUxLDkgQEAKICAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uIGluaXQo
KQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJl
bmNlKCJXZWJLaXRXZWJHTEVuYWJsZWQiLCAiMSIpOwotICAgICAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJX
ZWJLaXRXZWJHTEVuYWJsZWQiLCAiMSIpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gU2V0IHVwIGEgY2FudmFz
IHRvIGdldCBpbWFnZSBkYXRhIGZyb20KICAgICAgICAgICAgIHZhciBjYW52YXMyZCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXhjYW52YXMiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3RleHR1cmUtY29sb3ItcHJvZmlsZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RleHR1cmUtY29sb3ItcHJvZmlsZS5odG1sCShy
ZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXh0dXJl
LWNvbG9yLXByb2ZpbGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBmdW5j
dGlvbiBydW5UZXN0cyhpbWdzKSB7CiAgICAgLy8gV2hlbiBydW5uaW5nIGluIFdlYktpdCdzIHRl
c3QgaGFybmVzcywgd2UgZG9uJ3Qgd2FudCB0byBwcmludCB0aGUKICAgICAvLyBwaXhlbCB2YWx1
ZSB3aGVuIHRoZSB0ZXN0IHBhc3NlcywgYmVjYXVzZSBkaWZmZXJlbnQgbWFjaGluZXMgbWlnaHQK
ICAgICAvLyBoYXZlIGRpZmZlcmVudCByZXN1bHRzIGFuZCB3ZSByZWNvcmQgdGhlIHRleHQgb3V0
cHV0LgotICAgIHZhciBpbkR1bXBSZW5kZXJUcmVlID0gd2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyOworICAgIHZhciBpbkR1bXBSZW5kZXJUcmVlID0gd2luZG93LnRlc3RSdW5uZXI7CiAgICAg
Zm9yICh2YXIgaWkgPSAwOyBpaSA8IDQ7ICsraWkpIHsKICAgICAgIGlmIChNYXRoLmFicyhidWZb
b2ZmICsgaWldIC0gY29sb3JbaWldKSA+IGFsbG93ZWRSYW5nZSkgewogICAgICAgICB0ZXN0RmFp
bGVkKG1zZyArIHN1Yk1zZyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93
ZWJnbC1jb21wb3NpdGUtbW9kZXMtcmVwYWludC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmdsLWNvbXBvc2l0ZS1tb2Rlcy1yZXBhaW50Lmh0bWwJ
KHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmds
LWNvbXBvc2l0ZS1tb2Rlcy1yZXBhaW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDkgKzQ3
LDkgQEAgdm9pZCBtYWluKCkgewogCiB2YXIgY3R4cyA9IFtdCiAKLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZl
cmVuY2UoIldlYktpdFdlYkdMRW5hYmxlZCIsICIxIik7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCh0cnVlKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RS
dW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRXZWJHTEVuYWJsZWQiLCAiMSIpOworICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiZGVzY3JpcHRpb24iKS5zdHlsZS5wb3NpdGlvbiA9ICJhYnNvbHV0ZSI7CiAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImRlc2NyaXB0aW9uIikuc3R5bGUudG9wID0gIi01MDAwcHgiOwog
fQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtY29tcG9zaXRlLW1v
ZGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvd2Vi
Z2wtY29tcG9zaXRlLW1vZGVzLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL3dlYmdsLWNvbXBvc2l0ZS1tb2Rlcy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC00NSw5ICs0NSw5IEBAIHZvaWQgbWFpbigpIHsKIAogdmFyIGN0eHMgPSBbXQogCi1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRXZWJHTEVuYWJsZWQiLCAiMSIpOwotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0V2ViR0xFbmFi
bGVkIiwgIjEiKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImRlc2NyaXB0aW9uIikuc3R5bGUucG9zaXRpb24gPSAiYWJzb2x1
dGUiOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXNjcmlwdGlvbiIpLnN0eWxlLnRv
cCA9ICItNTAwMHB4IjsKIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dl
YmdsLXRleHR1cmUtYmluZGluZy1wcmVzZXJ2ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC10ZXh0dXJlLWJpbmRpbmctcHJlc2VydmVkLmh0
bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dl
YmdsLXRleHR1cmUtYmluZGluZy1wcmVzZXJ2ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTIs
OSArMTIsOSBAQCBkZXNjcmlwdGlvbigiQ2hlY2tzIHRoYXQgcGFpbnRpbmcgV2ViR0wgCiAKIHZh
ciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKIH0KIAogdmFyIGNhbnZhczsKQEAgLTI3LDggKzI3LDggQEAgZnVuY3Rpb24gZHJhdygp
IHsKICAgd3R1LmRyYXdRdWFkKGNvbnRleHQpOwogCiAgIHd0dS5jaGVja0NhbnZhc1JlY3QoY29u
dGV4dCwgMCwgMCwgMSwgMSwgWzAsIDAsIDI1NSwgMjU1XSwgIlNob3VsZCBoYXZlIHJlbmRlcmVk
IGJsdWUuIiwgMSk7Ci0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIHdpbmRvdy5vbmxvYWQgPSBmdW5j
dGlvbigpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC12aWV3cG9y
dC1wYXJhbWV0ZXJzLXByZXNlcnZlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL3dlYmdsLXZpZXdwb3J0LXBhcmFtZXRlcnMtcHJlc2VydmVkLmh0bWwJ
KHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmds
LXZpZXdwb3J0LXBhcmFtZXRlcnMtcHJlc2VydmVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEy
LDkgKzEyLDkgQEAgZGVzY3JpcHRpb24oIkNoZWNrcyB0aGF0IHBhaW50aW5nIFdlYkdMIAogCiB2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwog
fQogCiB2YXIgY2FudmFzOwpAQCAtMjksOCArMjksOCBAQCBmdW5jdGlvbiBkcmF3KCkgewogICAg
IHRlc3RQYXNzZWQoIlZpZXdwb3J0IG5vdCBjb3JydXB0ZWQuIik7CiAgIH0KIAotICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwogfQogCiB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKQpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvd29ya2VyLWRhdGEtdmlldy10ZXN0Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvd29ya2VyLWRhdGEtdmlldy10ZXN0
Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L3dvcmtlci1kYXRhLXZpZXctdGVzdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMywxNSArMTMs
MTUgQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgdmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoInJl
c291cmNlcy93b3JrZXItZGF0YS12aWV3LXRlc3QuanMiKTsKICAgICB3b3JrZXIub25tZXNzYWdl
ID0gZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgbG9nKGV2ZW50LmRhdGEpOwotICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9OwogICAgIHdvcmtlci5w
b3N0TWVzc2FnZSgic3RhcnQiKTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKIH0KIDwvc2NyaXB0PgogPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QuanMJKHJldmlzaW9uIDEy
MDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy93ZWJnbC10
ZXN0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAv
LyBEaWZmZXJlbmNlcyB3aXRoIHJlc3BlY3QgdG8gS2hyb25vcyB2ZXJzaW9uIG9mIHdlYmdsLXRl
c3QuanMKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRXZWJHTEVuYWJsZWQiLCAiMSIpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNl
KCJXZWJLaXRXZWJHTEVuYWJsZWQiLCAiMSIpOwogCiBmdW5jdGlvbiBhc3NlcnRNc2coYXNzZXJ0
aW9uLCBtc2cpIHsKICAgICBpZiAoYXNzZXJ0aW9uKSB7CkBAIC0xMiwxOCArMTIsMTggQEAgZnVu
Y3Rpb24gYXNzZXJ0TXNnKGFzc2VydGlvbiwgbXNnKSB7CiB9CiAKIGZ1bmN0aW9uIGluaXROb25L
aHJvbm9zRnJhbWV3b3JrKHdhaXRVbnRpbERvbmUpIHsKLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5j
ZSgiV2ViS2l0V2ViR0xFbmFibGVkIiwgIjEiKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIu
b3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRXZWJHTEVuYWJsZWQiLCAiMSIpOworICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIGlmICh3YWl0VW50aWxEb25lKSB7Ci0gICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKICAgICB9CiAgIH0KIH0KIAogZnVuY3Rpb24gbm9uS2hyb25vc0ZyYW1ld29y
a05vdGlmeURvbmUoKSB7Ci0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICB9CiB9CiAKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvY29uc3RydWN0b3JzL2NvbnN0cnVjdG9yLWFzLWZ1bmN0aW9uLWNyYXNo
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jb25zdHJ1Y3RvcnMvY29uc3Ry
dWN0b3ItYXMtZnVuY3Rpb24tY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jb25zdHJ1Y3RvcnMvY29uc3RydWN0b3ItYXMtZnVuY3Rpb24tY3Jhc2guaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxoZWFkPgogICAgIDx0aXRsZT5DYWxs
aW5nIGJpbmRpbmdzIGNvbnN0cnVjdG9ycyBhcyBmdW5jdGlvbiBzaG91bGQgbm90IGNhdXNlIGEg
Y3Jhc2g8L3RpdGxlPgogICAgIDxzY3JpcHQ+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgICAgICB7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9hYnNvbHV0ZS1w
b3NpdGlvbi1pbnNpZGUtaW5saW5lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvYWJzb2x1dGUtcG9zaXRpb24taW5zaWRlLWlubGluZS5o
dG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQt
Y29udGVudC9hYnNvbHV0ZS1wb3NpdGlvbi1pbnNpZGUtaW5saW5lLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEzLDggKzEzLDggQEAgcG9zaXRpb246IGFic29sdXRlOwogfQogPC9zdHlsZT4KIDxz
Y3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L2FmdGVyLXdpdGgtZmlyc3QtbGV0dGVy
LWZsb2F0LWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2Vu
ZXJhdGVkLWNvbnRlbnQvYWZ0ZXItd2l0aC1maXJzdC1sZXR0ZXItZmxvYXQtY3Jhc2guaHRtbAko
cmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRl
bnQvYWZ0ZXItd2l0aC1maXJzdC1sZXR0ZXItZmxvYXQtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMTAsOCArMTAsOCBAQAogICAgICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAg
ICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKICAgICAgICAgICAgICAgICBk
b2N1bWVudC5ib2R5LnN0eWxlLmNvbG9yID0gImJsdWUiOwotICAgICAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgd2luZG93Lm9ubG9hZCA9IHJ1blRlc3Q7CiAgICAg
ICAgIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRl
bnQvYXR0ci1taXNzaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Z2VuZXJhdGVkLWNvbnRlbnQvYXR0ci1taXNzaW5nLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysr
IExheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L2F0dHItbWlzc2luZy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogPC9zdHlsZT4KIDxzcGFuPjwvc3Bhbj4K
IDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDxwPgog
ICAgIFRlc3QgZm9yIDxpPjxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MTA4NSI+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcx
MDg1PC9hPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvYmVm
b3JlLWNvbnRlbnQtd2l0aC1saXN0LW1hcmtlci1pbi1hbm9uLWJsb2NrLWNyYXNoLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvYmVmb3Jl
LWNvbnRlbnQtd2l0aC1saXN0LW1hcmtlci1pbi1hbm9uLWJsb2NrLWNyYXNoLmh0bWwJKHJldmlz
aW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L2Jl
Zm9yZS1jb250ZW50LXdpdGgtbGlzdC1tYXJrZXItaW4tYW5vbi1ibG9jay1jcmFzaC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw4IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAg
ZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CiAgICAgZmlyc3REaXYuc2V0QXR0cmlidXRlKCdjbGFz
cycsICdjMScpOwogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiB9CiB3aW5kb3cub25s
b2FkID0gcnVuVGVzdDsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2Vu
ZXJhdGVkLWNvbnRlbnQvYmxvY2stYWZ0ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9ibG9jay1hZnRlci5odG1sCShyZXZpc2lvbiAx
MjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9ibG9jay1h
ZnRlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw4ICsxMiw4IEBACiAgICAgfQogICAgIDwv
c3R5bGU+CiAgICAgPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAg
IGZ1bmN0aW9uIHRlc3QoKXsKICAgICAgICAgdmFyIGZpcnN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImZpcnN0Iik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29u
dGVudC9kcmFnLXN0YXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Z2VuZXJhdGVkLWNvbnRlbnQvZHJhZy1zdGF0ZS5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9kcmFnLXN0YXRlLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEyLDggKzEyLDggQEAKICAgICBEcmFnIHRoZSBib3ggYWJvdmUuIFRo
ZSB0ZXh0IHNob3VsZCBiZWNvbWUgYmx1ZSBhbmQgdGhlIGJyb3dzZXIgc2hvdWxkIG5vdCBjcmFz
aC4KIDwvcD4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyg1MCwgNTApOwogICAgICAgICBldmVudFNlbmRl
ci5tb3VzZURvd24oKTsKICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMjUwLCAyNTAp
OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvZW1wdHktY29u
dGVudC13aXRoLWZsb2F0LWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvZW1wdHktY29udGVudC13aXRoLWZsb2F0LWNyYXNoLmh0
bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1j
b250ZW50L2VtcHR5LWNvbnRlbnQtd2l0aC1mbG9hdC1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
IDwvc2NyaXB0PgogPHN0eWxlPgogICAgIHNwYW46OmFmdGVyIHtjb250ZW50OiAnJzsgfQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvZmlyc3QtbGV0dGVyLW5l
eHQtc2libGluZy1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3Nz
LWdlbmVyYXRlZC1jb250ZW50L2ZpcnN0LWxldHRlci1uZXh0LXNpYmxpbmctY3Jhc2guaHRtbAko
cmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRl
bnQvZmlyc3QtbGV0dGVyLW5leHQtc2libGluZy1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC03LDggKzcsOCBAQAogLmlubGluZTo6Zmlyc3QtbGV0dGVyIHsgY29udGVudDogJyc7IH0KIDwv
c3R5bGU+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpIHsK
ICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3Nz
LWdlbmVyYXRlZC1jb250ZW50L2ZpcnN0LWxldHRlci10YWJsZS1jZWxsLWZvcm1hdC1ibG9jay1j
cmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1j
b250ZW50L2ZpcnN0LWxldHRlci10YWJsZS1jZWxsLWZvcm1hdC1ibG9jay1jcmFzaC5odG1sCShy
ZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVu
dC9maXJzdC1sZXR0ZXItdGFibGUtY2VsbC1mb3JtYXQtYmxvY2stY3Jhc2guaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsOCArMzEsOCBAQAogICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldFRv
cDsKICAgICAgICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAiUEFTUywgaWYgbm8gY3Jhc2gg
b3IgYXNzZXJ0IGluIGRlYnVnIGJ1aWxkLiIKIAotICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKICAgICB9CiA8L3NjcmlwdD4KIDxib2R5PgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvZmxvYXQtZmlyc3QtbGV0dGVyLXNpYmxp
bmdzLWNvbnZlcnQtdG8taW5saW5lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvZmxvYXQtZmlyc3QtbGV0dGVyLXNpYmxpbmdzLWNvbnZl
cnQtdG8taW5saW5lLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y3NzLWdlbmVyYXRlZC1jb250ZW50L2Zsb2F0LWZpcnN0LWxldHRlci1zaWJsaW5ncy1jb252ZXJ0
LXRvLWlubGluZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBAQAogPHNjcmlwdD4K
IGZ1bmN0aW9uIHJlY3JlYXRlRmlyc3RMZXR0ZXJCbG9jaygpIHsKICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInBhcmVudCIpLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAnaW5saW5lRkwnKTsKLSAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKIH0KIGZ1bmN0aW9uIHJlbW92ZURpdigpIHsKICAgLy8gVGhpcyBjYXVz
ZXMgdGhlIHBhcmVudCB0byBvbmx5IGhhdmUgaW5saW5lIChhbmQgZmxvYXRpbmcpIGNoaWxkcmVu
CkBAIC0yMSw5ICsyMSw5IEBAIGZ1bmN0aW9uIGNoYW5nZURpdlN0eWxlKCkgewogfQogZnVuY3Rp
b24gc3RhcnRUZXN0KCkgewogICBzZXRUaW1lb3V0KCJjaGFuZ2VEaXZTdHlsZSgpOyIsIDEwKTsK
LSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICB9CiB9CiB3aW5kb3cu
b25sb2FkID0gc3RhcnRUZXN0OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVk
LWNvbnRlbnQvZmxvYXRpbmctYmVmb3JlLWNvbnRlbnQtd2l0aC1saXN0LW1hcmtlci1jcmFzaC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50
L2Zsb2F0aW5nLWJlZm9yZS1jb250ZW50LXdpdGgtbGlzdC1tYXJrZXItY3Jhc2guaHRtbAkocmV2
aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQv
ZmxvYXRpbmctYmVmb3JlLWNvbnRlbnQtd2l0aC1saXN0LW1hcmtlci1jcmFzaC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNCw2ICsxNCw2IEBAIHRib2R5RWxlbWVudC5hcHBlbmRDaGlsZChoZWFk
ZXJFbGVtZW50KTsKIAogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCdQQVNTIGlmIG5vIGNyYXNoIG9yIGFzc2VydCBpbiBkZWJ1Zycp
KTsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3Nz
LWdlbmVyYXRlZC1jb250ZW50L2hpdC10ZXN0LWdlbmVyYXRlZC1jb250ZW50Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvaGl0LXRlc3Qt
Z2VuZXJhdGVkLWNvbnRlbnQuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvaGl0LXRlc3QtZ2VuZXJhdGVkLWNvbnRlbnQuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMTksOCArMTksOCBAQAogCiA8L3N0eWxlPgogPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
IAogICBmdW5jdGlvbiBydW5UZXN0KCkKICAgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Z2VuZXJhdGVkLWNvbnRlbnQvaG92ZXItc3R5bGUtY2hhbmdlLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvaG92ZXItc3R5bGUtY2hhbmdl
Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRl
ZC1jb250ZW50L2hvdmVyLXN0eWxlLWNoYW5nZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw3
ICsxNCw3IEBACiAJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogCSAgIGZ1bmN0aW9u
IHRlc3QoKQogCSAgIHsKLQkgICAgICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisJICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCiAJICAgICAgICAgICByZXR1cm47CiAJ
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEyLCAxMik7ICAgIC8vIGhvdmVyCiAJICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOyAgICAvLyBnZXQgbm90aWNlZApJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvaW5saW5lLXNwbGl0dGluZy13aXRo
LWFmdGVyLWZsb2F0LWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9j
c3MtZ2VuZXJhdGVkLWNvbnRlbnQvaW5saW5lLXNwbGl0dGluZy13aXRoLWFmdGVyLWZsb2F0LWNy
YXNoLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVy
YXRlZC1jb250ZW50L2lubGluZS1zcGxpdHRpbmctd2l0aC1hZnRlci1mbG9hdC1jcmFzaC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC01LDggKzUsOCBAQCBQQVNTLCBpZiB0aGUgc2NyaXB0IGRvZXMg
bm90IGNhdXNlIGEgY3JhCiA8c2NyaXB0Pg0KICAgICBmdW5jdGlvbiBlbmRUZXN0KGNoaWxkU3Bh
bikgew0KICAgICAgICAgY2hpbGRTcGFuLmFwcGVuZENoaWxkKGRpdlRvSW5zZXJ0KTsNCi0gICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpDQotICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOw0KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQ0KKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOw0KICAgICB9DQogICAg
IGZ1bmN0aW9uIHN0YXJ0VGVzdCgpIHsNCiAgICAgICAgIHF1b3RlTm9kZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ3EnKTsNCkBAIC0xOCw5ICsxOCw5IEBAIFBBU1MsIGlmIHRoZSBzY3JpcHQg
ZG9lcyBub3QgY2F1c2UgYSBjcmEKICAgICAgICAgcGFyZW50U3Bhbi5hcHBlbmRDaGlsZChjaGls
ZFNwYW4pOw0KICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKHBh
cmVudFNwYW4pOw0KICAgICAgICAgc2V0VGltZW91dCgnZW5kVGVzdChjaGlsZFNwYW4pOycsIDUw
KTsNCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsNCi0gICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7DQotICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOw0KKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7DQorICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7DQor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7DQogICAgICAgICB9DQogICAgIH0N
CiAgICAgd2luZG93Lm9ubG9hZCA9IHN0YXJ0VGVzdDsNCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9tYWxmb3JtZWQtdXJsLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvbWFsZm9ybWVkLXVybC5odG1s
CShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29u
dGVudC9tYWxmb3JtZWQtdXJsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOSArNSw5IEBAIEFu
IGludmFsaWQgVVJMIGluIHRoZSAiY29udGVudCIgc3R5bGUgcHIKIAogRkFJTCAtIFRoZSBicm93
c2VyIHNob3VsZCBoYXZlIG5hdmlnYXRlZCB0byByZXNvdXJjZXMvcGFzcy5odG1sLgogPHNjcmlw
dD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiB3aW5kb3cubG9jYXRp
b24uaHJlZiA9ICdyZXNvdXJjZXMvcGFzcy5odG1sJzsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvcG9zaXRpb25lZC1iYWNrZ3JvdW5kLWhp
dC10ZXN0LWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2Vu
ZXJhdGVkLWNvbnRlbnQvcG9zaXRpb25lZC1iYWNrZ3JvdW5kLWhpdC10ZXN0LWNyYXNoLmh0bWwJ
KHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250
ZW50L3Bvc2l0aW9uZWQtYmFja2dyb3VuZC1oaXQtdGVzdC1jcmFzaC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0yNCwyMSArMjQsMjEgQEAKICAgICAgICAgICAgfSAgICAgICAKICAgICAgICAgPC9z
dHlsZT4KICAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAg
ICAgICAgICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKQogICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKICAgICAgICAgICAgICAgICBnZXRTZWxlY3Rp
b24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICAgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CiAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIuZHJhZ01vZGUgPSBmYWxzZTsKICAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxLCAxKTsKICAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZURvd24oKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVy
YXRlZC1jb250ZW50L3Bvc2l0aW9uZWQtZGl2LXdpdGgtZmxvYXRpbmctYWZ0ZXItY29udGVudC1j
cmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1j
b250ZW50L3Bvc2l0aW9uZWQtZGl2LXdpdGgtZmxvYXRpbmctYWZ0ZXItY29udGVudC1jcmFzaC5o
dG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQt
Y29udGVudC9wb3NpdGlvbmVkLWRpdi13aXRoLWZsb2F0aW5nLWFmdGVyLWNvbnRlbnQtY3Jhc2gu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDkgQEAKIDxzY3JpcHQ+CiBmdW5jdGlvbiBy
dW5UZXN0KCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7
CiAgICAgfQogfQogd2luZG93Lm9ubG9hZCA9IHJ1blRlc3Q7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9wb3NpdGlvbmVkLWdlbmVyYXRlZC1jb250ZW50LXVu
ZGVyLXJ1bi1pbi1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3Nz
LWdlbmVyYXRlZC1jb250ZW50L3Bvc2l0aW9uZWQtZ2VuZXJhdGVkLWNvbnRlbnQtdW5kZXItcnVu
LWluLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3Nz
LWdlbmVyYXRlZC1jb250ZW50L3Bvc2l0aW9uZWQtZ2VuZXJhdGVkLWNvbnRlbnQtdW5kZXItcnVu
LWluLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE0LDggKzE0LDggQEAgZnVuY3Rpb24g
cnVuVGVzdCgpIAogICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0ZXN0
Mik7CiAgICAgdGVzdDMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICBkb2N1
bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGVzdDMpOwotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogfQogd2luZG93Lm9ubG9hZCA9IHJ1blRlc3Q7CiA8L3NjcmlwdD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3JlbW92ZS1kaXYtZnJv
bS1mbGV4aWJsZS1ib3gtd2l0aC1mbG9hdGluZy1hZnRlci1jb250ZW50LWNyYXNoLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvcmVtb3Zl
LWRpdi1mcm9tLWZsZXhpYmxlLWJveC13aXRoLWZsb2F0aW5nLWFmdGVyLWNvbnRlbnQtY3Jhc2gu
aHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVk
LWNvbnRlbnQvcmVtb3ZlLWRpdi1mcm9tLWZsZXhpYmxlLWJveC13aXRoLWZsb2F0aW5nLWFmdGVy
LWNvbnRlbnQtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsNiArMTMsNiBAQCBwYXJl
bnREaXYuYXBwZW5kQ2hpbGQoY2hpbGREaXYpOwogcGFyZW50RGl2LmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCdQQVNTIGlmIG5vIGV4Y2VwdGlvbiBvciBjcmFzaCcpKTsKIGRv
Y3VtZW50LmRvY3VtZW50RWxlbWVudC5vZmZzZXRIZWlnaHQ7IC8vIGZvcmNlcyBhIGxheW91dAog
cGFyZW50RGl2LnJlbW92ZUNoaWxkKGNoaWxkRGl2KTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9yZXNldC1jb250
ZW50LXRvLWluaXRpYWwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy1n
ZW5lcmF0ZWQtY29udGVudC9yZXNldC1jb250ZW50LXRvLWluaXRpYWwuaHRtbAkocmV2aXNpb24g
MTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvcmVzZXQt
Y29udGVudC10by1pbml0aWFsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBACiAg
ICAgICAgIGRmbiB7IGNvbnRlbnQ6ICJ0ZXh0IjsgY29udGVudDogaW5pdGlhbDsgfQogICAgIDwv
c3R5bGU+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICA8L3NjcmlwdD4KIDwvaGVhZD4K
IDxib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvc3Bl
bGxpbmdUb29sVGlwLWFzc2VydC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y3NzLWdlbmVyYXRlZC1jb250ZW50L3NwZWxsaW5nVG9vbFRpcC1hc3NlcnQuaHRtbAkocmV2aXNp
b24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvc3Bl
bGxpbmdUb29sVGlwLWFzc2VydC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiwxMiArMTIsMTIg
QEAKICAgICB9CiAgICAgPC9zdHlsZT4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAg
ICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIXdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oMzAsIDMwKTsKICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOyAgICAv
LyBmb3JjZSBsYXlvdXQKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250
ZW50L3RhYmxlLXJvdy1hZnRlci1uby1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3RhYmxlLXJvdy1hZnRlci1uby1jcmFzaC5o
dG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQt
Y29udGVudC90YWJsZS1yb3ctYWZ0ZXItbm8tY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MSw4ICsxLDggQEAKIDxodG1sPgogICA8aGVhZD4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KICAgICA8c3R5bGU+CiAgICAgICBib2R5IDphZnRlciB7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC90YWJsZS13aXRo
LXNjcm9sbGJhci1jb3JuZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy1nZW5lcmF0ZWQtY29udGVudC90YWJsZS13aXRoLXNjcm9sbGJhci1jb3JuZXIuaHRtbAkocmV2
aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQv
dGFibGUtd2l0aC1zY3JvbGxiYXItY29ybmVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsNyAr
NSw3IEBACiA8L3N0eWxlPgogPHRhYmxlPjx0cj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIGRv
Y3VtZW50LmJvZHkuaW5uZXJIVE1MID0gIlBBU1MsIG5vIGNyYXNoIjsKIDwvc2NyaXB0PgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvdGV4dC1iZWZvcmUtdGFi
bGUtY29sLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2Vu
ZXJhdGVkLWNvbnRlbnQvdGV4dC1iZWZvcmUtdGFibGUtY29sLWNyYXNoLmh0bWwJKHJldmlzaW9u
IDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3RleHQt
YmVmb3JlLXRhYmxlLWNvbC1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDggKzcsOCBA
QAogICAgICAgICAgICAgfQ0KICAgICAgICAgPC9zdHlsZT4NCiAgICAgICAgIDxzY3JpcHQ+DQot
ICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCi0gICAgICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOw0KKyAgICAgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikNCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7DQogICAgICAgICA8L3NjcmlwdD4NCiAgICAgPC9oZWFkPg0KICAgICA8Ym9keT4NCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9yZXNvdXJjZXMvcGFz
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250
ZW50L3Jlc291cmNlcy9wYXNzLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3Jlc291cmNlcy9wYXNzLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNyArMSw3IEBACiA8aHRtbD4KIFBBU1MKIDxzY3JpcHQ+Ci1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKIDwvc2NyaXB0PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJh
dGVkLWNvbnRlbnQvcmVzb3VyY2VzL3Bvc2l0aW9uZWQtZGl2LXdpdGgtZmxvYXRpbmctYWZ0ZXIt
Y29udGVudC1jcmFzaC1mcmFtZTIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9yZXNvdXJjZXMvcG9zaXRpb25lZC1kaXYtd2l0aC1mbG9h
dGluZy1hZnRlci1jb250ZW50LWNyYXNoLWZyYW1lMi5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9yZXNvdXJjZXMvcG9zaXRp
b25lZC1kaXYtd2l0aC1mbG9hdGluZy1hZnRlci1jb250ZW50LWNyYXNoLWZyYW1lMi5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogPHNjcmlwdD4KIGZ1bmN0aW9uIGZpbmlzaFRl
c3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiB3aW5kb3cub25sb2FkID0g
ZmluaXNoVGVzdDsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1s
YXlvdXQvZGlzcGxheS1ncmlkLXNldC1nZXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9kaXNwbGF5LWdyaWQtc2V0LWdldC5odG1sCShyZXZpc2lv
biAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9kaXNwbGF5LWdy
aWQtc2V0LWdldC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBAQAogPGh0bWw+CiA8
aGVhZD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0Q1NTR3JpZExheW91
dEVuYWJsZWQiLCB0cnVlKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
Lm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0Q1NTR3JpZExheW91dEVuYWJsZWQiLCB0cnVlKTsK
IDwvc2NyaXB0PgogPHN0eWxlPgogLmdyaWQgeyBkaXNwbGF5OiAtd2Via2l0LWdyaWQ7IH0KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtY29sdW1ucy1yb3dzLWdl
dC1zZXQtbXVsdGlwbGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy1n
cmlkLWxheW91dC9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0LW11bHRpcGxlLmh0bWwJKHJldmlz
aW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtY29s
dW1ucy1yb3dzLWdldC1zZXQtbXVsdGlwbGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsy
LDggQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldl
YktpdENTU0dyaWRMYXlvdXRFbmFibGVkIiwgdHJ1ZSk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdENTU0dyaWRMYXlvdXRF
bmFibGVkIiwgdHJ1ZSk7CiA8L3NjcmlwdD4KIDxzdHlsZT4KIC5ncmlkV2l0aEZpeGVkIHsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtY29sdW1ucy1yb3dzLWdl
dC1zZXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91
dC9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxodG1sPgogPGhlYWQ+CiA8c2Ny
aXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdENTU0dyaWRMYXlvdXRFbmFibGVkIiwg
dHJ1ZSk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVBy
ZWZlcmVuY2UoIldlYktpdENTU0dyaWRMYXlvdXRFbmFibGVkIiwgdHJ1ZSk7CiA8L3NjcmlwdD4K
IDxzdHlsZT4KIC5ncmlkIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0
L2dyaWQtaXRlbS1jb2x1bW4tcm93LWdldC1zZXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWl0ZW0tY29sdW1uLXJvdy1nZXQtc2V0Lmh0
bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0
L2dyaWQtaXRlbS1jb2x1bW4tcm93LWdldC1zZXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4
ICsyLDggQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2Uo
IldlYktpdENTU0dyaWRMYXlvdXRFbmFibGVkIiwgdHJ1ZSk7CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdENTU0dyaWRMYXlv
dXRFbmFibGVkIiwgdHJ1ZSk7CiA8L3NjcmlwdD4KIDxzdHlsZT4KIC5ncmlkSXRlbVdpdGhQb3Np
dGl2ZUludGVnZXIgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvYWZmZWN0ZWQtYnktaG92
ZXItYWZ0ZXItc3R5bGUtY2hhbmdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9jc3MvYWZmZWN0ZWQtYnktaG92ZXItYWZ0ZXItc3R5bGUtY2hhbmdlLmh0bWwJKHJldmlzaW9u
IDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2FmZmVjdGVkLWJ5LWhvdmVyLWFmdGVy
LXN0eWxlLWNoYW5nZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw3ICsxMiw3IEBACiAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewogICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
bygyMDAsIDUwKTsKICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMjEwLCA1MCk7Ci0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1
bHQiKS5pbm5lclRleHQgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0YXJnZXQiKS5maXJzdEVsZW1lbnRDaGlsZCkuYmFja2dyb3VuZENvbG9yID09PSAicmdiKDAs
IDEyOCwgMCkiID8gIlBBU1MiIDogIkZBSUwiOwogICAgIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jc3MvYWxpZ24tcG9zaXRpb25lZC1vYmplY3Qtb24tcmVzaXplLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvYWxpZ24tcG9zaXRpb25lZC1vYmpl
Y3Qtb24tcmVzaXplLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y3NzL2FsaWduLXBvc2l0aW9uZWQtb2JqZWN0LW9uLXJlc2l6ZS5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC04LDEwICs4LDEwIEBACiAgICAgfQogICAgIDwvc3R5bGU+CiAgICAgPHNjcmlwdD4KLSAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmRpc3BsYXkoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgp
OworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiAgICAgfQogICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQogICAgIHsK
QEAgLTI3LDcgKzI3LDcgQEAKICAgICAgICAgICAgIGxvZygnUEFTUycpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBsb2coJ0ZBSUwnKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiAK
ICAgICBmdW5jdGlvbiBydW5UZXN0KCkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2FwcGVh
cmFuY2UtY2Fwcy1sb2NrLWluZGljYXRvci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvY3NzL2FwcGVhcmFuY2UtY2Fwcy1sb2NrLWluZGljYXRvci5odG1sCShyZXZpc2lvbiAx
MjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9hcHBlYXJhbmNlLWNhcHMtbG9jay1pbmRp
Y2F0b3IuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw4ICs1LDggQEAKIDxwIGlkPSJyZXN1bHQi
PkZBSUw6IFRlc3QgZGlkIG5vdCBydW48L3A+CiA8ZGl2IGlkPSJ0YXJnZXQiIHN0eWxlPSJkaXNw
bGF5OiBub25lOyAtd2Via2l0LWFwcGVhcmFuY2U6IGNhcHMtbG9jay1pbmRpY2F0b3I7Ij48L2Rp
dj4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICB2YXIgYXBw
ZWFyYW5jZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKS5zdHlsZS53ZWJraXRB
cHBlYXJhbmNlOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lclRl
eHQgPSBhcHBlYXJhbmNlID09PSAiIiA/ICJQQVNTIiA6ICJGQUlMOiBwYXJzZWQgYXMgIiArIGFw
cGVhcmFuY2U7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9hc3NlcnQtbWFycXVlZS1ub3Qt
bGFzdC1lbGVtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvYXNz
ZXJ0LW1hcnF1ZWUtbm90LWxhc3QtZWxlbWVudC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9hc3NlcnQtbWFycXVlZS1ub3QtbGFzdC1lbGVtZW50Lmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdD4K
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgogICAgIG1h
cnF1ZWUgeyBkaXNwbGF5OiBydW4taW47IH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2F0
cnVsZV9sb25nZXN0X21hdGNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9j
c3MvYXRydWxlX2xvbmdlc3RfbWF0Y2guaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jc3MvYXRydWxlX2xvbmdlc3RfbWF0Y2guaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtOSw4ICs5LDggQEAgcC50ZXN0IHsgZGlzcGxheTogbm9uZSB9CiBwLnRlc3QgeyBkaXNwbGF5
OiBibG9jayB9CiA8L3N0eWxlPgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2F0dHItcGFyc2luZy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY3NzL2F0dHItcGFyc2luZy5odG1sCShyZXZpc2lvbiAxMjA2NzUp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9hdHRyLXBhcnNpbmcuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtNDUsOCArNDUsOCBAQAogCiA8c2NyaXB0PgogCi1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogdmFyIHJ1
bGVzID0gZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXM7CiB2YXIgdGV4dCA9ICIiOwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvYXR0cmlidXRlLXNlbGVjdG9yLWJlZ2luLWR5bmFt
aWMtbm8tZWxlbWVudHN0eWxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9j
c3MvYXR0cmlidXRlLXNlbGVjdG9yLWJlZ2luLWR5bmFtaWMtbm8tZWxlbWVudHN0eWxlLmh0bWwJ
KHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2F0dHJpYnV0ZS1zZWxl
Y3Rvci1iZWdpbi1keW5hbWljLW5vLWVsZW1lbnRzdHlsZS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xOSwxNCArMTksMTQgQEAKICAgICAgICAgZnVuY3Rpb24gY2hhbmdlKCkgewogICAgICAgICAg
ICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2JylbMF07
CiAgICAgICAgICAgICBlbGVtZW50LmF0dHJpYnV0ZXMudGVzdC52YWx1ZSA9ICcwWFlaJzsKLSAg
ICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBmdW5jdGlvbiBzdGFydFRl
c3QoKSB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gVHJpZ2dlciBhbiBhdHRyaWJ1dGUgY2hh
bmdlIGFmdGVyIGFsbCBsb2FkIHByb2Nlc3NpbmcgaXMgZG9uZS4gRG9pbmcgdGhlIGNoYW5nZQog
ICAgICAgICAgICAgLy8gaGVyZSBpbW1lZGlhdGVseSBkb2VzIG5vdCBleGhpYml0IHRoZSBwcm9i
bGVtLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvYXR0cmlidXRlLXNlbGVjdG9yLWNvbnRh
aW4tZHluYW1pYy1uby1lbGVtZW50c3R5bGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9hdHRyaWJ1dGUtc2VsZWN0b3ItY29udGFpbi1keW5hbWljLW5vLWVsZW1lbnRz
dHlsZS5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9hdHRy
aWJ1dGUtc2VsZWN0b3ItY29udGFpbi1keW5hbWljLW5vLWVsZW1lbnRzdHlsZS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOSwxNCArMTksMTQgQEAKICAgICAgICAgZnVuY3Rpb24gY2hhbmdlKCkg
ewogICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgnZGl2JylbMF07CiAgICAgICAgICAgICBlbGVtZW50LmF0dHJpYnV0ZXMudGVzdC52YWx1ZSA9
ICJ1cGRhdGVkMHZhbHVlIjsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
ICAgICBmdW5jdGlvbiBzdGFydFRlc3QoKSB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gVHJp
Z2dlciBhbiBhdHRyaWJ1dGUgY2hhbmdlIGFmdGVyIGFsbCBsb2FkIHByb2Nlc3NpbmcgaXMgZG9u
ZS4gRG9pbmcgdGhlIGNoYW5nZQogICAgICAgICAgICAgLy8gaGVyZSBpbW1lZGlhdGVseSBkb2Vz
IG5vdCBleGhpYml0IHRoZSBwcm9ibGVtLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvYXR0
cmlidXRlLXNlbGVjdG9yLWR5bmFtaWMueG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvY3NzL2F0dHJpYnV0ZS1zZWxlY3Rvci1keW5hbWljLnhtbAkocmV2aXNpb24gMTIwNjc1KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvYXR0cmlidXRlLXNlbGVjdG9yLWR5bmFtaWMueG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xNywxMyArMTcsMTMgQEAKICAgICAgICAgZnVuY3Rpb24gY2hhbmdl
KCkgewogICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgndGVzdCcpWzBdOwogICAgICAgICAgICAgZWxlbWVudC5hdHRyaWJ1dGVzLnRlc3QudmFs
dWUgPSAwOwotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiAgICAgICAgIH0KICAgICAgIAogICAgICAgICB3aW5kb3cub25sb2FkID0g
ZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgICAgICAvLyBUcmlnZ2VyIGFuIGF0dHJp
YnV0ZSBjaGFuZ2UgYWZ0ZXIgYWxsIGxvYWQgcHJvY2Vzc2luZyBpcyBkb25lLiBEb2luZyB0aGUg
Y2hhbmdlCiAgICAgICAgICAgICAvLyBoZXJlIGltbWVkaWF0ZWx5IGRvZXMgbm90IGV4aGliaXQg
dGhlIHByb2JsZW0uCiAgICAgICAgICAgICBzZXRUaW1lb3V0KCJjaGFuZ2UoKTsiLCAwKTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2F0dHJpYnV0ZS1zZWxlY3Rvci1lbmQtZHluYW1pYy1u
by1lbGVtZW50c3R5bGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9h
dHRyaWJ1dGUtc2VsZWN0b3ItZW5kLWR5bmFtaWMtbm8tZWxlbWVudHN0eWxlLmh0bWwJKHJldmlz
aW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2F0dHJpYnV0ZS1zZWxlY3Rvci1l
bmQtZHluYW1pYy1uby1lbGVtZW50c3R5bGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTksMTQg
KzE5LDE0IEBACiAgICAgICAgIGZ1bmN0aW9uIGNoYW5nZSgpIHsKICAgICAgICAgICAgIHZhciBl
bGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2RpdicpWzBdOwogICAgICAg
ICAgICAgZWxlbWVudC5hdHRyaWJ1dGVzLnRlc3QudmFsdWUgPSAidXBkYXRlZDAiOwotICAgICAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0VGVzdCgp
IHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBUcmlnZ2VyIGFuIGF0dHJpYnV0ZSBjaGFuZ2Ug
YWZ0ZXIgYWxsIGxvYWQgcHJvY2Vzc2luZyBpcyBkb25lLiBEb2luZyB0aGUgY2hhbmdlCiAgICAg
ICAgICAgICAvLyBoZXJlIGltbWVkaWF0ZWx5IGRvZXMgbm90IGV4aGliaXQgdGhlIHByb2JsZW0u
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9hdHRyaWJ1dGUtc2VsZWN0b3ItZXhhY3QtZHlu
YW1pYy1uby1lbGVtZW50c3R5bGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2Nzcy9hdHRyaWJ1dGUtc2VsZWN0b3ItZXhhY3QtZHluYW1pYy1uby1lbGVtZW50c3R5bGUuaHRt
bAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvYXR0cmlidXRlLXNl
bGVjdG9yLWV4YWN0LWR5bmFtaWMtbm8tZWxlbWVudHN0eWxlLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTE5LDE0ICsxOSwxNCBAQAogICAgICAgICBmdW5jdGlvbiBjaGFuZ2UoKSB7CiAgICAgICAg
ICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdkaXYnKVsw
XTsKICAgICAgICAgICAgIGVsZW1lbnQuYXR0cmlidXRlcy50ZXN0LnZhbHVlID0gMDsKLSAgICAg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBmdW5jdGlvbiBzdGFydFRlc3Qo
KSB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gVHJpZ2dlciBhbiBhdHRyaWJ1dGUgY2hhbmdl
IGFmdGVyIGFsbCBsb2FkIHByb2Nlc3NpbmcgaXMgZG9uZS4gRG9pbmcgdGhlIGNoYW5nZQogICAg
ICAgICAgICAgLy8gaGVyZSBpbW1lZGlhdGVseSBkb2VzIG5vdCBleGhpYml0IHRoZSBwcm9ibGVt
LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvYXR0cmlidXRlLXNlbGVjdG9yLWh5cGhlbi1k
eW5hbWljLW5vLWVsZW1lbnRzdHlsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvY3NzL2F0dHJpYnV0ZS1zZWxlY3Rvci1oeXBoZW4tZHluYW1pYy1uby1lbGVtZW50c3R5bGUu
aHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvYXR0cmlidXRl
LXNlbGVjdG9yLWh5cGhlbi1keW5hbWljLW5vLWVsZW1lbnRzdHlsZS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xOSwxNCArMTksMTQgQEAKICAgICAgICAgZnVuY3Rpb24gY2hhbmdlKCkgewogICAg
ICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2
JylbMF07CiAgICAgICAgICAgICBlbGVtZW50LmF0dHJpYnV0ZXMudGVzdC52YWx1ZSA9ICIwLXVw
ZGF0ZWQiOwotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGZ1bmN0
aW9uIHN0YXJ0VGVzdCgpIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBUcmlnZ2VyIGFuIGF0
dHJpYnV0ZSBjaGFuZ2UgYWZ0ZXIgYWxsIGxvYWQgcHJvY2Vzc2luZyBpcyBkb25lLiBEb2luZyB0
aGUgY2hhbmdlCiAgICAgICAgICAgICAvLyBoZXJlIGltbWVkaWF0ZWx5IGRvZXMgbm90IGV4aGli
aXQgdGhlIHByb2JsZW0uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9hdHRyaWJ1dGUtc2Vs
ZWN0b3ItbGlzdC1keW5hbWljLW5vLWVsZW1lbnRzdHlsZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvY3NzL2F0dHJpYnV0ZS1zZWxlY3Rvci1saXN0LWR5bmFtaWMtbm8tZWxl
bWVudHN0eWxlLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3Nz
L2F0dHJpYnV0ZS1zZWxlY3Rvci1saXN0LWR5bmFtaWMtbm8tZWxlbWVudHN0eWxlLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTE5LDE0ICsxOSwxNCBAQAogICAgICAgICBmdW5jdGlvbiBjaGFuZ2Uo
KSB7CiAgICAgICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCdkaXYnKVswXTsKICAgICAgICAgICAgIGVsZW1lbnQuYXR0cmlidXRlcy50ZXN0LnZhbHVl
ID0gInVwZGF0ZWQgYXR0cmlidXRlZCB2YWx1ZSAwIjsKLSAgICAgICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgICAgICBmdW5jdGlvbiBzdGFydFRlc3QoKSB7Ci0gICAgICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgLy8gVHJpZ2dlciBhbiBhdHRyaWJ1dGUgY2hhbmdlIGFmdGVyIGFsbCBsb2FkIHBy
b2Nlc3NpbmcgaXMgZG9uZS4gRG9pbmcgdGhlIGNoYW5nZQogICAgICAgICAgICAgLy8gaGVyZSBp
bW1lZGlhdGVseSBkb2VzIG5vdCBleGhpYml0IHRoZSBwcm9ibGVtLgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jc3MvYXR0cmlidXRlLXNlbGVjdG9yLXNldC1keW5hbWljLW5vLWVsZW1lbnRzdHls
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2F0dHJpYnV0ZS1zZWxl
Y3Rvci1zZXQtZHluYW1pYy1uby1lbGVtZW50c3R5bGUuaHRtbAkocmV2aXNpb24gMTIwNjc1KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvYXR0cmlidXRlLXNlbGVjdG9yLXNldC1keW5hbWljLW5v
LWVsZW1lbnRzdHlsZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xOSwxNCArMTksMTQgQEAKICAg
ICAgICAgZnVuY3Rpb24gY2hhbmdlKCkgewogICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2JylbMF07CiAgICAgICAgICAgICBlbGVtZW50
LnNldEF0dHJpYnV0ZSgidGVzdCIsICIwIik7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICAgICAgZnVuY3Rpb24gc3RhcnRUZXN0KCkgewotICAgICAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIC8vIFRyaWdnZXIgYW4gYXR0cmlidXRlIGNoYW5nZSBhZnRlciBhbGwgbG9hZCBwcm9jZXNz
aW5nIGlzIGRvbmUuIERvaW5nIHRoZSBjaGFuZ2UKICAgICAgICAgICAgIC8vIGhlcmUgaW1tZWRp
YXRlbHkgZG9lcyBub3QgZXhoaWJpdCB0aGUgcHJvYmxlbS4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvY3NzL2JhY2tncm91bmQtbm9yZXBlYXQtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9iYWNrZ3JvdW5kLW5vcmVwZWF0LWNyYXNoLmh0bWwJKHJldmlzaW9u
IDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2JhY2tncm91bmQtbm9yZXBlYXQtY3Jh
c2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxoZWFkPgogICAgIDx0aXRs
ZT48L3RpdGxlPgogICAgIDxzY3JpcHQ+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogICAgIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgc3R5bGU9ImJhY2tn
cm91bmQ6dXJsKCksdXJsKCk7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsiPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9jc3MvYmFja2dyb3VuZC1wb3NpdGlvbi1pbmhlcml0Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvYmFja2dyb3VuZC1wb3NpdGlvbi1pbmhl
cml0Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2JhY2tn
cm91bmQtcG9zaXRpb24taW5oZXJpdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDggKzcsOCBA
QAogPHAgaWQ9InJlc3VsdCI+CiA8L3A+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogCiAgICAgdmFyIHRhcmdldEJhY2tncm91bmRQb3NpdGlvbiA9IGdldENvbXB1dGVk
U3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKS5iYWNrZ3JvdW5kUG9zaXRp
b24sY3NzVGV4dDsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvYmFja2dyb3VuZC1wb3Np
dGlvbi1zZXJpYWxpemUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9i
YWNrZ3JvdW5kLXBvc2l0aW9uLXNlcmlhbGl6ZS5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9iYWNrZ3JvdW5kLXBvc2l0aW9uLXNlcmlhbGl6ZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCw4ICszOCw4IEBAIGZ1bmN0aW9uIHNob3VsZEJlKGEsIGIpCiAg
ICAgICAgIHByaW50KCJGQUlMOiAiICsgYSArICIgc2hvdWxkIGJlICIgKyBiICsgIiBidXQgaW5z
dGVhZCBpcyAiICsgZXZhbEEgKyAiLiIsICJyZWQiKTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHZh
ciB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3QnKTsKIApJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvYm9yZGVyLWltYWdlLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jc3MvYm9yZGVyLWltYWdlLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysr
IExheW91dFRlc3RzL2Zhc3QvY3NzL2JvcmRlci1pbWFnZS1jcmFzaC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0yLDggKzIsOCBAQAogPGhlYWQ+CiAgICAgPHRpdGxlPjwvdGl0bGU+CiAgICAgPHNj
cmlwdD4KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAg
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2Jv
cmRlci1yYWRpdXMtbm9uLW5lZ2F0aXZlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvYm9yZGVyLXJhZGl1cy1ub24tbmVnYXRpdmUuaHRtbAkocmV2aXNpb24gMTIwNjc1
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvYm9yZGVyLXJhZGl1cy1ub24tbmVnYXRpdmUuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsOCBAQCBkaXYgew0KIDwvc3R5bGU+DQogPC9o
ZWFkPg0KIDxzY3JpcHQ+DQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCi0gICAg
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7DQoraWYgKHdpbmRv
dy50ZXN0UnVubmVyKQ0KKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOw0K
IDwvc2NyaXB0Pg0KIDxib2R5Pg0KIDxkaXYgaWQ9InJlZmVyZW5jZTEiPjwvZGl2Pg0KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvY3NzL2JvcmRlci1yYWRpdXMtcHJvcGVydHktdmFsdWUuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9ib3JkZXItcmFkaXVzLXByb3BlcnR5
LXZhbHVlLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2Jv
cmRlci1yYWRpdXMtcHJvcGVydHktdmFsdWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw4ICs5
LDggQEAKIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGRlc2NyaXB0aW9uKCJUZXN0IGZvciBC
dWc6IDgwNzM2IC0gQ1NTU3R5bGVEZWNsYXJhdGlvbi5nZXRQcm9wZXJ0eVZhbHVlKCkgZm9yICdi
b3JkZXItcmFkaXVzJyByZXR1cm5zIG51bGwgd2hlbiB2YWx1ZSBpcyBzZXQiKTsKIApJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9jc3MvYm9yZGVyLXNvbGlkLXNpbmdsZS1lZGdlLWFudGlhbGlhcy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2JvcmRlci1zb2xpZC1zaW5n
bGUtZWRnZS1hbnRpYWxpYXMuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvYm9yZGVyLXNvbGlkLXNpbmdsZS1lZGdlLWFudGlhbGlhcy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0yMSw3ICsyMSw3IEBACiAuZG93biB7IGJvcmRlci10b3A6IDYxcHggc29saWQg
cHVycGxlOyB9CiA8L3N0eWxlPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CitpZiAod2luZG93
LnRlc3RSdW5uZXIpIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKIDwvc2NyaXB0PgogPC9o
ZWFkPgogPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9ib3JkZXItc3BhY2luZy13
aXRob3V0LXZlcnRpY2FsLXZhbHVlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9jc3MvYm9yZGVyLXNwYWNpbmctd2l0aG91dC12ZXJ0aWNhbC12YWx1ZS5odG1sCShyZXZpc2lv
biAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9ib3JkZXItc3BhY2luZy13aXRob3V0
LXZlcnRpY2FsLXZhbHVlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsOCArNCw4IEBACiBXZWJL
aXQgc2hvdWxkIG5vdCBjcmFzaCBhbmQgd2Ugc2hvdWxkIGdldCBudWxsLjwvcD4KIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHZhciBhID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiYSIpOwogYS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgIi13ZWJraXQt
Ym9yZGVyLWhvcml6b250YWwtc3BhY2luZzogMXB4OyIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9jc3MvYnV0dG9uLWhlaWdodC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y3NzL2J1dHRvbi1oZWlnaHQuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvYnV0dG9uLWhlaWdodC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBA
QAogI2J1dHRvbjQgeyBoZWlnaHQ6IDQwcHg7IGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsgfQog
PC9zdHlsZT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogd2luZG93Lm9ubG9hZCA9IGZ1bmN0
aW9uKCkKIHsKQEAgLTIyLDcgKzIyLDcgQEAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKICAg
ICBlbHNlCiAgICAgICAgIHRlc3RGYWlsZWQoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidXR0
b241Jykub2Zmc2V0SGVpZ2h0IGlzIGluY29ycmVjdCBmb3IgdGhpcyBwbGF0Zm9ybS4gU2hvdWxk
IGJlIHRoZSBzYW1lIGhlaWdodCBhcyBidXR0b24gMSBmb3IgdGhlIE1hYyBwb3J0cyBhbmQgNDAg
b3RoZXJ3aXNlLiIpOwogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAgICB2YXIgdGVzdENvbnRhaW5lciA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LWNvbnRhaW5lciIpOwogICAgICAgICBpZiAo
dGVzdENvbnRhaW5lcikKICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGVz
dENvbnRhaW5lcik7ICAgCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jYWNoZWQtc2hlZXQt
cmVzdG9yZS1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2Nh
Y2hlZC1zaGVldC1yZXN0b3JlLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91
dFRlc3RzL2Zhc3QvY3NzL2NhY2hlZC1zaGVldC1yZXN0b3JlLWNyYXNoLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw2IEBACiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4K
IDxib2R5PgogPGxpbmsgaHJlZj0icmVzb3VyY2VzL3NtYWxsLmNzcyIgcmVsPSJzdHlsZXNoZWV0
Ij4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2Nhc2UtdHJhbnNmb3JtLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY2FzZS10cmFuc2Zvcm0uaHRtbAkocmV2aXNp
b24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY2FzZS10cmFuc2Zvcm0uaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIDxodG1sPgogPGhlYWQ+CiA8bWV0YSBodHRw
LWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+
Ci08c2NyaXB0PmlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTs8L3NjcmlwdD4KKzxzY3JpcHQ+aWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTs8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5Pgog
PHA+bG93ZXIoQfCQkIApID0gPHNwYW4gc3R5bGU9InRleHQtdHJhbnNmb3JtOmxvd2VyY2FzZSI+
QfCQkIA8L3NwYW4+IChzaG91bGQgYmUgYfCQkKgpPC9wPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9jc3MvY2hlY2tlZC1wc2V1ZG8tc2VsZWN0b3IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9jaGVja2VkLXBzZXVkby1zZWxlY3Rvci5odG1sCShyZXZpc2lvbiAxMjA2
NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jaGVja2VkLXBzZXVkby1zZWxlY3Rvci5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCw4IEBAIHZhciB0b3RhbENoZWNrZWQgPSAwOwog
dmFyIGV4cGVjdGVkQ291bnQgPSAwOwogdmFyIGlkQXJyYXk9bmV3IEFycmF5KCJvcHRpb24xIiwi
b3B0aW9uMiIsIm9wdGlvbjMiLCJvcHRpb240IiwicmFkaW8xIiwicmFkaW8yIiwiY2hlY2tib3gx
IiwiY2hlY2tib3gyIik7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIH0KIAogZnVuY3Rpb24gaXNDaGVj
a2VkT3JTZWxlY3RlZChpZCkgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY2hpbGQtc2Vs
ZWN0b3ItaW1wbGljaXQtdGJvZHkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2Nzcy9jaGlsZC1zZWxlY3Rvci1pbXBsaWNpdC10Ym9keS5odG1sCShyZXZpc2lvbiAxMjA2NzUp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jaGlsZC1zZWxlY3Rvci1pbXBsaWNpdC10Ym9keS5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogPHNjcmlwdD4KIGZ1bmN0aW9uIHRl
c3QoKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIHJlc3VsdCA9ICJURVNU
IEZBSUxFRCI7CiAgICAgaWYgKGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNlbGwxIikpLmZvbnRXZWlnaHQgPT0gIm5vcm1hbCIpCiAgICAgICAgIGlmIChnZXRDb21w
dXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjZWxsMiIpKS5mb250V2VpZ2h0ID09
ICJib2xkIikKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2NvbW1lbnQtYmVmb3JlLWNoYXJz
ZXQtZXh0ZXJuYWwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb21t
ZW50LWJlZm9yZS1jaGFyc2V0LWV4dGVybmFsLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvY3NzL2NvbW1lbnQtYmVmb3JlLWNoYXJzZXQtZXh0ZXJuYWwuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0Pgot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CiAKIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKICAgICB2YXIgZWxt
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwcm9iZSIpOyAgCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9jb21tZW50LWJlZm9yZS1jaGFyc2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9jc3MvY29tbWVudC1iZWZvcmUtY2hhcnNldC5odG1sCShyZXZpc2lvbiAx
MjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb21tZW50LWJlZm9yZS1jaGFyc2V0Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlw
dD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogCiB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgdmFy
IGVsbXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHJvYmUiKTsgIApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jc3MvY29tcGFyZS1jb250ZW50LXN0eWxlLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jc3MvY29tcGFyZS1jb250ZW50LXN0eWxlLmh0bWwJKHJldmlzaW9u
IDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2NvbXBhcmUtY29udGVudC1zdHlsZS5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw4ICsxNCw4IEBACiA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgogZnVuY3Rpb24gcnVuVGVzdCgpCiB7Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5xdWV1ZVJlbG9hZCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICB0ZXN0UnVubmVyLnF1ZXVlUmVsb2FkKCk7CiAgICAgfQogfQogPC9zY3JpcHQ+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVyLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlci1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2NzUp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVyLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTIsOCArMiw4IEBACiAgICAgPHNjcmlwdD4NCiAgICAgICAgIHdpbmRvdy5vbmxvYWQg
PSBmdW5jdGlvbigpDQogICAgICAgICB7DQotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikNCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOw0KKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikNCisgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7DQogDQogICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnQnKS5pbm5lckhUTUwgPSAiUEFTUzogcmVuZGVyZWQg
Y291bnRlciBub2RlcyB3aXRob3V0IGNyYXNoaW5nLiI7DQogICAgICAgICB9DQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jc3MvY3Jhc2gtb24tY3VzdG9tLWN1cnNvci13aGVuLWxvYWRpbmcuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jcmFzaC1vbi1jdXN0b20tY3Vy
c29yLXdoZW4tbG9hZGluZy5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9jcmFzaC1vbi1jdXN0b20tY3Vyc29yLXdoZW4tbG9hZGluZy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xMiw4ICsxMiw4IEBACiA8Ym9keT4KICAgICA8ZGl2PjwvZGl2PgogICAgIDxz
Y3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CiAgICAgICAgIGV2ZW50U2VuZGVyLmRyYWdNb2RlID0gZmFsc2U7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jcmFzaC1vbi1pbmNvbXBsZXRlLW5vdC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2NyYXNoLW9uLWluY29tcGxldGUtbm90Lmh0
bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2NyYXNoLW9uLWlu
Y29tcGxldGUtbm90Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksMTMgKzksMTMgQEAKICAgICB3
aW5kb3cuc2V0VGltZW91dChydW5UZXN0LDApOwogICAgIGZ1bmN0aW9uIHJ1blRlc3QoKXsKICAg
ICAgICAgbWUudGV4dENvbnRlbnQ9ZzsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9CiAgICAgfQotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiA8L3NjcmlwdD4K
IDxwPlBBU1Mgd2l0aG91dCBjcmFzaC48L3A+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9j
c3MtZm9udGZhY2UtcnVsZS1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvY3NzL2Nzcy1mb250ZmFjZS1ydWxlLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysr
IExheW91dFRlc3RzL2Zhc3QvY3NzL2Nzcy1mb250ZmFjZS1ydWxlLWNyYXNoLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTIsOSArMiw5IEBACiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvZ2MuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGxvYWQoKQpAQCAtMjgsOCArMjgsOCBAQCBmdW5j
dGlvbiBjcmFzaCgpCiAgICAgaWYgKG9iaikKICAgICAgICAgb2JqID0gb2JqLmZvbzsKICAgICBk
b2N1bWVudC5ib2R5LmlubmVyVGV4dCA9ICdQQVNTJzsKLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCkK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpCiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2Nz
cy1pbXBvcnRzLTIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jc3Mt
aW1wb3J0cy0yLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3Nz
L2Nzcy1pbXBvcnRzLTIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKICAgICBA
aW1wb3J0IHVybCgncmVzb3VyY2VzL2Nzcy1pbXBvcnRzLmNzcycpOwogPC9zdHlsZT4KIDxzY3Jp
cHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gIlBBU1MiOwogPC9z
Y3JpcHQ+CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2Nzcy1rZXlmcmFtZS1wYXJlbnQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jc3Mta2V5ZnJhbWUtcGFy
ZW50Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2Nzcy1r
ZXlmcmFtZS1wYXJlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDggQEAKICAgICA8
c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KICAgICBmdW5jdGlvbiBydW5UZXN0KCkKICAg
ICB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAg
ICAgIHJ1bGUgPSBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1swXTsKICAgICAgICAg
aWYgKHJ1bGVbMF0ucGFyZW50UnVsZSA9PSBydWxlKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9j
c3MvY3NzLWtleWZyYW1lLXN0eWxlLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jc3MvY3NzLWtleWZyYW1lLXN0eWxlLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY3
NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2Nzcy1rZXlmcmFtZS1zdHlsZS1jcmFzaC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQ+
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBpZiAoIXdpbmRvdy5n
YykKQEAgLTMxLDggKzMxLDggQEAgZnVuY3Rpb24gY3Jhc2goKQogewogICAgIGdjKCk7CiAgICAg
b2JqID0gcnVsZS5zdHlsZS5wYXJlbnRSdWxlOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKQorICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCkK
IH0KIDwvc2NyaXB0PgogPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzLXBy
b3BlcnRpZXMtY2FzZS1pbnNlbnNpdGl2ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvY3NzL2Nzcy1wcm9wZXJ0aWVzLWNhc2UtaW5zZW5zaXRpdmUuaHRtbAkocmV2aXNpb24g
MTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzLXByb3BlcnRpZXMtY2FzZS1pbnNl
bnNpdGl2ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw4ICsxMyw4IEBACiAgICAgICAgICAg
ICB2YXIgdGVzdDsKICAgICAgICAgICAgIHZhciBsb3dlclZhbHVlLCB1cHBlclZhbHVlOwogCi0g
ICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKIAogICAgICAgICAgICAgdGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jyk7
CiAgICAgICAgICAgICBsb3dlclZhbHVlID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0
ZWRTdHlsZSh0ZXN0LCAiIikuZ2V0UHJvcGVydHlWYWx1ZSgid2lkdGgiKTsKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY3NzL2Nzcy1zZWxlY3Rvci1kZWVwbHktbmVzdGVkLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzLXNlbGVjdG9yLWRlZXBseS1uZXN0ZWQuaHRt
bAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzLXNlbGVjdG9y
LWRlZXBseS1uZXN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTYsOCArMTYsOCBAQCBmdW5j
dGlvbiBnZW5lcmF0ZV9kZWVwbHlfbmVzdGVkX3NlbGVjdG9yCiAKIGdlbmVyYXRlX2RlZXBseV9u
ZXN0ZWRfc2VsZWN0b3IoNDAwMDAwKTsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDxwPlRl
c3QgY2FzZSBmb3IgPGEgaHJlZj0iaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDExMjkiPmh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMTI5PC9h
PjwvcD4KIDxwPklmIGJyb3dzZXIgZGlkbid0IGNyYXNoLCB0aGUgdGVzdCBwYXNzZWQuPC9wPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzLXNldC1zZWxlY3Rvci10ZXh0LWNyYXNoLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzLXNldC1zZWxlY3Rvci10
ZXh0LWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3Nz
L2Nzcy1zZXQtc2VsZWN0b3ItdGV4dC1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDgg
KzQsOCBAQAogOnRhcmdldCB7IHRvcDogMDsgfQogPC9zdHlsZT4KIDxzY3JpcHQ+Ci1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKIAogZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uc2VsZWN0b3JUZXh0
ID0gJzp0YXJnZXQnOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jc3NU
ZXh0LWNhY2hlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzVGV4
dC1jYWNoZS5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9j
c3NUZXh0LWNhY2hlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBACiA8L2Rpdj4K
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CiAKLSAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKIAogICB2YXIgc3R5bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94
Jykuc3R5bGU7CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1mb250LXhoZWln
aHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tZm9udC14
aGVpZ2h0Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1
c3RvbS1mb250LXhoZWlnaHQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsOCBAQCBX
ZWJLaXQgbmlnaHRseSBhZGRpbmcgaW5zYW5lIGhlaWdodCB0byBkCiA8L2Rpdj4KIAogPHNjcmlw
dD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY3NzL2Rhc2hib2FyZC1yZWdpb25zLWF0dHItY3Jhc2guaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9kYXNoYm9hcmQtcmVnaW9ucy1hdHRyLWNyYXNoLmh0bWwJ
KHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2Rhc2hib2FyZC1yZWdp
b25zLWF0dHItY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxodG1s
PgogPGhlYWQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3Jp
cHQ+CiA8L2hlYWQ+CiA8Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2Rhc2hib2Fy
ZC1yZWdpb25zLXVuZGVmaW5lZC1sZW5ndGgtYXNzZXJ0aW9uLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jc3MvZGFzaGJvYXJkLXJlZ2lvbnMtdW5kZWZpbmVkLWxlbmd0aC1h
c3NlcnRpb24uaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
ZGFzaGJvYXJkLXJlZ2lvbnMtdW5kZWZpbmVkLWxlbmd0aC1hc3NlcnRpb24uaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiA8L3NjcmlwdD4KIDxkaXYgc3R5bGU9Ii13ZWJraXQtZGFzaGJvYXJkLXJlZ2lvbjog
ZGFzaGJvYXJkLXJlZ2lvbihjb250cm9sIHJlY3RhbmdsZSkiPjwvZGl2PgogPHA+VGhlIHRlc3Qg
cGFzc2VzIGlmIGl0IGRvZXMgbm90IGNhdXNlIGFuIGFzc2VydGlvbiBmYWlsdXJlLjwvcD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2RlbGV0ZS1ydWxlLWNyYXNoLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvZGVsZXRlLXJ1bGUtY3Jhc2guaHRtbAkocmV2aXNp
b24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvZGVsZXRlLXJ1bGUtY3Jhc2guaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIDxzY3JpcHQ+Ci1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
IDwvc2NyaXB0PgogPHN0eWxlPgogLnJ1bGUxIHt9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy9kZXZpY2UtYXNwZWN0LXJhdGlvLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9jc3MvZGV2aWNlLWFzcGVjdC1yYXRpby5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9kZXZpY2UtYXNwZWN0LXJhdGlvLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTMsOCArMyw4IEBACiA8aGVhZCBpZD0ibXloZWFkIj4KIDxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgd2luZG93LnRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiB2YXIgY291bnQgPSAwOwpAQCAtMzAsOCAr
MzAsOCBAQCBmdW5jdGlvbiB3YWl0Rm9yU3R5bGVzaGVldExvYWQoKQogICAgIGlmIChkb2N1bWVu
dC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdk
ZXNjcmlwdGlvbicpLCBudWxsKS5jb2xvciA9PSAicmdiKDAsIDEyOCwgMCkiKSB7CiAgICAgICAg
IHNob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdkZXNjcmlwdGlvbicpLCBudWxsKS5jb2xvciIsICIncmdiKDAsIDEy
OCwgMCknIik7CiAgICAgICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Ci0gICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9k
Zm4tZGVmYXVsdC1mb250LXN0eWxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9jc3MvZGZuLWRlZmF1bHQtZm9udC1zdHlsZS5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9kZm4tZGVmYXVsdC1mb250LXN0eWxlLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEzLDggKzEzLDggQEAgaWYgKGRmbmZvbnQgPT0gJ2l0YWxpYycpCiBlbHNlCiAg
ICAgdGVzdHJlc3VsdCA9ICdGQUlMJzsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogfQogCiBkb2N1bWVu
dC53cml0ZWxuKHRlc3RyZXN1bHQpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvZGlzYWJs
ZWQtYXV0aG9yLXN0eWxlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3Nz
L2Rpc2FibGVkLWF1dGhvci1zdHlsZXMuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jc3MvZGlzYWJsZWQtYXV0aG9yLXN0eWxlcy5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0zLDEyICszLDEyIEBACiAgICAgPHNjcmlwdD4KICAgICAgICAgZnVuY3Rpb24gbG9hZGVk
KCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKKyAgICAgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgICAg
ICAgIGFsZXJ0KCJUaGlzIHRlc3QgbXVzdCBiZSBydW4gaW4gdGhlIER1bXBSZW5kZXJUcmVlIHRv
IHdvcmsuIik7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChmYWxzZSk7
CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoZmFsc2UpOwogCiAgICAgICAg
ICAgICAvLyBDaGVjayB0aGUgbWF0Y2hlZCBydWxlcyBhZnRlciBhIHRpbWVvdXQgdG8gZ2l2ZSB0
aW1lIGZvciBXZWJQcmVmZXJlbmNlcyB0byB1cGRhdGUgV2ViQ29yZTo6U2V0dGluZ3MuCiAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGNoZWNrTWF0Y2hlZFJ1bGVzLCAwKTsKQEAgLTIwLDggKzIwLDgg
QEAKICAgICAgICAgICAgIGlmIChtYXRjaGVkUnVsZXMgJiYgbWF0Y2hlZFJ1bGVzLmxlbmd0aCkK
ICAgICAgICAgICAgICAgICBhbGVydChtYXRjaGVkUnVsZXMubGVuZ3RoICsgIiBydWxlKHMpIHdl
cmUgcmV0dXJuZWQgZnJvbSBnZXRNYXRjaGVkQ1NTUnVsZXMsIGV4cGVjdGVkIHplcm8uIik7CiAK
LSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIDwvc2NyaXB0PgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9jc3MvZGlzcGxheS1ub25lLWlubGluZS1zdHlsZS1jaGFuZ2UtY3Jh
c2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9kaXNwbGF5LW5vbmUt
aW5saW5lLXN0eWxlLWNoYW5nZS1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9kaXNwbGF5LW5vbmUtaW5saW5lLXN0eWxlLWNoYW5nZS1jcmFzaC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw3ICsxMCw3IEBACiA8L3A+CiA8ZGl2IGlkPSJ0YXJn
ZXQiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+PC9kaXY+CiA8c2NyaXB0PgotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKS5z
dHlsZS5jb2xvciA9ICJibHVlIjsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9j
c3MvZGl2X3BsdXNfbmF2X2J1ZzQ3OTcxLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvZGl2X3BsdXNfbmF2X2J1ZzQ3OTcxLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysr
IExheW91dFRlc3RzL2Zhc3QvY3NzL2Rpdl9wbHVzX25hdl9idWc0Nzk3MS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw4ICsyNiw4IEBAIGxhYmVsK25hdiB7IGNvbG9yOiBncmVlbjsgfQogPG5h
diBpZD0ibmF2NSI+TkFWNjwvbmF2PgogCiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICB3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICB3aW5kb3cu
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIHJ1blRlc3QoZWxlbWVudCkKIHsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2R1cGxpY2F0ZS1wcm9wZXJ0eS1pbi1ydWxlLWlt
cG9ydGFudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2R1cGxpY2F0
ZS1wcm9wZXJ0eS1pbi1ydWxlLWltcG9ydGFudC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9kdXBsaWNhdGUtcHJvcGVydHktaW4tcnVsZS1pbXBvcnRhbnQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsOCArMTMsOCBAQAogICAgICAgICAgICAgfQogICAg
ICAgICA8L3N0eWxlPgogICAgIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHdpbmRvdy50ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKICAgICA8L3NjcmlwdD4KICAgICA8L2hlYWQ+CiAgICAgPGJvZHk+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9kdXBsaWNhdGUtcHJvcGVydHktaW4tcnVsZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2R1cGxpY2F0ZS1wcm9wZXJ0eS1p
bi1ydWxlLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2R1
cGxpY2F0ZS1wcm9wZXJ0eS1pbi1ydWxlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksOCArOSw4
IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIDwvc3R5bGU+CiAgICAgPHNjcmlwdD4KLSAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICB3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIDwvc2NyaXB0PgogICAg
IDwvaGVhZD4KICAgICA8Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2VtcHR5LWRp
c3BsYXktbm9uZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2VtcHR5
LWRpc3BsYXktbm9uZS5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2Nzcy9lbXB0eS1kaXNwbGF5LW5vbmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEsOCArMTEs
OCBAQAogPGRpdiBpZD0idGFyZ2V0Ij48c3Bhbj48L3NwYW4+PC9kaXY+CiA8cCBpZD0icmVzdWx0
Ij48L3A+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVyVGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0YXJnZXQiKS5vZmZzZXRXaWR0aCA9PT0gMTAwID8gIlBBU1MiIDogIkZBSUwi
OwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9lbXB0eS1maXJzdC1saW5l
LWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvZW1wdHktZmly
c3QtbGluZS1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2Nzcy9lbXB0eS1maXJzdC1saW5lLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyAr
MSw3IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0
PgogPHN0eWxlPgogKjplbXB0eTpmaXJzdC1saW5lIHsgYmFja2dyb3VuZDogcmVkOyB9CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9lbXB0eS1zY3JpcHQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9lbXB0eS1zY3JpcHQuaHRtbAkocmV2aXNpb24gMTIwNjc1KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvZW1wdHktc2NyaXB0Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTIsOCArMiw4IEBACiA8c2NyaXB0PgogZnVuY3Rpb24gcnVuVGVzdCgpCiB7Ci0gIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAgIHZhciBzdHlsZXNoZWV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5
bGUnKTsKICAgc3R5bGVzaGVldC50eXBlID0gJ3RleHQvY3NzJzsKICAgc3R5bGVzaGVldC5yZWwg
PSAnc3R5bGVzaGVldCc7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9lbXB0eS13ZWJraXQt
bWFzay1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2VtcHR5
LXdlYmtpdC1tYXNrLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvY3NzL2VtcHR5LXdlYmtpdC1tYXNrLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsNyArMSw3IEBACiA8c2NyaXB0PgogICAgIC8vIFdlIG5lZWQgdG8gZHVtcCB0aGUgaW1hZ2Ug
dG8gZ2V0IHRoZSBjcmFzaCBidXQgd2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgbGF5b3V0IGluZm9y
bWF0aW9uLgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiA8L3NjcmlwdD4K
IDxzdHlsZT4KICp7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9lbXB0eVN0eWxlVGFnLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvZW1wdHlTdHlsZVRhZy5odG1s
CShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9lbXB0eVN0eWxlVGFn
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBAIFRoaXMgdGVzdHMgdGhhdCB3ZSBz
dXBwb3J0IGVtcHR5IHN0eWxlIHMKIDxkaXYgaWQ9InJlc3VsdCI+VGVzdCBmYWlsZWQuPC9kaXY+
CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogaWYgKGRvY3VtZW50LnN0eWxlU2hlZXRzWzBd
KSB7CiAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2VuZC1vZi1idWZmZXItY3Jhc2guaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9lbmQtb2YtYnVmZmVyLWNyYXNoLmh0bWwJ
KHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2VuZC1vZi1idWZmZXIt
Y3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIDxzY3JpcHQ+Ci1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKIDwvc2NyaXB0PgogCiA8c3R5bGU+dGVuYnl0ZXMgezwvc3R5bGU+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9lcHViLXByb3BlcnRpZXMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9lcHViLXByb3BlcnRpZXMuaHRtbAkocmV2aXNpb24gMTIwNjc1
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvZXB1Yi1wcm9wZXJ0aWVzLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNyArMSw3IEBACiA8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KIDxzY3JpcHQ+
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBmdW5jdGlvbiBsb2cobWVzc2Fn
ZSkKICAgICB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9maWxsLWxheWVyLWNyYXNoLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvZmlsbC1sYXllci1jcmFzaC5o
dG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9maWxsLWxheWVy
LWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8aHRtbD4KIDxoZWFk
IGlkPSJoZWFkIj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogPHN0eWxlPgog
KiB7YmFja2dyb3VuZC1pbWFnZTppbmhlcml0O30KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3Nz
L2ZpcnN0LWxldHRlci1hbm9ueW1vdXMtYmxvY2stY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9maXJzdC1sZXR0ZXItYW5vbnltb3VzLWJsb2NrLWNyYXNoLmh0
bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2ZpcnN0LWxldHRl
ci1hbm9ueW1vdXMtYmxvY2stY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw3ICs5LDcg
QEAgZGlyOmZpcnN0LWxldHRlciB7IHRleHQtYWxpZ246IiI7IH0KIDxmb3JtPgogTm8gY3Jhc2gg
bWVhbnMgUEFTUwogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9maXJzdC1sZXR0ZXItYmxvY2stZm9ybS1jb250cm9s
cy1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2ZpcnN0LWxl
dHRlci1ibG9jay1mb3JtLWNvbnRyb2xzLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysr
IExheW91dFRlc3RzL2Zhc3QvY3NzL2ZpcnN0LWxldHRlci1ibG9jay1mb3JtLWNvbnRyb2xzLWNy
YXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKICAgICB9CiA8L3N0eWxl
PgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogPC9o
ZWFkPgogPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9maXJzdC1sZXR0ZXItY2Fw
aXRhbGl6ZWQtZWRpdC1zZWxlY3QtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9maXJzdC1sZXR0ZXItY2FwaXRhbGl6ZWQtZWRpdC1zZWxlY3QtY3Jhc2guaHRt
bAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvZmlyc3QtbGV0dGVy
LWNhcGl0YWxpemVkLWVkaXQtc2VsZWN0LWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE0
LDcgKzE0LDcgQEAgUGFzcyBpZiBubyBjcmFzaCBvciBhc3NlcnQgaW4gZGVidWcKIHdpbmRvdy5v
bmxvYWQ9ZnVuY3Rpb24oKQogewogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcGFuJyku
Zm9jdXMoKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIH07CiA8L3NjcmlwdD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2ZpcnN0LWxldHRlci1pbmxpbmUtZmxvdy1zcGxpdC1j
cmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2ZpcnN0LWxldHRl
ci1pbmxpbmUtZmxvdy1zcGxpdC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9maXJzdC1sZXR0ZXItaW5saW5lLWZsb3ctc3BsaXQtY3Jhc2guaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMTQsOCArMTQsOCBAQCB0ZXh0Tm9kZSA9ICBkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgnYmNkCiBmdW5jdGlvbiByZW1vdmVUZXh0Tm9kZSgpIHsKICAgICBwYXJl
bnREaXYucmVtb3ZlQ2hpbGQodGV4dE5vZGUpOwogICAgIGRlbGV0ZSB0ZXh0Tm9kZTsKLSAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogZnVuY3Rpb24gY2hhbmdlQ2xhc3MoKSB7CkBA
IC0zMiw5ICszMiw5IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAgcGFyZW50RGl2LmFwcGVu
ZENoaWxkKHRleHROb2RlKTsKICAgICBjaGlsZFNwYW4uYXBwZW5kQ2hpbGQoY2hpbGREaXYpOwog
ICAgIHNldFRpbWVvdXQoImNoYW5nZUNsYXNzKCkiLCAxMCk7Ci0gICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIH0KIH0KIHdpbmRv
dy5vbmxvYWQgPSBydW5UZXN0OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvZmlyc3QtbGV0
dGVyLWlubGluZS1mbG93LXNwbGl0LXRhYmxlLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9jc3MvZmlyc3QtbGV0dGVyLWlubGluZS1mbG93LXNwbGl0LXRhYmxlLWNy
YXNoLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2ZpcnN0
LWxldHRlci1pbmxpbmUtZmxvdy1zcGxpdC10YWJsZS1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xMyw4ICsxMyw4IEBAIHZhciB0ZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KCcKIGZ1bmN0aW9uIHJlbW92ZVRleHROb2RlKCkgewogICAgIGNoaWxkU3Bhbi5yZW1vdmVDaGls
ZCh0ZXh0Tm9kZSk7CiAgICAgZGVsZXRlIHRleHROb2RlOwotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwogfQogCiBmdW5jdGlvbiBjaGFuZ2VDbGFzcygpIHsKQEAgLTM3LDkgKzM3LDkgQEAg
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICBjaGlsZFNwYW4uYXBwZW5kQ2hpbGQodGV4dE5vZGUp
OwogICAgIHNldFRpbWVvdXQoJ2NoYW5nZUNsYXNzKCk7JywgMTApOwogCi0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIH0KIH0K
IHdpbmRvdy5vbmxvYWQgPSBydW5UZXN0OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvZmly
c3QtbGV0dGVyLXRleHQtZnJhZ21lbnQtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9maXJzdC1sZXR0ZXItdGV4dC1mcmFnbWVudC1jcmFzaC5odG1sCShyZXZp
c2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9maXJzdC1sZXR0ZXItdGV4dC1m
cmFnbWVudC1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDggKzksOCBAQAogICAgIDwv
ZGl2PgogICAgIDwvZGl2PgogICAgIDxzY3JpcHQ+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJzZWxl
Y3RhbGwiKTsKICAgICAgICAgZG9jdW1lbnQuZGVzaWduTW9kZSA9ICJvbiI7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9maXJzdC1saW5lLXBhcmVudC1zdHlsZS1kaWZmZXJlbnQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9maXJzdC1saW5lLXBhcmVudC1zdHls
ZS1kaWZmZXJlbnQuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
c3MvZmlyc3QtbGluZS1wYXJlbnQtc3R5bGUtZGlmZmVyZW50Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTE0LDcgKzE0LDcgQEAKICAgICA8ZGl2IGlkPSJjb250YWluZXIiPjxzcGFuIGlkPSJ0YXJn
ZXQiPjxicj48L3NwYW4+PC9kaXY+CiA8L2Rpdj4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRhaW5lciIpLnBh
cmVudE5vZGUuZm9jdXMoKTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Zm9udC1mYWNlLWRhdGEtdXJpLWludmFsaWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9mb250LWZhY2UtZGF0YS11cmktaW52YWxpZC5odG1sCShyZXZpc2lvbiAxMjA2
NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250LWZhY2UtZGF0YS11cmktaW52YWxpZC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3Jp
cHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogPHN0eWxlPgogQGZvbnQtZmFjZSB7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250LWZhY2UtZGF0YS11cmkuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250LWZhY2UtZGF0YS11cmkuaHRtbAkocmV2aXNp
b24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udC1mYWNlLWRhdGEtdXJpLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDggQEAgZnVuY3Rpb24gdGVzdE1haW4oKQog
ICAgIGZvciAodmFyIHRlc3RJZCA9IDA7IHRlc3RJZCA8IDI7IHRlc3RJZCsrKSB7CiAgICAgICAg
IHNob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVmIiArIHRlc3RJZCArICInKS5v
ZmZzZXRXaWR0aCIsICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCIgKyB0ZXN0SWQgKyAi
Jykub2Zmc2V0V2lkdGgiKTsKICAgICB9Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKIH0KIAogdmFyIHRyaWFsQ291bnQgPSAwOwpAQCAtNTMsOCArNTMsOCBAQCBm
dW5jdGlvbiB3YXJtVXBBbmRUZXN0KCkKICAgICB3aW5kb3cuc2V0VGltZW91dCh3YXJtVXBBbmRU
ZXN0LCAxMCk7CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgd2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICB3aW5kb3cudGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiA8L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnQtZmFjZS1kb3dubG9h
ZC1lcnJvci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnQtZmFj
ZS1kb3dubG9hZC1lcnJvci5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9mb250LWZhY2UtZG93bmxvYWQtZXJyb3IuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
NjIsOCArNjIsOCBAQAogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CiA8ZGl2IGlkPSJvdXQiPjwv
ZGl2PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgd2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICB3aW5kb3cudGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKIGRlc2Ny
aXB0aW9uKCJJZiBubyBmb250IHJlc291cmNlcyBhcmUgYXZhaWxhYmxlIGZvciBhbiBAZm9udC1m
YWNlIHJ1bGUgZHVlIHRvIGRvd25sb2FkIGVycm9ycywgdGhlIHJ1bGUgbXVzdCBiZSBpZ25vcmVk
IGJ1dCBvdGhlcnMgbXVzdCByZW1haW4gaW4gZWZmZWN0LiIpOwogCkBAIC0xMDksOCArMTA5LDgg
QEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJyIgKyB0ZXN0SWQobWFpblRlc3RJZCwgc3ViVGVzdElkKSArICInKS5vZmZzZXRX
aWR0aCIsICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnIiArIHJlZklkKG1haW5UZXN0SWQsIHN1
YlRlc3RJZCkgKyAiJykub2Zmc2V0V2lkdGgiKTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgd2luZG93LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBmb3IgKHZhciBtYWluVGVz
dElkID0gMDsgbWFpblRlc3RJZCA8IGV4cGVjdGVkUmVzdWx0cy5sZW5ndGg7IG1haW5UZXN0SWQr
KykgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udC1mYWNlLWZvbnQtZmFtaWx5LWRl
c2NyaXB0b3IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250LWZh
Y2UtZm9udC1mYW1pbHktZGVzY3JpcHRvci5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9mb250LWZhY2UtZm9udC1mYW1pbHktZGVzY3JpcHRvci5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw4ICsyNSw4IEBAIE11c3Qgbm90IG1hdGNoOjxici8+CiA8c3Bh
biBpZD0ibXVzdE5vdE1hdGNoIiBjbGFzcz0idGVzdHRleHQiIHN0eWxlPSJmb250LWZhbWlseTog
Q291cmllciI+VGV4dCBpaWk8L3NwYW4+PGJyLz4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgog
PHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGRlc2NyaXB0aW9uKCJmb250
LWZhbWlseSBkZXNjcmlwdG9yIGluIEBmb250LWZhY2UgcnVsZSBjYW4gdGFrZSBvbmx5IG9uZSBm
YW1pbHkuIEhlbmNlIHRoZSBAZm9udC1mYWNlIHJ1bGUgaW4gdGhpcyB0ZXN0IG11c3QgYmUgaWdu
b3JlZC4iKTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udC1mYWNlLW11bHRpcGxl
LWZhbWlsaWVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udC1m
YWNlLW11bHRpcGxlLWZhbWlsaWVzLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRl
c3RzL2Zhc3QvY3NzL2ZvbnQtZmFjZS1tdWx0aXBsZS1mYW1pbGllcy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC05LDcgKzksNyBAQAogPC9wPgogPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBmYW1p
bHkxIj4xPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogZmFtaWx5MiI+MTwvc3Bhbj4K
IDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgZG9jdW1lbnQuYm9k
eS5vZmZzZXRUb3A7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnQt
ZmFjZS1yZW1vdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250
LWZhY2UtcmVtb3RlLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y3NzL2ZvbnQtZmFjZS1yZW1vdGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTcsMTYgKzE3LDE2
IEBACiAgICAgICAgIF9GQUlMPGJyPgogICAgIDwvZGl2PgogICAgIDxzY3JpcHQ+Ci0gICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiAgICAgICAgIC8v
IEtpY2sgb2ZmIGxvYWRpbmcgb2YgdGhlIGZvbnQKICAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZz
ZXRUb3A7CiAKICAgICAgICAgZnVuY3Rpb24gZmluaXNoZWQoKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAg
ICAgICAgfQogICAgIDwvc2NyaXB0PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9j
c3MvZm9udC1mYWNlLXJlcGVhdGVkLXVybC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvY3NzL2ZvbnQtZmFjZS1yZXBlYXRlZC11cmwuaHRtbAkocmV2aXNpb24gMTIwNjc1KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udC1mYWNlLXJlcGVhdGVkLXVybC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CiB9CiAgICAgCiBmdW5jdGlvbiB0ZXN0KCkKQEAgLTEzLDggKzEzLDgg
QEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgcHJlLmlubmVyVGV4dCA9ICJkaXYgaGVpZ2h0ID0gIiAr
IGQuY2xpZW50SGVpZ2h0OwogICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocHJlKTsKICAg
ICAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIDwvc2NyaXB0PgogPHN0eWxlPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udC1mYWNlLXNyYy1wYXJzaW5nLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udC1mYWNlLXNyYy1wYXJzaW5nLmh0
bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnQtZmFjZS1z
cmMtcGFyc2luZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsOCArMTAxLDggQEAKIDwvcHJl
PgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHZhciB2YWxpZFJ1bGVzID0gZG9jdW1lbnQu
c3R5bGVTaGVldHNbMF0uY3NzUnVsZXM7CiB2YXIgcmVzdWx0ID0gJyc7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9mb250LWZhY2Utc3ZnLWRlY29kaW5nLWVycm9yLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udC1mYWNlLXN2Zy1kZWNvZGluZy1lcnJvci5o
dG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250LWZhY2Ut
c3ZnLWRlY29kaW5nLWVycm9yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8
c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDxzdHlsZT4KIEBmb250LWZhY2UgewpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udC1mYWNlLXN5bnRoZXRpYy1ib2xkLWl0YWxp
Yy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnQtZmFjZS1zeW50
aGV0aWMtYm9sZC1pdGFsaWMuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvZm9udC1mYWNlLXN5bnRoZXRpYy1ib2xkLWl0YWxpYy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xMyw5ICsxMyw5IEBACiA8cD5BaGVtIHN5bnRoZXRpYyBpdGFsaWM6PC9wPjxpPjxw
IHN0eWxlPSJmb250LWZhbWlseTogZmFtaWx5MSI+QWhlbSBzeW50aGV0aWMgaXRhbGljPC9wPjwv
aT4KIDxwPkFoZW0gc3ludGhldGljIGJvbGQgaXRhbGljOjwvcD48c3Ryb25nPjxpPjxwIHN0eWxl
PSJmb250LWZhbWlseTogZmFtaWx5MSI+QWhlbSBzeW50aGV0aWMgYm9sZCBpdGFsaWM8L3A+PC9p
Pjwvc3Ryb25nPgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CiAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwotICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7IH0sIDEwMCk7
CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OyB9LCAxMDApOwogICAgIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Zm9udC1mYWNlLXVuaWNvZGUtcmFuZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9mb250LWZhY2UtdW5pY29kZS1yYW5nZS5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250LWZhY2UtdW5pY29kZS1yYW5nZS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTcsMTMgKzExNywxMyBAQAogICAgIDxzY3JpcHQ+CiAgICAgICAgIGZ1
bmN0aW9uIGZpbmlzaGVkKCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0KIAogICAgICAgICBk
b2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKIAotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKICAgICA8L3NjcmlwdD4KIDwvYm9keT4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY3NzL2ZvbnQtZmFjZS11bnF1b3RlZC1sb2NhbC1leHBlY3RlZC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnQtZmFjZS11bnF1b3RlZC1sb2Nh
bC1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy9mb250LWZhY2UtdW5xdW90ZWQtbG9jYWwtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMTMsOSArMTMsOSBAQAogPHA+U1VDQ0VTUzwvcD4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0VG9wOwotICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsgfSwgMjAwKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsgfSwgMjAwKTsKIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9j
c3MvZm9udC1mYWNlLXVucXVvdGVkLWxvY2FsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jc3MvZm9udC1mYWNlLXVucXVvdGVkLWxvY2FsLmh0bWwJKHJldmlzaW9uIDEyMDY3
NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnQtZmFjZS11bnF1b3RlZC1sb2NhbC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xNyw5ICsxNyw5IEBACiA8cCBzdHlsZT0iZm9udC1mYW1pbHk6
IGludmFsaWQ7Ij5TVUNDRVNTPC9wPgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwogICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5vZmZzZXRUb3A7Ci0gICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyB9LCAyMDAp
OworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOyB9
LCAyMDApOwogfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250LWZh
Y2UtdW51c2VkLXNvdXJjZS1sb2FkZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9mb250LWZhY2UtdW51c2VkLXNvdXJjZS1sb2FkZWQuaHRtbAkocmV2aXNpb24gMTIw
Njc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udC1mYWNlLXVudXNlZC1zb3VyY2UtbG9h
ZGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDggKzI0LDggQEAKICAgICAgICAgQXJpYWwK
ICAgICA8L2Rpdj4KICAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIAogICAgICAgICAvLyBGb3JjZSBsYXlvdXQgbm93IHRvIGtpY2sgb2Zm
IGZvbnQgbG9hZGluZyBiZWZvcmUgdGhlIGxvYWQgZXZlbiBmaXJlcy4KICAgICAgICAgZG9jdW1l
bnQuYm9keS5vZmZzZXRUb3A7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250LWZhY2Ut
dXNlZC1hZnRlci1yZXRpcmVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9j
c3MvZm9udC1mYWNlLXVzZWQtYWZ0ZXItcmV0aXJlZC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250LWZhY2UtdXNlZC1hZnRlci1yZXRpcmVkLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTksMTEgKzksMTEgQEAKICAgICA8YnI+UEFTUwogPC9kaXY+CiA8
c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKICAgICAgICAgLy8gTXVzdCB3YWl0IGZvciB0aGUgZm9udCB0byBmYWlsIHRv
IGxvYWQuCi0gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKSB9LCAxMDApOworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKSB9LCAxMDApOwogICAgIH0KIAogICAgIGRvY3VtZW50
LmV4ZWNDb21tYW5kKCJTZWxlY3RBbGwiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2Zv
bnQtZmFjZS13ZWlnaHQtbWF0Y2hpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9mb250LWZhY2Utd2VpZ2h0LW1hdGNoaW5nLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkK
KysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnQtZmFjZS13ZWlnaHQtbWF0Y2hpbmcuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtOTIsOSArOTIsOSBAQCBJZiB0aGUgdGVzdCBwYXNzZXMsIGFsbCAx
NCBnbHlwaHMgYmVsb3cgCiA8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IGYxOyBmb250LXdlaWdo
dDogNTAwIj5BPC9zcGFuPgogCiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKICAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7Ci0gICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsg
fSwgMTAwKTsKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7IH0sIDEwMCk7CiAgICAgfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9mb250LWZhY2UtemVyby1oYXNoLWtleS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvY3NzL2ZvbnQtZmFjZS16ZXJvLWhhc2gta2V5Lmh0bWwJKHJldmlzaW9uIDEy
MDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnQtZmFjZS16ZXJvLWhhc2gta2V5Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8c2NyaXB0PgotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8c3R5bGU+CiAgICAgQGZvbnQtZmFjZSB7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250LWZhbWlseS1idWlsdGlucy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnQtZmFtaWx5LWJ1aWx0aW5zLmh0bWwJ
KHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnQtZmFtaWx5LWJ1
aWx0aW5zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8aHRtbD4KIDxoZWFk
PgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIGZ1bmN0aW9u
IGxvZyhtc2cpCiAgICAgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udC1mYW1pbHkt
aW5pdGlhbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnQtZmFt
aWx5LWluaXRpYWwuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
c3MvZm9udC1mYW1pbHktaW5pdGlhbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBA
QAogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIH0KIDwv
c2NyaXB0PgogPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udC1wcm9wZXJ0
eS1wcmlvcml0eS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnQt
cHJvcGVydHktcHJpb3JpdHkuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvZm9udC1wcm9wZXJ0eS1wcmlvcml0eS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
Miw4ICsxMiw4IEBACiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIiku
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSArICJcbiIpKTsKICAg
ICB9CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHZhciBzdHlsZURlY2xh
cmF0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0eWxlIikuc2hlZXQucnVsZXNbMF0u
c3R5bGU7CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnQtc2hvcnRoYW5kLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udC1zaG9ydGhhbmQuaHRtbAko
cmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udC1zaG9ydGhhbmQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxodG1sPgogPGhlYWQ+CiA8c2Ny
aXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8
Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRNZXRyaWMtYm9yZGVyLXJhZGl1
cy1udWxsLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9u
dE1ldHJpYy1ib3JkZXItcmFkaXVzLW51bGwtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjc1KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udE1ldHJpYy1ib3JkZXItcmFkaXVzLW51bGwtY3Jh
c2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIDxzY3JpcHQ+Ci0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgZG9jdW1lbnQud3JpdGVsbigiPHY+Iik7CiAgICAg
ZG9jdW1lbnQuYm9keS5pbm5lckhUTUw9IjxzdHlsZT4qe2JvcmRlci1yYWRpdXM6NWV4O308L3N0
eWxlPiI7CiAgICAgZG9jdW1lbnQud3JpdGUoIjx0aXRsZT54Iik7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9mb250TWV0cmljLXdlYmtpdC1ib3JkZXItZW5kLXdpZHRoLW51bGwtY3Jhc2gu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250TWV0cmljLXdlYmtp
dC1ib3JkZXItZW5kLXdpZHRoLW51bGwtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udE1ldHJpYy13ZWJraXQtYm9yZGVyLWVuZC13aWR0aC1u
dWxsLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8c2NyaXB0Pgot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIGRvY3VtZW50LndyaXRlbG4oIjx2PiIp
OwogICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MPSI8c3R5bGU+Knstd2Via2l0LWJvcmRlci1l
bmQtd2lkdGg6MGV4O308L3N0eWxlPiI7CiAgICAgZG9jdW1lbnQud3JpdGUoIjx0aXRsZT54Iik7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250c2l6ZS11bml0LXJlbXMtY3Jhc2gtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRzaXplLXVu
aXQtcmVtcy1jcmFzaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRl
c3RzL2Zhc3QvY3NzL2ZvbnRzaXplLXVuaXQtcmVtcy1jcmFzaC1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBUZXN0IGNhc2UgZm9y
IDYxOTg5CiBUaGlzIGlzIHRlc3QgZm9yIEJ1ZyA2MTk4OSBObyBjcmFzaCBtZWFucyB0ZXN0IFBB
U1MuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250c2l6ZS11bml0LXJlbXMtY3Jhc2gu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250c2l6ZS11bml0LXJl
bXMtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Zm9udHNpemUtdW5pdC1yZW1zLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3
IEBACiA8aHRtbCBzdHlsZT0iZGlzcGxheTpub25lOyI+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CiA8L3NjcmlwdD4KIDx0aXRsZSBzdHlsZT0ibGluZS1oZWlnaHQ6IDFyZW07Ij5UZXN0IGNhc2Ug
Zm9yIDYxOTg5PC90aXRsZT4KIDxwPlRoaXMgaXMgdGVzdCBmb3IgQnVnIDYxOTg5IE5vIGNyYXNo
IG1lYW5zIHRlc3QgUEFTUy48L3A+PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Z2V0RmxvYXRWYWx1ZUZvclVuaXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2Nzcy9nZXRGbG9hdFZhbHVlRm9yVW5pdC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9nZXRGbG9hdFZhbHVlRm9yVW5pdC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC02LDggKzYsOCBAQAogPGJvZHk+CiA8ZGl2IGlkPSJ0ZXN0LWRpdiIgc3R5bGU9ImZvbnQt
c2l6ZTogMTBwdDsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMDBncmFkKTsgLXdlYmtpdC1h
bmltYXRpb24tZGVsYXk6IDAuMnM7Ij48L2Rpdj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAog
dmFyIGludmFsaWRBY2Nlc3NFcnJvciA9ICJFcnJvcjogSU5WQUxJRF9BQ0NFU1NfRVJSOiBET00g
RXhjZXB0aW9uIDE1IjsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0UHJvcGVydHlW
YWx1ZS1ib3JkZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRQ
cm9wZXJ0eVZhbHVlLWJvcmRlci5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9nZXRQcm9wZXJ0eVZhbHVlLWJvcmRlci5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xMyw4ICsxMyw4IEBACiAgIDwvc3R5bGU+CiAgIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogICA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAgIDwvc2NyaXB0PgogIDwvaGVhZD4KICA8Ym9keT4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvY3NzL2dldFByb3BlcnR5VmFsdWUtY2xpcC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvY3NzL2dldFByb3BlcnR5VmFsdWUtY2xpcC5odG1sCShyZXZpc2lvbiAx
MjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRQcm9wZXJ0eVZhbHVlLWNsaXAuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMTEsOCArMTEsOCBAQAogICAgICAgY29uc29sZS5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlICsgIlxuIikpOwogICAgIH0KICAg
ICBmdW5jdGlvbiBydW5UZXN0KCkgewotICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwogICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbGlwIik7CiAgICAg
ICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShkaXYsJycpLmdldFByb3BlcnR5VmFsdWUoImNsaXAiKSAh
PSAicmVjdCg1cHggMjRweCAxcHggMTJweCkiKSB7CiAgICAgICAgICAgbG9nKCJGQUlMRUQiKTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2dpYW50LXN0eWxlc2hlZXQtY3Jhc2guaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9naWFudC1zdHlsZXNoZWV0LWNyYXNo
Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2dpYW50LXN0
eWxlc2hlZXQtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIDxoZWFk
Pg0KIDxzY3JpcHQ+DQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCi0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOw0KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikN
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7DQogPC9zY3JpcHQ+DQogDQogPHNjcmlwdD4N
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9ob3Zlci1hY3RpdmUtZHJhZy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2hvdmVyLWFjdGl2ZS1kcmFnLmh0bWwJKHJl
dmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2hvdmVyLWFjdGl2ZS1kcmFn
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDExICsyNSwxMSBAQAogICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygnYmFja2dyb3VuZCcsIGJnKQogICB9CiAKLSAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgeworICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICBkZXNjcmlw
dGlvbigiRHJhZ2dpbmcgb3V0IG9mIGFuIGVsZW1lbnQgc2hvdWxkIGNhdXNlIGl0IHRvIGxvc2Ug
OmhvdmVyIikKICAgICB2YXIgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JveCcpCiAg
ICAgdmFyIGJveDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94MicpCi0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwogCiAgICAgZXZlbnRTZW5kZXIuZHJhZ01vZGUgPSBmYWxzZTsKICAgICAvLyBUaGlzIG1vdXNl
IGNsaWNrIHNlZW1zIHRvIGJlIHJlcXVpcmVkIGZvciBXZWJLaXQncyBldmVudCBoYW5kbGluZyB0
bwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvaG92ZXItYWZmZWN0cy1hbmNlc3Rvci5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2hvdmVyLWFmZmVjdHMtYW5jZXN0
b3IuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvaG92ZXIt
YWZmZWN0cy1hbmNlc3Rvci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSw4IEBAIGl0
cyBjb250YWluZWQgZWxlbWVudHM8L3A+CiA8L2Zvcm0+IAogPC9kaXY+CiA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCI+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiB9CiAKIGZ1bmN0aW9uIGdldENl
bnRlckZvcihlbGVtZW50KQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvaG92ZXItYWZmZWN0
cy1jaGlsZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2hvdmVyLWFm
ZmVjdHMtY2hpbGQuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
c3MvaG92ZXItYWZmZWN0cy1jaGlsZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw5ICszOSw5
IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAgICAgZnVuY3Rpb24gcnVuVGVz
dCgpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
CisgICAgICAgICAgICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikgCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAg
ICAgICAgICAgICAgdmFyIHRhcmdldEVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFy
Z2V0RWxlbScpOwogICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHRhcmdl
dEVsZW0ub2Zmc2V0TGVmdCArIHRhcmdldEVsZW0ub2Zmc2V0V2lkdGggLyAyLCAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRFbGVtLm9mZnNldFRvcCArIHRh
cmdldEVsZW0ub2Zmc2V0SGVpZ2h0IC8gMik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9o
b3Zlci11cGRhdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9ob3Zl
ci11cGRhdGUuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
aG92ZXItdXBkYXRlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDggQEAgZnVuY3Rp
b24gZmluaXNoKCkKIHsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRDb21w
dXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiJyksIG51bGwpLmJhY2tncm91bmRD
b2xvciIsICJyZ2IoMCwgMTI4LCAwKSIpOwogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CiB9CiAKIGZ1bmN0aW9uIGhpZGVDKCkKQEAgLTQwLDEyICs0MCwxMiBAQCBmdW5jdGlvbiBob3Zl
cmVkQygpCiAKIGZ1bmN0aW9uIHJ1bnRlc3QoKQogewotICAgIGlmICghd2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGRlYnVnKCdIb3ZlciBjb2xvciBiZWZvcmUgdGVzdDogJyArIHdpbmRvdy5nZXRD
b21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJiIiksIG51bGwpLmJhY2tncm91
bmRDb2xvcik7CiAKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQnKTsKICAgICB2YXIgeCA9IHRhcmdldC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdCArIHRhcmdldC5vZmZzZXRMZWZ0ICsgdGFyZ2V0Lm9mZnNldFdpZHRoIC8g
MjsKICAgICB2YXIgeSA9IHRhcmdldC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgdGFyZ2V0Lm9m
ZnNldFRvcCArIHRhcmdldC5vZmZzZXRIZWlnaHQgLyAyOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9jc3MvaW1wb3J0LWFuZC1pbnNlcnQtcnVsZS1uby11cGRhdGUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9pbXBvcnQtYW5kLWluc2VydC1ydWxlLW5vLXVwZGF0ZS5o
dG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9pbXBvcnQtYW5k
LWluc2VydC1ydWxlLW5vLXVwZGF0ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDkgKzYsOSBA
QAogPGRpdj5Zb3Ugc2hvdWxkIHNlZSBvbmUgUEFTUyBiZWxvdy48L2Rpdj4KIDxkaXYgaWQ9InRl
c3RBcmVhIj48L2Rpdj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwogfQogCiB2YXIgcmVtYWluaW5nVGVzdHMgPSAyMDsKQEAgLTI5LDggKzI5LDggQEAgZnVu
Y3Rpb24gdGVzdCgpIHsKICAgICB9CiAgICAgaWYgKCFyZW1haW5pbmdUZXN0cykKICAgICAgICAg
d2luZG93LnNldFRpbWVvdXQodGVzdCwgMjUpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwogfQogCiBmdW5jdGlvbiB3YWl0Rm9yU2hlZXRUb0ZpbmlzaExvYWRpbmcoKQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jc3MvaW1wb3J0LXN0eWxlLXVwZGF0ZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY3NzL2ltcG9ydC1zdHlsZS11cGRhdGUuaHRtbAkocmV2aXNpb24g
MTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvaW1wb3J0LXN0eWxlLXVwZGF0ZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogQGltcG9ydCB1cmwoImRhdGE6dGV4dC9j
c3MsI3Rlc3R7ZGlzcGxheTpub25lO30iKTsKIDwvc3R5bGU+CiA8c2NyaXB0PgotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiBmdW5jdGlvbiB0ZXN0KCkgewogdmFyIHMgPSBkb2N1bWVudC5zdHlsZVNoZWV0czsKIHNb
MF0uY3NzUnVsZXNbMF0uc3R5bGVTaGVldC5kZWxldGVSdWxlKDApOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jc3MvaW1wb3J0YW50LWpzLW92ZXJyaWRlLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9jc3MvaW1wb3J0YW50LWpzLW92ZXJyaWRlLmh0bWwJKHJldmlzaW9uIDEy
MDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2ltcG9ydGFudC1qcy1vdmVycmlkZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogPGRpdiBpZD0iYSIgc3R5bGU9ImJhY2tn
cm91bmQtY29sb3I6IGdyZWVuICFpbXBvcnRhbnQiPlRoZSBiYWNrZ3JvdW5kIG9mIHRoaXMgZWxl
bWVudCBzaG91bGQgYmUgZ3JlZW4uIEl0IGlzIDwvZGl2PgogPHNjcmlwdD4KLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKICAgICB2YXIgYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJh
Iik7CiAgICAgYS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAicmVkIjsKICAgICBhLmlubmVySFRN
TCArPSBhLnN0eWxlLmJhY2tncm91bmRDb2xvcjsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3Nz
L2luaGVyaXRlZC1wcm9wZXJ0aWVzLWV4cGxpY2l0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jc3MvaW5oZXJpdGVkLXByb3BlcnRpZXMtZXhwbGljaXQuaHRtbAkocmV2aXNp
b24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvaW5oZXJpdGVkLXByb3BlcnRpZXMt
ZXhwbGljaXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIDxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8c3R5bGU+CiAuYSB7IG1hcmdpbi1sZWZ0OjVweDsgfQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvaW5oZXJpdGVkLXByb3BlcnRpZXMtcmFyZS10ZXh0
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvaW5oZXJpdGVkLXByb3Bl
cnRpZXMtcmFyZS10ZXh0Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zh
c3QvY3NzL2luaGVyaXRlZC1wcm9wZXJ0aWVzLXJhcmUtdGV4dC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8c3R5
bGU+CiAuYSB7IC13ZWJraXQtZm9udC1mZWF0dXJlLXNldHRpbmdzOiAnZGxpZyc7IC13ZWJraXQt
Zm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOyAtd2Via2l0LXRleHQtb3JpZW50YXRpb246IHVw
cmlnaHQ7IH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2lucHV0LXNlYXJjaC10YWJsZS1j
b2x1bW4tY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9pbnB1
dC1zZWFyY2gtdGFibGUtY29sdW1uLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvY3NzL2lucHV0LXNlYXJjaC10YWJsZS1jb2x1bW4tY3Jhc2guaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIDxodG1sPgogICAgIDxzY3JpcHQ+Ci0gICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIDwvc2NyaXB0Pgog
ICAgIDxzdHlsZT4KICAgICAgICAgaW5wdXRbdHlwZT0ic2VhcmNoIl06Oi13ZWJraXQtc2VhcmNo
LWNhbmNlbC1idXR0b24gewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvaW52YWxpZC1jdXJz
b3ItcHJvcGVydHktY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy9pbnZhbGlkLWN1cnNvci1wcm9wZXJ0eS1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9pbnZhbGlkLWN1cnNvci1wcm9wZXJ0eS1jcmFzaC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBAQAogPGhlYWQ+CiAgICAgPHNjcmlwdD4KICAg
ICBmdW5jdGlvbiBydW5UZXN0KCkgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKICAgICAgICAgICAgIAogICAgICAgICB2YXIgZCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd0aGVEaXYnKTsKICAgICAgICAgdmFyIHN0eWxlID0gZG9jdW1lbnQuZGVmYXVs
dFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkLCAnJyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy9pbnZhbGlkLWZvbnQtZmFtaWx5LWluLWZvbnQtZmFjZS1jcmFzaC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2ludmFsaWQtZm9udC1mYW1pbHktaW4tZm9udC1mYWNl
LWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2lu
dmFsaWQtZm9udC1mYW1pbHktaW4tZm9udC1mYWNlLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTYsOCArNiw4IEBAIFRlc3QgcGFzc2VzIGlmIGl0IGRvZXMgbm90IGNyYXNoLg0KIAlAZm9u
dC1mYWNlIHsgZm9udC1mYW1pbHk6IGluaXRpYWw7IH0NCiA8L3N0eWxlPg0KIDxzY3JpcHQ+DQot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpDQotCSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7DQorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikNCisJICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOw0KIAkJDQogCWRvY3VtZW50LmJvZHkub2Zmc2V0VG9w
Ow0KIDwvc2NyaXB0Pg0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2ludmFsaWQtaGV4LWNv
bG9yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvaW52YWxpZC1oZXgt
Y29sb3IuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvaW52
YWxpZC1oZXgtY29sb3IuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw4ICs4LDggQEAgZGl2IHsK
IH0KIDwvc3R5bGU+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIHRlc3QoKQog
ewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvaW52YWxpZC1pbXBvcnQtcnVsZS1pbnNlcnRp
b24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9pbnZhbGlkLWltcG9y
dC1ydWxlLWluc2VydGlvbi5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9pbnZhbGlkLWltcG9ydC1ydWxlLWluc2VydGlvbi5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC02LDggKzYsOCBAQAogICAgICAgICBkaXYge2NvbG9yOiBSZWQ7IH0NCiAgICAgPC9zdHls
ZT4NCiAgICAgPHNjcmlwdD4NCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikN
Ci0gICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7DQorICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikNCisgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsNCiAgICAgPC9zY3JpcHQ+DQogPC9oZWFkPg0KIDxib2R5Pg0KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY3NzL2ludmFsaWQtbm90LXdpdGgtcHNldWRvLWVsZW1lbnQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9pbnZhbGlkLW5vdC13aXRoLXBzZXVkby1l
bGVtZW50Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2lu
dmFsaWQtbm90LXdpdGgtcHNldWRvLWVsZW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTcs
OCArMTcsOCBAQAogICAgIH0NCiA8L3N0eWxlPg0KIDxzY3JpcHQ+DQotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpDQotICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOw0KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpDQorICAgICAgICB3
aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7DQogPC9zY3JpcHQ+DQogPC9oZWFkPg0KIDxi
b2R5Pg0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2ludmFsaWQtbm90LXdpdGgtc2ltcGxl
LXNlbGVjdG9yLXNlcXVlbmNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9j
c3MvaW52YWxpZC1ub3Qtd2l0aC1zaW1wbGUtc2VsZWN0b3Itc2VxdWVuY2UuaHRtbAkocmV2aXNp
b24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvaW52YWxpZC1ub3Qtd2l0aC1zaW1w
bGUtc2VsZWN0b3Itc2VxdWVuY2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNTksOCArNTksOCBA
QAogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RyZXN1bHQiKS5pbm5l
ckhUTUwgPSAiRmFpbCI7CiAgICAgICAgIH0KICAgICAgICAgVGVzdENhc2UoKTsKLSAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICA8L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2xhbmctc2VsZWN0b3ItZW1wdHkt
YXR0cmlidXRlLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2xhbmct
c2VsZWN0b3ItZW1wdHktYXR0cmlidXRlLnhodG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9sYW5nLXNlbGVjdG9yLWVtcHR5LWF0dHJpYnV0ZS54aHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQAogICAgICAgfQogCiAgICAgICBmdW5jdGlvbiB0
ZXN0KCkgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAog
ICAgICAgICB2YXIgaSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbXB0eUxhbmciKTsKICAg
ICAgICAgaWYgKGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoaSwgbnVsbCku
Z2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpICE9ICJyZ2IoMjU1LCAyNTUsIDI1
NSkiKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9sYXJnZS1mb250LXNpemUtY3Jhc2gu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9sYXJnZS1mb250LXNpemUt
Y3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvbGFy
Z2UtZm9udC1zaXplLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw4IEBACiA8
Ym9keSBzdHlsZT0nZm9udDogOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OWluIEFoZW07Jz4NCiBQQVNTLiBXZWJLaXQgZGlkbid0IGNyYXNoLg0KIDxzY3Jp
cHQ+DQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCi0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOw0KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikNCisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7DQogPC9zY3JpcHQ+DQogPC9ib2R5Pg0KIDwvaHRtbD4NCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9sYXJnZS1saXN0LW9mLXJ1bGVzLWNyYXNoLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvbGFyZ2UtbGlzdC1vZi1ydWxlcy1j
cmFzaC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9sYXJn
ZS1saXN0LW9mLXJ1bGVzLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDggKzEyLDgg
QEAgdmFyIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bAogc3R5bGUuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocykpOwogZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmRDaGlsZChzdHlsZSk7CiAKLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
PC9zY3JpcHQ+CiAKIDwhLS0gbG9hZGluZyBhIGxpbmtlZCBzdHlsZSBzaGVldCBjYXVzZXMgdGhl
IGxpc3Qgb2YgQ1NTIFJ1bGVzIHRvIGJlIHJlYnVpbHQsCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Nzcy9sYXJnZS1udW1iZXItcm91bmQtdHJpcC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvY3NzL2xhcmdlLW51bWJlci1yb3VuZC10cmlwLmh0bWwJKHJldmlzaW9uIDEyMDY3
NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2xhcmdlLW51bWJlci1yb3VuZC10cmlwLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTE3LDggKzE3LDggQEAKIDxkaXYgaWQ9InJlc3VsdHMiPgogPC9k
aXY+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogCiAgIHZhciBib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94
Jyk7CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2xhcmdlLXZhbHVlLWNzc3RleHQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9sYXJnZS12YWx1ZS1jc3N0ZXh0
Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2xhcmdlLXZh
bHVlLWNzc3RleHQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw4ICs4LDggQEAKICAgICAgICAg
fQogICAgIDwvc3R5bGU+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJz
ZXQ9InV0Zi04Ij4KLSAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgPC9zY3Jp
cHQ+CiA8L2hlYWQ+CiA8Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2xpbmUtaGVp
Z2h0LXJvdW5kaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvbGlu
ZS1oZWlnaHQtcm91bmRpbmcuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvbGluZS1oZWlnaHQtcm91bmRpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw4
ICs1LDggQEAKIDwvc3R5bGU+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24g
Y2hlY2tMaW5lSGVpZ2h0KGZvbnRTaXplLCBsaW5lSGVpZ2h0UGVyY2VudCwgZXhwZWN0ZWRMaW5l
SGVpZ2h0KSB7CiAgICAgdmFyIHRlc3RFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3Rlc3RFbGVtZW50Jyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9saW5lYXItZ3JhZGll
bnQtY3VycmVudGNvbG9yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
bGluZWFyLWdyYWRpZW50LWN1cnJlbnRjb2xvci5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9saW5lYXItZ3JhZGllbnQtY3VycmVudGNvbG9yLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTE0LDggKzE0LDggQEAgZGl2IHsKIDwvc3R5bGU+CiA8L2hlYWQ+CiA8
c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICB3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogPC9zY3JpcHQ+CiA8
Ym9keT4KICAgPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj48L2Rpdj4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvY3NzL2xpbmstYWx0ZXJuYXRlLXN0eWxlc2hlZXQtMS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2xpbmstYWx0ZXJuYXRlLXN0eWxlc2hlZXQtMS5odG1s
CShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9saW5rLWFsdGVybmF0
ZS1zdHlsZXNoZWV0LTEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsOCBAQAogICA8
c2NyaXB0PgogICAgIGRlc2NyaXB0aW9uKCJBbHRlcm5hdGUgc3R5bGVzaGVldCAobGluaykgdGl0
bGUgdGVzdCAxIik7CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgd2luZG93Lm9u
bG9hZCA9IGZ1bmN0aW9uICgpIHsKICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiZmlyc3RIMSIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvbGluay1hbHRlcm5h
dGUtc3R5bGVzaGVldC0yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
bGluay1hbHRlcm5hdGUtc3R5bGVzaGVldC0yLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvY3NzL2xpbmstYWx0ZXJuYXRlLXN0eWxlc2hlZXQtMi5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCw4ICsyNCw4IEBACiAgIDxzY3JpcHQ+CiAgICAgZGVzY3JpcHRpb24o
IkFsdGVybmF0ZSBzdHlsZXNoZWV0IChsaW5rKSB0aXRsZSB0ZXN0IDIiKTsKIAotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiAKICAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkgewogICAg
ICAgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaXJzdEgxIik7CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9saW5rLWFsdGVybmF0ZS1zdHlsZXNoZWV0LTMuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9saW5rLWFsdGVybmF0ZS1zdHlsZXNoZWV0
LTMuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvbGluay1h
bHRlcm5hdGUtc3R5bGVzaGVldC0zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIyLDggKzIyLDgg
QEAKICAgPHNjcmlwdD4KICAgICBkZXNjcmlwdGlvbigiQWx0ZXJuYXRlIHN0eWxlc2hlZXQgKGxp
bmspIHRpdGxlIHRlc3QgMyIpOwogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHdp
bmRvdy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImZpcnN0SDEiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2xpbmst
YWx0ZXJuYXRlLXN0eWxlc2hlZXQtNC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvY3NzL2xpbmstYWx0ZXJuYXRlLXN0eWxlc2hlZXQtNC5odG1sCShyZXZpc2lvbiAxMjA2NzUp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9saW5rLWFsdGVybmF0ZS1zdHlsZXNoZWV0LTQuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMjEsOCArMjEsOCBAQAogICA8c2NyaXB0PgogICAgIGRlc2Ny
aXB0aW9uKCJBbHRlcm5hdGUgc3R5bGVzaGVldCAobGluaykgdGl0bGUgdGVzdCA0Iik7CiAKLSAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uICgp
IHsKICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmlyc3RIMSIpOwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvbGluay1hbHRlcm5hdGUtc3R5bGVzaGVldC01Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvbGluay1hbHRlcm5hdGUtc3R5
bGVzaGVldC01Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3Nz
L2xpbmstYWx0ZXJuYXRlLXN0eWxlc2hlZXQtNS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw4
ICsyMSw4IEBACiAgIDxzY3JpcHQ+CiAgICAgZGVzY3JpcHRpb24oIkFsdGVybmF0ZSBzdHlsZXNo
ZWV0IChsaW5rKSB0aXRsZSB0ZXN0IDUiKTsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAK
ICAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkgewogICAgICAgZWxlbWVudCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJmaXJzdEgxIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy9saXN0LWl0ZW0tcHNldWRvLW5vY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9saXN0LWl0ZW0tcHNldWRvLW5vY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjc1
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvbGlzdC1pdGVtLXBzZXVkby1ub2NyYXNoLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTE3LDExICsxNywxMSBAQCBzcGFuIHsKICAgICAgICAgPC9zdHls
ZT4KICAgICAgICAgPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4KIGZ1bmN0
aW9uIHJ1bigpIHsKLSAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBp
ZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICB3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgIHdpbmRvdy50ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB3aW5kb3cu
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMCwgMCk7CiAgICAgd2luZG93LnNldFRpbWVvdXQoaG92
ZXIsIDEwMCk7CiB9CkBAIC0zNSw3ICszNSw3IEBAIGZ1bmN0aW9uIGhvdmVyKCkgewogfQogCiBm
dW5jdGlvbiBmaW5hbGl6ZSgpIHsKLSAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICAgIHdpbmRvdy50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBydW4sIGZhbHNlKTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvY3NzL2xpc3QtaXRlbS10ZXh0LWFsaWduLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9jc3MvbGlzdC1pdGVtLXRleHQtYWxpZ24uaHRtbAkocmV2aXNpb24gMTIw
Njc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvbGlzdC1pdGVtLXRleHQtYWxpZ24uaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtNDQsOCArNDQsOCBAQCBUaGUgdGVzdCBwYXNzZXMgaWYgYWxsIHRo
ZSBsaW5lcyBjb250YWluCiAKIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAvLyBDaGVja3Mg
dGhhdCB0aGUgZ2l2ZW4gZWxlbWVudCBpcyBsZWZ0IGFsaWduZWQgaWYgZXhwZWN0ZWRBbGlnbm1l
bnQgaXMgJ2xlZnQnLCBvciByaWdodCBhbGlnbmVkIGlmCiAvLyBleHBlY3RlZEFsaWdubWVudCBp
cyAncmlnaHQnLgpAQCAtNTQsNyArNTQsNyBAQCBmdW5jdGlvbiBhc3NlcnRBbGlnbm1lbnQoZW5j
bG9zaW5nTGlzdEVsCiAgICAgdmFyIGNvbXB1dGVkU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRT
dHlsZShlbmNsb3NpbmdMaXN0RWxlbWVudCwgbnVsbCk7CiAgICAgdmFyIGxlZnRBbGlnbiA9IGV4
cGVjdGVkQWxpZ25tZW50ID09ICdsZWZ0JzsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgaWYgKGNv
bXB1dGVkU3R5bGUudGV4dEFsaWduID09ICdzdGFydCcpIHsKICAgICAgICAgICAgIC8vIEZvciB0
aGUgY2FzZSBvZiAtd2Via2l0LWF1dG8gY2hlY2sgdGhlIG9mZnNldCBvZiB0aGUgdGV4dCBvbiBz
Y3JlZW4KICAgICAgICAgICAgIC8vIHJhdGhlciB0aGFuIGV4YW1pbmluZyB0aGUgY29tcHV0ZWQg
c3R5bGUuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9sb2NhbF9mb250X2ludmFsaWQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9sb2NhbF9mb250X2ludmFsaWQu
aHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvbG9jYWxfZm9u
dF9pbnZhbGlkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiA8aHRtbD4KIDxz
Y3JpcHQ+Ci0gICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiAgICAgPGJvZHk+CiAgICAgICAgIDxo
MSBpZD0xIHN0eWxlPSJzcmM6IGxvY2FsKDIwOTcxNTMpIiAvPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvbG9naWNhbC1wcm9wZXJ0eS1yZXNvbHV0aW9uLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jc3MvbG9naWNhbC1wcm9wZXJ0eS1yZXNvbHV0aW9uLmh0bWwJKHJl
dmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2xvZ2ljYWwtcHJvcGVydHkt
cmVzb2x1dGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00NCw4ICs0NCw4IEBACiB9CiA8L3N0
eWxlPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gIHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCkKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpCiAgIAogZnVuY3Rpb24gZHVtcEJs
b2NrUHJvcGVydGllcygpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9tYW55LXNwYWNl
cy1iZWZvcmUtY2hhcnNldC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3Nz
L21hbnktc3BhY2VzLWJlZm9yZS1jaGFyc2V0Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvY3NzL21hbnktc3BhY2VzLWJlZm9yZS1jaGFyc2V0Lmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdD4KLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogCiB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgdmFyIGVsbXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHJvYmUiKTsgIApJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9jc3MvbWFzay1taXNzaW5nLWltYWdlLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jc3MvbWFzay1taXNzaW5nLWltYWdlLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEy
MDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL21hc2stbWlzc2luZy1pbWFnZS1jcmFzaC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPHA+VGVzdCBmb3IgPGEgaHJlZj0i
cmRhcjovL3Byb2JsZW0vNTk1OTE2NSI+cmRhcjovL3Byb2JsZW0vNTk1OTE2NTwvYT46IENyYXNo
IGluIGEgbnVtYmVyIG9mIGlFeHBsb2RlciB0ZXN0cyBpbiBXZWJDb3JlOjpDYWNoZWRJbWFnZTo6
bm90aWZ5T2JzZXJ2ZXJzLjwvYT4KIDxwPlBhc3NlZCBpZiB0aGUgYnJvd3NlciBkaWRuJ3QgY3Jh
c2guPC9wPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8b2JqZWN0IHN0eWxl
PSItd2Via2l0LW1hc2staW1hZ2U6IHVybCh1cmwtbm90LWZvdW5kKTsiPnRleHQKIDxvYmplY3Qg
c3R5bGU9Ii13ZWJraXQtbWFzay1ib3gtaW1hZ2U6IHVybCh1cmwtbm90LWZvdW5kKTsgIj50ZXh0
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9tYXRyaXgtYXMtZnVuY3Rpb24tY3Jhc2guaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9tYXRyaXgtYXMtZnVuY3Rpb24t
Y3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvbWF0
cml4LWFzLWZ1bmN0aW9uLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBA
CiA8aGVhZD4KICAgICA8dGl0bGU+Q2FsbGluZyBXZWJLaXRDU1NNYXRyaXggY29uc3RydWN0b3Ig
YXMgZnVuY3Rpb24gc2hvdWxkIG5vdCBjYXVzZSBhIGNyYXNoPC90aXRsZT4KICAgICA8c2NyaXB0
PgotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAg
ICBmdW5jdGlvbiBydW5UZXN0KCkKICAgICAgICAgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9j
c3MvbWF4LWRldmljZS1hc3BlY3QtcmF0aW8uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9tYXgtZGV2aWNlLWFzcGVjdC1yYXRpby5odG1sCShyZXZpc2lvbiAxMjA2NzUp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9tYXgtZGV2aWNlLWFzcGVjdC1yYXRpby5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogPGhlYWQgaWQ9Im15aGVhZCI+CiA8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgd2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgIHdpbmRvdy50ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogdmFyIGNvdW50ID0g
MDsKQEAgLTQyLDggKzQyLDggQEAgZnVuY3Rpb24gd2FpdEZvclN0eWxlc2hlZXRMb2FkKCkKICAg
ICBpZiAoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZGVzY3JpcHRpb24nKSwgbnVsbCkuY29sb3IgPT0gInJnYigwLCAxMjgsIDAp
IikgewogICAgICAgICBzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRT
dHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGVzY3JpcHRpb24nKSwgbnVsbCkuY29sb3Ii
LCAiJ3JnYigwLCAxMjgsIDApJyIpOwogICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwot
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICB3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jc3MvbWF4LWhlaWdodC1hbmQtbWF4LXdpZHRoLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jc3MvbWF4LWhlaWdodC1hbmQtbWF4LXdpZHRoLmh0bWwJKHJldmlz
aW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL21heC1oZWlnaHQtYW5kLW1heC13
aWR0aC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogPGhlYWQgaWQ9Im15aGVh
ZCI+CiA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiBkb1Rl
c3QoKQogewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvbWF4LXdpZHRoLW5vbmUuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9tYXgtd2lkdGgtbm9uZS5odG1sCShy
ZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9tYXgtd2lkdGgtbm9uZS5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogPGh0bWw+CiAgIDxzY3JpcHQ+Ci0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIGZ1bmN0aW9u
IGRvVGVzdCgpIHsKICAgICAgICAgdmFyIGJveDEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Ym94MScpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvbWVkaWEtcXVlcnktZXZhbHVhdG9y
LWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvbWVkaWEtcXVl
cnktZXZhbHVhdG9yLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvY3NzL21lZGlhLXF1ZXJ5LWV2YWx1YXRvci1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0yLDggKzIsOCBAQAogVGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3QgY3Jhc2guCiA8aWZy
YW1lIGlkPSJ0ZXN0Ij48L2lmcmFtZT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogdmFyIGlm
cmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CiB2YXIgb2JqID0gaWZyYW1l
LmNvbnRlbnRXaW5kb3cubWF0Y2hNZWRpYSgiKG1pbi13aWR0aDogMGVtKSIpOwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jc3MvbWVkaWEtcnVsZS1keW4uaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9tZWRpYS1ydWxlLWR5bi5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9tZWRpYS1ydWxlLWR5bi5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC01LDggKzUsOCBAQAogICAgICAgICA8L3N0eWxlPgogICAgICAgICA8c2NyaXB0PgogICAg
ICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAg
ICAgICAgICAgICAgIHZhciBzdHlsZVNoZWV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0
eWxlMScpLnNoZWV0OwogICAgICAgICAgICAgICAgIHZhciBtZWRpYVJ1bGUgPSBzdHlsZVNoZWV0
LmNzc1J1bGVzWzBdOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvbWVkaWEtcnVsZS1zY3Jl
ZW5EZXB0aFBlckNvbXBvbmVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y3NzL21lZGlhLXJ1bGUtc2NyZWVuRGVwdGhQZXJDb21wb25lbnQuaHRtbAkocmV2aXNpb24gMTIw
Njc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvbWVkaWEtcnVsZS1zY3JlZW5EZXB0aFBlckNv
bXBvbmVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBAQAogICAgICAgICA8L3N0
eWxlPgogICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsK
LSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAg
ICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgKz0g
d2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcp
KS5nZXRQcm9wZXJ0eVZhbHVlKCJjb2xvciIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
bWluLWRldmljZS1hc3BlY3QtcmF0aW8uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9taW4tZGV2aWNlLWFzcGVjdC1yYXRpby5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9taW4tZGV2aWNlLWFzcGVjdC1yYXRpby5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogPGhlYWQgaWQ9Im15aGVhZCI+CiA8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgd2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
IHdpbmRvdy50ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogdmFyIGNvdW50ID0gMDsK
QEAgLTQyLDggKzQyLDggQEAgZnVuY3Rpb24gd2FpdEZvclN0eWxlc2hlZXRMb2FkKCkKICAgICBp
ZiAoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnZGVzY3JpcHRpb24nKSwgbnVsbCkuY29sb3IgPT0gInJnYigwLCAxMjgsIDApIikg
ewogICAgICAgICBzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHls
ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGVzY3JpcHRpb24nKSwgbnVsbCkuY29sb3IiLCAi
J3JnYigwLCAxMjgsIDApJyIpOwogICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwotICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICB3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvbWlzcGxhY2VkLWNoYXJzZXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9taXNwbGFjZWQtY2hhcnNldC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9taXNwbGFjZWQtY2hhcnNldC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xOCw4ICsxOCw4IEBAIGRpdi5iIHtiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbiAhaW1wb3J0
YW4KICAgICA8ZGl2IHN0eWxlPSJoZWlnaHQ6NXB4OyB3aWR0aDo1cHg7IGJhY2tncm91bmQtY29s
b3I6Z3JlZW47IHZpc2liaWxpdHk6IGhpZGRlbiI+PC9kaXY+CiAgICAgPGRpdiBpZD0icmVzdWx0
Ij5UZXN0aW5nLi4uPC9kaXY+CiAgICAgPHNjcmlwdD4KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgIHZhciBleHBlY3RlZCA9IGRvY3VtZW50LmRl
ZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImRpdiIpWzJdLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3I7CiAgICAgICAgIHZhciByZXN1bHQgPSBk
b2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJkaXYiKVswXSwgbnVsbCkuYmFja2dyb3VuZENvbG9yID09IGV4cGVjdGVkCiAg
ICAgICAgICAgICAmJiBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkaXYiKVsxXSwgbnVsbCkuYmFja2dyb3VuZENvbG9y
ID09IGV4cGVjdGVkOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvbW9kaWZ5LXVhLXJ1bGVz
LWZyb20tamF2YXNjcmlwdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3Nz
L21vZGlmeS11YS1ydWxlcy1mcm9tLWphdmFzY3JpcHQuaHRtbAkocmV2aXNpb24gMTIwNjc1KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvbW9kaWZ5LXVhLXJ1bGVzLWZyb20tamF2YXNjcmlwdC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogPGhlYWQ+CiA8dGl0bGU+VGVzdCBm
b3IgQnVnIDM1MDE0IC0gTW9kaWZ5aW5nIFVBIHJ1bGVzIGZyb20gcGFnZSBKUyBjcmFzaGVzPC90
aXRsZT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gdGVzdCgpCiB7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9uYW1lZC1jb2xvcnMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9uYW1lZC1jb2xvcnMuaHRtbAkocmV2aXNpb24gMTIwNjc1KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvbmFtZWQtY29sb3JzLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTQsOCArNCw4IEBACiA8dGl0bGU+TmFtZWQgQ29sb3JzIFRlc3Q8L3RpdGxlPgogPHNjcmlw
dD4KIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICAKICAgICAvLyBOYW1l
ZCBjb2xvcnMgYW5kIHRoZWlyIHJnYiB2YWx1ZXMgYXMgcGVyIHRoZSBjc3MzIHNwZWNpZmljYXRp
b24uCiAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1jb2xvci8jc3ZnLWNvbG9yCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9uZXN0ZWQtZmlyc3QtbGV0dGVyLXdpdGgtZmxvYXQt
Y3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9uZXN0ZWQtZmly
c3QtbGV0dGVyLXdpdGgtZmxvYXQtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9jc3MvbmVzdGVkLWZpcnN0LWxldHRlci13aXRoLWZsb2F0LWNyYXNoLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTE4LDggKzE4LDggQEAKICAgICAgICAgICAgIGRpdkNoaWxk
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICAgICBkaXZDaGlsZC5z
ZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ2RpdkNoaWxkU3R5bGUnKTsKICAgICAgICAgICAgIHBhcmVu
dERpdi5hcHBlbmRDaGlsZChkaXZDaGlsZCk7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgfQogICAgICAgICB3aW5k
b3cub25sb2FkID0gcnVuVGVzdDsKICAgICA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvY3NzL25lc3RlZC1sYXllcnMtd2l0aC1ob3Zlci5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvY3NzL25lc3RlZC1sYXllcnMtd2l0aC1ob3Zlci5odG1sCShyZXZpc2lvbiAx
MjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9uZXN0ZWQtbGF5ZXJzLXdpdGgtaG92ZXIu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogICAgICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIAorICAgICAgICAgICAgICAgIGlmICgh
d2luZG93LnRlc3RSdW5uZXIpIAogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgdmFyIHRhcmdldEVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFibGUt
cm93Jyk7CiAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8odGFyZ2V0RWxl
bS5vZmZzZXRMZWZ0ICsgdGFyZ2V0RWxlbS5vZmZzZXRXaWR0aCAvIDIsIApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jc3MvbmVzdGVkLXJ1bGUtcGFyZW50LXNoZWV0Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvbmVzdGVkLXJ1bGUtcGFyZW50LXNoZWV0Lmh0bWwJKHJl
dmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL25lc3RlZC1ydWxlLXBhcmVu
dC1zaGVldC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw4ICsxMiw4IEBACiA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiBsb2co
bWVzc2FnZSkKIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL250aC1jaGlsZC1pbXBsaWVk
LXN0ZXAuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9udGgtY2hpbGQt
aW1wbGllZC1zdGVwLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y3NzL250aC1jaGlsZC1pbXBsaWVkLXN0ZXAuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw4ICs5
LDggQEAKICAgICB9DQogPC9zdHlsZT4NCiA8c2NyaXB0Pg0KLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpDQotICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7DQoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQ0KKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7DQogPC9zY3JpcHQ+DQogPC9oZWFkPg0KIDxib2R5Pg0KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvY3NzL250aC1jaGlsZC1uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvbnRoLWNoaWxkLW4uaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9jc3MvbnRoLWNoaWxkLW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw4ICs2LDgg
QEAKIGRpdiBkaXY6bnRoLWNoaWxkKG4pIHsgY29sb3I6IGdyZWVuOyB9CiA8L3N0eWxlPgogPHNj
cmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gIHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCkKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgd2lu
ZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpCiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvbnRoLWNoaWxkLW5lZ2F0aXZlLWEtcGFyYW0uaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9udGgtY2hpbGQtbmVnYXRpdmUt
YS1wYXJhbS5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9u
dGgtY2hpbGQtbmVnYXRpdmUtYS1wYXJhbS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw4ICsx
NCw4IEBAIGxpOm50aC1jaGlsZCgtMm4pIHsKIH0KIDwvc3R5bGU+CiA8c2NyaXB0PgotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiAKIGZ1bmN0aW9uIHRlc3QoKQogewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
bnRoLWNoaWxkLW9kZC1jYXNlLWluc2Vuc2l0aXZlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jc3MvbnRoLWNoaWxkLW9kZC1jYXNlLWluc2Vuc2l0aXZlLmh0bWwJKHJldmlz
aW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL250aC1jaGlsZC1vZGQtY2FzZS1p
bnNlbnNpdGl2ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw4ICsxNyw4IEBACiAgICAgICA8
L2Rpdj4KICAgICAgIDxkaXYgaWQ9InRlc3RyZXN1bHQiIHN0eWxlPSJjb2xvcjogYmx1ZSI+UnVu
bmluZzwvZGl2PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAg
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKIAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEFycmF5Q29udGFpbnMoYXJy
YXksIHZhbHVlLCBjaSkKICAgICAgICAgICAgICAgICB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Nzcy9udGgtY2hpbGQtdW5hcnktcHJlZml4Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jc3MvbnRoLWNoaWxkLXVuYXJ5LXByZWZpeC5odG1sCShyZXZpc2lvbiAxMjA2NzUp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9udGgtY2hpbGQtdW5hcnktcHJlZml4Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTksOCArOSw4IEBACiAgICAgfQ0KIDwvc3R5bGU+DQogPHNjcmlwdD4N
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQ0KLSAgd2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKQ0KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikNCisgIHdpbmRv
dy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKQ0KIDwvc2NyaXB0Pg0KIDwvaGVhZD4NCiA8Ym9keT4N
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9udW1iZXItcGFyc2luZy1jcmFzaC0yLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvbnVtYmVyLXBhcnNpbmctY3Jhc2gt
Mi5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9udW1iZXIt
cGFyc2luZy1jcmFzaC0yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDggQEAKIFRo
aXMgc2hvdWxkIG5vdCBjcmFzaC4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+
CiAKICAgICA8aDE+QW4gZXhhbXBsZSBvZiBhIGJvdW5jaW5nIGJveDwvaDE+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9udW1iZXItcGFyc2luZy1jcmFzaC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY3NzL251bWJlci1wYXJzaW5nLWNyYXNoLmh0bWwJKHJldmlzaW9u
IDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL251bWJlci1wYXJzaW5nLWNyYXNoLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiBUaGlzIHNob3VsZCBub3QgY3Jhc2gu
CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogCiA8aW1nIHNyYz0iYnViYmxl
cy5qcGciIHN0eWxlPSJib3JkZXI6NXB4IHNvbGlkIHdoaXRlOy13ZWJraXQtYm94LXJlZmxlY3Q6
YmVsb3cgNXB4IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20s
IGZyb20odHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKDAuMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExLCB0cmFuc3BhcmVudCksIHRvKHdoaXRlKSk7
Ij4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL29wYWNpdHktZmxvYXQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9vcGFjaXR5LWZsb2F0Lmh0bWwJKHJldmlzaW9u
IDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL29wYWNpdHktZmxvYXQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMSw5ICsxLDkgQEAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAK
ICAgICAvLyBQdXQgb3Vyc2VsdmVzIGluIGEgbG9jYWxlIHdoZXJlIDAuOSBpcyB3cml0dGVuIGFz
ICIwLDkiLgotICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBPU0lYTG9jYWxlKCJwbF9QTC5V
VEYtOCIpOworICAgIHRlc3RSdW5uZXIuc2V0UE9TSVhMb2NhbGUoInBsX1BMLlVURi04Iik7CiB9
CiA8L3NjcmlwdD4KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3Mvb3JwaGFuZWRfdW5pdHNf
Y3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9vcnBoYW5lZF91
bml0c19jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy9vcnBoYW5lZF91bml0c19jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBA
QAogICAgICAgICB9CiAgICAgPC9zdHlsZT4KICAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2Ny
aXB0Ij4KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAg
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL291
dGxpbmUtaGlkZGVuLWlsbGVnYWwtdmFsdWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9vdXRsaW5lLWhpZGRlbi1pbGxlZ2FsLXZhbHVlLmh0bWwJKHJldmlzaW9uIDEy
MDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL291dGxpbmUtaGlkZGVuLWlsbGVnYWwtdmFs
dWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDwhZG9jdHlwZSBodG1sPgog
PHRpdGxlPm91dGxpbmUtc3R5bGU6IGlsbGVnYWwgaGlkZGVuIHZhbHVlPC90aXRsZT4KIDxzY3Jp
cHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDxzdHlsZT4KICAg
ICBwIHsgbWFyZ2luOiAyZW07IG91dGxpbmU6IC41ZW0gc29saWQgbGltZTsgb3V0bGluZS1zdHls
ZTogaGlkZGVuIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL291dGxpbmUtaW52ZXJ0LWFz
c2VydGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL291dGxpbmUt
aW52ZXJ0LWFzc2VydGlvbi5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9vdXRsaW5lLWludmVydC1hc3NlcnRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MSw2ICsxLDYgQEAKIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3Nj
cmlwdD4KIAogPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMTYxIj5CdWcgMjIxNjE6IEFzc2VydGlvbiBmYWlsdXJlIGluIFJlbmRl
clRoZW1lV2luOjpzeXN0ZW1Db2xvciB3aGVuIGxvYWRpbmcgbWljcm9zb2Z0cGRjLmNvbTwvYT48
L3A+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wYXJzZS1jb2xvci1pbnQtb3ItcGVyY2Vu
dC1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNlLWNv
bG9yLWludC1vci1wZXJjZW50LWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91
dFRlc3RzL2Zhc3QvY3NzL3BhcnNlLWNvbG9yLWludC1vci1wZXJjZW50LWNyYXNoLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8aHRtbD4NCiAgICAgPGJvZHk+DQogICAgICAg
ICA8c2NyaXB0PiAgICANCi0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQ0KLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
DQorICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQ0KKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsNCiANCiAgICAgICAgICAgICB2YXIgc3RvcEVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InN0b3AiKTsNCiAgICAgICAgICAgICBzdG9wRWxlbWVudC5zdHlsZS5zdG9wQ29sb3IgPSAiYmx1
ZSI7DQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2UtdGltaW5nLWZ1bmN0aW9uLWNy
YXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2UtdGltaW5n
LWZ1bmN0aW9uLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zh
c3QvY3NzL3BhcnNlLXRpbWluZy1mdW5jdGlvbi1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogPHAgc3R5bGU9Ii13ZWJraXQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rp
b246IGN1YmljLWJlemllcigwLjUsIDAuMiwgMC44LCAwLjkpOyI+VGhpcyBwYXJhZ3JhcGggaGFz
IGEgLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiBwcm9wZXJ0eSB0aGF0IHVzZXMg
dGhlIGN1YmljLWJlemllciBmdW5jdGlvbi4gUGFyc2luZyBpdHMgc3R5bGUgc2hvdWxkIG5vdCBj
YXVzZSB0aGUgYnJvd3NlciB0byBjcmFzaC48L3A+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8
L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNpbmctY3NzLWFsbG93ZWQt
c3RyaW5nLWNoYXJhY3RlcnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy9wYXJzaW5nLWNzcy1hbGxvd2VkLXN0cmluZy1jaGFyYWN0ZXJzLmh0bWwJKHJldmlzaW9uIDEy
MDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNpbmctY3NzLWFsbG93ZWQtc3RyaW5n
LWNoYXJhY3RlcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsOCBAQAogCiBmdW5j
dGlvbiBydW5UZXN0KCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHZh
ciBydWxlcyA9IGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzOwogICAgIHZhciB0ZXh0
ID0gIiI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wYXJzaW5nLWNzcy1ibG9jay5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNpbmctY3NzLWJsb2NrLmh0
bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNpbmctY3Nz
LWJsb2NrLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsOCArOCw4IEBACiAKIGZ1bmN0aW9uIHJ1
blRlc3QoKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgaWYgKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxkLnN0eWxlLmZvbnRTaXplID09
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXhwZWN0ZWQiKS5maXJzdENoaWxkLnN0eWxlLmZv
bnRTaXplKQogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWVzc2FnZSIpLmZpcnN0
Q2hpbGQuZGF0YSA9ICJTVUNDRVNTIjsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNp
bmctY3NzLWNvbW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9w
YXJzaW5nLWNzcy1jb21tZW50Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvY3NzL3BhcnNpbmctY3NzLWNvbW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjgs
OCArMjgsOCBAQAogCiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKIAogICAgIHZhciBydWxlcyA9IGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1
bGVzOwogICAgIHZhciB0ZXh0ID0gIiI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wYXJz
aW5nLWNzcy1lc2NhcGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
cGFyc2luZy1jc3MtZXNjYXBlcy5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9wYXJzaW5nLWNzcy1lc2NhcGVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIx
LDggKzIxLDggQEAgZ1w3MgxvXDc1DW5cNjQNCiAKIGZ1bmN0aW9uIHJ1blRlc3QoKQogewotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgdmFyIHJ1bGVzID0gZG9jdW1lbnQuc3R5
bGVTaGVldHNbMF0uY3NzUnVsZXM7CiAgICAgdmFyIHRleHQgPSAiIjsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvY3NzL3BhcnNpbmctY3NzLW5vbmFzY2lpLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy1jc3Mtbm9uYXNjaWkuaHRtbAkocmV2aXNpb24gMTIw
Njc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy1jc3Mtbm9uYXNjaWkuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsOCBAQAogCiBmdW5jdGlvbiBydW5UZXN0KCkKIHsK
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHZhciBydWxlcyA9IGRvY3VtZW50
LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzOwogICAgIHZhciB0ZXh0ID0gIiI7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9wYXJzaW5nLWNzcy1udGgtY2hpbGQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wYXJzaW5nLWNzcy1udGgtY2hpbGQuaHRtbAkocmV2aXNp
b24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy1jc3MtbnRoLWNoaWxk
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDggQEAKIC8qKiBDaGFuZ2VzIHRoZSBy
ZXN1bHQgdGV4dCBmb250IHNpemUuICovCiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHZhciBydWxlcyA9IGRvY3VtZW50LnN0eWxlU2hl
ZXRzWzBdLmNzc1J1bGVzOwogICAgIHZhciB0ZXh0ID0gIiI7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9wYXJzaW5nLWNzcy1udW1iZXItdHlwZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9wYXJzaW5nLWNzcy1udW1iZXItdHlwZXMuaHRtbAkocmV2aXNpb24g
MTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy1jc3MtbnVtYmVyLXR5cGVz
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDggQEAKIAogZnVuY3Rpb24gcnVuVGVz
dCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICB2YXIgcnVsZXMgPSBk
b2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlczsKICAgICB2YXIgdGV4dCA9ICIiOwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy1jc3Mtc3Vycm9nYXRlLXBhaXJzLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy1jc3Mtc3Vycm9nYXRl
LXBhaXJzLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3Bh
cnNpbmctY3NzLXN1cnJvZ2F0ZS1wYWlycy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICsz
NSw4IEBACiAKIGZ1bmN0aW9uIHJ1blRlc3QoKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogCiAgICAgdmFyIHJ1bGVzID0gZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXM7
CiAgICAgdmFyIHRleHQgPSAiIjsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNpbmct
Y3NzLXdyYXAuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wYXJzaW5n
LWNzcy13cmFwLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3Nz
L3BhcnNpbmctY3NzLXdyYXAuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw4ICs5LDggQEAgZnVu
Y3Rpb24gcnVuVGVzdCgpCiB7CiAJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmZp
cnN0Q2hpbGQuc2V0QXR0cmlidXRlKCJzdHlsZSIsImZvbnQtc2l6ZTogMTZcXDcwXHJcbng7Iik7
CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIGlmIChkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzdWx0IikuZmlyc3RDaGlsZC5zdHlsZS5mb250U2l6ZSA9PT0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImV4cGVjdGVkIikuZmlyc3RDaGlsZC5zdHlsZS5mb250U2l6ZSkK
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1lc3NhZ2UiKS5maXJzdENoaWxkLmRh
dGEgPSAiU1VDQ0VTUyI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wYXJzaW5nLWVycm9y
LXJlY292ZXJ5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2lu
Zy1lcnJvci1yZWNvdmVyeS5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9wYXJzaW5nLWVycm9yLXJlY292ZXJ5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEs
OCArMSw4IEBACiA8aHRtbD4KIDxoZWFkPgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0Ij4KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAg
PC9zY3JpcHQ+CiAgICAgPHN0eWxlPgogICAgICAgICAudG9fYmVfc2hvd24gewpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy1mb250LXZhcmlhbnQtbGlnYXR1cmVzLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy1mb250LXZhcmlhbnQtbGln
YXR1cmVzLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3Bh
cnNpbmctZm9udC12YXJpYW50LWxpZ2F0dXJlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcg
KzEsNyBAQAogPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CiA8c2NyaXB0PgotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiAgICAgewpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy1oeXBoZW5hdGUtbGltaXQtbGluZXMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wYXJzaW5nLWh5cGhlbmF0ZS1s
aW1pdC1saW5lcy5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy9wYXJzaW5nLWh5cGhlbmF0ZS1saW1pdC1saW5lcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDcgKzEsNyBAQAogPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CiA8c2NyaXB0PgotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiAgICAgewpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy1oeXBoZW5hdGUtbGltaXQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wYXJzaW5nLWh5cGhlbmF0ZS1saW1p
dC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wYXJzaW5n
LWh5cGhlbmF0ZS1saW1pdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogPHBy
ZSBpZD0iY29uc29sZSI+PC9wcmU+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogCiAgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiAgICAgewpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jc3MvcGFyc2luZy1wYWdlLXJ1bGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9wYXJzaW5nLXBhZ2UtcnVsZS5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wYXJzaW5nLXBhZ2UtcnVsZS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0yLDggKzIsOCBAQAogPGh0bWw+CiA8aGVhZD4KICAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogICAgIDwvc2NyaXB0PgogICAgIDxzdHlsZT4KICAgICAgICAgLnRvX2JlX3Nob3duIHsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNpbmctdGV4dC1lbXBoYXNpcy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNpbmctdGV4dC1lbXBoYXNpcy5o
dG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wYXJzaW5nLXRl
eHQtZW1waGFzaXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIDxwcmUgaWQ9
ImNvbnNvbGUiPjwvcHJlPgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
IAogICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQogICAgIHsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvY3NzL3BlbmRpbmctaW1hZ2VzLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jc3MvcGVuZGluZy1pbWFnZXMtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjc1KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGVuZGluZy1pbWFnZXMtY3Jhc2guaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsOCArMzAsOCBAQAogICAgIAogICA8L3N0eWxlPgogICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiAgIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9wZXJjZW50LWNoYXJhY3Rlci1hcy12YWx1ZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvY3NzL3BlcmNlbnQtY2hhcmFjdGVyLWFzLXZhbHVlLmh0bWwJKHJldmlz
aW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3BlcmNlbnQtY2hhcmFjdGVyLWFz
LXZhbHVlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsNiArNiw2IEBACiA8L3A+CiA8VUw+PEZP
TlQgQ09MT1I9IiYtMTA4OTY0NzUwOTsiPjwvVUw+PEZPTlQgQ09MT1I9JT4KIDxzY3JpcHQ+Ci0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY3NzL3Bvc2l0aW9uZWQtaW4tcmVsYXRpdmUtcG9zaXRpb24taW5saW5lLWNyYXNoLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvcG9zaXRpb25lZC1pbi1yZWxh
dGl2ZS1wb3NpdGlvbi1pbmxpbmUtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9jc3MvcG9zaXRpb25lZC1pbi1yZWxhdGl2ZS1wb3NpdGlvbi1pbmxpbmUt
Y3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsMTQgKzEwLDE0IEBACiB9CiA8L3N0eWxl
PgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIH0KIAogZnVuY3Rpb24gZHVtcFRlc3QoKSB7Ci0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIH0KIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wcmVzZXJ2ZS11c2VyLXNwZWNpZmllZC16b29tLWxldmVs
LW9uLXJlbG9hZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3ByZXNl
cnZlLXVzZXItc3BlY2lmaWVkLXpvb20tbGV2ZWwtb24tcmVsb2FkLmh0bWwJKHJldmlzaW9uIDEy
MDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3ByZXNlcnZlLXVzZXItc3BlY2lmaWVkLXpv
b20tbGV2ZWwtb24tcmVsb2FkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsNyArMyw3IEBACiA8
c2NyaXB0PgogZnVuY3Rpb24gcnVuVGVzdCgpCiB7Ci0gICAgaWYgKCF3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCkBAIC0xMiwxMCArMTIsMTAgQEAgZnVu
Y3Rpb24gcnVuVGVzdCgpCiAgICAgaWYgKCF3aW5kb3cuc2Vzc2lvblN0b3JhZ2UpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICBpZiAoc2Vzc2lvblN0b3JhZ2UudGVz
dENvbXBsZXRlZCkgewogICAgICAgICBkZWxldGUgc2Vzc2lvblN0b3JhZ2UudGVzdENvbXBsZXRl
ZDsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBOb3RlLCBp
dCBpcyBzdWZmaWNpZW50IHRvIHpvb20taW4gb25seSBvbmNlLCBidXQgc28gYXMgdG8gbWFrZSBp
dCBlYXNpZXIKICAgICAgICAgLy8gZm9yIGEgaHVtYW4gdG8gY29tcGFyZSB0aGUgcGl4ZWwgdGVz
dCByZXN1bHRzIHdlIHpvb20taW4gdXAgdG8gU2FmYXJpJ3MKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvY3NzL3BzZXVkby1hbnkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy9wc2V1ZG8tYW55Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y3NzL3BzZXVkby1hbnkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtODAsOCArODAsOCBAQCBUaGlz
IHBhZ2UgdGVzdHMgOi13ZWJraXQtYW55LiBUaGlzIHdpbmRvCiA8cHJlIGlkPSJjb25zb2xlIj48
L3ByZT4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiBhc3NlcnRDb2xvcihz
ZWxlY3Rvck9yRWxlbWVudCwgcmJnQ29sb3IpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy9wc2V1ZG8tZW1wdHktZGlzcGxheS1ub25lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jc3MvcHNldWRvLWVtcHR5LWRpc3BsYXktbm9uZS5odG1sCShyZXZpc2lvbiAxMjA2
NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tZW1wdHktZGlzcGxheS1ub25lLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTE0LDggKzE0LDggQEAKIDwvYm9keT4KIAogPHNjcmlwdD4K
LSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgdmFyIGxpc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yQWxsKCJwIik7CiAgIGZvciAodmFyIHJlc3VsdCA9ICIiLCBpID0gMDsgaSA8IGxpc3QubGVu
Z3RoOyArK2kpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tZW1wdHktZHluYW1p
Yy1lbXB0eS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1l
bXB0eS1keW5hbWljLWVtcHR5Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvY3NzL3BzZXVkby1lbXB0eS1keW5hbWljLWVtcHR5Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTE0LDggKzE0LDggQEAKIDwvYm9keT4NCiANCiA8c2NyaXB0Pg0KLSAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikNCi0gICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOw0KKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQ0KKyAgICAgIHdpbmRvdy50
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsNCiANCiAgIGZ1bmN0aW9uIGFsbEVsZW1lbnRzSGF2ZURp
c3BsYXlOb25lKGVsZW1lbnRzKQ0KICAgew0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3Bz
ZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAxLmh0bWwJKHJldmlzaW9uIDEy
MDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0w
MDEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTUsOCArMTUsOCBAQAogICAgIH0KIAogICAgIGZ1
bmN0aW9uIHRlc3QoKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogCiAgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7
CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0w
MDIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWly
ZWQtb3B0aW9uYWwtMDAyLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zh
c3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDIuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMTMsOCArMTMsOCBAQAogICAgIH0KIAogICAgIGZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgIHYgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CiAKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAzLmh0bWwJKHJl
dmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1v
cHRpb25hbC0wMDMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsOCArMTMsOCBAQAogICAgIH0K
IAogICAgIGZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogCiAgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgi
dmljdGltIik7CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1v
cHRpb25hbC0wMDQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1
ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA0Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91
dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDQuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEsOCArMjEsOCBAQAogICAgIH0KIAogICAgIGZ1bmN0aW9uIHRlc3QoKSB7
Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAg
IHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CiAKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDYuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA2
Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1y
ZXF1aXJlZC1vcHRpb25hbC0wMDYuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTIsOCArMTIsOCBA
QAogICAgIH0KIAogICAgIGZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5TmFtZSgidmljdGltIik7CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby10
YXJnZXQtaW5kaXJlY3Qtc2libGluZy0wMDEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9wc2V1ZG8tdGFyZ2V0LWluZGlyZWN0LXNpYmxpbmctMDAxLmh0bWwJKHJldmlz
aW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby10YXJnZXQtaW5kaXJl
Y3Qtc2libGluZy0wMDEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDggQEAKIDxoZWFk
PgogPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXRhcmdldC1pbmRpcmVj
dC1zaWJsaW5nLTAwMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3Bz
ZXVkby10YXJnZXQtaW5kaXJlY3Qtc2libGluZy0wMDIuaHRtbAkocmV2aXNpb24gMTIwNjc1KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXRhcmdldC1pbmRpcmVjdC1zaWJsaW5nLTAw
Mi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogPGhlYWQ+CiA8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKIAogd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG9zdHlsZS1hbm9ueW1vdXMtdGV4dC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkb3N0eWxlLWFub255bW91cy10
ZXh0Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVk
b3N0eWxlLWFub255bW91cy10ZXh0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsMTEgKzYsMTEg
QEAKICAgICA8L3N0eWxlPgogICAgIDxzY3JpcHQ+CiAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKSB7
Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKICAgICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJTZWxlY3RBbGwiKTsKLSAg
ICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZGlzcGxheSgpOworICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOwogICAg
ICAgICB9CiAgICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy9yZWFkb25seS1wc2V1ZG9jbGFzcy1vcGVyYS0wMDEuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9yZWFkb25seS1wc2V1ZG9jbGFzcy1vcGVyYS0wMDEuaHRtbAkocmV2
aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmVhZG9ubHktcHNldWRvY2xh
c3Mtb3BlcmEtMDAxLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEzLDggKzEzLDggQEAKICAgICB9
CiAKICAgICBmdW5jdGlvbiB0ZXN0KCkgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIAogICAgICAgICB2YXIgaSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ2aWN0aW0iKTsKICAgICAgICAgaWYgKGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVk
U3R5bGUoaSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnZGlzcGxheScpID09ICJub25lIikKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3JlYWRvbmx5LXBzZXVkb2NsYXNzLW9wZXJhLTAwMi5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3JlYWRvbmx5LXBzZXVkb2Ns
YXNzLW9wZXJhLTAwMi5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2Nzcy9yZWFkb25seS1wc2V1ZG9jbGFzcy1vcGVyYS0wMDIuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMTMsOCArMTMsOCBAQAogICAgIH0KIAogICAgIGZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgIHZhciBpID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpY3RpbSIpOwogICAgICAgICBpZiAoZG9jdW1lbnQu
ZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShpLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdi
YWNrZ3JvdW5kLWNvbG9yJykgPT0gInJnYigwLCAyNTUsIDApIikKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY3NzL3JlYWRvbmx5LXBzZXVkb2NsYXNzLW9wZXJhLTAwMy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3JlYWRvbmx5LXBzZXVkb2NsYXNzLW9wZXJhLTAwMy5o
dG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZWFkb25seS1w
c2V1ZG9jbGFzcy1vcGVyYS0wMDMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTcsOCArMTcsOCBA
QAogICAgIH0KIAogICAgIGZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgIHZhciBpID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeU5hbWUoInZpY3RpbSIpOwogICAgICAgICBmb3IgKGMgPSAwOyBjIDwgaS5sZW5ndGg7
IGMrKykgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmVhZG9ubHktcHNldWRvY2xhc3Mt
b3BlcmEtMDA0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmVhZG9u
bHktcHNldWRvY2xhc3Mtb3BlcmEtMDA0Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91
dFRlc3RzL2Zhc3QvY3NzL3JlYWRvbmx5LXBzZXVkb2NsYXNzLW9wZXJhLTAwNC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMyw4ICsxMyw4IEBACiAgICAgfQogCiAgICAgZnVuY3Rpb24gdGVzdCgp
IHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAg
ICAgdmFyIHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmljdGltIik7CiAgICAgICAgIGlm
IChkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHQsIG51bGwpLmdldFByb3Bl
cnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSA9PSAicmdiKDAsIDI1NSwgMCkiKQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9jc3MvcmVhZG9ubHktcHNldWRvY2xhc3Mtb3BlcmEtMDA1Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmVhZG9ubHktcHNldWRvY2xhc3Mt
b3BlcmEtMDA1Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3Nz
L3JlYWRvbmx5LXBzZXVkb2NsYXNzLW9wZXJhLTAwNS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0y
MCw4ICsyMCw4IEBACiAgICAgfQogCiAgICAgZnVuY3Rpb24gdGVzdCgpIHsKLSAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2kzJykucmVtb3ZlQXR0cmlidXRlKCdyZWFkb25seScpOwogICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaTQnKS5yZWFkT25seSA9IHRydWU7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9yZWN1cnNpdmUtZGVsYXktdXBkYXRlLXNjcm9sbC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3JlY3Vyc2l2ZS1kZWxheS11cGRhdGUtc2Ny
b2xsLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3JlY3Vy
c2l2ZS1kZWxheS11cGRhdGUtc2Nyb2xsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4
IEBACiA8aHRtbD4KICA8aGVhZD4KICAgIDxzY3JpcHQ+Ci0gICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiAgICA8L3NjcmlwdD4KIAogICAgPHN0eWxlIG1lZGlhPSJhbGwiIHR5cGU9InRleHQv
Y3NzIj4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3JlbGF0aXZlLXBvc2l0aW9uLXJlcGxh
Y2VkLWluLXRhYmxlLWRpc3BsYXktY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9yZWxhdGl2ZS1wb3NpdGlvbi1yZXBsYWNlZC1pbi10YWJsZS1kaXNwbGF5LWNy
YXNoLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3JlbGF0
aXZlLXBvc2l0aW9uLXJlcGxhY2VkLWluLXRhYmxlLWRpc3BsYXktY3Jhc2guaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNyw3ICs3LDcgQEAKIDwvc3R5bGU+DQogPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPg0KIGZ1bmN0aW9uIGR1bXBUZXN0KCkgew0KLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7DQorICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOw0KIH0NCiBm
dW5jdGlvbiBydW5UZXN0KCkgew0KICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncnVieScp
LmlubmVySFRNTCA9ICc8YXVkaW8gY29udHJvbHM9ImNvbnRyb2xzIiBpZD0iYXVkIiBzcmM9ImJs
YWgub2dnIiBjbGFzcz0icG9zQWJzb2x1dGUiPjwvYXVkaW8+JzsNCkBAIC0xNSw5ICsxNSw5IEBA
IGZ1bmN0aW9uIHJ1blRlc3QoKSB7DQogICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlbW92ZScpKTsgLy8gQ2F1c2UgYW5vbnltb3VzIGJsb2Nr
cyBjb250YWluaW5nICdzZWNvbmREaXZTdHlsZScgYW5kICdydWJ5JyB0byBiZSBtZXJnZWQNCiAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F1ZCcpLnN0eWxlLmNvbG9yID0gImJsdWUiOyAv
LyBGb3JjZSBzdHlsZSByZWNhbGMNCiAgICAgc2V0VGltZW91dCgnZHVtcFRlc3QoKScsIDEwKTsN
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgew0KLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOw0KLQlsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7DQorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgew0KKyAgICAgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7DQorCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOw0KICAg
ICB9DQogfQ0KIHdpbmRvdy5vbmxvYWQgPSBydW5UZXN0Ow0KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvY3NzL3JlbGF0aXZlLXBvc2l0aW9uZWQtYmxvY2stY3Jhc2guaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZWxhdGl2ZS1wb3NpdGlvbmVkLWJsb2NrLWNyYXNoLmh0
bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3JlbGF0aXZlLXBv
c2l0aW9uZWQtYmxvY2stY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw5ICs1LDkgQEAK
ICAgICAgICNlbDIgeyBvdXRsaW5lLXN0eWxlOiBkYXNoZWQ7IH0KICAgICA8L3N0eWxlPgogICAg
IDxzY3JpcHQ+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsKLSAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmRpc3BsYXkoKTsKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICB9CiAKICAgICAgICAgZnVu
Y3Rpb24gbG9nKG1lc3NhZ2UpIHsKQEAgLTIwLDEwICsyMCwxMCBAQAogICAgICAgICAgICBzZXRU
aW1lb3V0KCJmaW5pc2goKSIsIDEwMCk7CiAgICAgICAgIH0KICAgICAgICAgZnVuY3Rpb24gZmlu
aXNoKCkgewotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICAgICAgICAgIGxvZygiUEFTU0VEOiBEaWRuJ3QgY3Jh
c2ghXG4iKTsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmVsYXRpdmUtcG9z
aXRpb25lZC1ibG9jay1uZXN0ZWQtd2l0aC1pbmxpbmUtcGFyZW50LWR5bmFtaWMtcmVtb3ZlZC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3JlbGF0aXZlLXBvc2l0aW9u
ZWQtYmxvY2stbmVzdGVkLXdpdGgtaW5saW5lLXBhcmVudC1keW5hbWljLXJlbW92ZWQuaHRtbAko
cmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmVsYXRpdmUtcG9zaXRp
b25lZC1ibG9jay1uZXN0ZWQtd2l0aC1pbmxpbmUtcGFyZW50LWR5bmFtaWMtcmVtb3ZlZC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNSArMzMsMTUgQEAKICAgICAgICAgICAgIH0KICAgICAg
ICAgPC9zdHlsZT4KICAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAg
ICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBydW4oKSB7
CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdjIiKS5zdHlsZS5w
b3NpdGlvbiA9ICJzdGF0aWMiOwogICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0
VG9wOwotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICB9CiAgICAgICAgIDwvc2NyaXB0
PgogICAgIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3JlbGF0aXZlLXBvc2l0
aW9uZWQtYmxvY2stbmVzdGVkLXdpdGgtaW5saW5lLXBhcmVudC1keW5hbWljLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmVsYXRpdmUtcG9zaXRpb25lZC1ibG9jay1u
ZXN0ZWQtd2l0aC1pbmxpbmUtcGFyZW50LWR5bmFtaWMuaHRtbAkocmV2aXNpb24gMTIwNjc1KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmVsYXRpdmUtcG9zaXRpb25lZC1ibG9jay1uZXN0ZWQt
d2l0aC1pbmxpbmUtcGFyZW50LWR5bmFtaWMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTUg
KzMxLDE1IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgZnVuY3Rpb24gcnVuKCkgewogICAgICAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJkaXY0Iikuc3R5bGUucG9zaXRpb24gPSAicmVsYXRpdmUiOwogICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwotICAgICAgICAgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwogICAgICAgICAgICB9CiAgICAgICAgIDwvc2NyaXB0PgogICAgIDwvaGVhZD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvY3NzL3JlbGF0aXZlLXBvc2l0aW9uZWQtYmxvY2stbmVzdGVkLXdpdGgt
aW5saW5lLXBhcmVudC1tdWx0aXBsZS1kZXNjZW5kYW50LWJsb2Nrcy1keW5hbWljLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmVsYXRpdmUtcG9zaXRpb25lZC1ibG9j
ay1uZXN0ZWQtd2l0aC1pbmxpbmUtcGFyZW50LW11bHRpcGxlLWRlc2NlbmRhbnQtYmxvY2tzLWR5
bmFtaWMuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmVs
YXRpdmUtcG9zaXRpb25lZC1ibG9jay1uZXN0ZWQtd2l0aC1pbmxpbmUtcGFyZW50LW11bHRpcGxl
LWRlc2NlbmRhbnQtYmxvY2tzLWR5bmFtaWMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTUg
KzMwLDE1IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgZnVuY3Rpb24gcnVuKCkgewogICAgICAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJkaXYyIikuc3R5bGUucG9zaXRpb24gPSAicmVsYXRpdmUiOwogICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwotICAgICAgICAgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwogICAgICAgICAgICB9CiAgICAgICAgIDwvc2NyaXB0PgogICAgIDwvaGVhZD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvY3NzL3JlbGF0aXZlLXBvc2l0aW9uZWQtYmxvY2std2l0aC1pbmxpbmUt
YW5jZXN0b3ItYW5kLXBhcmVudC1keW5hbWljLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jc3MvcmVsYXRpdmUtcG9zaXRpb25lZC1ibG9jay13aXRoLWlubGluZS1hbmNlc3Rv
ci1hbmQtcGFyZW50LWR5bmFtaWMuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9jc3MvcmVsYXRpdmUtcG9zaXRpb25lZC1ibG9jay13aXRoLWlubGluZS1hbmNlc3Rv
ci1hbmQtcGFyZW50LWR5bmFtaWMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjksMTUgKzI5LDE1
IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgZnVuY3Rpb24gcnVuKCkgewogICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJzcGFuMiIpLnN0eWxlLnBvc2l0aW9uID0gInN0YXRpYyI7CiAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAg
ICAgICAgIH0KICAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9oZWFkPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jc3MvcmVsYXRpdmUtcG9zaXRpb25lZC1ibG9jay13aXRoLWlubGluZS1hbmNlc3Rv
ci1keW5hbWljLXJlbW92ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy9yZWxhdGl2ZS1wb3NpdGlvbmVkLWJsb2NrLXdpdGgtaW5saW5lLWFuY2VzdG9yLWR5bmFtaWMt
cmVtb3ZlZC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9y
ZWxhdGl2ZS1wb3NpdGlvbmVkLWJsb2NrLXdpdGgtaW5saW5lLWFuY2VzdG9yLWR5bmFtaWMtcmVt
b3ZlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNSArMzAsMTUgQEAKICAgICAgICAgICAg
IH0KICAgICAgICAgPC9zdHlsZT4KICAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
ICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlv
biBydW4oKSB7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwYW4x
Iikuc3R5bGUucG9zaXRpb24gPSAic3RhdGljIjsKICAgICAgICAgICAgICAgICBkb2N1bWVudC5i
b2R5Lm9mZnNldFRvcDsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgfQogICAgICAg
ICA8L3NjcmlwdD4KICAgICA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZWxh
dGl2ZS1wb3NpdGlvbmVkLWJsb2NrLXdpdGgtaW5saW5lLWFuY2VzdG9yLWR5bmFtaWMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZWxhdGl2ZS1wb3NpdGlvbmVkLWJs
b2NrLXdpdGgtaW5saW5lLWFuY2VzdG9yLWR5bmFtaWMuaHRtbAkocmV2aXNpb24gMTIwNjc1KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmVsYXRpdmUtcG9zaXRpb25lZC1ibG9jay13aXRoLWlu
bGluZS1hbmNlc3Rvci1keW5hbWljLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE1ICsyNSwx
NSBAQAogICAgICAgICAgICAgfQogICAgICAgICA8L3N0eWxlPgogICAgICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGZ1bmN0aW9uIHJ1bigpIHsKICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgic3BhbjEiKS5zdHlsZS5wb3NpdGlvbiA9ICJyZWxhdGl2ZSI7CiAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7Ci0gICAgICAgICAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAg
ICAgICAgICAgIH0KICAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9oZWFkPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jc3MvcmVsYXRpdmUtcG9zaXRpb25lZC1ibG9jay13aXRoLWlubGluZS1wYXJl
bnQtZHluYW1pYy1yZW1vdmVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9j
c3MvcmVsYXRpdmUtcG9zaXRpb25lZC1ibG9jay13aXRoLWlubGluZS1wYXJlbnQtZHluYW1pYy1y
ZW1vdmVkLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3Jl
bGF0aXZlLXBvc2l0aW9uZWQtYmxvY2std2l0aC1pbmxpbmUtcGFyZW50LWR5bmFtaWMtcmVtb3Zl
ZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxNSArMjksMTUgQEAKICAgICAgICAgICAgIH0K
ICAgICAgICAgPC9zdHlsZT4KICAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBy
dW4oKSB7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwYW4yIiku
c3R5bGUucG9zaXRpb24gPSAic3RhdGljIjsKICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5
Lm9mZnNldFRvcDsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgfQogICAgICAgICA8
L3NjcmlwdD4KICAgICA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZWxhdGl2
ZS1wb3NpdGlvbmVkLWJsb2NrLXdpdGgtaW5saW5lLXBhcmVudC1keW5hbWljLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmVsYXRpdmUtcG9zaXRpb25lZC1ibG9jay13
aXRoLWlubGluZS1wYXJlbnQtZHluYW1pYy5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9yZWxhdGl2ZS1wb3NpdGlvbmVkLWJsb2NrLXdpdGgtaW5saW5lLXBh
cmVudC1keW5hbWljLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE1ICsyOCwxNSBAQAogICAg
ICAgICAgICAgfQogICAgICAgICA8L3N0eWxlPgogICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGZ1bmN0aW9uIHJ1bigpIHsKICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgic3BhbjIiKS5zdHlsZS5wb3NpdGlvbiA9ICJyZWxhdGl2ZSI7CiAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAg
IH0KICAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9jc3MvcmVsYXRpdmUtcG9zaXRpb25lZC1ibG9jay13aXRoLWlubGluZS1wYXJlbnQta2VlcHMt
c3R5bGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZWxhdGl2ZS1w
b3NpdGlvbmVkLWJsb2NrLXdpdGgtaW5saW5lLXBhcmVudC1rZWVwcy1zdHlsZS5odG1sCShyZXZp
c2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZWxhdGl2ZS1wb3NpdGlvbmVk
LWJsb2NrLXdpdGgtaW5saW5lLXBhcmVudC1rZWVwcy1zdHlsZS5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiwxNSArMjYsMTUgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgPC9zdHlsZT4KICAg
ICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBydW4oKSB7CiAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdjMiKS5zdHlsZS5iYWNrZ3JvdW5kID0gInJl
ZCI7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7Ci0gICAgICAgICAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9oZWFkPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmVtb3ZlLXNob3J0aGFuZC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3JlbW92ZS1zaG9ydGhhbmQuaHRtbAkocmV2aXNp
b24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmVtb3ZlLXNob3J0aGFuZC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw4ICs0Nyw4IEBACiAgICAgICAgIAogICAgICAgICBmdW5j
dGlvbiB0ZXN0KCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgICAgIHZhciBzaG9ydGhhbmRz
ID0gWwogICAgICAgICAgICAgICAgICJiYWNrZ3JvdW5kIiwKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvY3NzL3Jlc2l6ZS1jb3JuZXItdHJhY2tpbmctdHJhbnNmb3JtZWQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZXNpemUtY29ybmVyLXRyYWNraW5nLXRyYW5zZm9y
bWVkLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3Jlc2l6
ZS1jb3JuZXItdHJhY2tpbmctdHJhbnNmb3JtZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEs
NyArMTEsNyBAQAogICAgICAgICB9CiAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
ICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICByZXNpemUoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y3NzL3Jlc2l6ZS1jb3JuZXItdHJhY2tpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9yZXNpemUtY29ybmVyLXRyYWNraW5nLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkK
KysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3Jlc2l6ZS1jb3JuZXItdHJhY2tpbmcuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTQsNyArMTQsNyBAQAogICAgICAgICB9CiAgICAgICAgIGZ1bmN0aW9u
IHRlc3QoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgcmVzaXplKCJkaXYiKTsKICAgICAgICAgICAgIHJl
c2l6ZSgidGV4dGFyZWExIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZXNpemUtc2lu
Z2xlLWF4aXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZXNpemUt
c2luZ2xlLWF4aXMuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
c3MvcmVzaXplLXNpbmdsZS1heGlzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTU0LDggKzU0LDgg
QEAKICAgICAgICAgICAgIGxvZygiRkFJTDogJyIgKyB0YXJnZXQuaWQgKyAiJyByZXNpemVkIHRv
ICgiICsgYWN0dWFsV2lkdGggKyAiLCAiICsgYWN0dWFsSGVpZ2h0ICsgIikgaW5zdGVhZCBvZiAo
IiArIHdpZHRoICsgIiwgIiArIGhlaWdodCArICIpLiIpOwogICAgIH0KIAotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICB2YXIgYm90aCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJib3RoIik7CiAgICAgICAgIHZhciBob3Jpem9udGFsID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImhvcml6b250YWwiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3Jl
c2l6ZS12YWx1ZS1jb21wYXJlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y3NzL3Jlc2l6ZS12YWx1ZS1jb21wYXJlZC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9yZXNpemUtdmFsdWUtY29tcGFyZWQuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMTMsOCArMTMsOCBAQAogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29u
c29sZSIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UgKyAiXG4i
KSk7CiAgICAgfQogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICB2YXIgdGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpOwogICAgIHRhcmdldC5zdHls
ZS5yZXNpemUgPSAiYm90aCI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9yb3VuZC10cmlw
LXZhbHVlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3JvdW5kLXRy
aXAtdmFsdWVzLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3Nz
L3JvdW5kLXRyaXAtdmFsdWVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDggQEAg
aW5kaWNhdGVzIHdoZXRoZXIgdGhlIHZhbHVlIHdhcyByb3VuZC10cgogPC90YWJsZT4KIAogPHNj
cmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiAKIHZhciB0YWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0
YWJsZScpOwogdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jyk7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9ydGwtbnRoLWNoaWxkLWZpcnN0LWxldHRlci1jcmFzaC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3J0bC1udGgtY2hpbGQtZmly
c3QtbGV0dGVyLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zh
c3QvY3NzL3J0bC1udGgtY2hpbGQtZmlyc3QtbGV0dGVyLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTUsNyArNSw3IEBACiA8cD5OVUxMIHBvaW50ZXIgY3Jhc2ggaW4gVGV4dEl0ZXJhdG9y
OjpoYW5kbGVUZXh0Qm94KCkgd2hlbiB1c2luZyBSVEwgdGV4dC4NCiBJZiB0aGVyZSBpcyBubyBj
cmFzaCwgdGhlbiB0aGUgdGVzdCBwYXNzZXMuPC9wPg0KIDxzY3JpcHQ+DQotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpDQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7DQorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikNCisgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOw0KIDwvc2NyaXB0Pg0KIDxwPklmIHlvdSBjYW4gc2VlIHRoaXMs
IHRoZW4gdGhlIHRlc3QgcGFzc2VzLjwvcD4NCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9y
dW4taW4tY2hpbGRyZW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9y
dW4taW4tY2hpbGRyZW4uaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9jc3MvcnVuLWluLWNoaWxkcmVuLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA
CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDxwPiBUaGlzIHRlc3RzIGlmIGFs
bCBjaGlsZHJlbiBpbiBydW4taW4gYmxvY2sgd2lsbCBiZSBkaXNwbGF5ZWQuPC9wPgogCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9ydW4taW4tY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9ydW4taW4tY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjc1KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvcnVuLWluLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw2IEBACiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
PC9zY3JpcHQ+CiAKIDxwPlRoaXMgdGVzdHMgYSBjYXNlIHdoZXJlIGEgcGFydGljdWxhciBET00g
dHJlZSBpbnZvbHZpbmcgdGhlIHJ1bi1pbiBzdHlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9j
c3Mvc2hhZG93LWRvbS1zY29wZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y3NzL3NoYWRvdy1kb20tc2NvcGUuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9jc3Mvc2hhZG93LWRvbS1zY29wZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDgg
KzgsOCBAQAogPC9zdHlsZT4KIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiB2YXIgaGVhZDsK
IHZhciBpbnB1dDsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3NoZWV0LWNvbGxlY3Rpb24t
bGluay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3NoZWV0LWNvbGxl
Y3Rpb24tbGluay5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy9zaGVldC1jb2xsZWN0aW9uLWxpbmsuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDgg
QEAKICAgICA8c2NyaXB0IGxhbmd1YWdlPSdqYXZhc2NyaXB0Jz4KICAgICBmdW5jdGlvbiBydW5U
ZXN0KCkKICAgICB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwogICAgICAgICB2YXIgc2hlZXRzID0gZG9jdW1lbnQuc3R5bGVTaGVldHM7CiAgICAgICAgIGlm
IChzaGVldHMubGVuZ3RoID09IDExKSB7CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2hl
ZXRzLmxlbmd0aDsgaSsrKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zaGVldC10aXRs
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3NoZWV0LXRpdGxlLmh0
bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3NoZWV0LXRpdGxl
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8aGVhZD4KICAgICA8c2NyaXB0
IGxhbmd1YWdlPSdqYXZhc2NyaXB0Jz4KICAgICBmdW5jdGlvbiBydW5UZXN0KCkgewotICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgaWYgKGRvY3Vt
ZW50LnN0eWxlU2hlZXRzWzBdLnRpdGxlID09ICJiYXNpYyIgJiYKICAgICAgICAgICAgIGRvY3Vt
ZW50LnN0eWxlU2hlZXRzWzFdLnRpdGxlID09ICJiYXNpYyIpIHsKICAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJxIikudGl0bGUgPSAiYWR2YW5jZWQiOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jc3Mvc2libGluZy1zZWxlY3RvcnMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9zaWJsaW5nLXNlbGVjdG9ycy5odG1sCShyZXZpc2lvbiAxMjA2NzUp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zaWJsaW5nLXNlbGVjdG9ycy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw4ICsyNSw4IEBACiA8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KIAogPHNj
cmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiBhc3NlcnRDb2xvcihzZWxlY3Rvck9yRWxl
bWVudCwgcmJnQ29sb3IpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zbWFsbC1jYXBz
LWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc21hbGwtY2Fw
cy1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9z
bWFsbC1jYXBzLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8aGVh
ZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBj
aGFyc2V0PXV0Zi04IiAvPgogPHNjcmlwdD4KLSAgICBpZih3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBp
Zih3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8
L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IHN0eWxlPSJmb250LXZhcmlhbnQ6IHNtYWxsLWNhcHM7
Ij4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3NwYWNlLWJlZm9yZS1jaGFyc2V0LWV4dGVy
bmFsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3BhY2UtYmVmb3Jl
LWNoYXJzZXQtZXh0ZXJuYWwuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9jc3Mvc3BhY2UtYmVmb3JlLWNoYXJzZXQtZXh0ZXJuYWwuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMiw4ICsyLDggQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CiAKIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKICAgICB2YXIgZWxtdCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJwcm9iZSIpOyAgCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9z
cGFjZS1iZWZvcmUtY2hhcnNldC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y3NzL3NwYWNlLWJlZm9yZS1jaGFyc2V0Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91
dFRlc3RzL2Zhc3QvY3NzL3NwYWNlLWJlZm9yZS1jaGFyc2V0Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTIsOCArMiw4IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
CiB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgdmFyIGVsbXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicHJvYmUiKTsgIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3Rh
bGUtc3R5bGUtc2VsZWN0b3ItY3Jhc2gtMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvY3NzL3N0YWxlLXN0eWxlLXNlbGVjdG9yLWNyYXNoLTEuaHRtbAkocmV2aXNpb24gMTIw
Njc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3RhbGUtc3R5bGUtc2VsZWN0b3ItY3Jhc2gt
MS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMyArMzIsMTMgQEAKICAgICAgICAgICAgIC8v
IHVwZGF0ZVJlbmRlcmluZygpIHdpbGwgZG8gc29tZXRoaW5nIHdoZW4gY2FsbGVkIHNvb24KICAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmb28iKS5zdHlsZS5jb2xvciA9ICJn
cmVlbiI7CiAKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAg
ICAgICAgIH0KIAogICAgICAgICBzZXRUaW1lb3V0KHRlc3QsIDApOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jc3Mvc3RhbGUtc3R5bGUtc2VsZWN0b3ItY3Jhc2gtMi5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3N0YWxlLXN0eWxlLXNlbGVjdG9yLWNyYXNoLTIuaHRt
bAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3RhbGUtc3R5bGUt
c2VsZWN0b3ItY3Jhc2gtMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw4ICsxNSw4IEBACiAg
ICAgPC9wPgogICAgIDxkaXYgaWQ9ImZvbyI+U1VDQ0VTUzwvZGl2PgogICAgIDxzY3JpcHQ+Ci0g
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgIC8v
IEZvcmNlIGEgbGF5b3V0IGlnbm9yaW5nIHBlbmRpbmcgc3R5bGVzaGVldHMKICAgICAgICAgZG9j
dW1lbnQuYm9keS5vZmZzZXRUb3A7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1l
bnVtZXJhdGUtcHJvcGVydGllcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y3NzL3N0eWxlLWVudW1lcmF0ZS1wcm9wZXJ0aWVzLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysr
IExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLWVudW1lcmF0ZS1wcm9wZXJ0aWVzLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8aGVhZD4KICAgICA8c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0PgotICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogCiAgICAgPC9zY3Jp
cHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWNhbmRpZGF0ZS1ub2Rl
cy1jcmFzaC54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNo
ZWV0LWNhbmRpZGF0ZS1ub2Rlcy1jcmFzaC54aHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1jYW5kaWRhdGUtbm9kZXMtY3Jhc2gueGh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTIsMTAgKzIsMTAgQEAKICAgICA8aHRtbCB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94aHRtbCI+DQogICAgICAgICA8Ym9keT4NCiAgICAgICAgICAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQotICAgICAgICAgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpDQorICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikNCiAgICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOw0KLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOw0KKyAgICAgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7DQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsNCiAgICAgICAgICAgICAgICAgfQ0KIA0KICAgICAgICAgICAgICAgICBm
dW5jdGlvbiBydW5UZXN0KCkNCkBAIC0xMyw4ICsxMyw4IEBACiAgICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGh0bWwnLCAnc3R5bGUnKVswXTsNCiAgICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5i
b2R5KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwg
PSAiUEFTUyI7DQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7DQogICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICA8L3NjcmlwdD4NCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNo
ZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtbGluay5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1saW5rLmh0
bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQt
ZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1saW5rLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsOCAr
NCw4IEBACiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9yZWQuY3NzIiBt
ZWRpYT0iYWxsIiB0aXRsZT0iRGVmYXVsdCBTdHlsZSBTaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+
CiA8bGluayByZWw9ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvZ3JlZW4u
Y3NzIiBtZWRpYT0iYWxsIiB0aXRsZT0iZ3JlZW4iIHR5cGU9InRleHQvY3NzIiAvPgogPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
CiAgICAgdmFyIHJlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMF07
CiAgICAgcmVkLmRpc2FibGVkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3N0
eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1sb2FkLWxpbmsuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRl
cm5hdGUtb24tbG9hZC1saW5rLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1sb2FkLWxpbmsu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw4ICs0LDggQEAKIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0icmVzb3VyY2VzL3JlZC5jc3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJEZWZhdWx0IFN0
eWxlIFNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KIDxsaW5rIHJlbD0iYWx0ZXJuYXRlIHN0eWxl
c2hlZXQiIGhyZWY9InJlc291cmNlcy9ncmVlbi5jc3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJncmVl
biIgdHlwZT0idGV4dC9jc3MiIC8+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBmdW5jdGlvbiB0ZXN0KCkgewogICAg
ICAgICB2YXIgcmVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVswXTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVy
bmF0ZS1vbi1sb2FkLXNoZWV0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9j
c3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLW9uLWxvYWQtc2hlZXQuaHRtbAko
cmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFi
bGUtZmlyc3QtYWx0ZXJuYXRlLW9uLWxvYWQtc2hlZXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
NCw4ICs0LDggQEAKIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3JlZC5j
c3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJEZWZhdWx0IFN0eWxlIFNoZWV0IiB0eXBlPSJ0ZXh0L2Nz
cyIgLz4KIDxsaW5rIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9n
cmVlbi5jc3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJncmVlbiIgdHlwZT0idGV4dC9jc3MiIC8+CiA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiAKICAgICBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICB2YXIgcmVkID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVswXTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUtbGluay5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRl
cm5hdGUtbGluay5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLWxpbmsuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtNSw4ICs1LDggQEAKIDxsaW5rIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIGhy
ZWY9InJlc291cmNlcy9yZWQuY3NzIiBtZWRpYT0iYWxsIiB0aXRsZT0iZ3JlZW4iIHR5cGU9InRl
eHQvY3NzIiAvPgogPGxpbmsgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgaHJlZj0icmVzb3Vy
Y2VzL2dyZWVuLmNzcyIgbWVkaWE9ImFsbCIgdGl0bGU9ImdyZWVuIiB0eXBlPSJ0ZXh0L2NzcyIg
Lz4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKIAogICAgIHZhciByZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
bGluayIpWzBdOwogICAgIHJlZC5kaXNhYmxlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQtbGluay5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxl
LXNlY29uZC1hbHRlcm5hdGUtb24tbG9hZC1saW5rLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysr
IExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUt
b24tbG9hZC1saW5rLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBACiA8bGluayBy
ZWw9ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvcmVkLmNzcyIgbWVkaWE9
ImFsbCIgdGl0bGU9ImdyZWVuIiB0eXBlPSJ0ZXh0L2NzcyIgLz4KIDxsaW5rIHJlbD0iYWx0ZXJu
YXRlIHN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9ncmVlbi5jc3MiIG1lZGlhPSJhbGwiIHRp
dGxlPSJncmVlbiIgdHlwZT0idGV4dC9jc3MiIC8+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBmdW5jdGlvbiB0ZXN0
KCkgewogICAgICAgICB2YXIgcmVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxp
bmsiKVswXTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNl
Y29uZC1hbHRlcm5hdGUtb24tbG9hZC1zaGVldC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUtb24tbG9hZC1z
aGVldC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHls
ZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQtc2hlZXQuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNSw4ICs1LDggQEAKIDxsaW5rIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQi
IGhyZWY9InJlc291cmNlcy9yZWQuY3NzIiBtZWRpYT0iYWxsIiB0aXRsZT0iZ3JlZW4iIHR5cGU9
InRleHQvY3NzIiAvPgogPGxpbmsgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgaHJlZj0icmVz
b3VyY2VzL2dyZWVuLmNzcyIgbWVkaWE9ImFsbCIgdGl0bGU9ImdyZWVuIiB0eXBlPSJ0ZXh0L2Nz
cyIgLz4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKIAogICAgIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIHZhciByZWQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpWzBdOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1wYXJlbnRTdHlsZVNoZWV0Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1wYXJlbnRTdHlsZVNoZWV0Lmh0bWwJ
KHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtcGFy
ZW50U3R5bGVTaGVldC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogQGltcG9y
dCB1cmwoImRhdGE6dGV4dC9jc3MsI3Rlc3R7fSIpOwogPC9zdHlsZT4KIDxzY3JpcHQ+Ci1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKIAogZnVuY3Rpb24gdGVzdCgpIHsKICAgICBpZiAoZG9jdW1lbnQuc3R5bGVTaGVl
dHNbMF0uY3NzUnVsZXNbMF0uc3R5bGVTaGVldC5wYXJlbnRTdHlsZVNoZWV0ID09IGRvY3VtZW50
LnN0eWxlU2hlZXRzWzBdKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvdGFiLXNpemUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy90YWItc2l6ZS5odG1sCShyZXZp
c2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy90YWItc2l6ZS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCwxMiArMjgsMTIgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICB2YXIg
ZHluYW1pY0Jsb2NrID0gc2V0dXBCbG9jaygiVGFiIHNpemUgYmVjb21lcyAyIGR5bmFtaWNhbGx5
LiIsIG51bGwpOwogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgd2lu
ZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgIGR5bmFtaWNCbG9jay5zdHlsZS5z
ZXRQcm9wZXJ0eSgidGFiLXNpemUiLCAiMiIpOwotICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKICAgICB9LCAwKTsKIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jc3MvdGFibGUtcnVsZXMtYXR0cmlidXRlLWdyb3Vwcy13aXRoLWZyYW1lLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvdGFibGUtcnVsZXMtYXR0cmli
dXRlLWdyb3Vwcy13aXRoLWZyYW1lLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRl
c3RzL2Zhc3QvY3NzL3RhYmxlLXJ1bGVzLWF0dHJpYnV0ZS1ncm91cHMtd2l0aC1mcmFtZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xMyw4ICsxMyw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAg
IDwvc3R5bGU+CiAgICAgICAgIDxzY3JpcHQ+Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQodHJ1ZSk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogICAgICAgICA8L3Njcmlw
dD4KICAgICA8L2hlYWQ+CiAgICAgPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy90
YWJsZS1ydWxlcy1hdHRyaWJ1dGUtd2l0aC1mcmFtZTEuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy90YWJsZS1ydWxlcy1hdHRyaWJ1dGUtd2l0aC1mcmFtZTEuaHRtbAko
cmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvdGFibGUtcnVsZXMtYXR0
cmlidXRlLXdpdGgtZnJhbWUxLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE2LDggKzE2LDggQEAK
ICAgICAgICAgICAgIH0KICAgICAgICAgPC9zdHlsZT4KICAgICAgICAgPHNjcmlwdD4KLSAgICAg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgICAgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
dHJ1ZSk7CiAgICAgICAgIDwvc2NyaXB0PgogICAgIDwvaGVhZD4KICAgICA8Ym9keT4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvY3NzL3RhYmxlLXJ1bGVzLWF0dHJpYnV0ZS13aXRoLWZyYW1lMi5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3RhYmxlLXJ1bGVzLWF0dHJp
YnV0ZS13aXRoLWZyYW1lMi5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy90YWJsZS1ydWxlcy1hdHRyaWJ1dGUtd2l0aC1mcmFtZTIuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMTMsOCArMTMsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICA8L3N0eWxlPgog
ICAgICAgICA8c2NyaXB0PgotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRy
dWUpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKICAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9o
ZWFkPgogICAgIDxib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvdGFyZ2V0LWZyYWdt
ZW50LW1hdGNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvdGFyZ2V0
LWZyYWdtZW50LW1hdGNoLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zh
c3QvY3NzL3RhcmdldC1mcmFnbWVudC1tYXRjaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDgg
KzksOCBAQCBkaXY6dGFyZ2V0IHsKIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogICAgIC8vIExvY2F0aW9uIGNoYW5nZXMg
bmVlZCB0byBoYXBwZW4gb3V0c2lkZSB0aGUgb25sb2FkIGhhbmRsZXIgdG8gZ2VuZXJhdGUgaGlz
dG9yeSBlbnRyaWVzLgogICAgIHNldFRpbWVvdXQocnVuVGVzdCwgMCk7CkBAIC0yMCw4ICsyMCw4
IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAgd2luZG93LmxvY2F0aW9uLmhhc2ggPScjdGFy
Z2V0LTAxJzsKICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKICAgICB3aW5kb3cuaGlzdG9y
eS5iYWNrKCk7IC8vIFRoaXMgcXVldWVzIHVwIGEgbmF2aWdhdGlvbiwgc28gd2UgbmVlZCB0byBk
ZWxheSB0aGUgY2FsbCB0byBub3RpZnlEb25lLgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKSB9LCAwKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpIH0s
IDApOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy90
ZXh0LWFsaWduLWluaXRpYWwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy90ZXh0LWFsaWduLWluaXRpYWwuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9jc3MvdGV4dC1hbGlnbi1pbml0aWFsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEs
OCArMSw4IEBACiA8aGVhZD4KIDxzY3JpcHQ+CiBmdW5jdGlvbiBydW5UZXN0KCkgewotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgIAogICAgIHZhciB0
ZXh0QWxpZ24gPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiZGl2IikpLnRleHRBbGlnbjsKICAgICBpZiAodGV4dEFsaWduID09ICJzdGFydCIpCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy90ZXh0LWFsaWduLXdlYmtpdC1tYXRjaC1wYXJlbnQtcGFy
c2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy90ZXh0LWFsaWduLXdl
YmtpdC1tYXRjaC1wYXJlbnQtcGFyc2UuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jc3MvdGV4dC1hbGlnbi13ZWJraXQtbWF0Y2gtcGFyZW50LXBhcnNlLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBACiA8L2Rpdj4KIAogPHNjcmlwdD4KLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogCiB2YXIgdGVzdERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0X2Rp
dicpOwogdGVzdERpdi5zdHlsZS5jc3NUZXh0ID0gJ3RleHQtYWxpZ246LXdlYmtpdC1tYXRjaC1w
YXJlbnQnOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvdGV4dC1hbGlnbi13ZWJraXQtbWF0
Y2gtcGFyZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvdGV4dC1h
bGlnbi13ZWJraXQtbWF0Y2gtcGFyZW50Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91
dFRlc3RzL2Zhc3QvY3NzL3RleHQtYWxpZ24td2Via2l0LW1hdGNoLXBhcmVudC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Miw4ICs2Miw4IEBAIHRvcF9kaXYuc3R5bGUuc2V0UHJvcGVydHkoJ3Rl
eHQtYWxpZ24nLCAKIDxwcmUgaWQ9ImNvbnNvbGUiPgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CiAKIC8vIENoZWNrcyB0aGF0IHRoZSBnaXZlbiBlbGVtZW50IGlzIGxlZnQgYWxpZ25lZCBpZiBl
eHBlY3RlZEFsaWdubWVudCBpcyAnbGVmdCcsIG9yIHJpZ2h0IGFsaWduZWQgaWYKIC8vIGV4cGVj
dGVkQWxpZ25tZW50IGlzICdyaWdodCcuCkBAIC03Nyw3ICs3Nyw3IEBAIGZ1bmN0aW9uIGFzc2Vy
dEFsaWdubWVudChlbGVtZW50LCBpLCBleHAKICAgICB2YXIgbGVmdEFsaWduID0gZXhwZWN0ZWRB
bGlnbm1lbnQgPT0gJ2xlZnQnOwogICAgIHZhciBpc0xlZnRBbGlnbmVkID0gKGVuY2xvc2luZ0Rp
di5vZmZzZXRMZWZ0ID09IGlubmVyU3Bhbi5vZmZzZXRMZWZ0KTsKIAotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAg
ICAgICAgaWYgKGxlZnRBbGlnbiAmJiBpc0xlZnRBbGlnbmVkICYmIGNvbXB1dGVkU3R5bGUudGV4
dEFsaWduID09ICdsZWZ0JykKICAgICAgICAgICAgIGlubmVyU3Bhbi5pbm5lckhUTUwgPSAnUEFT
Uyc7CiAgICAgICAgIGVsc2UgaWYgKCFsZWZ0QWxpZ24gJiYgIWlzTGVmdEFsaWduZWQgJiYgY29t
cHV0ZWRTdHlsZS50ZXh0QWxpZ24gPT0gJ3JpZ2h0JykKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y3NzL3RleHQtcmVuZGVyaW5nLXByaW9yaXR5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jc3MvdGV4dC1yZW5kZXJpbmctcHJpb3JpdHkuaHRtbAkocmV2aXNpb24gMTIwNjc1
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvdGV4dC1yZW5kZXJpbmctcHJpb3JpdHkuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIDxoZWFkPgogICAgIDxzY3JpcHQ+Ci0gICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIDwvc2NyaXB0Pgog
ICAgIDxzdHlsZT4KICAgICAgICAgI3RhcmdldCB7IGZvbnQ6IDIwcHggZmFudGFzeTsgfQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvdGV4dC1zZWN1cml0eS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY3NzL3RleHQtc2VjdXJpdHkuaHRtbAkocmV2aXNpb24gMTIwNjc1
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvdGV4dC1zZWN1cml0eS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0zLDE0ICszLDE0IEBACiBmdW5jdGlvbiBmaW5pc2hUZXN0KCkKIHsKICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCAiYnVsbGV0
Iik7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGluaXQoKQog
ewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIHNldFRpbWVvdXQoZmlu
aXNoVGVzdCwgMCk7CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3RyYW5zZm9ybS1m
dW5jdGlvbi1sb3dlcmNhc2UtYXNzZXJ0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvdHJhbnNmb3JtLWZ1bmN0aW9uLWxvd2VyY2FzZS1hc3NlcnQuaHRtbAkocmV2aXNp
b24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvdHJhbnNmb3JtLWZ1bmN0aW9uLWxv
d2VyY2FzZS1hc3NlcnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKICAgICAj
ZHVtbXkgeyAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSB0cmFuc2xhdGVZKDApIHNj
YWxlWCgxKSBzY2FsZVkoMSkgc2tld1goMCkgc2tld1koMCk7IH0KIDwvc3R5bGU+CiA8c2NyaXB0
PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8cD4KICAgICBUaGlz
IGlzIGEgdGVzdCBmb3IgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgaW4gQ1NTUGFyc2VyLmNwcCZyc3F1
bztzIGVxdWFsSWdub3JpbmdDYXNlKCkgd2hlbgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
dHJhbnNmb3JtLWlubGluZS1zdHlsZS1yZW1vdmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2Nzcy90cmFuc2Zvcm0taW5saW5lLXN0eWxlLXJlbW92ZS5odG1sCShyZXZpc2lv
biAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy90cmFuc2Zvcm0taW5saW5lLXN0eWxl
LXJlbW92ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw4ICsxNSw4IEBACiAKICAgPC9zdHls
ZT4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgZnVuY3Rpb24gZG9UZXN0KCkKICAgICB7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy90cmFuc2Zvcm0taW5saW5lLXN0eWxlLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvdHJhbnNmb3JtLWlubGluZS1zdHlsZS5o
dG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy90cmFuc2Zvcm0t
aW5saW5lLXN0eWxlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksOCArOSw4IEBACiAgICAgfQog
ICA8L3N0eWxlPgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRm
LTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBmdW5jdGlvbiBkb1Rlc3QoKQog
ICAgIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3RyYW5zaXRpb24tY29sb3ItdW5zcGVj
aWZpZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy90cmFuc2l0aW9u
LWNvbG9yLXVuc3BlY2lmaWVkLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvY3NzL3RyYW5zaXRpb24tY29sb3ItdW5zcGVjaWZpZWQuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtNiwxMiArNiwxMiBAQAogICAgIDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJvcmFuZ2UiPjwv
ZGl2PgogPC9kaXY+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwogCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKS5hZGRFdmVudExpc3RlbmVy
KCd3ZWJraXRUcmFuc2l0aW9uRW5kJywgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBzZXRUaW1lb3V0KCJsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCkiLCAwKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICAgICAgc2V0VGltZW91dCgidGVzdFJ1bm5lci5ub3RpZnlEb25lKCkiLCAw
KTsKICAgICB9LCBmYWxzZSk7CiAKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIp
LmNsYXNzTmFtZSA9ICIiOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvdHJhbnNpdGlvbi10
aW1pbmctZnVuY3Rpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy90
cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbi5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy90cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbi5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0zLDggKzMsOCBAQCBUZXN0aW5nIHBhcnNpbmcgYW5kIHNlcmlhbGl6YXRpb24g
b2YgPHR0CiA8L3ByZT4KIDxkaXYgaWQ9InRhcmdldCI+PC9kaXY+CiA8c2NyaXB0PgotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiAgICAg
ewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvdHJhbnNpdGlvbl9zaG9ydGhhbmRfcGFyc2lu
Zy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3RyYW5zaXRpb25fc2hv
cnRoYW5kX3BhcnNpbmcuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9jc3MvdHJhbnNpdGlvbl9zaG9ydGhhbmRfcGFyc2luZy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDggKzEsOCBAQAogPGh0bWwgbGFuZz0iZW4iPgogPGhlYWQ+CiAgIDxzY3JpcHQ+Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKICAgPC9zY3JpcHQ+CiAgIDxzdHlsZT4KICAgLnRlc3QgeyAt
d2Via2l0LXRyYW5zaXRpb246IDEuNXM7IH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3Vu
a25vd24tcHNldWRvLWVsZW1lbnQtbWF0Y2hpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2Nzcy91bmtub3duLXBzZXVkby1lbGVtZW50LW1hdGNoaW5nLmh0bWwJKHJldmlz
aW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3Vua25vd24tcHNldWRvLWVsZW1l
bnQtbWF0Y2hpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw4ICs4LDggQEAKIDwvc3R5bGU+
CiA8c2NyaXB0PgogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogdmFyIGhlYWQ7CiB2YXIgaW5wdXQ7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy91cmktdG9rZW4tcGFyc2luZy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3VyaS10b2tlbi1wYXJzaW5nLmh0bWwJKHJldmlzaW9u
IDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3VyaS10b2tlbi1wYXJzaW5nLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDggKzM4LDggQEAgdyIpOyAvKiBVUkwgc3RyaW5nIGNvbnRh
aW5zIHR3aWNlIG5ld2xpbgogCiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKLSAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIAogICAgIHZhciBydWxlcyA9IGRvY3VtZW50LnN0eWxlU2hlZXRzWzBd
LmNzc1J1bGVzOwogICAgIHZhciB0ZXh0ID0gIiI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy91cmwtZm9ybWF0LW5vbi1zdHJpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy91cmwtZm9ybWF0LW5vbi1zdHJpbmcuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9jc3MvdXJsLWZvcm1hdC1ub24tc3RyaW5nLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsOCArMSw4IEBACiA8aHRtbD4KICAgPGhlYWQ+CiAgICAgPHNjcmlwdD4KLSAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgPC9zY3JpcHQ+CiAKICAgICA8c3R5
bGUgbWVkaWE9ImFsbCIgdHlwZT0idGV4dC9jc3MiPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9j
c3MvdXNlci1kcmFnLW5vbmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy91c2VyLWRyYWctbm9uZS5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy91c2VyLWRyYWctbm9uZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01OCw5ICs1OCw5
IEBACiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSArICJcbiIpKTsKICAgICB9CiAKLSAg
ICBvbmxvYWQgPSB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgPyBmdW5jdGlvbigpCisgICAg
b25sb2FkID0gd2luZG93LnRlc3RSdW5uZXIgPyBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogCiAgICAgICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY29udGFpbmVyIik7CiAgICAgICAgIHZhciB5ID0gY29udGFpbmVyLmdldEJvdW5kaW5n
Q2xpZW50UmVjdCgpLnRvcDsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3VzZXItc3R5bGVz
aGVldC1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3VzZXIt
c3R5bGVzaGVldC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy91c2VyLXN0eWxlc2hlZXQtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAs
MTYgKzEwLDE2IEBAIGZ1bmN0aW9uIGNyZWF0ZUlmcmFtZSgpCiAgICAgbGluay5zZXRBdHRyaWJ1
dGUoInJlbCIsICJzdHlsZXNoZWV0Iik7CiAgICAgbGluay5zZXRBdHRyaWJ1dGUoImhyZWYiLCAi
ZG9lc19ub3RfZXhpc3QuY3NzIik7CiAgICAgaWZyYW1lRG9jdW1lbnQuaGVhZC5hcHBlbmRDaGls
ZChsaW5rKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmFkZFVzZXJTdHlsZVNoZWV0KCIjdGVzdCB7IGNvbG9yOiBi
bHVlOiB9IiwgdHJ1ZSk7Ci0gICAgICAgIHNldFRpbWVvdXQoIndpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCkiLCAxMDApOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgICAgICB0ZXN0UnVubmVyLmFkZFVzZXJTdHlsZVNoZWV0KCIjdGVzdCB7IGNvbG9yOiBi
bHVlOiB9IiwgdHJ1ZSk7CisgICAgICAgIHNldFRpbWVvdXQoIndpbmRvdy50ZXN0UnVubmVyLm5v
dGlmeURvbmUoKSIsIDEwMCk7CiAgICAgfQogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5hZGRVc2VyU3R5bGVTaGVldCgiI3Rlc3QgeyBjb2xvcjogcmVkOiB9IiwgdHJ1ZSk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmFkZFVzZXJTdHls
ZVNoZWV0KCIjdGVzdCB7IGNvbG9yOiByZWQ6IH0iLCB0cnVlKTsKIH0KIHNldFRpbWVvdXQoImNy
ZWF0ZUlmcmFtZSgpIiwgMCk7CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3Zpc2liaWxp
dHktY29sbGFwc2UtZm9ybS1idXR0b25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvdmlzaWJpbGl0eS1jb2xsYXBzZS1mb3JtLWJ1dHRvbnMuaHRtbAkocmV2aXNpb24g
MTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmlzaWJpbGl0eS1jb2xsYXBzZS1mb3Jt
LWJ1dHRvbnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTQsOCArMTQsOCBAQAogPGRpdiBpZD0n
Y29uc29sZSc+PC9kaXY+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZG9jdW1lbnQuYm9k
eS5vZmZzZXRUb3A7IC8vIEZvcmNlIGxheW91dC4KIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b2xsYXBzZURpdiIpLnN0eWxlLnZpc2liaWxpdHk9J3Zpc2libGUnCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy92aXNpdGVkLWxpbmstaGFuZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvY3NzL3Zpc2l0ZWQtbGluay1oYW5nLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysr
IExheW91dFRlc3RzL2Zhc3QvY3NzL3Zpc2l0ZWQtbGluay1oYW5nLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTYsOCArNiw4IEBACiAKIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiB2YXIgb25l
TWlsbGlvblNsYXNoZXMgPSAiIjsKIGZvciAoaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy93ZWJraXQtY29sb3ItYWRqdXN0Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3Mvd2Via2l0LWNvbG9yLWFkanVzdC5odG1sCShyZXZp
c2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy93ZWJraXQtY29sb3ItYWRqdXN0
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDggKzExLDggQEAgZnVuY3Rpb24gdGVzdChpZCwg
ZXhwZWN0ZWQpIHsKIH0KIAogZnVuY3Rpb24gcnVuVGVzdHMoKSB7Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHdpbmRv
dy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHRlc3QoImVjb25vbXkiLCAiZWNvbm9t
eSIpOwogICAgIHRlc3QoImV4YWN0IiwgImV4YWN0Iik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Nzcy93ZWJraXQtZW1wdHktdHJhbnNmb3JtLXByZXNlcnZlM2QtY3Jhc2guaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy93ZWJraXQtZW1wdHktdHJhbnNmb3JtLXByZXNl
cnZlM2QtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
c3Mvd2Via2l0LWVtcHR5LXRyYW5zZm9ybS1wcmVzZXJ2ZTNkLWNyYXNoLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsOCArMSw4IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdD4KLWlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogPC9zY3JpcHQ+CiA8c3R5bGU+CiBzcGFuIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y3NzL3dlYmtpdC1rZXlmcmFtZXMtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy93ZWJraXQta2V5ZnJhbWVzLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkK
KysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3dlYmtpdC1rZXlmcmFtZXMtY3Jhc2guaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtNCw4ICs0LDggQEAKICAgICA8cD5UaGlzIHRlc3QgcGFzc2VkIGlmIGl0
IGRpZCBub3QgY3Jhc2g8L3A+DQogICAgIDxwIGlkPSJjb25zb2xlIj5GQUlMRUQgKHRlc3Qgbm90
IHJ1bik8L3A+DQogICAgIDxzY3JpcHQ+DQotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQ0KLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsNCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikNCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsNCiANCiAgICAgICAgIGZ1bmN0aW9uIG1haW4oKXsNCiAgICAgICAg
ICAgICB2YXIgZSA9IHdpbmRvdy5kb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1swXTsN
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy93ZWJraXQtbWFycXVlZS1hbm9ueW1vdXMtbm9k
ZS1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3dlYmtpdC1t
YXJxdWVlLWFub255bW91cy1ub2RlLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvY3NzL3dlYmtpdC1tYXJxdWVlLWFub255bW91cy1ub2RlLWNyYXNoLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8IURPQ1RZUEUgaHRtbD4NCiA8c3R5
bGU+cDpmaXJzdC1sZXR0ZXIgeyBvdmVyZmxvdzogLXdlYmtpdC1tYXJxdWVlOyBmbG9hdDogbGVm
dDsgfTwvc3R5bGU+DQogPHNjcmlwdD4NCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQ0KLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7DQoraWYgKHdpbmRvdy50
ZXN0UnVubmVyKQ0KKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsNCiA8L3NjcmlwdD4NCiA8
Ym9keT4NCiAgICAgPHA+U2hvdWxkIG5vdCBjcmFzaDwvcD4NCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy93ZWJraXQtbWFycXVlZS1zcGVlZC11bml0LWluLXF1aXJrc21vZGUuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy93ZWJraXQtbWFycXVlZS1zcGVlZC11bml0
LWluLXF1aXJrc21vZGUuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9jc3Mvd2Via2l0LW1hcnF1ZWUtc3BlZWQtdW5pdC1pbi1xdWlya3Ntb2RlLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEwLDUgKzEwLDUgQEAKIHZhciBtYXIgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgibWFyIik7CiB2YXIgcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwIik7CiBpZiAo
bWFyLnN0eWxlLmdldFByb3BlcnR5VmFsdWUoIi13ZWJraXQtbWFycXVlZS1zcGVlZCIpID09ICIx
MHMiKSBwLmlubmVySFRNTCA9ICc8YiBzdHlsZT0iY29sb3I6cmVkIj5GQUlMPC9iPic7IGVsc2Ug
cC5pbm5lckhUTUwgPSAnPGIgc3R5bGU9ImNvbG9yOmdyZWVuIj5QQVNTPC9iPic7Ci1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9z
Y3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy93ZWJraXQtbWFzay1jcmFzaC1maWVs
ZHNldC1sZWdlbmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy93ZWJr
aXQtbWFzay1jcmFzaC1maWVsZHNldC1sZWdlbmQuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9jc3Mvd2Via2l0LW1hc2stY3Jhc2gtZmllbGRzZXQtbGVnZW5kLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDcgKzEwLDcgQEAKIDxmaWVsZHNldD48bGVnZW5kPgog
PHNjcmlwdD4KICAgICBpZiAod2luZG93LmludGVybmFscykgewotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwogICAgICAgICBpbnRlcm5hbHMucGFpbnRDb250cm9sVGludHMoZG9jdW1lbnQpOwogICAgIH0K
IDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3Mvd2Via2l0LW1hc2stY3Jhc2gt
ZmlndXJlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3Mvd2Via2l0LW1h
c2stY3Jhc2gtZmlndXJlLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zh
c3QvY3NzL3dlYmtpdC1tYXNrLWNyYXNoLWZpZ3VyZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
MCw3ICsxMCw3IEBAIGRpc3BsYXk6IHRhYmxlLWZvb3Rlci1ncm91cDsgLXdlYmtpdC1tYXMKIDxk
aXYgY2xhc3M9ImJveCI+PGZpZ3VyZT4KIDxzY3JpcHQ+CiAgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgaW50ZXJuYWxzLnBhaW50Q29udHJv
bFRpbnRzKGRvY3VtZW50KTsKICAgICB9CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvY3NzL3dlYmtpdC1tYXNrLWNyYXNoLXRhYmxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jc3Mvd2Via2l0LW1hc2stY3Jhc2gtdGFibGUuaHRtbAkocmV2aXNpb24gMTIw
Njc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mvd2Via2l0LW1hc2stY3Jhc2gtdGFibGUuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMTAsNyArMTAsNyBAQAogPHRhYmxlPjx0cj4KIDxzY3JpcHQ+
CiAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAg
ICAgaW50ZXJuYWxzLnBhaW50Q29udHJvbFRpbnRzKGRvY3VtZW50KTsKICAgICB9CiA8L3Njcmlw
dD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3dlYmtpdC1tYXNrLWNyYXNoLXRkLTIuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy93ZWJraXQtbWFzay1jcmFzaC10
ZC0yLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3dlYmtp
dC1tYXNrLWNyYXNoLXRkLTIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw3ICs4LDcgQEAgdGQg
eyAtd2Via2l0LW1hc2staW1hZ2UgOiB1cmwocmVkX3RyYW5zcAogQUEwMDBBMDBBQUEwMDx0YWJs
ZT48dHI+PHRkPgogPHNjcmlwdD4KICAgICBpZiAod2luZG93LmludGVybmFscykgewotICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogICAgICAgICBpbnRlcm5hbHMucGFpbnRDb250cm9sVGludHMoZG9jdW1l
bnQpOwogICAgIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3Mvd2Via2l0
LW1hc2stY3Jhc2gtdGQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy93
ZWJraXQtbWFzay1jcmFzaC10ZC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy93ZWJraXQtbWFzay1jcmFzaC10ZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
Miw3ICsxMiw3IEBACiA8dGQ+CiA8c2NyaXB0PgogICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgIGludGVybmFscy5wYWludENvbnRyb2xUaW50
cyhkb2N1bWVudCk7CiAgICAgfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy93b3JkLWJyZWFrLXVzZXItbW9kaWZ5LWFsbG93ZWQtdmFsdWVzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jc3Mvd29yZC1icmVhay11c2VyLW1vZGlmeS1hbGxvd2VkLXZh
bHVlcy5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy93b3Jk
LWJyZWFrLXVzZXItbW9kaWZ5LWFsbG93ZWQtdmFsdWVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsOCArMSw4IEBACiA8c2NyaXB0PgogICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgIHsKLSAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgdmFyIHJ1
bGVzID0gZ2V0TWF0Y2hlZENTU1J1bGVzKGRvY3VtZW50LmJvZHksICIiKTsKICAgICAgICAgaWYg
KHJ1bGVzICYmIHJ1bGVzLmxlbmd0aCkgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MveG1s
LXN0eWxlc2hlZXQtYWx0ZXJuYXRlLW5vLXRpdGxlLnhodG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvY3NzL3htbC1zdHlsZXNoZWV0LWFsdGVybmF0ZS1uby10aXRsZS54aHRtbAko
cmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MveG1sLXN0eWxlc2hlZXQt
YWx0ZXJuYXRlLW5vLXRpdGxlLnhodG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw4ICsxMSw4IEBA
CiAKICAgICAgICAgICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKIAotICAgICAgICAg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogCiAgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LnN0eWxlU2hlZXRzLmxl
bmd0aCA+IDEpCiAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnN0eWxlU2hlZXRzWzFdLmRp
c2FibGVkID0gZmFsc2U7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy94bWwtc3R5bGVzaGVl
dC1hbHRlcm5hdGUtcHJvY2Vzc2luZy54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy94bWwtc3R5bGVzaGVldC1hbHRlcm5hdGUtcHJvY2Vzc2luZy54aHRtbAkocmV2aXNp
b24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MveG1sLXN0eWxlc2hlZXQtYWx0ZXJu
YXRlLXByb2Nlc3NpbmcueGh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsOCArOCw4IEBACiAgICAg
ICAgIDx0aXRsZT54bWwtc3R5bGVzaGVldCBwc2V1ZG8gYXR0cmlidXRlIGFsdGVybmF0ZSB0ZXN0
PC90aXRsZT4KICAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAg
ICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAg
ICAgICAgICB2YXIgcGkgPSBkb2N1bWVudC5maXJzdENoaWxkOwogICAgICAgICAgICAgICAgIGlm
IChwaS5zaGVldC5kaXNhYmxlZCAhPSB0cnVlKSByZXR1cm47CiAgICAgICAgICAgICAgICAgcGkg
PSBwaS5uZXh0U2libGluZzsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3htbC1zdHlsZXNo
ZWV0LW1lZGlhLXByb2Nlc3NpbmcueGh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9jc3MveG1sLXN0eWxlc2hlZXQtbWVkaWEtcHJvY2Vzc2luZy54aHRtbAkocmV2aXNpb24gMTIw
Njc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MveG1sLXN0eWxlc2hlZXQtbWVkaWEtcHJvY2Vz
c2luZy54aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw4ICs2LDggQEAKICAgICA8aGVhZD4KICAg
ICAgICAgPHRpdGxlPnhtbC1zdHlsZXNoZWV0IHBzZXVkbyBhdHRyaWJ1dGUgbWVkaWEgdGVzdDwv
dGl0bGU+CiAgICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAg
ICAgICA8L3NjcmlwdD4KICAgICA8L2hlYWQ+CiAgICAgPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy94bWwtc3R5bGVzaGVldC10aXRsZS1wcm9jZXNzaW5nLnhodG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3htbC1zdHlsZXNoZWV0LXRpdGxlLXByb2Nlc3Np
bmcueGh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3htbC1z
dHlsZXNoZWV0LXRpdGxlLXByb2Nlc3NpbmcueGh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsOCAr
Nyw4IEBACiAgICAgICAgIDx0aXRsZT54bWwtc3R5bGVzaGVldCBwc2V1ZG8gYXR0cmlidXRlIHRp
dGxlIHRlc3Q8L3RpdGxlPgogICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CiAgICAgICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgewotICAgICAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
ICAgICAgICAgICAgICAgIHZhciBwaSA9IGRvY3VtZW50LmZpcnN0Q2hpbGQ7CiAgICAgICAgICAg
ICAgICAgaWYgKHBpLnNoZWV0LnRpdGxlID09ICJzdHlsZTEiICZhbXA7JmFtcDsKICAgICAgICAg
ICAgICAgICAgICAgcGkubmV4dFNpYmxpbmcuc2hlZXQudGl0bGUgPT0gImFub3RoZXIgc3R5bGUi
KQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3Mvem9vbS1ib2R5LXNjcm9sbC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3pvb20tYm9keS1zY3JvbGwuaHRtbAkocmV2
aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mvem9vbS1ib2R5LXNjcm9sbC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw4ICsxNSw4IEBACiAgICAgICAgICAgICBjb25zb2xl
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UgKyAiXG4iKSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiAgICAgICAgICAgICB2YXIgYm9keSA9IGRvY3VtZW50LmJvZHk7CiAgICAgICAgICAgICBs
b2coInNjcm9sbEhlaWdodDogIiArIGJvZHkuc2Nyb2xsSGVpZ2h0KTsKICAgICAgICAgICAgIGxv
Zygic2Nyb2xsV2lkdGg6ICIgKyBib2R5LnNjcm9sbFdpZHRoKTsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY3NzL3pvb20tY2hhbmdlLXRyaWdnZXJpbmctbGF5b3V0Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jc3Mvem9vbS1jaGFuZ2UtdHJpZ2dlcmluZy1sYXlvdXQuaHRt
bAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mvem9vbS1jaGFuZ2Ut
dHJpZ2dlcmluZy1sYXlvdXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTgsOCArMTgsOCBAQAog
CiAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CiAKLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAgICAgICAgIGV2ZW50U2VuZGVyLnpvb21QYWdlSW4oKTsKICAgICB9CiA8L3Nj
cmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3pvb20taW4tbGVuZ3RoLXJvdW5kLXRy
aXAuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy96b29tLWluLWxlbmd0
aC1yb3VuZC10cmlwLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y3NzL3pvb20taW4tbGVuZ3RoLXJvdW5kLXRyaXAuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTYs
OCArMTYsOCBAQAogICAgICAgICBjb25zb2xlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKG1lc3NhZ2UgKyAiXG4iKSk7CiAgICAgfQogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiAKICAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdl
dCIpOwogICAgIHZhciBjb250YWluZXJTdHlsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b250YWluZXIiKS5zdHlsZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3pvb20tb24tdW5h
dHRhY2hlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3pvb20tb24t
dW5hdHRhY2hlZC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy96b29tLW9uLXVuYXR0YWNoZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAK
IDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImJvZHkiKTsKIGQgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgpOwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3Mvem9vbS1wcm9wZXJ0eS1wYXJzaW5nLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3Mvem9vbS1wcm9wZXJ0eS1wYXJzaW5nLmh0
bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3pvb20tcHJvcGVy
dHktcGFyc2luZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogPHAgaWQ9InJl
c3VsdCI+PC9wPgogPGRpdiBpZD0idGFyZ2V0IiBzdHlsZT0id2lkdGg6IDI1MHB4OyB6b29tOiAw
OyI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVs
aXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUg
bWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJj
aXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29u
c2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRh
dGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhj
ZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxw
YSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS48L2Rpdj4K
IDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICB2YXIgem9vbSA9
IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKS56b29t
OwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lclRleHQgPSB6b29t
ID09PSAiMSIgPyAiUEFTUyIgOiAiRkFJTCwgem9vbSB3YXMgIiArIHpvb207CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9jb250ZW50L2NvbnRlbnQtbm9uZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY3NzL2NvbnRlbnQvY29udGVudC1ub25lLmh0bWwJKHJldmlzaW9u
IDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2NvbnRlbnQvY29udGVudC1ub25lLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsOSArNiw5IEBACiAgICAgICAgICAgICAjdGVzdDpiZWZv
cmUgeyBjb250ZW50OiBub25lOyB9CiAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7ICAgCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7ICAgCisgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1
bmN0aW9uIHJ1bigpIHsKQEAgLTE4LDggKzE4LDggQEAKICAgICAgICAgICAgICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lclRleHQgPSAiUEFTU0VEIjsKICAg
ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb25zb2xlIikuaW5uZXJUZXh0ID0gIkZBSUxFRDogdGVzdFdpZHRoPSIgKyB0ZXN0
V2lkdGggKyI7IGV4cGVjdGVkICIgKyByZWZlcmVuY2VXaWR0aDsKLSAgICAgICAgICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKICAgICAgICAgICAgfQogICAgICAgICA8L3NjcmlwdD4KICAgICA8L2hlYWQ+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9jb250ZW50L2NvbnRlbnQtbm9ybWFsLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY29udGVudC9jb250ZW50LW5vcm1hbC5odG1sCShy
ZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb250ZW50L2NvbnRlbnQt
bm9ybWFsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsOSArNiw5IEBACiAgICAgICAgICAgICAj
dGVzdDpiZWZvcmUgeyBjb250ZW50OiBub3JtYWw7IH0KICAgICAgICAgPC9zdHlsZT4KICAgICAg
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsgICAKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsgICAKKyAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgZnVuY3Rpb24gcnVuKCkgewpAQCAtMTgsOCArMTgsOCBAQAogICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVyVGV4dCA9ICJQ
QVNTRUQiOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lclRleHQgPSAiRkFJTEVEOiB0ZXN0V2lk
dGg9IiArIHRlc3RXaWR0aCArIjsgZXhwZWN0ZWQgIiArIHJlZmVyZW5jZVdpZHRoOwotICAgICAg
ICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogICAgICAgICAgICB9CiAgICAgICAgIDwvc2NyaXB0PgogICAgIDwvaGVh
ZD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2NvbnRlbnQvY29udGVudC1xdW90ZXMtMDEu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb250ZW50L2NvbnRlbnQt
cXVvdGVzLTAxLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3Nz
L2NvbnRlbnQvY29udGVudC1xdW90ZXMtMDEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw5ICs0
LDkgQEAKICAgICAgICAgICAgIGJvZHkgeyBxdW90ZXM6ICJXVyIgIldXV1ciOyB9CiAgICAgICAg
IDwvc3R5bGU+CiAgICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIHJ1bigpIHsKQEAgLTE2LDggKzE2LDggQEAKICAg
ICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5l
clRleHQgPSAiUEFTU0VEIjsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJUZXh0ID0gIkZBSUxF
RDogdGVzdFdpZHRoPSIgKyB0ZXN0V2lkdGggKyI7IGV4cGVjdGVkICIgKyByZWZlcmVuY2VXaWR0
aDsKLSAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgPC9zY3JpcHQ+CiAg
ICAgPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY29udGVudC9jb250ZW50LXF1
b3Rlcy0wMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2NvbnRlbnQv
Y29udGVudC1xdW90ZXMtMDIuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvY29udGVudC9jb250ZW50LXF1b3Rlcy0wMi5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC02LDEzICs2LDEzIEBACiAgICAgICAgICAgICBzcGFuOmFmdGVyIHsgY29udGVudDogbm8tY2xv
c2UtcXVvdGU7IH0KICAgICAgICAgPC9zdHlsZT4KICAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPgotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cisg
ICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gcnVuKCkgewot
ICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
ICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgib25seUluQnJvd3NlciIpLnNldEF0dHJpYnV0ZSgic3R5bGUi
LCAiZGlzcGxheTogbm9uZTsiKTsKICAgICAgICAgICAgICAgICB0ZXN0V2lkdGggPSB3aW5kb3cu
Z2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdENvbnRhaW5lciIp
LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJ3aWR0aCIpOwogICAgICAgICAgICAgICAgIHJlZmVy
ZW5jZVdpZHRoID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlZmVyZW5jZSIpLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJ3aWR0aCIpOwpAQCAtMjEs
OCArMjEsOCBAQAogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lclRleHQgPSAiRkFJTEVEOiB0ZXN0
V2lkdGg9IiArIHRlc3RXaWR0aCArIjsgZXhwZWN0ZWQgIiArIHJlZmVyZW5jZVdpZHRoOwogICAg
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm9ubHlJbkJyb3dzZXIiKS5zZXRB
dHRyaWJ1dGUoInN0eWxlIiwgImRpc3BsYXk6IG5vbmU7Iik7Ci0gICAgICAgICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwog
ICAgICAgICAgICB9CiAgICAgICAgIDwvc2NyaXB0PgogICAgIDwvaGVhZD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY3NzL2NvbnRlbnQvY29udGVudC1xdW90ZXMtMDMuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb250ZW50L2NvbnRlbnQtcXVvdGVzLTAzLmh0bWwJ
KHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2NvbnRlbnQvY29udGVu
dC1xdW90ZXMtMDMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSwxMyArNSwxMyBAQAogICAgICAg
ICAgICAgYjpiZWZvcmUgeyBjb250ZW50OiBuby1vcGVuLXF1b3RlOyB9CiAgICAgICAgIDwvc3R5
bGU+CiAgICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGZ1bmN0aW9uIHJ1bigpIHsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm9ubHlJ
bkJyb3dzZXIiKS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgImRpc3BsYXk6IG5vbmU7Iik7CiAgICAg
ICAgICAgICAgICAgdGVzdFdpZHRoID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRlc3RDb250YWluZXIiKSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgi
d2lkdGgiKTsKICAgICAgICAgICAgICAgICByZWZlcmVuY2VXaWR0aCA9IHdpbmRvdy5nZXRDb21w
dXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWZlcmVuY2UiKSwgbnVsbCkuZ2V0
UHJvcGVydHlWYWx1ZSgid2lkdGgiKTsKQEAgLTE5LDggKzE5LDggQEAKICAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lclRleHQgPSAiUEFT
U0VEIjsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJUZXh0ID0gIkZBSUxFRDogdGVzdFdpZHRo
PSIgKyB0ZXN0V2lkdGggKyI7IGV4cGVjdGVkICIgKyByZWZlcmVuY2VXaWR0aDsKLSAgICAgICAg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9oZWFkPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY29udGVudC9jb250ZW50LXF1b3Rlcy0wNC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2NvbnRlbnQvY29udGVudC1xdW90
ZXMtMDQuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY29u
dGVudC9jb250ZW50LXF1b3Rlcy0wNC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDEzICs1LDEz
IEBACiAgICAgICAgICAgICBiOmJlZm9yZSB7IGNvbnRlbnQ6IG5vLW9wZW4tcXVvdGU7IH0KICAg
ICAgICAgPC9zdHlsZT4KICAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgot
ICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gcnVuKCkgewotICAgICAgICAgICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgib25seUluQnJvd3NlciIpLnNldEF0dHJpYnV0ZSgic3R5bGUiLCAiZGlzcGxheTogbm9u
ZTsiKTsKICAgICAgICAgICAgICAgICBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b1Jl
bW92ZSIpOwogICAgICAgICAgICAgICAgIGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWwpOwpA
QCAtMjEsOCArMjEsOCBAQAogICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY29uc29sZSIpLmlubmVyVGV4dCA9ICJQQVNTRUQiOwogICAgICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUi
KS5pbm5lclRleHQgPSAiRkFJTEVEOiB0ZXN0V2lkdGg9IiArIHRlc3RXaWR0aCArIjsgZXhwZWN0
ZWQgIiArIHJlZmVyZW5jZVdpZHRoOwotICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgfQog
ICAgICAgICA8L3NjcmlwdD4KICAgICA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy9jb250ZW50L2NvbnRlbnQtcXVvdGVzLTA1Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jc3MvY29udGVudC9jb250ZW50LXF1b3Rlcy0wNS5odG1sCShyZXZpc2lvbiAxMjA2
NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb250ZW50L2NvbnRlbnQtcXVvdGVzLTA1Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsMTMgKzQsMTMgQEAKICAgICAgICAgICAgIC5teVF1b3Rl
cyB7IHF1b3RlczogIldXIiAiV1dXVyIgIldXVyIgIldXV1dXIjsgfQogICAgICAgICA8L3N0eWxl
PgogICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBmdW5jdGlvbiBydW4oKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCiAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvbmx5SW5C
cm93c2VyIikuc2V0QXR0cmlidXRlKCJzdHlsZSIsICJkaXNwbGF5OiBub25lOyIpOwogICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmJvZHkuc2V0QXR0cmlidXRlKCJjbGFzcyIsICJteVF1b3RlcyIp
OwogICAgICAgICAgICAgICAgIHRlc3RXaWR0aCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Q29udGFpbmVyIiksIG51bGwpLmdldFByb3BlcnR5
VmFsdWUoIndpZHRoIik7CkBAIC0xOSw4ICsxOSw4IEBACiAgICAgICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJUZXh0ID0gIlBBU1NFRCI7CiAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29uc29sZSIpLmlubmVyVGV4dCA9ICJGQUlMRUQ6IHRlc3RXaWR0aD0iICsgdGVz
dFdpZHRoICsiOyBleHBlY3RlZCAiICsgcmVmZXJlbmNlV2lkdGg7Ci0gICAgICAgICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwogICAgICAgICAgICB9CiAgICAgICAgIDwvc2NyaXB0PgogICAgIDwvaGVhZD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvY3NzL2NvbnRlbnQvY29udGVudC1xdW90ZXMtMDYuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb250ZW50L2NvbnRlbnQtcXVvdGVzLTA2Lmh0
bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2NvbnRlbnQvY29u
dGVudC1xdW90ZXMtMDYuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSwxMyArNSwxMyBAQAogICAg
ICAgICAgICAgLm5vUXVvdGVzIHsgcXVvdGVzOiBub25lOyB9CiAgICAgICAgIDwvc3R5bGU+CiAg
ICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIGZ1bmN0aW9uIHJ1bigpIHsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
ICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm9ubHlJbkJyb3dz
ZXIiKS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgImRpc3BsYXk6IG5vbmU7Iik7CiAgICAgICAgICAg
ICAgICAgdGVzdFdpZHRoID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRlc3RDb250YWluZXIiKSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgid2lkdGgi
KTsKICAgICAgICAgICAgICAgICByZWZlcmVuY2VXaWR0aCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0
eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWZlcmVuY2UiKSwgbnVsbCkuZ2V0UHJvcGVy
dHlWYWx1ZSgid2lkdGgiKTsKQEAgLTE5LDggKzE5LDggQEAKICAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lclRleHQgPSAiUEFTU0VEIjsK
ICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJUZXh0ID0gIkZBSUxFRDogdGVzdFdpZHRoPSIgKyB0
ZXN0V2lkdGggKyI7IGV4cGVjdGVkICIgKyByZWZlcmVuY2VXaWR0aDsKLSAgICAgICAgICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9oZWFkPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvMmRpc3BsYXlzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvMmRpc3BsYXlzLmh0bWwJKHJldmlzaW9u
IDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2NvdW50ZXJzLzJkaXNwbGF5cy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0yMSwyMCArMjEsMjAgQEAKIAogZGVzY3JpcHRpb24oIlRoaXMg
dGVzdCBwYXNzZXMgaWYgYm90aCB0aGUgZmlyc3QgYW5kIHRoZSBzZWNvbmQgY291bnRlciBhcmUg
MTAwMC4iKTsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVu
Y3Rpb24gcnVuKCkKIHsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdFZpZXciKS5z
ZXRBdHRyaWJ1dGUoImNsYXNzIiwgImNvdW50ZXIxMDAwIik7Ci0gICAgaWYgKCF3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAg
cmV0dXJuOwogICAgIHNob3VsZEJlKCJ3aW5kb3cuaW50ZXJuYWxzLmNvdW50ZXJWYWx1ZShkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdFZpZXcnKSkiLCAiJzEwMDAgMTAwMCciKTsKIAotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiB3aW5kb3cub25sb2FkID0gcnVuOwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvYWRkaW5nLW5vZGVzLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvYWRkaW5nLW5vZGVzLmh0bWwJ
KHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2NvdW50ZXJzL2FkZGlu
Zy1ub2Rlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw5ICsxNiw5IEBACiAgICAgICAgIC5p
bmNyZW1lbnQgeyBjb3VudGVyLWluY3JlbWVudDogYzsgfQogICAgIDwvc3R5bGU+CiAgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIHJ1bigpIHsKQEAgLTI3LDcgKzI3LDcgQEAK
ICAgICAgICAgICAgIG5ld1NwYW5FbGVtZW50LnNldEF0dHJpYnV0ZSgiY2xhc3MiLCJpbmNyZW1l
bnQiKTsKICAgICAgICAgICAgIG5ld1NwYW5FbGVtZW50LnNldEF0dHJpYnV0ZSgiaWQiLCJuZXdO
b2RlIik7CiAgICAgICAgICAgICB0ZXN0RWxlbWVudC5pbnNlcnRCZWZvcmUobmV3U3BhbkVsZW1l
bnQsIHRlc3RFbGVtZW50LmZpcnN0Q2hpbGQpOwotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CiAgICAgICAgICAgICAgICAgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25z
b2xlIik7CiAgICAgICAgICAgICAgICAgc3Bhbkxpc3QgPSB0ZXN0RWxlbWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgic3BhbiIpCiAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNwYW5M
aXN0Lmxlbmd0aDsgKytpICkgewpAQCAtNDIsNyArNDIsNyBAQAogICAgICAgICAgICAgICAgIHRl
c3RFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGVzdEVsZW1lbnQpOwogICAgICAgICAg
ICAgICAgIHRlc3RFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZmVyZW5jZSIp
OwogICAgICAgICAgICAgICAgIHRlc3RFbGVtZW50LmlubmVySFRNTCA9IHRlc3RFbGVtZW50Lmlu
bmVySFRNTC5yZXBsYWNlKC88Yj5hPHU+YjxcL3U+PFwvYj4vZywiIik7Ci0gICAgICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgPC9z
Y3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9hZnRlci1jb250aW51
YXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9h
ZnRlci1jb250aW51YXRpb24uaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvY291bnRlcnMvYWZ0ZXItY29udGludWF0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTQsOSArNCw5IEBACiAgICAgPC9zdHlsZT4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0PgotICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgfQogICAgICAgICBmdW5jdGlvbiBydW4oKQog
ICAgICAgICB7CkBAIC0xNCw4ICsxNCw4IEBACiAKICAgICAgICAgICAgIGRlYnVnKCcnKTsKICAg
ICAgICAgICAgIGRlYnVnKCdURVNUIENPTVBMRVRFJyk7Ci0gICAgICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgfQogICAgIDwv
c2NyaXB0PgogPC9oZWFkPjxib2R5IG9ubG9hZD0ic2V0VGltZW91dCgncnVuKCknLCAwKTsiPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvYXN0ZXJpc2stY291bnRlci11cGRh
dGUtYWZ0ZXItbGF5b3V0LWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9jc3MvY291bnRlcnMvYXN0ZXJpc2stY291bnRlci11cGRhdGUtYWZ0ZXItbGF5b3V0LWNyYXNo
Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2NvdW50ZXJz
L2FzdGVyaXNrLWNvdW50ZXItdXBkYXRlLWFmdGVyLWxheW91dC1jcmFzaC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC00LDggKzQsOCBAQAogPHNjcmlwdD4KIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAg
ICAgZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uaW5zZXJ0UnVsZSgiZGl2IHsgY291bnRlci1yZXNl
dDogYyAxNDExNzAgfSIpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogfQogd2luZG93
Lm9ubG9hZD1ydW5UZXN0OwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9j
b3VudGVycy9jb21wbGV4LWJlZm9yZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvY3NzL2NvdW50ZXJzL2NvbXBsZXgtYmVmb3JlLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysr
IExheW91dFRlc3RzL2Zhc3QvY3NzL2NvdW50ZXJzL2NvbXBsZXgtYmVmb3JlLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTI0LDkgKzI0LDkgQEAKICAgICBkaXYgeyBib3JkZXI6MXB4IHNvbGlkIGdy
ZWVuOyBtYXJnaW46NXB4OyB9CiA8L3N0eWxlPgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBsb2codGV4dCkgewpAQCAtNDQsMTQgKzQ0
LDE0IEBACiAgICAgfQogCiAgICAgZnVuY3Rpb24gcnVuKCkgewotICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAg
ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib25seUluQnJvd3NlciIpLnNldEF0
dHJpYnV0ZSgic3R5bGUiLCAiZGlzcGxheTogbm9uZTsiKTsKICAgICAgICAgdGVzdFN0eWxlID0g
d2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RDb250
YWluZXIiKSwgbnVsbCk7CiAgICAgICAgIHJlZmVyZW5jZVN0eWxlID0gd2luZG93LmdldENvbXB1
dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZmVyZW5jZSIpLCBudWxsKTsKICAg
ICAgICAgY29tcGFyZVByb3BlcnR5KHRlc3RTdHlsZSwgcmVmZXJlbmNlU3R5bGUsICJ3aWR0aCIp
CiAgICAgICAgIGNvbXBhcmVQcm9wZXJ0eSh0ZXN0U3R5bGUsIHJlZmVyZW5jZVN0eWxlLCAiaGVp
Z2h0IikKLSAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0K
IDwvc2NyaXB0PgogPC9oZWFkPjxib2R5IG9ubG9hZD0ic2V0VGltZW91dCgncnVuKCknLCAwKTsi
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvY29udGVudC0wMjEuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9jb250ZW50LTAyMS5o
dG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9j
b250ZW50LTAyMS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxMiArMjEsMTIgQEAKICAgPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KIAotICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
IAogICBmdW5jdGlvbiBydW4oKQogICB7Ci0gICAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAgcmV0dXJu
OwogICAgICAgc2hvdWxkQmUoIndpbmRvdy5pbnRlcm5hbHMuY291bnRlclZhbHVlKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdkaXYxJykpIiwgIicwJyIpOwogICAgICAgc2hvdWxkQmUoIndpbmRv
dy5pbnRlcm5hbHMuY291bnRlclZhbHVlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXYyJykp
IiwgIicwLjAnIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9jb3VudGVy
LWFmdGVyLXN0eWxlLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9j
c3MvY291bnRlcnMvY291bnRlci1hZnRlci1zdHlsZS1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2
NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9jb3VudGVyLWFmdGVyLXN0eWxl
LWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8aHRtbD4KICAgPHNj
cmlwdD4KLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICB9CiAgIDwv
c2NyaXB0PgogICA8c3R5bGU+CkBAIC0yNiw3ICsyNiw3IEBACiAgICAgICBkb2N1bWVudC5leGVj
Q29tbWFuZCgncmVtb3ZlZm9ybWF0Jyk7CiAKICAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1M
ID0gIlBBU1M6IENvdW50ZXJzIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5IHdpdGhvdXQgY3Jhc2hpbmci
OwotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CiAgICAgPC9zY3JpcHQ+CiAgIDwvdGFibGU+CiA8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291
bnRlcnMvY291bnRlci1iZWZvcmUtY29udGVudC1ub3QtaW5jcmVtZW50ZWQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9jb3VudGVyLWJlZm9yZS1jb250
ZW50LW5vdC1pbmNyZW1lbnRlZC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9jb3VudGVycy9jb3VudGVyLWJlZm9yZS1jb250ZW50LW5vdC1pbmNyZW1lbnRl
ZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw5ICsxNyw5IEBACiAgICAgICAgIH0KICAgICA8
L3N0eWxlPgogICAgIDxzY3JpcHQ+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAg
ICB9CiAKICAgICAgICAgZnVuY3Rpb24gaW5zZXJ0QXV0byhpKSB7CkBAIC00NywxNCArNDcsMTQg
QEAKICAgICAgICAgICAgICAgICBjb3VudGVycyArPSBkaXZJdGVtLnRleHRDb250ZW50OwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRhaW5l
ciIpLmlubmVySFRNTCA9IGNvdW50ZXJzOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAg
ICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgewogICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyArK2kpCiAgICAgICAgICAgICAgICAgaW5zZXJ0QXV0
byhpKTsKLSAgICAgICAgICAgIGlmIChsYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAg
ICAgaWYgKHRlc3RSdW5uZXIpIHsKICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCJkdW1wQ291
bnRlcnMoKSIsIDApOwogICAgICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9jb3VudGVycy9jb3VudGVyLWJlZm9yZS1zZWxlY3Rvci1jcmFzaC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2NvdW50ZXJzL2NvdW50ZXItYmVmb3Jl
LXNlbGVjdG9yLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zh
c3QvY3NzL2NvdW50ZXJzL2NvdW50ZXItYmVmb3JlLXNlbGVjdG9yLWNyYXNoLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEzLDggKzEzLDggQEAKICAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAg
IGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAg
ICAgICAgICAgfQogICAgICAgICA8L3NjcmlwdD4KICAgICA8L2hlYWQ+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9jb3VudGVyLWZ1bmN0aW9uLWlucHV0LTIuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9jb3VudGVyLWZ1bmN0aW9u
LWlucHV0LTIuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Y291bnRlcnMvY291bnRlci1mdW5jdGlvbi1pbnB1dC0yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsOCArMSw4IEBACiA8aHRtbD4gCiA8aGVhZD4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+IAogLnRlc3Qg
ewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvY291bnRlci1mdW5jdGlvbi1p
bnB1dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2NvdW50ZXJzL2Nv
dW50ZXItZnVuY3Rpb24taW5wdXQuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9jc3MvY291bnRlcnMvY291bnRlci1mdW5jdGlvbi1pbnB1dC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPGh0bWw+IAogPGhlYWQ+CiA8c2NyaXB0PgotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8c3R5bGUgdHlwZT0idGV4dC9jc3Mi
PiAKIC50ZXN0IHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2NvdW50ZXJzL2NvdW50ZXIt
aW5jcmVtZW50LTAwMC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2Nv
dW50ZXJzL2NvdW50ZXItaW5jcmVtZW50LTAwMC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9jb3VudGVyLWluY3JlbWVudC0wMDAuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMTIsOCArMTIsOCBAQAogICA8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPgogCi0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgIGZ1bmN0aW9uIGNoZWNr
Q291bnRlclZhbHVlc0JlZm9yZUNoYW5nZSgpCiAgIHsKQEAgLTQwLDcgKzQwLDcgQEAKIAogICBm
dW5jdGlvbiBydW4oKQogICB7Ci0gICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgIGNoZWNrQ291bnRlclZh
bHVlc0JlZm9yZUNoYW5nZSgpOwogCiAgICAgICB2YXIgdCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0ZXN0Iik7CkBAIC01MCw3ICs1MCw3IEBACiAgICAgICBzLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCJuZXctIikpOwogICAgICAgdC5pbnNlcnRCZWZvcmUocywgdC5j
aGlsZE5vZGVzLml0ZW0oMSkpOwogCi0gICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgIGNoZWNrQ291bnRl
clZhbHVlc0FmdGVyQ2hhbmdlKCk7CiAgIH0KICAgPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9jb3VudGVycy9jb3VudGVyLWluY3JlbWVudC0wMDEuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9jb3VudGVyLWluY3JlbWVudC0wMDEu
aHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMv
Y291bnRlci1pbmNyZW1lbnQtMDAxLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDggKzEyLDgg
QEAKICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KIAotICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKIAogICBmdW5jdGlvbiBjaGVja0NvdW50ZXJWYWx1ZXNCZWZvcmVDaGFuZ2UoKQog
ICB7CkBAIC0zOSwxMyArMzksMTMgQEAKIAogICBmdW5jdGlvbiBydW4oKQogICB7Ci0gICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQogICAgICAgICAgIGNoZWNrQ291bnRlclZhbHVlc0JlZm9yZUNoYW5nZSgpOwogCiAgICAg
ICB2YXIgdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CiAgICAgICB0LnJlbW92
ZUNoaWxkKHQuY2hpbGROb2Rlcy5pdGVtKDEpKTsKIAotICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICBj
aGVja0NvdW50ZXJWYWx1ZXNBZnRlckNoYW5nZSgpOwogICB9CiAgIDwvc2NyaXB0PgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvY291bnRlci1pbmNyZW1lbnQtMDAyLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvY291bnRlci1pbmNy
ZW1lbnQtMDAyLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3Nz
L2NvdW50ZXJzL2NvdW50ZXItaW5jcmVtZW50LTAwMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
NiwxNiArMTYsMTYgQEAKICAgICAgICAgLmluY3JlbWVudCB7IGNvdW50ZXItaW5jcmVtZW50OiBj
OyB9CiAgICAgPC9zdHlsZT4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0g
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24g
cnVuKCkgewogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm9uZSIpLnJlbW92
ZUF0dHJpYnV0ZSgiY2xhc3MiKTsKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0d28iKS5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgImluY3JlbWVudCIpOwogICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRocmVlIikuc2V0QXR0cmlidXRlKCJzdHlsZSIsICJj
b3VudGVyLWluY3JlbWVudDogYyIpOwotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAg
ICAgICAgICAgICAgdGVzdEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIp
OwogICAgICAgICAgICAgICAgIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29u
c29sZSIpOwogICAgICAgICAgICAgICAgIHNwYW5MaXN0ID0gdGVzdEVsZW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInNwYW4iKQpAQCAtMzcsNyArMzcsNyBAQAogICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3U3BhbkVsZW1lbnQuaW5uZXJUZXh0ID0gbmV3U3BhbkVsZW1lbnQuaW5uZXJUZXh0
ICsgIi0iOwogICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmFwcGVuZENoaWxkKG5ld1NwYW5F
bGVtZW50KTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgPC9zY3JpcHQ+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9jb3VudGVyLWluY3JlbWVudC1pbmhlcml0Lmh0
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9jb3VudGVyLWlu
Y3JlbWVudC1pbmhlcml0Lmh0bQkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9jc3MvY291bnRlcnMvY291bnRlci1pbmNyZW1lbnQtaW5oZXJpdC5odG0JKHdvcmtpbmcgY29w
eSkKQEAgLTYsOSArNiw5IEBACiAgICAgICAgIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDov
L3d3dy53My5vcmcvVFIvQ1NTMjEvZ2VuZXJhdGUuaHRtbCNjb3VudGVycyI+CiAgICAgICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgog
ICAgICAgICA8c2NyaXB0PgotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZ1bmN0aW9uIHJ1bigpCiAg
ICAgICAgICAgICB7CkBAIC0xOSw4ICsxOSw4IEBACiAgICAgICAgICAgICAgICAgc2hvdWxkQmUo
IndpbmRvdy5pbnRlcm5hbHMuY291bnRlclZhbHVlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3
cmFwcGVyOTEnKSkiLCAiJzEwJyIpOwogICAgICAgICAgICAgICAgIHNob3VsZEJlKCJ3aW5kb3cu
aW50ZXJuYWxzLmNvdW50ZXJWYWx1ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdDkxJykp
IiwgIicyMCciKTsKICAgICAgICAgICAgICAgICBzaG91bGRCZSgid2luZG93LmludGVybmFscy5j
b3VudGVyVmFsdWUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Q5MWEnKSkiLCAiJzMwJyIp
OwotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAg
ICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgfQogICAgICAgICA8L3NjcmlwdD4K
ICAgICAgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y3NzL2NvdW50ZXJzL2NvdW50ZXItaW5jcmVtZW50LW92ZXJmbG93Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvY291bnRlci1pbmNyZW1lbnQtb3ZlcmZs
b3cuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRl
cnMvY291bnRlci1pbmNyZW1lbnQtb3ZlcmZsb3cuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTIs
MTIgKzEyLDEyIEBACiAgICAgICAgIH0KICAgICA8L3N0eWxlPgogICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiAKICAgICAgICAgZnVuY3Rpb24gZG9UZXN0KCkKICAgICAgICAgewotICAgICAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y291bnRlZCcpLmlubmVyVGV4dCA9IHdpbmRvdy5pbnRlcm5hbHMuY291bnRlclZhbHVlKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb3VudGVkJykpOwogICAgICAgICB9CiAKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY3NzL2NvdW50ZXJzL2NvdW50ZXItaW5jcmVtZW50LXRlc3RzLmh0bQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9jb3VudGVyLWluY3JlbWVu
dC10ZXN0cy5odG0JKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2Nv
dW50ZXJzL2NvdW50ZXItaW5jcmVtZW50LXRlc3RzLmh0bQkod29ya2luZyBjb3B5KQpAQCAtNiw5
ICs2LDkgQEAKICAgICAgICAgPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9y
Zy9UUi9DU1MyMS9nZW5lcmF0ZS5odG1sI2NvdW50ZXJzIj4KICAgICAgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxz
Y3JpcHQ+Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZnVuY3Rpb24gcnVuKCkKICAgICAgICAgICAg
IHsKQEAgLTcyLDggKzcyLDggQEAKICAgICAgICAgICAgICAgICBzaG91bGRCZSgid2luZG93Lmlu
dGVybmFscy5jb3VudGVyVmFsdWUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Q1NCcpKSIs
ICInMTAnIik7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoIndpbmRvdy5pbnRlcm5hbHMuY291
bnRlclZhbHVlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0NTUnKSkiLCAiJzEnIik7CiAg
ICAgICAgICAgICAgICAgc2hvdWxkQmUoIndpbmRvdy5pbnRlcm5hbHMuY291bnRlclZhbHVlKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0NTYnKSkiLCAiJy0yMTQ3NDgzNjQ4JyIpOwotICAg
ICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgfQogICAgICAgICA8L3NjcmlwdD4KICAgICAg
ICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2Nv
dW50ZXJzL2NvdW50ZXItbnVtYmVyLWlucHV0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jc3MvY291bnRlcnMvY291bnRlci1udW1iZXItaW5wdXQuaHRtbAkocmV2aXNpb24g
MTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvY291bnRlci1udW1iZXIt
aW5wdXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxodG1sPiAKIDxoZWFk
PgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogPHN0
eWxlIHR5cGU9InRleHQvY3NzIj4KIGJvZHkgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Y291bnRlcnMvY291bnRlci1yZXBhcmVudC10YWJsZS1jaGlsZHJlbi1jcmFzaC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2NvdW50ZXJzL2NvdW50ZXItcmVwYXJlbnQt
dGFibGUtY2hpbGRyZW4tY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9jc3MvY291bnRlcnMvY291bnRlci1yZXBhcmVudC10YWJsZS1jaGlsZHJlbi1jcmFz
aC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDE1ICs1LDE1IEBAIHRkIHsNCiB9DQogPC9zdHls
ZT4NCiA8c2NyaXB0Pg0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsNCi0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOw0KK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgew0KKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsNCiB9DQogDQogZnVuY3Rp
b24gY3Jhc2goKSB7DQogICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gIlBBU1M6IE1hbGZv
cm1lZCB0YWJsZSBjb3VudGVycyBkbyBub3QgY2F1c2UgY3Jhc2giOw0KLSAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7DQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7DQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
DQorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgew0KKyAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7DQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsNCiAgICAgfQ0KIH0N
CiA8L3NjcmlwdD4NCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9jb3VudGVy
LXJlc2V0LTAwMC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2NvdW50
ZXJzL2NvdW50ZXItcmVzZXQtMDAwLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRl
c3RzL2Zhc3QvY3NzL2NvdW50ZXJzL2NvdW50ZXItcmVzZXQtMDAwLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTE1LDkgKzE1LDkgQEAKICAgICAgICAgLmluY3JlbWVudCB7IGNvdW50ZXItaW5jcmVt
ZW50OiBjOyB9CiAgICAgPC9zdHlsZT4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsgICAKLSAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsgICAKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICB9CiAKICAgICAg
ICAgZnVuY3Rpb24gcnVuKCkgewpAQCAtMjYsNyArMjYsNyBAQAogICAgICAgICAgICAgcy5zZXRB
dHRyaWJ1dGUoImNsYXNzIiwgInJlc2V0Iik7CiAgICAgICAgICAgICBzLnNldEF0dHJpYnV0ZSgi
aWQiLCAibmV3U3BhbiIpOwogICAgICAgICAgICAgdC5pbnNlcnRCZWZvcmUocywgdC5jaGlsZE5v
ZGVzLml0ZW0oMSkpOwotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgICAgICAg
ICAgdGVzdEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOwogICAgICAg
ICAgICAgICAgIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOwog
ICAgICAgICAgICAgICAgIHNwYW5MaXN0ID0gdGVzdEVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInNwYW4iKQpAQCAtMzgsNyArMzgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgbmV3
U3BhbkVsZW1lbnQuaW5uZXJUZXh0ID0gbmV3U3BhbkVsZW1lbnQuaW5uZXJUZXh0ICsgIi0iCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQobmV3U3BhbkVsZW1lbnQpOwog
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgfQogICAgIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jc3MvY291bnRlcnMvY291bnRlci1yZXNldC0wMDEuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9jb3VudGVyLXJlc2V0LTAwMS5odG1sCShy
ZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9jb3VudGVy
LXJlc2V0LTAwMS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw4ICsxOSw4IEBACiAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KIAogICBmdW5jdGlvbiBydW4oKSB7Ci0gICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgICAgLy8gVGhpcyBjYWxs
IGVuc3VyZXMgdGhlIGxheW91dCBoYXBwZW5lZCBiZWZvcmUgd2UgbW9kaWZ5IHRoZSBET00gdHJl
ZS4KICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLmNvdW50ZXJWYWx1ZShkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgic3BhbjEiKSk7CiAgICAgICB9CkBAIC0yOCw3ICsyOCw3IEBACiAgICAgICB2
YXIgdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CiAgICAgICB0LnJlbW92ZUNo
aWxkKHQuY2hpbGROb2Rlcy5pdGVtKDEpKTsKIAotICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgICAg
dGVzdEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOwogICAgICAgICAg
IGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOwogICAgICAgICAg
IHNwYW5MaXN0ID0gdGVzdEVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNwYW4iKTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2NvdW50ZXJzL2NvdW50ZXItcmVzZXQtMDAyLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvY291bnRlci1yZXNl
dC0wMDIuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291
bnRlcnMvY291bnRlci1yZXNldC0wMDIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTUsMTUgKzE1
LDE1IEBACiAgICAgICAgIC5pbmNyZW1lbnQgeyBjb3VudGVyLWluY3JlbWVudDogYzsgfQogICAg
IDwvc3R5bGU+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7ICAgCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7ICAgCisgICAgICAgICAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIHJ1
bigpIHsKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvbmUiKS5zZXRBdHRy
aWJ1dGUoImNsYXNzIiwgInJlc2V0Iik7CiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidHdvIikucmVtb3ZlQXR0cmlidXRlKCJjbGFzcyIpOwotICAgICAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CiAgICAgICAgICAgICAgICAgdGVzdEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGVzdCIpOwogICAgICAgICAgICAgICAgIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29uc29sZSIpOwogICAgICAgICAgICAgICAgIHNwYW5MaXN0ID0gdGVzdEVs
ZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNwYW4iKQpAQCAtMzUsNyArMzUsNyBAQAogICAg
ICAgICAgICAgICAgICAgICAgICAgbmV3U3BhbkVsZW1lbnQuaW5uZXJUZXh0ID0gbmV3U3BhbkVs
ZW1lbnQuaW5uZXJUZXh0ICsgIi0iOwogICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmFwcGVu
ZENoaWxkKG5ld1NwYW5FbGVtZW50KTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgPC9z
Y3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9jb3VudGVyLXJ1Ynkt
dGV4dC1jbGVhcmVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291
bnRlcnMvY291bnRlci1ydWJ5LXRleHQtY2xlYXJlZC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9jb3VudGVyLXJ1YnktdGV4dC1jbGVhcmVk
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8c3R5bGU+KiB7Y291bnRlci1p
bmNyZW1lbnQ6IHg7fTwvc3R5bGU+DQogPHNjcmlwdD4NCiAgICAgd2luZG93Lm9ubG9hZCA9IGZ1
bmN0aW9uKCkgew0KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCi0g
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7DQorICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpDQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7DQogICAgICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICJQQVNTOiBDbGVhcmluZyBy
dWJ5IHRleHQgd2l0aCBjb3VudGVycyBkb2VzIG5vdCBjcmFzaC4iOw0KICAgICB9DQogPC9zY3Jp
cHQ+DQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvY291bnRlci10cmF2ZXJz
ZS1vYmplY3QtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9j
b3VudGVycy9jb3VudGVyLXRyYXZlcnNlLW9iamVjdC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2
NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9jb3VudGVyLXRyYXZlcnNlLW9i
amVjdC1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBAQAogICAgIDxzY3Jp
cHQ+CiAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkaXYiKVswXS5vdXRlckhUTUwgPSAiUEFT
UyI7CiAgICAgICAgIH0KICAgICA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3Nz
L2NvdW50ZXJzL2NvdW50ZXItdHJhdmVyc2UtdGFibGUtY2VsbC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY3NzL2NvdW50ZXJzL2NvdW50ZXItdHJhdmVyc2UtdGFibGUtY2Vs
bC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVy
cy9jb3VudGVyLXRyYXZlcnNlLXRhYmxlLWNlbGwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw4
ICs0LDggQEAKICAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpZnJhbWUiKVswXS5z
cmMgPSAiIjsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgPC9z
Y3JpcHQ+CiAgICAgPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMv
Y291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9jb3VudGVycy9jb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZC5odG1sCShyZXZp
c2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9jb3VudGVyVmFs
dWVGb3JFbGVtZW50QnlJZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw4IEBACiAg
ICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CiAKICAgICA8c2NyaXB0PgotICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgICAgIHNob3Vs
ZEJlKCJ3aW5kb3cuaW50ZXJuYWxzLmNvdW50ZXJWYWx1ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYmVmb3JlJykpIiwgIicwJyIpOwogICAgICAgICAgICAgc2hvdWxkQmUoIndpbmRvdy5pbnRl
cm5hbHMuY291bnRlclZhbHVlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZnRlcicpKSIsICIn
MCciKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2NvdW50ZXJzL2RlZXAtYmVmb3JlLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvZGVlcC1iZWZv
cmUuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRl
cnMvZGVlcC1iZWZvcmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTksMTIgKzE5LDEyIEBACiAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAKLSAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiAKICAgZnVuY3Rpb24gcnVuKCkKICAgewotICAgICAgaWYgKCF3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgIHJl
dHVybjsKICAgICAgIHNob3VsZEJlKCJ3aW5kb3cuaW50ZXJuYWxzLmNvdW50ZXJWYWx1ZShkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2MScpKSIsICInMCciKTsKIApJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jc3MvY291bnRlcnMvZGVzdHJveS1jb3VudGVyLWNyYXNoLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvZGVzdHJveS1jb3VudGVyLWNyYXNo
Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2NvdW50ZXJz
L2Rlc3Ryb3ktY291bnRlci1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBA
QAogICAgIGgxOmFmdGVyIHsgY29udGVudDogY291bnRlcihjKSB9DQogICAgIDwvc3R5bGU+DQog
ICAgIDxzY3JpcHQ+DQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpDQotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7DQorICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikNCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOw0KIA0KICAgICB3
aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgdmFyIHRlc3RFbGVtZW50ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsNCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Nzcy9jb3VudGVycy9lbGVtZW50LXJlbW92YWwtY3Jhc2gueGh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvZWxlbWVudC1yZW1vdmFsLWNyYXNoLnhodG1s
CShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9lbGVt
ZW50LXJlbW92YWwtY3Jhc2gueGh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDE4ICsxMSwxOCBA
QAogICAgIH0KIDwvc3R5bGU+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIAorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgCiAgICAgewotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KIAogICAgIGZ1bmN0
aW9uIHJ1blRlc3QoKQogICAgIHsKICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnRl
eHRDb250ZW50ID0gIlBBU1MiOwogCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogICAgIH0KIAogICAgIHNldFRpbWVvdXQoJ3J1blRlc3QoKScsIDApOwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvaW52YWxpZGF0ZS1jYWNoZWQtY291bnRl
ci1ub2RlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMv
aW52YWxpZGF0ZS1jYWNoZWQtY291bnRlci1ub2RlLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysr
IExheW91dFRlc3RzL2Zhc3QvY3NzL2NvdW50ZXJzL2ludmFsaWRhdGUtY2FjaGVkLWNvdW50ZXIt
bm9kZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw4ICsxOSw4IEBACiAgICAgICAgIGRvY3Vt
ZW50LmJvZHkub2Zmc2V0VG9wOwogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgia2Vl
cC1tZSIpLnN0eWxlLmZvbnRTaXplID0gIjIwcHgiOwogCi0gICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgIHZhciB0ZXN0UmVzdWx0Owog
ICAgICAgICAgICAgdmFyIGNvdW50ZXJWYWx1ZSA9IHdpbmRvdy5pbnRlcm5hbHMuY291bnRlclZh
bHVlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJrZWVwLW1lIikpOwogICAgICAgICAgICAgaWYg
KGNvdW50ZXJWYWx1ZSA9PSAiMSIpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVy
cy9uZXN0aW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRl
cnMvbmVzdGluZy5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy9jb3VudGVycy9uZXN0aW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE2LDEzICsxNiwxMyBA
QAogICAgICAgICAuaW5jcmVtZW50IHsgY291bnRlci1pbmNyZW1lbnQ6IGM7IH0KICAgICA8L3N0
eWxlPgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiBydW4oKSB7Ci0gICAg
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgICAgICAgICB0ZXN0RWxlbWVudCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CiAgICAgICAgICAgICAgICAgY29uc29sZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CiAgICAgICAgICAgICAgICAgc3Bh
bkxpc3QgPSB0ZXN0RWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic3BhbiIpCkBAIC0zNCw3
ICszNCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTcGFuRWxlbWVudC5pbm5lclRl
eHQgPSBuZXdTcGFuRWxlbWVudC5pbm5lclRleHQgKyAiLSAiOwogICAgICAgICAgICAgICAgICAg
ICBjb25zb2xlLmFwcGVuZENoaWxkKG5ld1NwYW5FbGVtZW50KTsKICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVy
cy9yZW5kZXItdHJlZS1yZW9yZy1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvY3NzL2NvdW50ZXJzL3JlbmRlci10cmVlLXJlb3JnLWNyYXNoLmh0bWwJKHJldmlzaW9u
IDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2NvdW50ZXJzL3JlbmRlci10cmVlLXJl
b3JnLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsOCArOCw4IEBACiA8c3BhY2VyIHN0
eWxlPSdjb3VudGVyLWluY3JlbWVudDogYSc+DQogPGRpdiBpZD0ncCcgc3R5bGU9J2NvdW50ZXIt
cmVzZXQ6IGEnPg0KIDxzY3JpcHQ+DQotICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQ0KLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7ICAgDQorICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpDQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOyAgIA0KICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2YnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicCIpKTsNCiA8L3NjcmlwdD4NCiBUaGlzIHRlc3QgcGFzc2VzIGlmIGl0IGRvZXMgbm90
IGNyYXNoLjxicj4NCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9yZXBhcmVu
dC10YWJsZS1jaGlsZHJlbi13aXRoLWNvdW50ZXJzLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvcmVwYXJlbnQtdGFibGUtY2hpbGRyZW4td2l0
aC1jb3VudGVycy1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9jb3VudGVycy9yZXBhcmVudC10YWJsZS1jaGlsZHJlbi13aXRoLWNvdW50ZXJzLWNy
YXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiA8aHRtbD4NCiA8c2NyaXB0
Pg0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpDQotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsNCitpZiAod2luZG93LnRlc3RSdW5uZXIpDQorICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOw0KIDwvc2NyaXB0Pg0KIDx0YWJsZT4NCiAgICAgPHRib2R5Pg0K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvY29tcHV0ZWQtc3R5
bGUtZGlzcGxheS1ub25lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Z2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS1kaXNwbGF5LW5vbmUuaHRtbAkocmV2aXNp
b24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21w
dXRlZC1zdHlsZS1kaXNwbGF5LW5vbmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcg
QEAKIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogICAgIHZhciBzdHlsZSA9IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5
bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKSwgIiIpOwogICAgIHZhciByZXN1bHQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7CiAgICAgaWYgKHN0eWxlLmRpc3Bs
YXkgPT0gIm5vbmUiKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHls
ZS9jb21wdXRlZC1zdHlsZS1mb250LWZhbWlseS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvY29tcHV0ZWQtc3R5bGUtZm9udC1mYW1pbHku
aHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0
ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS1mb250LWZhbWlseS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDggKzEsOCBAQAogPHNjcmlwdD4KIGZ1bmN0aW9uIHRlc3QoKQogewotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogICAgIHZhciBzdHlsZSA9IGRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSwgIiIpOwogICAgIHZhciB0ZXh0ID0gIiI7CiAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgIT0gc3R5bGUubGVuZ3RoOyArK2kpIHsKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvY29tcHV0ZWQtc3R5bGUtbmVnYXRpdmUt
dG9wLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRT
dHlsZS9jb21wdXRlZC1zdHlsZS1uZWdhdGl2ZS10b3AuaHRtbAkocmV2aXNpb24gMTIwNjc1KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS1u
ZWdhdGl2ZS10b3AuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIDxzY3JpcHQ+
CiBmdW5jdGlvbiB0ZXN0KCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIHZh
ciBzdHlsZSA9IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRlc3QiKSwgIiIpOwogICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7CiAgICAgaWYgKHN0eWxlLnRvcCA9PSAiLTFweCIpCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxl
LXdpdGhvdXQtcmVuZGVyZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy9nZXRDb21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLXdpdGhvdXQtcmVuZGVyZXIuaHRtbAko
cmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHls
ZS9jb21wdXRlZC1zdHlsZS13aXRob3V0LXJlbmRlcmVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTIsOCArMiw4IEBACiA8aGVhZD4KICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Byb3BlcnR5
LW5hbWVzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkK
ICAgICAgICAgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9j
b21wdXRlZC1zdHlsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2dl
dENvbXB1dGVkU3R5bGUvY29tcHV0ZWQtc3R5bGUuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBAQAogPHNjcmlwdD4KIGZ1bmN0aW9uIHRlc3Qo
KQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIHZhciBzdHlsZSA9IGRvY3Vt
ZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSwgIiIpOwogICAg
IHZhciB0ZXh0ID0gIiI7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgIT0gc3R5bGUubGVuZ3RoOyAr
K2kpIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29t
cHV0ZWRTdHlsZS1iYWNrZ3JvdW5kLXBvc2l0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9nZXRDb21wdXRlZFN0eWxlLWJhY2tncm91
bmQtcG9zaXRpb24uaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
c3MvZ2V0Q29tcHV0ZWRTdHlsZS9nZXRDb21wdXRlZFN0eWxlLWJhY2tncm91bmQtcG9zaXRpb24u
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsOCBAQAogCiAgICAgICAgIGZ1bmN0aW9u
IHJ1blRlc3RzKCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgICAgIHRlc3QoJ2JhY2tncm91
bmRQb3NpdGlvblplcm8nLCAnMCcsICcwIDAnKTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9j
c3MvZ2V0Q29tcHV0ZWRTdHlsZS9nZXRDb21wdXRlZFN0eWxlLWJhY2tncm91bmQtc2l6ZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0
Q29tcHV0ZWRTdHlsZS1iYWNrZ3JvdW5kLXNpemUuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9nZXRDb21wdXRlZFN0eWxlLWJh
Y2tncm91bmQtc2l6ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw4ICsyNSw4IEBACiAKICAg
ICAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICAgICAg
dGVzdCgnc2l6ZScsICctd2Via2l0LWJhY2tncm91bmQtc2l6ZScpOwogICAgICAgICAgICAgCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5
bGUtYm9yZGVyLWJveC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2dl
dENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS1ib3JkZXItYm94Lmh0bWwJKHJldmlzaW9u
IDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29t
cHV0ZWRTdHlsZS1ib3JkZXItYm94Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsOCArNCw4IEBA
CiAgICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgICAgICB2YXIgZDEgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZDEnKTsKICAgICAgICAgICAgICAgICB2YXIgZDIgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZDInKTsKICAgICAgICAgICAgICAgICAKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS1ib3JkZXIt
aW1hZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRl
ZFN0eWxlL2dldENvbXB1dGVkU3R5bGUtYm9yZGVyLWltYWdlLmh0bWwJKHJldmlzaW9uIDEyMDY3
NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRT
dHlsZS1ib3JkZXItaW1hZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsOCBAQAog
CiAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICAgICAgewotICAgICAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAg
ICAgIHRlc3QoJ2JvcmRlckltYWdlTm9uZScsICdub25lJyk7CiAKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS1ib3JkZXItc3BhY2lu
Zy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5
bGUvZ2V0Q29tcHV0ZWRTdHlsZS1ib3JkZXItc3BhY2luZy5odG1sCShyZXZpc2lvbiAxMjA2NzUp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5
bGUtYm9yZGVyLXNwYWNpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUsOCBAQAog
CiAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICAgICAgewotICAgICAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAg
ICAgIHRlc3QoJ3NwYWNpbmcnLCAnYm9yZGVyLXNwYWNpbmcnKTsKICAgICAgICAgICAgIApJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9nZXRDb21wdXRlZFN0eWxl
LWJvcmRlclJhZGl1cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2dl
dENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS1ib3JkZXJSYWRpdXMuaHRtbAkocmV2aXNp
b24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9nZXRD
b21wdXRlZFN0eWxlLWJvcmRlclJhZGl1cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICsz
MCw4IEBACiAKICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAog
ICAgICAgICAgICAgdGVzdCgndG9wUmlnaHQnLCAnLXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJh
ZGl1cycpOwogICAgICAgICAgICAgdGVzdCgndG9wTGVmdCcsICctd2Via2l0LWJvcmRlci10b3At
bGVmdC1yYWRpdXMnKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5
bGUvZ2V0Q29tcHV0ZWRTdHlsZS1tYXJnaW4tYXV0by5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS1tYXJnaW4t
YXV0by5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRD
b21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5bGUtbWFyZ2luLWF1dG8uaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMzIsOCArMzIsOCBAQAogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBmdW5j
dGlvbiBydW5UZXN0cygpIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgdGVz
dCgnbWFyZ2luLWxlZnQnKTsKICAgICAgICAgICAgIHRlc3QoJ21hcmdpbi10b3AnKTsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS1t
YXJnaW4tbGVuZ3RoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0
Q29tcHV0ZWRTdHlsZS9nZXRDb21wdXRlZFN0eWxlLW1hcmdpbi1sZW5ndGguaHRtbAkocmV2aXNp
b24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9nZXRD
b21wdXRlZFN0eWxlLW1hcmdpbi1sZW5ndGguaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCAr
MzIsOCBAQAogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBmdW5jdGlvbiBydW5UZXN0cygp
IHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgdGVzdCgnbWFyZ2luLWxlZnQn
KTsKICAgICAgICAgICAgIHRlc3QoJ21hcmdpbi10b3AnKTsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS1tYXJnaW4tcGVyY2VudGFn
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5
bGUvZ2V0Q29tcHV0ZWRTdHlsZS1tYXJnaW4tcGVyY2VudGFnZS5odG1sCShyZXZpc2lvbiAxMjA2
NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2dldENvbXB1dGVk
U3R5bGUtbWFyZ2luLXBlcmNlbnRhZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEs
OCBAQAogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBmdW5jdGlvbiBydW5UZXN0cygpIHsK
LSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgdGVzdCgnbWFyZ2luLWxlZnQnKTsK
ICAgICAgICAgICAgIHRlc3QoJ21hcmdpbi10b3AnKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS1yZWxheW91dC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0
ZWRTdHlsZS1yZWxheW91dC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5bGUtcmVsYXlvdXQuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxoZWFkPgogICAgIDxzY3JpcHQ+CiAgICAg
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAgICAgICAgICAgICAKICAgICAgICAgdmFyIGQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndGhlRGl2Jyk7CiAgICAgICAgIGQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5
bGUtcmVzb2x2ZWQtdmFsdWVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9j
c3MvZ2V0Q29tcHV0ZWRTdHlsZS9nZXRDb21wdXRlZFN0eWxlLXJlc29sdmVkLXZhbHVlcy5odG1s
CShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0
eWxlL2dldENvbXB1dGVkU3R5bGUtcmVzb2x2ZWQtdmFsdWVzLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTExNiw4ICsxMTYsOCBAQAogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gcnVuVGVz
dHMoKSB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKIAogICAgICAgICAgICAgdGVzdCgnZml4ZWQnKTsKICAgICAgICAgICAgIHRl
c3QoJ3BlcmNlbnRzJyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0
eWxlL2dldENvbXB1dGVkU3R5bGUtdGV4dC1vdmVyZmxvdy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS10ZXh0
LW92ZXJmbG93Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3Nz
L2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS10ZXh0LW92ZXJmbG93Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2LDggQEAKICAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24g
cnVuVGVzdHMoKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwogCiAgICAgICAgIGNoZWNrQ29tcHV0ZWRUZXh0T3ZlcmZsb3coZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImVsbGlwc2lzIiksICJkaXYgd2l0aCB0ZXh0LW92ZXJmbG93IHNldCB0byBlbGxpcHNp
cyIsICJlbGxpcHNpcyIpOwogICAgICAgICBjaGVja0NvbXB1dGVkVGV4dE92ZXJmbG93KGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjbGlwIiksICJkaXYgd2l0aCB0ZXh0LW92ZXJmbG93IHNldCB0
byBjbGlwIiwgImNsaXAiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVk
U3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS10cmFuc2Zvcm0uaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5bGUtdHJhbnNm
b3JtLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENv
bXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS10cmFuc2Zvcm0uaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMjMsOSArMjMsOSBAQAogICAgIH0KICAgPC9zdHlsZT4KICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KIAogICAgIHZhciBnVGVzdHMgPSBb
CkBAIC01OSw4ICs1OSw4IEBACiAgICAgICAgIHJlc3VsdHNCb3guaW5uZXJIVE1MICs9IHJlc3Vs
dCArICc8YnI+JzsKICAgICAgIH0pOwogICAgICAgCi0gICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwogICAgIH0KICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5bGUtd2l0aC1wc2V1ZG8tZWxl
bWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVk
U3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS13aXRoLXBzZXVkby1lbGVtZW50Lmh0bWwJKHJldmlzaW9u
IDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29t
cHV0ZWRTdHlsZS13aXRoLXBzZXVkby1lbGVtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEy
Nyw4ICsxMjcsOCBAQAogCiAgICAgPC9zdHlsZT4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCI+Ci0gICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAg
dmFyIHRlc3RzID0gWwogICAgICAgICB7ICdlbGVtZW50SWQnIDogJ3Rlc3RGaXJzdHMnLCAncHNl
dWRvRWxlbWVudCcgOiAnOmZpcnN0LWxpbmUnLCAncHJvcGVydHknIDogJ2NvbG9yJywgJ2V4cGVj
dGVkVmFsdWUnIDogJ3JnYigxNjUsIDQyLCA0MiknIH0sCkBAIC0xODcsOCArMTg3LDggQEAKIAog
ICAgICAgZnVuY3Rpb24gc2V0dXBBbmRSdW5UZXN0cygpCiAgICAgICB7Ci0gICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiAgICAgICAgIC8vIEZJWE1F
OiBJdCBpcyBjdXJyZW50bHkgbmVjZXNzYXJ5IHRvIHJ1biB0aGUgYW5pbWF0aW9uIGF0IGxlYXN0
IG9uY2UgYmVmb3JlIHF1ZXJ5aW5nIGZvciB0aGUgc3R5bGUgb24gdGhlIHBzZXVkby1lbGVtZW50
IHdpbGwgd29yay4KICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RIYXJkd2Fy
ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmciKS5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRBbmltYXRp
b25FbmQnLCBydW5UZXN0cywgZmFsc2UpOwpAQCAtMjExLDggKzIxMSw4IEBACiAgICAgICAgICAg
cmVzdWx0c0VsZW1lbnQuYXBwZW5kQ2hpbGQobXNnKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICB9CiAgICAgPC9zY3Jp
cHQ+CiAgIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5
bGUvZ2V0Q29tcHV0ZWRTdHlsZS16SW5kZXgtYXV0by5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS16SW5kZXgt
YXV0by5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRD
b21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5bGUtekluZGV4LWF1dG8uaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtOSw4ICs5LDggQEAKIAogICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAg
ewotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiAKICAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ25vblBvc2l0aW9uZWREaXYnKTsKICAgICAgICAgICAgIHZhciBjb21wU3R5bGUgPSBlbGVt
ZW50Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50LCBu
dWxsKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29t
cHV0ZWRTdHlsZS16b29tLWFuZC1iYWNrZ3JvdW5kLXNpemUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5bGUtem9v
bS1hbmQtYmFja2dyb3VuZC1zaXplLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRl
c3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS16b29tLWFuZC1i
YWNrZ3JvdW5kLXNpemUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOTAsOCArOTAsOCBAQAogICA8
L2Rpdj4KICAgCiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYt
OCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgd2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHZh
ciBwcm9wZXJ0aWVzVG9DaGVjayA9IHsKICAgICAgICJiYWNrZ3JvdW5kLXBvc2l0aW9uIjogIjEw
cHggMTBweCIsCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL3Bl
bmRpbmctc3R5bGVzaGVldC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3Nz
L2dldENvbXB1dGVkU3R5bGUvcGVuZGluZy1zdHlsZXNoZWV0Lmh0bWwJKHJldmlzaW9uIDEyMDY3
NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvcGVuZGluZy1zdHls
ZXNoZWV0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsOCArNiw4IEBACiA8ZGl2IGlkPSJ0YXJn
ZXQiIHN0eWxlPSJkaXNwbGF5OiBub25lOyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7Ij48
L2Rpdj4KIDxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogCiAgICAgdmFyIGNvbXB1dGVkV2lkdGggPSBnZXRDb21wdXRlZFN0eWxl
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSkud2lkdGg7CiAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVyVGV4dCA9IGNvbXB1dGVkV2lkdGggPT09ICIx
MDBweCIgPyAiUEFTUyIgOiAiRkFJTCIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENv
bXB1dGVkU3R5bGUvem9vbS1vbi1kaXNwbGF5LW5vbmUuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL3pvb20tb24tZGlzcGxheS1ub25lLmh0
bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVk
U3R5bGUvem9vbS1vbi1kaXNwbGF5LW5vbmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsx
LDggQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogPC9zY3JpcHQ+CiA8c3R5bGU+CiAgIC50ZXN0X2RpdiB7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9pbWFnZS1yZXNvbHV0aW9uL2ltYWdlLXJlc29sdXRpb24uaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9pbWFnZS1yZXNvbHV0aW9uL2ltYWdlLXJlc29s
dXRpb24uaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvaW1h
Z2UtcmVzb2x1dGlvbi9pbWFnZS1yZXNvbHV0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYs
OCArNiw4IEBACiA8L2hlYWQ+CiA8Ym9keT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CiB9CiAKIGZ1bmN0aW9uIHRlc3RDb21wbGV0ZWQoKQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9jc3Mvc3R5bGUtc2NvcGVkL3Njb3BlLXBzZXVkby5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zY29wZS1wc2V1ZG8uaHRtbAkocmV2aXNpb24g
MTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3Njb3BlLXBzZXVk
by5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw4ICsxNSw4IEBACiAKICAgICAgICAgZnVuY3Rp
b24gcnVuVGVzdHMoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICAgICAgbG9nKCctLS0gQ09N
UFVURUQgU1RZTEVTIC0tLScpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1z
Y29wZWQvc3R5bGUtc2NvcGVkLWF0dGFjaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtYXR0YWNoLmh0bWwJKHJldmlzaW9u
IDEyMDY3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29w
ZWQtYXR0YWNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDkgKzI1LDkgQEAKIAogICAgICAg
ICBmdW5jdGlvbiBydW5UZXN0cygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGxvZygnLS0tIE9SSUdJTkFMIC0tLScpOwpAQCAtNDIsOCArNDIsOCBAQAogICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICB0ZXN0QWxsKCk7CiAgICAg
ICAgICAgICAgICAgbG9nKCctLS0gRklOSVNIRUQgLS0tJyk7Ci0gICAgICAgICAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CiAgICAgICAgICAgICB9LCAwKTsKICAgICAgICAgfQogICAgIDwvc2NyaXB0PgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3N0eWxlLXNjb3BlZC1iYXNpYy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29w
ZWQtYmFzaWMuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
c3R5bGUtc2NvcGVkL3N0eWxlLXNjb3BlZC1iYXNpYy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
NSw4ICsxNSw4IEBACiAKICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKIAogICAgICAgICAgICAgbG9nKCctLS0gQ09NUFVURUQgU1RZTEVTIC0tLScpOwogCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLWNoYW5nZS1z
Y29wZWQtaW4tc2hhZG93Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
c3R5bGUtc2NvcGVkL3N0eWxlLXNjb3BlZC1jaGFuZ2Utc2NvcGVkLWluLXNoYWRvdy5odG1sCShy
ZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5
bGUtc2NvcGVkLWNoYW5nZS1zY29wZWQtaW4tc2hhZG93Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTQsOCArNCw4IEBACiA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9kb20vc2hhZG93L3Jlc291cmNlcy9w
b2x5ZmlsbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHNob3VsZEJl
RGVmaW5lZCgid2luZG93LmludGVybmFscyIpOwogc2hvdWxkQmVEZWZpbmVkKCJ3aW5kb3cuaW50
ZXJuYWxzLmVuc3VyZVNoYWRvd1Jvb3QiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3N0
eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtZGV0YWNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3N0eWxlLXNjb3BlZC1kZXRhY2guaHRtbAkocmV2
aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3N0eWxl
LXNjb3BlZC1kZXRhY2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjUsOSArMjUsOSBAQAogCiAg
ICAgICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgbG9nKCctLS0gT1JJR0lOQUwgLS0tJyk7CkBAIC00MCw4ICs0MCw4IEBACiAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIHRlc3RBbGwoKTsK
ICAgICAgICAgICAgICAgICBsb2coJy0tLSBGSU5JU0hFRCAtLS0nKTsKLSAgICAgICAgICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKICAgICAgICAgICAgIH0sIDApOwogICAgICAgICB9CiAgICAgPC9zY3JpcHQ+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLWluLXNoYWRv
dy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9z
dHlsZS1zY29wZWQtaW4tc2hhZG93Lmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRl
c3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtaW4tc2hhZG93Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTcsOCArNyw4IEBACiAKICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICB7
Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAg
IHNob3VsZEJlRGVmaW5lZCgid2luZG93LmludGVybmFscyIpOwogICAgICAgICBzaG91bGRCZURl
ZmluZWQoIndpbmRvdy5pbnRlcm5hbHMuZW5zdXJlU2hhZG93Um9vdCIpOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3N0eWxlLXNjb3BlZC1yZW1vdmUtc2NvcGVkLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3N0eWxl
LXNjb3BlZC1yZW1vdmUtc2NvcGVkLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRl
c3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtcmVtb3ZlLXNjb3BlZC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw5ICsyOCw5IEBACiAKICAgICAgICAgZnVuY3Rpb24gcnVu
VGVzdHMoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBsb2coJy0tLSBPUklH
SU5BTCAtLS0nKTsKQEAgLTQxLDggKzQxLDggQEAKICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgdGVzdEFsbCgpOwogICAgICAgICAgICAgICAgIGxv
ZygnLS0tIEZJTklTSEVEIC0tLScpOwotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICAg
fSwgMCk7CiAgICAgICAgIH0KICAgICA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtc2V0LXNjb3BlZC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtc2V0LXNj
b3BlZC5odG1sCShyZXZpc2lvbiAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHls
ZS1zY29wZWQvc3R5bGUtc2NvcGVkLXNldC1zY29wZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MjgsOSArMjgsOSBAQAogCiAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICAgICAgewot
ICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgbG9nKCctLS0gT1JJR0lOQUwgLS0tJyk7CkBAIC00MSw4
ICs0MSw4IEBACiAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAg
ICAgICAgIHRlc3RBbGwoKTsKICAgICAgICAgICAgICAgICBsb2coJy0tLSBGSU5JU0hFRCAtLS0n
KTsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
ICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgIH0sIDApOwogICAgICAgICB9CiAg
ICAgPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9jYW52YXMv
Y2FudmFzLWRyYXcteGJtLWltYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2Zhc3QvY2FudmFzL2NhbnZhcy1kcmF3LXhibS1pbWFnZS5odG1sCShyZXZpc2lv
biAxMjA2NzUpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9jYW52YXMvY2FudmFz
LWRyYXcteGJtLWltYWdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBACiA8dGl0
bGU+Q2FudmFzIHRlc3Q6IHhibS5pbWFnZS5yZW5kZXJpbmc8L3RpdGxlPgogPGNhbnZhcyBpZD0i
Y2FudmFzIiBjbGFzcz0ib3V0cHV0IiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjxwIGNsYXNzPSJm
YWxsYmFjayI+RkFJTCAoZmFsbGJhY2sgY29udGVudCk8L3A+PC9jYW52YXM+CiA8c2NyaXB0Pgot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCh0cnVlKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KHRydWUpOwogCiB2YXIgY3R4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNh
bnZhcyIpLmdldENvbnRleHQoIjJkIik7CiB2YXIgaW1nID0gbmV3IEltYWdlKCk7CkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2NhbnZhcy90b0RhdGFVUkwtanBlZy1hbHBoYS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvY2FudmFzL3Rv
RGF0YVVSTC1qcGVnLWFscGhhLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3Rz
L3BsYXRmb3JtL3F0L2Zhc3QvY2FudmFzL3RvRGF0YVVSTC1qcGVnLWFscGhhLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTIsMTMgKzIsMTMgQEAKIDxoZWFkPgogICAgIDxzY3JpcHQgc3JjPSJ0b0Rh
dGFVUkwtanBlZy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdD4KLSAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgd2luZG93Lm5vdGlmeUVuZFRl
c3QgPSBmdW5jdGlvbiAoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgfTsKIAogICAgICAgICBm
dW5jdGlvbiB0ZXN0VG9EYXRhVVJMKGNhbnZhcywgY3R4KQpAQCAtMzIsOCArMzIsOCBAQAogICAg
ICAgICAgICAgICAgICAgICBfYXNzZXJ0UGl4ZWxBcHByb3goY2FudmFzLCA1MCwyNSwgNjMsMTI3
LDYzLDI1NSwgIjUwLDI1IiwgIjYzLDEyNyw2MywyNTUiLCA4KTsKICAgICAgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgICAgICBpbWcuc3JjID0gZGF0YTsKLSAgICAgICAgICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBfYWRkVGVzdCh0ZXN0VG9E
YXRhVVJMKTsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvY2FudmFzL3RvRGF0
YVVSTC1qcGVnLXByaW1hcnljb2xvcnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9mYXN0L2NhbnZhcy90b0RhdGFVUkwtanBlZy1wcmltYXJ5Y29sb3JzLmh0bWwJ
KHJldmlzaW9uIDEyMDY3NSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvY2FudmFz
L3RvRGF0YVVSTC1qcGVnLXByaW1hcnljb2xvcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiwx
MyArMiwxMyBAQAogPGhlYWQ+CiAgICAgPHNjcmlwdCBzcmM9InRvRGF0YVVSTC1qcGVnLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKIAogICAgICAgICB3aW5kb3cubm90aWZ5RW5kVGVzdCA9IGZ1bmN0aW9uICgp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
ICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9OwogCiAgICAgICAgIGZ1bmN0aW9uIHRlc3RUb0Rh
dGFVUkwoY2FudmFzLCBjdHgpCkBAIC0zNyw4ICszNyw4IEBACiAgICAgICAgICAgICB9KTsKIAog
ICAgICAgICAgICAgaW1nLnNyYyA9IGRhdGE7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgfQogICAgICAg
ICBfYWRkVGVzdCh0ZXN0VG9EYXRhVVJMKTsKICAgICA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL3F0L2Zhc3QvY2FudmFzL3RvRGF0YVVSTC1qcGVnLXF1YWxpdHktYmFzaWMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2NhbnZhcy90
b0RhdGFVUkwtanBlZy1xdWFsaXR5LWJhc2ljLmh0bWwJKHJldmlzaW9uIDEyMDY3NSkKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvY2FudmFzL3RvRGF0YVVSTC1qcGVnLXF1YWxpdHkt
YmFzaWMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiwxMyArMiwxMyBAQAogPGhlYWQ+CiAgICAg
PHNjcmlwdCBzcmM9InRvRGF0YVVSTC1qcGVnLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0Pgot
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICB3
aW5kb3cubm90aWZ5RW5kVGVzdCA9IGZ1bmN0aW9uICgpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAg
ICB9OwogCiAgICAgICAgIGZ1bmN0aW9uIHRlc3RUb0RhdGFVUkwoY2FudmFzLCBjdHgpCkBAIC00
NCw4ICs0NCw4IEBACiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICBpbWdfaGku
c3JjID0gZGF0YV9oaTsKIAotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvY2FudmFz
L3RvRGF0YVVSTC1qcGVnLXF1YWxpdHktbm90bnVtYmVyLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9jYW52YXMvdG9EYXRhVVJMLWpwZWctcXVhbGl0eS1u
b3RudW1iZXIuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQvZmFzdC9jYW52YXMvdG9EYXRhVVJMLWpwZWctcXVhbGl0eS1ub3RudW1iZXIuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMiwxMyArMiwxMyBAQAogPGhlYWQ+CiAgICAgPHNjcmlwdCBzcmM9InRv
RGF0YVVSTC1qcGVnLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICB3aW5kb3cubm90aWZ5RW5k
VGVzdCA9IGZ1bmN0aW9uICgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9OwogCiAgICAgICAg
IGZ1bmN0aW9uIHRlc3RUb0RhdGFVUkwoY2FudmFzLCBjdHgpCkBAIC0yOSw4ICsyOSw4IEBACiAg
ICAgICAgICAgICAgICAgX2Fzc2VydFNhbWUoY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvanBlZycs
IHRydWUpLCBkYXRhLCAiY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvanBlZycsIHRydWUpIiwgImRh
dGEiKTsKICAgICAgICAgICAgICAgICBfYXNzZXJ0U2FtZShjYW52YXMudG9EYXRhVVJMKCdpbWFn
ZS9qcGVnJywgJzAuMDEnKSwgZGF0YSwgImNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnLCAn
MC4wMScpIiwgImRhdGEiKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L2Zhc3QvY2FudmFzL3RvRGF0YVVSTC1qcGVnLXF1YWxpdHktb3V0c2lkZXJhbmdlLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9jYW52YXMvdG9EYXRh
VVJMLWpwZWctcXVhbGl0eS1vdXRzaWRlcmFuZ2UuaHRtbAkocmV2aXNpb24gMTIwNjc1KQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9jYW52YXMvdG9EYXRhVVJMLWpwZWctcXVhbGl0
eS1vdXRzaWRlcmFuZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiwxMyArMiwxMyBAQAogPGhl
YWQ+CiAgICAgPHNjcmlwdCBzcmM9InRvRGF0YVVSTC1qcGVnLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0PgotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAog
ICAgICAgICB3aW5kb3cubm90aWZ5RW5kVGVzdCA9IGZ1bmN0aW9uICgpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwogICAgICAgICB9OwogCiAgICAgICAgIGZ1bmN0aW9uIHRlc3RUb0RhdGFVUkwoY2FudmFzLCBj
dHgpCkBAIC0yOSw4ICsyOSw4IEBACiAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBfYXNz
ZXJ0KGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnLCAxKS5sZW5ndGggPj0gY2FudmFzLnRv
RGF0YVVSTCgnaW1hZ2UvanBlZycsIDAuOSkubGVuZ3RoLCAiY2FudmFzLnRvRGF0YVVSTCgnaW1h
Z2UvanBlZycsIDEpLmxlbmd0aCA+PSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJywgMC45
KS5sZW5ndGgiKTsKICAgICAgICAgICAgICAgICBfYXNzZXJ0KGNhbnZhcy50b0RhdGFVUkwoJ2lt
YWdlL2pwZWcnLCAwKS5sZW5ndGggPD0gY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvanBlZycsIDAu
MSkubGVuZ3RoLCAiY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvanBlZycsIDApLmxlbmd0aCA8PSBj
YW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJywgMC4xKS5sZW5ndGgiKTsKLSAgICAgICAgICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCg==
</data>
<flag name="review"
          id="155928"
          type_id="1"
          status="+"
          setter="tkent"
    />
          </attachment>
      

    </bug>

</bugzilla>