<?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>145210</bug_id>
          
          <creation_ts>2015-05-20 06:06:54 -0700</creation_ts>
          <short_desc>[Streams API] Implement ReadableStreamController enqueue</short_desc>
          <delta_ts>2015-06-06 09:47:23 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>144790</dependson>
          <blocked>138967</blocked>
    
    <blocked>145262</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1096228</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-20 06:06:54 -0700</bug_when>
    <thetext>Implement https://streams.spec.whatwg.org/#rs-controller-enqueue, including resolution of read promise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096582</commentid>
    <comment_count>1</comment_count>
      <attachid>253527</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-21 08:46:18 -0700</bug_when>
    <thetext>Created attachment 253527
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099112</commentid>
    <comment_count>2</comment_count>
      <attachid>254162</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-03 02:18:19 -0700</bug_when>
    <thetext>Created attachment 254162
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099266</commentid>
    <comment_count>3</comment_count>
      <attachid>254162</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-03 14:10:08 -0700</bug_when>
    <thetext>Comment on attachment 254162
Patch

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

&gt; Source/WebCore/Modules/streams/ReadableStream.cpp:172
&gt; +    m_readRequests.first().successCallback(value);
&gt; +    m_readRequests.remove(0);

The logical operation to use here is takeFirst. Vector doesn’t have a convenience for takeFirst because using takeFirst is a clue that you should not be using a Vector, but rather a Deque; Vector has fast takeLast, but slow takeFirst. Actually calling &quot;remove(0)&quot; is an anti-pattern.

&gt; Source/WebCore/bindings/js/JSReadableStreamControllerCustom.cpp:59
&gt; +    if (stream.isErrored())
&gt; +        return exec-&gt;vm().throwException(exec, stream.error());
&gt; +    if (stream.isCloseRequested())
&gt; +        return exec-&gt;vm().throwException(exec, createTypeError(exec, ASCIILiteral(&quot;Calling enqueue on a stream which is closing&quot;)));

Do we have test coverage for both of these? I couldn’t find it.

It is not good that we need to do a custom binding here. You aren’t supposed to need custom bindings just to raise an exception. It’s not good that the rules about when it’s OK to call this function are in the binding, rather than in the DOM class. We want the binding code to be solely about binding, not about the semantics of the class, if at all possible.

&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:162
&gt; +    JSValue chunk = m_chunkQueue.first().get();
&gt; +    m_chunkQueue.remove(0);
&gt; +    return chunk;

Same comment about takeFirst as above. This should be a Deque, not a Vector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099464</commentid>
    <comment_count>4</comment_count>
      <attachid>254162</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-04 02:19:33 -0700</bug_when>
    <thetext>Comment on attachment 254162
Patch

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

&gt;&gt; Source/WebCore/Modules/streams/ReadableStream.cpp:172
&gt;&gt; +    m_readRequests.remove(0);
&gt; 
&gt; The logical operation to use here is takeFirst. Vector doesn’t have a convenience for takeFirst because using takeFirst is a clue that you should not be using a Vector, but rather a Deque; Vector has fast takeLast, but slow takeFirst. Actually calling &quot;remove(0)&quot; is an anti-pattern.

Thanks for pointing me to Deque, I will apply to value queue when landing this patch.

For the callback queue, I may need to add Deque::append similarly to Vector::append.
If so, I will do that as a follow-up patch.

Any reason to not use STL dedicated containers btw?

&gt;&gt; Source/WebCore/bindings/js/JSReadableStreamControllerCustom.cpp:59
&gt;&gt; +        return exec-&gt;vm().throwException(exec, createTypeError(exec, ASCIILiteral(&quot;Calling enqueue on a stream which is closing&quot;)));
&gt; 
&gt; Do we have test coverage for both of these? I couldn’t find it.
&gt; 
&gt; It is not good that we need to do a custom binding here. You aren’t supposed to need custom bindings just to raise an exception. It’s not good that the rules about when it’s OK to call this function are in the binding, rather than in the DOM class. We want the binding code to be solely about binding, not about the semantics of the class, if at all possible.

There is code coverage for both in streams/reference-implementation/readable-stream.html
Tests are named as:
PASS ReadableStream: enqueue should throw when the stream is closed 
PASS ReadableStream: enqueue should throw the stored error when the stream is errored 

As of where to put the exception throwing, it is not straightforward to do that within the DOM class.
Binding code is expected to pass exceptions/errors as ExceptionCode.
But we may want to throw a generic JSValue for instance if stream is errored.

Also ReadableStreamContoller is a special DOM class.
It is only expected to be used with ReadableJSStream and we could have emulated it as a pure JS class.

Note also that the separation of code between ReadableStreamController binding code and ReadableJSStream tries to follow the organisation of the spec.

&gt;&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:162
&gt;&gt; +    return chunk;
&gt; 
&gt; Same comment about takeFirst as above. This should be a Deque, not a Vector.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099465</commentid>
    <comment_count>5</comment_count>
      <attachid>254261</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-04 02:25:06 -0700</bug_when>
    <thetext>Created attachment 254261
Patch for landing, including using Deque for stack of JSValue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099470</commentid>
    <comment_count>6</comment_count>
      <attachid>254261</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-04 03:20:09 -0700</bug_when>
    <thetext>Comment on attachment 254261
Patch for landing, including using Deque for stack of JSValue

Clearing flags on attachment: 254261

Committed r185197: &lt;http://trac.webkit.org/changeset/185197&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099471</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-04 03:20:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100097</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-06 09:47:23 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Any reason to not use STL dedicated containers btw?

It’s hard to answer that question; it&apos;s a really broad one because there are a lot of containers.

One issue is that std::deque would use the system malloc, not the faster bmalloc used by WTF::Deque. Another is that std::vector is missing many of the features of WTF::Vector. Both class templates might have quite different memory characteristics than their WTF counterparts in terms of overhead and things like growth/shrinking strategies.

Something we’d definitely have to discuss with others in the project. Not an easy choice.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253527</attachid>
            <date>2015-05-21 08:46:18 -0700</date>
            <delta_ts>2015-06-03 02:18:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145210-20150521174613.patch</filename>
            <type>text/plain</type>
            <size>29447</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0NzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMyNDNkZjhhZGIwOTFk
