<?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>153960</bug_id>
          
          <creation_ts>2016-02-07 01:31:07 -0800</creation_ts>
          <short_desc>Update how the benchmark is run</short_desc>
          <delta_ts>2016-02-08 19:32:01 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jon Lee">jonlee</reporter>
          <assigned_to name="Jon Lee">jonlee</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>rniwa</cc>
    
    <cc>sabouhallawa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1162714</commentid>
    <comment_count>0</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2016-02-07 01:31:07 -0800</bug_when>
    <thetext>Update how the benchmark is run</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162715</commentid>
    <comment_count>1</comment_count>
      <attachid>270815</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2016-02-07 01:33:06 -0800</bug_when>
    <thetext>Created attachment 270815
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163111</commentid>
    <comment_count>2</comment_count>
      <attachid>270815</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-02-08 18:24:15 -0800</bug_when>
    <thetext>Comment on attachment 270815
Patch

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

&gt; PerformanceTests/Animometer/resources/runner/benchmark-runner.js:99
&gt; +            samplers[test.name] = results;

Should we change the array name: samplers =&gt; sampleResults (or something similar)?

&gt; PerformanceTests/Animometer/tests/resources/main.js:37
&gt; +        return timestamp &gt; this._endTimestamp;

Shouldn&apos;t the condition be timestamp &gt;= this._endTimestamp? Any extra work, like changing the complexity, skipping layout frames or drawing will exceed the test time limit.

&gt; PerformanceTests/Animometer/tests/resources/main.js:42
&gt; +        return this._sampler.process();

Should not the function be renamed processResults() or something else? It is hard to see the relationship between &apos;results&apos; and &apos;sampler.process&apos;.

&gt; PerformanceTests/Animometer/tests/resources/main.js:62
&gt; +                time: timestamp - this._startTimestamp,

Shouldn&apos;t time =&gt; timeDelta, intervalLength,  or duration?

