<?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>29760</bug_id>
          
          <creation_ts>2009-09-25 22:19:15 -0700</creation_ts>
          <short_desc>Implement CSSOM Range.getClientRects/getBoundingClientRect</short_desc>
          <delta_ts>2009-09-27 16:59:47 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>150246</commentid>
    <comment_count>0</comment_count>
      <attachid>40161</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-09-25 22:19:15 -0700</bug_when>
    <thetext>Created attachment 40161
WIP Patch

We should implement CSSOM Range.getClientRects/getBoundingClientRect (http://www.w3.org/TR/2009/WD-cssom-view-20090804/) to complement Element.getClientRects/getBoundingClientRect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150247</commentid>
    <comment_count>1</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-09-25 22:20:32 -0700</bug_when>
    <thetext>The attached patch works, but I am not happy with how I determined if the parent node was in the Range.  It obviously also needs tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150432</commentid>
    <comment_count>2</comment_count>
      <attachid>40207</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-09-27 14:54:53 -0700</bug_when>
    <thetext>Created attachment 40207
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150433</commentid>
    <comment_count>3</comment_count>
      <attachid>40207</attachid>
    <who name="">mitz</who>
    <bug_when>2009-09-27 15:03:30 -0700</bug_when>
    <thetext>Comment on attachment 40207
patch

&gt; +    IntRect result = quads[0].enclosingBoundingBox();
&gt; +    for (size_t i = 1; i &lt; quads.size(); ++i)
&gt; +        result.unite(quads[i].enclosingBoundingBox());

There is no need to special-case the first rect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150436</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-09-27 16:59:31 -0700</bug_when>
    <thetext>Landed in r48806.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40161</attachid>
            <date>2009-09-25 22:19:15 -0700</date>
            <delta_ts>2009-09-27 14:54:53 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>wip.diff</filename>
            <type>text/plain</type>
            <size>9987</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCShyZXZpc2lvbiA0ODc3OCkKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yODIsNDIgKzI4Miw2IEBAIHN0YXRpYyBpbnQgYWRqdXN0Rm9y
TG9jYWxab29tKGludCB2YWx1ZSwKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSAv
IHpvb21GYWN0b3IpOwogfQogCi1zdGF0aWMgaW50IGFkanVzdEZvckFic29sdXRlWm9vbShpbnQg
dmFsdWUsIFJlbmRlck9iamVjdCogcmVuZGVyZXIpCi17Ci0gICAgZmxvYXQgem9vbUZhY3RvciA9
IHJlbmRlcmVyLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCk7Ci0gICAgaWYgKHpvb21GYWN0b3Ig
PT0gMSkKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIC8vIE5lZWRlZCBiZWNhdXNlIGNvbXB1
dGVMZW5ndGhJbnQgdHJ1bmNhdGVzIChyYXRoZXIgdGhhbiByb3VuZHMpIHdoZW4gc2NhbGluZyB1
cC4KLSAgICBpZiAoem9vbUZhY3RvciA+IDEpCi0gICAgICAgIHZhbHVlKys7Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4odmFsdWUgLyB6b29tRmFjdG9yKTsKLX0KLQotc3RhdGljIEZsb2F0
UG9pbnQgYWRqdXN0RmxvYXRQb2ludEZvckFic29sdXRlWm9vbShjb25zdCBGbG9hdFBvaW50JiBw
b2ludCwgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKLXsKLSAgICAvLyBUaGUgcmVzdWx0IGhlcmUg
aXMgaW4gZmxvYXRzLCBzbyB3ZSBkb24ndCBuZWVkIHRoZSB0cnVuY2F0aW9uIGhhY2sgZnJvbSB0
aGUgaW50ZWdlciB2ZXJzaW9uIGFib3ZlLgotICAgIGZsb2F0IHpvb21GYWN0b3IgPSByZW5kZXJl
ci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpOwotICAgIGlmICh6b29tRmFjdG9yID09IDEpCi0g
ICAgICAgIHJldHVybiBwb2ludDsKLSAgICByZXR1cm4gRmxvYXRQb2ludChwb2ludC54KCkgLyB6
b29tRmFjdG9yLCBwb2ludC55KCkgLyB6b29tRmFjdG9yKTsKLX0KLQotc3RhdGljIHZvaWQgYWRq
dXN0RmxvYXRRdWFkRm9yQWJzb2x1dGVab29tKEZsb2F0UXVhZCYgcXVhZCwgUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKLXsKLSAgICBxdWFkLnNldFAxKGFkanVzdEZsb2F0UG9pbnRGb3JBYnNvbHV0
ZVpvb20ocXVhZC5wMSgpLCByZW5kZXJlcikpOwotICAgIHF1YWQuc2V0UDIoYWRqdXN0RmxvYXRQ
b2ludEZvckFic29sdXRlWm9vbShxdWFkLnAyKCksIHJlbmRlcmVyKSk7Ci0gICAgcXVhZC5zZXRQ
MyhhZGp1c3RGbG9hdFBvaW50Rm9yQWJzb2x1dGVab29tKHF1YWQucDMoKSwgcmVuZGVyZXIpKTsK
LSAgICBxdWFkLnNldFA0KGFkanVzdEZsb2F0UG9pbnRGb3JBYnNvbHV0ZVpvb20ocXVhZC5wNCgp
LCByZW5kZXJlcikpOwotfQotCi1zdGF0aWMgdm9pZCBhZGp1c3RJbnRSZWN0Rm9yQWJzb2x1dGVa
b29tKEludFJlY3QmIHJlY3QsIFJlbmRlck9iamVjdCogcmVuZGVyZXIpCi17Ci0gICAgcmVjdC5z
ZXRYKGFkanVzdEZvckFic29sdXRlWm9vbShyZWN0LngoKSwgcmVuZGVyZXIpKTsKLSAgICByZWN0
LnNldFkoYWRqdXN0Rm9yQWJzb2x1dGVab29tKHJlY3QueSgpLCByZW5kZXJlcikpOwotICAgIHJl
Y3Quc2V0V2lkdGgoYWRqdXN0Rm9yQWJzb2x1dGVab29tKHJlY3Qud2lkdGgoKSwgcmVuZGVyZXIp
KTsKLSAgICByZWN0LnNldEhlaWdodChhZGp1c3RGb3JBYnNvbHV0ZVpvb20ocmVjdC5oZWlnaHQo
KSwgcmVuZGVyZXIpKTsKLX0KLQogaW50IEVsZW1lbnQ6Om9mZnNldExlZnQoKQogewogICAgIGRv
Y3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwpJbmRleDog
V2ViQ29yZS9kb20vUmFuZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1JhbmdlLmNw
cAkocmV2aXNpb24gNDg3NzgpCisrKyBXZWJDb3JlL2RvbS9SYW5nZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMsNyArMyw3IEBACiAgKiAoQykgMjAwMCBHdW5uc3RlaW4gTHllIChndW5uc3RlaW5A
bmV0Y29tLm5vKQogICogKEMpIDIwMDAgRnJlZGVyaWsgSG9sbGplbiAoZnJlZGVyaWsuaG9sbGpl
bkBoaWcubm8pCiAgKiAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQotICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTI2LDcgKzI2LDEwIEBACiAjaW5jbHVkZSAiUmFuZ2VFeGNlcHRpb24uaCIKIAog
I2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJDbGllbnRSZWN0LmgiCisjaW5jbHVkZSAi
Q2xpZW50UmVjdExpc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCisjaW5jbHVk
ZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJOb2Rl
V2l0aEluZGV4LmgiCiAjaW5jbHVkZSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCkBAIC0xODIx
LDQgKzE4MjQsODkgQEAgdm9pZCBSYW5nZTo6ZXhwYW5kKGNvbnN0IFN0cmluZyYgdW5pdCwgRQog
ICAgIHNldEVuZChlbmQuZGVlcEVxdWl2YWxlbnQoKS5jb250YWluZXJOb2RlKCksIGVuZC5kZWVw
RXF1aXZhbGVudCgpLmNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKSwgZWMpOwogfQogCitQ
YXNzUmVmUHRyPENsaWVudFJlY3RMaXN0PiBSYW5nZTo6Z2V0Q2xpZW50UmVjdHMoKSBjb25zdAor
eworICAgIGlmICghbV9zdGFydC5jb250YWluZXIoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBtX293bmVyRG9jdW1lbnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygp
OworCisgICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7CisgICAgZ2V0Qm9yZGVyQW5kVGV4dFF1
YWRzKHF1YWRzKTsKKworICAgIHJldHVybiBDbGllbnRSZWN0TGlzdDo6Y3JlYXRlKHF1YWRzKTsK
IH0KKworUGFzc1JlZlB0cjxDbGllbnRSZWN0PiBSYW5nZTo6Z2V0Qm91bmRpbmdDbGllbnRSZWN0
KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fc3RhcnQuY29udGFpbmVyKCkpCisgICAgICAgIHJldHVy
biAwOworCisgICAgbV9vd25lckRvY3VtZW50LT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5
bGVzaGVldHMoKTsKKworICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRzOworICAgIGdldEJvcmRl
ckFuZFRleHRRdWFkcyhxdWFkcyk7CisKKyAgICBpZiAocXVhZHMuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKCk7CisKKyAgICBJbnRSZWN0IHJlc3VsdCA9IHF1
YWRzWzBdLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7CisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkg
PCBxdWFkcy5zaXplKCk7ICsraSkKKyAgICAgICAgcmVzdWx0LnVuaXRlKHF1YWRzW2ldLmVuY2xv
c2luZ0JvdW5kaW5nQm94KCkpOworCisgICAgcmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZShyZXN1
bHQpOworfQorCitzdGF0aWMgdm9pZCBhZGp1c3RGbG9hdFF1YWRzRm9yU2Nyb2xsQW5kQWJzb2x1
dGVab29tKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgRG9jdW1lbnQqIGRvY3VtZW50LCBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIEZyYW1lVmlldyogdmlldyA9IGRvY3VtZW50LT52
aWV3KCk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBJbnRSZWN0IHZp
c2libGVDb250ZW50UmVjdCA9IHZpZXctPnZpc2libGVDb250ZW50UmVjdCgpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcXVhZHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgcXVhZHNbaV0u
bW92ZSgtdmlzaWJsZUNvbnRlbnRSZWN0LngoKSwgLXZpc2libGVDb250ZW50UmVjdC55KCkpOwor
ICAgICAgICBhZGp1c3RGbG9hdFF1YWRGb3JBYnNvbHV0ZVpvb20ocXVhZHNbaV0sIHJlbmRlcmVy
KTsKKyAgICB9Cit9CisKK3ZvaWQgUmFuZ2U6OmdldEJvcmRlckFuZFRleHRRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYgcXVhZHMpIGNvbnN0Cit7CisgICAgTm9kZSogc3RhcnRDb250YWluZXIgPSBt
X3N0YXJ0LmNvbnRhaW5lcigpOworICAgIE5vZGUqIGVuZENvbnRhaW5lciA9IG1fZW5kLmNvbnRh
aW5lcigpOworICAgIE5vZGUqIHN0b3BOb2RlID0gcGFzdExhc3ROb2RlKCk7CisKKyAgICBIYXNo
U2V0PE5vZGUqPiBub2RlU2V0OworICAgIGZvciAoTm9kZSogbm9kZSA9IGZpcnN0Tm9kZSgpOyBu
b2RlICE9IHN0b3BOb2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7CisgICAg
ICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgICAgICBub2RlU2V0LmFkZChu
b2RlKTsKKyAgICB9CisKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBmaXJzdE5vZGUoKTsgbm9kZSAh
PSBzdG9wTm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKSkgeworICAgICAgICBp
ZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7CisgICAgICAgICAgICBpZiAoIW5vZGVTZXQuY29u
dGFpbnMobm9kZS0+cGFyZW50Tm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGlmIChSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVuZGVyQm94TW9kZWxPYmplY3QgPSBzdGF0aWNfY2FzdDxFbGVtZW50
Kj4obm9kZSktPnJlbmRlckJveE1vZGVsT2JqZWN0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
VmVjdG9yPEZsb2F0UXVhZD4gZWxlbWVudFF1YWRzOworICAgICAgICAgICAgICAgICAgICByZW5k
ZXJCb3hNb2RlbE9iamVjdC0+YWJzb2x1dGVRdWFkcyhlbGVtZW50UXVhZHMpOworICAgICAgICAg
ICAgICAgICAgICBhZGp1c3RGbG9hdFF1YWRzRm9yU2Nyb2xsQW5kQWJzb2x1dGVab29tKGVsZW1l
bnRRdWFkcywgbV9vd25lckRvY3VtZW50LmdldCgpLCByZW5kZXJCb3hNb2RlbE9iamVjdCk7CisK
KyAgICAgICAgICAgICAgICAgICAgcXVhZHMuYXBwZW5kKGVsZW1lbnRRdWFkcyk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmlzVGV4
dE5vZGUoKSkgeworICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdGF0
aWNfY2FzdDxUZXh0Kj4obm9kZSktPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgICAgICAgICBSZW5k
ZXJUZXh0KiByZW5kZXJUZXh0ID0gdG9SZW5kZXJUZXh0KHJlbmRlcmVyKTsKKyAgICAgICAgICAg
ICAgICBpbnQgc3RhcnRPZmZzZXQgPSAobm9kZSA9PSBzdGFydENvbnRhaW5lcikgPyBtX3N0YXJ0
Lm9mZnNldCgpIDogMDsKKyAgICAgICAgICAgICAgICBpbnQgZW5kT2Zmc2V0ID0gKG5vZGUgPT0g
ZW5kQ29udGFpbmVyKSA/IG1fZW5kLm9mZnNldCgpIDogSU5UX01BWDsKKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICBWZWN0b3I8RmxvYXRRdWFkPiB0ZXh0UXVhZHM7CisgICAgICAg
ICAgICAgICAgcmVuZGVyVGV4dC0+YWJzb2x1dGVRdWFkc0ZvclJhbmdlKHRleHRRdWFkcywgc3Rh
cnRPZmZzZXQsIGVuZE9mZnNldCk7CisgICAgICAgICAgICAgICAgYWRqdXN0RmxvYXRRdWFkc0Zv
clNjcm9sbEFuZEFic29sdXRlWm9vbSh0ZXh0UXVhZHMsIG1fb3duZXJEb2N1bWVudC5nZXQoKSwg
cmVuZGVyVGV4dCk7CisKKyAgICAgICAgICAgICAgICBxdWFkcy5hcHBlbmQodGV4dFF1YWRzKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9kb20vUmFuZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9SYW5nZS5oCShyZXZpc2lvbiA0ODc3OCkKKysrIFdlYkNvcmUvZG9tL1JhbmdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMsNyArMyw3IEBACiAgKiAoQykgMjAwMCBHdW5uc3RlaW4gTHllIChndW5u
c3RlaW5AbmV0Y29tLm5vKQogICogKEMpIDIwMDAgRnJlZGVyaWsgSG9sbGplbiAoZnJlZGVyaWsu
aG9sbGplbkBoaWcubm8pCiAgKiAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQot
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTI1LDEyICsyNSwxNiBAQAogI2lmbmRlZiBSYW5nZV9oCiAjZGVmaW5l
IFJhbmdlX2gKIAorI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIlJhbmdlQm91bmRh
cnlQb2ludC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgQ2xpZW50UmVjdDsKK2NsYXNzIENsaWVudFJlY3RMaXN0OwogY2xhc3MgRG9jdW1l
bnRGcmFnbWVudDsKIGNsYXNzIE5vZGVXaXRoSW5kZXg7CiBjbGFzcyBUZXh0OwpAQCAtMTE3LDYg
KzEyMSw5IEBAIHB1YmxpYzoKICAgICAvLyBmb3IgZGV0YWlscy4KICAgICB2b2lkIGV4cGFuZChj
b25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAKKyAgICBQYXNzUmVmUHRyPENsaWVudFJl
Y3RMaXN0PiBnZXRDbGllbnRSZWN0cygpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8Q2xpZW50UmVj
dD4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgY29uc3Q7CisKICNpZm5kZWYgTkRFQlVHCiAgICAg
dm9pZCBmb3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29u
c3Q7CiAjZW5kaWYKQEAgLTEzNSw2ICsxNDIsOCBAQCBwcml2YXRlOgogICAgIGVudW0gQWN0aW9u
VHlwZSB7IERFTEVURV9DT05URU5UUywgRVhUUkFDVF9DT05URU5UUywgQ0xPTkVfQ09OVEVOVFMg
fTsKICAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IHByb2Nlc3NDb250ZW50cyhBY3Rp
b25UeXBlLCBFeGNlcHRpb25Db2RlJik7CiAKKyAgICB2b2lkIGdldEJvcmRlckFuZFRleHRRdWFk
cyhWZWN0b3I8RmxvYXRRdWFkPiYpIGNvbnN0OworCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX293
bmVyRG9jdW1lbnQ7CiAgICAgUmFuZ2VCb3VuZGFyeVBvaW50IG1fc3RhcnQ7CiAgICAgUmFuZ2VC
b3VuZGFyeVBvaW50IG1fZW5kOwpJbmRleDogV2ViQ29yZS9kb20vUmFuZ2UuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZG9tL1JhbmdlLmlkbAkocmV2aXNpb24gNDg3NzgpCisrKyBXZWJDb3Jl
L2RvbS9SYW5nZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDEzIEBAIG1vZHVsZSBy
YW5nZXMgewogICAgICAgICB2b2lkIGRldGFjaCgpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKIAorI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkgfHwgTEFOR1VBR0Vf
SkFWQVNDUklQVAorICAgICAgICAvLyBDU1NPTSBWaWV3IE1vZHVsZSBBUEkgZXh0ZW5zaW9ucwor
CisgICAgICAgIENsaWVudFJlY3RMaXN0IGdldENsaWVudFJlY3RzKCk7CisgICAgICAgIENsaWVu
dFJlY3QgZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisjZW5kaWYKKwogICAgICAgICAvLyBleHRl
bnNpb25zCiAKICAgICAgICAgRG9jdW1lbnRGcmFnbWVudCBjcmVhdGVDb250ZXh0dWFsRnJhZ21l
bnQoaW4gRE9NU3RyaW5nIGh0bWwpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkocmV2
aXNpb24gNDg3NzgpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTg1LDYgKzk4NSw0MiBAQCBpbmxpbmUgdm9pZCBtYWtlTWF0cml4UmVuZGVy
YWJsZShUcmFuc2ZvCiAjZW5kaWYKIH0KIAoraW5saW5lIGludCBhZGp1c3RGb3JBYnNvbHV0ZVpv
b20oaW50IHZhbHVlLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIGZsb2F0IHpvb21G
YWN0b3IgPSByZW5kZXJlci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpOworICAgIGlmICh6b29t
RmFjdG9yID09IDEpCisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAvLyBOZWVkZWQgYmVjYXVz
ZSBjb21wdXRlTGVuZ3RoSW50IHRydW5jYXRlcyAocmF0aGVyIHRoYW4gcm91bmRzKSB3aGVuIHNj
YWxpbmcgdXAuCisgICAgaWYgKHpvb21GYWN0b3IgPiAxKQorICAgICAgICB2YWx1ZSsrOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlIC8gem9vbUZhY3Rvcik7Cit9CisKK2lubGlu
ZSB2b2lkIGFkanVzdEludFJlY3RGb3JBYnNvbHV0ZVpvb20oSW50UmVjdCYgcmVjdCwgUmVuZGVy
T2JqZWN0KiByZW5kZXJlcikKK3sKKyAgICByZWN0LnNldFgoYWRqdXN0Rm9yQWJzb2x1dGVab29t
KHJlY3QueCgpLCByZW5kZXJlcikpOworICAgIHJlY3Quc2V0WShhZGp1c3RGb3JBYnNvbHV0ZVpv
b20ocmVjdC55KCksIHJlbmRlcmVyKSk7CisgICAgcmVjdC5zZXRXaWR0aChhZGp1c3RGb3JBYnNv
bHV0ZVpvb20ocmVjdC53aWR0aCgpLCByZW5kZXJlcikpOworICAgIHJlY3Quc2V0SGVpZ2h0KGFk
anVzdEZvckFic29sdXRlWm9vbShyZWN0LmhlaWdodCgpLCByZW5kZXJlcikpOworfQorCitpbmxp
bmUgRmxvYXRQb2ludCBhZGp1c3RGbG9hdFBvaW50Rm9yQWJzb2x1dGVab29tKGNvbnN0IEZsb2F0
UG9pbnQmIHBvaW50LCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIC8vIFRoZSByZXN1
bHQgaGVyZSBpcyBpbiBmbG9hdHMsIHNvIHdlIGRvbid0IG5lZWQgdGhlIHRydW5jYXRpb24gaGFj
ayBmcm9tIHRoZSBpbnRlZ2VyIHZlcnNpb24gYWJvdmUuCisgICAgZmxvYXQgem9vbUZhY3RvciA9
IHJlbmRlcmVyLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCk7CisgICAgaWYgKHpvb21GYWN0b3Ig
PT0gMSkKKyAgICAgICAgcmV0dXJuIHBvaW50OworICAgIHJldHVybiBGbG9hdFBvaW50KHBvaW50
LngoKSAvIHpvb21GYWN0b3IsIHBvaW50LnkoKSAvIHpvb21GYWN0b3IpOworfQorCitpbmxpbmUg
dm9pZCBhZGp1c3RGbG9hdFF1YWRGb3JBYnNvbHV0ZVpvb20oRmxvYXRRdWFkJiBxdWFkLCBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIHF1YWQuc2V0UDEoYWRqdXN0RmxvYXRQb2ludEZv
ckFic29sdXRlWm9vbShxdWFkLnAxKCksIHJlbmRlcmVyKSk7CisgICAgcXVhZC5zZXRQMihhZGp1
c3RGbG9hdFBvaW50Rm9yQWJzb2x1dGVab29tKHF1YWQucDIoKSwgcmVuZGVyZXIpKTsKKyAgICBx
dWFkLnNldFAzKGFkanVzdEZsb2F0UG9pbnRGb3JBYnNvbHV0ZVpvb20ocXVhZC5wMygpLCByZW5k
ZXJlcikpOworICAgIHF1YWQuc2V0UDQoYWRqdXN0RmxvYXRQb2ludEZvckFic29sdXRlWm9vbShx
dWFkLnA0KCksIHJlbmRlcmVyKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2lm
bmRlZiBOREVCVUcK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40207</attachid>
            <date>2009-09-27 14:54:53 -0700</date>
            <delta_ts>2009-09-27 16:24:36 -0700</delta_ts>
            <desc>patch</desc>
            <filename>range.diff</filename>
            <type>text/plain</type>
            <size>92615</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODgwNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMDktMDktMjcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggZm9y
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTc2MAorICAgICAgICBJ
bXBsZW1lbnQgQ1NTT00gUmFuZ2UuZ2V0Q2xpZW50UmVjdHMvZ2V0Qm91bmRpbmdDbGllbnRSZWN0
IAorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9SYW5nZS9nZXRCb3VuZGluZ0NsaWVudFJlY3Qt
Z2V0Q2xpZW50UmVjdHMtcmVsYXRpdmUtdG8tdmlld3BvcnQuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vUmFuZ2UvZ2V0Qm91bmRpbmdDbGllbnRSZWN0Lmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvZG9tL1JhbmdlL2dldENsaWVudFJlY3RzLmh0bWwKKworICAgICAgICAqIGRvbS9SYW5n
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6Z2V0Q2xpZW50UmVjdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmFuZ2U6OmdldEJvdW5kaW5nQ2xpZW50UmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjphZGp1c3RGbG9hdFF1YWRzRm9yU2Nyb2xsQW5kQWJzb2x1dGVab29tKToKKyAgICAgICAg
KFdlYkNvcmU6OlJhbmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMpOgorICAgICAgICAqIGRvbS9S
YW5nZS5oOgorICAgICAgICAqIGRvbS9SYW5nZS5pZGw6CisgICAgICAgIEltcGxlbWVudCBSYW5n
ZS5nZXRDbGllbnRSZWN0cy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuCisKKyAgICAgICAgKiBkb20v
RWxlbWVudC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOiAKKyAgICAg
ICAgKFdlYkNvcmU6OmFkanVzdEZvckFic29sdXRlWm9vbSk6CisgICAgICAgIChXZWJDb3JlOjph
ZGp1c3RJbnRSZWN0Rm9yQWJzb2x1dGVab29tKToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdEZs
b2F0UG9pbnRGb3JBYnNvbHV0ZVpvb20pOgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0RmxvYXRR
dWFkRm9yQWJzb2x1dGVab29tKToKKyAgICAgICAgTW92ZSBwb2ludC9xdWFkIGFkanVzdG1lbnQg
bWV0aG9kcyBmcm9tIEVsZW1lbnQuY3BwIHRvIFJlbmRlck9iamVjdC5oCisgICAgICAgIHNvIHRo
YXQgUmFuZ2UuY3BwIGNhbiB1c2UgdGhlbSBhcyB3ZWxsLgorCiAyMDA5LTA5LTI3ICBTaW1vbiBI
YXVzbWFubiAgPGhhdXNtYW5uQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBmaXgg
Zm9yIFdlYkluc3BlY3RvciB3aXRoIFF0IGJ1aWxkLgpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDQ4
Nzc4KQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Miw0
MiArMjgyLDYgQEAgc3RhdGljIGludCBhZGp1c3RGb3JMb2NhbFpvb20oaW50IHZhbHVlLAogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlIC8gem9vbUZhY3Rvcik7CiB9CiAKLXN0YXRp
YyBpbnQgYWRqdXN0Rm9yQWJzb2x1dGVab29tKGludCB2YWx1ZSwgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlcikKLXsKLSAgICBmbG9hdCB6b29tRmFjdG9yID0gcmVuZGVyZXItPnN0eWxlKCktPmVmZmVj
dGl2ZVpvb20oKTsKLSAgICBpZiAoem9vbUZhY3RvciA9PSAxKQotICAgICAgICByZXR1cm4gdmFs
dWU7Ci0gICAgLy8gTmVlZGVkIGJlY2F1c2UgY29tcHV0ZUxlbmd0aEludCB0cnVuY2F0ZXMgKHJh
dGhlciB0aGFuIHJvdW5kcykgd2hlbiBzY2FsaW5nIHVwLgotICAgIGlmICh6b29tRmFjdG9yID4g
MSkKLSAgICAgICAgdmFsdWUrKzsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSAv
IHpvb21GYWN0b3IpOwotfQotCi1zdGF0aWMgRmxvYXRQb2ludCBhZGp1c3RGbG9hdFBvaW50Rm9y
QWJzb2x1dGVab29tKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyKQotewotICAgIC8vIFRoZSByZXN1bHQgaGVyZSBpcyBpbiBmbG9hdHMsIHNvIHdlIGRvbid0
IG5lZWQgdGhlIHRydW5jYXRpb24gaGFjayBmcm9tIHRoZSBpbnRlZ2VyIHZlcnNpb24gYWJvdmUu
Ci0gICAgZmxvYXQgem9vbUZhY3RvciA9IHJlbmRlcmVyLT5zdHlsZSgpLT5lZmZlY3RpdmVab29t
KCk7Ci0gICAgaWYgKHpvb21GYWN0b3IgPT0gMSkKLSAgICAgICAgcmV0dXJuIHBvaW50OwotICAg
IHJldHVybiBGbG9hdFBvaW50KHBvaW50LngoKSAvIHpvb21GYWN0b3IsIHBvaW50LnkoKSAvIHpv
b21GYWN0b3IpOwotfQotCi1zdGF0aWMgdm9pZCBhZGp1c3RGbG9hdFF1YWRGb3JBYnNvbHV0ZVpv
b20oRmxvYXRRdWFkJiBxdWFkLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQotewotICAgIHF1YWQu
c2V0UDEoYWRqdXN0RmxvYXRQb2ludEZvckFic29sdXRlWm9vbShxdWFkLnAxKCksIHJlbmRlcmVy
KSk7Ci0gICAgcXVhZC5zZXRQMihhZGp1c3RGbG9hdFBvaW50Rm9yQWJzb2x1dGVab29tKHF1YWQu
cDIoKSwgcmVuZGVyZXIpKTsKLSAgICBxdWFkLnNldFAzKGFkanVzdEZsb2F0UG9pbnRGb3JBYnNv
bHV0ZVpvb20ocXVhZC5wMygpLCByZW5kZXJlcikpOwotICAgIHF1YWQuc2V0UDQoYWRqdXN0Rmxv
YXRQb2ludEZvckFic29sdXRlWm9vbShxdWFkLnA0KCksIHJlbmRlcmVyKSk7Ci19Ci0KLXN0YXRp
YyB2b2lkIGFkanVzdEludFJlY3RGb3JBYnNvbHV0ZVpvb20oSW50UmVjdCYgcmVjdCwgUmVuZGVy
T2JqZWN0KiByZW5kZXJlcikKLXsKLSAgICByZWN0LnNldFgoYWRqdXN0Rm9yQWJzb2x1dGVab29t
KHJlY3QueCgpLCByZW5kZXJlcikpOwotICAgIHJlY3Quc2V0WShhZGp1c3RGb3JBYnNvbHV0ZVpv
b20ocmVjdC55KCksIHJlbmRlcmVyKSk7Ci0gICAgcmVjdC5zZXRXaWR0aChhZGp1c3RGb3JBYnNv
bHV0ZVpvb20ocmVjdC53aWR0aCgpLCByZW5kZXJlcikpOwotICAgIHJlY3Quc2V0SGVpZ2h0KGFk
anVzdEZvckFic29sdXRlWm9vbShyZWN0LmhlaWdodCgpLCByZW5kZXJlcikpOwotfQotCiBpbnQg
RWxlbWVudDo6b2Zmc2V0TGVmdCgpCiB7CiAgICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdu
b3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CkluZGV4OiBXZWJDb3JlL2RvbS9SYW5nZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vUmFuZ2UuY3BwCShyZXZpc2lvbiA0ODc3OCkKKysrIFdl
YkNvcmUvZG9tL1JhbmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAKICAqIChD
KSAyMDAwIEd1bm5zdGVpbiBMeWUgKGd1bm5zdGVpbkBuZXRjb20ubm8pCiAgKiAoQykgMjAwMCBG
cmVkZXJpayBIb2xsamVuIChmcmVkZXJpay5ob2xsamVuQGhpZy5ubykKICAqIChDKSAyMDAxIFBl
dGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjYsNyArMjYsMTAgQEAK
ICNpbmNsdWRlICJSYW5nZUV4Y2VwdGlvbi5oIgogCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2lu
Y2x1ZGUgIkNsaWVudFJlY3QuaCIKKyNpbmNsdWRlICJDbGllbnRSZWN0TGlzdC5oIgogI2luY2x1
ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRl
ICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIk5vZGVXaXRoSW5kZXguaCIKICNpbmNsdWRlICJQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIKQEAgLTE4MjEsNCArMTgyNCw4OSBAQCB2b2lkIFJhbmdl
OjpleHBhbmQoY29uc3QgU3RyaW5nJiB1bml0LCBFCiAgICAgc2V0RW5kKGVuZC5kZWVwRXF1aXZh
bGVudCgpLmNvbnRhaW5lck5vZGUoKSwgZW5kLmRlZXBFcXVpdmFsZW50KCkuY29tcHV0ZU9mZnNl
dEluQ29udGFpbmVyTm9kZSgpLCBlYyk7CiB9CiAKK1Bhc3NSZWZQdHI8Q2xpZW50UmVjdExpc3Q+
IFJhbmdlOjpnZXRDbGllbnRSZWN0cygpIGNvbnN0Cit7CisgICAgaWYgKCFtX3N0YXJ0LmNvbnRh
aW5lcigpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIG1fb3duZXJEb2N1bWVudC0+dXBkYXRl
TGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisKKyAgICBWZWN0b3I8RmxvYXRRdWFk
PiBxdWFkczsKKyAgICBnZXRCb3JkZXJBbmRUZXh0UXVhZHMocXVhZHMpOworCisgICAgcmV0dXJu
IENsaWVudFJlY3RMaXN0OjpjcmVhdGUocXVhZHMpOwogfQorCitQYXNzUmVmUHRyPENsaWVudFJl
Y3Q+IFJhbmdlOjpnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSBjb25zdAoreworICAgIGlmICghbV9z
dGFydC5jb250YWluZXIoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBtX293bmVyRG9jdW1l
bnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworCisgICAgVmVjdG9y
PEZsb2F0UXVhZD4gcXVhZHM7CisgICAgZ2V0Qm9yZGVyQW5kVGV4dFF1YWRzKHF1YWRzKTsKKwor
ICAgIGlmIChxdWFkcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVh
dGUoKTsKKworICAgIEludFJlY3QgcmVzdWx0ID0gcXVhZHNbMF0uZW5jbG9zaW5nQm91bmRpbmdC
b3goKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IHF1YWRzLnNpemUoKTsgKytpKQorICAg
ICAgICByZXN1bHQudW5pdGUocXVhZHNbaV0uZW5jbG9zaW5nQm91bmRpbmdCb3goKSk7CisKKyAg
ICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKHJlc3VsdCk7Cit9CisKK3N0YXRpYyB2b2lkIGFk
anVzdEZsb2F0UXVhZHNGb3JTY3JvbGxBbmRBYnNvbHV0ZVpvb20oVmVjdG9yPEZsb2F0UXVhZD4m
IHF1YWRzLCBEb2N1bWVudCogZG9jdW1lbnQsIFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit7Cisg
ICAgRnJhbWVWaWV3KiB2aWV3ID0gZG9jdW1lbnQtPnZpZXcoKTsKKyAgICBpZiAoIXZpZXcpCisg
ICAgICAgIHJldHVybjsKKworICAgIEludFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlldy0+
dmlzaWJsZUNvbnRlbnRSZWN0KCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkcy5z
aXplKCk7ICsraSkgeworICAgICAgICBxdWFkc1tpXS5tb3ZlKC12aXNpYmxlQ29udGVudFJlY3Qu
eCgpLCAtdmlzaWJsZUNvbnRlbnRSZWN0LnkoKSk7CisgICAgICAgIGFkanVzdEZsb2F0UXVhZEZv
ckFic29sdXRlWm9vbShxdWFkc1tpXSwgcmVuZGVyZXIpOworICAgIH0KK30KKwordm9pZCBSYW5n
ZTo6Z2V0Qm9yZGVyQW5kVGV4dFF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykgY29uc3QK
K3sKKyAgICBOb2RlKiBzdGFydENvbnRhaW5lciA9IG1fc3RhcnQuY29udGFpbmVyKCk7CisgICAg
Tm9kZSogZW5kQ29udGFpbmVyID0gbV9lbmQuY29udGFpbmVyKCk7CisgICAgTm9kZSogc3RvcE5v
ZGUgPSBwYXN0TGFzdE5vZGUoKTsKKworICAgIEhhc2hTZXQ8Tm9kZSo+IG5vZGVTZXQ7CisgICAg
Zm9yIChOb2RlKiBub2RlID0gZmlyc3ROb2RlKCk7IG5vZGUgIT0gc3RvcE5vZGU7IG5vZGUgPSBu
b2RlLT50cmF2ZXJzZU5leHROb2RlKCkpIHsKKyAgICAgICAgaWYgKG5vZGUtPmlzRWxlbWVudE5v
ZGUoKSkKKyAgICAgICAgICAgIG5vZGVTZXQuYWRkKG5vZGUpOworICAgIH0KKworICAgIGZvciAo
Tm9kZSogbm9kZSA9IGZpcnN0Tm9kZSgpOyBub2RlICE9IHN0b3BOb2RlOyBub2RlID0gbm9kZS0+
dHJhdmVyc2VOZXh0Tm9kZSgpKSB7CisgICAgICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkp
IHsKKyAgICAgICAgICAgIGlmICghbm9kZVNldC5jb250YWlucyhub2RlLT5wYXJlbnROb2RlKCkp
KSB7CisgICAgICAgICAgICAgICAgaWYgKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJCb3hN
b2RlbE9iamVjdCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKS0+cmVuZGVyQm94TW9kZWxP
YmplY3QoKSkgeworICAgICAgICAgICAgICAgICAgICBWZWN0b3I8RmxvYXRRdWFkPiBlbGVtZW50
UXVhZHM7CisgICAgICAgICAgICAgICAgICAgIHJlbmRlckJveE1vZGVsT2JqZWN0LT5hYnNvbHV0
ZVF1YWRzKGVsZW1lbnRRdWFkcyk7CisgICAgICAgICAgICAgICAgICAgIGFkanVzdEZsb2F0UXVh
ZHNGb3JTY3JvbGxBbmRBYnNvbHV0ZVpvb20oZWxlbWVudFF1YWRzLCBtX293bmVyRG9jdW1lbnQu
Z2V0KCksIHJlbmRlckJveE1vZGVsT2JqZWN0KTsKKworICAgICAgICAgICAgICAgICAgICBxdWFk
cy5hcHBlbmQoZWxlbWVudFF1YWRzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+aXNUZXh0Tm9kZSgpKSB7CisgICAgICAgICAgICBp
ZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHN0YXRpY19jYXN0PFRleHQqPihub2RlKS0+cmVu
ZGVyZXIoKSkgeworICAgICAgICAgICAgICAgIFJlbmRlclRleHQqIHJlbmRlclRleHQgPSB0b1Jl
bmRlclRleHQocmVuZGVyZXIpOworICAgICAgICAgICAgICAgIGludCBzdGFydE9mZnNldCA9IChu
b2RlID09IHN0YXJ0Q29udGFpbmVyKSA/IG1fc3RhcnQub2Zmc2V0KCkgOiAwOworICAgICAgICAg
ICAgICAgIGludCBlbmRPZmZzZXQgPSAobm9kZSA9PSBlbmRDb250YWluZXIpID8gbV9lbmQub2Zm
c2V0KCkgOiBJTlRfTUFYOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIFZlY3Rv
cjxGbG9hdFF1YWQ+IHRleHRRdWFkczsKKyAgICAgICAgICAgICAgICByZW5kZXJUZXh0LT5hYnNv
bHV0ZVF1YWRzRm9yUmFuZ2UodGV4dFF1YWRzLCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKKyAg
ICAgICAgICAgICAgICBhZGp1c3RGbG9hdFF1YWRzRm9yU2Nyb2xsQW5kQWJzb2x1dGVab29tKHRl
eHRRdWFkcywgbV9vd25lckRvY3VtZW50LmdldCgpLCByZW5kZXJUZXh0KTsKKworICAgICAgICAg
ICAgICAgIHF1YWRzLmFwcGVuZCh0ZXh0UXVhZHMpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9S
YW5nZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1JhbmdlLmgJKHJldmlzaW9uIDQ4Nzc4
KQorKysgV2ViQ29yZS9kb20vUmFuZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAK
ICAqIChDKSAyMDAwIEd1bm5zdGVpbiBMeWUgKGd1bm5zdGVpbkBuZXRjb20ubm8pCiAgKiAoQykg
MjAwMCBGcmVkZXJpayBIb2xsamVuIChmcmVkZXJpay5ob2xsamVuQGhpZy5ubykKICAqIChDKSAy
MDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjUsMTIgKzI1
LDE1IEBACiAjaWZuZGVmIFJhbmdlX2gKICNkZWZpbmUgUmFuZ2VfaAogCisjaW5jbHVkZSAiRmxv
YXRRdWFkLmgiCiAjaW5jbHVkZSAiUmFuZ2VCb3VuZGFyeVBvaW50LmgiCisjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDbGllbnRSZWN0OworY2xh
c3MgQ2xpZW50UmVjdExpc3Q7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgTm9kZVdp
dGhJbmRleDsKIGNsYXNzIFRleHQ7CkBAIC0xMTcsNiArMTIwLDkgQEAgcHVibGljOgogICAgIC8v
IGZvciBkZXRhaWxzLgogICAgIHZvaWQgZXhwYW5kKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNv
ZGUmKTsKIAorICAgIFBhc3NSZWZQdHI8Q2xpZW50UmVjdExpc3Q+IGdldENsaWVudFJlY3RzKCkg
Y29uc3Q7CisgICAgUGFzc1JlZlB0cjxDbGllbnRSZWN0PiBnZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KSBjb25zdDsKKwogI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIGZvcm1hdEZvckRlYnVnZ2VyKGNo
YXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdDsKICNlbmRpZgpAQCAtMTM1LDYgKzE0
MSw4IEBAIHByaXZhdGU6CiAgICAgZW51bSBBY3Rpb25UeXBlIHsgREVMRVRFX0NPTlRFTlRTLCBF
WFRSQUNUX0NPTlRFTlRTLCBDTE9ORV9DT05URU5UUyB9OwogICAgIFBhc3NSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gcHJvY2Vzc0NvbnRlbnRzKEFjdGlvblR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsK
IAorICAgIHZvaWQgZ2V0Qm9yZGVyQW5kVGV4dFF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JikgY29u
c3Q7CisKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fb3duZXJEb2N1bWVudDsKICAgICBSYW5nZUJv
dW5kYXJ5UG9pbnQgbV9zdGFydDsKICAgICBSYW5nZUJvdW5kYXJ5UG9pbnQgbV9lbmQ7CkluZGV4
OiBXZWJDb3JlL2RvbS9SYW5nZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vUmFuZ2Uu
aWRsCShyZXZpc2lvbiA0ODc3OCkKKysrIFdlYkNvcmUvZG9tL1JhbmdlLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtODUsNiArODUsMTMgQEAgbW9kdWxlIHJhbmdlcyB7CiAgICAgICAgIHZvaWQgZGV0
YWNoKCkKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogCisjaWYgZGVmaW5lZChM
QU5HVUFHRV9KQVZBU0NSSVBUKSB8fCBMQU5HVUFHRV9KQVZBU0NSSVBUCisgICAgICAgIC8vIENT
U09NIFZpZXcgTW9kdWxlIEFQSSBleHRlbnNpb25zCisKKyAgICAgICAgQ2xpZW50UmVjdExpc3Qg
Z2V0Q2xpZW50UmVjdHMoKTsKKyAgICAgICAgQ2xpZW50UmVjdCBnZXRCb3VuZGluZ0NsaWVudFJl
Y3QoKTsKKyNlbmRpZgorCiAgICAgICAgIC8vIGV4dGVuc2lvbnMKIAogICAgICAgICBEb2N1bWVu
dEZyYWdtZW50IGNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChpbiBET01TdHJpbmcgaHRtbCkKSW5k
ZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCShyZXZpc2lvbiA0ODc3OCkKKysrIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05ODUsNiArOTg1LDQy
IEBAIGlubGluZSB2b2lkIG1ha2VNYXRyaXhSZW5kZXJhYmxlKFRyYW5zZm8KICNlbmRpZgogfQog
CitpbmxpbmUgaW50IGFkanVzdEZvckFic29sdXRlWm9vbShpbnQgdmFsdWUsIFJlbmRlck9iamVj
dCogcmVuZGVyZXIpCit7CisgICAgZmxvYXQgem9vbUZhY3RvciA9IHJlbmRlcmVyLT5zdHlsZSgp
LT5lZmZlY3RpdmVab29tKCk7CisgICAgaWYgKHpvb21GYWN0b3IgPT0gMSkKKyAgICAgICAgcmV0
dXJuIHZhbHVlOworICAgIC8vIE5lZWRlZCBiZWNhdXNlIGNvbXB1dGVMZW5ndGhJbnQgdHJ1bmNh
dGVzIChyYXRoZXIgdGhhbiByb3VuZHMpIHdoZW4gc2NhbGluZyB1cC4KKyAgICBpZiAoem9vbUZh
Y3RvciA+IDEpCisgICAgICAgIHZhbHVlKys7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
dmFsdWUgLyB6b29tRmFjdG9yKTsKK30KKworaW5saW5lIHZvaWQgYWRqdXN0SW50UmVjdEZvckFi
c29sdXRlWm9vbShJbnRSZWN0JiByZWN0LCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAg
IHJlY3Quc2V0WChhZGp1c3RGb3JBYnNvbHV0ZVpvb20ocmVjdC54KCksIHJlbmRlcmVyKSk7Cisg
ICAgcmVjdC5zZXRZKGFkanVzdEZvckFic29sdXRlWm9vbShyZWN0LnkoKSwgcmVuZGVyZXIpKTsK
KyAgICByZWN0LnNldFdpZHRoKGFkanVzdEZvckFic29sdXRlWm9vbShyZWN0LndpZHRoKCksIHJl
bmRlcmVyKSk7CisgICAgcmVjdC5zZXRIZWlnaHQoYWRqdXN0Rm9yQWJzb2x1dGVab29tKHJlY3Qu
aGVpZ2h0KCksIHJlbmRlcmVyKSk7Cit9CisKK2lubGluZSBGbG9hdFBvaW50IGFkanVzdEZsb2F0
UG9pbnRGb3JBYnNvbHV0ZVpvb20oY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIFJlbmRlck9iamVj
dCogcmVuZGVyZXIpCit7CisgICAgLy8gVGhlIHJlc3VsdCBoZXJlIGlzIGluIGZsb2F0cywgc28g
d2UgZG9uJ3QgbmVlZCB0aGUgdHJ1bmNhdGlvbiBoYWNrIGZyb20gdGhlIGludGVnZXIgdmVyc2lv
biBhYm92ZS4KKyAgICBmbG9hdCB6b29tRmFjdG9yID0gcmVuZGVyZXItPnN0eWxlKCktPmVmZmVj
dGl2ZVpvb20oKTsKKyAgICBpZiAoem9vbUZhY3RvciA9PSAxKQorICAgICAgICByZXR1cm4gcG9p
bnQ7CisgICAgcmV0dXJuIEZsb2F0UG9pbnQocG9pbnQueCgpIC8gem9vbUZhY3RvciwgcG9pbnQu
eSgpIC8gem9vbUZhY3Rvcik7Cit9CisKK2lubGluZSB2b2lkIGFkanVzdEZsb2F0UXVhZEZvckFi
c29sdXRlWm9vbShGbG9hdFF1YWQmIHF1YWQsIFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit7Cisg
ICAgcXVhZC5zZXRQMShhZGp1c3RGbG9hdFBvaW50Rm9yQWJzb2x1dGVab29tKHF1YWQucDEoKSwg
cmVuZGVyZXIpKTsKKyAgICBxdWFkLnNldFAyKGFkanVzdEZsb2F0UG9pbnRGb3JBYnNvbHV0ZVpv
b20ocXVhZC5wMigpLCByZW5kZXJlcikpOworICAgIHF1YWQuc2V0UDMoYWRqdXN0RmxvYXRQb2lu
dEZvckFic29sdXRlWm9vbShxdWFkLnAzKCksIHJlbmRlcmVyKSk7CisgICAgcXVhZC5zZXRQNChh
ZGp1c3RGbG9hdFBvaW50Rm9yQWJzb2x1dGVab29tKHF1YWQucDQoKSwgcmVuZGVyZXIpKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjaWZuZGVmIE5ERUJVRwpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gNDg4MDUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwzMCBAQAorMjAwOS0wOS0yNyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIGZv
ciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk3NjAKKyAgICAgICAg
SW1wbGVtZW50IENTU09NIFJhbmdlLmdldENsaWVudFJlY3RzL2dldEJvdW5kaW5nQ2xpZW50UmVj
dCAKKworICAgICAgICAqIGZhc3QvZG9tL0VsZW1lbnQvZ2V0Qm91bmRpbmdDbGllbnRSZWN0LWV4
cGVjdGVkLnR4dDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0Qm91bmRpbmdD
bGllbnRSZWN0LWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBmYXN0L2RvbS9FbGVtZW50L2dldEJv
dW5kaW5nQ2xpZW50UmVjdC1nZXRDbGllbnRSZWN0cy1yZWxhdGl2ZS10by12aWV3cG9ydC1leHBl
Y3RlZC50eHQ6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEJvdW5kaW5nQ2xp
ZW50UmVjdC1nZXRDbGllbnRSZWN0cy1yZWxhdGl2ZS10by12aWV3cG9ydC1leHBlY3RlZC50eHQu
CisgICAgICAgICogZmFzdC9kb20vRWxlbWVudC9nZXRCb3VuZGluZ0NsaWVudFJlY3QtZ2V0Q2xp
ZW50UmVjdHMtcmVsYXRpdmUtdG8tdmlld3BvcnQuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVz
dHMvZmFzdC9kb20vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LWdldENsaWVudFJlY3RzLXJlbGF0aXZl
LXRvLXZpZXdwb3J0Lmh0bWwuCisgICAgICAgICogZmFzdC9kb20vRWxlbWVudC9nZXRCb3VuZGlu
Z0NsaWVudFJlY3QuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0Qm91
bmRpbmdDbGllbnRSZWN0Lmh0bWwuCisgICAgICAgICogZmFzdC9kb20vRWxlbWVudC9nZXRDbGll
bnRSZWN0cy1leHBlY3RlZC50eHQ6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dl
dENsaWVudFJlY3RzLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBmYXN0L2RvbS9FbGVtZW50L2dl
dENsaWVudFJlY3RzLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldENs
aWVudFJlY3RzLmh0bWwuCisgICAgICAgICogZmFzdC9kb20vUmFuZ2UvZ2V0Qm91bmRpbmdDbGll
bnRSZWN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vUmFuZ2UvZ2V0
Qm91bmRpbmdDbGllbnRSZWN0LWdldENsaWVudFJlY3RzLXJlbGF0aXZlLXRvLXZpZXdwb3J0LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vUmFuZ2UvZ2V0Qm91bmRpbmdD
bGllbnRSZWN0LWdldENsaWVudFJlY3RzLXJlbGF0aXZlLXRvLXZpZXdwb3J0Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL1JhbmdlL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9SYW5nZS9nZXRDbGllbnRSZWN0cy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL1JhbmdlL2dldENsaWVudFJlY3RzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9nZXRCb3VuZGluZ0NsaWVudFJl
Y3QtZ2V0Q2xpZW50UmVjdHMtcmVsYXRpdmUtdG8tdmlld3BvcnQtZXhwZWN0ZWQudHh0OiBSZW1v
dmVkLgorICAgICAgICAqIGZhc3QvZG9tL2dldEJvdW5kaW5nQ2xpZW50UmVjdC1nZXRDbGllbnRS
ZWN0cy1yZWxhdGl2ZS10by12aWV3cG9ydC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL2dldENsaWVudFJlY3RzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9nZXRDbGllbnRSZWN0cy5odG1sOiBSZW1vdmVkLgorCiAyMDA5LTA5LTI3ICBKYWt1YiBX
aWVjem9yZWsgIDxmYXcyMTdAZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
IEhhdXNtYW5uLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0Qm91bmRpbmdDbGllbnRS
ZWN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRC
b3VuZGluZ0NsaWVudFJlY3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0ODc3OCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL2dldEJvdW5kaW5nQ2xpZW50UmVjdC1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsMjE3ICswLDAgQEAKLUNsaWVudCBib3VuZGluZyByZWN0IGZvciAjMQot
dGVzdFJlY3QudG9wIDQyCi10ZXN0UmVjdC5sZWZ0IDgKLXRlc3RSZWN0LndpZHRoIDMwMAotdGVz
dFJlY3QuaGVpZ2h0IDEwMAotdGVzdFJlY3QuYm90dG9tIDE0MgotdGVzdFJlY3QucmlnaHQgMzA4
Ci0KLVBBU1MgdGVzdFJlY3QudG9wIGlzIDQyCi1QQVNTIHRlc3RSZWN0LmxlZnQgaXMgOAotUEFT
UyB0ZXN0UmVjdC53aWR0aCBpcyAzMDAKLVBBU1MgdGVzdFJlY3QuaGVpZ2h0IGlzIDEwMAotUEFT
UyB0ZXN0UmVjdC5ib3R0b20gaXMgdGVzdFJlY3QudG9wICsgdGVzdFJlY3QuaGVpZ2h0Ci1QQVNT
IHRlc3RSZWN0LnJpZ2h0IGlzIHRlc3RSZWN0LmxlZnQgKyB0ZXN0UmVjdC53aWR0aAotCi1DbGll
bnQgYm91bmRpbmcgcmVjdCBmb3IgIzIKLXRlc3RSZWN0LnRvcCAxOTIKLXRlc3RSZWN0LmxlZnQg
OAotdGVzdFJlY3Qud2lkdGggMzIwCi10ZXN0UmVjdC5oZWlnaHQgMTIwCi10ZXN0UmVjdC5ib3R0
b20gMzEyCi10ZXN0UmVjdC5yaWdodCAzMjgKLQotUEFTUyB0ZXN0UmVjdC50b3AgaXMgMTkyCi1Q
QVNTIHRlc3RSZWN0LmxlZnQgaXMgOAotUEFTUyB0ZXN0UmVjdC53aWR0aCBpcyAzMjAKLVBBU1Mg
dGVzdFJlY3QuaGVpZ2h0IGlzIDEyMAotUEFTUyB0ZXN0UmVjdC5ib3R0b20gaXMgdGVzdFJlY3Qu
dG9wICsgdGVzdFJlY3QuaGVpZ2h0Ci1QQVNTIHRlc3RSZWN0LnJpZ2h0IGlzIHRlc3RSZWN0Lmxl
ZnQgKyB0ZXN0UmVjdC53aWR0aAotCi1DbGllbnQgYm91bmRpbmcgcmVjdCBmb3IgIzMKLXRlc3RS
ZWN0LnRvcCAzNjIKLXRlc3RSZWN0LmxlZnQgMTgKLXRlc3RSZWN0LndpZHRoIDMwMAotdGVzdFJl
Y3QuaGVpZ2h0IDEwMAotdGVzdFJlY3QuYm90dG9tIDQ2MgotdGVzdFJlY3QucmlnaHQgMzE4Ci0K
LVBBU1MgdGVzdFJlY3QudG9wIGlzIDM2MgotUEFTUyB0ZXN0UmVjdC5sZWZ0IGlzIDE4Ci1QQVNT
IHRlc3RSZWN0LndpZHRoIGlzIDMwMAotUEFTUyB0ZXN0UmVjdC5oZWlnaHQgaXMgMTAwCi1QQVNT
IHRlc3RSZWN0LmJvdHRvbSBpcyB0ZXN0UmVjdC50b3AgKyB0ZXN0UmVjdC5oZWlnaHQKLVBBU1Mg
dGVzdFJlY3QucmlnaHQgaXMgdGVzdFJlY3QubGVmdCArIHRlc3RSZWN0LndpZHRoCi0KLUNsaWVu
dCBib3VuZGluZyByZWN0IGZvciAjNAotdGVzdFJlY3QudG9wIDQ5MQotdGVzdFJlY3QubGVmdCAz
NwotdGVzdFJlY3Qud2lkdGggMTQyCi10ZXN0UmVjdC5oZWlnaHQgMTQyCi10ZXN0UmVjdC5ib3R0
b20gNjMzCi10ZXN0UmVjdC5yaWdodCAxNzkKLQotUEFTUyB0ZXN0UmVjdC50b3AgaXMgNDkxCi1Q
QVNTIHRlc3RSZWN0LmxlZnQgaXMgMzcKLVBBU1MgdGVzdFJlY3Qud2lkdGggaXMgMTQyCi1QQVNT
IHRlc3RSZWN0LmhlaWdodCBpcyAxNDIKLVBBU1MgdGVzdFJlY3QuYm90dG9tIGlzIHRlc3RSZWN0
LnRvcCArIHRlc3RSZWN0LmhlaWdodAotUEFTUyB0ZXN0UmVjdC5yaWdodCBpcyB0ZXN0UmVjdC5s
ZWZ0ICsgdGVzdFJlY3Qud2lkdGgKLQotQ2xpZW50IGJvdW5kaW5nIHJlY3QgZm9yICM1Ci10ZXN0
UmVjdC50b3AgNjYyCi10ZXN0UmVjdC5sZWZ0IDgKLXRlc3RSZWN0LndpZHRoIDMwMAotdGVzdFJl
Y3QuaGVpZ2h0IDIzNAotdGVzdFJlY3QuYm90dG9tIDg5NgotdGVzdFJlY3QucmlnaHQgMzA4Ci0K
LVBBU1MgdGVzdFJlY3QudG9wIGlzIDY2MgotUEFTUyB0ZXN0UmVjdC5sZWZ0IGlzIDgKLVBBU1Mg
dGVzdFJlY3Qud2lkdGggaXMgMzAwCi1QQVNTIHRlc3RSZWN0LmhlaWdodCBpcyAyMzQKLVBBU1Mg
dGVzdFJlY3QuYm90dG9tIGlzIHRlc3RSZWN0LnRvcCArIHRlc3RSZWN0LmhlaWdodAotUEFTUyB0
ZXN0UmVjdC5yaWdodCBpcyB0ZXN0UmVjdC5sZWZ0ICsgdGVzdFJlY3Qud2lkdGgKLQotQ2xpZW50
IGJvdW5kaW5nIHJlY3QgZm9yICM2Ci1Lbm93biBmYWlsdXJlLiBTa2lwcGluZy4KLQotQ2xpZW50
IGJvdW5kaW5nIHJlY3QgZm9yICM3Ci10ZXN0UmVjdC50b3AgMTIzMAotdGVzdFJlY3QubGVmdCA4
Ci10ZXN0UmVjdC53aWR0aCAyOTkKLXRlc3RSZWN0LmhlaWdodCAxODAKLXRlc3RSZWN0LmJvdHRv
bSAxNDEwCi10ZXN0UmVjdC5yaWdodCAzMDcKLQotUEFTUyB0ZXN0UmVjdC50b3AgaXMgMTIzMAot
UEFTUyB0ZXN0UmVjdC5sZWZ0IGlzIDgKLVBBU1MgdGVzdFJlY3Qud2lkdGggaXMgMjk5Ci1QQVNT
IHRlc3RSZWN0LmhlaWdodCBpcyAxODAKLVBBU1MgdGVzdFJlY3QuYm90dG9tIGlzIHRlc3RSZWN0
LnRvcCArIHRlc3RSZWN0LmhlaWdodAotUEFTUyB0ZXN0UmVjdC5yaWdodCBpcyB0ZXN0UmVjdC5s
ZWZ0ICsgdGVzdFJlY3Qud2lkdGgKLQotQ2xpZW50IGJvdW5kaW5nIHJlY3QgZm9yICM4Ci10ZXN0
UmVjdC50b3AgMTQ2MAotdGVzdFJlY3QubGVmdCA4Ci10ZXN0UmVjdC53aWR0aCAzMDAKLXRlc3RS
ZWN0LmhlaWdodCA0NgotdGVzdFJlY3QuYm90dG9tIDE1MDYKLXRlc3RSZWN0LnJpZ2h0IDMwOAot
Ci1QQVNTIHRlc3RSZWN0LnRvcCBpcyAxNDYwCi1QQVNTIHRlc3RSZWN0LmxlZnQgaXMgOAotUEFT
UyB0ZXN0UmVjdC53aWR0aCBpcyAzMDAKLVBBU1MgdGVzdFJlY3QuaGVpZ2h0IGlzIDQ2Ci1QQVNT
IHRlc3RSZWN0LmJvdHRvbSBpcyB0ZXN0UmVjdC50b3AgKyB0ZXN0UmVjdC5oZWlnaHQKLVBBU1Mg
dGVzdFJlY3QucmlnaHQgaXMgdGVzdFJlY3QubGVmdCArIHRlc3RSZWN0LndpZHRoCi0KLUNsaWVu
dCBib3VuZGluZyByZWN0IGZvciAjOQotdGVzdFJlY3QudG9wIDE1NTYKLXRlc3RSZWN0LmxlZnQg
OAotdGVzdFJlY3Qud2lkdGggMzAwCi10ZXN0UmVjdC5oZWlnaHQgNjQKLXRlc3RSZWN0LmJvdHRv
bSAxNjIwCi10ZXN0UmVjdC5yaWdodCAzMDgKLQotUEFTUyB0ZXN0UmVjdC50b3AgaXMgMTU1Ngot
UEFTUyB0ZXN0UmVjdC5sZWZ0IGlzIDgKLVBBU1MgdGVzdFJlY3Qud2lkdGggaXMgMzAwCi1QQVNT
IHRlc3RSZWN0LmhlaWdodCBpcyA2NAotUEFTUyB0ZXN0UmVjdC5ib3R0b20gaXMgdGVzdFJlY3Qu
dG9wICsgdGVzdFJlY3QuaGVpZ2h0Ci1QQVNTIHRlc3RSZWN0LnJpZ2h0IGlzIHRlc3RSZWN0Lmxl
ZnQgKyB0ZXN0UmVjdC53aWR0aAotCi1DbGllbnQgYm91bmRpbmcgcmVjdCBmb3IgIzEwCi10ZXN0
UmVjdC50b3AgMTY3MgotdGVzdFJlY3QubGVmdCA4Ci10ZXN0UmVjdC53aWR0aCAzMDAKLXRlc3RS
ZWN0LmhlaWdodCAyMAotdGVzdFJlY3QuYm90dG9tIDE2OTIKLXRlc3RSZWN0LnJpZ2h0IDMwOAot
Ci1QQVNTIHRlc3RSZWN0LnRvcCBpcyAxNjcyCi1QQVNTIHRlc3RSZWN0LmxlZnQgaXMgOAotUEFT
UyB0ZXN0UmVjdC53aWR0aCBpcyAzMDAKLVBBU1MgdGVzdFJlY3QuaGVpZ2h0IGlzIDIwCi1QQVNT
IHRlc3RSZWN0LmJvdHRvbSBpcyB0ZXN0UmVjdC50b3AgKyB0ZXN0UmVjdC5oZWlnaHQKLVBBU1Mg
dGVzdFJlY3QucmlnaHQgaXMgdGVzdFJlY3QubGVmdCArIHRlc3RSZWN0LndpZHRoCi0KLUNsaWVu
dCBib3VuZGluZyByZWN0IGZvciAjMTEKLXRlc3RSZWN0LnRvcCAxNzY4Ci10ZXN0UmVjdC5sZWZ0
IDEwCi10ZXN0UmVjdC53aWR0aCAxNDcKLXRlc3RSZWN0LmhlaWdodCAyMAotdGVzdFJlY3QuYm90
dG9tIDE3ODgKLXRlc3RSZWN0LnJpZ2h0IDE1NwotCi1QQVNTIHRlc3RSZWN0LnRvcCBpcyAxNzY4
Ci1QQVNTIHRlc3RSZWN0LmxlZnQgaXMgMTAKLVBBU1MgdGVzdFJlY3Qud2lkdGggaXMgMTQ3Ci1Q
QVNTIHRlc3RSZWN0LmhlaWdodCBpcyAyMAotUEFTUyB0ZXN0UmVjdC5ib3R0b20gaXMgdGVzdFJl
Y3QudG9wICsgdGVzdFJlY3QuaGVpZ2h0Ci1QQVNTIHRlc3RSZWN0LnJpZ2h0IGlzIHRlc3RSZWN0
LmxlZnQgKyB0ZXN0UmVjdC53aWR0aAotCi1DbGllbnQgYm91bmRpbmcgcmVjdCBmb3IgIzEyCi10
ZXN0UmVjdC50b3AgMTg2MgotdGVzdFJlY3QubGVmdCA4Ci10ZXN0UmVjdC53aWR0aCAxMDAKLXRl
c3RSZWN0LmhlaWdodCAxMDAKLXRlc3RSZWN0LmJvdHRvbSAxOTYyCi10ZXN0UmVjdC5yaWdodCAx
MDgKLQotUEFTUyB0ZXN0UmVjdC50b3AgaXMgMTg2MgotUEFTUyB0ZXN0UmVjdC5sZWZ0IGlzIDgK
LVBBU1MgdGVzdFJlY3Qud2lkdGggaXMgMTAwCi1QQVNTIHRlc3RSZWN0LmhlaWdodCBpcyAxMDAK
LVBBU1MgdGVzdFJlY3QuYm90dG9tIGlzIHRlc3RSZWN0LnRvcCArIHRlc3RSZWN0LmhlaWdodAot
UEFTUyB0ZXN0UmVjdC5yaWdodCBpcyB0ZXN0UmVjdC5sZWZ0ICsgdGVzdFJlY3Qud2lkdGgKLQot
Q2xpZW50IGJvdW5kaW5nIHJlY3QgZm9yICMxMwotdGVzdFJlY3QudG9wIDIwOTgKLXRlc3RSZWN0
LmxlZnQgOAotdGVzdFJlY3Qud2lkdGggMTgwCi10ZXN0UmVjdC5oZWlnaHQgMTgKLXRlc3RSZWN0
LmJvdHRvbSAyMTE2Ci10ZXN0UmVjdC5yaWdodCAxODgKLQotUEFTUyB0ZXN0UmVjdC50b3AgaXMg
MjA5OAotUEFTUyB0ZXN0UmVjdC5sZWZ0IGlzIDgKLVBBU1MgdGVzdFJlY3Qud2lkdGggaXMgMTgw
Ci1QQVNTIHRlc3RSZWN0LmhlaWdodCBpcyAxOAotUEFTUyB0ZXN0UmVjdC5ib3R0b20gaXMgdGVz
dFJlY3QudG9wICsgdGVzdFJlY3QuaGVpZ2h0Ci1QQVNTIHRlc3RSZWN0LnJpZ2h0IGlzIHRlc3RS
ZWN0LmxlZnQgKyB0ZXN0UmVjdC53aWR0aAotCi1DbGllbnQgYm91bmRpbmcgcmVjdCBmb3IgIzE0
Ci10ZXN0UmVjdC50b3AgMjE2NgotdGVzdFJlY3QubGVmdCA4Ci10ZXN0UmVjdC53aWR0aCAzMDAK
LXRlc3RSZWN0LmhlaWdodCAyMzYKLXRlc3RSZWN0LmJvdHRvbSAyNDAyCi10ZXN0UmVjdC5yaWdo
dCAzMDgKLQotUEFTUyB0ZXN0UmVjdC50b3AgaXMgMjE2NgotUEFTUyB0ZXN0UmVjdC5sZWZ0IGlz
IDgKLUZBSUwgdGVzdFJlY3Qud2lkdGggc2hvdWxkIGJlIDIwMC4gV2FzIDMwMC4KLVBBU1MgdGVz
dFJlY3QuaGVpZ2h0IGlzIDIzNgotUEFTUyB0ZXN0UmVjdC5ib3R0b20gaXMgdGVzdFJlY3QudG9w
ICsgdGVzdFJlY3QuaGVpZ2h0Ci1QQVNTIHRlc3RSZWN0LnJpZ2h0IGlzIHRlc3RSZWN0LmxlZnQg
KyB0ZXN0UmVjdC53aWR0aAotCi1DbGllbnQgYm91bmRpbmcgcmVjdCBmb3IgIzE1Ci10ZXN0UmVj
dC50b3AgMjQ1MgotdGVzdFJlY3QubGVmdCA4Ci10ZXN0UmVjdC53aWR0aCAwCi10ZXN0UmVjdC5o
ZWlnaHQgMAotdGVzdFJlY3QuYm90dG9tIDI0NTIKLXRlc3RSZWN0LnJpZ2h0IDgKLQotUEFTUyB0
ZXN0UmVjdC50b3AgaXMgMjQ1MgotUEFTUyB0ZXN0UmVjdC5sZWZ0IGlzIDgKLVBBU1MgdGVzdFJl
Y3Qud2lkdGggaXMgMAotUEFTUyB0ZXN0UmVjdC5oZWlnaHQgaXMgMAotUEFTUyB0ZXN0UmVjdC5i
b3R0b20gaXMgdGVzdFJlY3QudG9wICsgdGVzdFJlY3QuaGVpZ2h0Ci1QQVNTIHRlc3RSZWN0LnJp
Z2h0IGlzIHRlc3RSZWN0LmxlZnQgKyB0ZXN0UmVjdC53aWR0aAotCi1QQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LWdldENsaWVudFJlY3RzLXJlbGF0aXZlLXRvLXZp
ZXdwb3J0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9n
ZXRCb3VuZGluZ0NsaWVudFJlY3QtZ2V0Q2xpZW50UmVjdHMtcmVsYXRpdmUtdG8tdmlld3BvcnQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0ODc3OCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dl
dEJvdW5kaW5nQ2xpZW50UmVjdC1nZXRDbGllbnRSZWN0cy1yZWxhdGl2ZS10by12aWV3cG9ydC1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMCwwIEBACi1QQVNTIHVuU2Nyb2xs
ZWRCb3VuZGluZ0JveC50b3AgLSBzY3JvbGxlZERvd25Cb3VuZGluZ0JveC50b3AgaXMgNTAKLVBB
U1MgdW5TY3JvbGxlZEJvdW5kaW5nQm94ZXNbMF0udG9wIC0gc2Nyb2xsZWREb3duQm91bmRpbmdC
b3hlc1swXS50b3AgaXMgNTAKLVBBU1MgdW5TY3JvbGxlZEJvdW5kaW5nQm94LmxlZnQgLSBzY3Jv
bGxlZFJpZ2h0Qm91bmRpbmdCb3gubGVmdCBpcyA1MAotUEFTUyB1blNjcm9sbGVkQm91bmRpbmdC
b3hlc1swXS5sZWZ0IC0gc2Nyb2xsZWRSaWdodEJvdW5kaW5nQm94ZXNbMF0ubGVmdCBpcyA1MAot
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEJvdW5kaW5nQ2xpZW50UmVjdC1nZXRDbGllbnRSZWN0
cy1yZWxhdGl2ZS10by12aWV3cG9ydC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL2dldEJvdW5kaW5nQ2xpZW50UmVjdC1nZXRDbGllbnRSZWN0cy1yZWxhdGl2ZS10by12
aWV3cG9ydC5odG1sCShyZXZpc2lvbiA0ODc3OCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dl
dEJvdW5kaW5nQ2xpZW50UmVjdC1nZXRDbGllbnRSZWN0cy1yZWxhdGl2ZS10by12aWV3cG9ydC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU0ICswLDAgQEAKLTxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KLTxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHN0eWxlPgotICAg
ICNwdXNoZXIgewotICAgICAgICB3aWR0aDogMTAwMHB4OwotICAgICAgICBoZWlnaHQ6IDEwMDBw
eDsKLSAgICAgICAgb3V0bGluZTogMXB4IHNvbGlkIGJsYWNrOwotICAgIH0KLTwvc3R5bGU+Ci08
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxkaXYgaWQ9InRlc3RBcmVhIj4KLSAgICA8YnI+Ci0g
ICAgPHAgaWQ9InRlc3QiPlRlc3QgY29udGVudDwvcD4KLSAgICA8ZGl2IGlkPSJwdXNoZXIiPlRo
aXMgYm94IGlzIGhlcmUgdG8gY3JlYXRlIHNjcm9sbGJhcnMuPC9kaXY+Ci08L2Rpdj4KLTxzY3Jp
cHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotCi0gICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgndGVzdCcpOwotCi0gICAgLy8gR2V0IGJhc2UgbnVtYmVycwotICAg
IHZhciB1blNjcm9sbGVkQm91bmRpbmdCb3ggPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVj
dCgpOwotICAgIHZhciB1blNjcm9sbGVkQm91bmRpbmdCb3hlcyA9IGVsZW1lbnQuZ2V0Q2xpZW50
UmVjdHMoKTsKLQotICAgIC8vIFRlc3Qgc2Nyb2xsaW5nIGRvd24KLSAgICB3aW5kb3cuc2Nyb2xs
QnkoMCwgNTApOwotICAgIHZhciBzY3JvbGxlZERvd25Cb3VuZGluZ0JveCA9IGVsZW1lbnQuZ2V0
Qm91bmRpbmdDbGllbnRSZWN0KCk7Ci0gICAgdmFyIHNjcm9sbGVkRG93bkJvdW5kaW5nQm94ZXMg
PSBlbGVtZW50LmdldENsaWVudFJlY3RzKCk7Ci0KLSAgICAvLyBSZXNldAotICAgIHdpbmRvdy5z
Y3JvbGxUbygwLCAwKTsKLQotICAgIC8vIFRlc3Qgc2Nyb2xsaW5nIHJpZ2h0Ci0gICAgd2luZG93
LnNjcm9sbEJ5KDUwLCAwKTsKLSAgICB2YXIgc2Nyb2xsZWRSaWdodEJvdW5kaW5nQm94ID0gZWxl
bWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKLSAgICB2YXIgc2Nyb2xsZWRSaWdodEJvdW5k
aW5nQm94ZXMgPSBlbGVtZW50LmdldENsaWVudFJlY3RzKCk7Ci0KLSAgICAvLyBSZXNldAotICAg
IHdpbmRvdy5zY3JvbGxUbygwLCAwKTsKLQotICAgIHNob3VsZEJlKCJ1blNjcm9sbGVkQm91bmRp
bmdCb3gudG9wIC0gc2Nyb2xsZWREb3duQm91bmRpbmdCb3gudG9wIiwgIjUwIik7Ci0gICAgc2hv
dWxkQmUoInVuU2Nyb2xsZWRCb3VuZGluZ0JveGVzWzBdLnRvcCAtIHNjcm9sbGVkRG93bkJvdW5k
aW5nQm94ZXNbMF0udG9wIiwgIjUwIik7Ci0gICAgc2hvdWxkQmUoInVuU2Nyb2xsZWRCb3VuZGlu
Z0JveC5sZWZ0IC0gc2Nyb2xsZWRSaWdodEJvdW5kaW5nQm94LmxlZnQiLCAiNTAiKTsKLSAgICBz
aG91bGRCZSgidW5TY3JvbGxlZEJvdW5kaW5nQm94ZXNbMF0ubGVmdCAtIHNjcm9sbGVkUmlnaHRC
b3VuZGluZ0JveGVzWzBdLmxlZnQiLCAiNTAiKTsKLQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICAgICAgdmFyIGFyZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgndGVzdEFyZWEnKTsKLSAgICAgICAgYXJlYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGFyZWEp
OwotICAgIH0KLQotICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Ci08L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5odG1s
CShyZXZpc2lvbiA0ODc3OCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEJvdW5kaW5nQ2xp
ZW50UmVjdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE4MCArMCwwIEBACi08bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Ci08
c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxz
dHlsZT4KLSAgICAjYmFzZSB7Ci0gICAgICAgIHdpZHRoOiAzMDBweDsKLSAgICAgICAgaGVpZ2h0
OiAxMDBweDsKLSAgICB9Ci0KLSAgICAjYm9yZGVyIHsKLSAgICAgICAgYm9yZGVyOiAxMHB4IHNv
bGlkICM5OTk7Ci0gICAgICAgIHdpZHRoOiAzMDBweDsKLSAgICAgICAgaGVpZ2h0OiAxMDBweDsK
LSAgICB9Ci0KLSAgICAjbWFyZ2luIHsKLSAgICAgICAgbWFyZ2luOiAxMHB4OwotICAgICAgICB3
aWR0aDogMzAwcHg7Ci0gICAgICAgIGhlaWdodDogMTAwcHg7Ci0gICAgfQotCi0gICAgI3RyYW5z
Zm9ybSB7Ci0gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDUwcHgpIHJvdGF0
ZSg0NWRlZyk7Ci0gICAgICAgIHdpZHRoOiAxMDBweDsKLSAgICAgICAgaGVpZ2h0OiAxMDBweDsK
LSAgICB9Ci0KLSAgICAjY29sdW1ucyB7Ci0gICAgICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiAz
OwotICAgICAgICB3aWR0aDogMzAwcHg7Ci0gICAgfQotCi0gICAgI2lubGluZSB7Ci0gICAgICAg
IGRpc3BsYXk6IGlubGluZTsKLSAgICB9Ci0KLSAgICAjb3V0ZXIgewotICAgICAgICB3aWR0aDog
MTAwcHg7Ci0gICAgICAgIGhlaWdodDogMTAwcHg7Ci0gICAgfQotCi0gICAgI2lubmVyIHsKLSAg
ICAgICAgd2lkdGg6IDIwMHB4OwotICAgICAgICBoZWlnaHQ6IDIwMHB4OwotICAgIH0KLQotICAg
IHRhYmxlIHsKLSAgICAgICAgd2lkdGg6IDMwMHB4OwotICAgIH0KLQotICAgIGltZyB7Ci0gICAg
ICAgIHdpZHRoOiAxMDBweDsKLSAgICAgICAgaGVpZ2h0OiAxMDBweDsKLSAgICB9Ci0KLSAgICAu
dGVzdEJveCB7Ci0gICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOwotICAgIH0KLQotICAg
ICN0ZXN0QXJlYSB7Ci0gICAgICAgIHdpZHRoOiAzMDBweDsKLSAgICB9Ci0KLSAgICAuYmJveCB7
Ci0gICAgICAgIHBvc2l0aW9uOmFic29sdXRlOwotICAgICAgICBvdXRsaW5lOiA1cHggc29saWQg
cmdiYSgyNTUsIDAsIDAsIC43NSk7Ci0gICAgfQotCi0gICAgI2NvbnNvbGUgewotICAgICAgICBw
b3NpdGlvbjphYnNvbHV0ZTsKLSAgICAgICAgbGVmdDogNTAwcHg7Ci0gICAgfQotPC9zdHlsZT4K
LQotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08ZGl2IGlkPSJ0ZXN0QXJlYSI+Ci0KLTxwPjEu
IEJhc2U8L3A+ICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iYmFzZSIgY2xhc3M9InRlc3RCb3gi
PjwvZGl2PgotPHA+Mi4gQm9yZGVyPC9wPiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJib3JkZXIi
IGNsYXNzPSJ0ZXN0Qm94Ij48L2Rpdj4KLTxwPjMuIE1hcmdpbjwvcD4gICAgICAgICAgICAgICAg
PGRpdiBpZD0ibWFyZ2luIiBjbGFzcz0idGVzdEJveCI+PC9kaXY+Ci08cD40LiBUcmFuc2Zvcm08
L3A+ICAgICAgICAgICAgIDxkaXYgaWQ9InRyYW5zZm9ybSIgY2xhc3M9InRlc3RCb3giPjwvZGl2
PgotPHA+NS4gQ29sdW1uPC9wPiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJjb2x1bW5zIiBjbGFz
cz0idGVzdEJveCI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBp
c2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBl
dCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0
cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNv
bW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBp
biB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJp
YXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3Vu
dCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1
bS48L2Rpdj4KLTxwPjYuIEluIGEgY29sdW1uPC9wPiAgICAgICAgICAgPGRpdiBpZD0iY29sdW1u
cyI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVs
aXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUg
bWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJj
aXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29u
c2VxdWF0LjxzcGFuIGlkPSJpbi1jb2x1bW5zIiBjbGFzcz0idGVzdEJveCBrbm93bkZhaWx1cmUi
PkluIGNvbHVtbnM8L3NwYW4+IER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0
IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBh
cmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBz
dW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJv
cnVtLjwvZGl2PgotPHA+Ny4gSW5saW5lPC9wPiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpbmxp
bmUiIGNsYXNzPSJ0ZXN0Qm94Ij5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0
dXIgYWRpcGlzaWNpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQg
bGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBx
dWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAg
ZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhl
bmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51
bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lk
ZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVz
dCBsYWJvcnVtLjwvZGl2PgotPHA+OC4gVGFibGU8L3A+ICAgICAgICAgICAgICAgICA8dGFibGUg
Y2xhc3M9InRlc3RCb3giPjx0cj48dGQ+dGFibGUgZGF0YTwvdGQ+PHRkPnRhYmxlIGRhdGE8L3Rk
PjwvdHI+PHRyPjx0ZD50YWJsZSBkYXRhPC90ZD48dGQ+dGFibGUgZGF0YTwvdGQ+PC90cj48L3Rh
YmxlPgotPHA+OS4gVGFibGUgd2l0aCBDYXB0aW9uPC9wPiAgICA8dGFibGUgY2xhc3M9InRlc3RC
b3giPjxjYXB0aW9uPmNhcHRpb248L2NhcHRpb24+PHRyPjx0ZD50YWJsZSBkYXRhPC90ZD48dGQ+
dGFibGUgZGF0YTwvdGQ+PC90cj48dHI+PHRkPnRhYmxlIGRhdGE8L3RkPjx0ZD50YWJsZSBkYXRh
PC90ZD48L3RyPjwvdGFibGU+Ci08cD4xMC4gVGFibGUgUm93PC9wPiAgICAgICAgICAgIDx0YWJs
ZT48dHIgY2xhc3M9InRlc3RCb3giPjx0ZD50YWJsZSBkYXRhPC90ZD48dGQ+dGFibGUgZGF0YTwv
dGQ+PC90cj48dHI+PHRkPnRhYmxlIGRhdGE8L3RkPjx0ZD50YWJsZSBkYXRhPC90ZD48L3RyPjwv
dGFibGU+Ci08cD4xMS4gVGFibGUgQ2VsbDwvcD4gICAgICAgICAgIDx0YWJsZT48dHI+PHRkIGNs
YXNzPSJ0ZXN0Qm94Ij50YWJsZSBkYXRhPC90ZD48dGQ+dGFibGUgZGF0YTwvdGQ+PC90cj48dHI+
PHRkPnRhYmxlIGRhdGE8L3RkPjx0ZD50YWJsZSBkYXRhPC90ZD48L3RyPjwvdGFibGU+Ci08cD4x
Mi4gQmlnIGJsb2NrIGluIGxpdHRsZTwvcD4gIDxkaXYgaWQ9Im91dGVyIiBjbGFzcz0idGVzdEJv
eCI+PGRpdiBpZD0iaW5uZXIiPjwvZGl2PjwvZGl2PgotPHA+MTMuIFJlcGxhY2VkIGluIGlubGlu
ZTwvcD4gICA8c3BhbiBjbGFzcz0idGVzdEJveCI+TG9yZW08aW1nPmlwc3VtPC9zcGFuPgotPHA+
MTQuIEJsb2NrIGluIGlubGluZTwvcD4gICAgICA8c3BhbiBjbGFzcz0idGVzdEJveCI+TG9yZW08
ZGl2IGlkPSJpbm5lciI+PC9kaXY+aXBzdW08L3NwYW4+Ci08cD4xNS4gRmxvYXQgaW4gaW5saW5l
PC9wPiAgICAgIDxzcGFuIGNsYXNzPSJ0ZXN0Qm94Ij48aW1nIHN0eWxlPSJmbG9hdDpyaWdodCI+
PC9zcGFuPgotCi08L2Rpdj4KLQotPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0K
LSAgICB2YXIgdGVzdFJlY3Q7Ci0gICAgZnVuY3Rpb24gdGVzdENsaWVudFJlY3QodG9UZXN0LCBl
eHBlY3RlZFJlY3QpCi0gICAgewotICAgICAgICB0ZXN0UmVjdCA9IHRvVGVzdDsKLSAgICAgICAg
Ci0gICAgICAgIGRlYnVnKCJ0ZXN0UmVjdC50b3AgIiArIHRlc3RSZWN0LnRvcCk7Ci0gICAgICAg
IGRlYnVnKCJ0ZXN0UmVjdC5sZWZ0ICIgKyB0ZXN0UmVjdC5sZWZ0KTsKLSAgICAgICAgZGVidWco
InRlc3RSZWN0LndpZHRoICIgKyB0ZXN0UmVjdC53aWR0aCk7Ci0gICAgICAgIGRlYnVnKCJ0ZXN0
UmVjdC5oZWlnaHQgIiArIHRlc3RSZWN0LmhlaWdodCk7Ci0gICAgICAgIGRlYnVnKCJ0ZXN0UmVj
dC5ib3R0b20gIiArIHRlc3RSZWN0LmJvdHRvbSk7Ci0gICAgICAgIGRlYnVnKCJ0ZXN0UmVjdC5y
aWdodCAiICsgdGVzdFJlY3QucmlnaHQpOwotICAgICAgICBkZWJ1ZygiIik7Ci0KLSAgICAgICAg
c2hvdWxkQmUoInRlc3RSZWN0LnRvcCIsIFN0cmluZyhleHBlY3RlZFJlY3QudG9wKSk7Ci0gICAg
ICAgIHNob3VsZEJlKCJ0ZXN0UmVjdC5sZWZ0IiwgU3RyaW5nKGV4cGVjdGVkUmVjdC5sZWZ0KSk7
Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXN0UmVjdC53aWR0aCIsIFN0cmluZyhleHBlY3RlZFJlY3Qu
d2lkdGgpKTsKLSAgICAgICAgc2hvdWxkQmUoInRlc3RSZWN0LmhlaWdodCIsIFN0cmluZyhleHBl
Y3RlZFJlY3QuaGVpZ2h0KSk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXN0UmVjdC5ib3R0b20iLCAi
dGVzdFJlY3QudG9wICsgdGVzdFJlY3QuaGVpZ2h0Iik7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXN0
UmVjdC5yaWdodCIsICJ0ZXN0UmVjdC5sZWZ0ICsgdGVzdFJlY3Qud2lkdGgiKTsKLSAgICAgICAg
ZGVidWcoIiIpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGFkZEJCb3hPdmVyQ2xpZW50UmVjdChy
ZWN0KQotICAgIHsKLSAgICAgICAgdmFyIGJib3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKLSAgICAgICAgYmJveC5jbGFzc05hbWUgPSAiYmJveCI7Ci0gICAgICAgIHZhciBzdHls
ZSA9ICIiOwotICAgICAgICBzdHlsZSArPSAibGVmdDogIiAgICsgcmVjdC5sZWZ0ICsgInB4OyI7
Ci0gICAgICAgIHN0eWxlICs9ICJ0b3A6ICIgICAgKyByZWN0LnRvcCArICJweDsiOwotICAgICAg
ICBzdHlsZSArPSAid2lkdGg6ICIgICsgKHJlY3QucmlnaHQgLSByZWN0LmxlZnQpICsgInB4OyI7
Ci0gICAgICAgIHN0eWxlICs9ICJoZWlnaHQ6ICIgKyAocmVjdC5ib3R0b20gLSByZWN0LnRvcCkg
KyAicHg7IjsKLSAgICAgICAgYmJveC5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgc3R5bGUpOwotICAg
ICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoYmJveCk7Ci0gICAgfQot
Ci0gICAgdmFyIGZhaWwgPSB1bmRlZmluZWQ7Ci0KLSAgICB2YXIgZXhwZWN0ZWRSZXN1bHRzID0g
WwotICAgICAgICAvKjEqLyAgeyB0b3A6IDQyLCBsZWZ0OiA4LCB3aWR0aDogMzAwLCBoZWlnaHQ6
IDEwMCB9LAotICAgICAgICAvKjIqLyAgeyB0b3A6IDE5MiwgbGVmdDogOCwgd2lkdGg6IDMyMCwg
aGVpZ2h0OiAxMjAgfSwKLSAgICAgICAgLyozKi8gIHsgdG9wOiAzNjIsIGxlZnQ6IDE4LCB3aWR0
aDogMzAwLCBoZWlnaHQ6IDEwMCB9LAotICAgICAgICAvKjQqLyAgeyB0b3A6IDQ5MSwgbGVmdDog
MzcsIHdpZHRoOiAxNDIsIGhlaWdodDogMTQyIH0sCi0gICAgICAgIC8qNSovICB7IHRvcDogNjYy
LCBsZWZ0OiA4LCB3aWR0aDogMzAwLCBoZWlnaHQ6IDIzNCB9LAotICAgICAgICAvKjYqLyAgeyB0
b3A6IGZhaWwsIGxlZnQ6IGZhaWwsIHdpZHRoOiBmYWlsLCBoZWlnaHQ6IGZhaWwgfSwKLSAgICAg
ICAgLyo3Ki8gIHsgdG9wOiAxMjMwLCBsZWZ0OiA4LCB3aWR0aDogMjk5LCBoZWlnaHQ6IDE4MCB9
LAotICAgICAgICAvKjgqLyAgeyB0b3A6IDE0NjAsIGxlZnQ6IDgsIHdpZHRoOiAzMDAsIGhlaWdo
dDogNDYgfSwKLSAgICAgICAgLyo5Ki8gIHsgdG9wOiAxNTU2LCBsZWZ0OiA4LCB3aWR0aDogMzAw
LCBoZWlnaHQ6IDY0IH0sCi0gICAgICAgIC8qMTAqLyB7IHRvcDogMTY3MiwgbGVmdDogOCwgd2lk
dGg6IDMwMCwgaGVpZ2h0OiAyMCB9LAotICAgICAgICAvKjExKi8geyB0b3A6IDE3NjgsIGxlZnQ6
IDEwLCB3aWR0aDogMTQ3LCBoZWlnaHQ6IDIwIH0sCi0gICAgICAgIC8qMTIqLyB7IHRvcDogMTg2
MiwgbGVmdDogOCwgd2lkdGg6IDEwMCwgaGVpZ2h0OiAxMDAgfSwKLSAgICAgICAgLyoxMyovIHsg
dG9wOiAyMDk4LCBsZWZ0OiA4LCB3aWR0aDogMTgwLCBoZWlnaHQ6IDE4IH0sCi0gICAgICAgIC8q
MTQqLyB7IHRvcDogMjE2NiwgbGVmdDogOCwgd2lkdGg6IDIwMCwgaGVpZ2h0OiAyMzYgfSwKLSAg
ICAgICAgLyoxNSovIHsgdG9wOiAyNDUyLCBsZWZ0OiA4LCB3aWR0aDogMCwgaGVpZ2h0OiAwIH0K
LSAgICBdOwotCi0gICAgZnVuY3Rpb24gdGVzdChudW1iZXIsIGVsZW1lbnQpCi0gICAgewotICAg
ICAgICBkZWJ1ZygiQ2xpZW50IGJvdW5kaW5nIHJlY3QgZm9yICMiICsgbnVtYmVyKTsKLQotICAg
ICAgICBpZiAoZWxlbWVudC5jbGFzc05hbWUubWF0Y2goImtub3duRmFpbHVyZSIpKSB7Ci0gICAg
ICAgICAgICBkZWJ1ZygiS25vd24gZmFpbHVyZS4gU2tpcHBpbmcuIik7Ci0gICAgICAgICAgICBk
ZWJ1ZygiIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIg
Ym91bmRpbmdSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKLSAgICAgICAg
YWRkQkJveE92ZXJDbGllbnRSZWN0KGJvdW5kaW5nUmVjdCk7Ci0gICAgICAgIHRlc3RDbGllbnRS
ZWN0KGJvdW5kaW5nUmVjdCwgZXhwZWN0ZWRSZXN1bHRzW251bWJlciAtIDFdKTsKLSAgICB9Ci0K
LSAgICB2YXIgdGVzdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJ0ZXN0Qm94
Iik7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0cy5sZW5ndGg7ICsraSkKLSAgICAgICAg
dGVzdChpICsgMSwgdGVzdHNbaV0pOwotCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgICAgICB2YXIgYXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0
QXJlYScpOwotICAgICAgICBhcmVhLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYXJlYSk7Ci0gICAg
fQotCi0gICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKLTwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vZ2V0Q2xpZW50UmVjdHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldENsaWVudFJlY3RzLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gNDg3NzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRDbGllbnRSZWN0cy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNDkgKzAsMCBAQAotQ2xpZW50IGJvdW5kaW5n
IHJlY3RzIGZvciAjMQotUEFTUyB0ZXN0UmVjdHMubGVuZ3RoIGlzIDEKLQotQ2xpZW50IGJvdW5k
aW5nIHJlY3RzIGZvciAjMgotUEFTUyB0ZXN0UmVjdHMubGVuZ3RoIGlzIDEKLQotQ2xpZW50IGJv
dW5kaW5nIHJlY3RzIGZvciAjMwotUEFTUyB0ZXN0UmVjdHMubGVuZ3RoIGlzIDEKLQotQ2xpZW50
IGJvdW5kaW5nIHJlY3RzIGZvciAjNAotUEFTUyB0ZXN0UmVjdHMubGVuZ3RoIGlzIDEKLQotQ2xp
ZW50IGJvdW5kaW5nIHJlY3RzIGZvciAjNQotUEFTUyB0ZXN0UmVjdHMubGVuZ3RoIGlzIDEKLQot
Q2xpZW50IGJvdW5kaW5nIHJlY3RzIGZvciAjNgotS25vd24gZmFpbHVyZS4gU2tpcHBpbmcuCi0K
LUNsaWVudCBib3VuZGluZyByZWN0cyBmb3IgIzcKLVBBU1MgdGVzdFJlY3RzLmxlbmd0aCBpcyAx
MAotCi1DbGllbnQgYm91bmRpbmcgcmVjdHMgZm9yICM4Ci1QQVNTIHRlc3RSZWN0cy5sZW5ndGgg
aXMgMQotCi1DbGllbnQgYm91bmRpbmcgcmVjdHMgZm9yICM5Ci1GQUlMIHRlc3RSZWN0cy5sZW5n
dGggc2hvdWxkIGJlIDIuIFdhcyAxLgotCi1DbGllbnQgYm91bmRpbmcgcmVjdHMgZm9yICMxMAot
UEFTUyB0ZXN0UmVjdHMubGVuZ3RoIGlzIDEKLQotQ2xpZW50IGJvdW5kaW5nIHJlY3RzIGZvciAj
MTEKLVBBU1MgdGVzdFJlY3RzLmxlbmd0aCBpcyAxCi0KLUNsaWVudCBib3VuZGluZyByZWN0cyBm
b3IgIzEyCi1QQVNTIHRlc3RSZWN0cy5sZW5ndGggaXMgMQotCi1DbGllbnQgYm91bmRpbmcgcmVj
dHMgZm9yICMxMwotUEFTUyB0ZXN0UmVjdHMubGVuZ3RoIGlzIDEKLQotQ2xpZW50IGJvdW5kaW5n
IHJlY3RzIGZvciAjMTQKLVBBU1MgdGVzdFJlY3RzLmxlbmd0aCBpcyAzCi0KLUNsaWVudCBib3Vu
ZGluZyByZWN0cyBmb3IgIzE1Ci1QQVNTIHRlc3RSZWN0cy5sZW5ndGggaXMgMQotCi1QQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vZ2V0Q2xpZW50UmVjdHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9nZXRDbGllbnRSZWN0cy5odG1sCShyZXZpc2lvbiA0ODc3OCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL2dldENsaWVudFJlY3RzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTY5ICswLDAgQEAKLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KLTxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHN0eWxlPgotICAgICNiYXNlIHsKLSAgICAgICAgd2lk
dGg6IDMwMHB4OwotICAgICAgICBoZWlnaHQ6IDEwMHB4OwotICAgIH0KLQotICAgICNib3JkZXIg
ewotICAgICAgICBib3JkZXI6IDEwcHggc29saWQgIzk5OTsKLSAgICAgICAgd2lkdGg6IDMwMHB4
OwotICAgICAgICBoZWlnaHQ6IDEwMHB4OwotICAgIH0KLQotICAgICNtYXJnaW4gewotICAgICAg
ICBtYXJnaW46IDEwcHg7Ci0gICAgICAgIHdpZHRoOiAzMDBweDsKLSAgICAgICAgaGVpZ2h0OiAx
MDBweDsKLSAgICB9Ci0KLSAgICAjdHJhbnNmb3JtIHsKLSAgICAgICAgLXdlYmtpdC10cmFuc2Zv
cm06IHRyYW5zbGF0ZVgoNTBweCkgcm90YXRlKDQ1ZGVnKTsKLSAgICAgICAgd2lkdGg6IDEwMHB4
OwotICAgICAgICBoZWlnaHQ6IDEwMHB4OwotICAgIH0KLQotICAgICNjb2x1bW5zIHsKLSAgICAg
ICAgLXdlYmtpdC1jb2x1bW4tY291bnQ6IDM7Ci0gICAgICAgIHdpZHRoOiAzMDBweDsKLSAgICB9
Ci0KLSAgICAjaW5saW5lIHsKLSAgICAgICAgZGlzcGxheTogaW5saW5lOwotICAgIH0KLQotICAg
ICNvdXRlciB7Ci0gICAgICAgIHdpZHRoOiAxMDBweDsKLSAgICAgICAgaGVpZ2h0OiAxMDBweDsK
LSAgICB9Ci0KLSAgICAjaW5uZXIgewotICAgICAgICB3aWR0aDogMjAwcHg7Ci0gICAgICAgIGhl
aWdodDogMjAwcHg7Ci0gICAgfQotCi0gICAgdGFibGUgewotICAgICAgICB3aWR0aDogMzAwcHg7
Ci0gICAgfQotCi0gICAgaW1nIHsKLSAgICAgICAgd2lkdGg6IDEwMHB4OwotICAgICAgICBoZWln
aHQ6IDEwMHB4OwotICAgIH0KLQotICAgIC50ZXN0Qm94IHsKLSAgICAgICAgYmFja2dyb3VuZC1j
b2xvcjogZ3JlZW47Ci0gICAgfQotCi0gICAgI3Rlc3RBcmVhIHsKLSAgICAgICAgd2lkdGg6IDMw
MHB4OwotICAgIH0KLQotICAgIC5iYm94IHsKLSAgICAgICAgcG9zaXRpb246YWJzb2x1dGU7Ci0g
ICAgICAgIG91dGxpbmU6IDVweCBzb2xpZCByZ2JhKDI1NSwgMCwgMCwgLjc1KTsKLSAgICB9Ci0K
LSAgICAjY29uc29sZSB7Ci0gICAgICAgIHBvc2l0aW9uOmFic29sdXRlOwotICAgICAgICBsZWZ0
OiA1MDBweDsKLSAgICB9Ci08L3N0eWxlPgotCi08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxk
aXYgaWQ9InRlc3RBcmVhIj4KLQotPHA+MS4gQmFzZTwvcD4gICAgICAgICAgICAgICAgICA8ZGl2
IGlkPSJiYXNlIiBjbGFzcz0idGVzdEJveCI+PC9kaXY+Ci08cD4yLiBCb3JkZXI8L3A+ICAgICAg
ICAgICAgICAgIDxkaXYgaWQ9ImJvcmRlciIgY2xhc3M9InRlc3RCb3giPjwvZGl2PgotPHA+My4g
TWFyZ2luPC9wPiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJtYXJnaW4iIGNsYXNzPSJ0ZXN0Qm94
Ij48L2Rpdj4KLTxwPjQuIFRyYW5zZm9ybTwvcD4gICAgICAgICAgICAgPGRpdiBpZD0idHJhbnNm
b3JtIiBjbGFzcz0idGVzdEJveCI+PC9kaXY+Ci08cD41LiBDb2x1bW48L3A+ICAgICAgICAgICAg
ICAgIDxkaXYgaWQ9ImNvbHVtbnMiIGNsYXNzPSJ0ZXN0Qm94Ij5Mb3JlbSBpcHN1bSBkb2xvciBz
aXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVt
cG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0g
YWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3Jp
cyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVy
ZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBk
b2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBj
dXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50
IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLjwvZGl2PgotPHA+Ni4gSW4gYSBjb2x1bW48L3A+
ICAgICAgICAgICA8ZGl2IGlkPSJjb2x1bW5zIj5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwg
Y29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lk
aWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0g
dmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0
IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuPHNwYW4gaWQ9ImluLWNvbHVtbnMiIGNs
YXNzPSJ0ZXN0Qm94IGtub3duRmFpbHVyZSI+SW4gY29sdW1uczwvc3Bhbj4gRHVpcyBhdXRlIGly
dXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVt
IGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0
IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1
bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0uPC9kaXY+Ci08cD43LiBJbmxpbmU8L3A+ICAg
ICAgICAgICAgICAgIDxkaXYgaWQ9ImlubGluZSIgY2xhc3M9InRlc3RCb3giPkxvcmVtIGlwc3Vt
IGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LCBzZWQgZG8gZWl1
c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4g
VXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1j
byBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gRHVpcyBh
dXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2Ug
Y2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50IG9j
Y2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3VscGEgcXVpIG9mZmljaWEg
ZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0uPC9kaXY+Ci08cD44LiBUYWJsZTwv
cD4gICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGVzdEJveCI+PHRyPjx0ZD50YWJsZSBk
YXRhPC90ZD48dGQ+dGFibGUgZGF0YTwvdGQ+PC90cj48dHI+PHRkPnRhYmxlIGRhdGE8L3RkPjx0
ZD50YWJsZSBkYXRhPC90ZD48L3RyPjwvdGFibGU+Ci08cD45LiBUYWJsZSB3aXRoIENhcHRpb248
L3A+ICAgIDx0YWJsZSBjbGFzcz0idGVzdEJveCI+PGNhcHRpb24+Y2FwdGlvbjwvY2FwdGlvbj48
dHI+PHRkPnRhYmxlIGRhdGE8L3RkPjx0ZD50YWJsZSBkYXRhPC90ZD48L3RyPjx0cj48dGQ+dGFi
bGUgZGF0YTwvdGQ+PHRkPnRhYmxlIGRhdGE8L3RkPjwvdHI+PC90YWJsZT4KLTxwPjEwLiBUYWJs
ZSBSb3c8L3A+ICAgICAgICAgICAgPHRhYmxlPjx0ciBjbGFzcz0idGVzdEJveCI+PHRkPnRhYmxl
IGRhdGE8L3RkPjx0ZD50YWJsZSBkYXRhPC90ZD48L3RyPjx0cj48dGQ+dGFibGUgZGF0YTwvdGQ+
PHRkPnRhYmxlIGRhdGE8L3RkPjwvdHI+PC90YWJsZT4KLTxwPjExLiBUYWJsZSBDZWxsPC9wPiAg
ICAgICAgICAgPHRhYmxlPjx0cj48dGQgY2xhc3M9InRlc3RCb3giPnRhYmxlIGRhdGE8L3RkPjx0
ZD50YWJsZSBkYXRhPC90ZD48L3RyPjx0cj48dGQ+dGFibGUgZGF0YTwvdGQ+PHRkPnRhYmxlIGRh
dGE8L3RkPjwvdHI+PC90YWJsZT4KLTxwPjEyLiBCaWcgYmxvY2sgaW4gbGl0dGxlPC9wPiAgPGRp
diBpZD0ib3V0ZXIiIGNsYXNzPSJ0ZXN0Qm94Ij48ZGl2IGlkPSJpbm5lciI+PC9kaXY+PC9kaXY+
Ci08cD4xMy4gUmVwbGFjZWQgaW4gaW5saW5lPC9wPiAgIDxzcGFuIGNsYXNzPSJ0ZXN0Qm94Ij5M
b3JlbTxpbWc+aXBzdW08L3NwYW4+Ci08cD4xNC4gQmxvY2sgaW4gaW5saW5lPC9wPiAgICAgIDxz
cGFuIGNsYXNzPSJ0ZXN0Qm94Ij5Mb3JlbTxkaXYgaWQ9ImlubmVyIj48L2Rpdj5pcHN1bTwvc3Bh
bj4KLTxwPjE1LiBGbG9hdCBpbiBpbmxpbmU8L3A+ICAgICAgPHNwYW4gY2xhc3M9InRlc3RCb3gi
PjxpbWcgc3R5bGU9ImZsb2F0OnJpZ2h0Ij48L3NwYW4+Ci0KLTwvZGl2PgotPHNjcmlwdD4KLSAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0KLSAgICB2YXIgdGVzdFJlY3RzOwotICAgIGZ1bmN0aW9u
IHRlc3RDbGllbnRSZWN0cyhyZWN0cywgZXhwZWN0ZWROdW1iZXJPZlJlY3RzKQotICAgIHsKLSAg
ICAgICAgdGVzdFJlY3RzID0gcmVjdHM7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXN0UmVjdHMubGVu
Z3RoIiwgU3RyaW5nKGV4cGVjdGVkTnVtYmVyT2ZSZWN0cykpOwotICAgICAgICBkZWJ1ZygiIik7
Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gYWRkQkJveE92ZXJDbGllbnRSZWN0KHJlY3QpCi0gICAg
ewotICAgICAgICB2YXIgYmJveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAg
ICAgICBiYm94LmNsYXNzTmFtZSA9ICJiYm94IjsKLSAgICAgICAgdmFyIHN0eWxlID0gIiI7Ci0g
ICAgICAgIHN0eWxlICs9ICJsZWZ0OiAiICAgKyByZWN0LmxlZnQgKyAicHg7IjsKLSAgICAgICAg
c3R5bGUgKz0gInRvcDogIiAgICArIHJlY3QudG9wICsgInB4OyI7Ci0gICAgICAgIHN0eWxlICs9
ICJ3aWR0aDogIiAgKyAocmVjdC5yaWdodCAtIHJlY3QubGVmdCkgKyAicHg7IjsKLSAgICAgICAg
c3R5bGUgKz0gImhlaWdodDogIiArIChyZWN0LmJvdHRvbSAtIHJlY3QudG9wKSArICJweDsiOwot
ICAgICAgICBiYm94LnNldEF0dHJpYnV0ZSgic3R5bGUiLCBzdHlsZSk7Ci0gICAgICAgIGRvY3Vt
ZW50LmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChiYm94KTsKLSAgICB9Ci0KLSAgICBmdW5j
dGlvbiBhZGRCQm94T3ZlckNsaWVudFJlY3RzKHJlY3RzKQotICAgIHsKLSAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCByZWN0cy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGFkZEJCb3hPdmVy
Q2xpZW50UmVjdChyZWN0c1tpXSk7Ci0gICAgfQotCi0gICAgdmFyIGV4cGVjdGVkUmVzdWx0cyA9
IFsKLSAgICAgICAgMSwKLSAgICAgICAgMSwKLSAgICAgICAgMSwKLSAgICAgICAgMSwKLSAgICAg
ICAgMSwKLSAgICAgICAgMSwKLSAgICAgICAgMTAsCi0gICAgICAgIDEsCi0gICAgICAgIDIsCi0g
ICAgICAgIDEsCi0gICAgICAgIDEsCi0gICAgICAgIDEsCi0gICAgICAgIDEsCi0gICAgICAgIDMs
Ci0gICAgICAgIDEKLSAgICBdOwotCi0gICAgZnVuY3Rpb24gdGVzdChudW1iZXIsIGVsZW1lbnQp
Ci0gICAgewotICAgICAgICBkZWJ1ZygiQ2xpZW50IGJvdW5kaW5nIHJlY3RzIGZvciAjIiArIG51
bWJlcik7Ci0KLSAgICAgICAgaWYgKGVsZW1lbnQuY2xhc3NOYW1lLm1hdGNoKCJrbm93bkZhaWx1
cmUiKSkgewotICAgICAgICAgICAgZGVidWcoIktub3duIGZhaWx1cmUuIFNraXBwaW5nLiIpOwot
ICAgICAgICAgICAgZGVidWcoIiIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K
LSAgICAgICAgdmFyIGJvdW5kaW5nUmVjdHMgPSBlbGVtZW50LmdldENsaWVudFJlY3RzKCk7Ci0g
ICAgICAgIGFkZEJCb3hPdmVyQ2xpZW50UmVjdHMoYm91bmRpbmdSZWN0cyk7Ci0gICAgICAgIHRl
c3RDbGllbnRSZWN0cyhib3VuZGluZ1JlY3RzLCBleHBlY3RlZFJlc3VsdHNbbnVtYmVyIC0gMV0p
OwotICAgIH0KLQotICAgIHZhciB0ZXN0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05h
bWUoInRlc3RCb3giKTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RzLmxlbmd0aDsgKytp
KQotICAgICAgICB0ZXN0KGkgKyAxLCB0ZXN0c1tpXSk7Ci0KLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIHZhciBhcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Rlc3RBcmVhJyk7Ci0gICAgICAgIGFyZWEucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChh
cmVhKTsKLSAgICB9Ci0KLSAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwotPC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L2dldEJvdW5kaW5nQ2xpZW50UmVj
dC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVu
dC9nZXRCb3VuZGluZ0NsaWVudFJlY3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0ODc3OCkJKGZy
b20gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LWV4cGVjdGVkLnR4
dDo0ODc3OCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvZ2V0Qm91bmRpbmdDbGll
bnRSZWN0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIxNyBAQAorQ2xp
ZW50IGJvdW5kaW5nIHJlY3QgZm9yICMxCit0ZXN0UmVjdC50b3AgNDIKK3Rlc3RSZWN0LmxlZnQg
OAordGVzdFJlY3Qud2lkdGggMzAwCit0ZXN0UmVjdC5oZWlnaHQgMTAwCit0ZXN0UmVjdC5ib3R0
b20gMTQyCit0ZXN0UmVjdC5yaWdodCAzMDgKKworUEFTUyB0ZXN0UmVjdC50b3AgaXMgNDIKK1BB
U1MgdGVzdFJlY3QubGVmdCBpcyA4CitQQVNTIHRlc3RSZWN0LndpZHRoIGlzIDMwMAorUEFTUyB0
ZXN0UmVjdC5oZWlnaHQgaXMgMTAwCitQQVNTIHRlc3RSZWN0LmJvdHRvbSBpcyB0ZXN0UmVjdC50
b3AgKyB0ZXN0UmVjdC5oZWlnaHQKK1BBU1MgdGVzdFJlY3QucmlnaHQgaXMgdGVzdFJlY3QubGVm
dCArIHRlc3RSZWN0LndpZHRoCisKK0NsaWVudCBib3VuZGluZyByZWN0IGZvciAjMgordGVzdFJl
Y3QudG9wIDE5MgordGVzdFJlY3QubGVmdCA4Cit0ZXN0UmVjdC53aWR0aCAzMjAKK3Rlc3RSZWN0
LmhlaWdodCAxMjAKK3Rlc3RSZWN0LmJvdHRvbSAzMTIKK3Rlc3RSZWN0LnJpZ2h0IDMyOAorCitQ
QVNTIHRlc3RSZWN0LnRvcCBpcyAxOTIKK1BBU1MgdGVzdFJlY3QubGVmdCBpcyA4CitQQVNTIHRl
c3RSZWN0LndpZHRoIGlzIDMyMAorUEFTUyB0ZXN0UmVjdC5oZWlnaHQgaXMgMTIwCitQQVNTIHRl
c3RSZWN0LmJvdHRvbSBpcyB0ZXN0UmVjdC50b3AgKyB0ZXN0UmVjdC5oZWlnaHQKK1BBU1MgdGVz
dFJlY3QucmlnaHQgaXMgdGVzdFJlY3QubGVmdCArIHRlc3RSZWN0LndpZHRoCisKK0NsaWVudCBi
b3VuZGluZyByZWN0IGZvciAjMwordGVzdFJlY3QudG9wIDM2MgordGVzdFJlY3QubGVmdCAxOAor
dGVzdFJlY3Qud2lkdGggMzAwCit0ZXN0UmVjdC5oZWlnaHQgMTAwCit0ZXN0UmVjdC5ib3R0b20g
NDYyCit0ZXN0UmVjdC5yaWdodCAzMTgKKworUEFTUyB0ZXN0UmVjdC50b3AgaXMgMzYyCitQQVNT
IHRlc3RSZWN0LmxlZnQgaXMgMTgKK1BBU1MgdGVzdFJlY3Qud2lkdGggaXMgMzAwCitQQVNTIHRl
c3RSZWN0LmhlaWdodCBpcyAxMDAKK1BBU1MgdGVzdFJlY3QuYm90dG9tIGlzIHRlc3RSZWN0LnRv
cCArIHRlc3RSZWN0LmhlaWdodAorUEFTUyB0ZXN0UmVjdC5yaWdodCBpcyB0ZXN0UmVjdC5sZWZ0
ICsgdGVzdFJlY3Qud2lkdGgKKworQ2xpZW50IGJvdW5kaW5nIHJlY3QgZm9yICM0Cit0ZXN0UmVj
dC50b3AgNDkxCit0ZXN0UmVjdC5sZWZ0IDM3Cit0ZXN0UmVjdC53aWR0aCAxNDIKK3Rlc3RSZWN0
LmhlaWdodCAxNDIKK3Rlc3RSZWN0LmJvdHRvbSA2MzMKK3Rlc3RSZWN0LnJpZ2h0IDE3OQorCitQ
QVNTIHRlc3RSZWN0LnRvcCBpcyA0OTEKK1BBU1MgdGVzdFJlY3QubGVmdCBpcyAzNworUEFTUyB0
ZXN0UmVjdC53aWR0aCBpcyAxNDIKK1BBU1MgdGVzdFJlY3QuaGVpZ2h0IGlzIDE0MgorUEFTUyB0
ZXN0UmVjdC5ib3R0b20gaXMgdGVzdFJlY3QudG9wICsgdGVzdFJlY3QuaGVpZ2h0CitQQVNTIHRl
c3RSZWN0LnJpZ2h0IGlzIHRlc3RSZWN0LmxlZnQgKyB0ZXN0UmVjdC53aWR0aAorCitDbGllbnQg
Ym91bmRpbmcgcmVjdCBmb3IgIzUKK3Rlc3RSZWN0LnRvcCA2NjIKK3Rlc3RSZWN0LmxlZnQgOAor
dGVzdFJlY3Qud2lkdGggMzAwCit0ZXN0UmVjdC5oZWlnaHQgMjM0Cit0ZXN0UmVjdC5ib3R0b20g
ODk2Cit0ZXN0UmVjdC5yaWdodCAzMDgKKworUEFTUyB0ZXN0UmVjdC50b3AgaXMgNjYyCitQQVNT
IHRlc3RSZWN0LmxlZnQgaXMgOAorUEFTUyB0ZXN0UmVjdC53aWR0aCBpcyAzMDAKK1BBU1MgdGVz
dFJlY3QuaGVpZ2h0IGlzIDIzNAorUEFTUyB0ZXN0UmVjdC5ib3R0b20gaXMgdGVzdFJlY3QudG9w
ICsgdGVzdFJlY3QuaGVpZ2h0CitQQVNTIHRlc3RSZWN0LnJpZ2h0IGlzIHRlc3RSZWN0LmxlZnQg
KyB0ZXN0UmVjdC53aWR0aAorCitDbGllbnQgYm91bmRpbmcgcmVjdCBmb3IgIzYKK0tub3duIGZh
aWx1cmUuIFNraXBwaW5nLgorCitDbGllbnQgYm91bmRpbmcgcmVjdCBmb3IgIzcKK3Rlc3RSZWN0
LnRvcCAxMjMwCit0ZXN0UmVjdC5sZWZ0IDgKK3Rlc3RSZWN0LndpZHRoIDI5OQordGVzdFJlY3Qu
aGVpZ2h0IDE4MAordGVzdFJlY3QuYm90dG9tIDE0MTAKK3Rlc3RSZWN0LnJpZ2h0IDMwNworCitQ
QVNTIHRlc3RSZWN0LnRvcCBpcyAxMjMwCitQQVNTIHRlc3RSZWN0LmxlZnQgaXMgOAorUEFTUyB0
ZXN0UmVjdC53aWR0aCBpcyAyOTkKK1BBU1MgdGVzdFJlY3QuaGVpZ2h0IGlzIDE4MAorUEFTUyB0
ZXN0UmVjdC5ib3R0b20gaXMgdGVzdFJlY3QudG9wICsgdGVzdFJlY3QuaGVpZ2h0CitQQVNTIHRl
c3RSZWN0LnJpZ2h0IGlzIHRlc3RSZWN0LmxlZnQgKyB0ZXN0UmVjdC53aWR0aAorCitDbGllbnQg
Ym91bmRpbmcgcmVjdCBmb3IgIzgKK3Rlc3RSZWN0LnRvcCAxNDYwCit0ZXN0UmVjdC5sZWZ0IDgK
K3Rlc3RSZWN0LndpZHRoIDMwMAordGVzdFJlY3QuaGVpZ2h0IDQ2Cit0ZXN0UmVjdC5ib3R0b20g
MTUwNgordGVzdFJlY3QucmlnaHQgMzA4CisKK1BBU1MgdGVzdFJlY3QudG9wIGlzIDE0NjAKK1BB
U1MgdGVzdFJlY3QubGVmdCBpcyA4CitQQVNTIHRlc3RSZWN0LndpZHRoIGlzIDMwMAorUEFTUyB0
ZXN0UmVjdC5oZWlnaHQgaXMgNDYKK1BBU1MgdGVzdFJlY3QuYm90dG9tIGlzIHRlc3RSZWN0LnRv
cCArIHRlc3RSZWN0LmhlaWdodAorUEFTUyB0ZXN0UmVjdC5yaWdodCBpcyB0ZXN0UmVjdC5sZWZ0
ICsgdGVzdFJlY3Qud2lkdGgKKworQ2xpZW50IGJvdW5kaW5nIHJlY3QgZm9yICM5Cit0ZXN0UmVj
dC50b3AgMTU1NgordGVzdFJlY3QubGVmdCA4Cit0ZXN0UmVjdC53aWR0aCAzMDAKK3Rlc3RSZWN0
LmhlaWdodCA2NAordGVzdFJlY3QuYm90dG9tIDE2MjAKK3Rlc3RSZWN0LnJpZ2h0IDMwOAorCitQ
QVNTIHRlc3RSZWN0LnRvcCBpcyAxNTU2CitQQVNTIHRlc3RSZWN0LmxlZnQgaXMgOAorUEFTUyB0
ZXN0UmVjdC53aWR0aCBpcyAzMDAKK1BBU1MgdGVzdFJlY3QuaGVpZ2h0IGlzIDY0CitQQVNTIHRl
c3RSZWN0LmJvdHRvbSBpcyB0ZXN0UmVjdC50b3AgKyB0ZXN0UmVjdC5oZWlnaHQKK1BBU1MgdGVz
dFJlY3QucmlnaHQgaXMgdGVzdFJlY3QubGVmdCArIHRlc3RSZWN0LndpZHRoCisKK0NsaWVudCBi
b3VuZGluZyByZWN0IGZvciAjMTAKK3Rlc3RSZWN0LnRvcCAxNjcyCit0ZXN0UmVjdC5sZWZ0IDgK
K3Rlc3RSZWN0LndpZHRoIDMwMAordGVzdFJlY3QuaGVpZ2h0IDIwCit0ZXN0UmVjdC5ib3R0b20g
MTY5MgordGVzdFJlY3QucmlnaHQgMzA4CisKK1BBU1MgdGVzdFJlY3QudG9wIGlzIDE2NzIKK1BB
U1MgdGVzdFJlY3QubGVmdCBpcyA4CitQQVNTIHRlc3RSZWN0LndpZHRoIGlzIDMwMAorUEFTUyB0
ZXN0UmVjdC5oZWlnaHQgaXMgMjAKK1BBU1MgdGVzdFJlY3QuYm90dG9tIGlzIHRlc3RSZWN0LnRv
cCArIHRlc3RSZWN0LmhlaWdodAorUEFTUyB0ZXN0UmVjdC5yaWdodCBpcyB0ZXN0UmVjdC5sZWZ0
ICsgdGVzdFJlY3Qud2lkdGgKKworQ2xpZW50IGJvdW5kaW5nIHJlY3QgZm9yICMxMQordGVzdFJl
Y3QudG9wIDE3NjgKK3Rlc3RSZWN0LmxlZnQgMTAKK3Rlc3RSZWN0LndpZHRoIDE0NwordGVzdFJl
Y3QuaGVpZ2h0IDIwCit0ZXN0UmVjdC5ib3R0b20gMTc4OAordGVzdFJlY3QucmlnaHQgMTU3CisK
K1BBU1MgdGVzdFJlY3QudG9wIGlzIDE3NjgKK1BBU1MgdGVzdFJlY3QubGVmdCBpcyAxMAorUEFT
UyB0ZXN0UmVjdC53aWR0aCBpcyAxNDcKK1BBU1MgdGVzdFJlY3QuaGVpZ2h0IGlzIDIwCitQQVNT
IHRlc3RSZWN0LmJvdHRvbSBpcyB0ZXN0UmVjdC50b3AgKyB0ZXN0UmVjdC5oZWlnaHQKK1BBU1Mg
dGVzdFJlY3QucmlnaHQgaXMgdGVzdFJlY3QubGVmdCArIHRlc3RSZWN0LndpZHRoCisKK0NsaWVu
dCBib3VuZGluZyByZWN0IGZvciAjMTIKK3Rlc3RSZWN0LnRvcCAxODYyCit0ZXN0UmVjdC5sZWZ0
IDgKK3Rlc3RSZWN0LndpZHRoIDEwMAordGVzdFJlY3QuaGVpZ2h0IDEwMAordGVzdFJlY3QuYm90
dG9tIDE5NjIKK3Rlc3RSZWN0LnJpZ2h0IDEwOAorCitQQVNTIHRlc3RSZWN0LnRvcCBpcyAxODYy
CitQQVNTIHRlc3RSZWN0LmxlZnQgaXMgOAorUEFTUyB0ZXN0UmVjdC53aWR0aCBpcyAxMDAKK1BB
U1MgdGVzdFJlY3QuaGVpZ2h0IGlzIDEwMAorUEFTUyB0ZXN0UmVjdC5ib3R0b20gaXMgdGVzdFJl
Y3QudG9wICsgdGVzdFJlY3QuaGVpZ2h0CitQQVNTIHRlc3RSZWN0LnJpZ2h0IGlzIHRlc3RSZWN0
LmxlZnQgKyB0ZXN0UmVjdC53aWR0aAorCitDbGllbnQgYm91bmRpbmcgcmVjdCBmb3IgIzEzCit0
ZXN0UmVjdC50b3AgMjA5OAordGVzdFJlY3QubGVmdCA4Cit0ZXN0UmVjdC53aWR0aCAxODAKK3Rl
c3RSZWN0LmhlaWdodCAxOAordGVzdFJlY3QuYm90dG9tIDIxMTYKK3Rlc3RSZWN0LnJpZ2h0IDE4
OAorCitQQVNTIHRlc3RSZWN0LnRvcCBpcyAyMDk4CitQQVNTIHRlc3RSZWN0LmxlZnQgaXMgOAor
UEFTUyB0ZXN0UmVjdC53aWR0aCBpcyAxODAKK1BBU1MgdGVzdFJlY3QuaGVpZ2h0IGlzIDE4CitQ
QVNTIHRlc3RSZWN0LmJvdHRvbSBpcyB0ZXN0UmVjdC50b3AgKyB0ZXN0UmVjdC5oZWlnaHQKK1BB
U1MgdGVzdFJlY3QucmlnaHQgaXMgdGVzdFJlY3QubGVmdCArIHRlc3RSZWN0LndpZHRoCisKK0Ns
aWVudCBib3VuZGluZyByZWN0IGZvciAjMTQKK3Rlc3RSZWN0LnRvcCAyMTY2Cit0ZXN0UmVjdC5s
ZWZ0IDgKK3Rlc3RSZWN0LndpZHRoIDMwMAordGVzdFJlY3QuaGVpZ2h0IDIzNgordGVzdFJlY3Qu
Ym90dG9tIDI0MDIKK3Rlc3RSZWN0LnJpZ2h0IDMwOAorCitQQVNTIHRlc3RSZWN0LnRvcCBpcyAy
MTY2CitQQVNTIHRlc3RSZWN0LmxlZnQgaXMgOAorRkFJTCB0ZXN0UmVjdC53aWR0aCBzaG91bGQg
YmUgMjAwLiBXYXMgMzAwLgorUEFTUyB0ZXN0UmVjdC5oZWlnaHQgaXMgMjM2CitQQVNTIHRlc3RS
ZWN0LmJvdHRvbSBpcyB0ZXN0UmVjdC50b3AgKyB0ZXN0UmVjdC5oZWlnaHQKK1BBU1MgdGVzdFJl
Y3QucmlnaHQgaXMgdGVzdFJlY3QubGVmdCArIHRlc3RSZWN0LndpZHRoCisKK0NsaWVudCBib3Vu
ZGluZyByZWN0IGZvciAjMTUKK3Rlc3RSZWN0LnRvcCAyNDUyCit0ZXN0UmVjdC5sZWZ0IDgKK3Rl
c3RSZWN0LndpZHRoIDAKK3Rlc3RSZWN0LmhlaWdodCAwCit0ZXN0UmVjdC5ib3R0b20gMjQ1Mgor
dGVzdFJlY3QucmlnaHQgOAorCitQQVNTIHRlc3RSZWN0LnRvcCBpcyAyNDUyCitQQVNTIHRlc3RS
ZWN0LmxlZnQgaXMgOAorUEFTUyB0ZXN0UmVjdC53aWR0aCBpcyAwCitQQVNTIHRlc3RSZWN0Lmhl
aWdodCBpcyAwCitQQVNTIHRlc3RSZWN0LmJvdHRvbSBpcyB0ZXN0UmVjdC50b3AgKyB0ZXN0UmVj
dC5oZWlnaHQKK1BBU1MgdGVzdFJlY3QucmlnaHQgaXMgdGVzdFJlY3QubGVmdCArIHRlc3RSZWN0
LndpZHRoCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L2dldEJvdW5kaW5nQ2xpZW50
UmVjdC1nZXRDbGllbnRSZWN0cy1yZWxhdGl2ZS10by12aWV3cG9ydC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9nZXRCb3VuZGluZ0NsaWVu
dFJlY3QtZ2V0Q2xpZW50UmVjdHMtcmVsYXRpdmUtdG8tdmlld3BvcnQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiA0ODc3OCkJKGZyb20gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0Qm91bmRpbmdDbGll
bnRSZWN0LWdldENsaWVudFJlY3RzLXJlbGF0aXZlLXRvLXZpZXdwb3J0LWV4cGVjdGVkLnR4dDo0
ODc3OCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvZ2V0Qm91bmRpbmdDbGllbnRS
ZWN0LWdldENsaWVudFJlY3RzLXJlbGF0aXZlLXRvLXZpZXdwb3J0LWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDggQEAKK1BBU1MgdW5TY3JvbGxlZEJvdW5kaW5nQm94LnRv
cCAtIHNjcm9sbGVkRG93bkJvdW5kaW5nQm94LnRvcCBpcyA1MAorUEFTUyB1blNjcm9sbGVkQm91
bmRpbmdCb3hlc1swXS50b3AgLSBzY3JvbGxlZERvd25Cb3VuZGluZ0JveGVzWzBdLnRvcCBpcyA1
MAorUEFTUyB1blNjcm9sbGVkQm91bmRpbmdCb3gubGVmdCAtIHNjcm9sbGVkUmlnaHRCb3VuZGlu
Z0JveC5sZWZ0IGlzIDUwCitQQVNTIHVuU2Nyb2xsZWRCb3VuZGluZ0JveGVzWzBdLmxlZnQgLSBz
Y3JvbGxlZFJpZ2h0Qm91bmRpbmdCb3hlc1swXS5sZWZ0IGlzIDUwCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vRWxlbWVudC9nZXRCb3VuZGluZ0NsaWVudFJlY3QtZ2V0Q2xpZW50UmVjdHMtcmVsYXRp
dmUtdG8tdmlld3BvcnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9F
bGVtZW50L2dldEJvdW5kaW5nQ2xpZW50UmVjdC1nZXRDbGllbnRSZWN0cy1yZWxhdGl2ZS10by12
aWV3cG9ydC5odG1sCShyZXZpc2lvbiA0ODc3OCkJKGZyb20gTGF5b3V0VGVzdHMvZmFzdC9kb20v
Z2V0Qm91bmRpbmdDbGllbnRSZWN0LWdldENsaWVudFJlY3RzLXJlbGF0aXZlLXRvLXZpZXdwb3J0
Lmh0bWw6NDg3NzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L2dldEJvdW5kaW5n
Q2xpZW50UmVjdC1nZXRDbGllbnRSZWN0cy1yZWxhdGl2ZS10by12aWV3cG9ydC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNTQgQEAKKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAgICNwdXNoZXIg
eworICAgICAgICB3aWR0aDogMTAwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMDBweDsKKyAgICAg
ICAgb3V0bGluZTogMXB4IHNvbGlkIGJsYWNrOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxkaXYgaWQ9InRlc3RBcmVhIj4KKyAgICA8YnI+CisgICAgPHAgaWQ9
InRlc3QiPlRlc3QgY29udGVudDwvcD4KKyAgICA8ZGl2IGlkPSJwdXNoZXIiPlRoaXMgYm94IGlz
IGhlcmUgdG8gY3JlYXRlIHNjcm9sbGJhcnMuPC9kaXY+Cis8L2Rpdj4KKzxzY3JpcHQ+CisgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndGVzdCcpOworCisgICAgLy8gR2V0IGJhc2UgbnVtYmVycworICAgIHZhciB1blNj
cm9sbGVkQm91bmRpbmdCb3ggPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAg
IHZhciB1blNjcm9sbGVkQm91bmRpbmdCb3hlcyA9IGVsZW1lbnQuZ2V0Q2xpZW50UmVjdHMoKTsK
KworICAgIC8vIFRlc3Qgc2Nyb2xsaW5nIGRvd24KKyAgICB3aW5kb3cuc2Nyb2xsQnkoMCwgNTAp
OworICAgIHZhciBzY3JvbGxlZERvd25Cb3VuZGluZ0JveCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdD
bGllbnRSZWN0KCk7CisgICAgdmFyIHNjcm9sbGVkRG93bkJvdW5kaW5nQm94ZXMgPSBlbGVtZW50
LmdldENsaWVudFJlY3RzKCk7CisKKyAgICAvLyBSZXNldAorICAgIHdpbmRvdy5zY3JvbGxUbygw
LCAwKTsKKworICAgIC8vIFRlc3Qgc2Nyb2xsaW5nIHJpZ2h0CisgICAgd2luZG93LnNjcm9sbEJ5
KDUwLCAwKTsKKyAgICB2YXIgc2Nyb2xsZWRSaWdodEJvdW5kaW5nQm94ID0gZWxlbWVudC5nZXRC
b3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICB2YXIgc2Nyb2xsZWRSaWdodEJvdW5kaW5nQm94ZXMg
PSBlbGVtZW50LmdldENsaWVudFJlY3RzKCk7CisKKyAgICAvLyBSZXNldAorICAgIHdpbmRvdy5z
Y3JvbGxUbygwLCAwKTsKKworICAgIHNob3VsZEJlKCJ1blNjcm9sbGVkQm91bmRpbmdCb3gudG9w
IC0gc2Nyb2xsZWREb3duQm91bmRpbmdCb3gudG9wIiwgIjUwIik7CisgICAgc2hvdWxkQmUoInVu
U2Nyb2xsZWRCb3VuZGluZ0JveGVzWzBdLnRvcCAtIHNjcm9sbGVkRG93bkJvdW5kaW5nQm94ZXNb
MF0udG9wIiwgIjUwIik7CisgICAgc2hvdWxkQmUoInVuU2Nyb2xsZWRCb3VuZGluZ0JveC5sZWZ0
IC0gc2Nyb2xsZWRSaWdodEJvdW5kaW5nQm94LmxlZnQiLCAiNTAiKTsKKyAgICBzaG91bGRCZSgi
dW5TY3JvbGxlZEJvdW5kaW5nQm94ZXNbMF0ubGVmdCAtIHNjcm9sbGVkUmlnaHRCb3VuZGluZ0Jv
eGVzWzBdLmxlZnQiLCAiNTAiKTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKKyAgICAgICAgdmFyIGFyZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdEFy
ZWEnKTsKKyAgICAgICAgYXJlYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGFyZWEpOworICAgIH0K
KworICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvZ2V0Qm91bmRpbmdDbGllbnRSZWN0LWdldENsaWVudFJl
Y3RzLXJlbGF0aXZlLXRvLXZpZXdwb3J0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRWxlbWVudC9nZXRCb3VuZGluZ0NsaWVudFJlY3QtZ2V0Q2xpZW50UmVjdHMtcmVs
YXRpdmUtdG8tdmlld3BvcnQuaHRtbAkocmV2aXNpb24gNDg3NzgpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9FbGVtZW50L2dldEJvdW5kaW5nQ2xpZW50UmVjdC1nZXRDbGllbnRSZWN0cy1yZWxh
dGl2ZS10by12aWV3cG9ydC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAotPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KIDxzdHlsZT4KICAgICAjcHVzaGVyIHsKICAgICAgICAgd2lkdGg6
IDEwMDBweDsKQEAgLTUxLDQgKzUxLDQgQEAKIAogICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CiA8L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvZ2V0
Qm91bmRpbmdDbGllbnRSZWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vRWxlbWVudC9nZXRCb3VuZGluZ0NsaWVudFJlY3QuaHRtbAkocmV2aXNpb24gNDg3NzgpCShm
cm9tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5odG1sOjQ4Nzc4
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9nZXRCb3VuZGluZ0NsaWVudFJlY3Qu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4MCBAQAorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBz
cmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Cisg
ICAgI2Jhc2UgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7
CisgICAgfQorCisgICAgI2JvcmRlciB7CisgICAgICAgIGJvcmRlcjogMTBweCBzb2xpZCAjOTk5
OworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQor
CisgICAgI21hcmdpbiB7CisgICAgICAgIG1hcmdpbjogMTBweDsKKyAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKworICAgICN0cmFuc2Zvcm0gewor
ICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCg1MHB4KSByb3RhdGUoNDVkZWcp
OworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQor
CisgICAgI2NvbHVtbnMgeworICAgICAgICAtd2Via2l0LWNvbHVtbi1jb3VudDogMzsKKyAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgIH0KKworICAgICNpbmxpbmUgeworICAgICAgICBkaXNwbGF5
OiBpbmxpbmU7CisgICAgfQorCisgICAgI291dGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4Owor
ICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKworICAgICNpbm5lciB7CisgICAgICAgIHdp
ZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisKKyAgICB0YWJsZSB7
CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICB9CisKKyAgICBpbWcgeworICAgICAgICB3aWR0
aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorCisgICAgLnRlc3RCb3gg
eworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICB9CisKKyAgICAjdGVzdEFy
ZWEgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgfQorCisgICAgLmJib3ggeworICAgICAg
ICBwb3NpdGlvbjphYnNvbHV0ZTsKKyAgICAgICAgb3V0bGluZTogNXB4IHNvbGlkIHJnYmEoMjU1
LCAwLCAwLCAuNzUpOworICAgIH0KKworICAgICNjb25zb2xlIHsKKyAgICAgICAgcG9zaXRpb246
YWJzb2x1dGU7CisgICAgICAgIGxlZnQ6IDUwMHB4OworICAgIH0KKzwvc3R5bGU+CisKKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPGRpdiBpZD0idGVzdEFyZWEiPgorCis8cD4xLiBCYXNlPC9w
PiAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImJhc2UiIGNsYXNzPSJ0ZXN0Qm94Ij48L2Rpdj4K
KzxwPjIuIEJvcmRlcjwvcD4gICAgICAgICAgICAgICAgPGRpdiBpZD0iYm9yZGVyIiBjbGFzcz0i
dGVzdEJveCI+PC9kaXY+Cis8cD4zLiBNYXJnaW48L3A+ICAgICAgICAgICAgICAgIDxkaXYgaWQ9
Im1hcmdpbiIgY2xhc3M9InRlc3RCb3giPjwvZGl2PgorPHA+NC4gVHJhbnNmb3JtPC9wPiAgICAg
ICAgICAgICA8ZGl2IGlkPSJ0cmFuc2Zvcm0iIGNsYXNzPSJ0ZXN0Qm94Ij48L2Rpdj4KKzxwPjUu
IENvbHVtbjwvcD4gICAgICAgICAgICAgICAgPGRpdiBpZD0iY29sdW1ucyIgY2xhc3M9InRlc3RC
b3giPkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBl
bGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3Jl
IG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVy
Y2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNv
bnNlcXVhdC4gRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0
YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4
Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3Vs
cGEgcXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0uPC9kaXY+
Cis8cD42LiBJbiBhIGNvbHVtbjwvcD4gICAgICAgICAgIDxkaXYgaWQ9ImNvbHVtbnMiPkxvcmVt
IGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LCBzZWQg
ZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFs
aXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24g
dWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC48
c3BhbiBpZD0iaW4tY29sdW1ucyIgY2xhc3M9InRlc3RCb3gga25vd25GYWlsdXJlIj5JbiBjb2x1
bW5zPC9zcGFuPiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1
cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4g
RXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBj
dWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS48L2Rp
dj4KKzxwPjcuIElubGluZTwvcD4gICAgICAgICAgICAgICAgPGRpdiBpZD0iaW5saW5lIiBjbGFz
cz0idGVzdEJveCI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBp
c2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBl
dCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0
cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNv
bW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBp
biB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJp
YXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3Vu
dCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1
bS48L2Rpdj4KKzxwPjguIFRhYmxlPC9wPiAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0
ZXN0Qm94Ij48dHI+PHRkPnRhYmxlIGRhdGE8L3RkPjx0ZD50YWJsZSBkYXRhPC90ZD48L3RyPjx0
cj48dGQ+dGFibGUgZGF0YTwvdGQ+PHRkPnRhYmxlIGRhdGE8L3RkPjwvdHI+PC90YWJsZT4KKzxw
PjkuIFRhYmxlIHdpdGggQ2FwdGlvbjwvcD4gICAgPHRhYmxlIGNsYXNzPSJ0ZXN0Qm94Ij48Y2Fw
dGlvbj5jYXB0aW9uPC9jYXB0aW9uPjx0cj48dGQ+dGFibGUgZGF0YTwvdGQ+PHRkPnRhYmxlIGRh
dGE8L3RkPjwvdHI+PHRyPjx0ZD50YWJsZSBkYXRhPC90ZD48dGQ+dGFibGUgZGF0YTwvdGQ+PC90
cj48L3RhYmxlPgorPHA+MTAuIFRhYmxlIFJvdzwvcD4gICAgICAgICAgICA8dGFibGU+PHRyIGNs
YXNzPSJ0ZXN0Qm94Ij48dGQ+dGFibGUgZGF0YTwvdGQ+PHRkPnRhYmxlIGRhdGE8L3RkPjwvdHI+
PHRyPjx0ZD50YWJsZSBkYXRhPC90ZD48dGQ+dGFibGUgZGF0YTwvdGQ+PC90cj48L3RhYmxlPgor
PHA+MTEuIFRhYmxlIENlbGw8L3A+ICAgICAgICAgICA8dGFibGU+PHRyPjx0ZCBjbGFzcz0idGVz
dEJveCI+dGFibGUgZGF0YTwvdGQ+PHRkPnRhYmxlIGRhdGE8L3RkPjwvdHI+PHRyPjx0ZD50YWJs
ZSBkYXRhPC90ZD48dGQ+dGFibGUgZGF0YTwvdGQ+PC90cj48L3RhYmxlPgorPHA+MTIuIEJpZyBi
bG9jayBpbiBsaXR0bGU8L3A+ICA8ZGl2IGlkPSJvdXRlciIgY2xhc3M9InRlc3RCb3giPjxkaXYg
aWQ9ImlubmVyIj48L2Rpdj48L2Rpdj4KKzxwPjEzLiBSZXBsYWNlZCBpbiBpbmxpbmU8L3A+ICAg
PHNwYW4gY2xhc3M9InRlc3RCb3giPkxvcmVtPGltZz5pcHN1bTwvc3Bhbj4KKzxwPjE0LiBCbG9j
ayBpbiBpbmxpbmU8L3A+ICAgICAgPHNwYW4gY2xhc3M9InRlc3RCb3giPkxvcmVtPGRpdiBpZD0i
aW5uZXIiPjwvZGl2Pmlwc3VtPC9zcGFuPgorPHA+MTUuIEZsb2F0IGluIGlubGluZTwvcD4gICAg
ICA8c3BhbiBjbGFzcz0idGVzdEJveCI+PGltZyBzdHlsZT0iZmxvYXQ6cmlnaHQiPjwvc3Bhbj4K
KworPC9kaXY+CisKKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgdmFy
IHRlc3RSZWN0OworICAgIGZ1bmN0aW9uIHRlc3RDbGllbnRSZWN0KHRvVGVzdCwgZXhwZWN0ZWRS
ZWN0KQorICAgIHsKKyAgICAgICAgdGVzdFJlY3QgPSB0b1Rlc3Q7CisgICAgICAgIAorICAgICAg
ICBkZWJ1ZygidGVzdFJlY3QudG9wICIgKyB0ZXN0UmVjdC50b3ApOworICAgICAgICBkZWJ1Zygi
dGVzdFJlY3QubGVmdCAiICsgdGVzdFJlY3QubGVmdCk7CisgICAgICAgIGRlYnVnKCJ0ZXN0UmVj
dC53aWR0aCAiICsgdGVzdFJlY3Qud2lkdGgpOworICAgICAgICBkZWJ1ZygidGVzdFJlY3QuaGVp
Z2h0ICIgKyB0ZXN0UmVjdC5oZWlnaHQpOworICAgICAgICBkZWJ1ZygidGVzdFJlY3QuYm90dG9t
ICIgKyB0ZXN0UmVjdC5ib3R0b20pOworICAgICAgICBkZWJ1ZygidGVzdFJlY3QucmlnaHQgIiAr
IHRlc3RSZWN0LnJpZ2h0KTsKKyAgICAgICAgZGVidWcoIiIpOworCisgICAgICAgIHNob3VsZEJl
KCJ0ZXN0UmVjdC50b3AiLCBTdHJpbmcoZXhwZWN0ZWRSZWN0LnRvcCkpOworICAgICAgICBzaG91
bGRCZSgidGVzdFJlY3QubGVmdCIsIFN0cmluZyhleHBlY3RlZFJlY3QubGVmdCkpOworICAgICAg
ICBzaG91bGRCZSgidGVzdFJlY3Qud2lkdGgiLCBTdHJpbmcoZXhwZWN0ZWRSZWN0LndpZHRoKSk7
CisgICAgICAgIHNob3VsZEJlKCJ0ZXN0UmVjdC5oZWlnaHQiLCBTdHJpbmcoZXhwZWN0ZWRSZWN0
LmhlaWdodCkpOworICAgICAgICBzaG91bGRCZSgidGVzdFJlY3QuYm90dG9tIiwgInRlc3RSZWN0
LnRvcCArIHRlc3RSZWN0LmhlaWdodCIpOworICAgICAgICBzaG91bGRCZSgidGVzdFJlY3Qucmln
aHQiLCAidGVzdFJlY3QubGVmdCArIHRlc3RSZWN0LndpZHRoIik7CisgICAgICAgIGRlYnVnKCIi
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRCQm94T3ZlckNsaWVudFJlY3QocmVjdCkKKyAg
ICB7CisgICAgICAgIHZhciBiYm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Cisg
ICAgICAgIGJib3guY2xhc3NOYW1lID0gImJib3giOworICAgICAgICB2YXIgc3R5bGUgPSAiIjsK
KyAgICAgICAgc3R5bGUgKz0gImxlZnQ6ICIgICArIHJlY3QubGVmdCArICJweDsiOworICAgICAg
ICBzdHlsZSArPSAidG9wOiAiICAgICsgcmVjdC50b3AgKyAicHg7IjsKKyAgICAgICAgc3R5bGUg
Kz0gIndpZHRoOiAiICArIChyZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0KSArICJweDsiOworICAgICAg
ICBzdHlsZSArPSAiaGVpZ2h0OiAiICsgKHJlY3QuYm90dG9tIC0gcmVjdC50b3ApICsgInB4OyI7
CisgICAgICAgIGJib3guc2V0QXR0cmlidXRlKCJzdHlsZSIsIHN0eWxlKTsKKyAgICAgICAgZG9j
dW1lbnQuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGJib3gpOworICAgIH0KKworICAgIHZh
ciBmYWlsID0gdW5kZWZpbmVkOworCisgICAgdmFyIGV4cGVjdGVkUmVzdWx0cyA9IFsKKyAgICAg
ICAgLyoxKi8gIHsgdG9wOiA0MiwgbGVmdDogOCwgd2lkdGg6IDMwMCwgaGVpZ2h0OiAxMDAgfSwK
KyAgICAgICAgLyoyKi8gIHsgdG9wOiAxOTIsIGxlZnQ6IDgsIHdpZHRoOiAzMjAsIGhlaWdodDog
MTIwIH0sCisgICAgICAgIC8qMyovICB7IHRvcDogMzYyLCBsZWZ0OiAxOCwgd2lkdGg6IDMwMCwg
aGVpZ2h0OiAxMDAgfSwKKyAgICAgICAgLyo0Ki8gIHsgdG9wOiA0OTEsIGxlZnQ6IDM3LCB3aWR0
aDogMTQyLCBoZWlnaHQ6IDE0MiB9LAorICAgICAgICAvKjUqLyAgeyB0b3A6IDY2MiwgbGVmdDog
OCwgd2lkdGg6IDMwMCwgaGVpZ2h0OiAyMzQgfSwKKyAgICAgICAgLyo2Ki8gIHsgdG9wOiBmYWls
LCBsZWZ0OiBmYWlsLCB3aWR0aDogZmFpbCwgaGVpZ2h0OiBmYWlsIH0sCisgICAgICAgIC8qNyov
ICB7IHRvcDogMTIzMCwgbGVmdDogOCwgd2lkdGg6IDI5OSwgaGVpZ2h0OiAxODAgfSwKKyAgICAg
ICAgLyo4Ki8gIHsgdG9wOiAxNDYwLCBsZWZ0OiA4LCB3aWR0aDogMzAwLCBoZWlnaHQ6IDQ2IH0s
CisgICAgICAgIC8qOSovICB7IHRvcDogMTU1NiwgbGVmdDogOCwgd2lkdGg6IDMwMCwgaGVpZ2h0
OiA2NCB9LAorICAgICAgICAvKjEwKi8geyB0b3A6IDE2NzIsIGxlZnQ6IDgsIHdpZHRoOiAzMDAs
IGhlaWdodDogMjAgfSwKKyAgICAgICAgLyoxMSovIHsgdG9wOiAxNzY4LCBsZWZ0OiAxMCwgd2lk
dGg6IDE0NywgaGVpZ2h0OiAyMCB9LAorICAgICAgICAvKjEyKi8geyB0b3A6IDE4NjIsIGxlZnQ6
IDgsIHdpZHRoOiAxMDAsIGhlaWdodDogMTAwIH0sCisgICAgICAgIC8qMTMqLyB7IHRvcDogMjA5
OCwgbGVmdDogOCwgd2lkdGg6IDE4MCwgaGVpZ2h0OiAxOCB9LAorICAgICAgICAvKjE0Ki8geyB0
b3A6IDIxNjYsIGxlZnQ6IDgsIHdpZHRoOiAyMDAsIGhlaWdodDogMjM2IH0sCisgICAgICAgIC8q
MTUqLyB7IHRvcDogMjQ1MiwgbGVmdDogOCwgd2lkdGg6IDAsIGhlaWdodDogMCB9CisgICAgXTsK
KworICAgIGZ1bmN0aW9uIHRlc3QobnVtYmVyLCBlbGVtZW50KQorICAgIHsKKyAgICAgICAgZGVi
dWcoIkNsaWVudCBib3VuZGluZyByZWN0IGZvciAjIiArIG51bWJlcik7CisKKyAgICAgICAgaWYg
KGVsZW1lbnQuY2xhc3NOYW1lLm1hdGNoKCJrbm93bkZhaWx1cmUiKSkgeworICAgICAgICAgICAg
ZGVidWcoIktub3duIGZhaWx1cmUuIFNraXBwaW5nLiIpOworICAgICAgICAgICAgZGVidWcoIiIp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGJvdW5kaW5n
UmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgIGFkZEJCb3hP
dmVyQ2xpZW50UmVjdChib3VuZGluZ1JlY3QpOworICAgICAgICB0ZXN0Q2xpZW50UmVjdChib3Vu
ZGluZ1JlY3QsIGV4cGVjdGVkUmVzdWx0c1tudW1iZXIgLSAxXSk7CisgICAgfQorCisgICAgdmFy
IHRlc3RzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgidGVzdEJveCIpOworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyArK2kpCisgICAgICAgIHRlc3QoaSAr
IDEsIHRlc3RzW2ldKTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICAgICAgdmFyIGFyZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdEFyZWEnKTsK
KyAgICAgICAgYXJlYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGFyZWEpOworICAgIH0KKworICAg
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL0VsZW1lbnQvZ2V0Qm91bmRpbmdDbGllbnRSZWN0Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9nZXRCb3VuZGluZ0NsaWVudFJlY3QuaHRt
bAkocmV2aXNpb24gNDg3NzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L2dldEJv
dW5kaW5nQ2xpZW50UmVjdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAotPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KIDxzdHlsZT4KICAgICAjYmFzZSB7CiAgICAgICAgIHdpZHRoOiAz
MDBweDsKQEAgLTE3Nyw0ICsxNzcsNCBAQAogCiAgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKIDwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9nZXRD
bGllbnRSZWN0cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vRWxlbWVudC9nZXRDbGllbnRSZWN0cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ4Nzc4KQko
ZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRDbGllbnRSZWN0cy1leHBlY3RlZC50eHQ6NDg3
NzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L2dldENsaWVudFJlY3RzLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACitDbGllbnQgYm91bmRpbmcg
cmVjdHMgZm9yICMxCitQQVNTIHRlc3RSZWN0cy5sZW5ndGggaXMgMQorCitDbGllbnQgYm91bmRp
bmcgcmVjdHMgZm9yICMyCitQQVNTIHRlc3RSZWN0cy5sZW5ndGggaXMgMQorCitDbGllbnQgYm91
bmRpbmcgcmVjdHMgZm9yICMzCitQQVNTIHRlc3RSZWN0cy5sZW5ndGggaXMgMQorCitDbGllbnQg
Ym91bmRpbmcgcmVjdHMgZm9yICM0CitQQVNTIHRlc3RSZWN0cy5sZW5ndGggaXMgMQorCitDbGll
bnQgYm91bmRpbmcgcmVjdHMgZm9yICM1CitQQVNTIHRlc3RSZWN0cy5sZW5ndGggaXMgMQorCitD
bGllbnQgYm91bmRpbmcgcmVjdHMgZm9yICM2CitLbm93biBmYWlsdXJlLiBTa2lwcGluZy4KKwor
Q2xpZW50IGJvdW5kaW5nIHJlY3RzIGZvciAjNworUEFTUyB0ZXN0UmVjdHMubGVuZ3RoIGlzIDEw
CisKK0NsaWVudCBib3VuZGluZyByZWN0cyBmb3IgIzgKK1BBU1MgdGVzdFJlY3RzLmxlbmd0aCBp
cyAxCisKK0NsaWVudCBib3VuZGluZyByZWN0cyBmb3IgIzkKK0ZBSUwgdGVzdFJlY3RzLmxlbmd0
aCBzaG91bGQgYmUgMi4gV2FzIDEuCisKK0NsaWVudCBib3VuZGluZyByZWN0cyBmb3IgIzEwCitQ
QVNTIHRlc3RSZWN0cy5sZW5ndGggaXMgMQorCitDbGllbnQgYm91bmRpbmcgcmVjdHMgZm9yICMx
MQorUEFTUyB0ZXN0UmVjdHMubGVuZ3RoIGlzIDEKKworQ2xpZW50IGJvdW5kaW5nIHJlY3RzIGZv
ciAjMTIKK1BBU1MgdGVzdFJlY3RzLmxlbmd0aCBpcyAxCisKK0NsaWVudCBib3VuZGluZyByZWN0
cyBmb3IgIzEzCitQQVNTIHRlc3RSZWN0cy5sZW5ndGggaXMgMQorCitDbGllbnQgYm91bmRpbmcg
cmVjdHMgZm9yICMxNAorUEFTUyB0ZXN0UmVjdHMubGVuZ3RoIGlzIDMKKworQ2xpZW50IGJvdW5k
aW5nIHJlY3RzIGZvciAjMTUKK1BBU1MgdGVzdFJlY3RzLmxlbmd0aCBpcyAxCisKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9FbGVtZW50L2dldENsaWVudFJlY3RzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9nZXRDbGllbnRSZWN0cy5odG1sCShyZXZpc2lv
biA0ODc3OCkJKGZyb20gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0Q2xpZW50UmVjdHMuaHRtbDo0
ODc3OCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvZ2V0Q2xpZW50UmVjdHMuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2OSBAQAorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAg
I2Jhc2UgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7Cisg
ICAgfQorCisgICAgI2JvcmRlciB7CisgICAgICAgIGJvcmRlcjogMTBweCBzb2xpZCAjOTk5Owor
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorCisg
ICAgI21hcmdpbiB7CisgICAgICAgIG1hcmdpbjogMTBweDsKKyAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKworICAgICN0cmFuc2Zvcm0geworICAg
ICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCg1MHB4KSByb3RhdGUoNDVkZWcpOwor
ICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorCisg
ICAgI2NvbHVtbnMgeworICAgICAgICAtd2Via2l0LWNvbHVtbi1jb3VudDogMzsKKyAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgIH0KKworICAgICNpbmxpbmUgeworICAgICAgICBkaXNwbGF5OiBp
bmxpbmU7CisgICAgfQorCisgICAgI291dGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAg
ICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKworICAgICNpbm5lciB7CisgICAgICAgIHdpZHRo
OiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisKKyAgICB0YWJsZSB7Cisg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICB9CisKKyAgICBpbWcgeworICAgICAgICB3aWR0aDog
MTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorCisgICAgLnRlc3RCb3ggewor
ICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICB9CisKKyAgICAjdGVzdEFyZWEg
eworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgfQorCisgICAgLmJib3ggeworICAgICAgICBw
b3NpdGlvbjphYnNvbHV0ZTsKKyAgICAgICAgb3V0bGluZTogNXB4IHNvbGlkIHJnYmEoMjU1LCAw
LCAwLCAuNzUpOworICAgIH0KKworICAgICNjb25zb2xlIHsKKyAgICAgICAgcG9zaXRpb246YWJz
b2x1dGU7CisgICAgICAgIGxlZnQ6IDUwMHB4OworICAgIH0KKzwvc3R5bGU+CisKKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPGRpdiBpZD0idGVzdEFyZWEiPgorCis8cD4xLiBCYXNlPC9wPiAg
ICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImJhc2UiIGNsYXNzPSJ0ZXN0Qm94Ij48L2Rpdj4KKzxw
PjIuIEJvcmRlcjwvcD4gICAgICAgICAgICAgICAgPGRpdiBpZD0iYm9yZGVyIiBjbGFzcz0idGVz
dEJveCI+PC9kaXY+Cis8cD4zLiBNYXJnaW48L3A+ICAgICAgICAgICAgICAgIDxkaXYgaWQ9Im1h
cmdpbiIgY2xhc3M9InRlc3RCb3giPjwvZGl2PgorPHA+NC4gVHJhbnNmb3JtPC9wPiAgICAgICAg
ICAgICA8ZGl2IGlkPSJ0cmFuc2Zvcm0iIGNsYXNzPSJ0ZXN0Qm94Ij48L2Rpdj4KKzxwPjUuIENv
bHVtbjwvcD4gICAgICAgICAgICAgICAgPGRpdiBpZD0iY29sdW1ucyIgY2xhc3M9InRlc3RCb3gi
PkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0
LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1h
Z25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0
YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNl
cXVhdC4gRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRl
IHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2Vw
dGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3VscGEg
cXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0uPC9kaXY+Cis8
cD42LiBJbiBhIGNvbHVtbjwvcD4gICAgICAgICAgIDxkaXYgaWQ9ImNvbHVtbnMiPkxvcmVtIGlw
c3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LCBzZWQgZG8g
ZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1
YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxs
YW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC48c3Bh
biBpZD0iaW4tY29sdW1ucyIgY2xhc3M9InRlc3RCb3gga25vd25GYWlsdXJlIj5JbiBjb2x1bW5z
PC9zcGFuPiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRh
dGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhj
ZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxw
YSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS48L2Rpdj4K
KzxwPjcuIElubGluZTwvcD4gICAgICAgICAgICAgICAgPGRpdiBpZD0iaW5saW5lIiBjbGFzcz0i
dGVzdEJveCI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2lj
aW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBk
b2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVk
IGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1v
ZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2
b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1
ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBp
biBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS48
L2Rpdj4KKzxwPjguIFRhYmxlPC9wPiAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0ZXN0
Qm94Ij48dHI+PHRkPnRhYmxlIGRhdGE8L3RkPjx0ZD50YWJsZSBkYXRhPC90ZD48L3RyPjx0cj48
dGQ+dGFibGUgZGF0YTwvdGQ+PHRkPnRhYmxlIGRhdGE8L3RkPjwvdHI+PC90YWJsZT4KKzxwPjku
IFRhYmxlIHdpdGggQ2FwdGlvbjwvcD4gICAgPHRhYmxlIGNsYXNzPSJ0ZXN0Qm94Ij48Y2FwdGlv
bj5jYXB0aW9uPC9jYXB0aW9uPjx0cj48dGQ+dGFibGUgZGF0YTwvdGQ+PHRkPnRhYmxlIGRhdGE8
L3RkPjwvdHI+PHRyPjx0ZD50YWJsZSBkYXRhPC90ZD48dGQ+dGFibGUgZGF0YTwvdGQ+PC90cj48
L3RhYmxlPgorPHA+MTAuIFRhYmxlIFJvdzwvcD4gICAgICAgICAgICA8dGFibGU+PHRyIGNsYXNz
PSJ0ZXN0Qm94Ij48dGQ+dGFibGUgZGF0YTwvdGQ+PHRkPnRhYmxlIGRhdGE8L3RkPjwvdHI+PHRy
Pjx0ZD50YWJsZSBkYXRhPC90ZD48dGQ+dGFibGUgZGF0YTwvdGQ+PC90cj48L3RhYmxlPgorPHA+
MTEuIFRhYmxlIENlbGw8L3A+ICAgICAgICAgICA8dGFibGU+PHRyPjx0ZCBjbGFzcz0idGVzdEJv
eCI+dGFibGUgZGF0YTwvdGQ+PHRkPnRhYmxlIGRhdGE8L3RkPjwvdHI+PHRyPjx0ZD50YWJsZSBk
YXRhPC90ZD48dGQ+dGFibGUgZGF0YTwvdGQ+PC90cj48L3RhYmxlPgorPHA+MTIuIEJpZyBibG9j
ayBpbiBsaXR0bGU8L3A+ICA8ZGl2IGlkPSJvdXRlciIgY2xhc3M9InRlc3RCb3giPjxkaXYgaWQ9
ImlubmVyIj48L2Rpdj48L2Rpdj4KKzxwPjEzLiBSZXBsYWNlZCBpbiBpbmxpbmU8L3A+ICAgPHNw
YW4gY2xhc3M9InRlc3RCb3giPkxvcmVtPGltZz5pcHN1bTwvc3Bhbj4KKzxwPjE0LiBCbG9jayBp
biBpbmxpbmU8L3A+ICAgICAgPHNwYW4gY2xhc3M9InRlc3RCb3giPkxvcmVtPGRpdiBpZD0iaW5u
ZXIiPjwvZGl2Pmlwc3VtPC9zcGFuPgorPHA+MTUuIEZsb2F0IGluIGlubGluZTwvcD4gICAgICA8
c3BhbiBjbGFzcz0idGVzdEJveCI+PGltZyBzdHlsZT0iZmxvYXQ6cmlnaHQiPjwvc3Bhbj4KKwor
PC9kaXY+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIHZhciB0ZXN0
UmVjdHM7CisgICAgZnVuY3Rpb24gdGVzdENsaWVudFJlY3RzKHJlY3RzLCBleHBlY3RlZE51bWJl
ck9mUmVjdHMpCisgICAgeworICAgICAgICB0ZXN0UmVjdHMgPSByZWN0czsKKyAgICAgICAgc2hv
dWxkQmUoInRlc3RSZWN0cy5sZW5ndGgiLCBTdHJpbmcoZXhwZWN0ZWROdW1iZXJPZlJlY3RzKSk7
CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRCQm94T3ZlckNs
aWVudFJlY3QocmVjdCkKKyAgICB7CisgICAgICAgIHZhciBiYm94ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGJib3guY2xhc3NOYW1lID0gImJib3giOworICAgICAg
ICB2YXIgc3R5bGUgPSAiIjsKKyAgICAgICAgc3R5bGUgKz0gImxlZnQ6ICIgICArIHJlY3QubGVm
dCArICJweDsiOworICAgICAgICBzdHlsZSArPSAidG9wOiAiICAgICsgcmVjdC50b3AgKyAicHg7
IjsKKyAgICAgICAgc3R5bGUgKz0gIndpZHRoOiAiICArIChyZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0
KSArICJweDsiOworICAgICAgICBzdHlsZSArPSAiaGVpZ2h0OiAiICsgKHJlY3QuYm90dG9tIC0g
cmVjdC50b3ApICsgInB4OyI7CisgICAgICAgIGJib3guc2V0QXR0cmlidXRlKCJzdHlsZSIsIHN0
eWxlKTsKKyAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGJib3gp
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZEJCb3hPdmVyQ2xpZW50UmVjdHMocmVjdHMpCisg
ICAgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlY3RzLmxlbmd0aDsgKytpKQorICAg
ICAgICAgICAgYWRkQkJveE92ZXJDbGllbnRSZWN0KHJlY3RzW2ldKTsKKyAgICB9CisKKyAgICB2
YXIgZXhwZWN0ZWRSZXN1bHRzID0gWworICAgICAgICAxLAorICAgICAgICAxLAorICAgICAgICAx
LAorICAgICAgICAxLAorICAgICAgICAxLAorICAgICAgICAxLAorICAgICAgICAxMCwKKyAgICAg
ICAgMSwKKyAgICAgICAgMiwKKyAgICAgICAgMSwKKyAgICAgICAgMSwKKyAgICAgICAgMSwKKyAg
ICAgICAgMSwKKyAgICAgICAgMywKKyAgICAgICAgMQorICAgIF07CisKKyAgICBmdW5jdGlvbiB0
ZXN0KG51bWJlciwgZWxlbWVudCkKKyAgICB7CisgICAgICAgIGRlYnVnKCJDbGllbnQgYm91bmRp
bmcgcmVjdHMgZm9yICMiICsgbnVtYmVyKTsKKworICAgICAgICBpZiAoZWxlbWVudC5jbGFzc05h
bWUubWF0Y2goImtub3duRmFpbHVyZSIpKSB7CisgICAgICAgICAgICBkZWJ1ZygiS25vd24gZmFp
bHVyZS4gU2tpcHBpbmcuIik7CisgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIgYm91bmRpbmdSZWN0cyA9IGVsZW1lbnQu
Z2V0Q2xpZW50UmVjdHMoKTsKKyAgICAgICAgYWRkQkJveE92ZXJDbGllbnRSZWN0cyhib3VuZGlu
Z1JlY3RzKTsKKyAgICAgICAgdGVzdENsaWVudFJlY3RzKGJvdW5kaW5nUmVjdHMsIGV4cGVjdGVk
UmVzdWx0c1tudW1iZXIgLSAxXSk7CisgICAgfQorCisgICAgdmFyIHRlc3RzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSgidGVzdEJveCIpOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdGVzdHMubGVuZ3RoOyArK2kpCisgICAgICAgIHRlc3QoaSArIDEsIHRlc3RzW2ldKTsKKwor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgdmFyIGFyZWEg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdEFyZWEnKTsKKyAgICAgICAgYXJlYS5wYXJl
bnROb2RlLnJlbW92ZUNoaWxkKGFyZWEpOworICAgIH0KKworICAgIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQv
Z2V0Q2xpZW50UmVjdHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9F
bGVtZW50L2dldENsaWVudFJlY3RzLmh0bWwJKHJldmlzaW9uIDQ4Nzc4KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vRWxlbWVudC9nZXRDbGllbnRSZWN0cy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzdHlsZT4KICAgICAjYmFzZSB7
CiAgICAgICAgIHdpZHRoOiAzMDBweDsKQEAgLTE2Niw0ICsxNjYsNCBAQAogCiAgICAgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKIDwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vUmFuZ2UvZ2V0Qm91bmRpbmdDbGllbnRSZWN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9nZXRCb3VuZGluZ0NsaWVudFJlY3QtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvZ2V0
Qm91bmRpbmdDbGllbnRSZWN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
NCBAQAorVGVzdCAxCitQQVNTIHJlY3QubGVmdCBpcyA4CitQQVNTIHJlY3QudG9wIGlzIDgKK1BB
U1MgcmVjdC53aWR0aCBpcyA0MDAKK1BBU1MgcmVjdC5oZWlnaHQgaXMgMTYwCitUZXN0IDIKK1BB
U1MgcmVjdC5sZWZ0IGlzIDgKK1BBU1MgcmVjdC50b3AgaXMgMjE1CitQQVNTIHJlY3Qud2lkdGgg
aXMgMzk4CitQQVNTIHJlY3QuaGVpZ2h0IGlzIDEzOAorVGVzdCAzCitQQVNTIHJlY3QubGVmdCBp
cyA4CitQQVNTIHJlY3QudG9wIGlzIDQ1MQorUEFTUyByZWN0LndpZHRoIGlzIDM5OAorUEFTUyBy
ZWN0LmhlaWdodCBpcyA1OAorVGVzdCA0CitQQVNTIHJlY3QubGVmdCBpcyA3NgorUEFTUyByZWN0
LnRvcCBpcyA1NzgKK1BBU1MgcmVjdC53aWR0aCBpcyAzNjEKK1BBU1MgcmVjdC5oZWlnaHQgaXMg
MzQzCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvZ2V0Qm91bmRpbmdDbGllbnRSZWN0LWdl
dENsaWVudFJlY3RzLXJlbGF0aXZlLXRvLXZpZXdwb3J0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9nZXRCb3VuZGluZ0NsaWVudFJlY3QtZ2V0
Q2xpZW50UmVjdHMtcmVsYXRpdmUtdG8tdmlld3BvcnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvZ2V0Qm91bmRpbmdDbGllbnRSZWN0LWdl
dENsaWVudFJlY3RzLXJlbGF0aXZlLXRvLXZpZXdwb3J0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw4IEBACitQQVNTIHVuU2Nyb2xsZWRCb3VuZGluZ0JveC50b3AgLSBzY3Jv
bGxlZERvd25Cb3VuZGluZ0JveC50b3AgaXMgNTAKK1BBU1MgdW5TY3JvbGxlZEJvdW5kaW5nQm94
ZXNbMF0udG9wIC0gc2Nyb2xsZWREb3duQm91bmRpbmdCb3hlc1swXS50b3AgaXMgNTAKK1BBU1Mg
dW5TY3JvbGxlZEJvdW5kaW5nQm94LmxlZnQgLSBzY3JvbGxlZFJpZ2h0Qm91bmRpbmdCb3gubGVm
dCBpcyA1MAorUEFTUyB1blNjcm9sbGVkQm91bmRpbmdCb3hlc1swXS5sZWZ0IC0gc2Nyb2xsZWRS
aWdodEJvdW5kaW5nQm94ZXNbMF0ubGVmdCBpcyA1MAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1Jh
bmdlL2dldEJvdW5kaW5nQ2xpZW50UmVjdC1nZXRDbGllbnRSZWN0cy1yZWxhdGl2ZS10by12aWV3
cG9ydC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL2dldEJv
dW5kaW5nQ2xpZW50UmVjdC1nZXRDbGllbnRSZWN0cy1yZWxhdGl2ZS10by12aWV3cG9ydC5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvZ2V0Qm91bmRpbmdD
bGllbnRSZWN0LWdldENsaWVudFJlY3RzLXJlbGF0aXZlLXRvLXZpZXdwb3J0Lmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTUgQEAKKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAgICNwdXNo
ZXIgeworICAgICAgICB3aWR0aDogMTAwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMDBweDsKKyAg
ICAgICAgb3V0bGluZTogMXB4IHNvbGlkIGJsYWNrOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxkaXYgaWQ9InRlc3RBcmVhIj4KKyAgICA8YnI+CisgICAgPHAg
aWQ9InRlc3QiPlRlc3QgY29udGVudDwvcD4KKyAgICA8ZGl2IGlkPSJwdXNoZXIiPlRoaXMgYm94
IGlzIGhlcmUgdG8gY3JlYXRlIHNjcm9sbGJhcnMuPC9kaXY+Cis8L2Rpdj4KKzxzY3JpcHQ+Cisg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Rlc3QnKSk7CisKKyAgICAvLyBHZXQgYmFzZSBudW1iZXJzCisgICAgdmFyIHVuU2Ny
b2xsZWRCb3VuZGluZ0JveCA9IHJhbmdlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgIHZh
ciB1blNjcm9sbGVkQm91bmRpbmdCb3hlcyA9IHJhbmdlLmdldENsaWVudFJlY3RzKCk7CisKKyAg
ICAvLyBUZXN0IHNjcm9sbGluZyBkb3duCisgICAgd2luZG93LnNjcm9sbEJ5KDAsIDUwKTsKKyAg
ICB2YXIgc2Nyb2xsZWREb3duQm91bmRpbmdCb3ggPSByYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJl
Y3QoKTsKKyAgICB2YXIgc2Nyb2xsZWREb3duQm91bmRpbmdCb3hlcyA9IHJhbmdlLmdldENsaWVu
dFJlY3RzKCk7CisKKyAgICAvLyBSZXNldAorICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTsKKwor
ICAgIC8vIFRlc3Qgc2Nyb2xsaW5nIHJpZ2h0CisgICAgd2luZG93LnNjcm9sbEJ5KDUwLCAwKTsK
KyAgICB2YXIgc2Nyb2xsZWRSaWdodEJvdW5kaW5nQm94ID0gcmFuZ2UuZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCk7CisgICAgdmFyIHNjcm9sbGVkUmlnaHRCb3VuZGluZ0JveGVzID0gcmFuZ2UuZ2V0
Q2xpZW50UmVjdHMoKTsKKworICAgIC8vIFJlc2V0CisgICAgd2luZG93LnNjcm9sbFRvKDAsIDAp
OworCisgICAgc2hvdWxkQmUoInVuU2Nyb2xsZWRCb3VuZGluZ0JveC50b3AgLSBzY3JvbGxlZERv
d25Cb3VuZGluZ0JveC50b3AiLCAiNTAiKTsKKyAgICBzaG91bGRCZSgidW5TY3JvbGxlZEJvdW5k
aW5nQm94ZXNbMF0udG9wIC0gc2Nyb2xsZWREb3duQm91bmRpbmdCb3hlc1swXS50b3AiLCAiNTAi
KTsKKyAgICBzaG91bGRCZSgidW5TY3JvbGxlZEJvdW5kaW5nQm94LmxlZnQgLSBzY3JvbGxlZFJp
Z2h0Qm91bmRpbmdCb3gubGVmdCIsICI1MCIpOworICAgIHNob3VsZEJlKCJ1blNjcm9sbGVkQm91
bmRpbmdCb3hlc1swXS5sZWZ0IC0gc2Nyb2xsZWRSaWdodEJvdW5kaW5nQm94ZXNbMF0ubGVmdCIs
ICI1MCIpOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAg
ICB2YXIgYXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0QXJlYScpOworICAgICAg
ICBhcmVhLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYXJlYSk7CisgICAgfQorCisgICAgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vUmFuZ2UvZ2V0Qm91bmRpbmdDbGllbnRSZWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvZ2V0Qm91bmRpbmdDbGllbnRSZWN0Lmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9nZXRCb3VuZGluZ0NsaWVudFJl
Y3QuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzQgQEAKKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0
eWxlPgorLmJib3ggeworICAgIHBvc2l0aW9uOmFic29sdXRlOworICAgIG91dGxpbmU6IDVweCBz
b2xpZCByZ2JhKDI1NSwgMCwgMCwgLjc1KTsKKyAgICB6LWluZGV4OiAtMTsKK30KKworLmJveCB7
CisgICAgd2lkdGg6IDQwMHB4OworICAgIGxpbmUtaGVpZ2h0OiA0MHB4OworfQorCisub3V0ZXIg
eworICAgIG91dGxpbmU6IDJweCBzb2xpZCBncmVlbjsKK30KKworLmlubmVyIHsKKyAgICBkaXNw
bGF5OiBpbmxpbmUtYmxvY2s7CisgICAgd2lkdGg6IDQwcHg7CisgICAgaGVpZ2h0OiAyMHB4Owor
ICAgIG91dGxpbmU6IDJweCBzb2xpZCBibHVlOworfQorCisjdGVzdDQgeworICAgIC13ZWJraXQt
dHJhbnNmb3JtOiB0cmFuc2xhdGUoNTBweCwgMTAwcHgpIHJvdGF0ZSg1MGRlZyk7Cit9CisKKyNj
b25zb2xlIHsKKyAgICBwb3NpdGlvbjphYnNvbHV0ZTsKKyAgICBsZWZ0OiA1MDBweDsKK30KKyN0
ZXN0QXJlYSB7CisgICAgd2lkdGg6IDMwMHB4OworfQorPC9zdHlsZT4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPGRpdiBpZD0idGVzdEFyZWEiPgorCis8ZGl2IGNsYXNzPSJib3giIGlkPSJ0
ZXN0MSI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5n
IGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xv
cmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4
ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8g
Y29uc2VxdWF0LjwvZGl2PgorCis8YnI+PGJyPgorCis8ZGl2IGNsYXNzPSJib3giIGlkPSJ0ZXN0
MiI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVs
aXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUg
bWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJj
aXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29u
c2VxdWF0LjwvZGl2PgorCis8YnI+PGJyPgorCis8ZGl2IGNsYXNzPSJib3giIGlkPSJ0ZXN0MyI+
TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQs
IHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFn
bmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRh
dGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2Vx
dWF0LjwvZGl2PgorCis8YnI+PGJyPgorCis8ZGl2IGNsYXNzPSJib3giIGlkPSJ0ZXN0NCI+TG9y
ZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQsIHNl
ZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEg
YWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlv
biB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0
LjwvZGl2PgorCis8L2Rpdj4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisg
ICAgZnVuY3Rpb24gYWRkQkJveE92ZXJDbGllbnRSZWN0KHJlY3QpCisgICAgeworICAgICAgICB2
YXIgYmJveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBiYm94LmNs
YXNzTmFtZSA9ICJiYm94IjsKKyAgICAgICAgdmFyIHN0eWxlID0gIiI7CisgICAgICAgIHN0eWxl
ICs9ICJsZWZ0OiAiICAgKyByZWN0LmxlZnQgKyAicHg7IjsKKyAgICAgICAgc3R5bGUgKz0gInRv
cDogIiAgICArIHJlY3QudG9wICsgInB4OyI7CisgICAgICAgIHN0eWxlICs9ICJ3aWR0aDogIiAg
KyAocmVjdC5yaWdodCAtIHJlY3QubGVmdCkgKyAicHg7IjsKKyAgICAgICAgc3R5bGUgKz0gImhl
aWdodDogIiArIChyZWN0LmJvdHRvbSAtIHJlY3QudG9wKSArICJweDsiOworICAgICAgICBiYm94
LnNldEF0dHJpYnV0ZSgic3R5bGUiLCBzdHlsZSk7CisgICAgICAgIGRvY3VtZW50LmRvY3VtZW50
RWxlbWVudC5hcHBlbmRDaGlsZChiYm94KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzaG93KHJh
bmdlKQorICAgIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYWRkQkJveE92ZXJDbGllbnRSZWN0KHJhbmdlLmdl
dEJvdW5kaW5nQ2xpZW50UmVjdCgpKTsKKyAgICB9CisKKyAgICAvLyBUZXN0IDEKKyAgICBkZWJ1
ZygiVGVzdCAxIikKKyAgICB2YXIgcmFuZ2UxID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZTEuc2VsZWN0Tm9kZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdDEnKSk7Cisg
ICAgc2hvdyhyYW5nZTEpOworICAgIHJlY3QgPSByYW5nZTEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCkKKyAgICBzaG91bGRCZSgicmVjdC5sZWZ0IiwgIjgiKTsKKyAgICBzaG91bGRCZSgicmVjdC50
b3AiLCAiOCIpOworICAgIHNob3VsZEJlKCJyZWN0LndpZHRoIiwgIjQwMCIpOworICAgIHNob3Vs
ZEJlKCJyZWN0LmhlaWdodCIsICIxNjAiKTsKKworICAgIC8vIFRlc3QgMgorICAgIGRlYnVnKCJU
ZXN0IDIiKQorICAgIHZhciByYW5nZTIgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlMi5zZWxlY3ROb2RlQ29udGVudHMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QyJykp
OworICAgIHNob3cocmFuZ2UyKTsKKyAgICByZWN0ID0gcmFuZ2UyLmdldEJvdW5kaW5nQ2xpZW50
UmVjdCgpCisgICAgc2hvdWxkQmUoInJlY3QubGVmdCIsICI4Iik7CisgICAgc2hvdWxkQmUoInJl
Y3QudG9wIiwgIjIxNSIpOworICAgIHNob3VsZEJlKCJyZWN0LndpZHRoIiwgIjM5OCIpOworICAg
IHNob3VsZEJlKCJyZWN0LmhlaWdodCIsICIxMzgiKTsKKworCisgICAgLy8gVGVzdCAzCisgICAg
ZGVidWcoIlRlc3QgMyIpCisgICAgdmFyIHJhbmdlMyA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2UzLnNldFN0YXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0MycpLmZp
cnN0Q2hpbGQsIDEwMCk7CisgICAgcmFuZ2UzLnNldEVuZChkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgndGVzdDMnKS5sYXN0Q2hpbGQsIDE1MCk7CisgICAgc2hvdyhyYW5nZTMpOworICAgIHJlY3Qg
PSByYW5nZTMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkKKyAgICBzaG91bGRCZSgicmVjdC5sZWZ0
IiwgIjgiKTsKKyAgICBzaG91bGRCZSgicmVjdC50b3AiLCAiNDUxIik7CisgICAgc2hvdWxkQmUo
InJlY3Qud2lkdGgiLCAiMzk4Iik7CisgICAgc2hvdWxkQmUoInJlY3QuaGVpZ2h0IiwgIjU4Iik7
CisKKworICAgIC8vIFRlc3QgNAorICAgIGRlYnVnKCJUZXN0IDQiKQorICAgIHZhciByYW5nZTQg
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlNC5zZWxlY3ROb2RlQ29udGVudHMo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Q0JykpOworICAgIHNob3cocmFuZ2U0KTsKKyAg
ICByZWN0ID0gcmFuZ2U0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpCisgICAgc2hvdWxkQmUoInJl
Y3QubGVmdCIsICI3NiIpOworICAgIHNob3VsZEJlKCJyZWN0LnRvcCIsICI1NzgiKTsKKyAgICBz
aG91bGRCZSgicmVjdC53aWR0aCIsICIzNjEiKTsKKyAgICBzaG91bGRCZSgicmVjdC5oZWlnaHQi
LCAiMzQzIik7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
ICAgIHZhciBhcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3RBcmVhJyk7CisgICAg
ICAgIGFyZWEucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhcmVhKTsKKyAgICB9CisKKyAgICBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9SYW5nZS9nZXRDbGllbnRSZWN0cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvZ2V0Q2xpZW50UmVjdHMtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvZ2V0Q2xpZW50UmVjdHMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5MiBAQAorVGVzdCAxCitQQVNT
IHJlY3RzLmxlbmd0aCBpcyA1CitQQVNTIHJlY3RzWzBdLmxlZnQgaXMgOAorUEFTUyByZWN0c1sw
XS50b3AgaXMgOAorUEFTUyByZWN0c1swXS53aWR0aCBpcyA0MDAKK1BBU1MgcmVjdHNbMF0uaGVp
Z2h0IGlzIDE2MAorUEFTUyByZWN0c1sxXS5sZWZ0IGlzIDgKK1BBU1MgcmVjdHNbMV0udG9wIGlz
IDE5CitQQVNTIHJlY3RzWzFdLndpZHRoIGlzIDM5NgorUEFTUyByZWN0c1sxXS5oZWlnaHQgaXMg
MTgKK1BBU1MgcmVjdHNbMl0ubGVmdCBpcyA4CitQQVNTIHJlY3RzWzJdLnRvcCBpcyA1OQorUEFT
UyByZWN0c1syXS53aWR0aCBpcyAzOTgKK1BBU1MgcmVjdHNbMl0uaGVpZ2h0IGlzIDE4CitQQVNT
IHJlY3RzWzNdLmxlZnQgaXMgOAorUEFTUyByZWN0c1szXS50b3AgaXMgOTkKK1BBU1MgcmVjdHNb
M10ud2lkdGggaXMgMzYwCitQQVNTIHJlY3RzWzNdLmhlaWdodCBpcyAxOAorUEFTUyByZWN0c1s0
XS5sZWZ0IGlzIDgKK1BBU1MgcmVjdHNbNF0udG9wIGlzIDEzOQorUEFTUyByZWN0c1s0XS53aWR0
aCBpcyAzMDYKK1BBU1MgcmVjdHNbNF0uaGVpZ2h0IGlzIDE4CitUZXN0IDIKK1BBU1MgcmVjdHMu
bGVuZ3RoIGlzIDQKK1BBU1MgcmVjdHNbMF0ubGVmdCBpcyA4CitQQVNTIHJlY3RzWzBdLnRvcCBp
cyAyMTUKK1BBU1MgcmVjdHNbMF0ud2lkdGggaXMgMzk2CitQQVNTIHJlY3RzWzBdLmhlaWdodCBp
cyAxOAorUEFTUyByZWN0c1sxXS5sZWZ0IGlzIDgKK1BBU1MgcmVjdHNbMV0udG9wIGlzIDI1NQor
UEFTUyByZWN0c1sxXS53aWR0aCBpcyAzOTgKK1BBU1MgcmVjdHNbMV0uaGVpZ2h0IGlzIDE4CitQ
QVNTIHJlY3RzWzJdLmxlZnQgaXMgOAorUEFTUyByZWN0c1syXS50b3AgaXMgMjk1CitQQVNTIHJl
Y3RzWzJdLndpZHRoIGlzIDM2MAorUEFTUyByZWN0c1syXS5oZWlnaHQgaXMgMTgKK1BBU1MgcmVj
dHNbM10ubGVmdCBpcyA4CitQQVNTIHJlY3RzWzNdLnRvcCBpcyAzMzUKK1BBU1MgcmVjdHNbM10u
d2lkdGggaXMgMzA2CitQQVNTIHJlY3RzWzNdLmhlaWdodCBpcyAxOAorVGVzdCAzCitQQVNTIHJl
Y3RzLmxlbmd0aCBpcyA0CitQQVNTIHJlY3RzWzBdLmxlZnQgaXMgODAKK1BBU1MgcmVjdHNbMF0u
dG9wIGlzIDQxMQorUEFTUyByZWN0c1swXS53aWR0aCBpcyAzMjQKK1BBU1MgcmVjdHNbMF0uaGVp
Z2h0IGlzIDE4CitQQVNTIHJlY3RzWzFdLmxlZnQgaXMgOAorUEFTUyByZWN0c1sxXS50b3AgaXMg
NDUxCitQQVNTIHJlY3RzWzFdLndpZHRoIGlzIDM5OAorUEFTUyByZWN0c1sxXS5oZWlnaHQgaXMg
MTgKK1BBU1MgcmVjdHNbMl0ubGVmdCBpcyA4CitQQVNTIHJlY3RzWzJdLnRvcCBpcyA0OTEKK1BB
U1MgcmVjdHNbMl0ud2lkdGggaXMgMzYwCitQQVNTIHJlY3RzWzJdLmhlaWdodCBpcyAxOAorUEFT
UyByZWN0c1szXS5sZWZ0IGlzIDgKK1BBU1MgcmVjdHNbM10udG9wIGlzIDUzMQorUEFTUyByZWN0
c1szXS53aWR0aCBpcyA4OAorUEFTUyByZWN0c1szXS5oZWlnaHQgaXMgMTgKK1Rlc3QgNAorUEFT
UyByZWN0cy5sZW5ndGggaXMgNworUEFTUyByZWN0c1swXS5sZWZ0IGlzIDgKK1BBU1MgcmVjdHNb
MF0udG9wIGlzIDU5NgorUEFTUyByZWN0c1swXS53aWR0aCBpcyA0MDAKK1BBU1MgcmVjdHNbMF0u
aGVpZ2h0IGlzIDI3OAorUEFTUyByZWN0c1sxXS5sZWZ0IGlzIDgKK1BBU1MgcmVjdHNbMV0udG9w
IGlzIDYwNworUEFTUyByZWN0c1sxXS53aWR0aCBpcyAzOTYKK1BBU1MgcmVjdHNbMV0uaGVpZ2h0
IGlzIDE4CitQQVNTIHJlY3RzWzJdLmxlZnQgaXMgOAorUEFTUyByZWN0c1syXS50b3AgaXMgNzI1
CitQQVNTIHJlY3RzWzJdLndpZHRoIGlzIDI0MgorUEFTUyByZWN0c1syXS5oZWlnaHQgaXMgMTgK
K1BBU1MgcmVjdHNbM10ubGVmdCBpcyAzMjYKK1BBU1MgcmVjdHNbM10udG9wIGlzIDcyNQorUEFT
UyByZWN0c1szXS53aWR0aCBpcyA0NAorUEFTUyByZWN0c1szXS5oZWlnaHQgaXMgMTgKK1BBU1Mg
cmVjdHNbNF0ubGVmdCBpcyA4CitQQVNTIHJlY3RzWzRdLnRvcCBpcyA3NjUKK1BBU1MgcmVjdHNb
NF0ud2lkdGggaXMgMzQxCitQQVNTIHJlY3RzWzRdLmhlaWdodCBpcyAxOAorUEFTUyByZWN0c1s1
XS5sZWZ0IGlzIDgKK1BBU1MgcmVjdHNbNV0udG9wIGlzIDgwNQorUEFTUyByZWN0c1s1XS53aWR0
aCBpcyAzNjYKK1BBU1MgcmVjdHNbNV0uaGVpZ2h0IGlzIDE4CitQQVNTIHJlY3RzWzZdLmxlZnQg
aXMgOAorUEFTUyByZWN0c1s2XS50b3AgaXMgODQ1CitQQVNTIHJlY3RzWzZdLndpZHRoIGlzIDY3
CitQQVNTIHJlY3RzWzZdLmhlaWdodCBpcyAxOAorVGVzdCA1CitQQVNTIHJlY3RzLmxlbmd0aCBp
cyA1CitQQVNTIHJlY3RzWzBdLmxlZnQgaXMgODAKK1BBU1MgcmVjdHNbMF0udG9wIGlzIDkyMQor
UEFTUyByZWN0c1swXS53aWR0aCBpcyAzMjQKK1BBU1MgcmVjdHNbMF0uaGVpZ2h0IGlzIDE4CitQ
QVNTIHJlY3RzWzFdLmxlZnQgaXMgOAorUEFTUyByZWN0c1sxXS50b3AgaXMgMTAzOQorUEFTUyBy
ZWN0c1sxXS53aWR0aCBpcyAyNDIKK1BBU1MgcmVjdHNbMV0uaGVpZ2h0IGlzIDE4CitQQVNTIHJl
Y3RzWzJdLmxlZnQgaXMgMjUwCitQQVNTIHJlY3RzWzJdLnRvcCBpcyA5NTAKK1BBU1MgcmVjdHNb
Ml0ud2lkdGggaXMgNzYKK1BBU1MgcmVjdHNbMl0uaGVpZ2h0IGlzIDEwMworUEFTUyByZWN0c1sz
XS5sZWZ0IGlzIDMyNgorUEFTUyByZWN0c1szXS50b3AgaXMgMTAzOQorUEFTUyByZWN0c1szXS53
aWR0aCBpcyA0NAorUEFTUyByZWN0c1szXS5oZWlnaHQgaXMgMTgKK1BBU1MgcmVjdHNbNF0ubGVm
dCBpcyA4CitQQVNTIHJlY3RzWzRdLnRvcCBpcyAxMDc5CitQQVNTIHJlY3RzWzRdLndpZHRoIGlz
IDI4NAorUEFTUyByZWN0c1s0XS5oZWlnaHQgaXMgMTgKK1Rlc3QgNgorUEFTUyByZWN0cy5sZW5n
dGggaXMgNworUEFTUyByZWN0c1swXS5sZWZ0IGlzIDgKK1BBU1MgcmVjdHNbMF0udG9wIGlzIDEy
MjQKK1BBU1MgcmVjdHNbMF0ud2lkdGggaXMgNDAwCitQQVNTIHJlY3RzWzBdLmhlaWdodCBpcyAy
MDAKK1BBU1MgcmVjdHNbMV0ubGVmdCBpcyA4CitQQVNTIHJlY3RzWzFdLnRvcCBpcyAxMjM1CitQ
QVNTIHJlY3RzWzFdLndpZHRoIGlzIDM5NgorUEFTUyByZWN0c1sxXS5oZWlnaHQgaXMgMTgKK1BB
U1MgcmVjdHNbMl0ubGVmdCBpcyA4CitQQVNTIHJlY3RzWzJdLnRvcCBpcyAxMjc1CitQQVNTIHJl
Y3RzWzJdLndpZHRoIGlzIDU3CitQQVNTIHJlY3RzWzJdLmhlaWdodCBpcyAxOAorUEFTUyByZWN0
c1szXS5sZWZ0IGlzIDEwNQorUEFTUyByZWN0c1szXS50b3AgaXMgMTI3NQorUEFTUyByZWN0c1sz
XS53aWR0aCBpcyA0NAorUEFTUyByZWN0c1szXS5oZWlnaHQgaXMgMTgKK1BBU1MgcmVjdHNbNF0u
bGVmdCBpcyA4CitQQVNTIHJlY3RzWzRdLnRvcCBpcyAxMzE1CitQQVNTIHJlY3RzWzRdLndpZHRo
IGlzIDM4NworUEFTUyByZWN0c1s0XS5oZWlnaHQgaXMgMTgKK1BBU1MgcmVjdHNbNV0ubGVmdCBp
cyA4CitQQVNTIHJlY3RzWzVdLnRvcCBpcyAxMzU1CitQQVNTIHJlY3RzWzVdLndpZHRoIGlzIDM5
NworUEFTUyByZWN0c1s1XS5oZWlnaHQgaXMgMTgKK1BBU1MgcmVjdHNbNl0ubGVmdCBpcyA4CitQ
QVNTIHJlY3RzWzZdLnRvcCBpcyAxMzk1CitQQVNTIHJlY3RzWzZdLndpZHRoIGlzIDE3MQorUEFT
UyByZWN0c1s2XS5oZWlnaHQgaXMgMTgKK1Rlc3QgNworUEFTUyByZWN0cy5sZW5ndGggaXMgNwor
UEFTUyByZWN0c1swXS5sZWZ0IGlzIDgKK1BBU1MgcmVjdHNbMF0udG9wIGlzIDE0NzEKK1BBU1Mg
cmVjdHNbMF0ud2lkdGggaXMgMzk2CitQQVNTIHJlY3RzWzBdLmhlaWdodCBpcyAxOAorUEFTUyBy
ZWN0c1sxXS5sZWZ0IGlzIDgKK1BBU1MgcmVjdHNbMV0udG9wIGlzIDE1MDAKK1BBU1MgcmVjdHNb
MV0ud2lkdGggaXMgNDAwCitQQVNTIHJlY3RzWzFdLmhlaWdodCBpcyA0MAorUEFTUyByZWN0c1sy
XS5sZWZ0IGlzIDgKK1BBU1MgcmVjdHNbMl0udG9wIGlzIDE1MTEKK1BBU1MgcmVjdHNbMl0ud2lk
dGggaXMgNTcKK1BBU1MgcmVjdHNbMl0uaGVpZ2h0IGlzIDE4CitQQVNTIHJlY3RzWzNdLmxlZnQg
aXMgMTA1CitQQVNTIHJlY3RzWzNdLnRvcCBpcyAxNTExCitQQVNTIHJlY3RzWzNdLndpZHRoIGlz
IDQ0CitQQVNTIHJlY3RzWzNdLmhlaWdodCBpcyAxOAorUEFTUyByZWN0c1s0XS5sZWZ0IGlzIDgK
K1BBU1MgcmVjdHNbNF0udG9wIGlzIDE1NTEKK1BBU1MgcmVjdHNbNF0ud2lkdGggaXMgMzg3CitQ
QVNTIHJlY3RzWzRdLmhlaWdodCBpcyAxOAorUEFTUyByZWN0c1s1XS5sZWZ0IGlzIDgKK1BBU1Mg
cmVjdHNbNV0udG9wIGlzIDE1OTEKK1BBU1MgcmVjdHNbNV0ud2lkdGggaXMgMzk3CitQQVNTIHJl
Y3RzWzVdLmhlaWdodCBpcyAxOAorUEFTUyByZWN0c1s2XS5sZWZ0IGlzIDgKK1BBU1MgcmVjdHNb
Nl0udG9wIGlzIDE2MzEKK1BBU1MgcmVjdHNbNl0ud2lkdGggaXMgMTcxCitQQVNTIHJlY3RzWzZd
LmhlaWdodCBpcyAxOAorVGVzdCA4CitQQVNTIHJlY3RzLmxlbmd0aCBpcyA0CitQQVNTIHJlY3Rz
WzBdLmxlZnQgaXMgMTY4CitQQVNTIHJlY3RzWzBdLnRvcCBpcyAxNjc4CitQQVNTIHJlY3RzWzBd
LndpZHRoIGlzIDI2OQorUEFTUyByZWN0c1swXS5oZWlnaHQgaXMgMzE2CitQQVNTIHJlY3RzWzFd
LmxlZnQgaXMgMTM3CitQQVNTIHJlY3RzWzFdLnRvcCBpcyAxNzA0CitQQVNTIHJlY3RzWzFdLndp
ZHRoIGlzIDI3MQorUEFTUyByZWN0c1sxXS5oZWlnaHQgaXMgMzE3CitQQVNTIHJlY3RzWzJdLmxl
ZnQgaXMgMTA3CitQQVNTIHJlY3RzWzJdLnRvcCBpcyAxNzI5CitQQVNTIHJlY3RzWzJdLndpZHRo
IGlzIDI0NgorUEFTUyByZWN0c1syXS5oZWlnaHQgaXMgMjg5CitQQVNTIHJlY3RzWzNdLmxlZnQg
aXMgNzYKK1BBU1MgcmVjdHNbM10udG9wIGlzIDE3NTUKK1BBU1MgcmVjdHNbM10ud2lkdGggaXMg
MjEyCitQQVNTIHJlY3RzWzNdLmhlaWdodCBpcyAyNDcKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9S
YW5nZS9nZXRDbGllbnRSZWN0cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL1JhbmdlL2dldENsaWVudFJlY3RzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9SYW5nZS9nZXRDbGllbnRSZWN0cy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDM0OSBAQAorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisuYmJveCB7CisgICAgcG9zaXRpb246
YWJzb2x1dGU7CisgICAgb3V0bGluZTogNXB4IHNvbGlkIHJnYmEoMjU1LCAwLCAwLCAuNzUpOwor
ICAgIHotaW5kZXg6IC0xOworfQorCisuYm94IHsKKyAgICB3aWR0aDogNDAwcHg7CisgICAgbGlu
ZS1oZWlnaHQ6IDQwcHg7Cit9CisKKy5vdXRlciB7CisgICAgb3V0bGluZTogMnB4IHNvbGlkIGdy
ZWVuOworfQorCisuaW5uZXIgeworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICB3aWR0
aDogNDBweDsKKyAgICBoZWlnaHQ6IDIwcHg7CisgICAgb3V0bGluZTogMnB4IHNvbGlkIGJsdWU7
Cit9CisKKyN0ZXN0OCB7CisgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSg1MHB4LCAx
MDBweCkgcm90YXRlKDUwZGVnKTsKK30KKworI2NvbnNvbGUgeworICAgIHBvc2l0aW9uOmFic29s
dXRlOworICAgIGxlZnQ6IDUwMHB4OworfQorI3Rlc3RBcmVhIHsKKyAgICB3aWR0aDogMzAwcHg7
Cit9CisKKzwvc3R5bGU+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxkaXYgaWQ9InRlc3RB
cmVhIj4KKworPGRpdiBjbGFzcz0iYm94IiBpZD0idGVzdDEiPkxvcmVtIGlwc3VtIGRvbG9yIHNp
dCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1w
b3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBh
ZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlz
IG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC48L2Rpdj4KKworPGJyPjxi
cj4KKworPGRpdiBjbGFzcz0iYm94IiBpZD0idGVzdDIiPkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBh
bWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3Ig
aW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBhZCBt
aW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5p
c2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC48L2Rpdj4KKworPGJyPjxicj4K
KworPGRpdiBjbGFzcz0iYm94IiBpZD0idGVzdDMiPkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0
LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5j
aWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5p
bSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kg
dXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC48L2Rpdj4KKworPGJyPjxicj4KKwor
PGRpdiBjbGFzcz0iYm94IiBpZD0idGVzdDQiPkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBj
b25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRp
ZHVudCB1dCBsYWJvcmUgZXQ8aW1nIHNyYz0iLi4vcmVzb3VyY2VzL2FiZS5wbmciIHdpZHRoPSI3
NiIgaGVpZ2h0PSIxMDMiPiBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZl
bmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBh
bGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LjwvZGl2PgorCis8YnI+PGJyPgorCis8ZGl2
IGNsYXNzPSJib3giIGlkPSJ0ZXN0NSI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNl
Y3RldHVyIGFkaXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50
IHV0IGxhYm9yZSBldDxpbWcgc3JjPSIuLi9yZXNvdXJjZXMvYWJlLnBuZyIgd2lkdGg9Ijc2IiBo
ZWlnaHQ9IjEwMyI+IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFt
LCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1
aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuPC9kaXY+CisKKzxicj48YnI+CisKKzxkaXYgY2xh
c3M9ImJveCIgaWQ9InRlc3Q2Ij5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0
dXIgYWRpcGlzaWNpbmcgZWxpdCwgc2VkIGRvIDxkaXYgY2xhc3M9Im91dGVyIj5laXVzbW9kIDxz
cGFuIGNsYXNzPSJpbm5lciI+PC9zcGFuPnRlbXBvcjwvZGl2PiBpbmNpZGlkdW50IHV0IGxhYm9y
ZSBldGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5v
c3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEg
Y29tbW9kbyBjb25zZXF1YXQuPC9kaXY+CisKKzxicj48YnI+CisKKzxkaXYgY2xhc3M9ImJveCIg
aWQ9InRlc3Q3Ij5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlz
aWNpbmcgZWxpdCwgc2VkIGRvIDxkaXYgY2xhc3M9Im91dGVyIj5laXVzbW9kIDxzcGFuIGNsYXNz
PSJpbm5lciI+PC9zcGFuPnRlbXBvcjwvZGl2PiBpbmNpZGlkdW50IHV0IGxhYm9yZSBldGRvbG9y
ZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhl
cmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBj
b25zZXF1YXQuPC9kaXY+CisKKzxicj48YnI+CisKKzxkaXYgY2xhc3M9ImJveCIgaWQ9InRlc3Q4
Ij5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxp
dCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBt
YWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNp
dGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25z
ZXF1YXQuPC9kaXY+CisKKzwvZGl2PgorCis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKworICAgIGZ1bmN0aW9uIGFkZEJCb3hPdmVyQ2xpZW50UmVjdChyZWN0KQorICAgIHsKKyAg
ICAgICAgdmFyIGJib3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAg
YmJveC5jbGFzc05hbWUgPSAiYmJveCI7CisgICAgICAgIHZhciBzdHlsZSA9ICIiOworICAgICAg
ICBzdHlsZSArPSAibGVmdDogIiAgICsgcmVjdC5sZWZ0ICsgInB4OyI7CisgICAgICAgIHN0eWxl
ICs9ICJ0b3A6ICIgICAgKyByZWN0LnRvcCArICJweDsiOworICAgICAgICBzdHlsZSArPSAid2lk
dGg6ICIgICsgKHJlY3QucmlnaHQgLSByZWN0LmxlZnQpICsgInB4OyI7CisgICAgICAgIHN0eWxl
ICs9ICJoZWlnaHQ6ICIgKyAocmVjdC5ib3R0b20gLSByZWN0LnRvcCkgKyAicHg7IjsKKyAgICAg
ICAgYmJveC5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgc3R5bGUpOworICAgICAgICBkb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoYmJveCk7CisgICAgfQorCisgICAgZnVuY3Rpb24g
YWRkQkJveE92ZXJDbGllbnRSZWN0cyhyZWN0cykKKyAgICB7CisgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgcmVjdHMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICBhZGRCQm94T3ZlckNsaWVu
dFJlY3QocmVjdHNbaV0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNob3cocmFuZ2UpCisgICAg
eworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBhZGRCQm94T3ZlckNsaWVudFJlY3RzKHJhbmdlLmdldENsaWVudFJl
Y3RzKCkpOworICAgIH0KKworICAgIC8vIFRlc3QgMQorICAgIGRlYnVnKCJUZXN0IDEiKQorICAg
IHZhciByYW5nZTEgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlMS5zZWxlY3RO
b2RlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0MScpKTsKKyAgICBzaG93KHJhbmdlMSk7
CisgICAgcmVjdHMgPSByYW5nZTEuZ2V0Q2xpZW50UmVjdHMoKTsKKyAgICBzaG91bGRCZSgicmVj
dHMubGVuZ3RoIiwgIjUiKTsKKyAgICBzaG91bGRCZSgicmVjdHNbMF0ubGVmdCIsICI4Iik7Cisg
ICAgc2hvdWxkQmUoInJlY3RzWzBdLnRvcCIsICI4Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzBd
LndpZHRoIiwgIjQwMCIpOworICAgIHNob3VsZEJlKCJyZWN0c1swXS5oZWlnaHQiLCAiMTYwIik7
CisgICAgc2hvdWxkQmUoInJlY3RzWzFdLmxlZnQiLCAiOCIpOworICAgIHNob3VsZEJlKCJyZWN0
c1sxXS50b3AiLCAiMTkiKTsKKyAgICBzaG91bGRCZSgicmVjdHNbMV0ud2lkdGgiLCAiMzk2Iik7
CisgICAgc2hvdWxkQmUoInJlY3RzWzFdLmhlaWdodCIsICIxOCIpOworICAgIHNob3VsZEJlKCJy
ZWN0c1syXS5sZWZ0IiwgIjgiKTsKKyAgICBzaG91bGRCZSgicmVjdHNbMl0udG9wIiwgIjU5Iik7
CisgICAgc2hvdWxkQmUoInJlY3RzWzJdLndpZHRoIiwgIjM5OCIpOworICAgIHNob3VsZEJlKCJy
ZWN0c1syXS5oZWlnaHQiLCAiMTgiKTsKKyAgICBzaG91bGRCZSgicmVjdHNbM10ubGVmdCIsICI4
Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzNdLnRvcCIsICI5OSIpOworICAgIHNob3VsZEJlKCJy
ZWN0c1szXS53aWR0aCIsICIzNjAiKTsKKyAgICBzaG91bGRCZSgicmVjdHNbM10uaGVpZ2h0Iiwg
IjE4Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzRdLmxlZnQiLCAiOCIpOworICAgIHNob3VsZEJl
KCJyZWN0c1s0XS50b3AiLCAiMTM5Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzRdLndpZHRoIiwg
IjMwNiIpOworICAgIHNob3VsZEJlKCJyZWN0c1s0XS5oZWlnaHQiLCAiMTgiKTsKKworICAgIC8v
IFRlc3QgMgorICAgIGRlYnVnKCJUZXN0IDIiKQorICAgIHZhciByYW5nZTIgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlMi5zZWxlY3ROb2RlQ29udGVudHMoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Rlc3QyJykpOworICAgIHNob3cocmFuZ2UyKTsKKyAgICByZWN0cyA9IHJh
bmdlMi5nZXRDbGllbnRSZWN0cygpOworICAgIHNob3VsZEJlKCJyZWN0cy5sZW5ndGgiLCAiNCIp
OworICAgIHNob3VsZEJlKCJyZWN0c1swXS5sZWZ0IiwgIjgiKTsKKyAgICBzaG91bGRCZSgicmVj
dHNbMF0udG9wIiwgIjIxNSIpOworICAgIHNob3VsZEJlKCJyZWN0c1swXS53aWR0aCIsICIzOTYi
KTsKKyAgICBzaG91bGRCZSgicmVjdHNbMF0uaGVpZ2h0IiwgIjE4Iik7CisgICAgc2hvdWxkQmUo
InJlY3RzWzFdLmxlZnQiLCAiOCIpOworICAgIHNob3VsZEJlKCJyZWN0c1sxXS50b3AiLCAiMjU1
Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzFdLndpZHRoIiwgIjM5OCIpOworICAgIHNob3VsZEJl
KCJyZWN0c1sxXS5oZWlnaHQiLCAiMTgiKTsKKyAgICBzaG91bGRCZSgicmVjdHNbMl0ubGVmdCIs
ICI4Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzJdLnRvcCIsICIyOTUiKTsKKyAgICBzaG91bGRC
ZSgicmVjdHNbMl0ud2lkdGgiLCAiMzYwIik7CisgICAgc2hvdWxkQmUoInJlY3RzWzJdLmhlaWdo
dCIsICIxOCIpOworICAgIHNob3VsZEJlKCJyZWN0c1szXS5sZWZ0IiwgIjgiKTsKKyAgICBzaG91
bGRCZSgicmVjdHNbM10udG9wIiwgIjMzNSIpOworICAgIHNob3VsZEJlKCJyZWN0c1szXS53aWR0
aCIsICIzMDYiKTsKKyAgICBzaG91bGRCZSgicmVjdHNbM10uaGVpZ2h0IiwgIjE4Iik7CisKKyAg
ICAvLyBUZXN0IDMKKyAgICBkZWJ1ZygiVGVzdCAzIikKKyAgICB2YXIgcmFuZ2UzID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZTMuc2V0U3RhcnQoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Rlc3QzJykuZmlyc3RDaGlsZCwgMTApOworICAgIHJhbmdlMy5zZXRFbmQoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QzJykubGFzdENoaWxkLCAyMDApOworICAgIHNob3cocmFu
Z2UzKTsKKyAgICByZWN0cyA9IHJhbmdlMy5nZXRDbGllbnRSZWN0cygpOworICAgIHNob3VsZEJl
KCJyZWN0cy5sZW5ndGgiLCAiNCIpOworICAgIHNob3VsZEJlKCJyZWN0c1swXS5sZWZ0IiwgIjgw
Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzBdLnRvcCIsICI0MTEiKTsKKyAgICBzaG91bGRCZSgi
cmVjdHNbMF0ud2lkdGgiLCAiMzI0Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzBdLmhlaWdodCIs
ICIxOCIpOworICAgIHNob3VsZEJlKCJyZWN0c1sxXS5sZWZ0IiwgIjgiKTsKKyAgICBzaG91bGRC
ZSgicmVjdHNbMV0udG9wIiwgIjQ1MSIpOworICAgIHNob3VsZEJlKCJyZWN0c1sxXS53aWR0aCIs
ICIzOTgiKTsKKyAgICBzaG91bGRCZSgicmVjdHNbMV0uaGVpZ2h0IiwgIjE4Iik7CisgICAgc2hv
dWxkQmUoInJlY3RzWzJdLmxlZnQiLCAiOCIpOworICAgIHNob3VsZEJlKCJyZWN0c1syXS50b3Ai
LCAiNDkxIik7CisgICAgc2hvdWxkQmUoInJlY3RzWzJdLndpZHRoIiwgIjM2MCIpOworICAgIHNo
b3VsZEJlKCJyZWN0c1syXS5oZWlnaHQiLCAiMTgiKTsKKyAgICBzaG91bGRCZSgicmVjdHNbM10u
bGVmdCIsICI4Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzNdLnRvcCIsICI1MzEiKTsKKyAgICBz
aG91bGRCZSgicmVjdHNbM10ud2lkdGgiLCAiODgiKTsKKyAgICBzaG91bGRCZSgicmVjdHNbM10u
aGVpZ2h0IiwgIjE4Iik7CisKKyAgICAvLyBUZXN0IDQgLSBTaG91bGQgbm90IGluY2x1ZGUgcmVj
dCBvZiB0aGUgaW1nLgorICAgIGRlYnVnKCJUZXN0IDQiKQorICAgIHZhciByYW5nZTQgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlNC5zZWxlY3ROb2RlKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd0ZXN0NCcpKTsKKyAgICBzaG93KHJhbmdlNCk7CisgICAgcmVjdHMgPSByYW5n
ZTQuZ2V0Q2xpZW50UmVjdHMoKTsKKyAgICBzaG91bGRCZSgicmVjdHMubGVuZ3RoIiwgIjciKTsK
KyAgICBzaG91bGRCZSgicmVjdHNbMF0ubGVmdCIsICI4Iik7CisgICAgc2hvdWxkQmUoInJlY3Rz
WzBdLnRvcCIsICI1OTYiKTsKKyAgICBzaG91bGRCZSgicmVjdHNbMF0ud2lkdGgiLCAiNDAwIik7
CisgICAgc2hvdWxkQmUoInJlY3RzWzBdLmhlaWdodCIsICIyNzgiKTsKKyAgICBzaG91bGRCZSgi
cmVjdHNbMV0ubGVmdCIsICI4Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzFdLnRvcCIsICI2MDci
KTsKKyAgICBzaG91bGRCZSgicmVjdHNbMV0ud2lkdGgiLCAiMzk2Iik7CisgICAgc2hvdWxkQmUo
InJlY3RzWzFdLmhlaWdodCIsICIxOCIpOworICAgIHNob3VsZEJlKCJyZWN0c1syXS5sZWZ0Iiwg
IjgiKTsKKyAgICBzaG91bGRCZSgicmVjdHNbMl0udG9wIiwgIjcyNSIpOworICAgIHNob3VsZEJl
KCJyZWN0c1syXS53aWR0aCIsICIyNDIiKTsKKyAgICBzaG91bGRCZSgicmVjdHNbMl0uaGVpZ2h0
IiwgIjE4Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzNdLmxlZnQiLCAiMzI2Iik7CisgICAgc2hv
dWxkQmUoInJlY3RzWzNdLnRvcCIsICI3MjUiKTsKKyAgICBzaG91bGRCZSgicmVjdHNbM10ud2lk
dGgiLCAiNDQiKTsKKyAgICBzaG91bGRCZSgicmVjdHNbM10uaGVpZ2h0IiwgIjE4Iik7CisgICAg
c2hvdWxkQmUoInJlY3RzWzRdLmxlZnQiLCAiOCIpOworICAgIHNob3VsZEJlKCJyZWN0c1s0XS50
b3AiLCAiNzY1Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzRdLndpZHRoIiwgIjM0MSIpOworICAg
IHNob3VsZEJlKCJyZWN0c1s0XS5oZWlnaHQiLCAiMTgiKTsKKyAgICBzaG91bGRCZSgicmVjdHNb
NV0ubGVmdCIsICI4Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzVdLnRvcCIsICI4MDUiKTsKKyAg
ICBzaG91bGRCZSgicmVjdHNbNV0ud2lkdGgiLCAiMzY2Iik7CisgICAgc2hvdWxkQmUoInJlY3Rz
WzVdLmhlaWdodCIsICIxOCIpOworICAgIHNob3VsZEJlKCJyZWN0c1s2XS5sZWZ0IiwgIjgiKTsK
KyAgICBzaG91bGRCZSgicmVjdHNbNl0udG9wIiwgIjg0NSIpOworICAgIHNob3VsZEJlKCJyZWN0
c1s2XS53aWR0aCIsICI2NyIpOworICAgIHNob3VsZEJlKCJyZWN0c1s2XS5oZWlnaHQiLCAiMTgi
KTsKKyAgICAKKyAgICAvLyBUZXN0IDUgLSBTaG91bGQgaW5jbHVkZSByZWN0IG9mIHRoZSBpbWcu
CisgICAgZGVidWcoIlRlc3QgNSIpOworICAgIHZhciByYW5nZTUgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgIHJhbmdlNS5zZXRTdGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVz
dDUnKS5maXJzdENoaWxkLCAxMCk7CisgICAgcmFuZ2U1LnNldEVuZChkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndGVzdDUnKS5sYXN0Q2hpbGQsIDUwKTsKKyAgICBzaG93KHJhbmdlNSk7CisgICAg
cmVjdHMgPSByYW5nZTUuZ2V0Q2xpZW50UmVjdHMoKTsKKyAgICBzaG91bGRCZSgicmVjdHMubGVu
Z3RoIiwgIjUiKTsKKyAgICBzaG91bGRCZSgicmVjdHNbMF0ubGVmdCIsICI4MCIpOworICAgIHNo
b3VsZEJlKCJyZWN0c1swXS50b3AiLCAiOTIxIik7CisgICAgc2hvdWxkQmUoInJlY3RzWzBdLndp
ZHRoIiwgIjMyNCIpOworICAgIHNob3VsZEJlKCJyZWN0c1swXS5oZWlnaHQiLCAiMTgiKTsKKyAg
ICBzaG91bGRCZSgicmVjdHNbMV0ubGVmdCIsICI4Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzFd
LnRvcCIsICIxMDM5Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzFdLndpZHRoIiwgIjI0MiIpOwor
ICAgIHNob3VsZEJlKCJyZWN0c1sxXS5oZWlnaHQiLCAiMTgiKTsKKyAgICBzaG91bGRCZSgicmVj
dHNbMl0ubGVmdCIsICIyNTAiKTsKKyAgICBzaG91bGRCZSgicmVjdHNbMl0udG9wIiwgIjk1MCIp
OworICAgIHNob3VsZEJlKCJyZWN0c1syXS53aWR0aCIsICI3NiIpOworICAgIHNob3VsZEJlKCJy
ZWN0c1syXS5oZWlnaHQiLCAiMTAzIik7CisgICAgc2hvdWxkQmUoInJlY3RzWzNdLmxlZnQiLCAi
MzI2Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzNdLnRvcCIsICIxMDM5Iik7CisgICAgc2hvdWxk
QmUoInJlY3RzWzNdLndpZHRoIiwgIjQ0Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzNdLmhlaWdo
dCIsICIxOCIpOworICAgIHNob3VsZEJlKCJyZWN0c1s0XS5sZWZ0IiwgIjgiKTsKKyAgICBzaG91
bGRCZSgicmVjdHNbNF0udG9wIiwgIjEwNzkiKTsKKyAgICBzaG91bGRCZSgicmVjdHNbNF0ud2lk
dGgiLCAiMjg0Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzRdLmhlaWdodCIsICIxOCIpOworCisg
ICAgLy8gVGVzdCA2IC0gU2hvdWxkIG5vdCBpbmNsdWRlIGdyZWVuIG9yIGJsdWUgYm94ZXMKKyAg
ICBkZWJ1ZygiVGVzdCA2Iik7CisgICAgdmFyIHJhbmdlNiA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2U2LnNlbGVjdE5vZGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Q2
JykpOworICAgIHNob3cocmFuZ2U2KTsKKyAgICByZWN0cyA9IHJhbmdlNi5nZXRDbGllbnRSZWN0
cygpOworICAgIHNob3VsZEJlKCJyZWN0cy5sZW5ndGgiLCAiNyIpOworICAgIHNob3VsZEJlKCJy
ZWN0c1swXS5sZWZ0IiwgIjgiKTsKKyAgICBzaG91bGRCZSgicmVjdHNbMF0udG9wIiwgIjEyMjQi
KTsKKyAgICBzaG91bGRCZSgicmVjdHNbMF0ud2lkdGgiLCAiNDAwIik7CisgICAgc2hvdWxkQmUo
InJlY3RzWzBdLmhlaWdodCIsICIyMDAiKTsKKyAgICBzaG91bGRCZSgicmVjdHNbMV0ubGVmdCIs
ICI4Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzFdLnRvcCIsICIxMjM1Iik7CisgICAgc2hvdWxk
QmUoInJlY3RzWzFdLndpZHRoIiwgIjM5NiIpOworICAgIHNob3VsZEJlKCJyZWN0c1sxXS5oZWln
aHQiLCAiMTgiKTsKKyAgICBzaG91bGRCZSgicmVjdHNbMl0ubGVmdCIsICI4Iik7CisgICAgc2hv
dWxkQmUoInJlY3RzWzJdLnRvcCIsICIxMjc1Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzJdLndp
ZHRoIiwgIjU3Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzJdLmhlaWdodCIsICIxOCIpOworICAg
IHNob3VsZEJlKCJyZWN0c1szXS5sZWZ0IiwgIjEwNSIpOworICAgIHNob3VsZEJlKCJyZWN0c1sz
XS50b3AiLCAiMTI3NSIpOworICAgIHNob3VsZEJlKCJyZWN0c1szXS53aWR0aCIsICI0NCIpOwor
ICAgIHNob3VsZEJlKCJyZWN0c1szXS5oZWlnaHQiLCAiMTgiKTsKKyAgICBzaG91bGRCZSgicmVj
dHNbNF0ubGVmdCIsICI4Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzRdLnRvcCIsICIxMzE1Iik7
CisgICAgc2hvdWxkQmUoInJlY3RzWzRdLndpZHRoIiwgIjM4NyIpOworICAgIHNob3VsZEJlKCJy
ZWN0c1s0XS5oZWlnaHQiLCAiMTgiKTsKKyAgICBzaG91bGRCZSgicmVjdHNbNV0ubGVmdCIsICI4
Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzVdLnRvcCIsICIxMzU1Iik7CisgICAgc2hvdWxkQmUo
InJlY3RzWzVdLndpZHRoIiwgIjM5NyIpOworICAgIHNob3VsZEJlKCJyZWN0c1s1XS5oZWlnaHQi
LCAiMTgiKTsKKyAgICBzaG91bGRCZSgicmVjdHNbNl0ubGVmdCIsICI4Iik7CisgICAgc2hvdWxk
QmUoInJlY3RzWzZdLnRvcCIsICIxMzk1Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzZdLndpZHRo
IiwgIjE3MSIpOworICAgIHNob3VsZEJlKCJyZWN0c1s2XS5oZWlnaHQiLCAiMTgiKTsKKworICAg
IC8vIFRlc3QgNyAtIFNob3VsZCBpbmNsdWRlIGdyZWVuIGJ1dCBub3QgYmx1ZSBib3gKKyAgICBk
ZWJ1ZygiVGVzdCA3Iik7CisgICAgdmFyIHJhbmdlNyA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2U3LnNlbGVjdE5vZGVDb250ZW50cyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
dGVzdDcnKSk7CisgICAgc2hvdyhyYW5nZTcpOworICAgIHJlY3RzID0gcmFuZ2U3LmdldENsaWVu
dFJlY3RzKCk7CisgICAgc2hvdWxkQmUoInJlY3RzLmxlbmd0aCIsICI3Iik7CisgICAgc2hvdWxk
QmUoInJlY3RzWzBdLmxlZnQiLCAiOCIpOworICAgIHNob3VsZEJlKCJyZWN0c1swXS50b3AiLCAi
MTQ3MSIpOworICAgIHNob3VsZEJlKCJyZWN0c1swXS53aWR0aCIsICIzOTYiKTsKKyAgICBzaG91
bGRCZSgicmVjdHNbMF0uaGVpZ2h0IiwgIjE4Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzFdLmxl
ZnQiLCAiOCIpOworICAgIHNob3VsZEJlKCJyZWN0c1sxXS50b3AiLCAiMTUwMCIpOworICAgIHNo
b3VsZEJlKCJyZWN0c1sxXS53aWR0aCIsICI0MDAiKTsKKyAgICBzaG91bGRCZSgicmVjdHNbMV0u
aGVpZ2h0IiwgIjQwIik7CisgICAgc2hvdWxkQmUoInJlY3RzWzJdLmxlZnQiLCAiOCIpOworICAg
IHNob3VsZEJlKCJyZWN0c1syXS50b3AiLCAiMTUxMSIpOworICAgIHNob3VsZEJlKCJyZWN0c1sy
XS53aWR0aCIsICI1NyIpOworICAgIHNob3VsZEJlKCJyZWN0c1syXS5oZWlnaHQiLCAiMTgiKTsK
KyAgICBzaG91bGRCZSgicmVjdHNbM10ubGVmdCIsICIxMDUiKTsKKyAgICBzaG91bGRCZSgicmVj
dHNbM10udG9wIiwgIjE1MTEiKTsKKyAgICBzaG91bGRCZSgicmVjdHNbM10ud2lkdGgiLCAiNDQi
KTsKKyAgICBzaG91bGRCZSgicmVjdHNbM10uaGVpZ2h0IiwgIjE4Iik7CisgICAgc2hvdWxkQmUo
InJlY3RzWzRdLmxlZnQiLCAiOCIpOworICAgIHNob3VsZEJlKCJyZWN0c1s0XS50b3AiLCAiMTU1
MSIpOworICAgIHNob3VsZEJlKCJyZWN0c1s0XS53aWR0aCIsICIzODciKTsKKyAgICBzaG91bGRC
ZSgicmVjdHNbNF0uaGVpZ2h0IiwgIjE4Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzVdLmxlZnQi
LCAiOCIpOworICAgIHNob3VsZEJlKCJyZWN0c1s1XS50b3AiLCAiMTU5MSIpOworICAgIHNob3Vs
ZEJlKCJyZWN0c1s1XS53aWR0aCIsICIzOTciKTsKKyAgICBzaG91bGRCZSgicmVjdHNbNV0uaGVp
Z2h0IiwgIjE4Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzZdLmxlZnQiLCAiOCIpOworICAgIHNo
b3VsZEJlKCJyZWN0c1s2XS50b3AiLCAiMTYzMSIpOworICAgIHNob3VsZEJlKCJyZWN0c1s2XS53
aWR0aCIsICIxNzEiKTsKKyAgICBzaG91bGRCZSgicmVjdHNbNl0uaGVpZ2h0IiwgIjE4Iik7CisK
KyAgICAvLyBUZXN0IDgKKyAgICBkZWJ1ZygiVGVzdCA4Iik7CisgICAgdmFyIHJhbmdlOCA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2U4LnNlbGVjdE5vZGVDb250ZW50cyhkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdDgnKSk7CisgICAgc2hvdyhyYW5nZTgpOworICAgIHJl
Y3RzID0gcmFuZ2U4LmdldENsaWVudFJlY3RzKCk7CisgICAgc2hvdWxkQmUoInJlY3RzLmxlbmd0
aCIsICI0Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzBdLmxlZnQiLCAiMTY4Iik7CisgICAgc2hv
dWxkQmUoInJlY3RzWzBdLnRvcCIsICIxNjc4Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzBdLndp
ZHRoIiwgIjI2OSIpOworICAgIHNob3VsZEJlKCJyZWN0c1swXS5oZWlnaHQiLCAiMzE2Iik7Cisg
ICAgc2hvdWxkQmUoInJlY3RzWzFdLmxlZnQiLCAiMTM3Iik7CisgICAgc2hvdWxkQmUoInJlY3Rz
WzFdLnRvcCIsICIxNzA0Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzFdLndpZHRoIiwgIjI3MSIp
OworICAgIHNob3VsZEJlKCJyZWN0c1sxXS5oZWlnaHQiLCAiMzE3Iik7CisgICAgc2hvdWxkQmUo
InJlY3RzWzJdLmxlZnQiLCAiMTA3Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzJdLnRvcCIsICIx
NzI5Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzJdLndpZHRoIiwgIjI0NiIpOworICAgIHNob3Vs
ZEJlKCJyZWN0c1syXS5oZWlnaHQiLCAiMjg5Iik7CisgICAgc2hvdWxkQmUoInJlY3RzWzNdLmxl
ZnQiLCAiNzYiKTsKKyAgICBzaG91bGRCZSgicmVjdHNbM10udG9wIiwgIjE3NTUiKTsKKyAgICBz
aG91bGRCZSgicmVjdHNbM10ud2lkdGgiLCAiMjEyIik7CisgICAgc2hvdWxkQmUoInJlY3RzWzNd
LmhlaWdodCIsICIyNDciKTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICAgICAgdmFyIGFyZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdEFyZWEn
KTsKKyAgICAgICAgYXJlYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGFyZWEpOworICAgIH0KKwor
ICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVz
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDg3NzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9X
aW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
MjE5LDYgKzEyMTksOCBAQCB3aW5kb3cuUmFuZ2UucHJvdG90eXBlLmRlbGV0ZUNvbnRlbnRzIFtm
CiB3aW5kb3cuUmFuZ2UucHJvdG90eXBlLmRldGFjaCBbZnVuY3Rpb25dCiB3aW5kb3cuUmFuZ2Uu
cHJvdG90eXBlLmV4cGFuZCBbZnVuY3Rpb25dCiB3aW5kb3cuUmFuZ2UucHJvdG90eXBlLmV4dHJh
Y3RDb250ZW50cyBbZnVuY3Rpb25dCit3aW5kb3cuUmFuZ2UucHJvdG90eXBlLmdldEJvdW5kaW5n
Q2xpZW50UmVjdCBbZnVuY3Rpb25dCit3aW5kb3cuUmFuZ2UucHJvdG90eXBlLmdldENsaWVudFJl
Y3RzIFtmdW5jdGlvbl0KIHdpbmRvdy5SYW5nZS5wcm90b3R5cGUuaW5zZXJ0Tm9kZSBbZnVuY3Rp
b25dCiB3aW5kb3cuUmFuZ2UucHJvdG90eXBlLmludGVyc2VjdHNOb2RlIFtmdW5jdGlvbl0KIHdp
bmRvdy5SYW5nZS5wcm90b3R5cGUuaXNQb2ludEluUmFuZ2UgW2Z1bmN0aW9uXQo=
</data>
<flag name="review"
          id="21389"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>