YmU0OWFhODJjNTdkNGRjZTkwNjAwNjViNS4uNmFkYmIwMjgxMDIzNWY2ZDFhOTYxMGE1NmFkNjU4
ZDkxN2M3MjM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1IEBACiAyMDE1LTA1LTIxICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFi
bGV0IDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAorICAgICAgICBbU3RyZWFtcyBBUEld
IEltcGxlbWVudCBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgZW5xdWV1ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1MjEwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIHN1cHBvcnQgZm9yIGEg
SlNWYWx1ZSBxdWV1ZSBpbiBSZWFkYWJsZUpTU3RyZWFtLgorICAgICAgICBUaGlzIHF1ZXVlIGlz
IGZpbGxlZCB3aXRoIGVucXVldWUoKSBjb250cm9sbGVyIG1ldGhvZCBhbmQgZW1wdGllZCB3aGVu
IHJlc29sdmluZyByZWFkIGNhbGxiYWNrcy4KKyAgICAgICAgQWRkaW5nIHN1cHBvcnQgZm9yIGRy
YWluaW5nIHN0cmVhbXMgKHN0cmVhbXMgYmVpbmcgY2xvc2VkIGJ1dCBzdGlsbCBoYXZpbmcgdmFs
dWUgaW4gdGhlIHF1ZXVlKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyB0ZXN0cyBhbmQgcmVi
YXNlZCBleHBlY3RhdGlvbnMgb2YgcmVmZXJlbmNlIHRlc3RzLgorCisgICAgICAgICogTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxl
U3RyZWFtOjpjaGFuZ2VTdGF0ZVRvQ2xvc2VkKTogY2xvc2luZyB0aGUgc3RyZWFtIG9ubHkgaWYg
bm8gdmFsdWUgaW4gdGhlIHF1ZXVlIGlzIGF2YWlsYWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OlJl
YWRhYmxlU3RyZWFtOjpjbG9zZSk6IEFkZGVkIHNvIHRoYXQgaXQgY2FuIGJlIGNhbGxlZCBmcm9t
IGNoYW5nZVN0YXRlVG9DbG9zZWQoKSBvciByZWFkKCkgbWV0aG9kcy4KKyAgICAgICAgKFdlYkNv
cmU6OlJlYWRhYmxlU3RyZWFtOjpyZWFkKTogQ2FsbGluZyBjbG9zZSgpIGlmIGNsb3NpbmcgcmVx
dWVzdGVkIGFuZCBsYXN0IHZhbHVlIGluIHRoZSBxdWV1ZSBpcyBjb25zdW1lZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtOjpyZXNvbHZlUmVhZENhbGxiYWNrKTogQWRkZWQgc28g
dGhhdCBSZWFkYWJsZVN0cmVhbSBzcGVjaWFsaXplZCBpbXBsZW1lbnRhdGlvbnMgY2FuIGFjdHVh
bGx5IHB1c2ggdmFsdWVzIHdpdGhvdXQgZW5xdWV1ZXVpbmcgdGhlbSBmaXJzdC4KKyAgICAgICAg
KiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWRhYmxlU3RyZWFtOjppc0Vycm9yZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJl
YW06OmlzQ2xvc2VSZXF1ZXN0ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyOjpjbG9zZSk6IEFkZGVkIGNoZWNrIGZvciBkcmFpbmluZyBzdHJlYW1z
LgorICAgICAgICAoV2ViQ29yZTo6SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OmVucXVldWUp
OiBBZGRlZCBpbXBsZW1lbnRhdGlvbiBvZiBlbnF1ZXVlLgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1JlYWRhYmxlSlNTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVKU1N0cmVh
bTo6aGFzVmFsdWUpOiBJbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiB0aGUgcXVldWUgb2YgSlNWYWx1
ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlSlNTdHJlYW06OnJlYWQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlSlNTdHJlYW06OmVucXVldWUpOiBEaXR0by4KKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmg6CisKKzIwMTUtMDUtMjEgIFhhYmll
ciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4gYW5kIFlvdWVubiBGYWJs
ZXQgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCiAgICAgICAgIFtTdHJlYW1zIEFQSV0g
SW1wbGVtZW50IFJlYWRhYmxlU3RyZWFtUmVhZGVyIHJlYWQgbWV0aG9kIGluIGNsb3NlZCBhbmQg
ZXJyb3JlZCBzdGF0ZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ0NzkwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW0uY3BwCmluZGV4IDI3M2I3M2NlM2FiMTk1ZWNjNWYzZjMyYTg4ZDI5MWZhMmYz
MGViMzUuLjdjY2YwZWZhMjU4NzdlMWRmMjllMDQyMjNjZmMxNDYyMTZmZWY5MTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcApAQCAt
NjgsOCArNjgsMTggQEAgdm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2xlYXJDYWxsYmFja3MoKQogCiB2
b2lkIFJlYWRhYmxlU3RyZWFtOjpjaGFuZ2VTdGF0ZVRvQ2xvc2VkKCkKIHsKLSAgICBpZiAobV9z
dGF0ZSAhPSBTdGF0ZTo6UmVhZGFibGUpCisgICAgQVNTRVJUKCFtX2Nsb3NlUmVxdWVzdGVkKTsK
KyAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6RXJyb3JlZCk7CisKKyAgICBtX2Nsb3NlUmVx
dWVzdGVkID0gdHJ1ZTsKKworICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpSZWFkYWJsZSB8fCBo
YXNWYWx1ZSgpKQogICAgICAgICByZXR1cm47CisgICAgY2xvc2UoKTsKK30KKwordm9pZCBSZWFk
YWJsZVN0cmVhbTo6Y2xvc2UoKQorewogICAgIG1fc3RhdGUgPSBTdGF0ZTo6Q2xvc2VkOwogCiAg
ICAgaWYgKG1fcmVhZGVyKQpAQCAtMTQ1LDEyICsxNTUsMjQgQEAgdm9pZCBSZWFkYWJsZVN0cmVh
bTo6cmVhZChSZWFkU3VjY2Vzc0NhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgRmFpbHVyZUNhbGxi
YWNrIGYKICAgICB9CiAgICAgaWYgKGhhc1ZhbHVlKCkpIHsKICAgICAgICAgc3VjY2Vzc0NhbGxi
YWNrKHJlYWQoKSk7CisgICAgICAgIGlmIChtX2Nsb3NlUmVxdWVzdGVkICYmICFoYXNWYWx1ZSgp
KQorICAgICAgICAgICAgY2xvc2UoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX3Jl
YWRSZXF1ZXN0cy5hcHBlbmQoUmVhZENhbGxiYWNrcyB7IFdURjo6bW92ZShzdWNjZXNzQ2FsbGJh
Y2spLCBXVEY6Om1vdmUoZmFpbHVyZUNhbGxiYWNrKSB9KTsKICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIHRyeSB0byBwdWxsLgogfQogCitib29sIFJlYWRhYmxlU3RyZWFtOjpyZXNvbHZlUmVhZENh
bGxiYWNrKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAobV9yZWFkUmVxdWVzdHMuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3JlYWRSZXF1ZXN0cy5maXJz
dCgpLnN1Y2Nlc3NDYWxsYmFjayh2YWx1ZSk7CisgICAgbV9yZWFkUmVxdWVzdHMucmVtb3ZlKDAp
OworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFJlYWRhYmxlU3RyZWFtOjpzdGFydCgpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtLmgKaW5kZXggNzE4MmY5YTYzMDc2NDQ4M2JmNDlkMDA0NDAxMDY4
NmUxMjI0Y2ExOC4uYjY0YjI4MDViNDdiZDcyOWUzNTUxNGVlZTk4NjRmNGIxNzc5ZjFjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmgKQEAg
LTY1LDcgKzY1LDkgQEAgcHVibGljOgogICAgIGNvbnN0IFJlYWRhYmxlU3RyZWFtUmVhZGVyKiBy
ZWFkZXIoKSBjb25zdCB7IHJldHVybiBtX3JlYWRlci5nZXQoKTsgfQogICAgIGJvb2wgaXNMb2Nr
ZWQoKSBjb25zdCB7IHJldHVybiAhIW1fcmVhZGVyOyB9CiAKKyAgICBib29sIGlzRXJyb3JlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU3RhdGU6OkVycm9yZWQ7IH0KICAgICBib29sIGlz
UmVhZGFibGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFN0YXRlOjpSZWFkYWJsZTsgfQor
ICAgIGJvb2wgaXNDbG9zZVJlcXVlc3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xvc2VSZXF1ZXN0
ZWQ7IH0KIAogICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGVycm9yKCkgPSAwOwogCkBAIC04Niwx
MiArODgsMTUgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFJlYWRhYmxlU3RyZWFtKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8UmVhZGFibGVTdHJlYW1Tb3VyY2U+JiYpOwogCisgICAg
Ym9vbCByZXNvbHZlUmVhZENhbGxiYWNrKEpTQzo6SlNWYWx1ZSk7CisKIHByaXZhdGU6CiAgICAg
Ly8gQWN0aXZlRE9NT2JqZWN0IEFQSS4KICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3RO
YW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yUGFnZUNhY2hlKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNsZWFyQ2FsbGJhY2tzKCk7CisgICAgdm9pZCBj
bG9zZSgpOwogCiAgICAgdmlydHVhbCBib29sIGhhc1ZhbHVlKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgSlNDOjpKU1ZhbHVlIHJlYWQoKSA9IDA7CkBAIC0xMDgsNiArMTEzLDcgQEAgcHJpdmF0
ZToKICAgICB9OwogICAgIFZlY3RvcjxSZWFkQ2FsbGJhY2tzPiBtX3JlYWRSZXF1ZXN0czsKIAor
ICAgIGJvb2wgbV9jbG9zZVJlcXVlc3RlZCB7IGZhbHNlIH07CiAgICAgU3RhdGUgbV9zdGF0ZSB7
IFN0YXRlOjpSZWFkYWJsZSB9OwogICAgIFJlZjxSZWFkYWJsZVN0cmVhbVNvdXJjZT4gbV9zb3Vy
Y2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwCmluZGV4IDRiNWQ3ODhhZGM0NmY2
M2VkOGQ1ODcyMmFlNThlNmZmMDIyMzIxNzIuLjliODA5NzJmZGJiZTE2NDJjYTlmMGI5M2Y4Mzk0
NzAzMmRjNTRhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckN1c3RvbS5jcHAKQEAgLTMzLDcgKzMz
LDYgQEAKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCiAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcu
aCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlJlYWRhYmxlSlNTdHJl
YW0uaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAKQEAgLTQ0LDE3ICs0MywyMSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBKU1ZhbHVlIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyOjpj
bG9zZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgUmVhZGFibGVKU1N0cmVhbSYgc3RyZWFtID0g
aW1wbCgpLnN0cmVhbSgpOwotICAgIC8vIEZJWE1FOiBIYW5kbGUgdGhlIGNhc2Ugb2YgZHJhaW5p
bmcuCi0gICAgaWYgKCFzdHJlYW0uaXNSZWFkYWJsZSgpKQorICAgIGlmICghc3RyZWFtLmlzUmVh
ZGFibGUoKSB8fCBzdHJlYW0uaXNDbG9zZVJlcXVlc3RlZCgpKQogICAgICAgICByZXR1cm4gZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJDYWxsaW5nIGNsb3NlIG9uIGEgc3RyZWFtIHdoaWNoIGlzIG5vdCByZWFkYWJsZSIp
KSk7CiAgICAgc3RyZWFtLmNoYW5nZVN0YXRlVG9DbG9zZWQoKTsKICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKIH0KIAotSlNWYWx1ZSBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcjo6ZW5xdWV1
ZShFeGVjU3RhdGUqKQorSlNWYWx1ZSBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcjo6ZW5xdWV1
ZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4g
anNCb29sZWFuKGZhbHNlKTsKKyAgICBSZWFkYWJsZUpTU3RyZWFtJiBzdHJlYW0gPSBpbXBsKCku
c3RyZWFtKCk7CisgICAgaWYgKHN0cmVhbS5pc0Vycm9yZWQoKSkKKyAgICAgICAgcmV0dXJuIGV4
ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgc3RyZWFtLmVycm9yKCkpOworICAgIGlmIChz
dHJlYW0uaXNDbG9zZVJlcXVlc3RlZCgpKQorICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYWxs
aW5nIGVucXVldWUgb24gYSBzdHJlYW0gd2hpY2ggaXMgY2xvc2luZyIpKSk7CisgICAgc3RyZWFt
LmVucXVldWUoKmV4ZWMpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCiBKU1ZhbHVl
IEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyOjplcnJvcihFeGVjU3RhdGUqIGV4ZWMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwCmluZGV4IGJi
Mzc0NWM0Njg0OGVlYzc1NTljZGVlNGIwMmU1MzdlNmE3ZTM4NmMuLmNhODZkYzNkNTI3N2RjZjQ5
MDQzNjNhY2M3NWVkNDk0NzQxNjYxMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwCkBAIC0xNjgsMTQgKzE2OCwyNyBAQCB2b2lkIFJlYWRh
YmxlSlNTdHJlYW06OnN0b3JlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIGV4ZWMpCiAKIGJvb2wgUmVh
ZGFibGVKU1N0cmVhbTo6aGFzVmFsdWUoKSBjb25zdAogewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2NodW5rUXVldWUuc2l6ZSgpOwogfQog
CiBKU1ZhbHVlIFJlYWRhYmxlSlNTdHJlYW06OnJlYWQoKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgSlNWYWx1ZSBjaHVuayA9IG1fY2h1
bmtRdWV1ZS5maXJzdCgpLmdldCgpOworICAgIG1fY2h1bmtRdWV1ZS5yZW1vdmUoMCk7CisgICAg
cmV0dXJuIGNodW5rOworfQorCit2b2lkIFJlYWRhYmxlSlNTdHJlYW06OmVucXVldWUoRXhlY1N0
YXRlJiBleGVjKQoreworICAgIGlmICghaXNSZWFkYWJsZSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBKU1ZhbHVlIGNodW5rID0gZXhlYy5hcmd1bWVudENvdW50KCkgPyBleGVjLmFyZ3VtZW50
KDApIDoganNVbmRlZmluZWQoKTsKKyAgICBpZiAocmVzb2x2ZVJlYWRDYWxsYmFjayhjaHVuaykp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fY2h1bmtRdWV1ZS5hcHBlbmQoSlNDOjpTdHJvbmc8
SlNDOjpVbmtub3duPihleGVjLnZtKCksIGNodW5rKSk7CisgICAgLy8gRklYTUU6IENvbXB1dGUg
Y2h1bmsgc2l6ZS4KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oCmluZGV4IDY0YTYzM2I3ODA5MDM2MDYw
MTg4MGFhNmUwOTRkNGE0OTQ3YThjODguLjE2MWJjNThiYWUzMzExMjZkZDVmOTNiMmU3MmFjYWI3
OTA5NWY3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxl
SlNTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3Ry
ZWFtLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4K
ICNpbmNsdWRlIDxydW50aW1lL1ByaXZhdGVOYW1lLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03MCw2
ICs3MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3JlRXJyb3IoSlNDOjpFeGVjU3RhdGUmKTsK
ICAgICBKU0M6OkpTVmFsdWUgZXJyb3IoKSB7IHJldHVybiBtX2Vycm9yLmdldCgpOyB9CiAKKyAg
ICB2b2lkIGVucXVldWUoSlNDOjpFeGVjU3RhdGUmKTsKKwogcHJpdmF0ZToKICAgICBSZWFkYWJs
ZUpTU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8UmVhZGFibGVKU1N0cmVhbTo6
U291cmNlPiYmKTsKIApAQCAtNzgsNiArODEsNyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcj4gbV9jb250cm9sbGVyOwogICAgIEpTQzo6
U3Ryb25nPEpTQzo6VW5rbm93bj4gbV9lcnJvcjsKKyAgICBWZWN0b3I8SlNDOjpTdHJvbmc8SlND
OjpVbmtub3duPj4gbV9jaHVua1F1ZXVlOwogfTsKIAogdm9pZCBzZXRJbnRlcm5hbFNsb3RUb09i
amVjdChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcml2YXRlTmFtZSYsIEpT
Qzo6SlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTBjMDkyYTg4MjBlNDJmMmMzZDAzNGU2YTRhYmE3ZDkyYzYx
N2FlMC4uNjAwZDU1ZWM0MmZjMzY5NDViODMwMGRjNTZlMjdiYzg3YjYzMDRmNCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSw1ICsxLDI5IEBACiAyMDE1LTA1LTIxICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZh
cmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFibGV0IDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5v
bi5mcj4KIAorICAgICAgICBbU3RyZWFtcyBBUEldIEltcGxlbWVudCBSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIgZW5xdWV1ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ1MjEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmViYXNpbmcgb2YgcmVmZXJlbmNlIHRlc3RzIChleHBlY3RhdGlvbnMgYW5kIHRp
bWVvdXRpbmcvdW50aW1lb3V0aW5nIHRlc3RzKS4KKyAgICAgICAgQWRkaW5nIG5ldyB0ZXN0IHRv
IHN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci1yZWFkLmh0bWwgYW5kIHN0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtLmh0bWwuCisKKyAgICAgICAgKiBzdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLXJl
YWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRl
ci1yZWFkLmh0bWw6CisgICAgICAgICogc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0uaHRtbDoKKyAg
ICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWluZy1z
b3VyY2VzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBz
dHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5Lmh0
bWw6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUt
c3RyZWFtLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBz
dHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmh0
bWw6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUt
c3RyZWFtLXRlbXBsYXRlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC5odG1sOgorICAgICAg
ICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1s
OgorCisyMDE1LTA1LTIxICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxp
YS5jb20+IGFuZCBZb3Vlbm4gRmFibGV0IDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKwog
ICAgICAgICBbU3RyZWFtcyBBUEldIEltcGxlbWVudCBSZWFkYWJsZVN0cmVhbVJlYWRlciByZWFk
IG1ldGhvZCBpbiBjbG9zZWQgYW5kIGVycm9yZWQgc3RhdGUKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDc5MAogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQKaW5kZXggN2ExNjE5ZWUzMjI4ZDVh
M2Y0YTRiYzEyZmVjZmQyMzMxMDJjOWZjZi4uZTYwOTliOGM3MzFiMzI2M2RiOGI2MDJmMzc0YWVi
YjQ5Mjg3M2M5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW0tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
LWV4cGVjdGVkLnR4dApAQCAtMiw0ICsyLDUgQEAKIFBBU1MgUmVhZGFibGVTdHJlYW0gY2FuJ3Qg
YmUgY29uc3RydWN0ZWQgd2l0aCBnYXJiYWdlIAogUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBz
aG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHByb3BlciBwYXJhbWV0ZXJzIAogUEFTUyBSZWFkYWJs
ZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBjYWxsIHN0YXJ0IG1ldGhvZCB3aXRoaW4gcHJvdG90
eXBlIGNoYWluIG9mIGl0cyBzb3VyY2UgCitQQVNTIGNsb3NlIHNob3VsZCB0aHJvdyBpZiBjYWxs
ZWQgb24gYSBkcmFpbmluZyBzdHJlYW0gCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci1yZWFkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci1yZWFkLWV4cGVjdGVkLnR4dAppbmRleCAz
YWY0M2UxY2U2MjY2MjQ4YjNlNGY3NDhiMThlMDRlYzBkMmNkY2QwLi4yMmJmYjlmZDNkZjNhY2U3
ZjY2M2I4MTk5NjU3N2U4NWI3Y2M2NWNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItcmVhZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLXJlYWQtZXhwZWN0ZWQudHh0CkBAIC00
LDQgKzQsNSBAQCBQQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBjbG9zZWQgc3RyZWFtCiBQQVNTIFJl
YWRpbmcgdHdpY2Ugb24gYW4gZXJyb3JlZCBzdHJlYW0gCiBQQVNTIFJlYWRpbmcgdHdpY2Ugb24g
YSBzdHJlYW0gdGhhdCBnZXRzIGVycm9yZWQgCiBQQVNTIFJlYWRpbmcgd2l0aGluIGEgcmVhZCBw
cm9taXNlIHJlc29sdmUgY2FsbGJhY2sgb24gYSBzdHJlYW0gdGhhdCBnZXRzIGNsb3NlZCAKK1BB
U1MgUmVhZGluZyB2YXJpb3VzIGVucXVldWVkIEpTIG9iamVjdHMgCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci1yZWFkLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItcmVhZC5odG1sCmluZGV4IDdm
ZTU0MTRkNTc5OWM3ZDRkOWJkNTIzNGNjYzdkM2E1ZTkxMWZhZTcuLmQ3OTFmYzcxYWY2Yzk0OWU0
ZjQxYjM0ZDAwYmMzM2Q1ZWIwMTU0MDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtLXJlYWRlci1yZWFkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLXJlYWQuaHRtbApAQCAtMTYxLDQgKzE2MSw0MCBAQCB0
NS5zdGVwKGZ1bmN0aW9uKCkgewogICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKIH0pOwogCit2YXIg
dDYgPSBhc3luY190ZXN0KCdSZWFkaW5nIHZhcmlvdXMgZW5xdWV1ZWQgSlMgb2JqZWN0cycpOwor
dDYuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgZXJyID0gbmV3IEVycm9yKCJ0ZXN0Iik7Cisg
ICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9u
KGMpIHsKKyAgICAgICAgICAgIGMuZW5xdWV1ZShudWxsKTsKKyAgICAgICAgICAgIGMuZW5xdWV1
ZSh1bmRlZmluZWQpOworICAgICAgICAgICAgYy5lbnF1ZXVlKGVycik7CisgICAgICAgICAgICBj
LmNsb3NlKCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHZhciByZWFkZXIgPSBycy5nZXRS
ZWFkZXIoKTsKKworICAgIHJlYWRlci5yZWFkKCkudGhlbih0Ni5zdGVwX2Z1bmMoZnVuY3Rpb24o
aXRlcmF0b3IpIHsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKGl0ZXJhdG9yLmRvbmUpOworICAgICAg
ICBhc3NlcnRfdHJ1ZShpdGVyYXRvci52YWx1ZSA9PSBudWxsKTsKKyAgICB9KSk7CisKKyAgICBy
ZWFkZXIucmVhZCgpLnRoZW4odDYuc3RlcF9mdW5jKGZ1bmN0aW9uKGl0ZXJhdG9yKSB7CisgICAg
ICAgIGFzc2VydF9mYWxzZShpdGVyYXRvci5kb25lKTsKKyAgICAgICAgYXNzZXJ0X3RydWUodHlw
ZW9mIGl0ZXJhdG9yLnZhbHVlID09ICJ1bmRlZmluZWQiKTsKKyAgICB9KSk7CisKKyAgICByZWFk
ZXIucmVhZCgpLnRoZW4odDYuc3RlcF9mdW5jKGZ1bmN0aW9uKGl0ZXJhdG9yKSB7CisgICAgICAg
IGFzc2VydF9mYWxzZShpdGVyYXRvci5kb25lKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoaXRlcmF0
b3IudmFsdWUgPT0gZXJyKTsKKyAgICB9KSk7CisKKyAgICByZWFkZXIucmVhZCgpLnRoZW4odDYu
c3RlcF9mdW5jKGZ1bmN0aW9uKGl0ZXJhdG9yKSB7CisgICAgICAgIGFzc2VydF90cnVlKGl0ZXJh
dG9yLmRvbmUpOworICAgICAgICBhc3NlcnRfdHJ1ZSh0eXBlb2YgaXRlcmF0b3IudmFsdWUgPT0g
InVuZGVmaW5lZCIpOworICAgICAgICB0Ni5kb25lKCk7CisgICAgfSkpOworfSk7CisKIDwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0uaHRt
bCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLmh0bWwKaW5kZXggNDRlODY1
MTc5YThjM2Q2MGU2NjIxMDUwMjdiMmFhM2JlMGNiYzA3My4uMjA4MThlMWVhOTQ2MjMxMTkwNzA5
YWY0MmVhNzg1M2JkOWIyYzdkNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW0uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bS5odG1sCkBAIC01Nyw0ICs1NywxNyBAQCB0ZXN0KGZ1bmN0aW9uKCkKICAgICBhc3NlcnRfdHJ1
ZShpc1N0YXJ0Q2FsbGVkKTsKIH0sICdSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBj
YWxsIHN0YXJ0IG1ldGhvZCB3aXRoaW4gcHJvdG90eXBlIGNoYWluIG9mIGl0cyBzb3VyY2UnKTsK
IAordGVzdChmdW5jdGlvbigpIHsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewor
ICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgeworICAgICAgICAgICAgYy5lbnF1ZXVlKG51bGwp
OworICAgICAgICAgICAgYy5jbG9zZSgpOworICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgYy5jbG9zZSgpOworICAg
ICAgICAgICAgfSwgJ2Nsb3NlIHNob3VsZCB0aHJvdyBpZiBzdHJlYW0gaXMgZ2V0dGluZyBjbG9z
ZWQgYnV0IG5vdCB5ZXQgY2xvc2VkJyk7CisgICAgICAgIH0KKyAgICB9KTsKK30sICdjbG9zZSBz
aG91bGQgdGhyb3cgaWYgY2FsbGVkIG9uIGEgZHJhaW5pbmcgc3RyZWFtJyk7CisKKwogPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRh
dGlvbi9iYWQtdW5kZXJseWluZy1zb3VyY2VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0
cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMtZXhw
ZWN0ZWQudHh0CmluZGV4IGI3NTU4MWIxZDk1YzA0MTcwOGU1MTNkZTliZWMxMjg1YTMxNzE0OTUu
LmY3MzdkNWJiY2MzZjhmZWI3M2VhZDE2MDIzNDg3ZTc4MWU1M2VhMTIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5n
LXNvdXJjZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNl
LWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMtZXhwZWN0ZWQudHh0CkBAIC0x
OCw3ICsxOCw3IEBAIEZBSUwgVW5kZXJseWluZyBzb3VyY2U6IHN0cmF0ZWd5LnNpemUgcmV0dXJu
aW5nIE5hTiBhc3NlcnRfdW5yZWFjaGVkOiBlbnF1ZXVlIGRpCiBGQUlMIFVuZGVybHlpbmcgc291
cmNlOiBzdHJhdGVneS5zaXplIHJldHVybmluZyAtSW5maW5pdHkgYXNzZXJ0X3VucmVhY2hlZDog
ZW5xdWV1ZSBkaWRuJ3QgdGhyb3cgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCiBGQUlMIFVuZGVy
bHlpbmcgc291cmNlOiBzdHJhdGVneS5zaXplIHJldHVybmluZyArSW5maW5pdHkgYXNzZXJ0X3Vu
cmVhY2hlZDogZW5xdWV1ZSBkaWRuJ3QgdGhyb3cgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCiBQ
QVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGFuIGVtcHR5IHN0
cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIAotRkFJTCBVbmRlcmx5aW5nIHNvdXJj
ZTogY2FsbGluZyBjbG9zZSB0d2ljZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93
IHRoZSBzZWNvbmQgdGltZSBhc3NlcnRfb2JqZWN0X2VxdWFsczogcmVhZCgpIHNob3VsZCByZWFk
IHRoZSBlbnF1ZXVlZCBjaHVuayBwcm9wZXJ0eSAiZG9uZSIgZXhwZWN0ZWQgb2JqZWN0ICJbb2Jq
ZWN0IE9iamVjdF0iIGdvdCBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIKK1BBU1MgVW5kZXJseWlu
ZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHNob3Vs
ZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUgCiBGQUlMIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5n
IGNsb3NlIG9uIGFuIGVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93IGNhbmNl
bCBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xv
c2Ugb24gYSBub24tZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cgY2FuY2Vs
IGlzIG5vdCBpbXBsZW1lbnRlZAogUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9z
ZSBhZnRlciBlcnJvciBzaG91bGQgdGhyb3cgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJl
YW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2Nv
dW50LXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0CmluZGV4IGQ3Y2JiNzVmMzcyMzY5MjJl
ZWU1YWM4MDJiMTE2YjgzZjAxMjViZTMuLmI5YmI3MzUwYmQ4ODdjNzRhMjIxMTlkNTU3MTljODA2
ZWJmMTc1M2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxl
bWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3Ry
YXRlZ3ktZXhwZWN0ZWQudHh0CkBAIC0yLDcgKzIsNyBAQAogUEFTUyBDYW4gY29uc3RydWN0IGEg
Q291bnRRdWV1aW5nU3RyYXRlZ3kgd2l0aCBhIHZhbGlkIGhpZ2ggd2F0ZXIgbWFyayAKIFBBU1Mg
R2l2ZXMgYSBSYW5nZUVycm9yIHdoZW4gdGhlIG51bWJlciBpcyBuZWdhdGl2ZSAKIFBBU1MgQ2Fu
IGNvbnN0cnVjdCBhIHJlYWRhYmxlIHN0cmVhbSB3aXRoIGEgdmFsaWQgQ291bnRRdWV1aW5nU3Ry
YXRlZ3kgCi1USU1FT1VUIENvcnJlY3RseSBnb3Zlcm5zIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBS
ZWFkYWJsZVN0cmVhbSdzIGVucXVldWUgZnVuY3Rpb24gKEhXTSA9IDApIFRlc3QgdGltZWQgb3V0
Ci1GQUlMIENvcnJlY3RseSBnb3Zlcm5zIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBSZWFkYWJsZVN0
cmVhbSdzIGVucXVldWUgZnVuY3Rpb24gKEhXTSA9IDEpIGFzc2VydF9lcXVhbHM6IEFmdGVyIDAg
cmVhZHMsIDFzdCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZSAocXVldWUgbm93IGNvbnRhaW5z
IDEgY2h1bmspIGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQotRkFJTCBDb3JyZWN0bHkgZ292
ZXJucyB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgUmVhZGFibGVTdHJlYW0ncyBlbnF1ZXVlIGZ1bmN0
aW9uIChIV00gPSA0KSBhc3NlcnRfZXF1YWxzOiBBZnRlciAwIHJlYWRzLCAxc3QgZW5xdWV1ZSBz
aG91bGQgcmV0dXJuIHRydWUgKHF1ZXVlIG5vdyBjb250YWlucyAxIGNodW5rKSBleHBlY3RlZCB0
cnVlIGJ1dCBnb3QgZmFsc2UKK0ZBSUwgQ29ycmVjdGx5IGdvdmVybnMgdGhlIHJldHVybiB2YWx1
ZSBvZiBhIFJlYWRhYmxlU3RyZWFtJ3MgZW5xdWV1ZSBmdW5jdGlvbiAoSFdNID0gMCkgYXNzZXJ0
X2VxdWFsczogQWZ0ZXIgMCByZWFkcywgMXN0IGVucXVldWUgc2hvdWxkIHJldHVybiBmYWxzZSAo
cXVldWUgbm93IGNvbnRhaW5zIDEgY2h1bmspIGV4cGVjdGVkIChib29sZWFuKSBmYWxzZSBidXQg
Z290ICh1bmRlZmluZWQpIHVuZGVmaW5lZAorRkFJTCBDb3JyZWN0bHkgZ292ZXJucyB0aGUgcmV0
dXJuIHZhbHVlIG9mIGEgUmVhZGFibGVTdHJlYW0ncyBlbnF1ZXVlIGZ1bmN0aW9uIChIV00gPSAx
KSBhc3NlcnRfZXF1YWxzOiBBZnRlciAwIHJlYWRzLCAxc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJu
IHRydWUgKHF1ZXVlIG5vdyBjb250YWlucyAxIGNodW5rKSBleHBlY3RlZCAoYm9vbGVhbikgdHJ1
ZSBidXQgZ290ICh1bmRlZmluZWQpIHVuZGVmaW5lZAorRkFJTCBDb3JyZWN0bHkgZ292ZXJucyB0
aGUgcmV0dXJuIHZhbHVlIG9mIGEgUmVhZGFibGVTdHJlYW0ncyBlbnF1ZXVlIGZ1bmN0aW9uIChI
V00gPSA0KSBhc3NlcnRfZXF1YWxzOiBBZnRlciAwIHJlYWRzLCAxc3QgZW5xdWV1ZSBzaG91bGQg
cmV0dXJuIHRydWUgKHF1ZXVlIG5vdyBjb250YWlucyAxIGNodW5rKSBleHBlY3RlZCAoYm9vbGVh
bikgdHJ1ZSBidXQgZ290ICh1bmRlZmluZWQpIHVuZGVmaW5lZAogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0
cmF0ZWd5Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlv
bi9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWwKaW5kZXggODJjMzg3ZGRiYjU3MTU4YmEwZjdm
OTJlYmRjNjQxYTIwZTNhZGQwMy4uM2I5NjQ1YjRmOTkzN2U0YWU5NDVkNzVkNDI3NmJiNWFhOGIz
ZGFjZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50
YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVh
bXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbApA
QCAtMTcsNyArMTcsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIG5ldyBSZWFkYWJsZVN0cmVh
bSh7IHN0cmF0ZWd5OiBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyAiaGlnaFdhdGVyTWFyayI6
IDQgfSkgfSk7CiB9LCAnQ2FuIGNvbnN0cnVjdCBhIHJlYWRhYmxlIHN0cmVhbSB3aXRoIGEgdmFs
aWQgQ291bnRRdWV1aW5nU3RyYXRlZ3knKTsKIAotdmFyIHRlc3QxID0gYXN5bmNfdGVzdCgnQ29y
cmVjdGx5IGdvdmVybnMgdGhlIHJldHVybiB2YWx1ZSBvZiBhIFJlYWRhYmxlU3RyZWFtXCdzIGVu
cXVldWUgZnVuY3Rpb24gKEhXTSA9IDApJywgeyB0aW1lb3V0OiA1MCB9KTsKK3ZhciB0ZXN0MSA9
IGFzeW5jX3Rlc3QoJ0NvcnJlY3RseSBnb3Zlcm5zIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBSZWFk
YWJsZVN0cmVhbVwncyBlbnF1ZXVlIGZ1bmN0aW9uIChIV00gPSAwKScpOwogdGVzdDEuc3RlcChm
dW5jdGlvbigpIHsKICAgICB2YXIgZW5xdWV1ZTsKICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVt
ZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVh
bXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQK
aW5kZXggODlhZTQ5ZGU2Y2RkN2I0NzBhNWYxMmQzYTE0ZmI1YWU2NzY1YzE5OS4uODAxN2UxYWQ3
MGNmZmFmNDA3NzU0NTJiNWIwOWM1YmZiNGNkZTA4MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9y
ZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0CkBAIC03LDE5ICs3LDE5IEBAIFBBU1MgUmVhZGFi
bGVTdHJlYW0gY29uc3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgcHVsbCBhcmd1
bWVudAogUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2Fy
YmFnZSBhcyBzdHJhdGVneSBhcmd1bWVudCAKIFRJTUVPVVQgUmVhZGFibGVTdHJlYW0gc3RhcnQg
c2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSBUZXN0IHRpbWVkIG91dAogVElNRU9V
VCBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNl
IGFuZCByZWplY3QgaXQgVGVzdCB0aW1lZCBvdXQKLUZBSUwgUmVhZGFibGVTdHJlYW0gc2hvdWxk
IGJlIGFibGUgdG8gZW5xdWV1ZSBkaWZmZXJlbnQgb2JqZWN0cy4gYXNzZXJ0X29iamVjdF9lcXVh
bHM6IHZhbHVlIHJlYWQgc2hvdWxkIGJlIHRoZSBvbmUgZW5xdWV1ZWQgcHJvcGVydHkgImRvbmUi
IGV4cGVjdGVkIG9iamVjdCAiW29iamVjdCBPYmplY3RdIiBnb3Qgb2JqZWN0ICJbb2JqZWN0IE9i
amVjdF0iCitQQVNTIFJlYWRhYmxlU3RyZWFtIHNob3VsZCBiZSBhYmxlIHRvIGVucXVldWUgZGlm
ZmVyZW50IG9iamVjdHMuIAogUEFTUyBSZWFkYWJsZVN0cmVhbTogaWYgc3RhcnQgdGhyb3dzIGFu
IGVycm9yLCBpdCBzaG91bGQgYmUgcmUtdGhyb3duIAogVElNRU9VVCBSZWFkYWJsZVN0cmVhbTog
aWYgcHVsbCByZWplY3RzLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSBUZXN0IHRpbWVkIG91
dAotVElNRU9VVCBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50aWwgdGhl
IHByZXZpb3VzIHB1bGwgY2FsbCdzIHByb21pc2UgZnVsZmlsbHMgVGVzdCB0aW1lZCBvdXQKK0ZB
SUwgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIHVudGlsIHRoZSBwcmV2aW91
cyBwdWxsIGNhbGwncyBwcm9taXNlIGZ1bGZpbGxzIGFzc2VydF9lcXVhbHM6IHB1bGwgc2hvdWxk
IGhhdmUgYmVlbiBjYWxsZWQgb25jZSBhZnRlciBzdGFydCwgYnV0IG5vdCB5ZXQgaGF2ZSBiZWVu
IGNhbGxlZCBhIHNlY29uZCB0aW1lIGV4cGVjdGVkIDEgYnV0IGdvdCAwCiBQQVNTIFJlYWRhYmxl
U3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCBhZnRlciBzdGFydCBpZiB0aGUgc3RyZWFtIGlz
IG5vdyBjbG9zZWQgCiBGQUlMIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIGFmdGVy
IGVucXVldWVpbmcgZnJvbSBpbnNpZGUgcHVsbCAod2l0aCBubyByZWFkIHJlcXVlc3RzKSwgaWYg
c3RyYXRlZ3kgYWxsb3dzIGFzc2VydF9lcXVhbHM6IHB1bGwoKSBzaG91bGQgaGF2ZSBiZWVuIGNh
bGxlZCBmb3VyIHRpbWVzIGV4cGVjdGVkIDQgYnV0IGdvdCAwCiBUSU1FT1VUIFJlYWRhYmxlU3Ry
ZWFtIHB1bGwgc2hvdWxkIGJlIGFibGUgdG8gY2xvc2UgYSBzdHJlYW0uIFRlc3QgdGltZWQgb3V0
Ci1GQUlMIFJlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJl
YW0gaXMgcmVhZGFibGUgYnV0IGRyYWluaW5nIGFzc2VydF9lcXVhbHM6IHRoZSBmaXJzdCBlbnF1
ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZSBleHBlY3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UKLUZBSUwg
UmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyBj
bG9zZWQgYXNzZXJ0X3Rocm93czogZW5xdWV1ZSBhZnRlciBjbG9zZSBzaG91bGQgdGhyb3cgYSBU
eXBlRXJyb3IgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgYy5lbnF1ZXVlKCdhJyk7IH0iIGRpZCBu
b3QgdGhyb3cKLUZBSUwgUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBz
dG9yZWQgZXJyb3Igd2hlbiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgYXNzZXJ0X3Rocm93czogZW5x
dWV1ZSBhZnRlciBlcnJvciBzaG91bGQgdGhyb3cgdGhhdCBlcnJvciBmdW5jdGlvbiAiZnVuY3Rp
b24gKCkgeyBjLmVucXVldWUoJ2EnKTsgfSIgZGlkIG5vdCB0aHJvdwotVElNRU9VVCBSZWFkYWJs
ZVN0cmVhbTogc2hvdWxkIGNhbGwgdW5kZXJseWluZyBzb3VyY2UgbWV0aG9kcyBhcyBtZXRob2Rz
IFRlc3QgdGltZWQgb3V0Ci1GQUlMIFJlYWRhYmxlU3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZh
dWx0IHN0cmF0ZWd5IHNob3VsZCByZXR1cm4gZmFsc2UgZm9yIGFsbCBidXQgdGhlIGZpcnN0IGVu
cXVldWUgY2FsbCBhc3NlcnRfZXF1YWxzOiBmaXJzdCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1
ZSBleHBlY3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UKLUZBSUwgUmVhZGFibGVTdHJlYW0gc3RyYXRl
Z2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGNvbnRpbnVlIHJldHVybmluZyB0cnVl
IGZyb20gZW5xdWV1ZSBpZiB0aGUgY2h1bmtzIGFyZSByZWFkIGltbWVkaWF0ZWx5IGFzc2VydF9l
cXVhbHM6IGZpcnN0IGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVlIGV4cGVjdGVkIHRydWUgYnV0
IGdvdCBmYWxzZQorRkFJTCBSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgd2hl
biB0aGUgc3RyZWFtIGlzIHJlYWRhYmxlIGJ1dCBkcmFpbmluZyBhc3NlcnRfZXF1YWxzOiB0aGUg
Zmlyc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUgZXhwZWN0ZWQgKGJvb2xlYW4pIHRydWUg
YnV0IGdvdCAodW5kZWZpbmVkKSB1bmRlZmluZWQKK1BBU1MgUmVhZGFibGVTdHJlYW06IGVucXVl
dWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyBjbG9zZWQgCitQQVNTIFJlYWRhYmxl
U3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB0aGUgc3RvcmVkIGVycm9yIHdoZW4gdGhlIHN0
cmVhbSBpcyBlcnJvcmVkIAorRkFJTCBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgdW5kZXJs
eWluZyBzb3VyY2UgbWV0aG9kcyBhcyBtZXRob2RzIHJlbGVhc2VMb2NrIGlzIG5vdCBpbXBsZW1l
bnRlZAorRkFJTCBSZWFkYWJsZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVn
eSBzaG91bGQgcmV0dXJuIGZhbHNlIGZvciBhbGwgYnV0IHRoZSBmaXJzdCBlbnF1ZXVlIGNhbGwg
YXNzZXJ0X2VxdWFsczogZmlyc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUgZXhwZWN0ZWQg
KGJvb2xlYW4pIHRydWUgYnV0IGdvdCAodW5kZWZpbmVkKSB1bmRlZmluZWQKK0ZBSUwgUmVhZGFi
bGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGNvbnRpbnVl
IHJldHVybmluZyB0cnVlIGZyb20gZW5xdWV1ZSBpZiB0aGUgY2h1bmtzIGFyZSByZWFkIGltbWVk
aWF0ZWx5IGFzc2VydF9lcXVhbHM6IGZpcnN0IGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVlIGV4
cGVjdGVkIChib29sZWFuKSB0cnVlIGJ1dCBnb3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVkCiBUSU1F
T1VUIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgcmFuZG9tIHB1
c2ggc291cmNlIFRlc3QgdGltZWQgb3V0CiBUSU1FT1VUIFJlYWRhYmxlU3RyZWFtIGludGVncmF0
aW9uIHRlc3Q6IGFkYXB0aW5nIGEgc3luYyBwdWxsIHNvdXJjZSBUZXN0IHRpbWVkIG91dAogVElN
RU9VVCBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhbiBhc3luYyBw
dWxsIHNvdXJjZSBUZXN0IHRpbWVkIG91dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFt
cy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFk
YWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dAppbmRleCAwN2M1ZDc0MDhiZmQ2NjJjOTRj
ZmVmZDkwODA4NDVhYmFkYmM2N2E5Li5lMDAwMTg0MmUzOTk5YTIyMzNhNTc0M2FkZDhiNGEwZWMw
NDgzNWEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVh
ZGVyLWV4cGVjdGVkLnR4dApAQCAtOSw3ICs5LDcgQEAgUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFk
YWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGEK
IFBBU1MgR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxk
IGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCBnZXRSZWFk
ZXIpIAogUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBz
aG91bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBpcyBjbG9zZWQgCiBQQVNTIENvbnN0cnVjdGluZyBh
IFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFt
IGlzIGVycm9yZWQgCi1USU1FT1VUIFJlYWRpbmcgZnJvbSBhIHJlYWRlciBmb3IgYW4gZW1wdHkg
c3RyZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNodW5rIGlzIGF2YWlsYWJsZSBUZXN0IHRpbWVkIG91
dAorUEFTUyBSZWFkaW5nIGZyb20gYSByZWFkZXIgZm9yIGFuIGVtcHR5IHN0cmVhbSB3aWxsIHdh
aXQgdW50aWwgYSBjaHVuayBpcyBhdmFpbGFibGUgCiBGQUlMIGNhbmNlbCgpIG9uIGEgcmVhZGVy
IHJlbGVhc2VzIHRoZSByZWFkZXIgYmVmb3JlIGNhbGxpbmcgdGhyb3VnaCBjYW5jZWwgaXMgbm90
IGltcGxlbWVudGVkCiBQQVNTIGNsb3NlZCBzaG91bGQgYmUgZnVsZmlsbGVkIGFmdGVyIHN0cmVh
bSBpcyBjbG9zZWQgKC5jbG9zZWQgYWNjZXNzIGJlZm9yZSBhY3F1aXJpbmcpIAogRkFJTCBjbG9z
ZWQgc2hvdWxkIGJlIGZ1bGZpbGxlZCBhZnRlciByZWFkZXIgcmVsZWFzZXMgaXRzIGxvY2sgKG11
bHRpcGxlIHN0cmVhbSBsb2NrcykgcmVsZWFzZUxvY2sgaXMgbm90IGltcGxlbWVudGVkCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFk
YWJsZS1zdHJlYW0tcmVhZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmh0bWwKaW5kZXggODEzZTAxZWQ0
NWE1ZWFkNTFlOWFkMTgxNzE1ZWY4NGZhNDFiYmUwNC4uMzU4MzQzYWU0MjliNDYwZGI1ZDJhZjgz
MWIxYzM2ZGE3YWY3Y2U4OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci5odG1sCisrKyBiL0xheW91
dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1y
ZWFkZXIuaHRtbApAQCAtMTA3LDcgKzEwNyw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgbmV3
IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJzKTsgLy8gQ29uc3RydWN0aW5nIGRpcmVjdGx5IHNob3Vs
ZCBub3QgdGhyb3cuCiB9LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGly
ZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgZXJyb3JlZCcpOwogCi12YXIgdGVz
dDEgPSBhc3luY190ZXN0KCdSZWFkaW5nIGZyb20gYSByZWFkZXIgZm9yIGFuIGVtcHR5IHN0cmVh
bSB3aWxsIHdhaXQgdW50aWwgYSBjaHVuayBpcyBhdmFpbGFibGUnLCB7IHRpbWVvdXQ6IDUwIH0p
OwordmFyIHRlc3QxID0gYXN5bmNfdGVzdCgnUmVhZGluZyBmcm9tIGEgcmVhZGVyIGZvciBhbiBl
bXB0eSBzdHJlYW0gd2lsbCB3YWl0IHVudGlsIGEgY2h1bmsgaXMgYXZhaWxhYmxlJyk7CiB0ZXN0
MS5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciBjb250cm9sbGVyOwogICAgIHZhciBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVy
ZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxl
LXN0cmVhbS10ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0CmluZGV4IDNlOGMyYzFlZmViZGQxZDE3ODI4
ZmM1MGQ3OWM1YmU2OWIyNzdkOWUuLmQ2MWJjOTBjM2IzZWY3Mjg3Njg3MzdhNWE3MzNiM2FmMTdj
MmIwYmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVu
dGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10
ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0CkBAIC0zMCwxMyArMzAsMTMgQEAgRkFJTCBjYW5jZWwoKSBz
aG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUgY2FuY2Vs
IGlzIG5vdAogRkFJTCByZWFkZXIgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IHJl
amVjdGVkIHByb21pc2UgZWFjaCB0aW1lIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIFBBU1Mg
c2hvdWxkIGJlIGFibGUgdG8gYWNxdWlyZSBtdWx0aXBsZSByZWFkZXJzLCBzaW5jZSB0aGV5IGFy
ZSBhbGwgYXV0by1yZWxlYXNlZCAKIFBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU1R3b0NodW5rc09w
ZW5SZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgc3RpbGwg
b3BlbikgcmVhZGVyIAotVElNRU9VVCBjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRp
bmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MgVGVzdCB0aW1lZCBvdXQKLVRJTUVP
VVQgY2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0aCB3YWl0aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZl
IGJvdGggY2h1bmtzIFRlc3QgdGltZWQgb3V0CitQQVNTIGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdp
dGhvdXQgd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5rcyAKK1BBU1MgY2Fs
bGluZyByZWFkKCkgdHdpY2Ugd2l0aCB3YWl0aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZlIGJvdGgg
Y2h1bmtzIAogUEFTUyByZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcyBlYWNo
IHRpbWUgCiBGQUlMIGNhbmNlbCgpIGFmdGVyIGEgcmVhZCgpIHNob3VsZCBzdGlsbCBnaXZlIHRo
YXQgc2luZ2xlIHJlYWQgcmVzdWx0IGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIFBBU1MgUnVu
bmluZyB0ZW1wbGF0ZWRSU1R3b0NodW5rc0Nsb3NlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFt
ICh0d28gY2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVyIAotRkFJTCB0aGlyZCBy
ZWFkKCksIHdpdGhvdXQgd2FpdGluZywgc2hvdWxkIGdpdmUgeyB2YWx1ZTogdW5kZWZpbmVkLCBk
b25lOiB0cnVlIH0gYXNzZXJ0X29iamVjdF9lcXVhbHM6IGZpcnN0IHJlc3VsdCBzaG91bGQgYmUg
Y29ycmVjdCBwcm9wZXJ0eSAiZG9uZSIgZXhwZWN0ZWQgb2JqZWN0ICJbb2JqZWN0IE9iamVjdF0i
IGdvdCBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIKLUZBSUwgdGhpcmQgcmVhZCwgd2l0aCB3YWl0
aW5nLCBzaG91bGQgZ2l2ZSB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSBhc3NlcnRf
b2JqZWN0X2VxdWFsczogZmlyc3QgcmVzdWx0IHNob3VsZCBiZSBjb3JyZWN0IHByb3BlcnR5ICJk
b25lIiBleHBlY3RlZCBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIgZ290IG9iamVjdCAiW29iamVj
dCBPYmplY3RdIgorUEFTUyB0aGlyZCByZWFkKCksIHdpdGhvdXQgd2FpdGluZywgc2hvdWxkIGdp
dmUgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCitQQVNTIHRoaXJkIHJlYWQsIHdp
dGggd2FpdGluZywgc2hvdWxkIGdpdmUgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0g
CiBQQVNTIGRyYWluaW5nIHRoZSBzdHJlYW0gdmlhIHJlYWQoKSBzaG91bGQgY2F1c2UgdGhlIHJl
YWRlciBjbG9zZWQgcHJvbWlzZSB0byBmdWxmaWxsIAogRkFJTCByZWxlYXNpbmcgdGhlIGxvY2sg
YWZ0ZXIgdGhlIHN0cmVhbSBpcyBjbG9zZWQgc2hvdWxkIGRvIG5vdGhpbmcgcmVsZWFzZUxvY2sg
aXMgbm90IGltcGxlbWVudGVkCiBGQUlMIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2Ug
cmVhZCgpIHRvIGFjdCBhcyBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCByZWxlYXNlTG9jayBpcyBu
b3QgaW1wbGVtZW50ZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNl
LWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1w
bGF0ZWQuaHRtbAppbmRleCBjNzJjYWEwNjZkMWU3MDVmZmE0NzcyNjFkYTVjNDIwOGUzYmE2ZGM2
Li5jMjY1M2FiMGRlYmU0ZjljN2ZjOTdjOTViMGI1ZGI1Nzc1NDA0Y2RkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJl
YW0tdGVtcGxhdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1w
bGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC5odG1sCkBAIC0zNjksNyArMzY5
LDcgQEAgZnVuY3Rpb24gdGVtcGxhdGVkUlNUd29DaHVua3NPcGVuUmVhZGVyKGxhYmVsLCBmYWN0
b3J5LCBjaHVua3MpIHsKICAgICB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIH0sICdSdW5uaW5nIHRl
bXBsYXRlZFJTVHdvQ2h1bmtzT3BlblJlYWRlciB3aXRoICcgKyBsYWJlbCk7CiAKLSAgICB2YXIg
dGVzdDEgPSBhc3luY190ZXN0KCdjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRpbmcg
d2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MnLCB7IHRpbWVvdXQ6IDUwIH0pOworICAg
IHZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ2NhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2Fp
dGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5rcycpOwogICAgIHRlc3QxLnN0ZXAo
ZnVuY3Rpb24oKSB7CiAgICAgICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwogICAgICAg
ICB2YXIgcHJvbWlzZUNvdW50ID0gMDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1sIGIvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLmh0bWwK
aW5kZXggMTZjZThjNGFlNDQ5MzMxN2QzMjdjZjkxOGI0Y2Y0OTA5NjE1OGQ1OC4uZWFiMWYwOWYz
OTAyYmM4YjY2ZTAxOTAwZjI2ZmI1OTFhZDM5NmQ4ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUt
c3RyZWFtLmh0bWwKQEAgLTM2OCw3ICszNjgsNyBAQCB0ZXN0NC5zdGVwKGZ1bmN0aW9uKCkgewog
Ly8gICAgIH0pLCBzdGFuZGFyZFRpbWVvdXQpOwogLy8gfSk7CiAKLXZhciB0ZXN0MTEgPSBhc3lu
Y190ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50aWwgdGhlIHBy
ZXZpb3VzIHB1bGwgY2FsbFwncyBwcm9taXNlIGZ1bGZpbGxzJywgeyB0aW1lb3V0OiA1MCB9KTsK
K3ZhciB0ZXN0MTEgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxs
IHB1bGwgdW50aWwgdGhlIHByZXZpb3VzIHB1bGwgY2FsbFwncyBwcm9taXNlIGZ1bGZpbGxzJyk7
CiB0ZXN0MTEuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgcmVzb2x2ZTsKICAgICB2YXIgcmV0
dXJuZWRQcm9taXNlOwpAQCAtNTY1LDcgKzU2NSw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAg
fSk7CiB9LCAnUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBzdG9yZWQg
ZXJyb3Igd2hlbiB0aGUgc3RyZWFtIGlzIGVycm9yZWQnKTsKIAotdmFyIHRlc3QxNiA9IGFzeW5j
X3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRo
b2RzIGFzIG1ldGhvZHMnLCB7IHRpbWVvdXQ6IDUwIH0pOwordmFyIHRlc3QxNiA9IGFzeW5jX3Rl
c3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2Rz
IGFzIG1ldGhvZHMnKTsKIHRlc3QxNi5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciBzdGFydENh
bGxlZCA9IDA7CiAgICAgdmFyIHB1bGxDYWxsZWQgPSAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254162</attachid>
            <date>2015-06-03 02:18:19 -0700</date>
            <delta_ts>2015-06-04 02:25:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145210-20150603111758.patch</filename>
            <type>text/plain</type>
            <size>24935</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM5OThmMTIyYWNjNWIw