&gt; PerformanceTests/Animometer/tests/resources/main.js:142
&gt; +        if (!this._startedSampling &amp;&amp; timestamp &gt; this._samplingTimestamp) {

Why do we have to skip this statement for the first time when timestamp == this._samplingTimestamp?

&gt; PerformanceTests/Animometer/tests/resources/main.js:374
&gt; +            this._stage.animate(0);

I do not understand this. Why we have to animate the stage with timeDelta=0 for 100 ms?

&gt; PerformanceTests/Animometer/tests/resources/main.js:380
&gt; +        if (this._controller.shouldStop(this._currentTimestamp)) {

Shouldn&apos;t _controller.update() come after checking _controller.shouldStop()?

&gt; PerformanceTests/ChangeLog:59
&gt; +                The previous version of this controller ignored the frame that came after the

Unneeded spaces.

&gt; PerformanceTests/ChangeLog:82
&gt; +        the estimation error converges, so calculate the gain ahead of time.

This is great change. Thanks for taking the time for investigating the math and simplifying the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163112</commentid>
    <comment_count>3</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-02-08 18:24:38 -0800</bug_when>
    <thetext>Unofficial r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163126</commentid>
    <comment_count>4</comment_count>
      <attachid>270815</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2016-02-08 19:18:50 -0800</bug_when>
    <thetext>Comment on attachment 270815
Patch

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

&gt;&gt; PerformanceTests/Animometer/resources/runner/benchmark-runner.js:99
&gt;&gt; +            samplers[test.name] = results;
&gt; 
&gt; Should we change the array name: samplers =&gt; sampleResults (or something similar)?

Sure. I&apos;ll do that in a follow-up.

&gt;&gt; PerformanceTests/Animometer/tests/resources/main.js:37
&gt;&gt; +        return timestamp &gt; this._endTimestamp;
&gt; 
&gt; Shouldn&apos;t the condition be timestamp &gt;= this._endTimestamp? Any extra work, like changing the complexity, skipping layout frames or drawing will exceed the test time limit.

In _animateLoop, if I move the update() call to after shouldStop(), then I need to make sure that this last frame has a chance to process and get sampled. Otherwise some controllers like the ramp will not get the last ramp sampled.

&gt;&gt; PerformanceTests/Animometer/tests/resources/main.js:42
&gt;&gt; +        return this._sampler.process();
&gt; 
&gt; Should not the function be renamed processResults() or something else? It is hard to see the relationship between &apos;results&apos; and &apos;sampler.process&apos;.

Done. I went with processSamples().

&gt;&gt; PerformanceTests/Animometer/tests/resources/main.js:62
&gt;&gt; +                time: timestamp - this._startTimestamp,
&gt; 
&gt; Shouldn&apos;t time =&gt; timeDelta, intervalLength,  or duration?

Here, I&apos;m offsetting all of the absolute timestamps by the start timestamp so that the first sample is at time 0.

&gt;&gt; PerformanceTests/Animometer/tests/resources/main.js:142
&gt;&gt; +        if (!this._startedSampling &amp;&amp; timestamp &gt; this._samplingTimestamp) {
&gt; 
&gt; Why do we have to skip this statement for the first time when timestamp == this._samplingTimestamp?

You&apos;re right. Updated to timestamp &gt;= this._samplingTimestamp.

&gt;&gt; PerformanceTests/Animometer/tests/resources/main.js:374
&gt;&gt; +            this._stage.animate(0);
&gt; 
&gt; I do not understand this. Why we have to animate the stage with timeDelta=0 for 100 ms?

I want to warm up the scene by mimicking the animation loop we will take once the test starts. I need to keep this._previousTImestamp where it is so we know when 100 ms is passed. I was ok with keeping the scene still during this time period, otherwise I&apos;d have to keep track of another timestamp to properly pass the frame length.

&gt;&gt; PerformanceTests/Animometer/tests/resources/main.js:380
&gt;&gt; +        if (this._controller.shouldStop(this._currentTimestamp)) {
&gt; 
&gt; Shouldn&apos;t _controller.update() come after checking _controller.shouldStop()?

I can move it to afterwards.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163129</commentid>
    <comment_count>5</comment_count>
      <attachid>270815</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2016-02-08 19:31:50 -0800</bug_when>
    <thetext>Comment on attachment 270815
Patch

committed 196288</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270815</attachid>
            <date>2016-02-07 01:33:06 -0800</date>
            <delta_ts>2016-02-08 19:31:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153960-20160207013243.patch</filename>
            <type>text/plain</type>
            <size>48086</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2MjMxCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvZGV2ZWxvcGVyLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
ZGV2ZWxvcGVyLmh0bWwKaW5kZXggOWZhM2EwYTU4YTMxOTc1ZGEzNzI3ODgwYWRhMmFhNGRhZGQx
M2E0MC4uYzU4NDI4YmM3ZTJjMTdiNmUxNWUxYmU4ZGQ4YTExNGY1YzM4MTE1MiAxMDA2NDQKLS0t
IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL2RldmVsb3Blci5odG1sCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci9kZXZlbG9wZXIuaHRtbApAQCAtNDQsOCArNDQsNyBAQAog
ICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICA8aDM+QWRq
dXN0aW5nIHRoZSB0ZXN0IGNvbXBsZXhpdHk6PC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAg
IDx1bD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGxhYmVsPjxpbnB1dCBuYW1l
PSJhZGp1c3RtZW50IiB0eXBlPSJyYWRpbyIgdmFsdWU9ImZpeGVkIj4gS2VlcCBjb25zdGFudDwv
bGFiZWw+PC9saT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGxhYmVsPjxpbnB1
dCBuYW1lPSJhZGp1c3RtZW50IiB0eXBlPSJyYWRpbyIgdmFsdWU9ImZpeGVkLWFmdGVyLXdhcm11
cCI+IEtlZXAgY29uc3RhbnQgYWZ0ZXIgd2FybXVwIHRvIHRhcmdldCBGUFM8L2xhYmVsPjwvbGk+
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxsYWJlbD48aW5wdXQgbmFtZT0iYWRq
dXN0bWVudCIgdHlwZT0icmFkaW8iIHZhbHVlPSJmaXhlZCI+IEtlZXAgYXQgYSBmaXhlZCBjb21w
bGV4aXR5PC9sYWJlbD48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48bGFi
ZWw+PGlucHV0IG5hbWU9ImFkanVzdG1lbnQiIHR5cGU9InJhZGlvIiB2YWx1ZT0iYWRhcHRpdmUi
IGNoZWNrZWQ+IE1haW50YWluIHRhcmdldCBGUFM8L2xhYmVsPjwvbGk+CiAgICAgICAgICAgICAg
ICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICA8L2xpPgpAQCAtNTMsNyArNTIs
MTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5UYXJnZXQgZnJhbWUgcmF0ZTog
PGlucHV0IHR5cGU9Im51bWJlciIgaWQ9ImZyYW1lLXJhdGUiIHZhbHVlPSI1MCI+IEZQUzwvbGFi
ZWw+CiAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgIDxsaT4K
LSAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlk
PSJlc3RpbWF0ZWQtZnJhbWUtcmF0ZSIgY2hlY2tlZD4gRmlsdGVyIGZyYW1lIHJhdGUgY2FsY3Vs
YXRpb248L2xhYmVsPgorICAgICAgICAgICAgICAgICAgICAgICAgPGgzPkthbG1hbiBmaWx0ZXIg
ZXN0aW1hdGVkIGVycm9yOjwvaDM+CisgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxsYWJlbD5Qcm9jZXNzIGVycm9yIChRKTogPGlu
cHV0IHR5cGU9Im51bWJlciIgaWQ9ImthbG1hbi1wcm9jZXNzLWVycm9yIiB2YWx1ZT0iMSI+PC9s
YWJlbD48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48bGFiZWw+TWVhc3Vy
ZW1lbnQgZXJyb3IgKFIpOiA8aW5wdXQgdHlwZT0ibnVtYmVyIiBpZD0ia2FsbWFuLW1lYXN1cmVt
ZW50LWVycm9yIiB2YWx1ZT0iNCI+PC9sYWJlbD48L2xpPgorICAgICAgICAgICAgICAgICAgICAg
ICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAg
PC91bD4KICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgpAQCAtMTAwLDEyICsxMDMsMTAgQEAK
ICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48bGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94
IiBuYW1lPSJhdmVyYWdlcyIgY2hlY2tlZD4gQXZlcmFnZXM8L2xhYmVsPjwvbGk+CiAgICAgICAg
ICAgICAgICAgICAgICAgICA8bGk+PGxhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0i
Y29tcGxleGl0eSIgY2hlY2tlZD4gQ29tcGxleGl0eTwvbGFiZWw+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbXBsZXhpdHkiPjwvc3Bhbj48L2xpPgotICAgICAg
ICAgICAgICAgICAgICAgICAgPGxpPjxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9
InJhd0ZQUyI+IFJhdyBGUFM8L2xhYmVsPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxs
YWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InJhd0ZQUyIgY2hlY2tlZD4gUmF3IEZQ
UzwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJhd0ZQ
UyI+PC9zcGFuPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGxhYmVsPjxpbnB1
dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iZmlsdGVyZWRGUFMiIGNoZWNrZWQ+IEZpbHRlcmVkIEZQ
UzwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZpbHRl
cmVkRlBTIj48L3NwYW4+PC9saT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48bGFiZWw+
PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJpbnRlcnZhbEZQUyI+IEF2ZXJhZ2UgRlBTIHBl
ciBzYW1wbGUgaW50ZXJ2YWw8L2xhYmVsPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxz
cGFuIGNsYXNzPSJpbnRlcnZhbEZQUyI+PC9zcGFuPjwvbGk+CiAgICAgICAgICAgICAgICAgICAg
IDwvdWw+CiAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgPC9uYXY+CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5l
ci9hbmltb21ldGVyLmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMv
ZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuY3NzCmluZGV4IGI1NDcwZWQxNDA3OWM3YTQ0NzVmNGI2
MDkzMDQ2OGJlNjliODg5ZWUuLjFmMDMxN2Q1NjBlYzk0NTdmYTM2MzQyYmMxODgxYzg5ODNjMTkw
OTIgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVi
dWctcnVubmVyL2FuaW1vbWV0ZXIuY3NzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuY3NzCkBAIC0zNDksNiArMzQ5LDcg
QEAgbGFiZWwudHJlZS1sYWJlbCB7CiAjdGVzdC1ncmFwaC1kYXRhIHsKICAgICBmbGV4OiAxIDEg
YXV0bzsKICAgICBhbGlnbi1zZWxmOiBzdHJldGNoOworICAgIHotaW5kZXg6IDE7CiB9CiAKICN0
ZXN0LWdyYXBoIG5hdiB7CkBAIC00NDEsMTIgKzQ0MiwxMiBAQCBsYWJlbC50cmVlLWxhYmVsIHsK
IH0KIAogI2ZpbHRlcmVkRlBTIHBhdGggewotICAgIHN0cm9rZTogcmdiYSgyNTAsIDczLCAzNywg
LjcpOwotICAgIHN0cm9rZS13aWR0aDogMnB4OworICAgIHN0cm9rZTogaHNsYSgzMCwgOTYlLCA1
NiUsIC43KTsKKyAgICBzdHJva2Utd2lkdGg6IDFweDsKIH0KIAogI2ZpbHRlcmVkRlBTIGNpcmNs
ZSB7Ci0gICAgZmlsbDogcmdiKDI1MCwgNzMsIDM3KTsKKyAgICBmaWxsOiBoc2woMzAsIDk2JSwg
NTYlKTsKIH0KIAogI3Jhd0ZQUyBwYXRoIHsKQEAgLTQ1NywxMiArNDU4LDMgQEAgbGFiZWwudHJl
ZS1sYWJlbCB7CiAjcmF3RlBTIGNpcmNsZSB7CiAgICAgZmlsbDogcmdiKDI1MCwgNzMsIDM3KTsK
IH0KLQotI2ludGVydmFsRlBTIHBhdGggewotICAgIHN0cm9rZTogaHNsYSgzMCwgOTYlLCA1NiUs
IC43KTsKLSAgICBzdHJva2Utd2lkdGg6IDFweDsKLX0KLQotI2ludGVydmFsRlBTIGNpcmNsZSB7
Ci0gICAgZmlsbDogaHNsKDMwLCA5NiUsIDU2JSk7Ci19CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9ncmFwaC5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2dyYXBoLmpzCmlu
ZGV4IDQwNzc1OTM5MzlmNTk2YmExOTY5MGMzMDAwZmVmODdmNTBmNmNhNDUuLmU1MTg1NjMwMGMx
MDYwZjAyOTljZTA0NDRlMWVkYzMyMDIxOWRmZjMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2dyYXBoLmpzCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2dyYXBoLmpzCkBA
IC0xLDkgKzEsMTMgQEAKIFV0aWxpdGllcy5leHRlbmRPYmplY3Qod2luZG93LmJlbmNobWFya0Nv
bnRyb2xsZXIsIHsKKyAgICBsYXlvdXRDb3VudGVyOiAwLAorCiAgICAgdXBkYXRlR3JhcGhEYXRh
OiBmdW5jdGlvbihncmFwaERhdGEpCiAgICAgewogICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LWdyYXBoLWRhdGEiKTsKICAgICAgICAgZWxlbWVudC5p
bm5lckhUTUwgPSAiIjsKLSAgICAgICAgdmFyIG1hcmdpbnMgPSBuZXcgSW5zZXRzKDEwLCAzMCwg
MzAsIDQwKTsKKyAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiaHIiKS5zdHlsZS53aWR0
aCA9IHRoaXMubGF5b3V0Q291bnRlcisrICsgInB4IjsKKworICAgICAgICB2YXIgbWFyZ2lucyA9
IG5ldyBJbnNldHMoMzAsIDMwLCAzMCwgNDApOwogICAgICAgICB2YXIgc2l6ZSA9IFBvaW50LmVs
ZW1lbnRDbGllbnRTaXplKGVsZW1lbnQpLnN1YnRyYWN0KG1hcmdpbnMuc2l6ZSk7CiAKICAgICAg
ICAgdmFyIHN2ZyA9IGQzLnNlbGVjdCgiI3Rlc3QtZ3JhcGgtZGF0YSIpLmFwcGVuZCgic3ZnIikK
QEAgLTI5LDcgKzMzLDggQEAgVXRpbGl0aWVzLmV4dGVuZE9iamVjdCh3aW5kb3cuYmVuY2htYXJr
Q29udHJvbGxlciwgewogICAgICAgICAvLyBBeGVzCiAgICAgICAgIHZhciB4QXhpcyA9IGQzLnN2
Zy5heGlzKCkKICAgICAgICAgICAgICAgICAuc2NhbGUoeCkKLSAgICAgICAgICAgICAgICAub3Jp
ZW50KCJib3R0b20iKTsKKyAgICAgICAgICAgICAgICAub3JpZW50KCJib3R0b20iKQorICAgICAg
ICAgICAgICAgIC50aWNrRm9ybWF0KGZ1bmN0aW9uKGQpIHsgcmV0dXJuIChkLzEwMDApLnRvRml4
ZWQoMCk7IH0pOwogICAgICAgICB2YXIgeUF4aXNMZWZ0ID0gZDMuc3ZnLmF4aXMoKQogICAgICAg
ICAgICAgICAgIC5zY2FsZSh5TGVmdCkKICAgICAgICAgICAgICAgICAub3JpZW50KCJsZWZ0Iik7
CkBAIC0xMjcsOSArMTMyLDYgQEAgVXRpbGl0aWVzLmV4dGVuZE9iamVjdCh3aW5kb3cuYmVuY2ht
YXJrQ29udHJvbGxlciwgewogICAgICAgICB2YXIgZmlsdGVyZWREYXRhID0gZ3JhcGhEYXRhLnNh
bXBsZXMuZmlsdGVyKGZ1bmN0aW9uIChzYW1wbGUpIHsKICAgICAgICAgICAgIHJldHVybiAic21v
b3RoZWRGUFMiIGluIHNhbXBsZTsKICAgICAgICAgfSk7Ci0gICAgICAgIHZhciBpbnRlcnZhbERh
dGEgPSBncmFwaERhdGEuc2FtcGxlcy5maWx0ZXIoZnVuY3Rpb24gKHNhbXBsZSkgewotICAgICAg
ICAgICAgcmV0dXJuICJpbnRlcnZhbEZQUyIgaW4gc2FtcGxlOwotICAgICAgICB9KTsKIAogICAg
ICAgICBmdW5jdGlvbiBhZGREYXRhKG5hbWUsIGRhdGEsIHlDb29yZGluYXRlQ2FsbGJhY2ssIHBv
aW50UmFkaXVzLCBvbWl0TGluZSkgewogICAgICAgICAgICAgdmFyIHN2Z0dyb3VwID0gc3ZnLmFw
cGVuZCgiZyIpLmF0dHIoImlkIiwgbmFtZSk7CkBAIC0xNTYsNyArMTU4LDYgQEAgVXRpbGl0aWVz
LmV4dGVuZE9iamVjdCh3aW5kb3cuYmVuY2htYXJrQ29udHJvbGxlciwgewogICAgICAgICBhZGRE
YXRhKCJjb21wbGV4aXR5IiwgYWxsRGF0YSwgZnVuY3Rpb24oZCkgeyByZXR1cm4geUxlZnQoZC5j
b21wbGV4aXR5KTsgfSwgMik7CiAgICAgICAgIGFkZERhdGEoInJhd0ZQUyIsIGFsbERhdGEsIGZ1
bmN0aW9uKGQpIHsgcmV0dXJuIHlSaWdodChkLmZwcyk7IH0sIDEpOwogICAgICAgICBhZGREYXRh
KCJmaWx0ZXJlZEZQUyIsIGZpbHRlcmVkRGF0YSwgZnVuY3Rpb24oZCkgeyByZXR1cm4geVJpZ2h0
KGQuc21vb3RoZWRGUFMpOyB9LCAyKTsKLSAgICAgICAgYWRkRGF0YSgiaW50ZXJ2YWxGUFMiLCBp
bnRlcnZhbERhdGEsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIHlSaWdodChkLmludGVydmFsRlBTKTsg
fSwgMik7CiAKICAgICAgICAgLy8gQXJlYSB0byBoYW5kbGUgbW91c2UgZXZlbnRzCiAgICAgICAg
IHZhciBhcmVhID0gc3ZnLmFwcGVuZCgicmVjdCIpCkBAIC0xNjcsNyArMTY4LDcgQEAgVXRpbGl0
aWVzLmV4dGVuZE9iamVjdCh3aW5kb3cuYmVuY2htYXJrQ29udHJvbGxlciwgewogICAgICAgICAg
ICAgLmF0dHIoImhlaWdodCIsIHNpemUueSk7CiAKICAgICAgICAgdmFyIHRpbWVCaXNlY3QgPSBk
My5iaXNlY3RvcihmdW5jdGlvbihkKSB7IHJldHVybiBkLnRpbWU7IH0pLnJpZ2h0OwotICAgICAg
ICB2YXIgc3RhdHNUb0hpZ2hsaWdodCA9IFsiY29tcGxleGl0eSIsICJyYXdGUFMiLCAiZmlsdGVy
ZWRGUFMiLCAiaW50ZXJ2YWxGUFMiXTsKKyAgICAgICAgdmFyIHN0YXRzVG9IaWdobGlnaHQgPSBb
ImNvbXBsZXhpdHkiLCAicmF3RlBTIiwgImZpbHRlcmVkRlBTIl07CiAgICAgICAgIGFyZWEub24o
Im1vdXNlb3ZlciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImN1cnNvciIpLmNsYXNzTGlzdC5yZW1vdmUoImhpZGRlbiIpOwogICAgICAgICAgICAg
ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3Rlc3QtZ3JhcGggbmF2IikuY2xhc3NMaXN0LnJlbW92
ZSgiaGlkZS1kYXRhIik7CkBAIC0xODksNyArMTkwLDcgQEAgVXRpbGl0aWVzLmV4dGVuZE9iamVj
dCh3aW5kb3cuYmVuY2htYXJrQ29udHJvbGxlciwgewogICAgICAgICAgICAgICAgIC5hdHRyKCJ4
MiIsIGN1cnNvcl94KQogICAgICAgICAgICAgICAgIC5hdHRyKCJ5MiIsIHlSaWdodChjdXJzb3Jf
eSkpOwogCi0gICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjdGVzdC1ncmFwaCBu
YXYgLnRpbWUiKS50ZXh0Q29udGVudCA9IGRhdGEudGltZS50b0ZpeGVkKDQpICsgInMgKCIgKyBp
bmRleCArICIpIjsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiN0ZXN0LWdy
YXBoIG5hdiAudGltZSIpLnRleHRDb250ZW50ID0gKGRhdGEudGltZSAvIDEwMDApLnRvRml4ZWQo
NCkgKyAicyAoIiArIGluZGV4ICsgIikiOwogICAgICAgICAgICAgc3RhdHNUb0hpZ2hsaWdodC5m
b3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHsKICAgICAgICAgICAgICAgICB2YXIgZWxlbWVudCA9IGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiN0ZXN0LWdyYXBoIG5hdiAuIiArIG5hbWUpOwogICAgICAg
ICAgICAgICAgIHZhciBjb250ZW50ID0gIiI7CkBAIC0yMDksMTIgKzIxMCw2IEBAIFV0aWxpdGll
cy5leHRlbmRPYmplY3Qod2luZG93LmJlbmNobWFya0NvbnRyb2xsZXIsIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFfeSA9IHlSaWdodChkYXRhLnNtb290aGVkRlBTKTsKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICBjYXNlICJpbnRlcnZhbEZQUyI6Ci0gICAgICAgICAgICAgICAgICAgIGlmICgiaW50ZXJ2YWxG
UFMiIGluIGRhdGEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBkYXRhLmlu
dGVydmFsRlBTLnRvRml4ZWQoMik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3kgPSB5
UmlnaHQoZGF0YS5pbnRlcnZhbEZQUyk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAg
ZWxlbWVudC50ZXh0Q29udGVudCA9IGNvbnRlbnQ7CkBAIC0yNTAsNiArMjQ1LDUgQEAgVXRpbGl0
aWVzLmV4dGVuZE9iamVjdCh3aW5kb3cuYmVuY2htYXJrQ29udHJvbGxlciwgewogICAgICAgICBz
aG93T3JIaWRlTm9kZXMoZm9ybVsiY29tcGxleGl0eSJdLmNoZWNrZWQsICIjY29tcGxleGl0eSIp
OwogICAgICAgICBzaG93T3JIaWRlTm9kZXMoZm9ybVsicmF3RlBTIl0uY2hlY2tlZCwgIiNyYXdG
UFMiKTsKICAgICAgICAgc2hvd09ySGlkZU5vZGVzKGZvcm1bImZpbHRlcmVkRlBTIl0uY2hlY2tl
ZCwgIiNmaWx0ZXJlZEZQUyIpOwotICAgICAgICBzaG93T3JIaWRlTm9kZXMoZm9ybVsiaW50ZXJ2
YWxGUFMiXS5jaGVja2VkLCAiI2ludGVydmFsRlBTIik7CiAgICAgfQogfSk7CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMKaW5kZXgg
NTQ4NjVlZTliNmFjNDUzNDM2MWZmMmZlNzI3NDAzZmViYzE4ZWUwNy4uNjE4OWZiNTExNGQ2YjI5
Zjk4MjA4MGQ4ZTI4MThlNThhODMwZTUxMCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcwpAQCAtMTczLDcgKzE3Myw3IEBAIFBv
aW50ID0gVXRpbGl0aWVzLmNyZWF0ZUNsYXNzKAogICAgIHsKICAgICAgICAgcmV0dXJuICJ4ID0g
IiArIHRoaXMueCArICIsIHkgPSAiICsgdGhpcy55OwogICAgIH0sCi0gICAgCisKICAgICBhZGQ6
IGZ1bmN0aW9uKG90aGVyKQogICAgIHsKICAgICAgICAgaWYoaXNOYU4ob3RoZXIueCkpCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmlt
b21ldGVyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIv
YW5pbW9tZXRlci5qcwppbmRleCA0MWZhOTc2N2YyMWY4ZWIwY2RkY2M3OTU2ZmUzMDlkZWIwYzU1
YTkxLi4xZjI5MWJkY2VlZTY2YWM0ZjhlNTMzZmE5YmU4YTE0ZTVkYjhjZDBjIDEwMDY0NAotLS0g
YS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVy
LmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL2Fu
aW1vbWV0ZXIuanMKQEAgLTMwNyw3ICszMDcsOCBAQCB3aW5kb3cuYmVuY2htYXJrQ29udHJvbGxl
ciA9IHsKICAgICAgICAgICAgICJkaXNwbGF5IjogIm1pbmltYWwiLAogICAgICAgICAgICAgImFk
anVzdG1lbnQiOiAiYWRhcHRpdmUiLAogICAgICAgICAgICAgImZyYW1lLXJhdGUiOiA1MCwKLSAg
ICAgICAgICAgICJlc3RpbWF0ZWQtZnJhbWUtcmF0ZSI6IHRydWUKKyAgICAgICAgICAgICJrYWxt
YW4tcHJvY2Vzcy1lcnJvciI6IDEsCisgICAgICAgICAgICAia2FsbWFuLW1lYXN1cmVtZW50LWVy
cm9yIjogNAogICAgICAgICB9OwogICAgICAgICB0aGlzLl9zdGFydEJlbmNobWFyayhTdWl0ZXMs
IG9wdGlvbnMsICJ0ZXN0LWNvbnRhaW5lciIpOwogICAgIH0sCmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9iZW5jaG1hcmstcnVubmVyLmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYmVuY2htYXJr
LXJ1bm5lci5qcwppbmRleCBmNjI4NjBlYmYwNjAzOWVlMDAzMDYyODM1ZmFiMjgzZDViZDFhNzc1
Li4yMWJjMDA4ZDc0ZTI0OGIxZWQxNDI4ZmIyMTgyZWRmNjk1OWZlNmMyIDEwMDY0NAotLS0gYS9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9iZW5jaG1hcmstcnVu
bmVyLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVy
L2JlbmNobWFyay1ydW5uZXIuanMKQEAgLTk0LDkgKzk0LDkgQEAgQmVuY2htYXJrUnVubmVyID0g
VXRpbGl0aWVzLmNyZWF0ZUNsYXNzKAogICAgICAgICBVdGlsaXRpZXMuZXh0ZW5kT2JqZWN0KG9w
dGlvbnMsIGNvbnRlbnRXaW5kb3cuVXRpbGl0aWVzLnBhcnNlUGFyYW1ldGVycygpKTsKIAogICAg
ICAgICB2YXIgYmVuY2htYXJrID0gbmV3IGNvbnRlbnRXaW5kb3cuYmVuY2htYXJrQ2xhc3Mob3B0
aW9ucyk7Ci0gICAgICAgIGJlbmNobWFyay5ydW4oKS50aGVuKGZ1bmN0aW9uKHNhbXBsZXIpIHsK
KyAgICAgICAgYmVuY2htYXJrLnJ1bigpLnRoZW4oZnVuY3Rpb24ocmVzdWx0cykgewogICAgICAg
ICAgICAgdmFyIHNhbXBsZXJzID0gc2VsZi5fc3VpdGVzU2FtcGxlcnNbc3VpdGUubmFtZV0gfHwg
e307Ci0gICAgICAgICAgICBzYW1wbGVyc1t0ZXN0Lm5hbWVdID0gc2FtcGxlci5wcm9jZXNzKG9w
dGlvbnMpOworICAgICAgICAgICAgc2FtcGxlcnNbdGVzdC5uYW1lXSA9IHJlc3VsdHM7CiAgICAg
ICAgICAgICBzZWxmLl9zdWl0ZXNTYW1wbGVyc1tzdWl0ZS5uYW1lXSA9IHNhbXBsZXJzOwogCiAg
ICAgICAgICAgICBpZiAoc2VsZi5fY2xpZW50ICYmIHNlbGYuX2NsaWVudC5kaWRSdW5UZXN0KQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9t
YWluLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYWlu
LmpzCmluZGV4IDY5ZTE5ZWYwYjYxMWJmMDJjMTVmMGVhMWYwNTM2ZWQ0MWMzMGM2MGEuLmI3NGEz
MTRhNTA3MDZjNmMxZTg0OTI1MTliMGRhMTkwY2Y3NDRiYWYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5qcworKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanMKQEAgLTEsNTIgKzEs
MTgwIEBACi1mdW5jdGlvbiBCZW5jaG1hcmtTdGF0ZSh0ZXN0SW50ZXJ2YWwpCi17Ci0gICAgdGhp
cy5fY3VycmVudFRpbWVPZmZzZXQgPSAwOwotICAgIHRoaXMuX3N0YWdlSW50ZXJ2YWwgPSB0ZXN0
SW50ZXJ2YWwgLyBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQ7Ci19Ci0KLS8vIFRoZSBl
bnVtIHZhbHVlcyBhbmQgdGhlIG1lc3NhZ2VzIHNob3VsZCBiZSBpbiB0aGUgc2FtZSBvcmRlcgot
QmVuY2htYXJrU3RhdGUuc3RhZ2VzID0gewotICAgIFdBUk1JTkc6IDAsCi0gICAgU0FNUExJTkc6
IDEsCi0gICAgRklOSVNIRUQ6IDIsCi19Ci0KLUJlbmNobWFya1N0YXRlLnByb3RvdHlwZSA9Ci17
Ci0gICAgX3RpbWVPZmZzZXQ6IGZ1bmN0aW9uKHN0YWdlKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0YWdlICogdGhpcy5fc3RhZ2VJbnRlcnZhbDsKKworQ29udHJvbGxlciA9IFV0aWxpdGllcy5j
cmVhdGVDbGFzcygKKyAgICBmdW5jdGlvbih0ZXN0TGVuZ3RoLCBiZW5jaG1hcmssIHNlcmllc0Nv
dW50KQorICAgIHsKKyAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aW1lc3RhbXBzIHJlbGF0aXZlIHRv
IHRoZSBzdGFydCBvZiB0aGUgYmVuY2htYXJrCisgICAgICAgIC8vIEluIHN0YXJ0KCkgdGhlIHRp
bWVzdGFtcHMgYXJlIG9mZnNldCBieSB0aGUgc3RhcnQgdGltZXN0YW1wCisgICAgICAgIHRoaXMu
X3N0YXJ0VGltZXN0YW1wID0gMDsKKyAgICAgICAgdGhpcy5fZW5kVGltZXN0YW1wID0gdGVzdExl
bmd0aDsKKyAgICAgICAgLy8gRGVmYXVsdCBkYXRhIHNlcmllczogdGltZXN0YW1wLCBjb21wbGV4
aXR5LCBlc3RpbWF0ZWRGcmFtZUxlbmd0aAorICAgICAgICB0aGlzLl9zYW1wbGVyID0gbmV3IFNh
bXBsZXIoc2VyaWVzQ291bnQgfHwgMywgNjAgKiB0ZXN0TGVuZ3RoLCB0aGlzKTsKKyAgICAgICAg
dGhpcy5fZXN0aW1hdG9yID0gbmV3IFNpbXBsZUthbG1hbkVzdGltYXRvcihiZW5jaG1hcmsub3B0
aW9uc1sia2FsbWFuLXByb2Nlc3MtZXJyb3IiXSwgYmVuY2htYXJrLm9wdGlvbnNbImthbG1hbi1t
ZWFzdXJlbWVudC1lcnJvciJdKTsKKworICAgICAgICB0aGlzLmluaXRpYWxDb21wbGV4aXR5ID0g
MDsKKyAgICB9LCB7CisKKyAgICBzdGFydDogZnVuY3Rpb24oc3RhZ2UsIHN0YXJ0VGltZXN0YW1w
KQorICAgIHsKKyAgICAgICAgdGhpcy5fc3RhcnRUaW1lc3RhbXAgPSBzdGFydFRpbWVzdGFtcDsK
KyAgICAgICAgdGhpcy5fZW5kVGltZXN0YW1wICs9IHN0YXJ0VGltZXN0YW1wOworICAgICAgICB0
aGlzLnJlY29yZEZpcnN0U2FtcGxlKHN0YWdlLCBzdGFydFRpbWVzdGFtcCk7CisgICAgfSwKKwor
ICAgIHJlY29yZEZpcnN0U2FtcGxlOiBmdW5jdGlvbihzdGFnZSwgc3RhcnRUaW1lc3RhbXApCisg
ICAgeworICAgICAgICB0aGlzLl9zYW1wbGVyLnJlY29yZChzdGFydFRpbWVzdGFtcCwgc3RhZ2Uu
Y29tcGxleGl0eSgpLCAtMSk7CisgICAgICAgIHRoaXMuX3NhbXBsZXIubWFyayhTdHJpbmdzLmpz
b24uc2FtcGxpbmdUaW1lT2Zmc2V0LCB7IHRpbWU6IDAgfSk7CisgICAgfSwKKworICAgIHVwZGF0
ZTogZnVuY3Rpb24oc3RhZ2UsIHRpbWVzdGFtcCkKKyAgICB7CisgICAgICAgIHRoaXMuX2VzdGlt
YXRvci5zYW1wbGUodGltZXN0YW1wIC0gdGhpcy5fc2FtcGxlci5zYW1wbGVzWzBdW3RoaXMuX3Nh
bXBsZXIuc2FtcGxlQ291bnQgLSAxXSk7CisgICAgICAgIHRoaXMuX3NhbXBsZXIucmVjb3JkKHRp
bWVzdGFtcCwgc3RhZ2UuY29tcGxleGl0eSgpLCAxMDAwIC8gdGhpcy5fZXN0aW1hdG9yLmVzdGlt
YXRlKTsKICAgICB9LAogCi0gICAgX21lc3NhZ2U6IGZ1bmN0aW9uKHN0YWdlLCB0aW1lT2Zmc2V0
KQorICAgIHNob3VsZFN0b3A6IGZ1bmN0aW9uKHRpbWVzdGFtcCkKICAgICB7Ci0gICAgICAgIGlm
IChzdGFnZSA9PSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQpCi0gICAgICAgICAgICBy
ZXR1cm4gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLm1lc3NhZ2VzW3N0YWdlXTsKKyAgICAgICAgcmV0
dXJuIHRpbWVzdGFtcCA+IHRoaXMuX2VuZFRpbWVzdGFtcDsKKyAgICB9LAogCi0gICAgICAgIHJl
dHVybiBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMubWVzc2FnZXNbc3RhZ2VdICsgIi4uLiAoIgotICAg
ICAgICAgICAgKyBNYXRoLmZsb29yKCh0aW1lT2Zmc2V0IC0gdGhpcy5fdGltZU9mZnNldChzdGFn
ZSkpIC8gMTAwMCkgKyAiLyIKLSAgICAgICAgICAgICsgTWF0aC5mbG9vcigodGhpcy5fdGltZU9m
ZnNldChzdGFnZSArIDEpIC0gdGhpcy5fdGltZU9mZnNldChzdGFnZSkpIC8gMTAwMCkgKyAiKSI7
CisgICAgcmVzdWx0czogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Nh
bXBsZXIucHJvY2VzcygpOwogICAgIH0sCiAKLSAgICB1cGRhdGU6IGZ1bmN0aW9uKGN1cnJlbnRU
aW1lT2Zmc2V0KQorICAgIHByb2Nlc3NTYW1wbGVzOiBmdW5jdGlvbihyZXN1bHRzKQorICAgIHsK
KyAgICAgICAgdmFyIGNvbXBsZXhpdHlFeHBlcmltZW50ID0gbmV3IEV4cGVyaW1lbnQ7CisgICAg
ICAgIHZhciBzbW9vdGhlZEZQU0V4cGVyaW1lbnQgPSBuZXcgRXhwZXJpbWVudDsKKworICAgICAg
ICB2YXIgc2FtcGxlcyA9IHRoaXMuX3NhbXBsZXIuc2FtcGxlczsKKworICAgICAgICB2YXIgc2Ft
cGxpbmdJbmRleCA9IDA7CisgICAgICAgIHZhciBzYW1wbGluZ01hcmsgPSB0aGlzLl9zYW1wbGVy
Lm1hcmtzW1N0cmluZ3MuanNvbi5zYW1wbGluZ1RpbWVPZmZzZXRdOworICAgICAgICBpZiAoc2Ft
cGxpbmdNYXJrKSB7CisgICAgICAgICAgICBzYW1wbGluZ0luZGV4ID0gc2FtcGxpbmdNYXJrLmlu
ZGV4OworICAgICAgICAgICAgcmVzdWx0c1tTdHJpbmdzLmpzb24uc2FtcGxpbmdUaW1lT2Zmc2V0
XSA9IHNhbXBsaW5nTWFyay50aW1lOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0c1tTdHJp
bmdzLmpzb24uc2FtcGxlc10gPSBzYW1wbGVzWzBdLm1hcChmdW5jdGlvbih0aW1lc3RhbXAsIGkp
IHsKKyAgICAgICAgICAgIHZhciByZXN1bHQgPSB7CisgICAgICAgICAgICAgICAgLy8gUmVwcmVz
ZW50IHRpbWUgaW4gc2Vjb25kcworICAgICAgICAgICAgICAgIHRpbWU6IHRpbWVzdGFtcCAtIHRo
aXMuX3N0YXJ0VGltZXN0YW1wLAorICAgICAgICAgICAgICAgIGNvbXBsZXhpdHk6IHNhbXBsZXNb
MV1baV0KKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIC8vIHRpbWUgb2Zmc2V0cyByZXBy
ZXNlbnRlZCBhcyBGUFMKKyAgICAgICAgICAgIGlmIChpID09IDApCisgICAgICAgICAgICAgICAg
cmVzdWx0LmZwcyA9IDYwOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3Vs
dC5mcHMgPSAxMDAwIC8gKHRpbWVzdGFtcCAtIHNhbXBsZXNbMF1baSAtIDFdKTsKKworICAgICAg
ICAgICAgaWYgKHNhbXBsZXNbMl1baV0gIT0gLTEpCisgICAgICAgICAgICAgICAgcmVzdWx0LnNt
b290aGVkRlBTID0gc2FtcGxlc1syXVtpXTsKKworICAgICAgICAgICAgLy8gRG9uJ3Qgc3RhcnQg
YWRkaW5nIGRhdGEgdG8gdGhlIGV4cGVyaW1lbnRzIHVudGlsIHdlIHJlYWNoIHRoZSBzYW1wbGlu
ZyB0aW1lc3RhbXAKKyAgICAgICAgICAgIGlmIChpID49IHNhbXBsaW5nSW5kZXgpIHsKKyAgICAg
ICAgICAgICAgICBjb21wbGV4aXR5RXhwZXJpbWVudC5zYW1wbGUocmVzdWx0LmNvbXBsZXhpdHkp
OworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuc21vb3RoZWRGUFMgJiYgcmVzdWx0LnNtb290
aGVkRlBTICE9IC0xKQorICAgICAgICAgICAgICAgICAgICBzbW9vdGhlZEZQU0V4cGVyaW1lbnQu
c2FtcGxlKHJlc3VsdC5zbW9vdGhlZEZQUyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgICAgIH0sIHRoaXMpOworCisgICAgICAgIHJlc3VsdHNbU3Ry
aW5ncy5qc29uLnNjb3JlXSA9IGNvbXBsZXhpdHlFeHBlcmltZW50LnNjb3JlKEV4cGVyaW1lbnQu
ZGVmYXVsdHMuQ09OQ0VSTik7CisKKyAgICAgICAgdmFyIGNvbXBsZXhpdHlSZXN1bHRzID0ge307
CisgICAgICAgIHJlc3VsdHNbU3RyaW5ncy5qc29uLmV4cGVyaW1lbnRzLmNvbXBsZXhpdHldID0g
Y29tcGxleGl0eVJlc3VsdHM7CisgICAgICAgIGNvbXBsZXhpdHlSZXN1bHRzW1N0cmluZ3MuanNv
bi5tZWFzdXJlbWVudHMuYXZlcmFnZV0gPSBjb21wbGV4aXR5RXhwZXJpbWVudC5tZWFuKCk7Cisg
ICAgICAgIGNvbXBsZXhpdHlSZXN1bHRzW1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMuY29uY2Vy
bl0gPSBjb21wbGV4aXR5RXhwZXJpbWVudC5jb25jZXJuKEV4cGVyaW1lbnQuZGVmYXVsdHMuQ09O
Q0VSTik7CisgICAgICAgIGNvbXBsZXhpdHlSZXN1bHRzW1N0cmluZ3MuanNvbi5tZWFzdXJlbWVu
dHMuc3RkZXZdID0gY29tcGxleGl0eUV4cGVyaW1lbnQuc3RhbmRhcmREZXZpYXRpb24oKTsKKyAg
ICAgICAgY29tcGxleGl0eVJlc3VsdHNbU3RyaW5ncy5qc29uLm1lYXN1cmVtZW50cy5wZXJjZW50
XSA9IGNvbXBsZXhpdHlFeHBlcmltZW50LnBlcmNlbnRhZ2UoKTsKKworICAgICAgICB2YXIgc21v
b3RoZWRGUFNSZXN1bHRzID0ge307CisgICAgICAgIHJlc3VsdHNbU3RyaW5ncy5qc29uLmV4cGVy
aW1lbnRzLmZyYW1lUmF0ZV0gPSBzbW9vdGhlZEZQU1Jlc3VsdHM7CisgICAgICAgIHNtb290aGVk
RlBTUmVzdWx0c1tTdHJpbmdzLmpzb24ubWVhc3VyZW1lbnRzLmF2ZXJhZ2VdID0gc21vb3RoZWRG
UFNFeHBlcmltZW50Lm1lYW4oKTsKKyAgICAgICAgc21vb3RoZWRGUFNSZXN1bHRzW1N0cmluZ3Mu
anNvbi5tZWFzdXJlbWVudHMuY29uY2Vybl0gPSBzbW9vdGhlZEZQU0V4cGVyaW1lbnQuY29uY2Vy
bihFeHBlcmltZW50LmRlZmF1bHRzLkNPTkNFUk4pOworICAgICAgICBzbW9vdGhlZEZQU1Jlc3Vs
dHNbU3RyaW5ncy5qc29uLm1lYXN1cmVtZW50cy5zdGRldl0gPSBzbW9vdGhlZEZQU0V4cGVyaW1l
bnQuc3RhbmRhcmREZXZpYXRpb24oKTsKKyAgICAgICAgc21vb3RoZWRGUFNSZXN1bHRzW1N0cmlu
Z3MuanNvbi5tZWFzdXJlbWVudHMucGVyY2VudF0gPSBzbW9vdGhlZEZQU0V4cGVyaW1lbnQucGVy
Y2VudGFnZSgpOworICAgIH0KK30pOworCitGaXhlZENvbXBsZXhpdHlDb250cm9sbGVyID0gVXRp
bGl0aWVzLmNyZWF0ZVN1YmNsYXNzKENvbnRyb2xsZXIsCisgICAgZnVuY3Rpb24odGVzdEludGVy
dmFsLCBiZW5jaG1hcmspCisgICAgeworICAgICAgICBDb250cm9sbGVyLmNhbGwodGhpcywgdGVz
dEludGVydmFsLCBiZW5jaG1hcmspOworICAgICAgICB0aGlzLmluaXRpYWxDb21wbGV4aXR5ID0g
YmVuY2htYXJrLm9wdGlvbnNbImNvbXBsZXhpdHkiXTsKKyAgICB9CispOworCitBZGFwdGl2ZUNv
bnRyb2xsZXIgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQ29udHJvbGxlciwKKyAgICBmdW5j
dGlvbih0ZXN0SW50ZXJ2YWwsIGJlbmNobWFyaykKKyAgICB7CisgICAgICAgIC8vIERhdGEgc2Vy
aWVzOiB0aW1lc3RhbXAsIGNvbXBsZXhpdHksIGVzdGltYXRlZEludGVydmFsRnJhbWVMZW5ndGgK
KyAgICAgICAgQ29udHJvbGxlci5jYWxsKHRoaXMsIHRlc3RJbnRlcnZhbCwgYmVuY2htYXJrKTsK
KworICAgICAgICAvLyBBbGwgdGVzdHMgc3RhcnQgYXQgMCwgc28gd2UgZXhwZWN0IHRvIHNlZSA2
MCBmcHMgcXVpY2tseS4KKyAgICAgICAgdGhpcy5fc2FtcGxpbmdUaW1lc3RhbXAgPSB0ZXN0SW50
ZXJ2YWwgLyAyOworICAgICAgICB0aGlzLl9zdGFydGVkU2FtcGxpbmcgPSBmYWxzZTsKKyAgICAg
ICAgdGhpcy5fdGFyZ2V0RnJhbWVSYXRlID0gYmVuY2htYXJrLm9wdGlvbnNbImZyYW1lLXJhdGUi
XTsKKyAgICAgICAgdGhpcy5fcGlkID0gbmV3IFBJRENvbnRyb2xsZXIodGhpcy5fdGFyZ2V0RnJh
bWVSYXRlKTsKKworICAgICAgICB0aGlzLl9pbnRlcnZhbEZyYW1lQ291bnQgPSAwOworICAgICAg
ICB0aGlzLl9udW1iZXJPZkZyYW1lc1RvTWVhc3VyZVBlckludGVydmFsID0gNDsKKyAgICB9LCB7
CisKKyAgICBzdGFydDogZnVuY3Rpb24oc3RhZ2UsIHN0YXJ0VGltZXN0YW1wKQogICAgIHsKLSAg
ICAgICAgdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgPSBjdXJyZW50VGltZU9mZnNldDsKKyAgICAg
ICAgQ29udHJvbGxlci5wcm90b3R5cGUuc3RhcnQuY2FsbCh0aGlzLCBzdGFnZSwgc3RhcnRUaW1l
c3RhbXApOworCisgICAgICAgIHRoaXMuX3NhbXBsaW5nVGltZXN0YW1wICs9IHN0YXJ0VGltZXN0
YW1wOworICAgICAgICB0aGlzLl9pbnRlcnZhbFRpbWVzdGFtcCA9IHN0YXJ0VGltZXN0YW1wOwog
ICAgIH0sCiAKLSAgICBzYW1wbGluZ1RpbWVPZmZzZXQ6IGZ1bmN0aW9uKCkKKyAgICByZWNvcmRG
aXJzdFNhbXBsZTogZnVuY3Rpb24oc3RhZ2UsIHN0YXJ0VGltZXN0YW1wKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX3RpbWVPZmZzZXQoQmVuY2htYXJrU3RhdGUuc3RhZ2VzLlNBTVBMSU5H
KTsKKyAgICAgICAgdGhpcy5fc2FtcGxlci5yZWNvcmQoc3RhcnRUaW1lc3RhbXAsIHN0YWdlLmNv
bXBsZXhpdHkoKSwgLTEpOwogICAgIH0sCiAKLSAgICBjdXJyZW50U3RhZ2U6IGZ1bmN0aW9uKCkK
KyAgICB1cGRhdGU6IGZ1bmN0aW9uKHN0YWdlLCB0aW1lc3RhbXApCiAgICAgewotICAgICAgICBm
b3IgKHZhciBzdGFnZSA9IEJlbmNobWFya1N0YXRlLnN0YWdlcy5XQVJNSU5HOyBzdGFnZSA8IEJl
bmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRDsgKytzdGFnZSkgewotICAgICAgICAgICAgaWYg
KHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0IDwgdGhpcy5fdGltZU9mZnNldChzdGFnZSArIDEpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBzdGFnZTsKKyAgICAgICAgaWYgKCF0aGlzLl9zdGFydGVk
U2FtcGxpbmcgJiYgdGltZXN0YW1wID4gdGhpcy5fc2FtcGxpbmdUaW1lc3RhbXApIHsKKyAgICAg
ICAgICAgIHRoaXMuX3N0YXJ0ZWRTYW1wbGluZyA9IHRydWU7CisgICAgICAgICAgICB0aGlzLl9z
YW1wbGVyLm1hcmsoU3RyaW5ncy5qc29uLnNhbXBsaW5nVGltZU9mZnNldCwgeworICAgICAgICAg
ICAgICAgIHRpbWU6IHRoaXMuX3NhbXBsaW5nVGltZXN0YW1wIC0gdGhpcy5fc3RhcnRUaW1lc3Rh
bXAKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgLy8gU3RhcnQgdGhlIHdv
cmsgZm9yIHRoZSBuZXh0IGZyYW1lLgorICAgICAgICArK3RoaXMuX2ludGVydmFsRnJhbWVDb3Vu
dDsKKworICAgICAgICBpZiAodGhpcy5faW50ZXJ2YWxGcmFtZUNvdW50IDwgdGhpcy5fbnVtYmVy
T2ZGcmFtZXNUb01lYXN1cmVQZXJJbnRlcnZhbCkgeworICAgICAgICAgICAgdGhpcy5fc2FtcGxl
ci5yZWNvcmQodGltZXN0YW1wLCBzdGFnZS5jb21wbGV4aXR5KCksIC0xKTsKKyAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gQmVuY2htYXJrU3RhdGUuc3RhZ2Vz
LkZJTklTSEVEOworCisgICAgICAgIC8vIEFkanVzdCB0aGUgdGVzdCB0byByZWFjaCB0aGUgZGVz
aXJlZCBGUFMuCisgICAgICAgIHZhciBpbnRlcnZhbExlbmd0aCA9IHRpbWVzdGFtcCAtIHRoaXMu
X2ludGVydmFsVGltZXN0YW1wOworICAgICAgICB0aGlzLl9lc3RpbWF0b3Iuc2FtcGxlKGludGVy
dmFsTGVuZ3RoIC8gdGhpcy5fbnVtYmVyT2ZGcmFtZXNUb01lYXN1cmVQZXJJbnRlcnZhbCk7Cisg
ICAgICAgIHZhciBpbnRlcnZhbEVzdGltYXRlZEZyYW1lUmF0ZSA9IDEwMDAgLyB0aGlzLl9lc3Rp
bWF0b3IuZXN0aW1hdGU7CisgICAgICAgIHZhciB0dW5lVmFsdWUgPSAtdGhpcy5fcGlkLnR1bmUo
dGltZXN0YW1wIC0gdGhpcy5fc3RhcnRUaW1lc3RhbXAsIGludGVydmFsTGVuZ3RoLCBpbnRlcnZh
bEVzdGltYXRlZEZyYW1lUmF0ZSk7CisgICAgICAgIHR1bmVWYWx1ZSA9IHR1bmVWYWx1ZSA+IDAg
PyBNYXRoLmZsb29yKHR1bmVWYWx1ZSkgOiBNYXRoLmNlaWwodHVuZVZhbHVlKTsKKyAgICAgICAg
c3RhZ2UudHVuZSh0dW5lVmFsdWUpOworCisgICAgICAgIHRoaXMuX3NhbXBsZXIucmVjb3JkKHRp
bWVzdGFtcCwgc3RhZ2UuY29tcGxleGl0eSgpLCBpbnRlcnZhbEVzdGltYXRlZEZyYW1lUmF0ZSk7
CisKKyAgICAgICAgLy8gU3RhcnQgdGhlIG5leHQgaW50ZXJ2YWwuCisgICAgICAgIHRoaXMuX2lu
dGVydmFsRnJhbWVDb3VudCA9IDA7CisgICAgICAgIHRoaXMuX2ludGVydmFsVGltZXN0YW1wID0g
dGltZXN0YW1wOworICAgIH0sCisKKyAgICBwcm9jZXNzU2FtcGxlczogZnVuY3Rpb24ocmVzdWx0
cykKKyAgICB7CisgICAgICAgIENvbnRyb2xsZXIucHJvdG90eXBlLnByb2Nlc3NTYW1wbGVzLmNh
bGwodGhpcywgcmVzdWx0cyk7CisgICAgICAgIHJlc3VsdHNbU3RyaW5ncy5qc29uLnRhcmdldEZQ
U10gPSB0aGlzLl90YXJnZXRGcmFtZVJhdGU7CiAgICAgfQotfQorfSk7CiAKIFN0YWdlID0gVXRp
bGl0aWVzLmNyZWF0ZUNsYXNzKAogICAgIGZ1bmN0aW9uKCkKQEAgLTE4MCwxMDAgKzMwOCwyNiBA
QCBSb3RhdGVyID0gVXRpbGl0aWVzLmNyZWF0ZUNsYXNzKAogICAgIH0KIH0pOwogCi1BbmltYXRv
ciA9IFV0aWxpdGllcy5jcmVhdGVDbGFzcygKLSAgICBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICB0aGlzLl9pbnRlcnZhbEZyYW1lQ291bnQgPSAwOwotICAgICAgICB0aGlzLl9udW1iZXJPZkZy
YW1lc1RvTWVhc3VyZVBlckludGVydmFsID0gMzsKLSAgICAgICAgdGhpcy5fcmVmZXJlbmNlVGlt
ZSA9IDA7Ci0gICAgICAgIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0ID0gMDsKLSAgICB9LCB7Ci0K
LSAgICBpbml0aWFsaXplOiBmdW5jdGlvbihiZW5jaG1hcmspCi0gICAgewotICAgICAgICB0aGlz
Ll9iZW5jaG1hcmsgPSBiZW5jaG1hcms7Ci0KLSAgICAgICAgLy8gVXNlIEthbG1hbiBmaWx0ZXIg
dG8gZ2V0IGEgbW9yZSBub24tZmx1Y3R1YXRpbmcgZnJhbWUgcmF0ZS4KLSAgICAgICAgaWYgKGJl
bmNobWFyay5vcHRpb25zWyJlc3RpbWF0ZWQtZnJhbWUtcmF0ZSJdKQotICAgICAgICAgICAgdGhp
cy5fZXN0aW1hdG9yID0gbmV3IEthbG1hbkVzdGltYXRvcig2MCk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHRoaXMuX2VzdGltYXRvciA9IG5ldyBJZGVudGl0eUVzdGltYXRvcjsKLSAgICB9
LAotCi0gICAgZ2V0IGJlbmNobWFyaygpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fYmVu
Y2htYXJrOwotICAgIH0sCi0KLSAgICBfaW50ZXJ2YWxUaW1lRGVsdGE6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50VGltZU9mZnNldCAtIHRoaXMuX3N0YXJ0
VGltZU9mZnNldDsKLSAgICB9LAotCi0gICAgX3Nob3VsZFJlcXVlc3RBbm90aGVyRnJhbWU6IGZ1
bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIC8vIENhZGVuY2UgaXMgbnVtYmVyIG9mIGZyYW1lcyB0
byBtZWFzdXJlLCB0aGVuIG9uZSBtb3JlIGZyYW1lIHRvIGFkanVzdCB0aGUgc2NlbmUsIGFuZCBk
cm9wCi0gICAgICAgIHZhciBjdXJyZW50VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpOwotCi0gICAg
ICAgIGlmICghdGhpcy5fcmVmZXJlbmNlVGltZSkKLSAgICAgICAgICAgIHRoaXMuX3JlZmVyZW5j
ZVRpbWUgPSBjdXJyZW50VGltZTsKLQotICAgICAgICB0aGlzLl9jdXJyZW50VGltZU9mZnNldCA9
IGN1cnJlbnRUaW1lIC0gdGhpcy5fcmVmZXJlbmNlVGltZTsKLQotICAgICAgICBpZiAoIXRoaXMu
X2ludGVydmFsRnJhbWVDb3VudCkKLSAgICAgICAgICAgIHRoaXMuX3N0YXJ0VGltZU9mZnNldCA9
IHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0OwotCi0gICAgICAgIC8vIFN0YXJ0IHRoZSB3b3JrIGZv
ciB0aGUgbmV4dCBmcmFtZS4KLSAgICAgICAgKyt0aGlzLl9pbnRlcnZhbEZyYW1lQ291bnQ7Ci0K
LSAgICAgICAgLy8gRHJvcCBfZHJvcEZyYW1lQ291bnQgZnJhbWVzIGFuZCBtZWFzdXJlIHRoZSBh
dmVyYWdlIG9mIF9tZWFzdXJlRnJhbWVDb3VudCBmcmFtZXMuCi0gICAgICAgIGlmICh0aGlzLl9p
bnRlcnZhbEZyYW1lQ291bnQgPD0gdGhpcy5fbnVtYmVyT2ZGcmFtZXNUb01lYXN1cmVQZXJJbnRl
cnZhbCkgewotICAgICAgICAgICAgdGhpcy5fYmVuY2htYXJrLnJlY29yZCh0aGlzLl9jdXJyZW50
VGltZU9mZnNldCwgLTEsIC0xKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
Ci0KLSAgICAgICAgLy8gR2V0IHRoZSBhdmVyYWdlIEZQUyBvZiBfbWVhc3VyZUZyYW1lQ291bnQg
ZnJhbWVzIG92ZXIgaW50ZXJ2YWxUaW1lRGVsdGEuCi0gICAgICAgIHZhciBpbnRlcnZhbFRpbWVE
ZWx0YSA9IHRoaXMuX2ludGVydmFsVGltZURlbHRhKCk7Ci0gICAgICAgIHZhciBpbnRlcnZhbEZy
YW1lUmF0ZSA9IDEwMDAgLyAoaW50ZXJ2YWxUaW1lRGVsdGEgLyB0aGlzLl9udW1iZXJPZkZyYW1l
c1RvTWVhc3VyZVBlckludGVydmFsKTsKLSAgICAgICAgdmFyIGVzdGltYXRlZEludGVydmFsRnJh
bWVSYXRlID0gdGhpcy5fZXN0aW1hdG9yLmVzdGltYXRlKGludGVydmFsRnJhbWVSYXRlKTsKLSAg
ICAgICAgLy8gUmVjb3JkIHRoZSBjb21wbGV4aXR5IG9mIHRoZSBmcmFtZSB3ZSBqdXN0IHJlbmRl
cmVkLiBUaGUgbmV4dCBmcmFtZSdzIHRpbWUgcmVzcHJlc2VudHMgdGhlIGFkanVzdGVkCi0gICAg
ICAgIC8vIGNvbXBsZXhpdHkKLSAgICAgICAgdGhpcy5fYmVuY2htYXJrLnJlY29yZCh0aGlzLl9j
dXJyZW50VGltZU9mZnNldCwgZXN0aW1hdGVkSW50ZXJ2YWxGcmFtZVJhdGUsIGludGVydmFsRnJh
bWVSYXRlKTsKLQotICAgICAgICAvLyBBZGp1c3QgdGhlIHRlc3QgdG8gcmVhY2ggdGhlIGRlc2ly
ZWQgRlBTLgotICAgICAgICB2YXIgc2hvdWxkQ29udGludWVSdW5uaW5nID0gdGhpcy5fYmVuY2ht
YXJrLnVwZGF0ZSh0aGlzLl9jdXJyZW50VGltZU9mZnNldCwgaW50ZXJ2YWxUaW1lRGVsdGEsIGVz
dGltYXRlZEludGVydmFsRnJhbWVSYXRlKTsKLQotICAgICAgICAvLyBTdGFydCB0aGUgbmV4dCBk
cm9wL21lYXN1cmUgY3ljbGUuCi0gICAgICAgIHRoaXMuX2ludGVydmFsRnJhbWVDb3VudCA9IDA7
Ci0KLSAgICAgICAgLy8gSWYgcmVzdWx0IGlzIGZhbHNlLCBubyBtb3JlIHJlcXVlc3RBbmltYXRp
b25GcmFtZSgpIHdpbGwgYmUgaW52b2tlZC4KLSAgICAgICAgcmV0dXJuIHNob3VsZENvbnRpbnVl
UnVubmluZzsKLSAgICB9LAotCi0gICAgYW5pbWF0ZUxvb3A6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIGlmICh0aGlzLl9zaG91bGRSZXF1ZXN0QW5vdGhlckZyYW1lKCkpIHsKLSAgICAgICAg
ICAgIHRoaXMuX2JlbmNobWFyay5zdGFnZS5hbmltYXRlKHRoaXMuX2ludGVydmFsVGltZURlbHRh
KCkpOwotICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuYW5pbWF0ZUxvb3Au
YmluZCh0aGlzKSk7Ci0gICAgICAgIH0KLSAgICB9Ci19KTsKLQogQmVuY2htYXJrID0gVXRpbGl0
aWVzLmNyZWF0ZUNsYXNzKAogICAgIGZ1bmN0aW9uKHN0YWdlLCBvcHRpb25zKQogICAgIHsKICAg
ICAgICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7CisgICAgICAgIHRoaXMuX2FuaW1hdGVMb29w
ID0gdGhpcy5fYW5pbWF0ZUxvb3AuYmluZCh0aGlzKTsKIAogICAgICAgICB0aGlzLl9zdGFnZSA9
IHN0YWdlOwogICAgICAgICB0aGlzLl9zdGFnZS5pbml0aWFsaXplKHRoaXMpOwotICAgICAgICB0
aGlzLl9hbmltYXRvciA9IG5ldyBBbmltYXRvcigpOwotICAgICAgICB0aGlzLl9hbmltYXRvci5p
bml0aWFsaXplKHRoaXMpOwogCi0gICAgICAgIHRoaXMuX3JlY29yZEludGVydmFsID0gMjAwOwot
ICAgICAgICB0aGlzLl9pc1NhbXBsaW5nID0gZmFsc2U7Ci0gICAgICAgIHRoaXMuX2NvbnRyb2xs
ZXIgPSBuZXcgUElEQ29udHJvbGxlcih0aGlzLl9vcHRpb25zWyJmcmFtZS1yYXRlIl0pOwotICAg
ICAgICB0aGlzLl9zYW1wbGVyID0gbmV3IFNhbXBsZXIoNCwgNjAgKiB0aGlzLl9vcHRpb25zWyJ0
ZXN0LWludGVydmFsIl0sIHRoaXMpOwotICAgICAgICB0aGlzLl9zdGF0ZSA9IG5ldyBCZW5jaG1h
cmtTdGF0ZSh0aGlzLl9vcHRpb25zWyJ0ZXN0LWludGVydmFsIl0gKiAxMDAwKTsKKyAgICAgICAg
dmFyIHRlc3RJbnRlcnZhbE1pbGxpc2Vjb25kcyA9IG9wdGlvbnNbInRlc3QtaW50ZXJ2YWwiXSAq
IDEwMDA7CisgICAgICAgIHN3aXRjaCAob3B0aW9uc1siYWRqdXN0bWVudCJdKQorICAgICAgICB7
CisgICAgICAgIGNhc2UgImZpeGVkIjoKKyAgICAgICAgICAgIHRoaXMuX2NvbnRyb2xsZXIgPSBu
ZXcgRml4ZWRDb21wbGV4aXR5Q29udHJvbGxlcih0ZXN0SW50ZXJ2YWxNaWxsaXNlY29uZHMsIHRo
aXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgImFkYXB0aXZlIjoKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHRoaXMuX2NvbnRyb2xsZXIgPSBuZXcgQWRhcHRpdmVD
b250cm9sbGVyKHRlc3RJbnRlcnZhbE1pbGxpc2Vjb25kcywgdGhpcyk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQogICAgIH0sIHsKIAogICAgIGdldCBvcHRpb25zKCkKQEAgLTI4Niw4
NCArMzQwLDE5IEBAIEJlbmNobWFyayA9IFV0aWxpdGllcy5jcmVhdGVDbGFzcygKICAgICAgICAg
cmV0dXJuIHRoaXMuX3N0YWdlOwogICAgIH0sCiAKLSAgICBnZXQgYW5pbWF0b3IoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuX2FuaW1hdG9yOwotICAgIH0sCi0KLSAgICAvLyBDYWxsZWQg
ZnJvbSB0aGUgbG9hZCBldmVudCBsaXN0ZW5lciBvciBmcm9tIHRoaXMucnVuKCkuCi0gICAgc3Rh
cnQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2FuaW1hdG9yLmFuaW1hdGVMb29w
KCk7Ci0gICAgfSwKLQotICAgIC8vIENhbGxlZCBmcm9tIHRoZSBhbmltYXRvciB0byBhZGp1c3Qg
dGhlIGNvbXBsZXhpdHkgb2YgdGhlIHRlc3QuCi0gICAgdXBkYXRlOiBmdW5jdGlvbihjdXJyZW50
VGltZU9mZnNldCwgaW50ZXJ2YWxUaW1lRGVsdGEsIGVzdGltYXRlZEludGVydmFsRnJhbWVSYXRl
KQotICAgIHsKLSAgICAgICAgdGhpcy5fc3RhdGUudXBkYXRlKGN1cnJlbnRUaW1lT2Zmc2V0KTsK
LQotICAgICAgICB2YXIgc3RhZ2UgPSB0aGlzLl9zdGF0ZS5jdXJyZW50U3RhZ2UoKTsKLSAgICAg
ICAgaWYgKHN0YWdlID09IEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRCkgewotICAgICAg
ICAgICAgdGhpcy5fc3RhZ2UuY2xlYXIoKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmIChzdGFnZSA9PSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuU0FN
UExJTkcgJiYgIXRoaXMuX2lzU2FtcGxpbmcpIHsKLSAgICAgICAgICAgIHRoaXMuX3NhbXBsZXIu
bWFyayhTdHJpbmdzLmpzb24uc2FtcGxpbmdUaW1lT2Zmc2V0LCB7Ci0gICAgICAgICAgICAgICAg
dGltZTogdGhpcy5fc3RhdGUuc2FtcGxpbmdUaW1lT2Zmc2V0KCkgLyAxMDAwCi0gICAgICAgICAg
ICB9KTsKLSAgICAgICAgICAgIHRoaXMuX2lzU2FtcGxpbmcgPSB0cnVlOwotICAgICAgICB9Ci0K
LSAgICAgICAgdmFyIHR1bmVWYWx1ZSA9IDA7Ci0gICAgICAgIGlmICh0aGlzLl9vcHRpb25zWyJh
ZGp1c3RtZW50Il0gPT0gImZpeGVkIikgewotICAgICAgICAgICAgaWYgKHRoaXMuX29wdGlvbnNb
ImNvbXBsZXhpdHkiXSkgewotICAgICAgICAgICAgICAgIC8vIHRoaXMuX3N0YWdlLnR1bmUoMCkg
cmV0dXJucyB0aGUgY3VycmVudCBjb21wbGV4aXR5IG9mIHRoZSB0ZXN0LgotICAgICAgICAgICAg
ICAgIHR1bmVWYWx1ZSA9IHRoaXMuX29wdGlvbnNbImNvbXBsZXhpdHkiXSAtIHRoaXMuX3N0YWdl
LnR1bmUoMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoISh0
aGlzLl9pc1NhbXBsaW5nICYmIHRoaXMuX29wdGlvbnNbImFkanVzdG1lbnQiXSA9PSAiZml4ZWQt
YWZ0ZXItd2FybXVwIikpIHsKLSAgICAgICAgICAgIC8vIFRoZSByZWxhdGlvbnNoaXAgYmV0d2Vl
biBmcmFtZVJhdGUgYW5kIHRlc3QgY29tcGxleGl0eSBpcyBpbnZlcnNlLXByb3BvcnRpb25hbCBz
byB3ZQotICAgICAgICAgICAgLy8gbmVlZCB0byB1c2UgdGhlIG5lZ2F0aXZlIG9mIFBJRENvbnRy
b2xsZXIudHVuZSgpIHRvIGNoYW5nZSB0aGUgY29tcGxleGl0eSBvZiB0aGUgdGVzdC4KLSAgICAg
ICAgICAgIHR1bmVWYWx1ZSA9IC10aGlzLl9jb250cm9sbGVyLnR1bmUoY3VycmVudFRpbWVPZmZz
ZXQsIGludGVydmFsVGltZURlbHRhLCBlc3RpbWF0ZWRJbnRlcnZhbEZyYW1lUmF0ZSk7Ci0gICAg
ICAgICAgICB0dW5lVmFsdWUgPSB0dW5lVmFsdWUgPiAwID8gTWF0aC5mbG9vcih0dW5lVmFsdWUp
IDogTWF0aC5jZWlsKHR1bmVWYWx1ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl9zdGFn
ZS50dW5lKHR1bmVWYWx1ZSk7Ci0KLSAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9yZWNvcmRUaW1l
T2Zmc2V0ID09ICJ1bmRlZmluZWQiKQotICAgICAgICAgICAgdGhpcy5fcmVjb3JkVGltZU9mZnNl
dCA9IGN1cnJlbnRUaW1lT2Zmc2V0OwotCi0gICAgICAgIHZhciBzdGFnZSA9IHRoaXMuX3N0YXRl
LmN1cnJlbnRTdGFnZSgpOwotICAgICAgICBpZiAoc3RhZ2UgIT0gQmVuY2htYXJrU3RhdGUuc3Rh
Z2VzLkZJTklTSEVEICYmIGN1cnJlbnRUaW1lT2Zmc2V0IDwgdGhpcy5fcmVjb3JkVGltZU9mZnNl
dCArIHRoaXMuX3JlY29yZEludGVydmFsKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg
ICAgICAgdGhpcy5fcmVjb3JkVGltZU9mZnNldCA9IGN1cnJlbnRUaW1lT2Zmc2V0OwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9LAotCi0gICAgcmVjb3JkOiBmdW5jdGlvbihjdXJyZW50VGlt
ZU9mZnNldCwgZXN0aW1hdGVkRnJhbWVSYXRlLCBpbnRlcnZhbEZyYW1lUmF0ZSkKLSAgICB7Ci0g
ICAgICAgIC8vIElmIHRoZSBmcmFtZSByYXRlIGlzIC0xIGl0IG1lYW5zIHdlIGFyZSBzdGlsbCBy
ZWNvcmRpbmcgZm9yIHRoaXMgc2FtcGxlCi0gICAgICAgIHRoaXMuX3NhbXBsZXIucmVjb3JkKGN1
cnJlbnRUaW1lT2Zmc2V0LCB0aGlzLnN0YWdlLmNvbXBsZXhpdHkoKSwgZXN0aW1hdGVkRnJhbWVS
YXRlLCBpbnRlcnZhbEZyYW1lUmF0ZSk7Ci0gICAgfSwKLQogICAgIHJ1bjogZnVuY3Rpb24oKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMud2FpdFVudGlsUmVhZHkoKS50aGVuKGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgdGhpcy5zdGFydCgpOwotICAgICAgICAgICAgdmFyIHByb21pc2Ug
PSBuZXcgU2ltcGxlUHJvbWlzZTsKLSAgICAgICAgICAgIHZhciByZXNvbHZlV2hlbkZpbmlzaGVk
ID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9zdGF0ZSAh
PSAidW5kZWZpbmVkIiAmJiAodGhpcy5fc3RhdGUuY3VycmVudFN0YWdlKCkgPT0gQmVuY2htYXJr
U3RhdGUuc3RhZ2VzLkZJTklTSEVEKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb21p
c2UucmVzb2x2ZSh0aGlzLl9zYW1wbGVyKTsKLSAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHJl
c29sdmVXaGVuRmluaXNoZWQsIDUwKTsKLSAgICAgICAgICAgIH0uYmluZCh0aGlzKTsKLQotICAg
ICAgICAgICAgcmVzb2x2ZVdoZW5GaW5pc2hlZCgpOwotICAgICAgICAgICAgcmV0dXJuIHByb21p
c2U7CisgICAgICAgICAgICB0aGlzLl9maW5pc2hQcm9taXNlID0gbmV3IFNpbXBsZVByb21pc2U7
CisgICAgICAgICAgICB0aGlzLl9wcmV2aW91c1RpbWVzdGFtcCA9IHBlcmZvcm1hbmNlLm5vdygp
OworICAgICAgICAgICAgdGhpcy5fZGlkV2FybVVwID0gZmFsc2U7CisgICAgICAgICAgICB0aGlz
Ll9zdGFnZS50dW5lKHRoaXMuX2NvbnRyb2xsZXIuaW5pdGlhbENvbXBsZXhpdHkgLSB0aGlzLl9z
dGFnZS5jb21wbGV4aXR5KCkpOworICAgICAgICAgICAgdGhpcy5fYW5pbWF0ZUxvb3AoKTsKKyAg
ICAgICAgICAgIHJldHVybiB0aGlzLl9maW5pc2hQcm9taXNlOwogICAgICAgICB9LmJpbmQodGhp
cykpOwogICAgIH0sCiAKKyAgICAvLyBTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSB0aGlzIGlm
IHRoZXkgaGF2ZSBzZXR1cCB0byBkbyBwcmlvciB0byBjb21tZW5jaW5nLgogICAgIHdhaXRVbnRp
bFJlYWR5OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIgcHJvbWlzZSA9IG5ldyBTaW1w
bGVQcm9taXNlOwpAQCAtMzcxLDU1ICszNjAsMzAgQEAgQmVuY2htYXJrID0gVXRpbGl0aWVzLmNy
ZWF0ZUNsYXNzKAogICAgICAgICByZXR1cm4gcHJvbWlzZTsKICAgICB9LAogCi0gICAgcHJvY2Vz
c1NhbXBsZXM6IGZ1bmN0aW9uKHJlc3VsdHMpCisgICAgX2FuaW1hdGVMb29wOiBmdW5jdGlvbigp
CiAgICAgewotICAgICAgICB2YXIgY29tcGxleGl0eSA9IG5ldyBFeHBlcmltZW50OwotICAgICAg
ICB2YXIgc21vb3RoZWRGUFMgPSBuZXcgRXhwZXJpbWVudDsKLSAgICAgICAgdmFyIHNhbXBsaW5n
SW5kZXggPSAwOworICAgICAgICB0aGlzLl9jdXJyZW50VGltZXN0YW1wID0gcGVyZm9ybWFuY2Uu
bm93KCk7CiAKLSAgICAgICAgdmFyIHNhbXBsaW5nTWFyayA9IHRoaXMuX3NhbXBsZXIubWFya3Nb
U3RyaW5ncy5qc29uLnNhbXBsaW5nVGltZU9mZnNldF07Ci0gICAgICAgIGlmIChzYW1wbGluZ01h
cmspIHsKLSAgICAgICAgICAgIHNhbXBsaW5nSW5kZXggPSBzYW1wbGluZ01hcmsuaW5kZXg7Ci0g
ICAgICAgICAgICByZXN1bHRzW1N0cmluZ3MuanNvbi5zYW1wbGluZ1RpbWVPZmZzZXRdID0gc2Ft
cGxpbmdNYXJrLnRpbWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXN1bHRzW1N0cmluZ3MuanNv
bi5zYW1wbGVzXSA9IHRoaXMuX3NhbXBsZXIuc2FtcGxlc1swXS5tYXAoZnVuY3Rpb24oZCwgaSkg
ewotICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHsKLSAgICAgICAgICAgICAgICAvLyB0aW1lIG9m
ZnNldHMgcmVwcmVzZW50ZWQgYXMgc2Vjb25kcwotICAgICAgICAgICAgICAgIHRpbWU6IGQvMTAw
MCwKLSAgICAgICAgICAgICAgICBjb21wbGV4aXR5OiB0aGlzLl9zYW1wbGVyLnNhbXBsZXNbMV1b
aV0KLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIC8vIHRpbWUgb2Zmc2V0cyByZXByZXNl
bnRlZCBhcyBGUFMKLSAgICAgICAgICAgIGlmIChpID09IDApCi0gICAgICAgICAgICAgICAgcmVz
dWx0LmZwcyA9IDYwOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc3VsdC5m
cHMgPSAxMDAwIC8gKGQgLSB0aGlzLl9zYW1wbGVyLnNhbXBsZXNbMF1baSAtIDFdKTsKLQotICAg
ICAgICAgICAgdmFyIHNtb290aGVkRlBTcmVzdWx0ID0gdGhpcy5fc2FtcGxlci5zYW1wbGVzWzJd
W2ldOwotICAgICAgICAgICAgaWYgKHNtb290aGVkRlBTcmVzdWx0ICE9IC0xKSB7Ci0gICAgICAg
ICAgICAgICAgcmVzdWx0LnNtb290aGVkRlBTID0gc21vb3RoZWRGUFNyZXN1bHQ7Ci0gICAgICAg
ICAgICAgICAgcmVzdWx0LmludGVydmFsRlBTID0gdGhpcy5fc2FtcGxlci5zYW1wbGVzWzNdW2ld
OworICAgICAgICBpZiAoIXRoaXMuX2RpZFdhcm1VcCkgeworICAgICAgICAgICAgaWYgKHRoaXMu
X2N1cnJlbnRUaW1lc3RhbXAgLSB0aGlzLl9wcmV2aW91c1RpbWVzdGFtcCA+PSAxMDApIHsKKyAg
ICAgICAgICAgICAgICB0aGlzLl9kaWRXYXJtVXAgPSB0cnVlOworICAgICAgICAgICAgICAgIHRo
aXMuX2NvbnRyb2xsZXIuc3RhcnQodGhpcy5fc3RhZ2UsIHRoaXMuX2N1cnJlbnRUaW1lc3RhbXAp
OworICAgICAgICAgICAgICAgIHRoaXMuX3ByZXZpb3VzVGltZXN0YW1wID0gdGhpcy5fY3VycmVu
dFRpbWVzdGFtcDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGkgPj0gc2FtcGxp
bmdJbmRleCkgewotICAgICAgICAgICAgICAgIGNvbXBsZXhpdHkuc2FtcGxlKHJlc3VsdC5jb21w
bGV4aXR5KTsKLSAgICAgICAgICAgICAgICBpZiAoc21vb3RoZWRGUFNyZXN1bHQgIT0gLTEpIHsK
LSAgICAgICAgICAgICAgICAgICAgc21vb3RoZWRGUFMuc2FtcGxlKHNtb290aGVkRlBTcmVzdWx0
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICB0aGlzLl9z
dGFnZS5hbmltYXRlKDApOworICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMu
X2FuaW1hdGVMb29wKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9LCB0aGlzKTsKKyAgICAgICAgdGhpcy5fY29u
dHJvbGxlci51cGRhdGUodGhpcy5fc3RhZ2UsIHRoaXMuX2N1cnJlbnRUaW1lc3RhbXApOworICAg
ICAgICBpZiAodGhpcy5fY29udHJvbGxlci5zaG91bGRTdG9wKHRoaXMuX2N1cnJlbnRUaW1lc3Rh
bXApKSB7CisgICAgICAgICAgICB0aGlzLl9maW5pc2hQcm9taXNlLnJlc29sdmUodGhpcy5fY29u
dHJvbGxlci5yZXN1bHRzKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAg
ICAgICAgcmVzdWx0c1tTdHJpbmdzLmpzb24uc2NvcmVdID0gY29tcGxleGl0eS5zY29yZShFeHBl
cmltZW50LmRlZmF1bHRzLkNPTkNFUk4pOwotICAgICAgICBbY29tcGxleGl0eSwgc21vb3RoZWRG
UFNdLmZvckVhY2goZnVuY3Rpb24oZXhwZXJpbWVudCwgaW5kZXgpIHsKLSAgICAgICAgICAgIHZh
ciBqc29uRXhwZXJpbWVudCA9ICFpbmRleCA/IFN0cmluZ3MuanNvbi5leHBlcmltZW50cy5jb21w
bGV4aXR5IDogU3RyaW5ncy5qc29uLmV4cGVyaW1lbnRzLmZyYW1lUmF0ZTsKLSAgICAgICAgICAg
IHJlc3VsdHNbanNvbkV4cGVyaW1lbnRdID0ge307Ci0gICAgICAgICAgICByZXN1bHRzW2pzb25F
eHBlcmltZW50XVtTdHJpbmdzLmpzb24ubWVhc3VyZW1lbnRzLmF2ZXJhZ2VdID0gZXhwZXJpbWVu
dC5tZWFuKCk7Ci0gICAgICAgICAgICByZXN1bHRzW2pzb25FeHBlcmltZW50XVtTdHJpbmdzLmpz
b24ubWVhc3VyZW1lbnRzLmNvbmNlcm5dID0gZXhwZXJpbWVudC5jb25jZXJuKEV4cGVyaW1lbnQu
ZGVmYXVsdHMuQ09OQ0VSTik7Ci0gICAgICAgICAgICByZXN1bHRzW2pzb25FeHBlcmltZW50XVtT
dHJpbmdzLmpzb24ubWVhc3VyZW1lbnRzLnN0ZGV2XSA9IGV4cGVyaW1lbnQuc3RhbmRhcmREZXZp
YXRpb24oKTsKLSAgICAgICAgICAgIHJlc3VsdHNbanNvbkV4cGVyaW1lbnRdW1N0cmluZ3MuanNv
bi5tZWFzdXJlbWVudHMucGVyY2VudF0gPSBleHBlcmltZW50LnBlcmNlbnRhZ2UoKTsKLSAgICAg
ICAgfSk7CisgICAgICAgIHRoaXMuX3N0YWdlLmFuaW1hdGUodGhpcy5fY3VycmVudFRpbWVzdGFt
cCAtIHRoaXMuX3ByZXZpb3VzVGltZXN0YW1wKTsKKyAgICAgICAgdGhpcy5fcHJldmlvdXNUaW1l
c3RhbXAgPSB0aGlzLl9jdXJyZW50VGltZXN0YW1wOworICAgICAgICByZXF1ZXN0QW5pbWF0aW9u
RnJhbWUodGhpcy5fYW5pbWF0ZUxvb3ApOwogICAgIH0KIH0pOwpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzCmluZGV4IDY3N2EyMGJl
MjYzNDk2OTVmNDI3NGExZjA0YjI1ZDE5MDY2ZmJhZDAuLmJjYmU5MDI5MjhmMjAxNDg1NGYwZThm
YmRlOTM5NzUwZWVhNDMyOGIgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9yZXNvdXJjZXMvbWF0aC5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvcmVzb3VyY2VzL21hdGguanMKQEAgLTEsMjI2ICsxLDQxIEBACi12YXIgTWF0cml4
ID0KLXsKLSAgICBpbml0OiBmdW5jdGlvbihtLCBuLCB2KQotICAgIHsKLSAgICAgICAgcmV0dXJu
IEFycmF5KG0gKiBuKS5maWxsKHYpOwotICAgIH0sCi0KLSAgICB6ZXJvczogZnVuY3Rpb24obSwg
bikKLSAgICB7Ci0gICAgICAgIHJldHVybiBNYXRyaXguaW5pdChtLCBuLCAwKTsKLSAgICB9LAot
Ci0gICAgb25lczogZnVuY3Rpb24obSwgbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBNYXRyaXgu
aW5pdChtLCBuLCAxKTsKLSAgICB9LAotCi0gICAgaWRlbnRpdHk6IGZ1bmN0aW9uKG4pCi0gICAg
ewotICAgICAgICB2YXIgb3V0ID0gbmV3IE1hdHJpeC56ZXJvcyhuLCBuKTsKLSAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpCi0gICAgICAgICAgICBvdXRbaSAqIG4gKyBpXSA9IDE7
Ci0gICAgICAgIHJldHVybiBvdXQ7Ci0gICAgfSwKLQotICAgIHN0cjogZnVuY3Rpb24oQSwgbiwg
bSkKLSAgICB7Ci0gICAgICAgIHZhciBvdXQgPSAobSA+IDEgJiYgbiA+IDEgPyAiTWF0cml4WyIg
KyBuICsgIiwgIiArIG0gOiAiVmVjdG9yWyIgKyBtICogbikgKyAiXSA9IFsiOwotICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IG4gKiBtOyArK2kpIHsKLSAgICAgICAgICAgIG91dCArPSBBW2ld
OwotICAgICAgICAgICAgaWYgKGkgPCBuICogbSAtIDEpCi0gICAgICAgICAgICAgICAgb3V0ICs9
ICIsICI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG91dCArICJdIjsKLSAgICB9LAotCi0g
ICAgcG9zOiBmdW5jdGlvbihtLCBpLCBqKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG0gKiBpICsg
ajsKLSAgICB9LAotCi0gICAgYWRkOiBmdW5jdGlvbihBLCBCLCBuLCBtKQotICAgIHsKLSAgICAg
ICAgdmFyIG91dCA9IE1hdHJpeC56ZXJvcyhuLCBtKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBuICogbTsgKytpKQotICAgICAgICAgICAgb3V0W2ldID0gQVtpXSArIEJbaV07Ci0gICAg
ICAgIHJldHVybiBvdXQ7Ci0gICAgfSwKLQotICAgIHN1YnRyYWN0OiBmdW5jdGlvbihBLCBCLCBu
LCBtKQotICAgIHsKLSAgICAgICAgdmFyIG91dCA9IE1hdHJpeC56ZXJvcyhuLCBtKTsKLSAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuICogbTsgKytpKQotICAgICAgICAgICAgb3V0W2ldID0g
QVtpXSAtIEJbaV07Ci0gICAgICAgIHJldHVybiBvdXQ7Ci0gICAgfSwKLQotICAgIHNjYWxlOiBm
dW5jdGlvbihzLCBBLCBuLCBtKQotICAgIHsKLSAgICAgICAgdmFyIG91dCA9IE1hdHJpeC56ZXJv
cyhuLCBtKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuICogbTsgKytpKQotICAgICAg
ICAgICAgb3V0W2ldID0gcyAqIEFbaV07Ci0gICAgICAgIHJldHVybiBvdXQ7Ci0gICAgfSwKK1Np
bXBsZUthbG1hbkVzdGltYXRvciA9IFV0aWxpdGllcy5jcmVhdGVDbGFzcygKKyAgICBmdW5jdGlv
bihwcm9jZXNzRXJyb3IsIG1lYXN1cmVtZW50RXJyb3IpIHsKKyAgICAgICAgdGhpcy5faW5pdGlh
bGl6ZWQgPSBmYWxzZTsKIAotICAgIHRyYW5zcG9zZTogZnVuY3Rpb24oQSwgbiwgbSkKLSAgICB7
Ci0gICAgICAgIHZhciBvdXQgPSBNYXRyaXguemVyb3MobSwgbik7Ci0gICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgbjsgKytpKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG07
ICsraikKLSAgICAgICAgICAgICAgICBvdXRbTWF0cml4LnBvcyhuLCBpLCBqKV0gPSBBW01hdHJp
eC5wb3MobSwgaiwgaSldOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBvdXQ7Ci0gICAgfSwK
KyAgICAgICAgdmFyIGVycm9yID0gLjUgKiAoTWF0aC5zcXJ0KHByb2Nlc3NFcnJvciAqIHByb2Nl
c3NFcnJvciArIDQgKiBwcm9jZXNzRXJyb3IgKiBtZWFzdXJlbWVudEVycm9yKSAtIHByb2Nlc3NF
cnJvcik7CisgICAgICAgIHRoaXMuX2dhaW4gPSBlcnJvciAvIChlcnJvciArIG1lYXN1cmVtZW50
RXJyb3IpOworICAgIH0sIHsKIAotICAgIG11bHRpcGx5OiBmdW5jdGlvbihBLCBCLCBuLCBtLCBw
KQorICAgIHNhbXBsZTogZnVuY3Rpb24obmV3TWVhc3VyZW1lbnQpCiAgICAgewotICAgICAgICB2
YXIgb3V0ID0gTWF0cml4Lnplcm9zKG4sIHApOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IG47ICsraSkgewotICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwOyArK2opIHsKLSAg
ICAgICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IG07ICsraykgewotICAgICAgICAgICAg
ICAgICAgICBvdXRbTWF0cml4LnBvcyhwLCBpLCBqKV0gKz0gQVtNYXRyaXgucG9zKG0sIGksIGsp
XSAqIEJbTWF0cml4LnBvcyhwLCBrLCBqKV07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQorICAgICAgICBpZiAoIXRoaXMuX2luaXRpYWxpemVkKSB7CisgICAgICAgICAgICB0aGlz
Ll9pbml0aWFsaXplZCA9IHRydWU7CisgICAgICAgICAgICB0aGlzLl9lc3RpbWF0ZWRNZWFzdXJl
bWVudCA9IG5ld01lYXN1cmVtZW50OworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBvdXQ7Ci0gICAgfQotfQotCi12YXIgVmVjdG9yMyA9Ci17Ci0gICAgemVy
b3M6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBNYXRyaXguemVyb3MoMSwgMyk7
Ci0gICAgfSwKLQotICAgIG9uZXM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBN
YXRyaXgub25lcygxLCAzKTsKLSAgICB9LAotCi0gICAgc3RyOiBmdW5jdGlvbih2KQotICAgIHsK
LSAgICAgICAgcmV0dXJuIE1hdHJpeC5zdHIodiwgMSwgMyk7Ci0gICAgfSwKLQotICAgIGFkZDog
ZnVuY3Rpb24odiwgdykKLSAgICB7Ci0gICAgICAgIHJldHVybiBNYXRyaXguYWRkKHYsIHcsIDEs
IDMpOwotICAgIH0sCi0KLSAgICBzdWJ0cmFjdDogZnVuY3Rpb24odiwgdykKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBNYXRyaXguc3VidHJhY3QodiwgdywgMSwgMyk7Ci0gICAgfSwKLQotICAgIHNj
YWxlOiBmdW5jdGlvbihzLCB2KQotICAgIHsKLSAgICAgICAgcmV0dXJuIE1hdHJpeC5zY2FsZShz
LCB2LCAxLCAzKTsKLSAgICB9LAogCi0gICAgbXVsdGlwbHlNYXRyaXgzOiBmdW5jdGlvbih2LCBB
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIE1hdHJpeC5tdWx0aXBseSh2LCBBLCAxLCAzLCAzKTsK
KyAgICAgICAgdGhpcy5fZXN0aW1hdGVkTWVhc3VyZW1lbnQgPSB0aGlzLl9lc3RpbWF0ZWRNZWFz
dXJlbWVudCArIHRoaXMuX2dhaW4gKiAobmV3TWVhc3VyZW1lbnQgLSB0aGlzLl9lc3RpbWF0ZWRN
ZWFzdXJlbWVudCk7CiAgICAgfSwKIAotICAgIG11bHRpcGx5VmVjdG9yMzogZnVuY3Rpb24odiwg
dykKKyAgICBnZXQgZXN0aW1hdGUoKQogICAgIHsKLSAgICAgICAgdmFyIG91dCA9IDA7Ci0gICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzsgKytpKQotICAgICAgICAgICAgb3V0ICs9IHZbaV0g
KiB3W2ldOwotICAgICAgICByZXR1cm4gb3V0OworICAgICAgICByZXR1cm4gdGhpcy5fZXN0aW1h
dGVkTWVhc3VyZW1lbnQ7CiAgICAgfQotfQotCi12YXIgTWF0cml4MyA9Ci17Ci0gICAgemVyb3M6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBNYXRyaXguemVyb3MoMywgMyk7Ci0g
ICAgfSwKLQotICAgIGlkZW50aXR5OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4g
TWF0cml4LmlkZW50aXR5KDMsIDMpOwotICAgIH0sCi0KLSAgICBzdHI6IGZ1bmN0aW9uKEEpCi0g
ICAgewotICAgICAgICByZXR1cm4gTWF0cml4LnN0cihBLCAzLCAzKTsKLSAgICB9LAorfSk7CiAK
LSAgICBwb3M6IGZ1bmN0aW9uKGksIGopCitQSURDb250cm9sbGVyID0gVXRpbGl0aWVzLmNyZWF0
ZUNsYXNzKAorICAgIGZ1bmN0aW9uKHlzcCkKICAgICB7Ci0gICAgICAgIHJldHVybiBNYXRyaXgu
cG9zKDMsIGksIGopOwotICAgIH0sCi0KLSAgICBhZGQ6IGZ1bmN0aW9uKEEsIEIpCi0gICAgewot
ICAgICAgICByZXR1cm4gTWF0cml4LmFkZChBLCBCLCAzLCAzKTsKLSAgICB9LAotCi0gICAgc3Vi
dHJhY3Q6IGZ1bmN0aW9uKEEsIEIpCi0gICAgewotICAgICAgICByZXR1cm4gTWF0cml4LnN1YnRy
YWN0KEEsIEIsIDMsIDMpOwotICAgIH0sCi0KLSAgICBzY2FsZTogZnVuY3Rpb24ocywgQSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBNYXRyaXguc2NhbGUocywgQSwgMywgMyk7Ci0gICAgfSwKKyAg
ICAgICAgdGhpcy5feXNwID0geXNwOworICAgICAgICB0aGlzLl9vdXQgPSAwOwogCi0gICAgdHJh
bnNwb3NlOiBmdW5jdGlvbihBKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE1hdHJpeC50cmFuc3Bv
c2UoQSwgMywgMyk7Ci0gICAgfSwKKyAgICAgICAgdGhpcy5fS3AgPSAwOworICAgICAgICB0aGlz
Ll9zdGFnZSA9IFBJRENvbnRyb2xsZXIuc3RhZ2VzLldBUk1JTkc7CiAKLSAgICBtdWx0aXBseU1h
dHJpeDM6IGZ1bmN0aW9uKEEsIEIpCi0gICAgewotICAgICAgICByZXR1cm4gTWF0cml4Lm11bHRp
cGx5KEEsIEIsIDMsIDMsIDMpOwotICAgIH0sCisgICAgICAgIHRoaXMuX2VvbGQgPSAwOworICAg
ICAgICB0aGlzLl9JID0gMDsKKyAgICB9LCB7CiAKLSAgICBtdWx0aXBseVZlY3RvcjM6IGZ1bmN0
aW9uKEEsIHYpCi0gICAgewotICAgICAgICByZXR1cm4gTWF0cml4Lm11bHRpcGx5KEEsIHYsIDMs
IDMsIDEpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gUElEQ29udHJvbGxlcih5c3ApCi17Ci0gICAg
dGhpcy5feXNwID0geXNwOwotICAgIHRoaXMuX291dCA9IDA7Ci0KLSAgICB0aGlzLl9LcCA9IDA7
Ci0gICAgdGhpcy5fc3RhZ2UgPSBQSURDb250cm9sbGVyLnN0YWdlcy5XQVJNSU5HOwotCi0gICAg
dGhpcy5fZW9sZCA9IDA7Ci0gICAgdGhpcy5fSSA9IDA7Ci19Ci0KLS8vIFRoaXMgZW51bSB3aWxs
IGJlIHVzZWQgdG8gdGVsbCB3aGV0aGVyIHRoZSBzeXN0ZW0gb3V0cHV0IChvciB0aGUgY29udHJv
bGxlciBpbnB1dCkKLS8vIGlzIG1vdmluZyB0b3dhcmRzIHRoZSBzZXQtcG9pbnQgb3IgYXdheSBm
cm9tIGl0LgotUElEQ29udHJvbGxlci55UG9zaXRpb25zID0gewotICAgIEJFRk9SRV9TRVRQT0lO
VDogMCwKLSAgICBBRlRFUl9TRVRQT0lOVDogMQotfQotCi0vLyBUaGUgWmllZ2xlcuKAk05pY2hv
bHMgbWV0aG9kIGZvciBpcyB1c2VkIHR1bmluZyB0aGUgUElEIGNvbnRyb2xsZXIuIFRoZSB3b3Jr
ZmxvdyBvZgotLy8gdGhlIHR1bmluZyBpcyBzcGxpdCBpbnRvIGZvdXIgc3RhZ2VzLiBUaGUgZmly
c3QgdHdvIHN0YWdlcyBkZXRlcm1pbmUgdGhlIHZhbHVlcwotLy8gb2YgdGhlIFBJRCBjb250cm9s
bGVyIGdhaW5zLiBEdXJpbmcgdGhlc2UgdHdvIHN0YWdlcyB3ZSByZXR1cm4gdGhlIHByb3BvcnRp
b25hbAotLy8gdGVybSBvbmx5LiBUaGUgdGhpcmQgc3RhZ2UgaXMgdXNlZCB0byBkZXRlcm1pbmUg
dGhlIG1pbi1tYXggdmFsdWVzIG9mIHRoZQotLy8gc2F0dXJhdGlvbiBhY3R1YXRvci4gSW4gdGhl
IGxhc3Qgc3RhZ2UgYmFjay1jYWxjdWxhdGlvbiBhbmQgdHJhY2tpbmcgYXJlIGFwcGxpZWQKLS8v
IHRvIGF2b2lkIGludGVncmF0b3Igd2luZHVwLiBEdXJpbmcgdGhlIGxhc3QgdHdvIHN0YWdlcywg
d2UgcmV0dXJuIGEgUElEIGNvbnRyb2wKLS8vIHZhbHVlLgotUElEQ29udHJvbGxlci5zdGFnZXMg
PSB7Ci0gICAgV0FSTUlORzogMCwgICAgICAgICAvLyBJbmNyZWFzZSB0aGUgdmFsdWUgb2YgdGhl
IEtwIHVudGlsIHRoZSBzeXN0ZW0gb3V0cHV0IHJlYWNoZXMgeXNwLgotICAgIE9WRVJTSE9PVDog
MSwgICAgICAgLy8gTWVhc3VyZSB0aGUgb3NjaWxsYXRpb24gcGVyaW9kIGFuZCB0aGUgb3ZlcnNo
b290IHZhbHVlCi0gICAgVU5ERVJTSE9PVDogMiwgICAgICAvLyBSZXR1cm4gUElEIHZhbHVlIGFu
ZCBtZWFzdXJlIHRoZSB1bmRlcnNob290IHZhbHVlCi0gICAgU0FUVVJBVEU6IDMgICAgICAgICAv
LyBSZXR1cm4gUElEIHZhbHVlIGFuZCBhcHBseSBiYWNrLWNhbGN1bGF0aW9uIGFuZCB0cmFja2lu
Zy4KLX0KLQotUElEQ29udHJvbGxlci5wcm90b3R5cGUgPQotewogICAgIC8vIERldGVybWluZXMg
d2hldGhlciB0aGUgY3VycmVudCB5IGlzCiAgICAgLy8gIGJlZm9yZSB5c3AgPT4gKGJlbG93IHlz
cCBpZiB5c3AgPiB5MCkgfHwgKGFib3ZlIHlzcCBpZiB5c3AgPCB5MCkKICAgICAvLyAgYWZ0ZXIg
eXNwID0+IChhYm92ZSB5c3AgaWYgeXNwID4geTApIHx8IChiZWxvdyB5c3AgaWYgeXNwIDwgeTAp
CkBAIC00MTAsNyArMjI1LDcgQEAgUElEQ29udHJvbGxlci5wcm90b3R5cGUgPQogICAgICAgICBy
ZXR1cm4gdTsKICAgICB9LAogCi0gICAgLy8gQ2FsbGVkIGZyb20gdGhlIGJlbmNobWFyayB0byB0
dW5lIGl0cyB0ZXN0LiBJdCB1c2VzIFppZWdsZXLigJNOaWNob2xzIG1ldGhvZAorICAgIC8vIENh
bGxlZCBmcm9tIHRoZSBiZW5jaG1hcmsgdG8gdHVuZSBpdHMgdGVzdC4gSXQgdXNlcyBaaWVnbGVy
LU5pY2hvbHMgbWV0aG9kCiAgICAgLy8gdG8gY2FsY3VsYXRlIHRoZSBjb250cm9sbGVyIHBhcmFt
ZXRlcnMuIEl0IHRoZW4gcmV0dXJucyBhIFBJRCB0dW5pbmcgdmFsdWUuCiAgICAgdHVuZTogZnVu
Y3Rpb24odCwgaCwgeSkKICAgICB7CkBAIC00MjYsNjYgKzI0MSwyNyBAQCBQSURDb250cm9sbGVy
LnByb3RvdHlwZSA9CiAgICAgICAgIC8vIEFwcGx5IGJhY2stY2FsY3VsYXRpb24gYW5kIHRyYWNr
aW5nIHRvIGF2b2lkIGludGVncmF0b3Igd2luZHVwCiAgICAgICAgIHJldHVybiB0aGlzLl9zYXR1
cmF0ZSh2LCBlKTsKICAgICB9Ci19Ci0KLWZ1bmN0aW9uIEthbG1hbkVzdGltYXRvcihpbml0WCkK
LXsKLSAgICAvLyBJbml0aWFsaXplIHN0YXRlIHRyYW5zaXRpb24gbWF0cml4LgotICAgIHRoaXMu
X21hdEEgPSBNYXRyaXgzLmlkZW50aXR5KCk7Ci0gICAgdGhpcy5fbWF0QVtNYXRyaXgzLnBvcygw
LCAyKV0gPSAxOwotCi0gICAgLy8gSW5pdGlhbGl6ZSBtZWFzdXJlbWVudCBtYXRyaXguCi0gICAg
dGhpcy5fdmVjSCA9IFZlY3RvcjMuemVyb3MoKTsKLSAgICB0aGlzLl92ZWNIWzBdID0gMTsKLQot
ICAgIHRoaXMuX21hdFEgPSBNYXRyaXgzLmlkZW50aXR5KCk7Ci0gICAgdGhpcy5fUiA9IDEwMDA7
Ci0KLSAgICAvLyBJbml0aWFsIHN0YXRlIGNvbmRpdGlvbnMuCi0gICAgdGhpcy5fdmVjWF9lc3Qg
PSBWZWN0b3IzLnplcm9zKCk7Ci0gICAgdGhpcy5fdmVjWF9lc3RbMF0gPSBpbml0WDsKLSAgICB0
aGlzLl9tYXRQX2VzdCA9IE1hdHJpeDMuemVyb3MoKTsKLX0KLQotS2FsbWFuRXN0aW1hdG9yLnBy
b3RvdHlwZSA9Ci17Ci0gICAgZXN0aW1hdGU6IGZ1bmN0aW9uKGN1cnJlbnQpCi0gICAgewotICAg
ICAgICAvLyBQcm9qZWN0IHRoZSBzdGF0ZSBhaGVhZAotICAgICAgICAvLyAgWF9wcmQoaykgPSBB
ICogWF9lc3Qoay0xKQotICAgICAgICB2YXIgdmVjWF9wcmQgPSBNYXRyaXgzLm11bHRpcGx5VmVj
dG9yMyh0aGlzLl9tYXRBLCB0aGlzLl92ZWNYX2VzdCk7Ci0KLSAgICAgICAgLy8gUHJvamVjdCB0
aGUgZXJyb3IgY292YXJpYW5jZSBhaGVhZAotICAgICAgICAvLyAgUF9wcmQoaykgPSBBICogUF9l
c3Qoay0xKSAqIEEnICsgUQotICAgICAgICB2YXIgbWF0UF9wcmQgPSBNYXRyaXgzLmFkZChNYXRy
aXgzLm11bHRpcGx5TWF0cml4MyhNYXRyaXgzLm11bHRpcGx5TWF0cml4Myh0aGlzLl9tYXRBLCB0
aGlzLl9tYXRQX2VzdCksIE1hdHJpeDMudHJhbnNwb3NlKHRoaXMuX21hdEEpKSwgdGhpcy5fbWF0
USk7Ci0KLSAgICAgICAgLy8gQ29tcHV0ZSBLYWxtYW4gZ2FpbgotICAgICAgICAvLyAgQiA9IEgg
KiBQX3ByZChrKSc7Ci0gICAgICAgIC8vICBTID0gQiAqIEgnICsgUjsKLSAgICAgICAgLy8gIEso
aykgPSAoUyBcIEIpJzsKLSAgICAgICAgdmFyIHZlY0IgPSBWZWN0b3IzLm11bHRpcGx5TWF0cml4
Myh0aGlzLl92ZWNILCBNYXRyaXgzLnRyYW5zcG9zZShtYXRQX3ByZCkpOwotICAgICAgICB2YXIg
UyA9IFZlY3RvcjMubXVsdGlwbHlWZWN0b3IzKHZlY0IsIHRoaXMuX3ZlY0gpICsgdGhpcy5fUjsK
LSAgICAgICAgdmFyIHZlY0dhaW4gPSBWZWN0b3IzLnNjYWxlKDEvUywgdmVjQik7Ci0KLSAgICAg
ICAgLy8gVXBkYXRlIHRoZSBlc3RpbWF0ZSB2aWEgeihrKQotICAgICAgICAvLyAgWF9lc3Qoaykg
PSB4X3ByZCArIEsoaykgKiAoeihrKSAtIEggKiBYX3ByZChrKSk7Ci0gICAgICAgIHRoaXMuX3Zl
Y1hfZXN0ID0gVmVjdG9yMy5hZGQodmVjWF9wcmQsIFZlY3RvcjMuc2NhbGUoY3VycmVudCAtIFZl
Y3RvcjMubXVsdGlwbHlWZWN0b3IzKHRoaXMuX3ZlY0gsIHZlY1hfcHJkKSwgdmVjR2FpbikpOwot
Ci0gICAgICAgIC8vIFVwZGF0ZSB0aGUgZXJyb3IgY292YXJpYW5jZQotICAgICAgICAvLyAgUF9l
c3QoaykgPSBQX3ByZChrKSAtIEsoaykgKiBIICogUF9wcmQoayk7Ci0gICAgICAgIHRoaXMuX21h
dFBfZXN0ID0gTWF0cml4My5zdWJ0cmFjdChtYXRQX3ByZCwgTWF0cml4My5zY2FsZShWZWN0b3Iz
Lm11bHRpcGx5VmVjdG9yMyh2ZWNHYWluLCB0aGlzLl92ZWNIKSwgbWF0UF9wcmQpKTsKLQotICAg
ICAgICAvLyBDb21wdXRlIHRoZSBlc3RpbWF0ZWQgbWVhc3VyZW1lbnQuCi0gICAgICAgIC8vICB5
ID0gSCAqIFhfZXN0KGspOwotICAgICAgICByZXR1cm4gVmVjdG9yMy5tdWx0aXBseVZlY3RvcjMo
dGhpcy5fdmVjSCwgIHRoaXMuX3ZlY1hfZXN0KTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIElkZW50
aXR5RXN0aW1hdG9yKCkge30KLUlkZW50aXR5RXN0aW1hdG9yLnByb3RvdHlwZSA9Ci17Ci0gICAg
ZXN0aW1hdGU6IGZ1bmN0aW9uKGN1cnJlbnQpCi0gICAgewotICAgICAgICByZXR1cm4gY3VycmVu
dDsKK30pOworCitVdGlsaXRpZXMuZXh0ZW5kT2JqZWN0KFBJRENvbnRyb2xsZXIsIHsKKyAgICAv
LyBUaGlzIGVudW0gd2lsbCBiZSB1c2VkIHRvIHRlbGwgd2hldGhlciB0aGUgc3lzdGVtIG91dHB1
dCAob3IgdGhlIGNvbnRyb2xsZXIgaW5wdXQpCisgICAgLy8gaXMgbW92aW5nIHRvd2FyZHMgdGhl
IHNldC1wb2ludCBvciBhd2F5IGZyb20gaXQuCisgICAgeVBvc2l0aW9uczogeworICAgICAgICBC
RUZPUkVfU0VUUE9JTlQ6IDAsCisgICAgICAgIEFGVEVSX1NFVFBPSU5UOiAxCisgICAgfSwKKwor
ICAgIC8vIFRoZSBaaWVnbGVyLU5pY2hvbHMgbWV0aG9kIGZvciBpcyB1c2VkIHR1bmluZyB0aGUg
UElEIGNvbnRyb2xsZXIuIFRoZSB3b3JrZmxvdyBvZgorICAgIC8vIHRoZSB0dW5pbmcgaXMgc3Bs
aXQgaW50byBmb3VyIHN0YWdlcy4gVGhlIGZpcnN0IHR3byBzdGFnZXMgZGV0ZXJtaW5lIHRoZSB2
YWx1ZXMKKyAgICAvLyBvZiB0aGUgUElEIGNvbnRyb2xsZXIgZ2FpbnMuIER1cmluZyB0aGVzZSB0
d28gc3RhZ2VzIHdlIHJldHVybiB0aGUgcHJvcG9ydGlvbmFsCisgICAgLy8gdGVybSBvbmx5LiBU
aGUgdGhpcmQgc3RhZ2UgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIG1pbi1tYXggdmFsdWVzIG9m
IHRoZQorICAgIC8vIHNhdHVyYXRpb24gYWN0dWF0b3IuIEluIHRoZSBsYXN0IHN0YWdlIGJhY2st
Y2FsY3VsYXRpb24gYW5kIHRyYWNraW5nIGFyZSBhcHBsaWVkCisgICAgLy8gdG8gYXZvaWQgaW50
ZWdyYXRvciB3aW5kdXAuIER1cmluZyB0aGUgbGFzdCB0d28gc3RhZ2VzLCB3ZSByZXR1cm4gYSBQ
SUQgY29udHJvbAorICAgIC8vIHZhbHVlLgorICAgIHN0YWdlczogeworICAgICAgICBXQVJNSU5H
OiAwLCAgICAgICAgIC8vIEluY3JlYXNlIHRoZSB2YWx1ZSBvZiB0aGUgS3AgdW50aWwgdGhlIHN5
c3RlbSBvdXRwdXQgcmVhY2hlcyB5c3AuCisgICAgICAgIE9WRVJTSE9PVDogMSwgICAgICAgLy8g
TWVhc3VyZSB0aGUgb3NjaWxsYXRpb24gcGVyaW9kIGFuZCB0aGUgb3ZlcnNob290IHZhbHVlCisg
ICAgICAgIFVOREVSU0hPT1Q6IDIsICAgICAgLy8gUmV0dXJuIFBJRCB2YWx1ZSBhbmQgbWVhc3Vy
ZSB0aGUgdW5kZXJzaG9vdCB2YWx1ZQorICAgICAgICBTQVRVUkFURTogMyAgICAgICAgIC8vIFJl
dHVybiBQSUQgdmFsdWUgYW5kIGFwcGx5IGJhY2stY2FsY3VsYXRpb24gYW5kIHRyYWNraW5nLgog
ICAgIH0KLX07Cit9KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9yZXNvdXJjZXMvc2FtcGxlci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9yZXNvdXJjZXMvc2FtcGxlci5qcwppbmRleCA1MjA2OGVjM2YyNmEzMjIzMTAxYzI5NWJi
NzczYjllMmIyNGRiYjMzLi5lNjA5OTVmMzBmYjNiN2UxOGM4N2ZiMmNhY2VmMjMyOTgyOWJjOWY2
IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2Vz
L3NhbXBsZXIuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291
cmNlcy9zYW1wbGVyLmpzCkBAIC04MSwxMyArODEsMTAgQEAgU2FtcGxlciA9IFV0aWxpdGllcy5j
cmVhdGVDbGFzcygKICAgICAgICAgdGhpcy5tYXJrc1tjb21tZW50XSA9IGRhdGE7CiAgICAgfSwK
IAotICAgIHByb2Nlc3M6IGZ1bmN0aW9uKG9wdGlvbnMpCisgICAgcHJvY2VzczogZnVuY3Rpb24o
KQogICAgIHsKICAgICAgICAgdmFyIHJlc3VsdHMgPSB7fTsKIAotICAgICAgICBpZiAob3B0aW9u
c1siYWRqdXN0bWVudCJdID09ICJhZGFwdGl2ZSIpCi0gICAgICAgICAgICByZXN1bHRzW1N0cmlu
Z3MuanNvbi50YXJnZXRGUFNdID0gK29wdGlvbnNbImZyYW1lLXJhdGUiXTsKLQogICAgICAgICAv
LyBSZW1vdmUgdW51c2VkIGNhcGFjaXR5CiAgICAgICAgIHRoaXMuc2FtcGxlcyA9IHRoaXMuc2Ft
cGxlcy5tYXAoZnVuY3Rpb24oYXJyYXkpIHsKICAgICAgICAgICAgIHJldHVybiBhcnJheS5zbGlj
ZSgwLCB0aGlzLnNhbXBsZUNvdW50KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hh
bmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZThlN2MzOTkxZTVhYWU5
NTg1NjI4NTlmMjlkMzY1NTUwN2RjYzg5NC4uYTRkZTY1NmMwMmRmYjM2ZTAwZDJmYWQ1ZGQxNjhm
ZWRiMDFlZTUwNiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDUgQEAKKzIwMTYtMDItMDcg
IEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBob3cgdGhlIGJl
bmNobWFyayBpcyBydW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1Mzk2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEludHJvZHVjZSB0aGUgbm90aW9uIG9mIGEgQ29udHJvbGxlci4gSXQgaXMgcmVzcG9u
c2libGUgZm9yIHJlY29yZGluZywgdXBkYXRpbmcsCisgICAgICAgIGFuZCBwcm9jZXNzaW5nIHRo
ZSBzdGF0aXN0aWNzIGFuZCBjb21wbGV4aXR5IG9mIHRoZSBiZW5jaG1hcmsuIFRoaXMgYWxsb3dz
CisgICAgICAgIHBsdWdnaW5nIGluIGRpZmZlcmVudCBDb250cm9sbGVycy4KKworICAgICAgICBU
aGlzIHN0cmlwcyBtb3N0IG9mIHRoZSBmdW5jdGlvbmFsaXR5IGZyb20gQW5pbWF0b3IgYW5kIEJl
bmNobWFya1N0YXRlLCBzbyBmb2xkCisgICAgICAgIHdoYXQncyBsZWZ0IGludG8gQmVuY2htYXJr
LiBOb3csIEJlbmNobWFya3Mgb25seSBvd24gYSBzdGFnZSBhbmQgYSBjb250cm9sbGVyLCBidXQK
KyAgICAgICAgYXJlIHJlc3BvbnNpYmxlIGZvciBkcml2aW5nIHRoZSBhbmltYXRpb24gbG9vcC4K
KworICAgICAgICBSZXdyaXRlIEFuaW1hdG9yLl9zaG91bGRSZXF1ZXN0QW5vdGhlckZyYW1lIGlu
dG8gdHdvIGRpZmZlcmVudCBDb250cm9sbGVycy4gT25lCisgICAgICAgIG1haW50YWlucyBhIGZp
eGVkIGNvbXBsZXhpdHksIGFuZCB0aGUgb3RoZXIgYWRhcHRzIHRoZSBjb21wbGV4aXR5IHRvIG1l
ZXQgYQorICAgICAgICBmaXhlZCBGUFMuCisKKyAgICAgICAgRml4IHRoZSBLYWxtYW4gZXN0aW1h
dG9yIHRvIGJlIG1vZGVsZWQgb24gYSBzY2FsYXIgdmFyaWFibGUgd2l0aCBubyBtb2RlbC4KKwor
ICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanM6IFJlbW92ZSBCZW5j
aG1hcmtTdGF0ZSBhbmQgQW5pbWF0b3IsIGFuZAorICAgICAgICByZXBsYWNlIGl0IHdpdGggYSBD
b250cm9sbGVyLiBBZGQgYSBGaXhlZENvbnRyb2xsZXIgYW5kIHJlZmFjdG9yIHRoZSBwcmV2aW91
cyBjb250cm9sbGVyCisgICAgICAgIHRvIGFuIEFkYXB0aXZlQ29udHJvbGxlci4KKworICAgICAg
ICAoQ29udHJvbGxlcik6IENvbnRyb2xsZXJzIG93biB0aGUgZXN0aW1hdG9yIGFuZCB0aGUgc2Ft
cGxlci4gV2hlbiBhIG5ldyBmcmFtZSBpcworICAgICAgICBkaXNwbGF5ZWQsIHRoZSBhbmltYXRp
b24gbG9vcCBjYWxscyB1cGRhdGUoKS4gVGhlIGVzdGltYXRvciBhbmQgc2FtcGxlciByZWNvcmQK
KyAgICAgICAgc3RhdHMsIHRoZW4gdHVuZS4gU2FtcGxlcnMgY2FuIHRyYWNrIG11bHRpcGxlIHNl
cmllcyBvZiBkYXRhLiBUaGUgYmFzaWMgY29udHJvbGxlcgorICAgICAgICB0cmFja3MgdGltZXN0
YW1wLCBjb21wbGV4aXR5LCBhbmQgZXN0aW1hdGVkIGZyYW1lIHJhdGUuCisgICAgICAgICAgICAg
ICAgVGhlIEthbG1hbiBlc3RpbWF0aW9uIGlzIGJhc2VkIG9uIHRoZSBmcmFtZSBsZW5ndGggcmF0
aGVyIHRoYW4gdGhlIGZyYW1lCisgICAgICAgIHJhdGUuIEJlY2F1c2UgRlBTIGlzIGludmVyc2Ug
cHJvcG9ydGlvbmFsIHRvIGZyYW1lIGxlbmd0aCwgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIG1lYXN1
cmVkCisgICAgICAgIGZyYW1lIGxlbmd0aCBpcyB2ZXJ5IHNtYWxsLCB0aGUgRlBTIGVuZHMgdXAg
YmVpbmcgYSB3aWxkbHkgbGFyZ2UgbnVtYmVyIChpbiB0aGUgb3JkZXIgb2YKKyAgICAgICAgNjAw
LTEwMDAgIkZQUyIpLCBhbmQgaXQgcHVsbHMgdGhlIGVzdGltYXRvciB1cCBkcmFzdGljYWxseSBl
bm91Z2ggdGhhdCBpdCB0YWtlcyBhIHdoaWxlCisgICAgICAgIGZvciBpdCB0byBzZXR0bGUgYmFj
ayBkb3duLiBVc2luZyBmcmFtZSBsZW5ndGggcmVkdWNlcyB0aGUgaW1wYWN0IG9mIHRoZXNlIHNw
aWtlcy4KKyAgICAgICAgICAgICAgICBDb252ZXJnaW5nIHRoZSBlc3RpbWF0aW9uIHRha2VzIGVu
b3VnaCB0aW1lIHRvIGF2b2lkIGluaXRpYWxpemluZyBpdCBpbW1lZGlhdGVseQorICAgICAgICB3
aGVuIHRoZSBiZW5jaG1hcmsgc3RhcnRzLiBJbnN0ZWFkLCB0aGUgYmVuY2htYXJrIHJ1bnMgZm9y
IGEgYnJpZWYgcGVyaW9kIG9mIHRpbWUgKDEwMG1zKQorICAgICAgICBiZWZvcmUgcnVubmluZyBp
dCBpbiBlYXJuZXN0LiBBbGxvdyBjb250cm9sbGVycyBhbiBvcHBvcnR1bml0eSB0byBzZXQgdGhl
IGNvbXBsZXhpdHkKKyAgICAgICAgYmVmb3JlIHN0YXJ0aW5nIHJlY29yZGluZy4KKyAgICAgICAg
ICAgICAgICBXaGVuIHRoZSBiZW5jaG1hcmsgaXMgY29tcGxldGUsIHRoZSBjb250cm9sbGVyIGhh
cyBhbiBvcHBvcnR1bml0eSB0byBwcm9jZXNzCisgICAgICAgIHRoZSBzYW1wbGVzLiBUaGUgZGVm
YXVsdCBpbXBsZW1lbnRhdGlvbiBjYWxjdWxhdGVzIHRoZSByYXcgRlBTIGJhc2VkIG9uIHRoZSB0
aW1lCisgICAgICAgIGRpZmZlcmVuY2Ugb2YgdGhlIHNhbXBsZXMsIGFuZCBjYWxjdWxhdGVzIHRo
ZSBjb21wbGV4aXR5IHNjb3JlLiBUaGlzIGlzIG1vdmVkIGZyb20KKyAgICAgICAgQmVuY2htYXJr
LnByb2Nlc3NTYW1wbGVzLgorCisgICAgICAgIChDb250cm9sbGVyKTogSW5pdGlhbGl6ZSB0aW1l
c3RhbXBzLiBUaGVzZSBhcmUgYXQgZmlyc3QgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZQor
ICAgICAgICBiZW5jaG1hcmssIGJ1dCBhcmUgb2Zmc2V0IGJ5IHRoZSBhYnNvbHV0ZSBzdGFydCB0
aW1lIGR1cmluZyBzdGFydCgpLiBCeSBkZWZhdWx0IG1haW50YWluCisgICAgICAgIDMgZGF0YSBz
ZXJpZXMsIGJ1dCBzdWJjbGFzc2VzIGNhbiBvdmVycmlkZS4KKyAgICAgICAgKHN0YXJ0KTogQ2Fs
bHMgcmVjb3JkRmlyc3RTYW1wbGUoKSBmb3Igc3ViY2xhc3NlcyB0byBvdmVycmlkZSBpZiBuZWVk
ZWQuCisgICAgICAgIChyZWNvcmRGaXJzdFNhbXBsZSk6IEZvciBiYXNpYyBjb250cm9sbGVyLCBz
dGFydCBzYW1wbGluZyBhdCB0aGUgYmVnaW5uaW5nLgorICAgICAgICAodXBkYXRlKTogVXBkYXRl
IHRoZSBmcmFtZSBsZW5ndGggZXN0aW1hdG9yIGFuZCBzYW1wbGUuCisgICAgICAgIChzaG91bGRT
dG9wKTogQ2hlY2tzIHRoYXQgdGhlIHRpbWUgaXMgYmVmb3JlIF9lbmRUaW1lc3RhbXAuCisgICAg
ICAgIChyZXN1bHRzKTogUmV0dXJucyB0aGUgcHJvY2Vzc2VkIHNhbXBsZXMuCisgICAgICAgIChw
cm9jZXNzU2FtcGxlcyk6IEl0ZXJhdGUgdGhyb3VnaCB0aGUgc2FtcGxlIGRhdGEgYW5kIGNvbGxh
dGUgdGhlbS4gSW5jbHVkZSBzY29yZXMuCisKKyAgICAgICAgKEZpeGVkQ29tcGxleGl0eUNvbnRy
b2xsZXIpOiBDb250cm9sbGVyIHRoYXQgdHVuZXMgdGhlIHN0YWdlIHRvIHRoZSBkZXNpcmVkIGNv
bXBsZXhpdHkKKyAgICAgICAgcHJpb3IgdG8gc3RhcnRpbmcsIGFuZCBrZWVwcyBpdCBhdCB0aGF0
IGNvbXBsZXhpdHkuCisKKyAgICAgICAgKEFkYXB0aXZlQ29udHJvbGxlcik6IEhhdmUgdGhlIGVz
dGltYXRvciBlc3RpbWF0ZSB0aGUgaW50ZXJ2YWwgZnJhbWUgcmF0ZSBpbnN0ZWFkIG9mIHRoZQor
ICAgICAgICByYXcgZnJhbWUgcmF0ZS4KKyAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgdmVy
c2lvbiBvZiB0aGlzIGNvbnRyb2xsZXIgaWdub3JlZCB0aGUgZnJhbWUgdGhhdCBjYW1lIGFmdGVy
IHRoZQorICAgICAgICBhZGp1c3RtZW50LiBUaGUgcmF3IEZQUyBzaG93IHRoYXQgd2hhdGV2ZXIg
bm9pc2UgdGhlIHNjZW5lIGNoYW5nZSBhZGRzIGlzIG5lZ2xpZ2libGUKKyAgICAgICAgY29tcGFy
ZWQgdG8gdGhlIG5vaXNlIG9mIHRoZSBzeXN0ZW0gb3ZlcmFsbC4gU3RvcCBpZ25vcmluZyB0aGF0
IGZyYW1lIGFuZCBpbmNsdWRlIGFsbAorICAgICAgICBmcmFtZXMgaW4gdGhlIG1lYXN1cmVtZW50
cy4KKworICAgICAgICAoQmVuY2htYXJrKTogUmVtb3ZlIGRlcGVuZGVuY3kgb24gYW5pbWF0b3Is
IGFuZCBpbnN0YW50aWF0ZSBhIHJ1bm5lciBiYXNlZCBvbiB3aGF0IGlzCisgICAgICAgIHNlbGVj
dGVkLiBNb3N0IG9mIHRoZSBsb29wJ3MgZnVuY3Rpb25hbGl0eSBpcyBpbiBDb250cm9sbGVyLCBz
byByZW1vdmUgaGVyZS4KKyAgICAgICAgKEJlbmNobWFyay5ydW4pOiBSZW1vdmUgc3RhcnQoKSBz
aW5jZSBpdCBpcyBvbmx5IGNhbGxlZCBmcm9tIHJ1bigpLCBhbmQgZm9sZCBpdCBpbiBoZXJlLgor
ICAgICAgICAoQmVuY2htYXJrLl9hbmltYXRlTG9vcCk6IEZvbGQgaW4gZnJvbSBBbmltYXRvci5h
bmltYXRlTG9vcC4gTGV0IHRoZSBiZW5jaG1hcmsgcnVuIGZvcgorICAgICAgICBhIGJyaWVmIHBl
cmlvZCBiZWZvcmUgY2FsbGluZyBDb250cm9sbGVyLnN0YXJ0KCkuCisKKyAgICAgICAgKiBBbmlt
b21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzOiBGaXggdGhlIEthbG1hbiBlc3RpbWF0b3Iu
IFRoZSBmaWx0ZXIgZXN0aW1hdGVzCisgICAgICAgIGEgc2NhbGFyIHZhcmlhYmxlLCBhbmQgbWFr
ZXMgYmFzaWMgYXNzdW1wdGlvbnMgcmVnYXJkaW5nIHRoZSBtb2RlbC4gQXMgYSByZXN1bHQKKyAg
ICAgICAgbm9uZSBvZiB0aGUgbGluZWFyIGFsZ2VicmEgY2xhc3NlcyBhcmUgbmVlZGVkLCBzbyBy
ZW1vdmUgTWF0cml4LCBWZWN0b3IzLCBhbmQgTWF0cml4My4KKyAgICAgICAgKFNpbXBsZUthbG1h
bkVzdGltYXRvcik6IENhbGN1bGF0ZSB0aGUgZ2FpbiBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcHJv
Y2VzcyBhbmQKKyAgICAgICAgbWVhc3VyZW1lbnQgZXJyb3JzLgorICAgICAgICAoS2FsbWFuRXN0
aW1hdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKElkZW50aXR5RXN0aW1hdG9yKTogRGVsZXRlZC4K
KyAgICAgICAgKFBJRENvbnRyb2xsZXIpOiBSZWZhY3RvciB0byB1c2UgdGhlIFV0aWxpdGllcy5j
cmVhdGVDbGFzcygpIGhlbHBlci4KKworICAgICAgICBUaGUgS2FsbWFuIGZpbHRlciBhbGdvcml0
aG0gaXMgZXhwbGFpbmVkIGhlcmUgaHR0cDovL2dyZWcuY3plcm5pYWsuaW5mby9ndWlkZXMva2Fs
bWFuMS8uCisgICAgICAgIFRoZSBzdGF0ZSwgcmVwcmVzZW50ZWQgYnkgYSBzY2FsYXIsIGlzIHRo
ZSBlc3RpbWF0ZWQgZnJhbWUgbGVuZ3RoLiBUaGVyZSBpcyBubyB1c2VyCisgICAgICAgIHRyYW5z
aXRpb24gb2YgdGhlIHN0YXRlLCBhbmQgdGhlIHN0YXRlIGlzIHRoZSBzYW1lIGFzIHRoZSBtZWFz
dXJlbWVudC4gV2l0aCB0aGlzIG1vZGVsLAorICAgICAgICB0aGUgZXN0aW1hdGlvbiBlcnJvciBj
b252ZXJnZXMsIHNvIGNhbGN1bGF0ZSB0aGUgZ2FpbiBhaGVhZCBvZiB0aW1lLgorCisgICAgICAg
ICogQW5pbW9tZXRlci9kZXZlbG9wZXIuaHRtbDogUmVtb3ZlIGZpeGVkLWFmdGVyLXdhcm11cCBz
aW5jZSBpdCBpcyBub3QgdXNlZnVsLgorICAgICAgICBSZXBsYWNlIHRoZSBvcHRpb24gdG8gdG9n
Z2xlIHRoZSBlc3RpbWF0b3IsIGFuZCBtYWtlIGl0IHBvc3NpYmxlIHRvIGN1c3RvbWl6ZSB0aGUK
KyAgICAgICAgZXN0aW1hdG9yJ3MgZXJyb3IgcGFyYW1ldGVycy4gU2hvdyByYXcgRlBTIGJ5IGRl
ZmF1bHQsIGFuZCByZW1vdmUgaW50ZXJ2YWwgRlBTLAorICAgICAgICB3aGljaCB3aWxsIGJlIHNo
b3duIGluc3RlYWQgb2YgdGhlIGZpbHRlcmVkIHJhdyBGUFMuCisgICAgICAgICogQW5pbW9tZXRl
ci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuY3NzOiBQdXQgdGhlIGhlYWRlciBi
ZWhpbmQgdGhlIGdyYXBoLgorICAgICAgICBSZW1vdmUgI2ludGVydmFsRlBTIHJ1bGVzOyBtb3Zl
IHRoZSBjb2xvciB0byAjZmlsdGVyZWRGUFMuCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJj
ZXMvZGVidWctcnVubmVyL2dyYXBoLmpzOgorICAgICAgICAodXBkYXRlR3JhcGhEYXRhKTogVXBk
YXRlIHRoZSBociBzdHlsZSB0byBmb3JjZSB0aGUgbGF5b3V0IHRvIGJlIGNhbGN1bGF0ZWQKKyAg
ICAgICAgY29ycmVjdGx5LiBDaGFuZ2UgdGhlIHRpY2sgZm9ybWF0IHRvIGJlIGluIHRlcm1zIG9m
IHNlY29uZHMsIHNpbmNlIHRoZSB0aW1lc3RhbXBzCisgICAgICAgIGFyZSBpbiBtaWxsaXNlY29u
ZHMuIFJlbW92ZSBpbnRlcnZhbCBkYXRhLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2Vz
L3J1bm5lci9hbmltb21ldGVyLmpzOgorICAgICAgICAod2luZG93LmJlbmNobWFya0NvbnRyb2xs
ZXIuc3RhcnRCZW5jaG1hcmspOiBTZXQgS2FsbWFuIHBhcmFtZXRlcnMuCisgICAgICAgICogQW5p
bW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL2JlbmNobWFyay1ydW5uZXIuanM6CisgICAgICAgIChf
cnVuQmVuY2htYXJrQW5kUmVjb3JkUmVzdWx0cyk6IFdoZW4gYSBiZW5jaG1hcmsgY29tcGxldGVz
LCBleHBlY3QgaXQgdG8gcmV0dXJuCisgICAgICAgIHRoZSBmaW5hbCBkYXRhLCByYXRoZXIgdGhh
biBwYXNzaW5nIGEgc2FtcGxlciBmcm9tIHRoZSBjb250cm9sbGVyLiBUaGlzIGF2b2lkcworICAg
ICAgICBuZWVkaW5nIHRvIGV4cG9zZSB0aGUgc2FtcGxlciB2YXJpYWJsZSBpbiB0aGUgYmVuY2ht
YXJrLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3NhbXBsZXIuanM6Cisg
ICAgICAgIChwcm9jZXNzKTogTW92ZSB0aGUgc2V0dGluZyBvZiB0aGUgdGFyZ2V0IGZyYW1lIHJh
dGUgdG8gQWRhcHRpdmVDb250cm9sbGVyLgorCiAyMDE2LTAyLTA2ICBKb24gTGVlICA8am9ubGVl
QGFwcGxlLmNvbT4KIAogICAgICAgICBDb2RlIGNsZWFuIHVwOiBNb3ZlIFJvdGF0ZXIgZnVuY3Rp
b24gY2xvc2VyIHRvIFN0YWdlIHN0YXRpYyBtZXRob2RzLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>