NmQyZWY5NWYwYzdjMmY4MDcwYzYwOWNkMi4uNzExOWQ1MDYzYTFjMzM0MWZkMDAzODY4ZjNiZDVi
N2U2ZmQ2MjEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE1LTA2LTAzICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFi
bGV0IDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBbU3RyZWFtcyBBUEld
IEltcGxlbWVudCBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgZW5xdWV1ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1MjEwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgcG9zc2liaWxpdHkgdG8g
ZW5xdWV1ZSBhbnkgSlNWYWx1ZSB3aXRoaW4gUmVhZGFibGVKU1N0cmVhbS4KKyAgICAgICAgVGhl
eSBhcmUgc3RvcmVkIGluIGEgVmVjdG9yIG9mIHN0cm9uZ2lmaWVkIEpTVmFsdWUuCisKKyAgICAg
ICAgQWRkZWQgc3VwcG9ydCBmb3Igc3RyZWFtcyB0aGF0IGNvbnRhaW4gZGF0YSBidXQgYXJlIGFz
a2VkIHRvIGNsb3NlIGlzIGRvbmUgaW4gUmVhZGFibGVTdHJlYW0KKyAgICAgICAgVGhpcyBpcyBk
b25lIHRocm91Z2ggbV9jbG9zZVJlcXVlc3RlZCBib29sZWFuIGFuZCBzcGxpdHRpbmcgYWN0dWFs
IGNsb3Npbmcgb2YgdGhlIHN0cmVhbSBmcm9tIGNoYW5nZVN0YXRlVG9DbG9zZWQoKS4KKworICAg
ICAgICBDaHVuayBzaXplIGFuZCBiYWNrcHJlc3N1cmUgbWVjaGFuaXNtIGlzIG5vdCB5ZXQgaW1w
bGVtZW50ZWQuCisgICAgICAgIE5laXRoZXIgaXMgcHVsbGluZyBvbmNlIGVucXVldWVkIGRhdGEg
aXMgcHJvY2Vzc2VkLgorCisgICAgICAgIENvdmVyZWQgYnkgcmViYXNlZCB0ZXN0cy4KKworICAg
ICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZWFkYWJsZVN0cmVhbTo6Y2hhbmdlU3RhdGVUb0Nsb3NlZCk6IFNwbGl0IG1ldGhvZCB3
aXRoIG5ld2x5IGFkZGVkIGNsb3NlKCkuCisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVh
bTo6Y2xvc2UpOiBEb2VzIHRoZSBhY3R1YWwgY2xvc2luZyBvZiBzdHJlYW0gb25jZSBzdHJlYW0g
aGFzIG5vIG1vcmUgdmFsdWVzLgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OnJl
YWQpOiBDbG9zZSB0aGUgc3RyZWFtIHdoZW4gc3RyZWFtIGlzIGVtcHRpZWQgYW5kIGNsb3NlIGlz
IHJlcXVlc3RlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtOjpyZXNvbHZlUmVh
ZENhbGxiYWNrKTogQWRkZWQgdG8gZW5hYmxlIFJlYWRhYmxlSlNTdHJlYW0gdG8gcmVzb2x2ZSBy
ZWFkIGNhbGxiYWNrcyBpbW1lZGlhdGx5IGF0IGVucXVldWUgdGltZS4KKyAgICAgICAgKiBNb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxl
U3RyZWFtOjppc0Vycm9yZWQpOiBHZXR0ZXIgYWRkZWQgZm9yIHRoZSBjdXN0b20gYmluZGluZyBj
b2RlLgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OmlzQ2xvc2VSZXF1ZXN0ZWQp
OiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxl
ckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxl
cjo6ZW5xdWV1ZSk6IGJpbmRpbmcgY29kZSBmb3IgZW5xdWV1ZSwgdGFraW5nIGNhcmUgb2YgcmFp
c2luZyBleGNlcHRpb24gaWYgcmVhZGFibGUgc3RyZWFtIGNhbm5vdCBlbnF1ZXVlLgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZGFibGVKU1N0cmVhbTo6aGFzVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVK
U1N0cmVhbTo6cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUpTU3RyZWFtOjplbnF1
ZXVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmg6CisKIDIwMTUt
MDYtMDIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgaU9T
IGJ1aWxkIGZpeApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbS5jcHAKaW5kZXggZjAxOWI0NDE2ZjMxMTZhNmFjNzM4NDA4Nzg3Njk1NzRkYmYzMTBi
NS4uNGQwYTZkMzc0M2ZmNTU4NzMzMWFkMWNiMzE4OTM3NmM0MWIxYTY1MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwCkBAIC02OCw4
ICs2OCwxOCBAQCB2b2lkIFJlYWRhYmxlU3RyZWFtOjpjbGVhckNhbGxiYWNrcygpCiAKIHZvaWQg
UmVhZGFibGVTdHJlYW06OmNoYW5nZVN0YXRlVG9DbG9zZWQoKQogewotICAgIGlmIChtX3N0YXRl
ICE9IFN0YXRlOjpSZWFkYWJsZSkKKyAgICBBU1NFUlQoIW1fY2xvc2VSZXF1ZXN0ZWQpOworICAg
IEFTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpFcnJvcmVkKTsKKworICAgIG1fY2xvc2VSZXF1ZXN0
ZWQgPSB0cnVlOworCisgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OlJlYWRhYmxlIHx8IGhhc1Zh
bHVlKCkpCiAgICAgICAgIHJldHVybjsKKyAgICBjbG9zZSgpOworfQorCit2b2lkIFJlYWRhYmxl
U3RyZWFtOjpjbG9zZSgpCit7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpDbG9zZWQ7CiAKICAgICBp
ZiAobV9yZWFkZXIpCkBAIC0xNDUsMTIgKzE1NSwyNCBAQCB2b2lkIFJlYWRhYmxlU3RyZWFtOjpy
ZWFkKFJlYWRTdWNjZXNzQ2FsbGJhY2smJiBzdWNjZXNzQ2FsbGJhY2ssIFJlYWRFbmRDYWxsYmFj
awogICAgIH0KICAgICBpZiAoaGFzVmFsdWUoKSkgewogICAgICAgICBzdWNjZXNzQ2FsbGJhY2so
cmVhZCgpKTsKKyAgICAgICAgaWYgKG1fY2xvc2VSZXF1ZXN0ZWQgJiYgIWhhc1ZhbHVlKCkpCisg
ICAgICAgICAgICBjbG9zZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fcmVhZFJl
cXVlc3RzLmFwcGVuZCh7IFdURjo6bW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEY6Om1vdmUoZW5k
Q2FsbGJhY2spLCBXVEY6Om1vdmUoZmFpbHVyZUNhbGxiYWNrKSB9KTsKICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIHRyeSB0byBwdWxsLgogfQogCitib29sIFJlYWRhYmxlU3RyZWFtOjpyZXNvbHZl
UmVhZENhbGxiYWNrKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAobV9yZWFkUmVxdWVz
dHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3JlYWRSZXF1ZXN0
cy5maXJzdCgpLnN1Y2Nlc3NDYWxsYmFjayh2YWx1ZSk7CisgICAgbV9yZWFkUmVxdWVzdHMucmVt
b3ZlKDApOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFJlYWRhYmxlU3RyZWFtOjpzdGFy
dCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmgKaW5kZXggMmJkMmNhNTIxOGIxYjY2MDAzYWFmMjlj
NTBiZDc4MjYxZjQwN2I1Ny4uZGJjNDNlMjJkNWUxOTMyNjhmNjMwZGQ3YmFjMTk5ZTAxOTM3ZGFi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFt
LmgKQEAgLTY1LDcgKzY1LDkgQEAgcHVibGljOgogICAgIGNvbnN0IFJlYWRhYmxlU3RyZWFtUmVh
ZGVyKiByZWFkZXIoKSBjb25zdCB7IHJldHVybiBtX3JlYWRlci5nZXQoKTsgfQogICAgIGJvb2wg
aXNMb2NrZWQoKSBjb25zdCB7IHJldHVybiAhIW1fcmVhZGVyOyB9CiAKKyAgICBib29sIGlzRXJy
b3JlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU3RhdGU6OkVycm9yZWQ7IH0KICAgICBi
b29sIGlzUmVhZGFibGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFN0YXRlOjpSZWFkYWJs
ZTsgfQorICAgIGJvb2wgaXNDbG9zZVJlcXVlc3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xvc2VS
ZXF1ZXN0ZWQ7IH0KIAogICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGVycm9yKCkgPSAwOwogCkBA
IC04NywxMiArODksMTUgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFJlYWRhYmxlU3RyZWFt
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8UmVhZGFibGVTdHJlYW1Tb3VyY2U+JiYpOwog
CisgICAgYm9vbCByZXNvbHZlUmVhZENhbGxiYWNrKEpTQzo6SlNWYWx1ZSk7CisKIHByaXZhdGU6
CiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0IEFQSS4KICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01P
YmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yUGFnZUNh
Y2hlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNsZWFyQ2FsbGJhY2tzKCk7CisgICAg
dm9pZCBjbG9zZSgpOwogCiAgICAgdmlydHVhbCBib29sIGhhc1ZhbHVlKCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIHJlYWQoKSA9IDA7CkBAIC0xMTAsNiArMTE1LDcgQEAg
cHJpdmF0ZToKICAgICB9OwogICAgIFZlY3RvcjxSZWFkQ2FsbGJhY2tzPiBtX3JlYWRSZXF1ZXN0
czsKIAorICAgIGJvb2wgbV9jbG9zZVJlcXVlc3RlZCB7IGZhbHNlIH07CiAgICAgU3RhdGUgbV9z
dGF0ZSB7IFN0YXRlOjpSZWFkYWJsZSB9OwogICAgIFJlZjxSZWFkYWJsZVN0cmVhbVNvdXJjZT4g
bV9zb3VyY2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwCmluZGV4IGQ5MWQzM2Iy
NWJjMTBlMzg1ZGI0M2M2NDJkZDE5NDI4YzlmYWQ4NzUuLmYxYjU4N2VhZTQwNjZjNjM0Y2RhYjU4
OWNhZWI4NDFjZmM0ZjgyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckN1c3RvbS5jcHAKQEAgLTMz
LDcgKzMzLDYgQEAKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCiAKICNpbmNsdWRlICJKU0RPTUJp
bmRpbmcuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlJlYWRhYmxl
SlNTdHJlYW0uaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAKQEAgLTUxLDEwICs1MCwx
NSBAQCBKU1ZhbHVlIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyOjpjbG9zZShFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKLUpTVmFsdWUgSlNSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXI6OmVucXVldWUoRXhlY1N0YXRlKikKK0pTVmFsdWUgSlNSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXI6OmVucXVldWUoRXhlY1N0YXRlKiBleGVjKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGpzQm9vbGVhbihmYWxzZSk7CisgICAgUmVhZGFibGVK
U1N0cmVhbSYgc3RyZWFtID0gaW1wbCgpLnN0cmVhbSgpOworICAgIGlmIChzdHJlYW0uaXNFcnJv
cmVkKCkpCisgICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHN0
cmVhbS5lcnJvcigpKTsKKyAgICBpZiAoc3RyZWFtLmlzQ2xvc2VSZXF1ZXN0ZWQoKSkKKyAgICAg
ICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2FsbGluZyBlbnF1ZXVlIG9uIGEgc3RyZWFtIHdoaWNoIGlz
IGNsb3NpbmciKSkpOworICAgIHN0cmVhbS5lbnF1ZXVlKCpleGVjKTsKKyAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKIH0KIAogSlNWYWx1ZSBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcjo6ZXJy
b3IoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvUmVhZGFibGVKU1N0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFk
YWJsZUpTU3RyZWFtLmNwcAppbmRleCBkNDg3MzE0MGZmMDg5Zjg1ZDIwNWJlNTA4ZGI5N2ZlODMy
YmJkYWZlLi45OTc4ZDc5ZDgwMzExYmJlZDVlOWVmZTQ3Y2FiMWY4OWQxZmRhMDVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcApAQCAtMTUw
LDE0ICsxNTAsMzIgQEAgdm9pZCBSZWFkYWJsZUpTU3RyZWFtOjpzdG9yZUVycm9yKEpTQzo6RXhl
Y1N0YXRlJiBleGVjKQogCiBib29sIFJlYWRhYmxlSlNTdHJlYW06Omhhc1ZhbHVlKCkgY29uc3QK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
bV9jaHVua1F1ZXVlLnNpemUoKTsKIH0KIAogSlNWYWx1ZSBSZWFkYWJsZUpTU3RyZWFtOjpyZWFk
KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
ICAgIEFTU0VSVChoYXNWYWx1ZSgpKTsKKworICAgIEpTVmFsdWUgY2h1bmsgPSBtX2NodW5rUXVl
dWUuZmlyc3QoKS5nZXQoKTsKKyAgICBtX2NodW5rUXVldWUucmVtb3ZlKDApOworICAgIHJldHVy
biBjaHVuazsKK30KKwordm9pZCBSZWFkYWJsZUpTU3RyZWFtOjplbnF1ZXVlKEV4ZWNTdGF0ZSYg
ZXhlYykKK3sKKyAgICBBU1NFUlQoIWlzQ2xvc2VSZXF1ZXN0ZWQoKSk7CisKKyAgICBpZiAoIWlz
UmVhZGFibGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSlNWYWx1ZSBjaHVuayA9IGV4ZWMu
YXJndW1lbnRDb3VudCgpID8gZXhlYy5hcmd1bWVudCgwKSA6IGpzVW5kZWZpbmVkKCk7CisgICAg
aWYgKHJlc29sdmVSZWFkQ2FsbGJhY2soY2h1bmspKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2NodW5rUXVldWUuYXBwZW5kKEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4oZXhlYy52bSgpLCBj
aHVuaykpOworICAgIC8vIEZJWE1FOiBDb21wdXRlIGNodW5rIHNpemUuCisgICAgLy8gRklYTUU6
IEFkZCBwdWxsaW5nIG9mIGRhdGEgaGVyZSBhbmQgYWxzbyB3aGVuIGRhdGEgaXMgcGFzc2VkIHRv
IHJlc29sdmUgY2FsbGJhY2suCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uaAppbmRleCA2OGFiODlhNmQ2
ZjY0YTM5ZjZhZTUxMDM4N2YwMjZhODAwMTZkZTdkLi4xYmJiZjVkZGRiODliYzViYjg5NzM2MzU4
NjZiYWI5OWVjZDZhNjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9S
ZWFkYWJsZUpTU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFi
bGVKU1N0cmVhbS5oCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1Zh
bHVlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Qcml2YXRlTmFtZS5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNzAsNiArNzEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9yZUVycm9yKEpTQzo6RXhlY1N0
YXRlJik7CiAgICAgSlNDOjpKU1ZhbHVlIGVycm9yKCkgeyByZXR1cm4gbV9lcnJvci5nZXQoKTsg
fQogCisgICAgdm9pZCBlbnF1ZXVlKEpTQzo6RXhlY1N0YXRlJik7CisKIHByaXZhdGU6CiAgICAg
UmVhZGFibGVKU1N0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPFJlYWRhYmxlSlNT
dHJlYW06OlNvdXJjZT4mJik7CiAKQEAgLTc4LDYgKzgxLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKICAg
ICBKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+IG1fZXJyb3I7CisgICAgVmVjdG9yPEpTQzo6U3Ry
b25nPEpTQzo6VW5rbm93bj4+IG1fY2h1bmtRdWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBlYTZhZTQzNjQwODA2NWQyYzUxYTZiYTYyZGE3MWFkY2Y3NmM2MzhkLi5k
YmVhYTI5OWRmMzhiOWNiMGQ2MDE2NjRjY2YxZjAxNzI3OTM1MDg5IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjAgQEAKKzIwMTUtMDYtMDMgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdh
bGlhLmNvbT4gYW5kIFlvdWVubiBGYWJsZXQgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgor
CisgICAgICAgIFtTdHJlYW1zIEFQSV0gSW1wbGVtZW50IFJlYWRhYmxlU3RyZWFtQ29udHJvbGxl
ciBlbnF1ZXVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDUyMTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJj
ZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0
aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVh
bXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbDoK
KyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJl
YW0tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0
aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVh
bXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRtbDoK
KyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJl
YW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLmh0bWw6CisgICAgICAgICog
c3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLmh0bWw6CisK
IDIwMTUtMDYtMDIgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxODUxMjggYW5kIHIxODUxMzIuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQt
dW5kZXJseWluZy1zb3VyY2VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVm
ZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMtZXhwZWN0ZWQudHh0
CmluZGV4IGI3NTU4MWIxZDk1YzA0MTcwOGU1MTNkZTliZWMxMjg1YTMxNzE0OTUuLmY3MzdkNWJi
Y2MzZjhmZWI3M2VhZDE2MDIzNDg3ZTc4MWU1M2VhMTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVu
dGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMtZXhwZWN0ZWQudHh0CkBAIC0xOCw3ICsxOCw3
IEBAIEZBSUwgVW5kZXJseWluZyBzb3VyY2U6IHN0cmF0ZWd5LnNpemUgcmV0dXJuaW5nIE5hTiBh
c3NlcnRfdW5yZWFjaGVkOiBlbnF1ZXVlIGRpCiBGQUlMIFVuZGVybHlpbmcgc291cmNlOiBzdHJh
dGVneS5zaXplIHJldHVybmluZyAtSW5maW5pdHkgYXNzZXJ0X3VucmVhY2hlZDogZW5xdWV1ZSBk
aWRuJ3QgdGhyb3cgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCiBGQUlMIFVuZGVybHlpbmcgc291
cmNlOiBzdHJhdGVneS5zaXplIHJldHVybmluZyArSW5maW5pdHkgYXNzZXJ0X3VucmVhY2hlZDog
ZW5xdWV1ZSBkaWRuJ3QgdGhyb3cgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCiBQQVNTIFVuZGVy
bHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGFuIGVtcHR5IHN0cmVhbSBzaG91
bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIAotRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGlu
ZyBjbG9zZSB0d2ljZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNv
bmQgdGltZSBhc3NlcnRfb2JqZWN0X2VxdWFsczogcmVhZCgpIHNob3VsZCByZWFkIHRoZSBlbnF1
ZXVlZCBjaHVuayBwcm9wZXJ0eSAiZG9uZSIgZXhwZWN0ZWQgb2JqZWN0ICJbb2JqZWN0IE9iamVj
dF0iIGdvdCBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6
IGNhbGxpbmcgY2xvc2UgdHdpY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0
aGUgc2Vjb25kIHRpbWUgCiBGQUlMIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIG9u
IGFuIGVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93IGNhbmNlbCBpcyBub3Qg
aW1wbGVtZW50ZWQKIEZBSUwgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYSBu
b24tZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cgY2FuY2VsIGlzIG5vdCBp
bXBsZW1lbnRlZAogUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBhZnRlciBl
cnJvciBzaG91bGQgdGhyb3cgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVy
ZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVp
bmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0CmluZGV4IGQ3Y2JiNzVmMzcyMzY5MjJlZWU1YWM4MDJi
MTE2YjgzZjAxMjViZTMuLmI5YmI3MzUwYmQ4ODdjNzRhMjIxMTlkNTU3MTljODA2ZWJmMTc1M2Mg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9u
L2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0
cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktZXhw
ZWN0ZWQudHh0CkBAIC0yLDcgKzIsNyBAQAogUEFTUyBDYW4gY29uc3RydWN0IGEgQ291bnRRdWV1
aW5nU3RyYXRlZ3kgd2l0aCBhIHZhbGlkIGhpZ2ggd2F0ZXIgbWFyayAKIFBBU1MgR2l2ZXMgYSBS
YW5nZUVycm9yIHdoZW4gdGhlIG51bWJlciBpcyBuZWdhdGl2ZSAKIFBBU1MgQ2FuIGNvbnN0cnVj
dCBhIHJlYWRhYmxlIHN0cmVhbSB3aXRoIGEgdmFsaWQgQ291bnRRdWV1aW5nU3RyYXRlZ3kgCi1U
SU1FT1VUIENvcnJlY3RseSBnb3Zlcm5zIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBSZWFkYWJsZVN0
cmVhbSdzIGVucXVldWUgZnVuY3Rpb24gKEhXTSA9IDApIFRlc3QgdGltZWQgb3V0Ci1GQUlMIENv
cnJlY3RseSBnb3Zlcm5zIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBSZWFkYWJsZVN0cmVhbSdzIGVu
cXVldWUgZnVuY3Rpb24gKEhXTSA9IDEpIGFzc2VydF9lcXVhbHM6IEFmdGVyIDAgcmVhZHMsIDFz
dCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZSAocXVldWUgbm93IGNvbnRhaW5zIDEgY2h1bmsp
IGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQotRkFJTCBDb3JyZWN0bHkgZ292ZXJucyB0aGUg
cmV0dXJuIHZhbHVlIG9mIGEgUmVhZGFibGVTdHJlYW0ncyBlbnF1ZXVlIGZ1bmN0aW9uIChIV00g
PSA0KSBhc3NlcnRfZXF1YWxzOiBBZnRlciAwIHJlYWRzLCAxc3QgZW5xdWV1ZSBzaG91bGQgcmV0
dXJuIHRydWUgKHF1ZXVlIG5vdyBjb250YWlucyAxIGNodW5rKSBleHBlY3RlZCB0cnVlIGJ1dCBn
b3QgZmFsc2UKK0ZBSUwgQ29ycmVjdGx5IGdvdmVybnMgdGhlIHJldHVybiB2YWx1ZSBvZiBhIFJl
YWRhYmxlU3RyZWFtJ3MgZW5xdWV1ZSBmdW5jdGlvbiAoSFdNID0gMCkgYXNzZXJ0X2VxdWFsczog
QWZ0ZXIgMCByZWFkcywgMXN0IGVucXVldWUgc2hvdWxkIHJldHVybiBmYWxzZSAocXVldWUgbm93
IGNvbnRhaW5zIDEgY2h1bmspIGV4cGVjdGVkIChib29sZWFuKSBmYWxzZSBidXQgZ290ICh1bmRl
ZmluZWQpIHVuZGVmaW5lZAorRkFJTCBDb3JyZWN0bHkgZ292ZXJucyB0aGUgcmV0dXJuIHZhbHVl
IG9mIGEgUmVhZGFibGVTdHJlYW0ncyBlbnF1ZXVlIGZ1bmN0aW9uIChIV00gPSAxKSBhc3NlcnRf
ZXF1YWxzOiBBZnRlciAwIHJlYWRzLCAxc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUgKHF1
ZXVlIG5vdyBjb250YWlucyAxIGNodW5rKSBleHBlY3RlZCAoYm9vbGVhbikgdHJ1ZSBidXQgZ290
ICh1bmRlZmluZWQpIHVuZGVmaW5lZAorRkFJTCBDb3JyZWN0bHkgZ292ZXJucyB0aGUgcmV0dXJu
IHZhbHVlIG9mIGEgUmVhZGFibGVTdHJlYW0ncyBlbnF1ZXVlIGZ1bmN0aW9uIChIV00gPSA0KSBh
c3NlcnRfZXF1YWxzOiBBZnRlciAwIHJlYWRzLCAxc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRy
dWUgKHF1ZXVlIG5vdyBjb250YWlucyAxIGNodW5rKSBleHBlY3RlZCAoYm9vbGVhbikgdHJ1ZSBi
dXQgZ290ICh1bmRlZmluZWQpIHVuZGVmaW5lZAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5Lmh0
bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1x
dWV1aW5nLXN0cmF0ZWd5Lmh0bWwKaW5kZXggODJjMzg3ZGRiYjU3MTU4YmEwZjdmOTJlYmRjNjQx
YTIwZTNhZGQwMy4uM2I5NjQ1YjRmOTkzN2U0YWU5NDVkNzVkNDI3NmJiNWFhOGIzZGFjZSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vY291
bnQtcXVldWluZy1zdHJhdGVneS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJl
bmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbApAQCAtMTcsNyAr
MTcsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7IHN0cmF0
ZWd5OiBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyAiaGlnaFdhdGVyTWFyayI6IDQgfSkgfSk7
CiB9LCAnQ2FuIGNvbnN0cnVjdCBhIHJlYWRhYmxlIHN0cmVhbSB3aXRoIGEgdmFsaWQgQ291bnRR
dWV1aW5nU3RyYXRlZ3knKTsKIAotdmFyIHRlc3QxID0gYXN5bmNfdGVzdCgnQ29ycmVjdGx5IGdv
dmVybnMgdGhlIHJldHVybiB2YWx1ZSBvZiBhIFJlYWRhYmxlU3RyZWFtXCdzIGVucXVldWUgZnVu
Y3Rpb24gKEhXTSA9IDApJywgeyB0aW1lb3V0OiA1MCB9KTsKK3ZhciB0ZXN0MSA9IGFzeW5jX3Rl
c3QoJ0NvcnJlY3RseSBnb3Zlcm5zIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBSZWFkYWJsZVN0cmVh
bVwncyBlbnF1ZXVlIGZ1bmN0aW9uIChIV00gPSAwKScpOwogdGVzdDEuc3RlcChmdW5jdGlvbigp
IHsKICAgICB2YXIgZW5xdWV1ZTsKICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24v
cmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJl
bmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQKaW5kZXggODlh
ZTQ5ZGU2Y2RkN2I0NzBhNWYxMmQzYTE0ZmI1YWU2NzY1YzE5OS4uODAxN2UxYWQ3MGNmZmFmNDA3
NzU0NTJiNWIwOWM1YmZiNGNkZTA4MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9y
ZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1z
dHJlYW0tZXhwZWN0ZWQudHh0CkBAIC03LDE5ICs3LDE5IEBAIFBBU1MgUmVhZGFibGVTdHJlYW0g
Y29uc3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgcHVsbCBhcmd1bWVudAogUEFT
UyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBz
dHJhdGVneSBhcmd1bWVudCAKIFRJTUVPVVQgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJl
IGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSBUZXN0IHRpbWVkIG91dAogVElNRU9VVCBSZWFkYWJs
ZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNlIGFuZCByZWpl
Y3QgaXQgVGVzdCB0aW1lZCBvdXQKLUZBSUwgUmVhZGFibGVTdHJlYW0gc2hvdWxkIGJlIGFibGUg
dG8gZW5xdWV1ZSBkaWZmZXJlbnQgb2JqZWN0cy4gYXNzZXJ0X29iamVjdF9lcXVhbHM6IHZhbHVl
IHJlYWQgc2hvdWxkIGJlIHRoZSBvbmUgZW5xdWV1ZWQgcHJvcGVydHkgImRvbmUiIGV4cGVjdGVk
IG9iamVjdCAiW29iamVjdCBPYmplY3RdIiBnb3Qgb2JqZWN0ICJbb2JqZWN0IE9iamVjdF0iCitQ
QVNTIFJlYWRhYmxlU3RyZWFtIHNob3VsZCBiZSBhYmxlIHRvIGVucXVldWUgZGlmZmVyZW50IG9i
amVjdHMuIAogUEFTUyBSZWFkYWJsZVN0cmVhbTogaWYgc3RhcnQgdGhyb3dzIGFuIGVycm9yLCBp
dCBzaG91bGQgYmUgcmUtdGhyb3duIAogVElNRU9VVCBSZWFkYWJsZVN0cmVhbTogaWYgcHVsbCBy
ZWplY3RzLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSBUZXN0IHRpbWVkIG91dAotVElNRU9V
VCBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50aWwgdGhlIHByZXZpb3Vz
IHB1bGwgY2FsbCdzIHByb21pc2UgZnVsZmlsbHMgVGVzdCB0aW1lZCBvdXQKK0ZBSUwgUmVhZGFi
bGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIHVudGlsIHRoZSBwcmV2aW91cyBwdWxsIGNh
bGwncyBwcm9taXNlIGZ1bGZpbGxzIGFzc2VydF9lcXVhbHM6IHB1bGwgc2hvdWxkIGhhdmUgYmVl
biBjYWxsZWQgb25jZSBhZnRlciBzdGFydCwgYnV0IG5vdCB5ZXQgaGF2ZSBiZWVuIGNhbGxlZCBh
IHNlY29uZCB0aW1lIGV4cGVjdGVkIDEgYnV0IGdvdCAwCiBQQVNTIFJlYWRhYmxlU3RyZWFtOiBz
aG91bGQgbm90IGNhbGwgcHVsbCBhZnRlciBzdGFydCBpZiB0aGUgc3RyZWFtIGlzIG5vdyBjbG9z
ZWQgCiBGQUlMIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIGFmdGVyIGVucXVldWVp
bmcgZnJvbSBpbnNpZGUgcHVsbCAod2l0aCBubyByZWFkIHJlcXVlc3RzKSwgaWYgc3RyYXRlZ3kg
YWxsb3dzIGFzc2VydF9lcXVhbHM6IHB1bGwoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBmb3Vy
IHRpbWVzIGV4cGVjdGVkIDQgYnV0IGdvdCAwCiBUSU1FT1VUIFJlYWRhYmxlU3RyZWFtIHB1bGwg
c2hvdWxkIGJlIGFibGUgdG8gY2xvc2UgYSBzdHJlYW0uIFRlc3QgdGltZWQgb3V0Ci1GQUlMIFJl
YWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJlYW0gaXMgcmVh
ZGFibGUgYnV0IGRyYWluaW5nIGFzc2VydF9lcXVhbHM6IHRoZSBmaXJzdCBlbnF1ZXVlIHNob3Vs
ZCByZXR1cm4gdHJ1ZSBleHBlY3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UKLUZBSUwgUmVhZGFibGVT
dHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyBjbG9zZWQgYXNz
ZXJ0X3Rocm93czogZW5xdWV1ZSBhZnRlciBjbG9zZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3Ig
ZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgYy5lbnF1ZXVlKCdhJyk7IH0iIGRpZCBub3QgdGhyb3cK
LUZBSUwgUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBzdG9yZWQgZXJy
b3Igd2hlbiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgYXNzZXJ0X3Rocm93czogZW5xdWV1ZSBhZnRl
ciBlcnJvciBzaG91bGQgdGhyb3cgdGhhdCBlcnJvciBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyBj
LmVucXVldWUoJ2EnKTsgfSIgZGlkIG5vdCB0aHJvdwotVElNRU9VVCBSZWFkYWJsZVN0cmVhbTog
c2hvdWxkIGNhbGwgdW5kZXJseWluZyBzb3VyY2UgbWV0aG9kcyBhcyBtZXRob2RzIFRlc3QgdGlt
ZWQgb3V0Ci1GQUlMIFJlYWRhYmxlU3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0
ZWd5IHNob3VsZCByZXR1cm4gZmFsc2UgZm9yIGFsbCBidXQgdGhlIGZpcnN0IGVucXVldWUgY2Fs
bCBhc3NlcnRfZXF1YWxzOiBmaXJzdCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZSBleHBlY3Rl
ZCB0cnVlIGJ1dCBnb3QgZmFsc2UKLUZBSUwgUmVhZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhl
IGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGNvbnRpbnVlIHJldHVybmluZyB0cnVlIGZyb20gZW5x
dWV1ZSBpZiB0aGUgY2h1bmtzIGFyZSByZWFkIGltbWVkaWF0ZWx5IGFzc2VydF9lcXVhbHM6IGZp
cnN0IGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVlIGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxz
ZQorRkFJTCBSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgd2hlbiB0aGUgc3Ry
ZWFtIGlzIHJlYWRhYmxlIGJ1dCBkcmFpbmluZyBhc3NlcnRfZXF1YWxzOiB0aGUgZmlyc3QgZW5x
dWV1ZSBzaG91bGQgcmV0dXJuIHRydWUgZXhwZWN0ZWQgKGJvb2xlYW4pIHRydWUgYnV0IGdvdCAo
dW5kZWZpbmVkKSB1bmRlZmluZWQKK1BBU1MgUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxk
IHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyBjbG9zZWQgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBl
bnF1ZXVlIHNob3VsZCB0aHJvdyB0aGUgc3RvcmVkIGVycm9yIHdoZW4gdGhlIHN0cmVhbSBpcyBl
cnJvcmVkIAorRkFJTCBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgdW5kZXJseWluZyBzb3Vy
Y2UgbWV0aG9kcyBhcyBtZXRob2RzIHJlbGVhc2VMb2NrIGlzIG5vdCBpbXBsZW1lbnRlZAorRkFJ
TCBSZWFkYWJsZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQg
cmV0dXJuIGZhbHNlIGZvciBhbGwgYnV0IHRoZSBmaXJzdCBlbnF1ZXVlIGNhbGwgYXNzZXJ0X2Vx
dWFsczogZmlyc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUgZXhwZWN0ZWQgKGJvb2xlYW4p
IHRydWUgYnV0IGdvdCAodW5kZWZpbmVkKSB1bmRlZmluZWQKK0ZBSUwgUmVhZGFibGVTdHJlYW0g
c3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGNvbnRpbnVlIHJldHVybmlu
ZyB0cnVlIGZyb20gZW5xdWV1ZSBpZiB0aGUgY2h1bmtzIGFyZSByZWFkIGltbWVkaWF0ZWx5IGFz
c2VydF9lcXVhbHM6IGZpcnN0IGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVlIGV4cGVjdGVkIChi
b29sZWFuKSB0cnVlIGJ1dCBnb3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVkCiBUSU1FT1VUIFJlYWRh
YmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgcmFuZG9tIHB1c2ggc291cmNl
IFRlc3QgdGltZWQgb3V0CiBUSU1FT1VUIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6
IGFkYXB0aW5nIGEgc3luYyBwdWxsIHNvdXJjZSBUZXN0IHRpbWVkIG91dAogVElNRU9VVCBSZWFk
YWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhbiBhc3luYyBwdWxsIHNvdXJj
ZSBUZXN0IHRpbWVkIG91dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJl
YW0tcmVhZGVyLWV4cGVjdGVkLnR4dAppbmRleCAwN2M1ZDc0MDhiZmQ2NjJjOTRjZmVmZDkwODA4
NDVhYmFkYmM2N2E5Li5lMDAwMTg0MmUzOTk5YTIyMzNhNTc0M2FkZDhiNGEwZWMwNDgzNWEzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9y
ZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJl
YW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVj
dGVkLnR4dApAQCAtOSw3ICs5LDcgQEAgUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVh
bVJlYWRlciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGEKIFBBU1MgR2V0
dGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYg
dGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCBnZXRSZWFkZXIpIAogUEFT
UyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUg
T0sgaWYgdGhlIHN0cmVhbSBpcyBjbG9zZWQgCiBQQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxl
U3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGVycm9y
ZWQgCi1USU1FT1VUIFJlYWRpbmcgZnJvbSBhIHJlYWRlciBmb3IgYW4gZW1wdHkgc3RyZWFtIHdp
bGwgd2FpdCB1bnRpbCBhIGNodW5rIGlzIGF2YWlsYWJsZSBUZXN0IHRpbWVkIG91dAorUEFTUyBS
ZWFkaW5nIGZyb20gYSByZWFkZXIgZm9yIGFuIGVtcHR5IHN0cmVhbSB3aWxsIHdhaXQgdW50aWwg
YSBjaHVuayBpcyBhdmFpbGFibGUgCiBGQUlMIGNhbmNlbCgpIG9uIGEgcmVhZGVyIHJlbGVhc2Vz
IHRoZSByZWFkZXIgYmVmb3JlIGNhbGxpbmcgdGhyb3VnaCBjYW5jZWwgaXMgbm90IGltcGxlbWVu
dGVkCiBQQVNTIGNsb3NlZCBzaG91bGQgYmUgZnVsZmlsbGVkIGFmdGVyIHN0cmVhbSBpcyBjbG9z
ZWQgKC5jbG9zZWQgYWNjZXNzIGJlZm9yZSBhY3F1aXJpbmcpIAogRkFJTCBjbG9zZWQgc2hvdWxk
IGJlIGZ1bGZpbGxlZCBhZnRlciByZWFkZXIgcmVsZWFzZXMgaXRzIGxvY2sgKG11bHRpcGxlIHN0
cmVhbSBsb2NrcykgcmVsZWFzZUxvY2sgaXMgbm90IGltcGxlbWVudGVkCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJl
YW0tcmVhZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRh
dGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmh0bWwKaW5kZXggODEzZTAxZWQ0NWE1ZWFkNTFl
OWFkMTgxNzE1ZWY4NGZhNDFiYmUwNC4uMzU4MzQzYWU0MjliNDYwZGI1ZDJhZjgzMWIxYzM2ZGE3
YWY3Y2U4OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVt
ZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0
cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRt
bApAQCAtMTA3LDcgKzEwNyw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgbmV3IFJlYWRhYmxl
U3RyZWFtUmVhZGVyKHJzKTsgLy8gQ29uc3RydWN0aW5nIGRpcmVjdGx5IHNob3VsZCBub3QgdGhy
b3cuCiB9LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hv
dWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgZXJyb3JlZCcpOwogCi12YXIgdGVzdDEgPSBhc3lu
Y190ZXN0KCdSZWFkaW5nIGZyb20gYSByZWFkZXIgZm9yIGFuIGVtcHR5IHN0cmVhbSB3aWxsIHdh
aXQgdW50aWwgYSBjaHVuayBpcyBhdmFpbGFibGUnLCB7IHRpbWVvdXQ6IDUwIH0pOwordmFyIHRl
c3QxID0gYXN5bmNfdGVzdCgnUmVhZGluZyBmcm9tIGEgcmVhZGVyIGZvciBhbiBlbXB0eSBzdHJl
YW0gd2lsbCB3YWl0IHVudGlsIGEgY2h1bmsgaXMgYXZhaWxhYmxlJyk7CiB0ZXN0MS5zdGVwKGZ1
bmN0aW9uKCkgewogICAgIHZhciBjb250cm9sbGVyOwogICAgIHZhciBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10
ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0CmluZGV4IDNlOGMyYzFlZmViZGQxZDE3ODI4ZmM1MGQ3OWM1
YmU2OWIyNzdkOWUuLmQ2MWJjOTBjM2IzZWY3Mjg3Njg3MzdhNWE3MzNiM2FmMTdjMmIwYmEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3Jl
YWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0
cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQt
ZXhwZWN0ZWQudHh0CkBAIC0zMCwxMyArMzAsMTMgQEAgRkFJTCBjYW5jZWwoKSBzaG91bGQgcmV0
dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUgY2FuY2VsIGlzIG5vdAog
RkFJTCByZWFkZXIgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IHJlamVjdGVkIHBy
b21pc2UgZWFjaCB0aW1lIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIFBBU1Mgc2hvdWxkIGJl
IGFibGUgdG8gYWNxdWlyZSBtdWx0aXBsZSByZWFkZXJzLCBzaW5jZSB0aGV5IGFyZSBhbGwgYXV0
by1yZWxlYXNlZCAKIFBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU1R3b0NodW5rc09wZW5SZWFkZXIg
d2l0aCBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgc3RpbGwgb3BlbikgcmVh
ZGVyIAotVElNRU9VVCBjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRpbmcgd2lsbCBl
dmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MgVGVzdCB0aW1lZCBvdXQKLVRJTUVPVVQgY2FsbGlu
ZyByZWFkKCkgdHdpY2Ugd2l0aCB3YWl0aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZlIGJvdGggY2h1
bmtzIFRlc3QgdGltZWQgb3V0CitQQVNTIGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2Fp
dGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5rcyAKK1BBU1MgY2FsbGluZyByZWFk
KCkgdHdpY2Ugd2l0aCB3YWl0aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZlIGJvdGggY2h1bmtzIAog
UEFTUyByZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcyBlYWNoIHRpbWUgCiBG
QUlMIGNhbmNlbCgpIGFmdGVyIGEgcmVhZCgpIHNob3VsZCBzdGlsbCBnaXZlIHRoYXQgc2luZ2xl
IHJlYWQgcmVzdWx0IGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIFBBU1MgUnVubmluZyB0ZW1w
bGF0ZWRSU1R3b0NodW5rc0Nsb3NlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1
bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVyIAotRkFJTCB0aGlyZCByZWFkKCksIHdp
dGhvdXQgd2FpdGluZywgc2hvdWxkIGdpdmUgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVl
IH0gYXNzZXJ0X29iamVjdF9lcXVhbHM6IGZpcnN0IHJlc3VsdCBzaG91bGQgYmUgY29ycmVjdCBw
cm9wZXJ0eSAiZG9uZSIgZXhwZWN0ZWQgb2JqZWN0ICJbb2JqZWN0IE9iamVjdF0iIGdvdCBvYmpl
Y3QgIltvYmplY3QgT2JqZWN0XSIKLUZBSUwgdGhpcmQgcmVhZCwgd2l0aCB3YWl0aW5nLCBzaG91
bGQgZ2l2ZSB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSBhc3NlcnRfb2JqZWN0X2Vx
dWFsczogZmlyc3QgcmVzdWx0IHNob3VsZCBiZSBjb3JyZWN0IHByb3BlcnR5ICJkb25lIiBleHBl
Y3RlZCBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIgZ290IG9iamVjdCAiW29iamVjdCBPYmplY3Rd
IgorUEFTUyB0aGlyZCByZWFkKCksIHdpdGhvdXQgd2FpdGluZywgc2hvdWxkIGdpdmUgeyB2YWx1
ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCitQQVNTIHRoaXJkIHJlYWQsIHdpdGggd2FpdGlu
Zywgc2hvdWxkIGdpdmUgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCiBQQVNTIGRy
YWluaW5nIHRoZSBzdHJlYW0gdmlhIHJlYWQoKSBzaG91bGQgY2F1c2UgdGhlIHJlYWRlciBjbG9z
ZWQgcHJvbWlzZSB0byBmdWxmaWxsIAogRkFJTCByZWxlYXNpbmcgdGhlIGxvY2sgYWZ0ZXIgdGhl
IHN0cmVhbSBpcyBjbG9zZWQgc2hvdWxkIGRvIG5vdGhpbmcgcmVsZWFzZUxvY2sgaXMgbm90IGlt
cGxlbWVudGVkCiBGQUlMIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgcmVhZCgpIHRv
IGFjdCBhcyBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCByZWxlYXNlTG9jayBpcyBub3QgaW1wbGVt
ZW50ZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVu
dGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVh
bXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQuaHRt
bAppbmRleCBhYzJjNGMyODg2YjdhNjNjOWYwNzQ1Y2U1MTRlYjEwMTA4NTk2NDY5Li43NmEzNzc4
YWNkN2NjODY3NDNiNTM2NWMxY2ZlOTY0Mzg3OTc1NWM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxh
dGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRp
b24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC5odG1sCkBAIC0zNjksNyArMzY5LDcgQEAgZnVu
Y3Rpb24gdGVtcGxhdGVkUlNUd29DaHVua3NPcGVuUmVhZGVyKGxhYmVsLCBmYWN0b3J5LCBjaHVu
a3MpIHsKICAgICB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIH0sICdSdW5uaW5nIHRlbXBsYXRlZFJT
VHdvQ2h1bmtzT3BlblJlYWRlciB3aXRoICcgKyBsYWJlbCk7CiAKLSAgICB2YXIgdGVzdDEgPSBh
c3luY190ZXN0KCdjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRpbmcgd2lsbCBldmVu
dHVhbGx5IGdpdmUgYm90aCBjaHVua3MnLCB7IHRpbWVvdXQ6IDUwIH0pOworICAgIHZhciB0ZXN0
MSA9IGFzeW5jX3Rlc3QoJ2NhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3aWxs
IGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5rcycpOwogICAgIHRlc3QxLnN0ZXAoZnVuY3Rpb24o
KSB7CiAgICAgICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwogICAgICAgICB2YXIgcHJv
bWlzZUNvdW50ID0gMDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNl
LWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFt
cy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLmh0bWwKaW5kZXggMTZj
ZThjNGFlNDQ5MzMxN2QzMjdjZjkxOGI0Y2Y0OTA5NjE1OGQ1OC4uZWFiMWYwOWYzOTAyYmM4YjY2
ZTAxOTAwZjI2ZmI1OTFhZDM5NmQ4ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9y
ZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLmh0
bWwKQEAgLTM2OCw3ICszNjgsNyBAQCB0ZXN0NC5zdGVwKGZ1bmN0aW9uKCkgewogLy8gICAgIH0p
LCBzdGFuZGFyZFRpbWVvdXQpOwogLy8gfSk7CiAKLXZhciB0ZXN0MTEgPSBhc3luY190ZXN0KCdS
ZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50aWwgdGhlIHByZXZpb3VzIHB1
bGwgY2FsbFwncyBwcm9taXNlIGZ1bGZpbGxzJywgeyB0aW1lb3V0OiA1MCB9KTsKK3ZhciB0ZXN0
MTEgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50
aWwgdGhlIHByZXZpb3VzIHB1bGwgY2FsbFwncyBwcm9taXNlIGZ1bGZpbGxzJyk7CiB0ZXN0MTEu
c3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgcmVzb2x2ZTsKICAgICB2YXIgcmV0dXJuZWRQcm9t
aXNlOwpAQCAtNTY1LDcgKzU2NSw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgfSk7CiB9LCAn
UmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBzdG9yZWQgZXJyb3Igd2hl
biB0aGUgc3RyZWFtIGlzIGVycm9yZWQnKTsKIAotdmFyIHRlc3QxNiA9IGFzeW5jX3Rlc3QoJ1Jl
YWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2RzIGFzIG1l
dGhvZHMnLCB7IHRpbWVvdXQ6IDUwIH0pOwordmFyIHRlc3QxNiA9IGFzeW5jX3Rlc3QoJ1JlYWRh
YmxlU3RyZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2RzIGFzIG1ldGhv
ZHMnKTsKIHRlc3QxNi5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciBzdGFydENhbGxlZCA9IDA7
CiAgICAgdmFyIHB1bGxDYWxsZWQgPSAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254261</attachid>
            <date>2015-06-04 02:25:06 -0700</date>
            <delta_ts>2015-06-04 03:20:09 -0700</delta_ts>
            <desc>Patch for landing, including using Deque for stack of JSValue</desc>
            <filename>bug-145210-20150604112444.patch</filename>
            <type>text/plain</type>
            <size>24985</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjIwNTZkOTM5OTE4ZTZl
NmU4OTg3ZjdmYmVhYjhhOTMxYWJlMDE4NC4uMGNkNTFmZjA2NmUwZWEwN2ZmOGY2ZDg0M2UxYTAw
MDI5NDAwZWY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE1LTA2LTA0ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFi
bGV0IDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBbU3RyZWFtcyBBUEld
IEltcGxlbWVudCBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgZW5xdWV1ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1MjEwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkZWQgcG9zc2liaWxpdHkgdG8gZW5x
dWV1ZSBhbnkgSlNWYWx1ZSB3aXRoaW4gUmVhZGFibGVKU1N0cmVhbS4KKyAgICAgICAgVGhleSBh
cmUgc3RvcmVkIGluIGEgVmVjdG9yIG9mIHN0cm9uZ2lmaWVkIEpTVmFsdWUuCisKKyAgICAgICAg
QWRkZWQgc3VwcG9ydCBmb3Igc3RyZWFtcyB0aGF0IGNvbnRhaW4gZGF0YSBidXQgYXJlIGFza2Vk
IHRvIGNsb3NlLgorICAgICAgICBUaGlzIGlzIGRvbmUgdGhyb3VnaCBtX2Nsb3NlUmVxdWVzdGVk
IGJvb2xlYW4gYW5kIHNwbGl0dGluZyBhY3R1YWwgY2xvc2luZyBvZiB0aGUgc3RyZWFtIGZyb20g
Y2hhbmdlU3RhdGVUb0Nsb3NlZCgpLgorCisgICAgICAgIENodW5rIHNpemUgYW5kIGJhY2twcmVz
c3VyZSBtZWNoYW5pc20gaXMgbm90IHlldCBpbXBsZW1lbnRlZC4KKyAgICAgICAgTmVpdGhlciBp
cyBwdWxsaW5nIG9uY2UgZW5xdWV1ZWQgZGF0YSBpcyBwcm9jZXNzZWQuCisKKyAgICAgICAgQ292
ZXJlZCBieSByZWJhc2VkIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtOjpjaGFuZ2VT
dGF0ZVRvQ2xvc2VkKTogU3BsaXQgbWV0aG9kIHdpdGggbmV3bHkgYWRkZWQgY2xvc2UoKS4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtOjpjbG9zZSk6IERvZXMgdGhlIGFjdHVhbCBj
bG9zaW5nIG9mIHN0cmVhbSBvbmNlIHN0cmVhbSBoYXMgbm8gbW9yZSB2YWx1ZXMuCisgICAgICAg
IChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbTo6cmVhZCk6IENsb3NlIHRoZSBzdHJlYW0gd2hlbiBz
dHJlYW0gaXMgZW1wdGllZCBhbmQgY2xvc2UgaXMgcmVxdWVzdGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UmVhZGFibGVTdHJlYW06OnJlc29sdmVSZWFkQ2FsbGJhY2spOiBBZGRlZCB0byBlbmFibGUg
UmVhZGFibGVKU1N0cmVhbSB0byByZXNvbHZlIHJlYWQgY2FsbGJhY2tzIGltbWVkaWF0bHkgYXQg
ZW5xdWV1ZSB0aW1lLgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OmlzRXJyb3JlZCk6IEdldHRlciBh
ZGRlZCBmb3IgdGhlIGN1c3RvbSBiaW5kaW5nIGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpSZWFk
YWJsZVN0cmVhbTo6aXNDbG9zZVJlcXVlc3RlZCk6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyOjplbnF1ZXVlKTogYmluZGluZyBjb2RlIGZv
ciBlbnF1ZXVlLCB0YWtpbmcgY2FyZSBvZiByYWlzaW5nIGV4Y2VwdGlvbiBpZiByZWFkYWJsZSBz
dHJlYW0gY2Fubm90IGVucXVldWUuCisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVKU1N0
cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUpTU3RyZWFtOjpoYXNWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUpTU3RyZWFtOjpyZWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlYWRhYmxlSlNTdHJlYW06OmVucXVldWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1JlYWRhYmxlSlNTdHJlYW0uaDoKKwogMjAxNS0wNi0wMyAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2
YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPiBhbmQgWW91ZW5uIEZhYmxldCA8eW91ZW5uLmZhYmxl
dEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgW1N0cmVhbXMgQVBJXSBSZWFkYWJsZUpTU3RyZWFt
IGRvZXMgbm90IG5lZWQgYSBSZWFkYWJsZVN0cmVhbVNvdXJjZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAKaW5kZXggODBjMDU2MjU5ZTJm
MmE5ZGQ4Y2QxMDI4NTUxMzA4Yzc1YjZjZTNkMi4uNGYxYzg5NjNkYTA0YzMxMTcwNWU5NDdhZjdl
YjE3NDU0NzY5MGExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1JlYWRhYmxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW0uY3BwCkBAIC02Nyw4ICs2NywxOCBAQCB2b2lkIFJlYWRhYmxlU3RyZWFt
OjpjbGVhckNhbGxiYWNrcygpCiAKIHZvaWQgUmVhZGFibGVTdHJlYW06OmNoYW5nZVN0YXRlVG9D
bG9zZWQoKQogewotICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpSZWFkYWJsZSkKKyAgICBBU1NF
UlQoIW1fY2xvc2VSZXF1ZXN0ZWQpOworICAgIEFTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpFcnJv
cmVkKTsKKworICAgIG1fY2xvc2VSZXF1ZXN0ZWQgPSB0cnVlOworCisgICAgaWYgKG1fc3RhdGUg
IT0gU3RhdGU6OlJlYWRhYmxlIHx8IGhhc1ZhbHVlKCkpCiAgICAgICAgIHJldHVybjsKKyAgICBj
bG9zZSgpOworfQorCit2b2lkIFJlYWRhYmxlU3RyZWFtOjpjbG9zZSgpCit7CiAgICAgbV9zdGF0
ZSA9IFN0YXRlOjpDbG9zZWQ7CiAKICAgICBpZiAobV9yZWFkZXIpCkBAIC0xNDQsMTIgKzE1NCwy
NCBAQCB2b2lkIFJlYWRhYmxlU3RyZWFtOjpyZWFkKFJlYWRTdWNjZXNzQ2FsbGJhY2smJiBzdWNj
ZXNzQ2FsbGJhY2ssIFJlYWRFbmRDYWxsYmFjawogICAgIH0KICAgICBpZiAoaGFzVmFsdWUoKSkg
ewogICAgICAgICBzdWNjZXNzQ2FsbGJhY2socmVhZCgpKTsKKyAgICAgICAgaWYgKG1fY2xvc2VS
ZXF1ZXN0ZWQgJiYgIWhhc1ZhbHVlKCkpCisgICAgICAgICAgICBjbG9zZSgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIG1fcmVhZFJlcXVlc3RzLmFwcGVuZCh7IFdURjo6bW92ZShzdWNj
ZXNzQ2FsbGJhY2spLCBXVEY6Om1vdmUoZW5kQ2FsbGJhY2spLCBXVEY6Om1vdmUoZmFpbHVyZUNh
bGxiYWNrKSB9KTsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRyeSB0byBwdWxsLgogfQogCiti
b29sIFJlYWRhYmxlU3RyZWFtOjpyZXNvbHZlUmVhZENhbGxiYWNrKEpTQzo6SlNWYWx1ZSB2YWx1
ZSkKK3sKKyAgICBpZiAobV9yZWFkUmVxdWVzdHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBtX3JlYWRSZXF1ZXN0cy5maXJzdCgpLnN1Y2Nlc3NDYWxsYmFjayh2YWx1
ZSk7CisgICAgbV9yZWFkUmVxdWVzdHMucmVtb3ZlKDApOworICAgIHJldHVybiB0cnVlOworfQor
CiB2b2lkIFJlYWRhYmxlU3RyZWFtOjpzdGFydCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmgKaW5k
ZXggZDFkMzM0NGFjNmM0ZDJhNjI3YWQxNTEzZjRhMDVjMzNmYjcyYTU1ZS4uZjYyZDdjMjFlZDYx
MjRkMWQ1YmU0ODIxZmExMjY4N2RhY2Q2ZmY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmgKQEAgLTY2LDcgKzY2LDkgQEAgcHVibGljOgog
ICAgIGNvbnN0IFJlYWRhYmxlU3RyZWFtUmVhZGVyKiByZWFkZXIoKSBjb25zdCB7IHJldHVybiBt
X3JlYWRlci5nZXQoKTsgfQogICAgIGJvb2wgaXNMb2NrZWQoKSBjb25zdCB7IHJldHVybiAhIW1f
cmVhZGVyOyB9CiAKKyAgICBib29sIGlzRXJyb3JlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUg
PT0gU3RhdGU6OkVycm9yZWQ7IH0KICAgICBib29sIGlzUmVhZGFibGUoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlID09IFN0YXRlOjpSZWFkYWJsZTsgfQorICAgIGJvb2wgaXNDbG9zZVJlcXVlc3Rl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xvc2VSZXF1ZXN0ZWQ7IH0KIAogICAgIHZpcnR1YWwgSlND
OjpKU1ZhbHVlIGVycm9yKCkgPSAwOwogCkBAIC04NiwxMiArODgsMTUgQEAgcHVibGljOgogcHJv
dGVjdGVkOgogICAgIGV4cGxpY2l0IFJlYWRhYmxlU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKTsKIAorICAgIGJvb2wgcmVzb2x2ZVJlYWRDYWxsYmFjayhKU0M6OkpTVmFsdWUpOworCiBw
cml2YXRlOgogICAgIC8vIEFjdGl2ZURPTU9iamVjdCBBUEkuCiAgICAgY29uc3QgY2hhciogYWN0
aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgY2FuU3VzcGVuZEZv
clBhZ2VDYWNoZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBjbGVhckNhbGxiYWNrcygp
OworICAgIHZvaWQgY2xvc2UoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNWYWx1ZSgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSByZWFkKCkgPSAwOwpAQCAtMTA5LDYgKzEx
NCw3IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBWZWN0b3I8UmVhZENhbGxiYWNrcz4gbV9yZWFk
UmVxdWVzdHM7CiAKKyAgICBib29sIG1fY2xvc2VSZXF1ZXN0ZWQgeyBmYWxzZSB9OwogICAgIFN0
YXRlIG1fc3RhdGUgeyBTdGF0ZTo6UmVhZGFibGUgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
Q3VzdG9tLmNwcAppbmRleCBkOTFkMzNiMjViYzEwZTM4NWRiNDNjNjQyZGQxOTQyOGM5ZmFkODc1
Li5mMWI1ODdlYWU0MDY2YzYzNGNkYWI1ODljYWViODQxY2ZjNGY4MjFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXJDdXN0b20uY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaWYgRU5BQkxFKFNUUkVBTVNf
QVBJKQogCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKICNpbmNsdWRlICJSZWFkYWJsZUpTU3RyZWFtLmgiCiAjaW5jbHVkZSA8cnVudGltZS9F
cnJvci5oPgogCkBAIC01MSwxMCArNTAsMTUgQEAgSlNWYWx1ZSBKU1JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlcjo6Y2xvc2UoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogfQogCi1KU1ZhbHVlIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyOjplbnF1ZXVlKEV4ZWNT
dGF0ZSopCitKU1ZhbHVlIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyOjplbnF1ZXVlKEV4ZWNT
dGF0ZSogZXhlYykKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBqc0Jvb2xl
YW4oZmFsc2UpOworICAgIFJlYWRhYmxlSlNTdHJlYW0mIHN0cmVhbSA9IGltcGwoKS5zdHJlYW0o
KTsKKyAgICBpZiAoc3RyZWFtLmlzRXJyb3JlZCgpKQorICAgICAgICByZXR1cm4gZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBzdHJlYW0uZXJyb3IoKSk7CisgICAgaWYgKHN0cmVhbS5p
c0Nsb3NlUmVxdWVzdGVkKCkpCisgICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNhbGxpbmcgZW5x
dWV1ZSBvbiBhIHN0cmVhbSB3aGljaCBpcyBjbG9zaW5nIikpKTsKKyAgICBzdHJlYW0uZW5xdWV1
ZSgqZXhlYyk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKIEpTVmFsdWUgSlNSZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXI6OmVycm9yKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHAKaW5kZXggYzk1OTNhOTEx
ZDg1NWI0YjQ3OTZjNTk2NmQ5ODczZjNlYjRiZjA0ZC4uMWE1NWE1YjY4ZmU4MWUyODVjZWU1MmVi
ZTRjZjFkZTFjOTI5OGNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
UmVhZGFibGVKU1N0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVh
ZGFibGVKU1N0cmVhbS5jcHAKQEAgLTEzNSwxNCArMTM1LDMwIEBAIHZvaWQgUmVhZGFibGVKU1N0
cmVhbTo6c3RvcmVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgZXhlYykKIAogYm9vbCBSZWFkYWJsZUpT
U3RyZWFtOjpoYXNWYWx1ZSgpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fY2h1bmtRdWV1ZS5zaXplKCk7CiB9CiAKIEpTVmFs
dWUgUmVhZGFibGVKU1N0cmVhbTo6cmVhZCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBBU1NFUlQoaGFzVmFsdWUoKSk7CisKKyAgICBy
ZXR1cm4gbV9jaHVua1F1ZXVlLnRha2VGaXJzdCgpLmdldCgpOworfQorCit2b2lkIFJlYWRhYmxl
SlNTdHJlYW06OmVucXVldWUoRXhlY1N0YXRlJiBleGVjKQoreworICAgIEFTU0VSVCghaXNDbG9z
ZVJlcXVlc3RlZCgpKTsKKworICAgIGlmICghaXNSZWFkYWJsZSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBKU1ZhbHVlIGNodW5rID0gZXhlYy5hcmd1bWVudENvdW50KCkgPyBleGVjLmFyZ3Vt
ZW50KDApIDoganNVbmRlZmluZWQoKTsKKyAgICBpZiAocmVzb2x2ZVJlYWRDYWxsYmFjayhjaHVu
aykpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2h1bmtRdWV1ZS5hcHBlbmQoSlNDOjpTdHJv
bmc8SlNDOjpVbmtub3duPihleGVjLnZtKCksIGNodW5rKSk7CisgICAgLy8gRklYTUU6IENvbXB1
dGUgY2h1bmsgc2l6ZS4KKyAgICAvLyBGSVhNRTogQWRkIHB1bGxpbmcgb2YgZGF0YSBoZXJlIGFu
ZCBhbHNvIHdoZW4gZGF0YSBpcyBwYXNzZWQgdG8gcmVzb2x2ZSBjYWxsYmFjay4KIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvUmVhZGFibGVKU1N0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFi
bGVKU1N0cmVhbS5oCmluZGV4IDZjNTcyZmUwMDJhNTkxN2FlOGUyMWUxMjZjNDcyZTJkNTE0Mzg2
NDAuLjY3ZGMwYzAwMjE1M2JlMDQ3MzIzNWZjMTIwNzUwYThmN2Q1ZmZhYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmgKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlIDxoZWFwL1N0cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDxydW50aW1lL0pT
Q0pTVmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL1ByaXZhdGVOYW1lLmg+CisjaW5jbHVkZSA8
d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC01Myw2ICs1NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3JlRXJyb3IoSlNDOjpFeGVj
U3RhdGUmKTsKICAgICBKU0M6OkpTVmFsdWUgZXJyb3IoKSB7IHJldHVybiBtX2Vycm9yLmdldCgp
OyB9CiAKKyAgICB2b2lkIGVucXVldWUoSlNDOjpFeGVjU3RhdGUmKTsKKwogcHJpdmF0ZToKICAg
ICBSZWFkYWJsZUpTU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBKU0M6OkV4ZWNTdGF0
ZSYsIEpTQzo6SlNPYmplY3QqKTsKIApAQCAtNjYsNiArNjksNyBAQCBwcml2YXRlOgogICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKICAg
ICBKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+IG1fZXJyb3I7CiAgICAgSlNDOjpTdHJvbmc8SlND
OjpKU09iamVjdD4gbV9zb3VyY2U7CisgICAgRGVxdWU8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3du
Pj4gbV9jaHVua1F1ZXVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDgy
YWQwZDAzZDI1YzM1ZTY4MjRjN2VjNGU0NzU0M2U2NDJlNTE5YjkuLjhlMjdiZjljNTM4Mjk1N2Uz
OGQwYzY3NTU0ODJmNGUwZmEyNGVjMjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNS0wNi0w
NCAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPiBhbmQgWW91
ZW5uIEZhYmxldCA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW1N0cmVh
bXMgQVBJXSBJbXBsZW1lbnQgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIGVucXVldWUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NTIxMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNlcy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vY291bnQtcXVldWluZy1z
dHJhdGVneS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVt
ZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS5odG1sOgorICAgICAgICAqIHN0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFt
LXJlYWRlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVt
ZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci5odG1sOgorICAgICAgICAqIHN0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRh
YmxlLXN0cmVhbS10ZW1wbGF0ZWQuaHRtbDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbDoKKwogMjAxNS0wNi0wMyAgWmFsYW4g
QnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBib3JkZXJCb3hSZWN0IGlu
c3RlYWQgb2YgY29udGVudEJveFJlY3QgZm9yIGJhY2tkcm9wIGZpbHRlci4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5
aW5nLXNvdXJjZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNlcy1leHBlY3RlZC50eHQKaW5kZXgg
Yjc1NTgxYjFkOTVjMDQxNzA4ZTUxM2RlOWJlYzEyODVhMzE3MTQ5NS4uZjczN2Q1YmJjYzNmOGZl
YjczZWFkMTYwMjM0ODdlNzgxZTUzZWExMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFt
cy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNlcy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24v
YmFkLXVuZGVybHlpbmctc291cmNlcy1leHBlY3RlZC50eHQKQEAgLTE4LDcgKzE4LDcgQEAgRkFJ
TCBVbmRlcmx5aW5nIHNvdXJjZTogc3RyYXRlZ3kuc2l6ZSByZXR1cm5pbmcgTmFOIGFzc2VydF91
bnJlYWNoZWQ6IGVucXVldWUgZGkKIEZBSUwgVW5kZXJseWluZyBzb3VyY2U6IHN0cmF0ZWd5LnNp
emUgcmV0dXJuaW5nIC1JbmZpbml0eSBhc3NlcnRfdW5yZWFjaGVkOiBlbnF1ZXVlIGRpZG4ndCB0
aHJvdyBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKIEZBSUwgVW5kZXJseWluZyBzb3VyY2U6IHN0
cmF0ZWd5LnNpemUgcmV0dXJuaW5nICtJbmZpbml0eSBhc3NlcnRfdW5yZWFjaGVkOiBlbnF1ZXVl
IGRpZG4ndCB0aHJvdyBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKIFBBU1MgVW5kZXJseWluZyBz
b3VyY2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ugb24gYW4gZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJv
dyB0aGUgc2Vjb25kIHRpbWUgCi1GQUlMIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3Nl
IHR3aWNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1l
IGFzc2VydF9vYmplY3RfZXF1YWxzOiByZWFkKCkgc2hvdWxkIHJlYWQgdGhlIGVucXVldWVkIGNo
dW5rIHByb3BlcnR5ICJkb25lIiBleHBlY3RlZCBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIgZ290
IG9iamVjdCAiW29iamVjdCBPYmplY3RdIgorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGlu
ZyBjbG9zZSB0d2ljZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNv
bmQgdGltZSAKIEZBSUwgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYW4gZW1w
dHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cgY2FuY2VsIGlzIG5vdCBpbXBsZW1l
bnRlZAogRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBvbiBhIG5vbi1lbXB0
eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdyBjYW5jZWwgaXMgbm90IGltcGxlbWVu
dGVkCiBQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIGFmdGVyIGVycm9yIHNo
b3VsZCB0aHJvdyAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWlt
cGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJh
dGVneS1leHBlY3RlZC50eHQKaW5kZXggZDdjYmI3NWYzNzIzNjkyMmVlZTVhYzgwMmIxMTZiODNm
MDEyNWJlMy4uYjliYjczNTBiZDg4N2M3NGEyMjExOWQ1NTcxOWM4MDZlYmYxNzUzYyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vY291bnQt
cXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9y
ZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50
eHQKQEAgLTIsNyArMiw3IEBACiBQQVNTIENhbiBjb25zdHJ1Y3QgYSBDb3VudFF1ZXVpbmdTdHJh
dGVneSB3aXRoIGEgdmFsaWQgaGlnaCB3YXRlciBtYXJrIAogUEFTUyBHaXZlcyBhIFJhbmdlRXJy
b3Igd2hlbiB0aGUgbnVtYmVyIGlzIG5lZ2F0aXZlIAogUEFTUyBDYW4gY29uc3RydWN0IGEgcmVh
ZGFibGUgc3RyZWFtIHdpdGggYSB2YWxpZCBDb3VudFF1ZXVpbmdTdHJhdGVneSAKLVRJTUVPVVQg
Q29ycmVjdGx5IGdvdmVybnMgdGhlIHJldHVybiB2YWx1ZSBvZiBhIFJlYWRhYmxlU3RyZWFtJ3Mg
ZW5xdWV1ZSBmdW5jdGlvbiAoSFdNID0gMCkgVGVzdCB0aW1lZCBvdXQKLUZBSUwgQ29ycmVjdGx5
IGdvdmVybnMgdGhlIHJldHVybiB2YWx1ZSBvZiBhIFJlYWRhYmxlU3RyZWFtJ3MgZW5xdWV1ZSBm
dW5jdGlvbiAoSFdNID0gMSkgYXNzZXJ0X2VxdWFsczogQWZ0ZXIgMCByZWFkcywgMXN0IGVucXVl
dWUgc2hvdWxkIHJldHVybiB0cnVlIChxdWV1ZSBub3cgY29udGFpbnMgMSBjaHVuaykgZXhwZWN0
ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCi1GQUlMIENvcnJlY3RseSBnb3Zlcm5zIHRoZSByZXR1cm4g
dmFsdWUgb2YgYSBSZWFkYWJsZVN0cmVhbSdzIGVucXVldWUgZnVuY3Rpb24gKEhXTSA9IDQpIGFz
c2VydF9lcXVhbHM6IEFmdGVyIDAgcmVhZHMsIDFzdCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1
ZSAocXVldWUgbm93IGNvbnRhaW5zIDEgY2h1bmspIGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxz
ZQorRkFJTCBDb3JyZWN0bHkgZ292ZXJucyB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgUmVhZGFibGVT
dHJlYW0ncyBlbnF1ZXVlIGZ1bmN0aW9uIChIV00gPSAwKSBhc3NlcnRfZXF1YWxzOiBBZnRlciAw
IHJlYWRzLCAxc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIGZhbHNlIChxdWV1ZSBub3cgY29udGFp
bnMgMSBjaHVuaykgZXhwZWN0ZWQgKGJvb2xlYW4pIGZhbHNlIGJ1dCBnb3QgKHVuZGVmaW5lZCkg
dW5kZWZpbmVkCitGQUlMIENvcnJlY3RseSBnb3Zlcm5zIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBS
ZWFkYWJsZVN0cmVhbSdzIGVucXVldWUgZnVuY3Rpb24gKEhXTSA9IDEpIGFzc2VydF9lcXVhbHM6
IEFmdGVyIDAgcmVhZHMsIDFzdCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZSAocXVldWUgbm93
IGNvbnRhaW5zIDEgY2h1bmspIGV4cGVjdGVkIChib29sZWFuKSB0cnVlIGJ1dCBnb3QgKHVuZGVm
aW5lZCkgdW5kZWZpbmVkCitGQUlMIENvcnJlY3RseSBnb3Zlcm5zIHRoZSByZXR1cm4gdmFsdWUg
b2YgYSBSZWFkYWJsZVN0cmVhbSdzIGVucXVldWUgZnVuY3Rpb24gKEhXTSA9IDQpIGFzc2VydF9l
cXVhbHM6IEFmdGVyIDAgcmVhZHMsIDFzdCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZSAocXVl
dWUgbm93IGNvbnRhaW5zIDEgY2h1bmspIGV4cGVjdGVkIChib29sZWFuKSB0cnVlIGJ1dCBnb3Qg
KHVuZGVmaW5lZCkgdW5kZWZpbmVkCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbCBiL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmct
c3RyYXRlZ3kuaHRtbAppbmRleCA4MmMzODdkZGJiNTcxNThiYTBmN2Y5MmViZGM2NDFhMjBlM2Fk
ZDAzLi4zYjk2NDViNGY5OTM3ZTRhZTk0NWQ3NWQ0Mjc2YmI1YWE4YjNkYWNlIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1
aW5nLXN0cmF0ZWd5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1w
bGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS5odG1sCkBAIC0xNyw3ICsxNyw3IEBA
IHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsgc3RyYXRlZ3k6IG5l
dyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7ICJoaWdoV2F0ZXJNYXJrIjogNCB9KSB9KTsKIH0sICdD
YW4gY29uc3RydWN0IGEgcmVhZGFibGUgc3RyZWFtIHdpdGggYSB2YWxpZCBDb3VudFF1ZXVpbmdT
dHJhdGVneScpOwogCi12YXIgdGVzdDEgPSBhc3luY190ZXN0KCdDb3JyZWN0bHkgZ292ZXJucyB0
aGUgcmV0dXJuIHZhbHVlIG9mIGEgUmVhZGFibGVTdHJlYW1cJ3MgZW5xdWV1ZSBmdW5jdGlvbiAo
SFdNID0gMCknLCB7IHRpbWVvdXQ6IDUwIH0pOwordmFyIHRlc3QxID0gYXN5bmNfdGVzdCgnQ29y
cmVjdGx5IGdvdmVybnMgdGhlIHJldHVybiB2YWx1ZSBvZiBhIFJlYWRhYmxlU3RyZWFtXCdzIGVu
cXVldWUgZnVuY3Rpb24gKEhXTSA9IDApJyk7CiB0ZXN0MS5zdGVwKGZ1bmN0aW9uKCkgewogICAg
IHZhciBlbnF1ZXVlOwogICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJs
ZS1zdHJlYW0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1w
bGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dAppbmRleCA4OWFlNDlkZTZj
ZGQ3YjQ3MGE1ZjEyZDNhMTRmYjVhZTY3NjVjMTk5Li44MDE3ZTFhZDcwY2ZmYWY0MDc3NTQ1MmI1
YjA5YzViZmI0Y2RlMDgyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5j
ZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1l
eHBlY3RlZC50eHQKQEAgLTcsMTkgKzcsMTkgQEAgUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1
Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBwdWxsIGFyZ3VtZW50CiBQQVNTIFJlYWRh
YmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5pdGlhbCBnYXJiYWdlIGFzIHN0cmF0ZWd5
IGFyZ3VtZW50IAogVElNRU9VVCBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0
byByZXR1cm4gYSBwcm9taXNlIFRlc3QgdGltZWQgb3V0CiBUSU1FT1VUIFJlYWRhYmxlU3RyZWFt
IHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBpdCBU
ZXN0IHRpbWVkIG91dAotRkFJTCBSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBlbnF1
ZXVlIGRpZmZlcmVudCBvYmplY3RzLiBhc3NlcnRfb2JqZWN0X2VxdWFsczogdmFsdWUgcmVhZCBz
aG91bGQgYmUgdGhlIG9uZSBlbnF1ZXVlZCBwcm9wZXJ0eSAiZG9uZSIgZXhwZWN0ZWQgb2JqZWN0
ICJbb2JqZWN0IE9iamVjdF0iIGdvdCBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIKK1BBU1MgUmVh
ZGFibGVTdHJlYW0gc2hvdWxkIGJlIGFibGUgdG8gZW5xdWV1ZSBkaWZmZXJlbnQgb2JqZWN0cy4g
CiBQQVNTIFJlYWRhYmxlU3RyZWFtOiBpZiBzdGFydCB0aHJvd3MgYW4gZXJyb3IsIGl0IHNob3Vs
ZCBiZSByZS10aHJvd24gCiBUSU1FT1VUIFJlYWRhYmxlU3RyZWFtOiBpZiBwdWxsIHJlamVjdHMs
IGl0IHNob3VsZCBlcnJvciB0aGUgc3RyZWFtIFRlc3QgdGltZWQgb3V0Ci1USU1FT1VUIFJlYWRh
YmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCB1bnRpbCB0aGUgcHJldmlvdXMgcHVsbCBj
YWxsJ3MgcHJvbWlzZSBmdWxmaWxscyBUZXN0IHRpbWVkIG91dAorRkFJTCBSZWFkYWJsZVN0cmVh
bTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50aWwgdGhlIHByZXZpb3VzIHB1bGwgY2FsbCdzIHBy
b21pc2UgZnVsZmlsbHMgYXNzZXJ0X2VxdWFsczogcHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxl
ZCBvbmNlIGFmdGVyIHN0YXJ0LCBidXQgbm90IHlldCBoYXZlIGJlZW4gY2FsbGVkIGEgc2Vjb25k
IHRpbWUgZXhwZWN0ZWQgMSBidXQgZ290IDAKIFBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBu
b3QgY2FsbCBwdWxsIGFmdGVyIHN0YXJ0IGlmIHRoZSBzdHJlYW0gaXMgbm93IGNsb3NlZCAKIEZB
SUwgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwgYWZ0ZXIgZW5xdWV1ZWluZyBmcm9t
IGluc2lkZSBwdWxsICh3aXRoIG5vIHJlYWQgcmVxdWVzdHMpLCBpZiBzdHJhdGVneSBhbGxvd3Mg
YXNzZXJ0X2VxdWFsczogcHVsbCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGZvdXIgdGltZXMg
ZXhwZWN0ZWQgNCBidXQgZ290IDAKIFRJTUVPVVQgUmVhZGFibGVTdHJlYW0gcHVsbCBzaG91bGQg
YmUgYWJsZSB0byBjbG9zZSBhIHN0cmVhbS4gVGVzdCB0aW1lZCBvdXQKLUZBSUwgUmVhZGFibGVT
dHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyByZWFkYWJsZSBi
dXQgZHJhaW5pbmcgYXNzZXJ0X2VxdWFsczogdGhlIGZpcnN0IGVucXVldWUgc2hvdWxkIHJldHVy
biB0cnVlIGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQotRkFJTCBSZWFkYWJsZVN0cmVhbTog
ZW5xdWV1ZSBzaG91bGQgdGhyb3cgd2hlbiB0aGUgc3RyZWFtIGlzIGNsb3NlZCBhc3NlcnRfdGhy
b3dzOiBlbnF1ZXVlIGFmdGVyIGNsb3NlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciBmdW5jdGlv
biAiZnVuY3Rpb24gKCkgeyBjLmVucXVldWUoJ2EnKTsgfSIgZGlkIG5vdCB0aHJvdwotRkFJTCBS
ZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgdGhlIHN0b3JlZCBlcnJvciB3aGVu
IHRoZSBzdHJlYW0gaXMgZXJyb3JlZCBhc3NlcnRfdGhyb3dzOiBlbnF1ZXVlIGFmdGVyIGVycm9y
IHNob3VsZCB0aHJvdyB0aGF0IGVycm9yIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IGMuZW5xdWV1
ZSgnYScpOyB9IiBkaWQgbm90IHRocm93Ci1USU1FT1VUIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQg
Y2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2RzIGFzIG1ldGhvZHMgVGVzdCB0aW1lZCBvdXQK
LUZBSUwgUmVhZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hv
dWxkIHJldHVybiBmYWxzZSBmb3IgYWxsIGJ1dCB0aGUgZmlyc3QgZW5xdWV1ZSBjYWxsIGFzc2Vy
dF9lcXVhbHM6IGZpcnN0IGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVlIGV4cGVjdGVkIHRydWUg
YnV0IGdvdCBmYWxzZQotRkFJTCBSZWFkYWJsZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVs
dCBzdHJhdGVneSBzaG91bGQgY29udGludWUgcmV0dXJuaW5nIHRydWUgZnJvbSBlbnF1ZXVlIGlm
IHRoZSBjaHVua3MgYXJlIHJlYWQgaW1tZWRpYXRlbHkgYXNzZXJ0X2VxdWFsczogZmlyc3QgZW5x
dWV1ZSBzaG91bGQgcmV0dXJuIHRydWUgZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCitGQUlM
IFJlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJlYW0gaXMg
cmVhZGFibGUgYnV0IGRyYWluaW5nIGFzc2VydF9lcXVhbHM6IHRoZSBmaXJzdCBlbnF1ZXVlIHNo
b3VsZCByZXR1cm4gdHJ1ZSBleHBlY3RlZCAoYm9vbGVhbikgdHJ1ZSBidXQgZ290ICh1bmRlZmlu
ZWQpIHVuZGVmaW5lZAorUEFTUyBSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cg
d2hlbiB0aGUgc3RyZWFtIGlzIGNsb3NlZCAKK1BBU1MgUmVhZGFibGVTdHJlYW06IGVucXVldWUg
c2hvdWxkIHRocm93IHRoZSBzdG9yZWQgZXJyb3Igd2hlbiB0aGUgc3RyZWFtIGlzIGVycm9yZWQg
CitGQUlMIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRo
b2RzIGFzIG1ldGhvZHMgcmVsZWFzZUxvY2sgaXMgbm90IGltcGxlbWVudGVkCitGQUlMIFJlYWRh
YmxlU3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCByZXR1cm4g
ZmFsc2UgZm9yIGFsbCBidXQgdGhlIGZpcnN0IGVucXVldWUgY2FsbCBhc3NlcnRfZXF1YWxzOiBm
aXJzdCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZSBleHBlY3RlZCAoYm9vbGVhbikgdHJ1ZSBi
dXQgZ290ICh1bmRlZmluZWQpIHVuZGVmaW5lZAorRkFJTCBSZWFkYWJsZVN0cmVhbSBzdHJhdGVn
aWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgY29udGludWUgcmV0dXJuaW5nIHRydWUg
ZnJvbSBlbnF1ZXVlIGlmIHRoZSBjaHVua3MgYXJlIHJlYWQgaW1tZWRpYXRlbHkgYXNzZXJ0X2Vx
dWFsczogZmlyc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUgZXhwZWN0ZWQgKGJvb2xlYW4p
IHRydWUgYnV0IGdvdCAodW5kZWZpbmVkKSB1bmRlZmluZWQKIFRJTUVPVVQgUmVhZGFibGVTdHJl
YW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYSByYW5kb20gcHVzaCBzb3VyY2UgVGVzdCB0
aW1lZCBvdXQKIFRJTUVPVVQgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRp
bmcgYSBzeW5jIHB1bGwgc291cmNlIFRlc3QgdGltZWQgb3V0CiBUSU1FT1VUIFJlYWRhYmxlU3Ry
ZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGFuIGFzeW5jIHB1bGwgc291cmNlIFRlc3Qg
dGltZWQgb3V0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFk
ZXItZXhwZWN0ZWQudHh0CmluZGV4IDA3YzVkNzQwOGJmZDY2MmM5NGNmZWZkOTA4MDg0NWFiYWRi
YzY3YTkuLmUwMDAxODQyZTM5OTlhMjIzM2E1NzQzYWRkOGI0YTBlYzA0ODM1YTMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxl
LXN0cmVhbS1yZWFkZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVm
ZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItZXhwZWN0ZWQudHh0
CkBAIC05LDcgKzksNyBAQCBQQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVy
IGRpcmVjdGx5IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYQogUEFTUyBHZXR0aW5nIGEg
UmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdldFJlYWRlciBzaG91bGQgZmFpbCBpZiB0aGUgc3Ry
ZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0IGdldFJlYWRlcikgCiBQQVNTIENvbnN0
cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0
aGUgc3RyZWFtIGlzIGNsb3NlZCAKIFBBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1S
ZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgZXJyb3JlZCAKLVRJ
TUVPVVQgUmVhZGluZyBmcm9tIGEgcmVhZGVyIGZvciBhbiBlbXB0eSBzdHJlYW0gd2lsbCB3YWl0
IHVudGlsIGEgY2h1bmsgaXMgYXZhaWxhYmxlIFRlc3QgdGltZWQgb3V0CitQQVNTIFJlYWRpbmcg
ZnJvbSBhIHJlYWRlciBmb3IgYW4gZW1wdHkgc3RyZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNodW5r
IGlzIGF2YWlsYWJsZSAKIEZBSUwgY2FuY2VsKCkgb24gYSByZWFkZXIgcmVsZWFzZXMgdGhlIHJl
YWRlciBiZWZvcmUgY2FsbGluZyB0aHJvdWdoIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIFBB
U1MgY2xvc2VkIHNob3VsZCBiZSBmdWxmaWxsZWQgYWZ0ZXIgc3RyZWFtIGlzIGNsb3NlZCAoLmNs
b3NlZCBhY2Nlc3MgYmVmb3JlIGFjcXVpcmluZykgCiBGQUlMIGNsb3NlZCBzaG91bGQgYmUgZnVs
ZmlsbGVkIGFmdGVyIHJlYWRlciByZWxlYXNlcyBpdHMgbG9jayAobXVsdGlwbGUgc3RyZWFtIGxv
Y2tzKSByZWxlYXNlTG9jayBpcyBub3QgaW1wbGVtZW50ZWQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFk
ZXIuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3Jl
YWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRtbAppbmRleCA4MTNlMDFlZDQ1YTVlYWQ1MWU5YWQxODE3
MTVlZjg0ZmE0MWJiZTA0Li4zNTgzNDNhZTQyOWI0NjBkYjVkMmFmODMxYjFjMzZkYTdhZjdjZTg5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlv
bi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9y
ZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci5odG1sCkBAIC0x
MDcsNyArMTA3LDcgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICBuZXcgUmVhZGFibGVTdHJlYW1S
ZWFkZXIocnMpOyAvLyBDb25zdHJ1Y3RpbmcgZGlyZWN0bHkgc2hvdWxkIG5vdCB0aHJvdy4KIH0s
ICdDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUg
T0sgaWYgdGhlIHN0cmVhbSBpcyBlcnJvcmVkJyk7CiAKLXZhciB0ZXN0MSA9IGFzeW5jX3Rlc3Qo
J1JlYWRpbmcgZnJvbSBhIHJlYWRlciBmb3IgYW4gZW1wdHkgc3RyZWFtIHdpbGwgd2FpdCB1bnRp
bCBhIGNodW5rIGlzIGF2YWlsYWJsZScsIHsgdGltZW91dDogNTAgfSk7Cit2YXIgdGVzdDEgPSBh
c3luY190ZXN0KCdSZWFkaW5nIGZyb20gYSByZWFkZXIgZm9yIGFuIGVtcHR5IHN0cmVhbSB3aWxs
IHdhaXQgdW50aWwgYSBjaHVuayBpcyBhdmFpbGFibGUnKTsKIHRlc3QxLnN0ZXAoZnVuY3Rpb24o
KSB7CiAgICAgdmFyIGNvbnRyb2xsZXI7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0
aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
c3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRl
ZC1leHBlY3RlZC50eHQKaW5kZXggM2U4YzJjMWVmZWJkZDFkMTc4MjhmYzUwZDc5YzViZTY5YjI3
N2Q5ZS4uZDYxYmM5MGMzYjNlZjcyODc2ODczN2E1YTczM2IzYWYxN2MyYjBiYSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUt
c3RyZWFtLXRlbXBsYXRlZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9y
ZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC1leHBlY3Rl
ZC50eHQKQEAgLTMwLDEzICszMCwxMyBAQCBGQUlMIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBk
aXN0aW5jdCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZSBjYW5jZWwgaXMgbm90CiBGQUlMIHJl
YWRlciBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBl
YWNoIHRpbWUgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogUEFTUyBzaG91bGQgYmUgYWJsZSB0
byBhY3F1aXJlIG11bHRpcGxlIHJlYWRlcnMsIHNpbmNlIHRoZXkgYXJlIGFsbCBhdXRvLXJlbGVh
c2VkIAogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTVHdvQ2h1bmtzT3BlblJlYWRlciB3aXRoIFJl
YWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCBzdGlsbCBvcGVuKSByZWFkZXIgCi1U
SU1FT1VUIGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3aWxsIGV2ZW50dWFs
bHkgZ2l2ZSBib3RoIGNodW5rcyBUZXN0IHRpbWVkIG91dAotVElNRU9VVCBjYWxsaW5nIHJlYWQo
KSB0d2ljZSB3aXRoIHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MgVGVz
dCB0aW1lZCBvdXQKK1BBU1MgY2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0aG91dCB3YWl0aW5nIHdp
bGwgZXZlbnR1YWxseSBnaXZlIGJvdGggY2h1bmtzIAorUEFTUyBjYWxsaW5nIHJlYWQoKSB0d2lj
ZSB3aXRoIHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MgCiBQQVNTIHJl
YWQoKSBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzIGVhY2ggdGltZSAKIEZBSUwgY2Fu
Y2VsKCkgYWZ0ZXIgYSByZWFkKCkgc2hvdWxkIHN0aWxsIGdpdmUgdGhhdCBzaW5nbGUgcmVhZCBy
ZXN1bHQgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJT
VHdvQ2h1bmtzQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5x
dWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXIgCi1GQUlMIHRoaXJkIHJlYWQoKSwgd2l0aG91dCB3
YWl0aW5nLCBzaG91bGQgZ2l2ZSB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSBhc3Nl
cnRfb2JqZWN0X2VxdWFsczogZmlyc3QgcmVzdWx0IHNob3VsZCBiZSBjb3JyZWN0IHByb3BlcnR5
ICJkb25lIiBleHBlY3RlZCBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIgZ290IG9iamVjdCAiW29i
amVjdCBPYmplY3RdIgotRkFJTCB0aGlyZCByZWFkLCB3aXRoIHdhaXRpbmcsIHNob3VsZCBnaXZl
IHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IGFzc2VydF9vYmplY3RfZXF1YWxzOiBm
aXJzdCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QgcHJvcGVydHkgImRvbmUiIGV4cGVjdGVkIG9i
amVjdCAiW29iamVjdCBPYmplY3RdIiBnb3Qgb2JqZWN0ICJbb2JqZWN0IE9iamVjdF0iCitQQVNT
IHRoaXJkIHJlYWQoKSwgd2l0aG91dCB3YWl0aW5nLCBzaG91bGQgZ2l2ZSB7IHZhbHVlOiB1bmRl
ZmluZWQsIGRvbmU6IHRydWUgfSAKK1BBU1MgdGhpcmQgcmVhZCwgd2l0aCB3YWl0aW5nLCBzaG91
bGQgZ2l2ZSB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKIFBBU1MgZHJhaW5pbmcg
dGhlIHN0cmVhbSB2aWEgcmVhZCgpIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIGNsb3NlZCBwcm9t
aXNlIHRvIGZ1bGZpbGwgCiBGQUlMIHJlbGVhc2luZyB0aGUgbG9jayBhZnRlciB0aGUgc3RyZWFt
IGlzIGNsb3NlZCBzaG91bGQgZG8gbm90aGluZyByZWxlYXNlTG9jayBpcyBub3QgaW1wbGVtZW50
ZWQKIEZBSUwgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSByZWFkKCkgdG8gYWN0IGFz
IGlmIHRoZSBzdHJlYW0gaXMgY2xvc2VkIHJlbGVhc2VMb2NrIGlzIG5vdCBpbXBsZW1lbnRlZApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24v
cmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZl
cmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC5odG1sCmluZGV4
IGFjMmM0YzI4ODZiN2E2M2M5ZjA3NDVjZTUxNGViMTAxMDg1OTY0NjkuLjc2YTM3NzhhY2Q3Y2M4
Njc0M2I1MzY1YzFjZmU5NjQzODc5NzU1YzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVh
bXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFk
YWJsZS1zdHJlYW0tdGVtcGxhdGVkLmh0bWwKQEAgLTM2OSw3ICszNjksNyBAQCBmdW5jdGlvbiB0
ZW1wbGF0ZWRSU1R3b0NodW5rc09wZW5SZWFkZXIobGFiZWwsIGZhY3RvcnksIGNodW5rcykgewog
ICAgIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgfSwgJ1J1bm5pbmcgdGVtcGxhdGVkUlNUd29DaHVu
a3NPcGVuUmVhZGVyIHdpdGggJyArIGxhYmVsKTsKIAotICAgIHZhciB0ZXN0MSA9IGFzeW5jX3Rl
c3QoJ2NhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkg
Z2l2ZSBib3RoIGNodW5rcycsIHsgdGltZW91dDogNTAgfSk7CisgICAgdmFyIHRlc3QxID0gYXN5
bmNfdGVzdCgnY2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0aG91dCB3YWl0aW5nIHdpbGwgZXZlbnR1
YWxseSBnaXZlIGJvdGggY2h1bmtzJyk7CiAgICAgdGVzdDEuc3RlcChmdW5jdGlvbigpIHsKICAg
ICAgICAgdmFyIHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7CiAgICAgICAgIHZhciBwcm9taXNlQ291
bnQgPSAwOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVt
ZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVy
ZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbAppbmRleCAxNmNlOGM0YWU0
NDkzMzE3ZDMyN2NmOTE4YjRjZjQ5MDk2MTU4ZDU4Li5lYWIxZjA5ZjM5MDJiYzhiNjZlMDE5MDBm
MjZmYjU5MWFkMzk2ZDhmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5j
ZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9z
dHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbApAQCAt
MzY4LDcgKzM2OCw3IEBAIHRlc3Q0LnN0ZXAoZnVuY3Rpb24oKSB7CiAvLyAgICAgfSksIHN0YW5k
YXJkVGltZW91dCk7CiAvLyB9KTsKIAotdmFyIHRlc3QxMSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxl
U3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCB1bnRpbCB0aGUgcHJldmlvdXMgcHVsbCBjYWxs
XCdzIHByb21pc2UgZnVsZmlsbHMnLCB7IHRpbWVvdXQ6IDUwIH0pOwordmFyIHRlc3QxMSA9IGFz
eW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCB1bnRpbCB0aGUg
cHJldmlvdXMgcHVsbCBjYWxsXCdzIHByb21pc2UgZnVsZmlsbHMnKTsKIHRlc3QxMS5zdGVwKGZ1
bmN0aW9uKCkgewogICAgIHZhciByZXNvbHZlOwogICAgIHZhciByZXR1cm5lZFByb21pc2U7CkBA
IC01NjUsNyArNTY1LDcgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICB9KTsKIH0sICdSZWFkYWJs
ZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgdGhlIHN0b3JlZCBlcnJvciB3aGVuIHRoZSBz
dHJlYW0gaXMgZXJyb3JlZCcpOwogCi12YXIgdGVzdDE2ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVT
dHJlYW06IHNob3VsZCBjYWxsIHVuZGVybHlpbmcgc291cmNlIG1ldGhvZHMgYXMgbWV0aG9kcycs
IHsgdGltZW91dDogNTAgfSk7Cit2YXIgdGVzdDE2ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJl
YW06IHNob3VsZCBjYWxsIHVuZGVybHlpbmcgc291cmNlIG1ldGhvZHMgYXMgbWV0aG9kcycpOwog
dGVzdDE2LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHN0YXJ0Q2FsbGVkID0gMDsKICAgICB2
YXIgcHVsbENhbGxlZCA9IDA7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>