<?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>66362</bug_id>
          
          <creation_ts>2011-08-16 22:49:53 -0700</creation_ts>
          <short_desc>[WebSocket] CloseEvent&apos;s code and reason properties support</short_desc>
          <delta_ts>2011-08-19 03:17:29 -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>All</rep_platform>
          <op_sys>All</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>66294</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Takashi Toyoshima">toyoshim</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>452138</commentid>
    <comment_count>0</comment_count>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-08-16 22:49:53 -0700</bug_when>
    <thetext>I took over this work from yutak.

Current WebSocket implementation miss CloseEvent&apos;s code and reason properties handling for updated WebSocket API.
First, I make changes to show incoming closing frame&apos;s code and reason as a CloseEvent&apos;s properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452175</commentid>
    <comment_count>1</comment_count>
      <attachid>104158</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-08-17 02:11:20 -0700</bug_when>
    <thetext>Created attachment 104158
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452176</commentid>
    <comment_count>2</comment_count>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-08-17 02:13:40 -0700</bug_when>
    <thetext>Current patch includes 66294, so I didn&apos;t set commit-queue flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452885</commentid>
    <comment_count>3</comment_count>
      <attachid>104158</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-18 00:35:08 -0700</bug_when>
    <thetext>Comment on attachment 104158
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        Current WebSocket implementation miss code and reason properties
&gt; +        in CloseEvent. This change expose incoming closing frame&apos;s code
&gt; +        and reason to JavaScript API.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=66362
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Tests: http/tests/websocket/tests/hybi/close-code-and-reason.html
&gt; +               http/tests/websocket/tests/hybi/workers/close-code-and-reason.html

The ChangeLog format should be:
  &lt;summary&gt;
  &lt;bug URL&gt;

  Reviewed by ...

  &lt;Details&gt;

  Tests: ...

&gt; Source/WebCore/ChangeLog:38
&gt; +        * websockets/CloseEvent.h:
&gt; +        (WebCore::CloseEvent::create):
&gt; +        (WebCore::CloseEvent::initCloseEvent):
&gt; +        (WebCore::CloseEvent::code):
&gt; +        (WebCore::CloseEvent::reason):
&gt; +        (WebCore::CloseEvent::CloseEvent):
&gt; +        * websockets/CloseEvent.idl:
&gt; +        * websockets/ThreadableWebSocketChannelClientWrapper.cpp:
&gt; +        (WebCore::ThreadableWebSocketChannelClientWrapper::didClose):
&gt; +        (WebCore::ThreadableWebSocketChannelClientWrapper::didCloseCallback):
&gt; +        * websockets/ThreadableWebSocketChannelClientWrapper.h:
&gt; +        * websockets/WebSocket.cpp:
&gt; +        (WebCore::WebSocket::didConnect):
&gt; +        (WebCore::WebSocket::didClose):
&gt; +        * websockets/WebSocket.h:
&gt; +        * websockets/WebSocketChannel.cpp:
&gt; +        (WebCore::WebSocketChannel::WebSocketChannel):
&gt; +        (WebCore::WebSocketChannel::didCloseSocketStream):
&gt; +        (WebCore::WebSocketChannel::processFrame):
&gt; +        * websockets/WebSocketChannel.h:
&gt; +        * websockets/WebSocketChannelClient.h:
&gt; +        (WebCore::WebSocketChannelClient::didClose):
&gt; +        * websockets/WorkerThreadableWebSocketChannel.cpp:
&gt; +        (WebCore::workerContextDidClose):
&gt; +        (WebCore::WorkerThreadableWebSocketChannel::Peer::didClose):
&gt; +        * websockets/WorkerThreadableWebSocketChannel.h:

Write what is changed as possible.

&gt; Source/WebCore/websockets/WebSocket.cpp:381
&gt; +        didClose(0, ClosingHandshakeIncomplete, 0, &quot;&quot;);

What does this &apos;0&apos;  mean?

&gt; Source/WebCore/websockets/WebSocketChannel.cpp:101
&gt; +    , m_closeEventCode(1005) // Indicate that no status code was actually present.

No test for 1005.
We prefer symbols to comments. We should define a const variable or an enum value for 1005, and remove the comment.

&gt; Source/WebCore/websockets/WebSocketChannel.cpp:632
&gt; +            if (frame.payloadLength &gt;= 3)
&gt; +                m_closeEventReason = String::fromUTF8(&amp;frame.payload[2], frame.payloadLength - 2);

Question: Should we clear m_closeEventReason if frame.payloadLength &lt; 3?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453701</commentid>
    <comment_count>4</comment_count>
      <attachid>104475</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-08-19 01:45:55 -0700</bug_when>
    <thetext>Created attachment 104475
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453710</commentid>
    <comment_count>5</comment_count>
      <attachid>104478</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-08-19 02:04:34 -0700</bug_when>
    <thetext>Created attachment 104478
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453712</commentid>
    <comment_count>6</comment_count>
      <attachid>104478</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-19 02:14:39 -0700</bug_when>
    <thetext>Comment on attachment 104478
Patch

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

Looks ok.

&gt; Source/WebCore/ChangeLog:30
&gt; +        Add implement to handle code and reason.

nit: implement -&gt; implementation ?

&gt; Source/WebCore/ChangeLog:43
&gt; +        Add implement to handle code and reason.

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453726</commentid>
    <comment_count>7</comment_count>
      <attachid>104478</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-19 03:17:24 -0700</bug_when>
    <thetext>Comment on attachment 104478
Patch

Clearing flags on attachment: 104478

Committed r93393: &lt;http://trac.webkit.org/changeset/93393&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453727</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-19 03:17:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104158</attachid>
            <date>2011-08-17 02:11:20 -0700</date>
            <delta_ts>2011-08-19 01:45:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66362-20110817181118.patch</filename>
            <type>text/plain</type>
            <size>27791</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMwODEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxNzlhNjBkYjk2YzY1YzM2YjNkZGM3
NmQzNzEzYzAxZDVhOWUyOWI3Li5lZWM5NzcxODQ2NmNmNGEzZDA5NTI2MGRhMTU3NTAwYzQ0ZGMy
YTViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDgtMTcgIFRha2FzaGkgVG95b3NoaW1h
ICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEN1cnJlbnQgV2ViU29ja2V0IGlt
cGxlbWVudGF0aW9uIG1pc3MgY29kZSBhbmQgcmVhc29uIHByb3BlcnRpZXMKKyAgICAgICAgaW4g
Q2xvc2VFdmVudC4gVGhpcyBjaGFuZ2UgZXhwb3NlIGluY29taW5nIGNsb3NpbmcgZnJhbWUncyBj
b2RlCisgICAgICAgIGFuZCByZWFzb24gdG8gSmF2YVNjcmlwdCBBUEkuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjM2MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9jbG9zZS1jb2RlLWFuZC1yZWFzb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLWNvZGUtYW5kLXJl
YXNvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2Nsb3NlLWNvZGUtYW5kLXJlYXNvbl93c2gucHk6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS1jb2RlLWFuZC1yZWFzb24t
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL3dvcmtlcnMvY2xvc2UtY29kZS1hbmQtcmVhc29uLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvY2xv
c2UtY29kZS1hbmQtcmVhc29uLmpzOiBBZGRlZC4KKyAgICAgICAgKHBvc3RSZXN1bHQpOgorICAg
ICAgICAod3Mub25vcGVuKToKKyAgICAgICAgKHdzLm9ubWVzc2FnZSk6CisgICAgICAgICh3cy5v
bmNsb3NlKToKKwogMjAxMS0wOC0xNSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBh
cHBsZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY2MjYzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL2Nsb3NlLWNvZGUtYW5kLXJlYXNvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLWNvZGUtYW5kLXJlYXNvbi1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmNiMzk3ZDA2ZTJmZWUyODgxYjJjNjdlNjc0NjMwZjA1
YzQ4YjdkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvY2xvc2UtY29kZS1hbmQtcmVhc29uLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE1IEBACitUZXN0IENsb3NlRXZlbnQgY29kZSBhbmQgcmVhc29uIHByb3BlcnR5LgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK29ub3BlbigpIHdhcyBjYWxsZWQuCitvbmNsb3Nl
KCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIGNs
b3NlRXZlbnQuY29kZSBpcyA2NTUzNQorUEFTUyBjbG9zZUV2ZW50LnJlYXNvbiBpcyAiZ29vZCBi
eWUiCitQQVNTIGNsb3NlRXZlbnQuY29kZSBpcyA2NTUzNQorUEFTUyBjbG9zZUV2ZW50LnJlYXNv
biBpcyAiZ29vZCBieWUiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9jbG9zZS1jb2RlLWFuZC1yZWFzb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2UtY29kZS1hbmQtcmVhc29uLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDYxM2Q5ZWY1ZDMzNTgzOTk3MjkxMTg2NThlNGMwYjMwMjNiMDZlNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
Y2xvc2UtY29kZS1hbmQtcmVhc29uLmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBFIEhU
TUw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCBDbG9zZUV2ZW50IGNv
ZGUgYW5kIHJlYXNvbiBwcm9wZXJ0eS4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVu
YWJsZWQiLCAwKTsKKwordmFyIHdzID0gbmV3IFdlYlNvY2tldCgid3M6Ly8xMjcuMC4wLjE6ODg4
MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZS1jb2RlLWFuZC1yZWFzb24iKTsKK3ZhciBjbG9z
ZUV2ZW50OworCit3cy5vbm9wZW4gPSBmdW5jdGlvbigpCit7CisgICAgZGVidWcoIm9ub3Blbigp
IHdhcyBjYWxsZWQuIik7CisgICAgd3Muc2VuZCgiNjU1MzUgZ29vZCBieWUiKTsKK307CisKK3dz
Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIHRlc3RGYWlsZWQoIm9ubWVzc2Fn
ZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0gXCIiICsgZXZlbnQuZGF0YSArICJcIikiKTsKK307
CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBkZWJ1Zygib25jbG9zZSgp
IHdhcyBjYWxsZWQuIik7CisgICAgY2xvc2VFdmVudCA9IGV2ZW50OworICAgIHNob3VsZEJlVHJ1
ZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgIHNob3VsZEJlKCJjbG9zZUV2ZW50LmNvZGUi
LCAiNjU1MzUiKTsKKyAgICBzaG91bGRCZSgiY2xvc2VFdmVudC5yZWFzb24iLCAiXCJnb29kIGJ5
ZVwiIik7CisgICAgY2xvc2VFdmVudC5jb2RlID0gMDsKKyAgICBjbG9zZUV2ZW50LnJlYXNvbiA9
ICJyZWFkb25seSI7CisgICAgc2hvdWxkQmUoImNsb3NlRXZlbnQuY29kZSIsICI2NTUzNSIpOwor
ICAgIHNob3VsZEJlKCJjbG9zZUV2ZW50LnJlYXNvbiIsICJcImdvb2QgYnllXCIiKTsKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK307CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2UtY29kZS1hbmQtcmVh
c29uX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
Y2xvc2UtY29kZS1hbmQtcmVhc29uX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDNhZTg2YTlmNzYwNzgz
N2IwM2YxZWEzOGZhOTBlMzQzMWIxNTU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZS1jb2RlLWFuZC1yZWFzb25fd3No
LnB5CkBAIC0wLDAgKzEsMTYgQEAKK2ltcG9ydCBzdHJ1Y3QKKworZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQgaW1wb3J0IHN0cmVhbQorCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVx
dWVzdCk6CisgICAgcGFzcworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3Qp
OgorICAgIGxpbmUgPSByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQorICAgIGlm
IGxpbmUgaXMgTm9uZToKKyAgICAgICAgcmV0dXJuCisgICAgY29kZSwgcmVhc29uID0gbGluZS5z
cGxpdCgnICcsIDEpCisgICAgaWYgY29kZSBpcyBOb25lIG9yIHJlYXNvbiBpcyBOb25lOgorICAg
ICAgICByZXR1cm4KKyAgICBkYXRhID0gc3RydWN0LnBhY2soJyFIJywgaW50KGNvZGUpKSArIHJl
YXNvbi5lbmNvZGUoJ3V0Zi04JykKKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoc3RyZWFt
LmNyZWF0ZV9jbG9zZV9mcmFtZShkYXRhKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS1jb2RlLWFuZC1yZWFzb24t
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS93b3JrZXJzL2Nsb3NlLWNvZGUtYW5kLXJlYXNvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Nzg1MjNjYjQzODlkOWJkNjQzNDA3OWY0NDc1ZDVkNmI5ZmYyY2RhOAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9j
bG9zZS1jb2RlLWFuZC1yZWFzb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1Rlc3Qg
Q2xvc2VFdmVudCBjb2RlIGFuZCByZWFzb24gcHJvcGVydHkgaW4gV29ya2VyLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgUEFTUzogd29ya2VyOiBvbm9wZW4oKSB3YXMgY2Fs
bGVkLgorUEFTUyBQQVNTOiB3b3JrZXI6IG9uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBQQVNT
OiB3b3JrZXI6IGV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1BBU1MgUEFTUzogd29ya2VyOiBldmVu
dC5jb2RlIGlzIDY1NTM1CitQQVNTIFBBU1M6IHdvcmtlcjogZXZlbnQucmVhc29uIGlzICJnb29k
IGJ5ZSIKK1BBU1MgUEFTUzogd29ya2VyOiBldmVudC5jb2RlIGlzIDY1NTM1CitQQVNTIFBBU1M6
IHdvcmtlcjogZXZlbnQucmVhc29uIGlzICJnb29kIGJ5ZSIKK0RPTkUKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtY29kZS1h
bmQtcmVhc29uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3dvcmtlcnMvY2xvc2UtY29kZS1hbmQtcmVhc29uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2ZmMjg3
Y2UwMmRlNThlMWM1Yzg0MDZhZGVjMGVkYWQ5MjlhNDVmNgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS1j
b2RlLWFuZC1yZWFzb24uaHRtbApAQCAtMCwwICsxLDQwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uLy4u
L2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRp
b24oIlRlc3QgQ2xvc2VFdmVudCBjb2RlIGFuZCByZWFzb24gcHJvcGVydHkgaW4gV29ya2VyLiIp
OworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgi
V2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworCitmdW5jdGlvbiBz
dGFydHNXaXRoKHN0ciwgcHJlZml4KQoreworICAgIHJldHVybiBzdHIuaW5kZXhPZihwcmVmaXgp
ID09IDA7Cit9CisKK3ZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCJyZXNvdXJjZXMvY2xvc2UtY29k
ZS1hbmQtcmVhc29uLmpzIik7Cit3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2ZW50KQor
eworICAgIHZhciBtZXNzYWdlID0gZXZlbnQuZGF0YTsKKyAgICBpZiAoc3RhcnRzV2l0aChtZXNz
YWdlLCAiUEFTUyIpKQorICAgICAgICB0ZXN0UGFzc2VkKG1lc3NhZ2UpOworICAgIGVsc2UgaWYg
KHN0YXJ0c1dpdGgobWVzc2FnZSwgIkZBSUwiKSkKKyAgICAgICAgdGVzdEZhaWxlZChtZXNzYWdl
KQorICAgIGVsc2UKKyAgICAgICAgZGVidWcobWVzc2FnZSk7CisgICAgaWYgKG1lc3NhZ2UgPT09
ICJET05FIikKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cit9OworCit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2pz
LXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3dvcmtlcnMvcmVzb3VyY2VzL2Nsb3NlLWNvZGUtYW5kLXJlYXNvbi5qcyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvY2xv
c2UtY29kZS1hbmQtcmVhc29uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwODFjYzE4YmU2YjRmYTNiNjlkODFk
NWM2NzZmZGY1NTIyM2IzMGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL2Nsb3NlLWNvZGUtYW5k
LXJlYXNvbi5qcwpAQCAtMCwwICsxLDMyIEBACitmdW5jdGlvbiBwb3N0UmVzdWx0KHJlc3VsdCwg
YWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICB2YXIgbWVzc2FnZSA9IHJlc3VsdCA/ICJQQVNTIiA6
ICJGQUlMIjsKKyAgICBtZXNzYWdlICs9ICI6IHdvcmtlcjogIiArIGFjdHVhbCArICIgaXMgIjsK
KyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgbWVzc2FnZSArPSAibm90ICI7CisgICAgbWVzc2Fn
ZSArPSBleHBlY3RlZDsKKyAgICBwb3N0TWVzc2FnZShtZXNzYWdlKTsKK30KKwordmFyIHdzID0g
bmV3IFdlYlNvY2tldCgid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9j
bG9zZS1jb2RlLWFuZC1yZWFzb24iKTsKKword3Mub25vcGVuID0gZnVuY3Rpb24oKSB7CisgICAg
cG9zdE1lc3NhZ2UoIlBBU1M6IHdvcmtlcjogb25vcGVuKCkgd2FzIGNhbGxlZC4iKTsKKyAgICB3
cy5zZW5kKCI2NTUzNSBnb29kIGJ5ZSIpOworfTsKKword3Mub25tZXNzYWdlID0gZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICBwb3N0TWVzc2FnZSgiRkFJTDogd29ya2VyOiBvbm1lc3NhZ2UoKSB3YXMg
Y2FsbGVkLiAobWVzc2FnZSA9IFwiIiArIGV2ZW50LmRhdGEgKyAiXCIpIik7Cit9OworCit3cy5v
bmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBwb3N0TWVzc2FnZSgiUEFTUzogd29ya2Vy
OiBvbmNsb3NlKCkgd2FzIGNhbGxlZC4iKTsKKyAgICBwb3N0UmVzdWx0KGV2ZW50Lndhc0NsZWFu
LCAiZXZlbnQud2FzQ2xlYW4iLCAidHJ1ZSIpOworICAgIHBvc3RSZXN1bHQoZXZlbnQuY29kZSA9
PSA2NTUzNSwgImV2ZW50LmNvZGUiLCAiNjU1MzUiKTsKKyAgICBwb3N0UmVzdWx0KGV2ZW50LnJl
YXNvbiA9PSAiZ29vZCBieWUiLCAiZXZlbnQucmVhc29uIiwgIlwiZ29vZCBieWVcIiIpOworICAg
IGV2ZW50LmNvZGUgPSAwOworICAgIGV2ZW50LnJlYXNvbiA9ICJyZWFkb25seSI7CisgICAgcG9z
dFJlc3VsdChldmVudC5jb2RlID09IDY1NTM1LCAiZXZlbnQuY29kZSIsICI2NTUzNSIpOworICAg
IHBvc3RSZXN1bHQoZXZlbnQucmVhc29uID09ICJnb29kIGJ5ZSIsICJldmVudC5yZWFzb24iLCAi
XCJnb29kIGJ5ZVwiIik7CisgICAgcG9zdE1lc3NhZ2UoIkRPTkUiKTsKK307CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggNjBlOGZjNTMxMzk4YjJjZGI2YzA5OGJmOTYwYWE3Mzc5YTg4YmJlYS4uMTU2MjQ4OGVhM2Zl
M2U1ZjViODI5M2U0MTgyMGU1YzhjYjFjNmU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBA
CisyMDExLTA4LTE3ICBUYWthc2hpIFRveW9zaGltYSAgPHRveW9zaGltQGNocm9taXVtLm9yZz4K
KworICAgICAgICBDdXJyZW50IFdlYlNvY2tldCBpbXBsZW1lbnRhdGlvbiBtaXNzIGNvZGUgYW5k
IHJlYXNvbiBwcm9wZXJ0aWVzCisgICAgICAgIGluIENsb3NlRXZlbnQuIFRoaXMgY2hhbmdlIGV4
cG9zZSBpbmNvbWluZyBjbG9zaW5nIGZyYW1lJ3MgY29kZQorICAgICAgICBhbmQgcmVhc29uIHRv
IEphdmFTY3JpcHQgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjYzNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUZXN0czogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZS1jb2Rl
LWFuZC1yZWFzb24uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS93b3JrZXJzL2Nsb3NlLWNvZGUtYW5kLXJlYXNvbi5odG1sCisKKyAgICAgICAgKiB3
ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb3NlRXZlbnQ6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbG9zZUV2ZW50Ojppbml0Q2xvc2VFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDbG9zZUV2ZW50Ojpjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNs
b3NlRXZlbnQ6OnJlYXNvbik6CisgICAgICAgIChXZWJDb3JlOjpDbG9zZUV2ZW50OjpDbG9zZUV2
ZW50KToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaWRsOgorICAgICAgICAqIHdl
YnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6
ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyOjpkaWRDbG9zZUNhbGxiYWNrKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1Ro
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oOgorICAgICAgICAqIHdlYnNv
Y2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlkQ29u
bmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZENsb3NlKToKKyAgICAgICAg
KiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpXZWJTb2Nr
ZXRDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZENsb3Nl
U29ja2V0U3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nl
c3NGcmFtZSk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAg
ICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRDaGFubmVsQ2xpZW50OjpkaWRDbG9zZSk6CisgICAgICAgICogd2Vic29j
a2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp3b3JrZXJDb250ZXh0RGlkQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZENsb3NlKToKKyAgICAgICAgKiB3ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisKIDIwMTEtMDgtMTUg
IEplZmZyZXkgUGZhdSAgPGpwZmF1QGFwcGxlLmNvbT4KIAogICAgICAgICBOZXcgWE1MIHBhcnNl
cjogYWRkIHhtbCBuYW1lc3BhY2UgdG8gdGhlIGRlZmF1bHQgbWFwIG9mIG5hbWVzcGFjZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5oIGIvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9DbG9zZUV2ZW50LmgKaW5kZXggZmViM2I2ZTBkNDRmN2I3OTRh
YTNkNWVjZTQ4ZWRiYzc2NTY2ZWI4NC4uOWJmMjU5Y2Q1YzQ4NWVmYTgzOWVkOTQyMzE5MDNkNWNk
ZGZiZTczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9DbG9zZUV2ZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9DbG9zZUV2ZW50LmgKQEAgLTQwLDEy
ICs0MCwxMiBAQCBjbGFzcyBDbG9zZUV2ZW50IDogcHVibGljIEV2ZW50IHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgaXNDbG9zZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xvc2VFdmVudD4gY3JlYXRlKGJvb2wgd2FzQ2xlYW4pCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xvc2VFdmVudD4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ2xvc2VFdmVudCh3YXNDbGVhbikpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IENsb3NlRXZlbnQoKSk7CiAgICAgfQogCi0gICAgdm9pZCBpbml0Q2xv
c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIGJvb2wgd2FzQ2xlYW4pCisgICAgdm9pZCBpbml0Q2xvc2VFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGJvb2wg
d2FzQ2xlYW4sIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQogICAg
IHsKICAgICAgICAgaWYgKGRpc3BhdGNoZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTUz
LDE3ICs1MywyNCBAQCBwdWJsaWM6CiAgICAgICAgIGluaXRFdmVudCh0eXBlLCBjYW5CdWJibGUs
IGNhbmNlbGFibGUpOwogCiAgICAgICAgIG1fd2FzQ2xlYW4gPSB3YXNDbGVhbjsKKyAgICAgICAg
bV9jb2RlID0gY29kZTsKKyAgICAgICAgbV9yZWFzb24gPSByZWFzb247CiAgICAgfQogCiAgICAg
Ym9vbCB3YXNDbGVhbigpIGNvbnN0IHsgcmV0dXJuIG1fd2FzQ2xlYW47IH0KKyAgICB1bnNpZ25l
ZCBzaG9ydCBjb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlOyB9CisgICAgU3RyaW5nIHJlYXNv
bigpIGNvbnN0IHsgcmV0dXJuIG1fcmVhc29uOyB9CiAKIHByaXZhdGU6Ci0gICAgQ2xvc2VFdmVu
dChib29sIHdhc0NsZWFuKQorICAgIENsb3NlRXZlbnQoKQogICAgICAgICA6IEV2ZW50KGV2ZW50
TmFtZXMoKS5jbG9zZUV2ZW50LCBmYWxzZSwgZmFsc2UpCi0gICAgICAgICwgbV93YXNDbGVhbih3
YXNDbGVhbikKKyAgICAgICAgLCBtX3dhc0NsZWFuKGZhbHNlKQorICAgICAgICAsIG1fY29kZSgw
KQogICAgIHsgfQogCiAgICAgYm9vbCBtX3dhc0NsZWFuOworICAgIHVuc2lnbmVkIHNob3J0IG1f
Y29kZTsKKyAgICBTdHJpbmcgbV9yZWFzb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaWRsIGIv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9DbG9zZUV2ZW50LmlkbAppbmRleCBkNzRhYjJkNjVm
YTY2ZWM0YjI1Njg3YTVjYTIzNTk5NzQwNGQ4OGEzLi5hMjkxMTQ2NmIxYTgyMGQwOWYxOThlMTU1
NzNiYTFkMjg3MzJmY2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL0Ns
b3NlRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5p
ZGwKQEAgLTM0LDEwICszNCwxNCBAQCBtb2R1bGUgZXZlbnRzIHsKICAgICAgICAgTm9TdGF0aWNU
YWJsZXMKICAgICBdIENsb3NlRXZlbnQgOiBFdmVudCB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBib29sZWFuIHdhc0NsZWFuOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWdu
ZWQgc2hvcnQgY29kZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb252ZXJ0aW5nTnVs
bFN0cmluZ1RvPVVuZGVmaW5lZF0gRE9NU3RyaW5nIHJlYXNvbjsKICAgICAgICAgdm9pZCBpbml0
Q2xvc2VFdmVudChpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIERPTVN0cmluZyB0
eXBlQXJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbD1DYWxsV2l0
aERlZmF1bHRWYWx1ZV0gYm9vbGVhbiBjYW5CdWJibGVBcmcsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBib29sZWFuIGNhbmNl
bGFibGVBcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxX
aXRoRGVmYXVsdFZhbHVlXSBib29sZWFuIHdhc0NsZWFuQXJnKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIGJvb2xlYW4gd2Fz
Q2xlYW5BcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxX
aXRoRGVmYXVsdFZhbHVlXSB1bnNpZ25lZCBzaG9ydCBjb2RlQXJnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5n
IHJlYXNvbkFyZyk7CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXIuY3BwCmluZGV4IDFhMTc5Yzk4MjkyMmQxNzI0YzQzNTM1YjJjNDdkNmUyNjVkNjMzYjgu
LjIzZjQ1YWRhMGFhY2JjZjM1MTlhZjE5OGU2NWQwYWQ2YTE3ZjIxNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKQEAgLTEzOSw5ICsxMzksOSBAQCB2b2lkIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkU3RhcnRDbG9zaW5nSGFu
ZHNoYWtlKCkKICAgICAgICAgcHJvY2Vzc1BlbmRpbmdUYXNrcygpOwogfQogCi12b2lkIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ2xvc2UodW5zaWduZWQgbG9u
ZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudDo6Q2xvc2lu
Z0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24pCit2
b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ2xvc2UodW5z
aWduZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVu
dDo6Q2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMgY2xvc2luZ0hhbmRzaGFrZUNvbXBs
ZXRpb24sIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQogewotICAg
IG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChjcmVhdGVDYWxsYmFja1Rhc2soJlRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ2xvc2VDYWxsYmFjaywgQWxsb3dDcm9zc1Ro
cmVhZEFjY2Vzcyh0aGlzKSwgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hh
a2VDb21wbGV0aW9uKSk7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKGNyZWF0ZUNhbGxiYWNr
VGFzaygmVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZUNh
bGxiYWNrLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCB1bmhhbmRsZWRCdWZmZXJlZEFt
b3VudCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbikpOwogICAgIGlm
ICghbV9zdXNwZW5kZWQpCiAgICAgICAgIHByb2Nlc3NQZW5kaW5nVGFza3MoKTsKIH0KQEAgLTE4
NywxMSArMTg3LDExIEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2VDYWxsYmFjayhTCiAgICAgICAgIHdyYXBwZXIt
Pm1fY2xpZW50LT5kaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKTsKIH0KIAotdm9pZCBUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENsb3NlQ2FsbGJhY2soU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyKiB3cmFwcGVyLCB1bnNpZ25lZCBsb25nIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50
LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50OjpDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvblN0YXR1
cyBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbikKK3ZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciogd3Jh
cHBlciwgdW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgV2ViU29ja2V0Q2hh
bm5lbENsaWVudDo6Q2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMgY2xvc2luZ0hhbmRz
aGFrZUNvbXBsZXRpb24sIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29u
KQogewogICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgIWNvbnRleHQpOwogICAgIGlmICh3cmFw
cGVyLT5tX2NsaWVudCkKLSAgICAgICAgd3JhcHBlci0+bV9jbGllbnQtPmRpZENsb3NlKHVuaGFu
ZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbik7CisgICAgICAg
IHdyYXBwZXItPm1fY2xpZW50LT5kaWRDbG9zZSh1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xv
c2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbik7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oCmluZGV4IGI1
NGFjYTA3MGE5OTk4YzA4ZDEyOGQ4N2Q3ZmRlYTE4MDc4ZDMzMGEuLmJjZWE5ZDZjYmNiZTdhNzk0
MzBlZWJhOGVmODQyYTU4MzM5OTEyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXIuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDb25uZWN0KCk7
CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAg
IHZvaWQgZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7Ci0gICAgdm9pZCBkaWRDbG9zZSh1bnNp
Z25lZCBsb25nIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50
OjpDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvblN0YXR1cyk7CisgICAgdm9pZCBkaWRDbG9zZSh1
bnNpZ25lZCBsb25nIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50OjpDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvblN0YXR1cywgdW5zaWduZWQgc2hvcnQgY29k
ZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOwogCiAgICAgdm9pZCBzdXNwZW5kKCk7CiAgICAgdm9p
ZCByZXN1bWUoKTsKQEAgLTg1LDcgKzg1LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lk
IGRpZENvbm5lY3RDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2VDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyKiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICBz
dGF0aWMgdm9pZCBkaWRTdGFydENsb3NpbmdIYW5kc2hha2VDYWxsYmFjayhTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyKik7Ci0g
ICAgc3RhdGljIHZvaWQgZGlkQ2xvc2VDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyKiwgdW5zaWduZWQgbG9uZyB1
bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hh
bmRzaGFrZUNvbXBsZXRpb25TdGF0dXMpOworICAgIHN0YXRpYyB2b2lkIGRpZENsb3NlQ2FsbGJh
Y2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlciosIHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIFdlYlNv
Y2tldENoYW5uZWxDbGllbnQ6OkNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzLCB1bnNp
Z25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAKICAgICBXZWJTb2NrZXRD
aGFubmVsQ2xpZW50KiBtX2NsaWVudDsKICAgICBib29sIG1fc3luY01ldGhvZERvbmU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggNTZiMmNlMzM5YjliZGFhMTA0
MzFmYzAwNTNhNTAwYmU1MDI5ODE5OC4uZDEyNmFlZWVjYjkxNWU3N2YxMjZmZmMwOTM4NjgzNmUy
NmYyNmYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtMzc4
LDcgKzM3OCw3IEBAIHZvaWQgV2ViU29ja2V0OjpkaWRDb25uZWN0KCkKIHsKICAgICBMT0coTmV0
d29yaywgIldlYlNvY2tldCAlcCBkaWRDb25uZWN0IiwgdGhpcyk7CiAgICAgaWYgKG1fc3RhdGUg
IT0gQ09OTkVDVElORykgewotICAgICAgICBkaWRDbG9zZSgwLCBDbG9zaW5nSGFuZHNoYWtlSW5j
b21wbGV0ZSk7CisgICAgICAgIGRpZENsb3NlKDAsIENsb3NpbmdIYW5kc2hha2VJbmNvbXBsZXRl
LCAwLCAiIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSk7CkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmRpZFN0
YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiAgICAgbV9zdGF0ZSA9IENMT1NJTkc7CiB9CiAKLXZvaWQg
V2ViU29ja2V0OjpkaWRDbG9zZSh1bnNpZ25lZCBsb25nIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50
LCBDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvblN0YXR1cyBjbG9zaW5nSGFuZHNoYWtlQ29tcGxl
dGlvbikKK3ZvaWQgV2ViU29ja2V0OjpkaWRDbG9zZSh1bnNpZ25lZCBsb25nIHVuaGFuZGxlZEJ1
ZmZlcmVkQW1vdW50LCBDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvblN0YXR1cyBjbG9zaW5nSGFu
ZHNoYWtlQ29tcGxldGlvbiwgdW5zaWduZWQgc2hvcnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFz
b24pCiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgZGlkQ2xvc2UiLCB0aGlzKTsK
ICAgICBpZiAoIW1fY2hhbm5lbCkKQEAgLTQyMiw4ICs0MjIsOCBAQCB2b2lkIFdlYlNvY2tldDo6
ZGlkQ2xvc2UodW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgQ2xvc2luZ0hh
bmRzaGFrZQogICAgIG1fc3RhdGUgPSBDTE9TRUQ7CiAgICAgbV9idWZmZXJlZEFtb3VudEFmdGVy
Q2xvc2UgKz0gdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQ7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSk7Ci0gICAgUmVmUHRyPENsb3NlRXZlbnQ+IGV2ZW50ID0gQ2xvc2VFdmVu
dDo6Y3JlYXRlKGZhbHNlKTsKLSAgICBldmVudC0+aW5pdENsb3NlRXZlbnQoZXZlbnROYW1lcygp
LmNsb3NlRXZlbnQsIGZhbHNlLCBmYWxzZSwgd2FzQ2xlYW4pOworICAgIFJlZlB0cjxDbG9zZUV2
ZW50PiBldmVudCA9IENsb3NlRXZlbnQ6OmNyZWF0ZSgpOworICAgIGV2ZW50LT5pbml0Q2xvc2VF
dmVudChldmVudE5hbWVzKCkuY2xvc2VFdmVudCwgZmFsc2UsIGZhbHNlLCB3YXNDbGVhbiwgY29k
ZSwgcmVhc29uKTsKICAgICBkaXNwYXRjaEV2ZW50KGV2ZW50KTsKICAgICBpZiAobV9jaGFubmVs
KSB7CiAgICAgICAgIG1fY2hhbm5lbC0+ZGlzY29ubmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmgKaW5kZXggMmY3MWIzMTUyYThmMWUyNjM1NDZmZDk0YTY2ODI5NmMzMWRj
YjFlYS4uMjcxMjU0MWZhOWZmMmYzZTc5YjQ4NWFkOTM3N2E0MTg2NTEyYjJiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC0xMDIsNyArMTAyLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
RXJyb3IoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgp
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UodW5zaWduZWQgbG9uZyB1bmhhbmRsZWRC
dWZmZXJlZEFtb3VudCwgQ2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UodW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFt
b3VudCwgQ2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMsIHVuc2lnbmVkIHNob3J0IGNv
ZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFdlYlNv
Y2tldChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA5YWZjNzRjNWE3ZDhkNTk0ZjY5ZDQ2YmZk
Mjg1MjRkMmYxMmNiZWY3Li5iOTc1ZDA1MDIzMjJlMjgyZThkMTQxNWMzNTNlMDMzYTY5NzYwMGZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAK
QEAgLTk4LDYgKzk4LDcgQEAgV2ViU29ja2V0Q2hhbm5lbDo6V2ViU29ja2V0Q2hhbm5lbChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBXZWJTb2NrZXRDaGEKICAgICAsIG1faWRlbnRp
ZmllcigwKQogICAgICwgbV91c2VIaXhpZTc2UHJvdG9jb2wodHJ1ZSkKICAgICAsIG1faGFzQ29u
dGludW91c0ZyYW1lKGZhbHNlKQorICAgICwgbV9jbG9zZUV2ZW50Q29kZSgxMDA1KSAvLyBJbmRp
Y2F0ZSB0aGF0IG5vIHN0YXR1cyBjb2RlIHdhcyBhY3R1YWxseSBwcmVzZW50LgogewogICAgIEFT
U0VSVChtX2NvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
c3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX2NvbnRleHQpOwpAQCAtMjQ2LDcgKzI0Nyw3IEBAIHZv
aWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkQ2xvc2VTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFu
ZGxlKiBoYW5kbGUpCiAgICAgICAgIG1fY29udGV4dCA9IDA7CiAgICAgICAgIG1faGFuZGxlID0g
MDsKICAgICAgICAgaWYgKGNsaWVudCkKLSAgICAgICAgICAgIGNsaWVudC0+ZGlkQ2xvc2UobV91
bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgbV9yZWNlaXZlZENsb3NpbmdIYW5kc2hha2UgPyBXZWJT
b2NrZXRDaGFubmVsQ2xpZW50OjpDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGUgOiBXZWJTb2NrZXRD
aGFubmVsQ2xpZW50OjpDbG9zaW5nSGFuZHNoYWtlSW5jb21wbGV0ZSk7CisgICAgICAgICAgICBj
bGllbnQtPmRpZENsb3NlKG1fdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIG1fcmVjZWl2ZWRDbG9z
aW5nSGFuZHNoYWtlID8gV2ViU29ja2V0Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hhbmRzaGFrZUNv
bXBsZXRlIDogV2ViU29ja2V0Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hhbmRzaGFrZUluY29tcGxl
dGUsIG1fY2xvc2VFdmVudENvZGUsIG1fY2xvc2VFdmVudFJlYXNvbik7CiAgICAgfQogICAgIGRl
cmVmKCk7CiB9CkBAIC02MjMsNyArNjI0LDEzIEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJv
Y2Vzc0ZyYW1lKCkKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIE9wQ29kZUNsb3NlOgotICAg
ICAgICAvLyBGSVhNRTogSGFuZGxlIHBheWxvYWQuCisgICAgICAgIGlmIChmcmFtZS5wYXlsb2Fk
TGVuZ3RoID49IDIpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgaGlnaEJ5dGUgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihmcmFtZS5wYXlsb2FkWzBdKTsKKyAgICAgICAgICAgIHVu
c2lnbmVkIGNoYXIgbG93Qnl0ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGZyYW1lLnBh
eWxvYWRbMV0pOworICAgICAgICAgICAgbV9jbG9zZUV2ZW50Q29kZSA9IGhpZ2hCeXRlIDw8IDgg
fCBsb3dCeXRlOworICAgICAgICAgICAgaWYgKGZyYW1lLnBheWxvYWRMZW5ndGggPj0gMykKKyAg
ICAgICAgICAgICAgICBtX2Nsb3NlRXZlbnRSZWFzb24gPSBTdHJpbmc6OmZyb21VVEY4KCZmcmFt
ZS5wYXlsb2FkWzJdLCBmcmFtZS5wYXlsb2FkTGVuZ3RoIC0gMik7CisgICAgICAgIH0KICAgICAg
ICAgc2tpcEJ1ZmZlcihmcmFtZS5mcmFtZUVuZCAtIG1fYnVmZmVyKTsKICAgICAgICAgbV9yZWNl
aXZlZENsb3NpbmdIYW5kc2hha2UgPSB0cnVlOwogICAgICAgICBzdGFydENsb3NpbmdIYW5kc2hh
a2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbC5oIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5k
ZXggMGZkOTZmMTYxZWM0ZTk2NDllM2ViNGRjMDY3OGUxODc1MmQ2MzFmYS4uYTFiYmIzMzk0YWUx
YjA4YmM2YzZlZDE0ZGE5NGFlY2ZhNDY1ZGExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTE1NCw2ICsxNTQsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIGJvb2wgbV9oYXNDb250aW51b3VzRnJhbWU7CiAgICAgICAgIE9wQ29k
ZSBtX2NvbnRpbnVvdXNGcmFtZU9wQ29kZTsKICAgICAgICAgVmVjdG9yPGNoYXI+IG1fY29udGlu
dW91c0ZyYW1lRGF0YTsKKyAgICAgICAgdW5zaWduZWQgc2hvcnQgbV9jbG9zZUV2ZW50Q29kZTsK
KyAgICAgICAgU3RyaW5nIG1fY2xvc2VFdmVudFJlYXNvbjsKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWxDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbENsaWVudC5oCmluZGV4IDM4YmQxN2QwMGQ2NWYyZjJiMDFmNGI5MzgwYzBiNGUyYzdj
NzY4NzUuLmMzOGIwNWM4MTRmYjNhMzA3MDlhMTJkYzMzNjQyZTg1M2ExZWE4MTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAg
LTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgQ2xvc2luZ0hh
bmRzaGFrZUluY29tcGxldGUsCiAgICAgICAgICAgICBDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGUK
ICAgICAgICAgfTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKHVuc2lnbmVkIGxvbmcg
LyogdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQgKi8sIENsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9u
U3RhdHVzKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKHVuc2lnbmVkIGxvbmcg
LyogdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQgKi8sIENsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9u
U3RhdHVzLCB1bnNpZ25lZCBzaG9ydCAvKiBjb2RlICovLCBjb25zdCBTdHJpbmcmIC8qIHJlYXNv
biAqLykgeyB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFdlYlNvY2tldENoYW5uZWxDbGll
bnQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggMzM0ZTc1MjZmYjcyZTcz
YWE1NjY5M2Q4MDRjY2QxOGNmYjIyODZlMi4uOWRhYjgxMmZjODAxNWYzODlmNzQwOGQwZGVhN2Ni
ZWNmOTYyODRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjY1LDE3
ICsyNjUsMTcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6
ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9y
TW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRT
dGFydENsb3NpbmdIYW5kc2hha2UsIG1fd29ya2VyQ2xpZW50V3JhcHBlciksIG1fdGFza01vZGUp
OwogfQogCi1zdGF0aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlkQ2xvc2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVk
QnVmZmVyZWRBbW91bnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQ6OkNsb3NpbmdIYW5kc2hha2VD
b21wbGV0aW9uU3RhdHVzIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uKQorc3RhdGljIHZvaWQg
d29ya2VyQ29udGV4dERpZENsb3NlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBh
c3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJD
bGllbnRXcmFwcGVyLCB1bnNpZ25lZCBsb25nIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBXZWJT
b2NrZXRDaGFubmVsQ2xpZW50OjpDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvblN0YXR1cyBjbG9z
aW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgdW5zaWduZWQgc2hvcnQgY29kZSwgY29uc3QgU3RyaW5n
JiByZWFzb24pCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc1dvcmtl
ckNvbnRleHQoKSk7Ci0gICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkQ2xvc2UodW5oYW5kbGVk
QnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uKTsKKyAgICB3b3JrZXJD
bGllbnRXcmFwcGVyLT5kaWRDbG9zZSh1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hh
bmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbik7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZENsb3NlKHVuc2lnbmVkIGxvbmcgdW5oYW5k
bGVkQnVmZmVyZWRBbW91bnQsIENsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzIGNsb3Np
bmdIYW5kc2hha2VDb21wbGV0aW9uKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6UGVlcjo6ZGlkQ2xvc2UodW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3Vu
dCwgQ2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMgY2xvc2luZ0hhbmRzaGFrZUNvbXBs
ZXRpb24sIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbV9tYWluV2ViU29ja2V0Q2hhbm5lbCA9IDA7
Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3JlYXRl
Q2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkQ2xvc2UsIG1fd29ya2VyQ2xpZW50V3JhcHBl
ciwgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uKSwg
bV90YXNrTW9kZSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNv
bnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkQ2xvc2UsIG1fd29ya2Vy
Q2xpZW50V3JhcHBlciwgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VD
b21wbGV0aW9uLCBjb2RlLCByZWFzb24pLCBtX3Rhc2tNb2RlKTsKIH0KIAogdm9pZCBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpzZXRXZWJTb2NrZXRDaGFubmVsKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEJyaWRnZSogdGhpc1B0ciwgUGVlciogcGVl
ciwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdv
cmtlckNsaWVudFdyYXBwZXIsIGJvb2wgdXNlSGl4aWU3NlByb3RvY29sKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5oIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5oCmluZGV4IDQ0MDAzNzBmNTA1Y2YxY2M5YjViZDc3MWQyNjQyZmI4ODRhNmZiM2Uu
LjBkYzM4YzMyZDdmMjc5ZTZhMjBhMGM3ZDQzMzZjODhlZjQxYjI2NzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAy
MDEwIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQpAQCAtMTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRDb25uZWN0KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
U3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZSh1
bnNpZ25lZCBsb25nIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBDbG9zaW5nSGFuZHNoYWtlQ29t
cGxldGlvblN0YXR1cyk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZSh1bnNpZ25lZCBs
b25nIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvblN0
YXR1cywgdW5zaWduZWQgc2hvcnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgUGVlcihQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcj4sIFdvcmtlckxvYWRlclByb3h5JiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IFN0cmluZyYgdGFza01vZGUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104475</attachid>
            <date>2011-08-19 01:45:55 -0700</date>
            <delta_ts>2011-08-19 02:04:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66362-20110819174553.patch</filename>
            <type>text/plain</type>
            <size>33466</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMyOTkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjZWUyZGE4ODE2Zjc5OTc0NzdmZmM5
NjE0NTY5NGM3NTYyNDQ2YzA5Li44ZTE5ZDNiMTViNzIxOWQ0MmY2MGIwNGI0ODNjN2JhNjgxNTY3
ODhiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMDgtMTcgIFRha2FzaGkgVG95b3NoaW1h
ICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJTb2NrZXRdIENsb3NlRXZl
bnQncyBjb2RlIGFuZCByZWFzb24gcHJvcGVydGllcyBzdXBwb3J0LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYzNjIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50IFdlYlNvY2tldCBpbXBsZW1l
bnRhdGlvbiBtaXNzIGNvZGUgYW5kIHJlYXNvbiBwcm9wZXJ0aWVzCisgICAgICAgIGluIENsb3Nl
RXZlbnQuIFRoaXMgY2hhbmdlIGV4cG9zZSBpbmNvbWluZyBjbG9zaW5nIGZyYW1lJ3MgY29kZQor
ICAgICAgICBhbmQgcmVhc29uIHRvIEphdmFTY3JpcHQgQVBJLgorCisgICAgICAgICogaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZS1jb2RlLWFuZC1yZWFzb24tZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Ns
b3NlLWNvZGUtYW5kLXJlYXNvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLWNvZGUtYW5kLXJlYXNvbl93c2gucHk6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS1j
b2RlLWFuZC1yZWFzb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtY29kZS1hbmQtcmVhc29uLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vy
cy9yZXNvdXJjZXMvY2xvc2UtY29kZS1hbmQtcmVhc29uLmpzOiBBZGRlZC4KKyAgICAgICAgKHBv
c3RSZXN1bHQpOgorICAgICAgICAod3Mub25vcGVuKToKKyAgICAgICAgKHdzLm9ubWVzc2FnZSk6
CisgICAgICAgICh3cy5vbmNsb3NlKToKKwogMjAxMS0wOC0xOCAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFtqc2Z1bmZ1enpdIERGRyBzcGVjdWxhdGl2ZSBKSVQg
ZG9lcyBkaXZpZGUtYnktemVybyBjaGVja3MgaW5jb3JyZWN0bHkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2UtY29kZS1hbmQtcmVh
c29uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvY2xvc2UtY29kZS1hbmQtcmVhc29uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjI0
YWMyYjdiMjY2NmZjMTAwNTIyNDM1OGRhOGY5ZTZkZWMxMmU5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZS1jb2RlLWFu
ZC1yZWFzb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzQgQEAKK0NPTlNPTEUgTUVTU0FHRTog
bGluZSAwOiBXZWJTb2NrZXQgaXMgY2xvc2VkIGJlZm9yZSB0aGUgY29ubmVjdGlvbiBpcyBlc3Rh
Ymxpc2hlZC4KK1Rlc3QgQ2xvc2VFdmVudCBjb2RlIGFuZCByZWFzb24gcHJvcGVydHkuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKword3Mub25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNT
IGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK1BBU1MgY2xvc2VFdmVudC5jb2RlIGlzIGNv
ZGVBYm5vcm1hbENsb3N1cmUKK1BBU1MgY2xvc2VFdmVudC5yZWFzb24gaXMgZW1wdHlTdHJpbmcK
K1dlYlNvY2tldFRlc3Qub25vcGVuKCkgd2FzIGNhbGxlZCB3aXRoIHRlc3RJZCA9IDAuCitXZWJT
b2NrZXRUZXN0Lm9uY2xvc2UoKSB3YXMgY2FsbGVkIHdpdGggdGVzdElkID0gMC4KK1BBU1MgY2xv
c2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIGNsb3NlRXZlbnQuY29kZSBpcyBleHBlY3Rl
ZENvZGVbdGVzdElkXQorUEFTUyBjbG9zZUV2ZW50LnJlYXNvbiBpcyBleHBlY3RlZFJlYXNvblt0
ZXN0SWRdCitQQVNTIGNsb3NlRXZlbnQuY29kZSBpcyBleHBlY3RlZENvZGVbdGVzdElkXQorUEFT
UyBjbG9zZUV2ZW50LnJlYXNvbiBpcyBleHBlY3RlZFJlYXNvblt0ZXN0SWRdCitXZWJTb2NrZXRU
ZXN0Lm9ub3BlbigpIHdhcyBjYWxsZWQgd2l0aCB0ZXN0SWQgPSAxLgorV2ViU29ja2V0VGVzdC5v
bmNsb3NlKCkgd2FzIGNhbGxlZCB3aXRoIHRlc3RJZCA9IDEuCitQQVNTIGNsb3NlRXZlbnQud2Fz
Q2xlYW4gaXMgdHJ1ZQorUEFTUyBjbG9zZUV2ZW50LmNvZGUgaXMgZXhwZWN0ZWRDb2RlW3Rlc3RJ
ZF0KK1BBU1MgY2xvc2VFdmVudC5yZWFzb24gaXMgZXhwZWN0ZWRSZWFzb25bdGVzdElkXQorUEFT
UyBjbG9zZUV2ZW50LmNvZGUgaXMgZXhwZWN0ZWRDb2RlW3Rlc3RJZF0KK1BBU1MgY2xvc2VFdmVu
dC5yZWFzb24gaXMgZXhwZWN0ZWRSZWFzb25bdGVzdElkXQorV2ViU29ja2V0VGVzdC5vbm9wZW4o
KSB3YXMgY2FsbGVkIHdpdGggdGVzdElkID0gMi4KK1dlYlNvY2tldFRlc3Qub25jbG9zZSgpIHdh
cyBjYWxsZWQgd2l0aCB0ZXN0SWQgPSAyLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRy
dWUKK1BBU1MgY2xvc2VFdmVudC5jb2RlIGlzIGV4cGVjdGVkQ29kZVt0ZXN0SWRdCitQQVNTIGNs
b3NlRXZlbnQucmVhc29uIGlzIGV4cGVjdGVkUmVhc29uW3Rlc3RJZF0KK1BBU1MgY2xvc2VFdmVu
dC5jb2RlIGlzIGV4cGVjdGVkQ29kZVt0ZXN0SWRdCitQQVNTIGNsb3NlRXZlbnQucmVhc29uIGlz
IGV4cGVjdGVkUmVhc29uW3Rlc3RJZF0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLWNvZGUtYW5kLXJlYXNvbi5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZS1jb2RlLWFuZC1yZWFzb24u
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kMjg4ZWI1MmViNmVkZGJmYzAwYmFjMTcyYTBmN2IyMGZiNTYzMGQ0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9jbG9zZS1jb2RlLWFuZC1yZWFzb24uaHRtbApAQCAtMCwwICsxLDEwMCBAQAorPCFE
T0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K
K2Rlc2NyaXB0aW9uKCJUZXN0IENsb3NlRXZlbnQgY29kZSBhbmQgcmVhc29uIHByb3BlcnR5LiIp
OworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgi
V2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworCit2YXIgY2xvc2VF
dmVudDsKK3ZhciBjb2RlTm9TdGF0dXNSY3ZkID0gMTAwNTsKK3ZhciBjb2RlQWJub3JtYWxDbG9z
dXJlID0gMTAwNjsKK3ZhciBlbXB0eVN0cmluZyA9ICIiOworCit2YXIgd3MgPSBuZXcgV2ViU29j
a2V0KCJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmdpbmctaGFu
ZHNoYWtlIik7CisKK3dzLm9ub3BlbiA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIHRlc3RGYWls
ZWQoIndzLm9ub3BlbigpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0gXCIiICsgZXZlbnQuZGF0YSAr
ICJcIikiKTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBkZWJ1
Zygid3Mub25jbG9zZSgpIHdhcyBjYWxsZWQuIik7CisgICAgY2xvc2VFdmVudCA9IGV2ZW50Owor
ICAgIHNob3VsZEJlRmFsc2UoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAgICBzaG91bGRCZSgi
Y2xvc2VFdmVudC5jb2RlIiwgImNvZGVBYm5vcm1hbENsb3N1cmUiKTsKKyAgICBzaG91bGRCZSgi
Y2xvc2VFdmVudC5yZWFzb24iLCAiZW1wdHlTdHJpbmciKTsKK307CisKK3dzLmNsb3NlKCk7CisK
K3ZhciB0ZXN0SWQgPSAwOwordmFyIHRlc3ROdW0gPSAzOwordmFyIHNlbmREYXRhID0gWworICAg
ICItIiwgLy8gcmVxdWVzdCBjbG9zZSBmcmFtZSB3aXRob3V0IGNvZGUgYW5kIHJlYXNvbgorICAg
ICItLSIsIC8vIHJlcXVlc3QgY2xvc2UgZnJhbWUgd2l0aCBpbnZhbGlkIGJvZHkgd2hpY2ggc2l6
ZSBpcyAxCisgICAgIjY1NTM1IGdvb2QgYnllIiwgLy8gcmVxdWVzdCBjbG9zZSBmcmFtZSB3aXRo
IHNwZWNpZmllZCBjb2RlIGFuZCByZWFzb24KK107Cit2YXIgZXhwZWN0ZWRDb2RlID0gWworICAg
IGNvZGVOb1N0YXR1c1JjdmQsCisgICAgY29kZU5vU3RhdHVzUmN2ZCwKKyAgICA2NTUzNSwKK107
Cit2YXIgZXhwZWN0ZWRSZWFzb24gPSBbCisgICAgIiIsCisgICAgIiIsCisgICAgImdvb2QgYnll
IiwKK107CisKK1dlYlNvY2tldFRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICB0aGlzLndzID0gbmV3
IFdlYlNvY2tldCgid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9z
ZS1jb2RlLWFuZC1yZWFzb24iKTsKKyAgICB0aGlzLndzLm9ub3BlbiA9IHRoaXMub25vcGVuOwor
ICAgIHRoaXMud3Mub25tZXNzYWdlID0gdGhpcy5vbm1lc3NhZ2U7CisgICAgdGhpcy53cy5vbmNs
b3NlID0gdGhpcy5vbmNsb3NlOworfTsKKworV2ViU29ja2V0VGVzdC5wcm90b3R5cGUub25vcGVu
ID0gZnVuY3Rpb24oKQoreworICAgIGRlYnVnKCJXZWJTb2NrZXRUZXN0Lm9ub3BlbigpIHdhcyBj
YWxsZWQgd2l0aCB0ZXN0SWQgPSAiICsgdGVzdElkICsgIi4iKTsKKyAgICB0aGlzLnNlbmQoc2Vu
ZERhdGFbdGVzdElkXSk7Cit9OworCitXZWJTb2NrZXRUZXN0LnByb3RvdHlwZS5vbm1lc3NhZ2Ug
PSBmdW5jdGlvbihldmVudCkKK3sKKyAgICB0ZXN0RmFpbGVkKCJXZWJTb2NrZXRUZXN0Lm9ubWVz
c2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0gXCIiICsgZXZlbnQuZGF0YSArICJcIikiKTsK
K307CisKK1dlYlNvY2tldFRlc3QucHJvdG90eXBlLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkK
K3sKKyAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7CisgICAgZGVidWcoIldlYlNvY2tldFRlc3Qub25j
bG9zZSgpIHdhcyBjYWxsZWQgd2l0aCB0ZXN0SWQgPSAiICsgdGVzdElkICsgIi4iKTsKKyAgICBz
aG91bGRCZVRydWUoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAgICBzaG91bGRCZSgiY2xvc2VF
dmVudC5jb2RlIiwgImV4cGVjdGVkQ29kZVt0ZXN0SWRdIik7CisgICAgc2hvdWxkQmUoImNsb3Nl
RXZlbnQucmVhc29uIiwgImV4cGVjdGVkUmVhc29uW3Rlc3RJZF0iKTsKKyAgICBjbG9zZUV2ZW50
LmNvZGUgPSAwOworICAgIGNsb3NlRXZlbnQucmVhc29uID0gInJlYWRvbmx5IjsKKyAgICBzaG91
bGRCZSgiY2xvc2VFdmVudC5jb2RlIiwgImV4cGVjdGVkQ29kZVt0ZXN0SWRdIik7CisgICAgc2hv
dWxkQmUoImNsb3NlRXZlbnQucmVhc29uIiwgImV4cGVjdGVkUmVhc29uW3Rlc3RJZF0iKTsKKyAg
ICB0ZXN0SWQrKzsKKyAgICBpZiAodGVzdElkIDwgdGVzdE51bSkKKyAgICAgICAgdGVzdCA9IG5l
dyBXZWJTb2NrZXRUZXN0KCk7CisgICAgZWxzZQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKK307
CisKK3ZhciB0ZXN0ID0gbmV3IFdlYlNvY2tldFRlc3QoKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0
LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9j
bG9zZS1jb2RlLWFuZC1yZWFzb25fd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9jbG9zZS1jb2RlLWFuZC1yZWFzb25fd3NoLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE1YTJkMjQwZGMwMzdjYmVjMjczOTI1NWIzNGMyMzFmZmUxMTg2MjMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLWNv
ZGUtYW5kLXJlYXNvbl93c2gucHkKQEAgLTAsMCArMSwxOSBAQAoraW1wb3J0IHN0cnVjdAorCitm
cm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgc3RyZWFtCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4
dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5z
ZmVyX2RhdGEocmVxdWVzdCk6CisgICAgbGluZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2VpdmVf
bWVzc2FnZSgpCisgICAgaWYgbGluZSBpcyBOb25lOgorICAgICAgICByZXR1cm4KKyAgICBpZiBs
aW5lID09ICctJzoKKyAgICAgICAgZGF0YSA9ICcnCisgICAgZWxpZiBsaW5lID09ICctLSc6Cisg
ICAgICAgIGRhdGEgPSAnWCcKKyAgICBlbHNlOgorICAgICAgICBjb2RlLCByZWFzb24gPSBsaW5l
LnNwbGl0KCcgJywgMSkKKyAgICAgICAgZGF0YSA9IHN0cnVjdC5wYWNrKCchSCcsIGludChjb2Rl
KSkgKyByZWFzb24uZW5jb2RlKCd1dGYtOCcpCisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRl
KHN0cmVhbS5jcmVhdGVfY2xvc2VfZnJhbWUoZGF0YSkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtY29kZS1hbmQt
cmVhc29uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5Ymkvd29ya2Vycy9jbG9zZS1jb2RlLWFuZC1yZWFzb24tZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjMwMGMwOGYxNzcxODAxNzE5ZWI1YzNhYWE3ZGFhMDZkMWU5NGM1MGEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dv
cmtlcnMvY2xvc2UtY29kZS1hbmQtcmVhc29uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM0IEBA
CitUZXN0IENsb3NlRXZlbnQgY29kZSBhbmQgcmVhc29uIHByb3BlcnR5IGluIFdvcmtlci4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCit3cy5vbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BB
U1MgUEFTUzogd29ya2VyOiBldmVudC53YXNDbGVhbiBpcyBmYWxzZQorUEFTUyBQQVNTOiB3b3Jr
ZXI6IGV2ZW50LmNvZGUgaXMgY29kZUFibm9ybWFsQ2xvc3VyZQorUEFTUyBQQVNTOiB3b3JrZXI6
IGV2ZW50LnJlYXNvbiBpcyBlbXB0eVN0cmluZworV2ViU29ja2V0VGVzdC5vbm9wZW4oKSB3YXMg
Y2FsbGVkIHdpdGggdGVzdElkID0gMC4KK1dlYlNvY2tldFRlc3Qub25jbG9zZSgpIHdhcyBjYWxs
ZWQgd2l0aCB0ZXN0SWQgPSAwLgorUEFTUyBQQVNTOiB3b3JrZXI6IGV2ZW50Lndhc0NsZWFuIGlz
IHRydWUKK1BBU1MgUEFTUzogd29ya2VyOiBldmVudC5jb2RlIGlzIDEwMDUKK1BBU1MgUEFTUzog
d29ya2VyOiBldmVudC5yZWFzb24gaXMgCitQQVNTIFBBU1M6IHdvcmtlcjogZXZlbnQuY29kZSBp
cyAxMDA1CitQQVNTIFBBU1M6IHdvcmtlcjogZXZlbnQucmVhc29uIGlzIAorV2ViU29ja2V0VGVz
dC5vbm9wZW4oKSB3YXMgY2FsbGVkIHdpdGggdGVzdElkID0gMS4KK1dlYlNvY2tldFRlc3Qub25j
bG9zZSgpIHdhcyBjYWxsZWQgd2l0aCB0ZXN0SWQgPSAxLgorUEFTUyBQQVNTOiB3b3JrZXI6IGV2
ZW50Lndhc0NsZWFuIGlzIHRydWUKK1BBU1MgUEFTUzogd29ya2VyOiBldmVudC5jb2RlIGlzIDEw
MDUKK1BBU1MgUEFTUzogd29ya2VyOiBldmVudC5yZWFzb24gaXMgCitQQVNTIFBBU1M6IHdvcmtl
cjogZXZlbnQuY29kZSBpcyAxMDA1CitQQVNTIFBBU1M6IHdvcmtlcjogZXZlbnQucmVhc29uIGlz
IAorV2ViU29ja2V0VGVzdC5vbm9wZW4oKSB3YXMgY2FsbGVkIHdpdGggdGVzdElkID0gMi4KK1dl
YlNvY2tldFRlc3Qub25jbG9zZSgpIHdhcyBjYWxsZWQgd2l0aCB0ZXN0SWQgPSAyLgorUEFTUyBQ
QVNTOiB3b3JrZXI6IGV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1BBU1MgUEFTUzogd29ya2VyOiBl
dmVudC5jb2RlIGlzIDY1NTM1CitQQVNTIFBBU1M6IHdvcmtlcjogZXZlbnQucmVhc29uIGlzIGdv
b2QgYnllCitQQVNTIFBBU1M6IHdvcmtlcjogZXZlbnQuY29kZSBpcyA2NTUzNQorUEFTUyBQQVNT
OiB3b3JrZXI6IGV2ZW50LnJlYXNvbiBpcyBnb29kIGJ5ZQorRE9ORQorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS1jb2RlLWFu
ZC1yZWFzb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
Ymkvd29ya2Vycy9jbG9zZS1jb2RlLWFuZC1yZWFzb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmYyODdj
ZTAyZGU1OGUxYzVjODQwNmFkZWMwZWRhZDkyOWE0NWY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLWNv
ZGUtYW5kLXJlYXNvbi5odG1sCkBAIC0wLDAgKzEsNDAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vLi4v
anMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlwdGlv
bigiVGVzdCBDbG9zZUV2ZW50IGNvZGUgYW5kIHJlYXNvbiBwcm9wZXJ0eSBpbiBXb3JrZXIuIik7
CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJX
ZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CisKK2Z1bmN0aW9uIHN0
YXJ0c1dpdGgoc3RyLCBwcmVmaXgpCit7CisgICAgcmV0dXJuIHN0ci5pbmRleE9mKHByZWZpeCkg
PT0gMDsKK30KKwordmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoInJlc291cmNlcy9jbG9zZS1jb2Rl
LWFuZC1yZWFzb24uanMiKTsKK3dvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZlbnQpCit7
CisgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOworICAgIGlmIChzdGFydHNXaXRoKG1lc3Nh
Z2UsICJQQVNTIikpCisgICAgICAgIHRlc3RQYXNzZWQobWVzc2FnZSk7CisgICAgZWxzZSBpZiAo
c3RhcnRzV2l0aChtZXNzYWdlLCAiRkFJTCIpKQorICAgICAgICB0ZXN0RmFpbGVkKG1lc3NhZ2Up
CisgICAgZWxzZQorICAgICAgICBkZWJ1ZyhtZXNzYWdlKTsKKyAgICBpZiAobWVzc2FnZSA9PT0g
IkRPTkUiKQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKK307CisKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vanMt
dGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
Ymkvd29ya2Vycy9yZXNvdXJjZXMvY2xvc2UtY29kZS1hbmQtcmVhc29uLmpzIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9jbG9z
ZS1jb2RlLWFuZC1yZWFzb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQ5YzdkNzE5YzViNzIzMGQ4MzIyZTVh
NzYzNTY1NzJmZDM1MWJhYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvY2xvc2UtY29kZS1hbmQt
cmVhc29uLmpzCkBAIC0wLDAgKzEsODUgQEAKK3ZhciBjb2RlTm9TdGF0dXNSY3ZkID0gMTAwNTsK
K3ZhciBjb2RlQWJub3JtYWxDbG9zdXJlID0gMTAwNjsKK3ZhciBlbXB0eVN0cmluZyA9ICIiOwor
CitmdW5jdGlvbiBwb3N0UmVzdWx0KHJlc3VsdCwgYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICB2
YXIgbWVzc2FnZSA9IHJlc3VsdCA/ICJQQVNTIiA6ICJGQUlMIjsKKyAgICBtZXNzYWdlICs9ICI6
IHdvcmtlcjogIiArIGFjdHVhbCArICIgaXMgIjsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAg
bWVzc2FnZSArPSAibm90ICI7CisgICAgbWVzc2FnZSArPSBleHBlY3RlZDsKKyAgICBwb3N0TWVz
c2FnZShtZXNzYWdlKTsKK30KKwordmFyIHdzID0gbmV3IFdlYlNvY2tldCgid3M6Ly8xMjcuMC4w
LjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5naW5nLWhhbmRzaGFrZSIpOworCit3cy5v
bm9wZW4gPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICB0ZXN0RmFpbGVkKCJGQUlMOiB3cy5vbm9w
ZW4oKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9IFwiIiArIGV2ZW50LmRhdGEgKyAiXCIpIik7Cit9
OworCit3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgcG9zdE1lc3NhZ2UoIndz
Lm9uY2xvc2UoKSB3YXMgY2FsbGVkLiIpOworICAgIHBvc3RSZXN1bHQoIWV2ZW50Lndhc0NsZWFu
LCAiZXZlbnQud2FzQ2xlYW4iLCAiZmFsc2UiKTsKKyAgICBwb3N0UmVzdWx0KGV2ZW50LmNvZGUg
PT0gY29kZUFibm9ybWFsQ2xvc3VyZSwgImV2ZW50LmNvZGUiLCAiY29kZUFibm9ybWFsQ2xvc3Vy
ZSIpOworICAgIHBvc3RSZXN1bHQoZXZlbnQucmVhc29uID09IGVtcHR5U3RyaW5nLCAiZXZlbnQu
cmVhc29uIiwgImVtcHR5U3RyaW5nIik7Cit9OworCit3cy5jbG9zZSgpOworCit2YXIgdGVzdElk
ID0gMDsKK3ZhciB0ZXN0TnVtID0gMzsKK3ZhciBzZW5kRGF0YSA9IFsKKyAgICAiLSIsIC8vIHJl
cXVlc3QgY2xvc2UgZnJhbWUgd2l0aG91dCBjb2RlIGFuZCByZWFzb24KKyAgICAiLS0iLCAvLyBy
ZXF1ZXN0IGNsb3NlIGZyYW1lIHdpdGggaW52YWxpZCBib2R5IHdoaWNoIHNpemUgaXMgMQorICAg
ICI2NTUzNSBnb29kIGJ5ZSIsIC8vIHJlcXVlc3QgY2xvc2UgZnJhbWUgd2l0aCBzcGVjaWZpZWQg
Y29kZSBhbmQgcmVhc29uCitdOwordmFyIGV4cGVjdGVkQ29kZSA9IFsKKyAgICBjb2RlTm9TdGF0
dXNSY3ZkLAorICAgIGNvZGVOb1N0YXR1c1JjdmQsCisgICAgNjU1MzUsCitdOwordmFyIGV4cGVj
dGVkUmVhc29uID0gWworICAgICIiLAorICAgICIiLAorICAgICJnb29kIGJ5ZSIsCitdOworCitX
ZWJTb2NrZXRUZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy53cyA9IG5ldyBXZWJTb2NrZXQo
IndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2UtY29kZS1hbmQt
cmVhc29uIik7CisgICAgdGhpcy53cy5vbm9wZW4gPSB0aGlzLm9ub3BlbjsKKyAgICB0aGlzLndz
Lm9ubWVzc2FnZSA9IHRoaXMub25tZXNzYWdlOworICAgIHRoaXMud3Mub25jbG9zZSA9IHRoaXMu
b25jbG9zZTsKK307CisKK1dlYlNvY2tldFRlc3QucHJvdG90eXBlLm9ub3BlbiA9IGZ1bmN0aW9u
KCkKK3sKKyAgICBwb3N0TWVzc2FnZSgiV2ViU29ja2V0VGVzdC5vbm9wZW4oKSB3YXMgY2FsbGVk
IHdpdGggdGVzdElkID0gIiArIHRlc3RJZCArICIuIik7CisgICAgdGhpcy5zZW5kKHNlbmREYXRh
W3Rlc3RJZF0pOworfTsKKworV2ViU29ja2V0VGVzdC5wcm90b3R5cGUub25tZXNzYWdlID0gZnVu
Y3Rpb24oZXZlbnQpCit7CisgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IFdlYlNvY2tldFRlc3Qub25t
ZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSBcIiIgKyBldmVudC5kYXRhICsgIlwiKSIp
OworfTsKKworV2ViU29ja2V0VGVzdC5wcm90b3R5cGUub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50
KQoreworICAgIHBvc3RNZXNzYWdlKCJXZWJTb2NrZXRUZXN0Lm9uY2xvc2UoKSB3YXMgY2FsbGVk
IHdpdGggdGVzdElkID0gIiArIHRlc3RJZCArICIuIik7CisgICAgcG9zdFJlc3VsdChldmVudC53
YXNDbGVhbiwgImV2ZW50Lndhc0NsZWFuIiwgInRydWUiKTsKKyAgICBwb3N0UmVzdWx0KGV2ZW50
LmNvZGUgPT0gZXhwZWN0ZWRDb2RlW3Rlc3RJZF0sICJldmVudC5jb2RlIiwgZXhwZWN0ZWRDb2Rl
W3Rlc3RJZF0pOworICAgIHBvc3RSZXN1bHQoZXZlbnQucmVhc29uID09IGV4cGVjdGVkUmVhc29u
W3Rlc3RJZF0sICJldmVudC5yZWFzb24iLCBleHBlY3RlZFJlYXNvblt0ZXN0SWRdKTsKKyAgICBl
dmVudC5jb2RlID0gMDsKKyAgICBldmVudC5yZWFzb24gPSAicmVhZG9ubHkiOworICAgIHBvc3RS
ZXN1bHQoZXZlbnQuY29kZSA9PSBleHBlY3RlZENvZGVbdGVzdElkXSwgImV2ZW50LmNvZGUiLCBl
eHBlY3RlZENvZGVbdGVzdElkXSk7CisgICAgcG9zdFJlc3VsdChldmVudC5yZWFzb24gPT0gZXhw
ZWN0ZWRSZWFzb25bdGVzdElkXSwgImV2ZW50LnJlYXNvbiIsIGV4cGVjdGVkUmVhc29uW3Rlc3RJ
ZF0pOworICAgIHRlc3RJZCsrOworICAgIGlmICh0ZXN0SWQgPCB0ZXN0TnVtKQorICAgICAgICB0
ZXN0ID0gbmV3IFdlYlNvY2tldFRlc3QoKTsKKyAgICBlbHNlCisgICAgICAgIHBvc3RNZXNzYWdl
KCJET05FIikKK307CisKK3ZhciB0ZXN0ID0gbmV3IFdlYlNvY2tldFRlc3QoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA1NzdiZGVmYTIwZjA0Yjg4MmY4NGJkOTI3MDIwYWY3ODNiNDgxZWE5Li44MjgyM2Q2NmE2
YzA2YjFhYzhjY2M0ZmNiNDdkYzEyYThjYzhiOWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMTEtMDgtMTcgIFRha2FzaGkgVG95b3NoaW1hICA8dG95b3NoaW1AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtXZWJTb2NrZXRdIENsb3NlRXZlbnQncyBjb2RlIGFuZCByZWFzb24gcHJv
cGVydGllcyBzdXBwb3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjYzNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDdXJyZW50IFdlYlNvY2tldCBpbXBsZW1lbnRhdGlvbiBtaXNzIGNvZGUgYW5kIHJl
YXNvbiBwcm9wZXJ0aWVzCisgICAgICAgIGluIENsb3NlRXZlbnQuIFRoaXMgY2hhbmdlIGV4cG9z
ZSBpbmNvbWluZyBjbG9zaW5nIGZyYW1lJ3MgY29kZQorICAgICAgICBhbmQgcmVhc29uIHRvIEph
dmFTY3JpcHQgQVBJLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2Nsb3NlLWNvZGUtYW5kLXJlYXNvbi5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtY29kZS1hbmQtcmVhc29uLmh0
bWwKKworICAgICAgICAqIHdlYnNvY2tldHMvQ2xvc2VFdmVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xvc2VFdmVudDo6aW5pdENsb3NlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvc2VF
dmVudDo6Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpDbG9zZUV2ZW50OjpyZWFzb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xvc2VFdmVudDo6Q2xvc2VFdmVudCk6CisgICAgICAgICogd2Vic29j
a2V0cy9DbG9zZUV2ZW50LmlkbDoKKyAgICAgICAgQWRkIGNvZGUgYW5kIHJlYXNvbiBwcm9wZXJp
ZXMuCisgICAgICAgICogd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENsb3NlQ2FsbGJhY2spOgorICAgICAg
ICAqIHdlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmg6
CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0OjpkaWRDb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlk
Q2xvc2UpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Lmg6CisgICAgICAgIEFkZCBp
bXBsZW1lbnQgdG8gaGFuZGxlIGNvZGUgYW5kIHJlYXNvbi4KKyAgICAgICAgKiB3ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5l
bDo6V2ViU29ja2V0Q2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVs
OjpkaWRDbG9zZVNvY2tldFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFu
bmVsOjpwcm9jZXNzRnJhbWUpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5oOgorICAgICAgICBBZGQgY2xvc2luZyBmcmFtZSBwYXlsb2FkIHBhcnNlci4KKyAgICAgICAg
KiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldENoYW5uZWxDbGllbnQ6OmRpZENsb3NlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OndvcmtlckNvbnRleHREaWRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkQ2xvc2UpOgorICAgICAgICAqIHdlYnNvY2tl
dHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgQWRkIGltcGxl
bWVudCB0byBoYW5kbGUgY29kZSBhbmQgcmVhc29uLgorCiAyMDExLTA4LTE4ICBHYXZpbiBQZXRl
cnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFByZXBhcmUgZnJhbWVzIGZvciBo
aXN0b3J5IG5hdmlnYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L0Nsb3NlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5oCmlu
ZGV4IGEwNzkwMDMzZjRjYzczMDBhOGRiM2NhN2U2ZjdiNGQ1MDY2NjM4NDUuLjliZjI1OWNkNWM0
ODVlZmE4MzllZDk0MjMxOTAzZDVjZGRmYmU3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvQ2xvc2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMv
Q2xvc2VFdmVudC5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDbG9zZUV2ZW50KCkpOwogICAgIH0KIAotICAgIHZvaWQgaW5pdENsb3NlRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBib29sIHdhc0NsZWFuKQorICAgIHZvaWQgaW5pdENsb3NlRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBib29sIHdhc0Ns
ZWFuLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKICAgICB7CiAg
ICAgICAgIGlmIChkaXNwYXRjaGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC01MywxNyAr
NTMsMjQgQEAgcHVibGljOgogICAgICAgICBpbml0RXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5j
ZWxhYmxlKTsKIAogICAgICAgICBtX3dhc0NsZWFuID0gd2FzQ2xlYW47CisgICAgICAgIG1fY29k
ZSA9IGNvZGU7CisgICAgICAgIG1fcmVhc29uID0gcmVhc29uOwogICAgIH0KIAogICAgIGJvb2wg
d2FzQ2xlYW4oKSBjb25zdCB7IHJldHVybiBtX3dhc0NsZWFuOyB9CisgICAgdW5zaWduZWQgc2hv
cnQgY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZTsgfQorICAgIFN0cmluZyByZWFzb24oKSBj
b25zdCB7IHJldHVybiBtX3JlYXNvbjsgfQogCiBwcml2YXRlOgogICAgIENsb3NlRXZlbnQoKQog
ICAgICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBmYWxzZSwgZmFsc2UpCiAg
ICAgICAgICwgbV93YXNDbGVhbihmYWxzZSkKKyAgICAgICAgLCBtX2NvZGUoMCkKICAgICB7IH0K
IAogICAgIGJvb2wgbV93YXNDbGVhbjsKKyAgICB1bnNpZ25lZCBzaG9ydCBtX2NvZGU7CisgICAg
U3RyaW5nIG1fcmVhc29uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9DbG9zZUV2ZW50LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5pZGwKaW5kZXggZDc0YWIyZDY1ZmE2NmVjNGIyNTY4
N2E1Y2EyMzU5OTc0MDRkODhhMy4uYTI5MTE0NjZiMWE4MjBkMDlmMTk4ZTE1NTczYmExZDI4NzMy
ZmNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9DbG9zZUV2ZW50Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaWRsCkBAIC0zNCwx
MCArMzQsMTQgQEAgbW9kdWxlIGV2ZW50cyB7CiAgICAgICAgIE5vU3RhdGljVGFibGVzCiAgICAg
XSBDbG9zZUV2ZW50IDogRXZlbnQgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVh
biB3YXNDbGVhbjsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IGNv
ZGU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ29udmVydGluZ051bGxTdHJpbmdUbz1V
bmRlZmluZWRdIERPTVN0cmluZyByZWFzb247CiAgICAgICAgIHZvaWQgaW5pdENsb3NlRXZlbnQo
aW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcgdHlwZUFyZywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFs
dWVdIGJvb2xlYW4gY2FuQnViYmxlQXJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gYm9vbGVhbiBjYW5jZWxhYmxlQXJnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRW
YWx1ZV0gYm9vbGVhbiB3YXNDbGVhbkFyZyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBib29sZWFuIHdhc0NsZWFuQXJnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRW
YWx1ZV0gdW5zaWduZWQgc2hvcnQgY29kZUFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIERPTVN0cmluZyByZWFzb25Bcmcp
OwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcApp
bmRleCAxYTE3OWM5ODI5MjJkMTcyNGM0MzUzNWIyYzQ3ZDZlMjY1ZDYzM2I4Li4yM2Y0NWFkYTBh
YWNiY2YzNTE5YWYxOThlNjVkMGFkNmExN2YyMTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXIuY3BwCkBAIC0xMzksOSArMTM5LDkgQEAgdm9pZCBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiAg
ICAgICAgIHByb2Nlc3NQZW5kaW5nVGFza3MoKTsKIH0KIAotdm9pZCBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENsb3NlKHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVk
QnVmZmVyZWRBbW91bnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQ6OkNsb3NpbmdIYW5kc2hha2VD
b21wbGV0aW9uU3RhdHVzIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uKQordm9pZCBUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENsb3NlKHVuc2lnbmVkIGxvbmcg
dW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQ6OkNsb3NpbmdI
YW5kc2hha2VDb21wbGV0aW9uU3RhdHVzIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCB1bnNp
Z25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKLSAgICBtX3BlbmRpbmdU
YXNrcy5hcHBlbmQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXI6OmRpZENsb3NlQ2FsbGJhY2ssIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3Mo
dGhpcyksIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlv
bikpOworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChjcmVhdGVDYWxsYmFja1Rhc2soJlRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ2xvc2VDYWxsYmFjaywgQWxs
b3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3Np
bmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2RlLCByZWFzb24pKTsKICAgICBpZiAoIW1fc3VzcGVu
ZGVkKQogICAgICAgICBwcm9jZXNzUGVuZGluZ1Rhc2tzKCk7CiB9CkBAIC0xODcsMTEgKzE4Nywx
MSBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkU3Rh
cnRDbG9zaW5nSGFuZHNoYWtlQ2FsbGJhY2soUwogICAgICAgICB3cmFwcGVyLT5tX2NsaWVudC0+
ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7CiB9CiAKLXZvaWQgVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciog
d3JhcHBlciwgdW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgV2ViU29ja2V0
Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMgY2xvc2luZ0hh
bmRzaGFrZUNvbXBsZXRpb24pCit2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlcjo6ZGlkQ2xvc2VDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIqIHdyYXBwZXIsIHVuc2ln
bmVkIGxvbmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQ6
OkNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0
aW9uLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKICAgICBB
U1NFUlRfVU5VU0VEKGNvbnRleHQsICFjb250ZXh0KTsKICAgICBpZiAod3JhcHBlci0+bV9jbGll
bnQpCi0gICAgICAgIHdyYXBwZXItPm1fY2xpZW50LT5kaWRDbG9zZSh1bmhhbmRsZWRCdWZmZXJl
ZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24pOworICAgICAgICB3cmFwcGVyLT5t
X2NsaWVudC0+ZGlkQ2xvc2UodW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hh
a2VDb21wbGV0aW9uLCBjb2RlLCByZWFzb24pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaAppbmRleCBiNTRhY2EwNzBhOTk5
OGMwOGQxMjhkODdkN2ZkZWExODA3OGQzMzBhLi5iY2VhOWQ2Y2JjYmU3YTc5NDMwZWViYThlZjg0
MmE1ODMzOTkxMjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmgKQEAg
LTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29ubmVjdCgpOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICB2b2lkIGRpZFN0
YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpOwotICAgIHZvaWQgZGlkQ2xvc2UodW5zaWduZWQgbG9uZyB1
bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hh
bmRzaGFrZUNvbXBsZXRpb25TdGF0dXMpOworICAgIHZvaWQgZGlkQ2xvc2UodW5zaWduZWQgbG9u
ZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudDo6Q2xvc2lu
Z0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMsIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0IFN0
cmluZyYgcmVhc29uKTsKIAogICAgIHZvaWQgc3VzcGVuZCgpOwogICAgIHZvaWQgcmVzdW1lKCk7
CkBAIC04NSw3ICs4NSw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCBkaWRDb25uZWN0
Q2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlQ2Fs
bGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlciosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgc3RhdGljIHZvaWQg
ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciopOwotICAgIHN0YXRpYyB2
b2lkIGRpZENsb3NlQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciosIHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVkQnVm
ZmVyZWRBbW91bnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQ6OkNsb3NpbmdIYW5kc2hha2VDb21w
bGV0aW9uU3RhdHVzKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDbG9zZUNhbGxiYWNrKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIq
LCB1bnNpZ25lZCBsb25nIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBXZWJTb2NrZXRDaGFubmVs
Q2xpZW50OjpDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvblN0YXR1cywgdW5zaWduZWQgc2hvcnQg
Y29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOwogCiAgICAgV2ViU29ja2V0Q2hhbm5lbENsaWVu
dCogbV9jbGllbnQ7CiAgICAgYm9vbCBtX3N5bmNNZXRob2REb25lOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDFiMDEzM2U5N2RiNWRjZGMyOTg5ZDcyYWE2ZjYw
NmQ4ZWY1ZDk1MDMuLmYxNzk3ZjA4NGFjZjQwMThjMmQzNjQ1NzdhMThiMjhlNDg2ZGZmNmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTM3OCw3ICszNzgsNyBA
QCB2b2lkIFdlYlNvY2tldDo6ZGlkQ29ubmVjdCgpCiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJT
b2NrZXQgJXAgZGlkQ29ubmVjdCIsIHRoaXMpOwogICAgIGlmIChtX3N0YXRlICE9IENPTk5FQ1RJ
TkcpIHsKLSAgICAgICAgZGlkQ2xvc2UoMCwgQ2xvc2luZ0hhbmRzaGFrZUluY29tcGxldGUpOwor
ICAgICAgICBkaWRDbG9zZSgwLCBDbG9zaW5nSGFuZHNoYWtlSW5jb21wbGV0ZSwgV2ViU29ja2V0
Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVBYm5vcm1hbENsb3N1cmUsICIiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKQEAgLTQx
Myw3ICs0MTMsNyBAQCB2b2lkIFdlYlNvY2tldDo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkK
ICAgICBtX3N0YXRlID0gQ0xPU0lORzsKIH0KIAotdm9pZCBXZWJTb2NrZXQ6OmRpZENsb3NlKHVu
c2lnbmVkIGxvbmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIENsb3NpbmdIYW5kc2hha2VDb21w
bGV0aW9uU3RhdHVzIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uKQordm9pZCBXZWJTb2NrZXQ6
OmRpZENsb3NlKHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIENsb3NpbmdI
YW5kc2hha2VDb21wbGV0aW9uU3RhdHVzIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCB1bnNp
Z25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKICAgICBMT0coTmV0d29y
aywgIldlYlNvY2tldCAlcCBkaWRDbG9zZSIsIHRoaXMpOwogICAgIGlmICghbV9jaGFubmVsKQpA
QCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgV2ViU29ja2V0OjpkaWRDbG9zZSh1bnNpZ25lZCBsb25n
IHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBDbG9zaW5nSGFuZHNoYWtlCiAgICAgbV9idWZmZXJl
ZEFtb3VudEFmdGVyQ2xvc2UgKz0gdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQ7CiAgICAgQVNTRVJU
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgUmVmUHRyPENsb3NlRXZlbnQ+IGV2ZW50
ID0gQ2xvc2VFdmVudDo6Y3JlYXRlKCk7Ci0gICAgZXZlbnQtPmluaXRDbG9zZUV2ZW50KGV2ZW50
TmFtZXMoKS5jbG9zZUV2ZW50LCBmYWxzZSwgZmFsc2UsIHdhc0NsZWFuKTsKKyAgICBldmVudC0+
aW5pdENsb3NlRXZlbnQoZXZlbnROYW1lcygpLmNsb3NlRXZlbnQsIGZhbHNlLCBmYWxzZSwgd2Fz
Q2xlYW4sIGNvZGUsIHJlYXNvbik7CiAgICAgZGlzcGF0Y2hFdmVudChldmVudCk7CiAgICAgaWYg
KG1fY2hhbm5lbCkgewogICAgICAgICBtX2NoYW5uZWwtPmRpc2Nvbm5lY3QoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IDJmNzFiMzE1MmE4ZjFlMjYzNTQ2ZmQ5NGE2
NjgyOTZjMzFkY2IxZWEuLjI3MTI1NDFmYTlmZjJmM2U3OWI0ODVhZDkzNzdhNDE4NjUxMmIyYjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApAQCAtMTAyLDcgKzEwMiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZUVycm9yKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydENsb3NpbmdI
YW5kc2hha2UoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKHVuc2lnbmVkIGxvbmcg
dW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIENsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVz
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVk
QnVmZmVyZWRBbW91bnQsIENsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzLCB1bnNpZ25l
ZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICBXZWJTb2NrZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggOWFmYzc0YzVhN2Q4ZDU5
NGY2OWQ0NmJmZDI4NTI0ZDJmMTJjYmVmNy4uZWU4NjhmZmIzMTZiYmM3NjdiYmZhNzMzYjEwMjI0
NDU0YzQwNjU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuY3BwCkBAIC05OCw2ICs5OCw3IEBAIFdlYlNvY2tldENoYW5uZWw6OldlYlNvY2tldENo
YW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViU29ja2V0Q2hhCiAgICAg
LCBtX2lkZW50aWZpZXIoMCkKICAgICAsIG1fdXNlSGl4aWU3NlByb3RvY29sKHRydWUpCiAgICAg
LCBtX2hhc0NvbnRpbnVvdXNGcmFtZShmYWxzZSkKKyAgICAsIG1fY2xvc2VFdmVudENvZGUoQ2xv
c2VFdmVudENvZGVBYm5vcm1hbENsb3N1cmUpCiB7CiAgICAgQVNTRVJUKG1fY29udGV4dC0+aXNE
b2N1bWVudCgpKTsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVu
dCo+KG1fY29udGV4dCk7CkBAIC0yNDYsNyArMjQ3LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVs
OjpkaWRDbG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkKICAgICAg
ICAgbV9jb250ZXh0ID0gMDsKICAgICAgICAgbV9oYW5kbGUgPSAwOwogICAgICAgICBpZiAoY2xp
ZW50KQotICAgICAgICAgICAgY2xpZW50LT5kaWRDbG9zZShtX3VuaGFuZGxlZEJ1ZmZlcmVkQW1v
dW50LCBtX3JlY2VpdmVkQ2xvc2luZ0hhbmRzaGFrZSA/IFdlYlNvY2tldENoYW5uZWxDbGllbnQ6
OkNsb3NpbmdIYW5kc2hha2VDb21wbGV0ZSA6IFdlYlNvY2tldENoYW5uZWxDbGllbnQ6OkNsb3Np
bmdIYW5kc2hha2VJbmNvbXBsZXRlKTsKKyAgICAgICAgICAgIGNsaWVudC0+ZGlkQ2xvc2UobV91
bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgbV9yZWNlaXZlZENsb3NpbmdIYW5kc2hha2UgPyBXZWJT
b2NrZXRDaGFubmVsQ2xpZW50OjpDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGUgOiBXZWJTb2NrZXRD
aGFubmVsQ2xpZW50OjpDbG9zaW5nSGFuZHNoYWtlSW5jb21wbGV0ZSwgbV9jbG9zZUV2ZW50Q29k
ZSwgbV9jbG9zZUV2ZW50UmVhc29uKTsKICAgICB9CiAgICAgZGVyZWYoKTsKIH0KQEAgLTYyMyw3
ICs2MjQsMTYgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWUoKQogICAgICAg
ICBicmVhazsKIAogICAgIGNhc2UgT3BDb2RlQ2xvc2U6Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5k
bGUgcGF5bG9hZC4KKyAgICAgICAgaWYgKGZyYW1lLnBheWxvYWRMZW5ndGggPj0gMikgeworICAg
ICAgICAgICAgdW5zaWduZWQgY2hhciBoaWdoQnl0ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXI+KGZyYW1lLnBheWxvYWRbMF0pOworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBsb3dCeXRl
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oZnJhbWUucGF5bG9hZFsxXSk7CisgICAgICAg
ICAgICBtX2Nsb3NlRXZlbnRDb2RlID0gaGlnaEJ5dGUgPDwgOCB8IGxvd0J5dGU7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgbV9jbG9zZUV2ZW50Q29kZSA9IENsb3NlRXZlbnRDb2RlTm9T
dGF0dXNSY3ZkOworICAgICAgICBpZiAoZnJhbWUucGF5bG9hZExlbmd0aCA+PSAzKQorICAgICAg
ICAgICAgbV9jbG9zZUV2ZW50UmVhc29uID0gU3RyaW5nOjpmcm9tVVRGOCgmZnJhbWUucGF5bG9h
ZFsyXSwgZnJhbWUucGF5bG9hZExlbmd0aCAtIDIpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBtX2Nsb3NlRXZlbnRSZWFzb24gPSAiIjsKICAgICAgICAgc2tpcEJ1ZmZlcihmcmFtZS5mcmFt
ZUVuZCAtIG1fYnVmZmVyKTsKICAgICAgICAgbV9yZWNlaXZlZENsb3NpbmdIYW5kc2hha2UgPSB0
cnVlOwogICAgICAgICBzdGFydENsb3NpbmdIYW5kc2hha2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggMGZkOTZmMTYxZWM0ZTk2NDllM2Vi
NGRjMDY3OGUxODc1MmQ2MzFmYS4uMzg4NGZjZjUzZDVjYTQyMGYyNjg0NzU5ZmJiOWU1NDU0Y2Mx
MTRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgK
QEAgLTc0LDYgKzc0LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShTb2NrZXRTdHJlYW1IYW5kbGUq
LCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKIAorICAgICAgICBlbnVtIENsb3NlRXZlbnRD
b2RlIHsKKyAgICAgICAgICAgIENsb3NlRXZlbnRDb2RlTm9ybWFsQ2xvc3VyZSA9IDEwMDAsCisg
ICAgICAgICAgICBDbG9zZUV2ZW50Q29kZUdvaW5nQXdheSA9IDEwMDEsCisgICAgICAgICAgICBD
bG9zZUV2ZW50Q29kZVByb3RvY29sRXJyb3IgPSAxMDAyLAorICAgICAgICAgICAgQ2xvc2VFdmVu
dENvZGVVbnN1cHBvcnRlZERhdGEgPSAxMDAzLAorICAgICAgICAgICAgQ2xvc2VFdmVudENvZGVG
cmFtZVRvb0xhcmdlID0gMTAwNCwKKyAgICAgICAgICAgIENsb3NlRXZlbnRDb2RlTm9TdGF0dXNS
Y3ZkID0gMTAwNSwKKyAgICAgICAgICAgIENsb3NlRXZlbnRDb2RlQWJub3JtYWxDbG9zdXJlID0g
MTAwNiwKKyAgICAgICAgICAgIENsb3NlRXZlbnRDb2RlSW52YWxpZFVURjggPSAxMDA3CisgICAg
ICAgIH07CisKICAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxXZWJTb2NrZXRDaGFubmVsPjo6cmVm
OwogICAgICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldENoYW5uZWw+OjpkZXJlZjsKIApA
QCAtMTU0LDYgKzE2NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2hh
c0NvbnRpbnVvdXNGcmFtZTsKICAgICAgICAgT3BDb2RlIG1fY29udGludW91c0ZyYW1lT3BDb2Rl
OwogICAgICAgICBWZWN0b3I8Y2hhcj4gbV9jb250aW51b3VzRnJhbWVEYXRhOworICAgICAgICB1
bnNpZ25lZCBzaG9ydCBtX2Nsb3NlRXZlbnRDb2RlOworICAgICAgICBTdHJpbmcgbV9jbG9zZUV2
ZW50UmVhc29uOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgKaW5kZXggMzhi
ZDE3ZDAwZDY1ZjJmMmIwMWY0YjkzODBjMGI0ZTJjN2M3Njg3NS4uYzM4YjA1YzgxNGZiM2EzMDcw
OWExMmRjMzM2NDJlODUzYTFlYTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgICAgICBDbG9zaW5nSGFuZHNoYWtlSW5jb21wbGV0ZSwKICAgICAg
ICAgICAgIENsb3NpbmdIYW5kc2hha2VDb21wbGV0ZQogICAgICAgICB9OwotICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2xvc2UodW5zaWduZWQgbG9uZyAvKiB1bmhhbmRsZWRCdWZmZXJlZEFtb3Vu
dCAqLywgQ2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMpIHsgfQorICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2xvc2UodW5zaWduZWQgbG9uZyAvKiB1bmhhbmRsZWRCdWZmZXJlZEFtb3Vu
dCAqLywgQ2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMsIHVuc2lnbmVkIHNob3J0IC8q
IGNvZGUgKi8sIGNvbnN0IFN0cmluZyYgLyogcmVhc29uICovKSB7IH0KIAogICAgIHByb3RlY3Rl
ZDoKICAgICAgICAgV2ViU29ja2V0Q2hhbm5lbENsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmNwcAppbmRleCAzMzRlNzUyNmZiNzJlNzNhYTU2NjkzZDgwNGNjZDE4Y2ZiMjI4NmUy
Li45ZGFiODEyZmM4MDE1ZjM4OWY3NDA4ZDBkZWE3Y2JlY2Y5NjI4NGYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDksIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yNjUsMTcgKzI2NSwxNyBAQCB2b2lkIFdvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2Uo
KQogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0
ZUNhbGxiYWNrVGFzaygmd29ya2VyQ29udGV4dERpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSwgbV93
b3JrZXJDbGllbnRXcmFwcGVyKSwgbV90YXNrTW9kZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHdvcmtl
ckNvbnRleHREaWRDbG9zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVm
UHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50
V3JhcHBlciwgdW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgV2ViU29ja2V0
Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMgY2xvc2luZ0hh
bmRzaGFrZUNvbXBsZXRpb24pCitzdGF0aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlkQ2xvc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIHVuc2lnbmVkIGxv
bmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQ6OkNsb3Np
bmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCB1
bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKICAgICBBU1NFUlRf
VU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKLSAgICB3b3JrZXJD
bGllbnRXcmFwcGVyLT5kaWRDbG9zZSh1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hh
bmRzaGFrZUNvbXBsZXRpb24pOworICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZENsb3NlKHVu
aGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwg
cmVhc29uKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVl
cjo6ZGlkQ2xvc2UodW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgQ2xvc2lu
Z0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24pCit2
b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRDbG9zZSh1bnNp
Z25lZCBsb25nIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBDbG9zaW5nSGFuZHNoYWtlQ29tcGxl
dGlvblN0YXR1cyBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgdW5zaWduZWQgc2hvcnQgY29k
ZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICBtX21haW5XZWJTb2NrZXRDaGFubmVsID0gMDsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RU
YXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRl
eHREaWRDbG9zZSwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCB1bmhhbmRsZWRCdWZmZXJlZEFtb3Vu
dCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24pLCBtX3Rhc2tNb2RlKTsKKyAgICBtX2xvYWRl
clByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2so
JndvcmtlckNvbnRleHREaWRDbG9zZSwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCB1bmhhbmRsZWRC
dWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbiks
IG1fdGFza01vZGUpOwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpCcmlkZ2U6OnNldFdlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgQnJpZGdlKiB0aGlzUHRyLCBQZWVyKiBwZWVyLCBQYXNzUmVmUHRyPFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgYm9vbCB1
c2VIaXhpZTc2UHJvdG9jb2wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggNDQwMDM3MGY1
MDVjZjFjYzliNWJkNzcxZDI2NDJmYjg4NGE2ZmIzZS4uMGRjMzhjMzJkN2YyNzllNmEyMGEwYzdk
NDMzNmM4OGVmNDFiMjY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dl
YnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0xMDMs
NyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZENvbm5lY3QoKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKTsK
LSAgICAgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVkQnVm
ZmVyZWRBbW91bnQsIENsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGRpZENsb3NlKHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91
bnQsIENsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzLCB1bnNpZ25lZCBzaG9ydCBjb2Rl
LCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBQZWVyKFBh
c3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiwgV29ya2Vy
TG9hZGVyUHJveHkmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB0YXNr
TW9kZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104478</attachid>
            <date>2011-08-19 02:04:34 -0700</date>
            <delta_ts>2011-08-19 03:17:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66362-20110819180432.patch</filename>
            <type>text/plain</type>
            <size>33550</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMyOTkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjZWUyZGE4ODE2Zjc5OTc0NzdmZmM5
NjE0NTY5NGM3NTYyNDQ2YzA5Li44ZTE5ZDNiMTViNzIxOWQ0MmY2MGIwNGI0ODNjN2JhNjgxNTY3
ODhiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMDgtMTcgIFRha2FzaGkgVG95b3NoaW1h
ICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJTb2NrZXRdIENsb3NlRXZl
bnQncyBjb2RlIGFuZCByZWFzb24gcHJvcGVydGllcyBzdXBwb3J0LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYzNjIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50IFdlYlNvY2tldCBpbXBsZW1l
bnRhdGlvbiBtaXNzIGNvZGUgYW5kIHJlYXNvbiBwcm9wZXJ0aWVzCisgICAgICAgIGluIENsb3Nl
RXZlbnQuIFRoaXMgY2hhbmdlIGV4cG9zZSBpbmNvbWluZyBjbG9zaW5nIGZyYW1lJ3MgY29kZQor
ICAgICAgICBhbmQgcmVhc29uIHRvIEphdmFTY3JpcHQgQVBJLgorCisgICAgICAgICogaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZS1jb2RlLWFuZC1yZWFzb24tZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Ns
b3NlLWNvZGUtYW5kLXJlYXNvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLWNvZGUtYW5kLXJlYXNvbl93c2gucHk6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS1j
b2RlLWFuZC1yZWFzb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtY29kZS1hbmQtcmVhc29uLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vy
cy9yZXNvdXJjZXMvY2xvc2UtY29kZS1hbmQtcmVhc29uLmpzOiBBZGRlZC4KKyAgICAgICAgKHBv
c3RSZXN1bHQpOgorICAgICAgICAod3Mub25vcGVuKToKKyAgICAgICAgKHdzLm9ubWVzc2FnZSk6
CisgICAgICAgICh3cy5vbmNsb3NlKToKKwogMjAxMS0wOC0xOCAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFtqc2Z1bmZ1enpdIERGRyBzcGVjdWxhdGl2ZSBKSVQg
ZG9lcyBkaXZpZGUtYnktemVybyBjaGVja3MgaW5jb3JyZWN0bHkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2UtY29kZS1hbmQtcmVh
c29uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvY2xvc2UtY29kZS1hbmQtcmVhc29uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjI0
YWMyYjdiMjY2NmZjMTAwNTIyNDM1OGRhOGY5ZTZkZWMxMmU5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZS1jb2RlLWFu
ZC1yZWFzb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzQgQEAKK0NPTlNPTEUgTUVTU0FHRTog
bGluZSAwOiBXZWJTb2NrZXQgaXMgY2xvc2VkIGJlZm9yZSB0aGUgY29ubmVjdGlvbiBpcyBlc3Rh
Ymxpc2hlZC4KK1Rlc3QgQ2xvc2VFdmVudCBjb2RlIGFuZCByZWFzb24gcHJvcGVydHkuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKword3Mub25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNT
IGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK1BBU1MgY2xvc2VFdmVudC5jb2RlIGlzIGNv
ZGVBYm5vcm1hbENsb3N1cmUKK1BBU1MgY2xvc2VFdmVudC5yZWFzb24gaXMgZW1wdHlTdHJpbmcK
K1dlYlNvY2tldFRlc3Qub25vcGVuKCkgd2FzIGNhbGxlZCB3aXRoIHRlc3RJZCA9IDAuCitXZWJT
b2NrZXRUZXN0Lm9uY2xvc2UoKSB3YXMgY2FsbGVkIHdpdGggdGVzdElkID0gMC4KK1BBU1MgY2xv
c2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIGNsb3NlRXZlbnQuY29kZSBpcyBleHBlY3Rl
ZENvZGVbdGVzdElkXQorUEFTUyBjbG9zZUV2ZW50LnJlYXNvbiBpcyBleHBlY3RlZFJlYXNvblt0
ZXN0SWRdCitQQVNTIGNsb3NlRXZlbnQuY29kZSBpcyBleHBlY3RlZENvZGVbdGVzdElkXQorUEFT
UyBjbG9zZUV2ZW50LnJlYXNvbiBpcyBleHBlY3RlZFJlYXNvblt0ZXN0SWRdCitXZWJTb2NrZXRU
ZXN0Lm9ub3BlbigpIHdhcyBjYWxsZWQgd2l0aCB0ZXN0SWQgPSAxLgorV2ViU29ja2V0VGVzdC5v
bmNsb3NlKCkgd2FzIGNhbGxlZCB3aXRoIHRlc3RJZCA9IDEuCitQQVNTIGNsb3NlRXZlbnQud2Fz
Q2xlYW4gaXMgdHJ1ZQorUEFTUyBjbG9zZUV2ZW50LmNvZGUgaXMgZXhwZWN0ZWRDb2RlW3Rlc3RJ
ZF0KK1BBU1MgY2xvc2VFdmVudC5yZWFzb24gaXMgZXhwZWN0ZWRSZWFzb25bdGVzdElkXQorUEFT
UyBjbG9zZUV2ZW50LmNvZGUgaXMgZXhwZWN0ZWRDb2RlW3Rlc3RJZF0KK1BBU1MgY2xvc2VFdmVu
dC5yZWFzb24gaXMgZXhwZWN0ZWRSZWFzb25bdGVzdElkXQorV2ViU29ja2V0VGVzdC5vbm9wZW4o
KSB3YXMgY2FsbGVkIHdpdGggdGVzdElkID0gMi4KK1dlYlNvY2tldFRlc3Qub25jbG9zZSgpIHdh
cyBjYWxsZWQgd2l0aCB0ZXN0SWQgPSAyLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRy
dWUKK1BBU1MgY2xvc2VFdmVudC5jb2RlIGlzIGV4cGVjdGVkQ29kZVt0ZXN0SWRdCitQQVNTIGNs
b3NlRXZlbnQucmVhc29uIGlzIGV4cGVjdGVkUmVhc29uW3Rlc3RJZF0KK1BBU1MgY2xvc2VFdmVu
dC5jb2RlIGlzIGV4cGVjdGVkQ29kZVt0ZXN0SWRdCitQQVNTIGNsb3NlRXZlbnQucmVhc29uIGlz
IGV4cGVjdGVkUmVhc29uW3Rlc3RJZF0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLWNvZGUtYW5kLXJlYXNvbi5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZS1jb2RlLWFuZC1yZWFzb24u
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kMjg4ZWI1MmViNmVkZGJmYzAwYmFjMTcyYTBmN2IyMGZiNTYzMGQ0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9jbG9zZS1jb2RlLWFuZC1yZWFzb24uaHRtbApAQCAtMCwwICsxLDEwMCBAQAorPCFE
T0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K
K2Rlc2NyaXB0aW9uKCJUZXN0IENsb3NlRXZlbnQgY29kZSBhbmQgcmVhc29uIHByb3BlcnR5LiIp
OworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgi
V2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworCit2YXIgY2xvc2VF
dmVudDsKK3ZhciBjb2RlTm9TdGF0dXNSY3ZkID0gMTAwNTsKK3ZhciBjb2RlQWJub3JtYWxDbG9z
dXJlID0gMTAwNjsKK3ZhciBlbXB0eVN0cmluZyA9ICIiOworCit2YXIgd3MgPSBuZXcgV2ViU29j
a2V0KCJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmdpbmctaGFu
ZHNoYWtlIik7CisKK3dzLm9ub3BlbiA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIHRlc3RGYWls
ZWQoIndzLm9ub3BlbigpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0gXCIiICsgZXZlbnQuZGF0YSAr
ICJcIikiKTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBkZWJ1
Zygid3Mub25jbG9zZSgpIHdhcyBjYWxsZWQuIik7CisgICAgY2xvc2VFdmVudCA9IGV2ZW50Owor
ICAgIHNob3VsZEJlRmFsc2UoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAgICBzaG91bGRCZSgi
Y2xvc2VFdmVudC5jb2RlIiwgImNvZGVBYm5vcm1hbENsb3N1cmUiKTsKKyAgICBzaG91bGRCZSgi
Y2xvc2VFdmVudC5yZWFzb24iLCAiZW1wdHlTdHJpbmciKTsKK307CisKK3dzLmNsb3NlKCk7CisK
K3ZhciB0ZXN0SWQgPSAwOwordmFyIHRlc3ROdW0gPSAzOwordmFyIHNlbmREYXRhID0gWworICAg
ICItIiwgLy8gcmVxdWVzdCBjbG9zZSBmcmFtZSB3aXRob3V0IGNvZGUgYW5kIHJlYXNvbgorICAg
ICItLSIsIC8vIHJlcXVlc3QgY2xvc2UgZnJhbWUgd2l0aCBpbnZhbGlkIGJvZHkgd2hpY2ggc2l6
ZSBpcyAxCisgICAgIjY1NTM1IGdvb2QgYnllIiwgLy8gcmVxdWVzdCBjbG9zZSBmcmFtZSB3aXRo
IHNwZWNpZmllZCBjb2RlIGFuZCByZWFzb24KK107Cit2YXIgZXhwZWN0ZWRDb2RlID0gWworICAg
IGNvZGVOb1N0YXR1c1JjdmQsCisgICAgY29kZU5vU3RhdHVzUmN2ZCwKKyAgICA2NTUzNSwKK107
Cit2YXIgZXhwZWN0ZWRSZWFzb24gPSBbCisgICAgIiIsCisgICAgIiIsCisgICAgImdvb2QgYnll
IiwKK107CisKK1dlYlNvY2tldFRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICB0aGlzLndzID0gbmV3
IFdlYlNvY2tldCgid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9z
ZS1jb2RlLWFuZC1yZWFzb24iKTsKKyAgICB0aGlzLndzLm9ub3BlbiA9IHRoaXMub25vcGVuOwor
ICAgIHRoaXMud3Mub25tZXNzYWdlID0gdGhpcy5vbm1lc3NhZ2U7CisgICAgdGhpcy53cy5vbmNs
b3NlID0gdGhpcy5vbmNsb3NlOworfTsKKworV2ViU29ja2V0VGVzdC5wcm90b3R5cGUub25vcGVu
ID0gZnVuY3Rpb24oKQoreworICAgIGRlYnVnKCJXZWJTb2NrZXRUZXN0Lm9ub3BlbigpIHdhcyBj
YWxsZWQgd2l0aCB0ZXN0SWQgPSAiICsgdGVzdElkICsgIi4iKTsKKyAgICB0aGlzLnNlbmQoc2Vu
ZERhdGFbdGVzdElkXSk7Cit9OworCitXZWJTb2NrZXRUZXN0LnByb3RvdHlwZS5vbm1lc3NhZ2Ug
PSBmdW5jdGlvbihldmVudCkKK3sKKyAgICB0ZXN0RmFpbGVkKCJXZWJTb2NrZXRUZXN0Lm9ubWVz
c2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0gXCIiICsgZXZlbnQuZGF0YSArICJcIikiKTsK
K307CisKK1dlYlNvY2tldFRlc3QucHJvdG90eXBlLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkK
K3sKKyAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7CisgICAgZGVidWcoIldlYlNvY2tldFRlc3Qub25j
bG9zZSgpIHdhcyBjYWxsZWQgd2l0aCB0ZXN0SWQgPSAiICsgdGVzdElkICsgIi4iKTsKKyAgICBz
aG91bGRCZVRydWUoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAgICBzaG91bGRCZSgiY2xvc2VF
dmVudC5jb2RlIiwgImV4cGVjdGVkQ29kZVt0ZXN0SWRdIik7CisgICAgc2hvdWxkQmUoImNsb3Nl
RXZlbnQucmVhc29uIiwgImV4cGVjdGVkUmVhc29uW3Rlc3RJZF0iKTsKKyAgICBjbG9zZUV2ZW50
LmNvZGUgPSAwOworICAgIGNsb3NlRXZlbnQucmVhc29uID0gInJlYWRvbmx5IjsKKyAgICBzaG91
bGRCZSgiY2xvc2VFdmVudC5jb2RlIiwgImV4cGVjdGVkQ29kZVt0ZXN0SWRdIik7CisgICAgc2hv
dWxkQmUoImNsb3NlRXZlbnQucmVhc29uIiwgImV4cGVjdGVkUmVhc29uW3Rlc3RJZF0iKTsKKyAg
ICB0ZXN0SWQrKzsKKyAgICBpZiAodGVzdElkIDwgdGVzdE51bSkKKyAgICAgICAgdGVzdCA9IG5l
dyBXZWJTb2NrZXRUZXN0KCk7CisgICAgZWxzZQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKK307
CisKK3ZhciB0ZXN0ID0gbmV3IFdlYlNvY2tldFRlc3QoKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0
LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9j
bG9zZS1jb2RlLWFuZC1yZWFzb25fd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9jbG9zZS1jb2RlLWFuZC1yZWFzb25fd3NoLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE1YTJkMjQwZGMwMzdjYmVjMjczOTI1NWIzNGMyMzFmZmUxMTg2MjMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLWNv
ZGUtYW5kLXJlYXNvbl93c2gucHkKQEAgLTAsMCArMSwxOSBAQAoraW1wb3J0IHN0cnVjdAorCitm
cm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgc3RyZWFtCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4
dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5z
ZmVyX2RhdGEocmVxdWVzdCk6CisgICAgbGluZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2VpdmVf
bWVzc2FnZSgpCisgICAgaWYgbGluZSBpcyBOb25lOgorICAgICAgICByZXR1cm4KKyAgICBpZiBs
aW5lID09ICctJzoKKyAgICAgICAgZGF0YSA9ICcnCisgICAgZWxpZiBsaW5lID09ICctLSc6Cisg
ICAgICAgIGRhdGEgPSAnWCcKKyAgICBlbHNlOgorICAgICAgICBjb2RlLCByZWFzb24gPSBsaW5l
LnNwbGl0KCcgJywgMSkKKyAgICAgICAgZGF0YSA9IHN0cnVjdC5wYWNrKCchSCcsIGludChjb2Rl
KSkgKyByZWFzb24uZW5jb2RlKCd1dGYtOCcpCisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRl
KHN0cmVhbS5jcmVhdGVfY2xvc2VfZnJhbWUoZGF0YSkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtY29kZS1hbmQt
cmVhc29uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5Ymkvd29ya2Vycy9jbG9zZS1jb2RlLWFuZC1yZWFzb24tZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjJjYjA4OTViNDAwMjg1YTFlN2U1MzYyZThjMGYzNTc3ODhkM2IzMTAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dv
cmtlcnMvY2xvc2UtY29kZS1hbmQtcmVhc29uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM1IEBA
CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogV2ViU29ja2V0IGlzIGNsb3NlZCBiZWZvcmUgdGhl
IGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuCitUZXN0IENsb3NlRXZlbnQgY29kZSBhbmQgcmVh
c29uIHByb3BlcnR5IGluIFdvcmtlci4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCit3
cy5vbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgUEFTUzogd29ya2VyOiBldmVudC53YXNDbGVh
biBpcyBmYWxzZQorUEFTUyBQQVNTOiB3b3JrZXI6IGV2ZW50LmNvZGUgaXMgY29kZUFibm9ybWFs
Q2xvc3VyZQorUEFTUyBQQVNTOiB3b3JrZXI6IGV2ZW50LnJlYXNvbiBpcyBlbXB0eVN0cmluZwor
V2ViU29ja2V0VGVzdC5vbm9wZW4oKSB3YXMgY2FsbGVkIHdpdGggdGVzdElkID0gMC4KK1dlYlNv
Y2tldFRlc3Qub25jbG9zZSgpIHdhcyBjYWxsZWQgd2l0aCB0ZXN0SWQgPSAwLgorUEFTUyBQQVNT
OiB3b3JrZXI6IGV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1BBU1MgUEFTUzogd29ya2VyOiBldmVu
dC5jb2RlIGlzIDEwMDUKK1BBU1MgUEFTUzogd29ya2VyOiBldmVudC5yZWFzb24gaXMgCitQQVNT
IFBBU1M6IHdvcmtlcjogZXZlbnQuY29kZSBpcyAxMDA1CitQQVNTIFBBU1M6IHdvcmtlcjogZXZl
bnQucmVhc29uIGlzIAorV2ViU29ja2V0VGVzdC5vbm9wZW4oKSB3YXMgY2FsbGVkIHdpdGggdGVz
dElkID0gMS4KK1dlYlNvY2tldFRlc3Qub25jbG9zZSgpIHdhcyBjYWxsZWQgd2l0aCB0ZXN0SWQg
PSAxLgorUEFTUyBQQVNTOiB3b3JrZXI6IGV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1BBU1MgUEFT
Uzogd29ya2VyOiBldmVudC5jb2RlIGlzIDEwMDUKK1BBU1MgUEFTUzogd29ya2VyOiBldmVudC5y
ZWFzb24gaXMgCitQQVNTIFBBU1M6IHdvcmtlcjogZXZlbnQuY29kZSBpcyAxMDA1CitQQVNTIFBB
U1M6IHdvcmtlcjogZXZlbnQucmVhc29uIGlzIAorV2ViU29ja2V0VGVzdC5vbm9wZW4oKSB3YXMg
Y2FsbGVkIHdpdGggdGVzdElkID0gMi4KK1dlYlNvY2tldFRlc3Qub25jbG9zZSgpIHdhcyBjYWxs
ZWQgd2l0aCB0ZXN0SWQgPSAyLgorUEFTUyBQQVNTOiB3b3JrZXI6IGV2ZW50Lndhc0NsZWFuIGlz
IHRydWUKK1BBU1MgUEFTUzogd29ya2VyOiBldmVudC5jb2RlIGlzIDY1NTM1CitQQVNTIFBBU1M6
IHdvcmtlcjogZXZlbnQucmVhc29uIGlzIGdvb2QgYnllCitQQVNTIFBBU1M6IHdvcmtlcjogZXZl
bnQuY29kZSBpcyA2NTUzNQorUEFTUyBQQVNTOiB3b3JrZXI6IGV2ZW50LnJlYXNvbiBpcyBnb29k
IGJ5ZQorRE9ORQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5Ymkvd29ya2Vycy9jbG9zZS1jb2RlLWFuZC1yZWFzb24uaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS1jb2RlLWFuZC1yZWFz
b24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43ZmYyODdjZTAyZGU1OGUxYzVjODQwNmFkZWMwZWRhZDkyOWE0
NWY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLWNvZGUtYW5kLXJlYXNvbi5odG1sCkBAIC0wLDAgKzEs
NDAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+CitkZXNjcmlwdGlvbigiVGVzdCBDbG9zZUV2ZW50IGNvZGUgYW5kIHJl
YXNvbiBwcm9wZXJ0eSBpbiBXb3JrZXIuIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xF
bmFibGVkIiwgMCk7CisKK2Z1bmN0aW9uIHN0YXJ0c1dpdGgoc3RyLCBwcmVmaXgpCit7CisgICAg
cmV0dXJuIHN0ci5pbmRleE9mKHByZWZpeCkgPT0gMDsKK30KKwordmFyIHdvcmtlciA9IG5ldyBX
b3JrZXIoInJlc291cmNlcy9jbG9zZS1jb2RlLWFuZC1yZWFzb24uanMiKTsKK3dvcmtlci5vbm1l
c3NhZ2UgPSBmdW5jdGlvbiAoZXZlbnQpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRh
OworICAgIGlmIChzdGFydHNXaXRoKG1lc3NhZ2UsICJQQVNTIikpCisgICAgICAgIHRlc3RQYXNz
ZWQobWVzc2FnZSk7CisgICAgZWxzZSBpZiAoc3RhcnRzV2l0aChtZXNzYWdlLCAiRkFJTCIpKQor
ICAgICAgICB0ZXN0RmFpbGVkKG1lc3NhZ2UpCisgICAgZWxzZQorICAgICAgICBkZWJ1ZyhtZXNz
YWdlKTsKKyAgICBpZiAobWVzc2FnZSA9PT0gIkRPTkUiKQorICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKK307CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvY2xvc2UtY29k
ZS1hbmQtcmVhc29uLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS93b3JrZXJzL3Jlc291cmNlcy9jbG9zZS1jb2RlLWFuZC1yZWFzb24uanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWQ5YzdkNzE5YzViNzIzMGQ4MzIyZTVhNzYzNTY1NzJmZDM1MWJhYwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vy
cy9yZXNvdXJjZXMvY2xvc2UtY29kZS1hbmQtcmVhc29uLmpzCkBAIC0wLDAgKzEsODUgQEAKK3Zh
ciBjb2RlTm9TdGF0dXNSY3ZkID0gMTAwNTsKK3ZhciBjb2RlQWJub3JtYWxDbG9zdXJlID0gMTAw
NjsKK3ZhciBlbXB0eVN0cmluZyA9ICIiOworCitmdW5jdGlvbiBwb3N0UmVzdWx0KHJlc3VsdCwg
YWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICB2YXIgbWVzc2FnZSA9IHJlc3VsdCA/ICJQQVNTIiA6
ICJGQUlMIjsKKyAgICBtZXNzYWdlICs9ICI6IHdvcmtlcjogIiArIGFjdHVhbCArICIgaXMgIjsK
KyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgbWVzc2FnZSArPSAibm90ICI7CisgICAgbWVzc2Fn
ZSArPSBleHBlY3RlZDsKKyAgICBwb3N0TWVzc2FnZShtZXNzYWdlKTsKK30KKwordmFyIHdzID0g
bmV3IFdlYlNvY2tldCgid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9o
YW5naW5nLWhhbmRzaGFrZSIpOworCit3cy5vbm9wZW4gPSBmdW5jdGlvbihldmVudCkKK3sKKyAg
ICB0ZXN0RmFpbGVkKCJGQUlMOiB3cy5vbm9wZW4oKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9IFwi
IiArIGV2ZW50LmRhdGEgKyAiXCIpIik7Cit9OworCit3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZl
bnQpCit7CisgICAgcG9zdE1lc3NhZ2UoIndzLm9uY2xvc2UoKSB3YXMgY2FsbGVkLiIpOworICAg
IHBvc3RSZXN1bHQoIWV2ZW50Lndhc0NsZWFuLCAiZXZlbnQud2FzQ2xlYW4iLCAiZmFsc2UiKTsK
KyAgICBwb3N0UmVzdWx0KGV2ZW50LmNvZGUgPT0gY29kZUFibm9ybWFsQ2xvc3VyZSwgImV2ZW50
LmNvZGUiLCAiY29kZUFibm9ybWFsQ2xvc3VyZSIpOworICAgIHBvc3RSZXN1bHQoZXZlbnQucmVh
c29uID09IGVtcHR5U3RyaW5nLCAiZXZlbnQucmVhc29uIiwgImVtcHR5U3RyaW5nIik7Cit9Owor
Cit3cy5jbG9zZSgpOworCit2YXIgdGVzdElkID0gMDsKK3ZhciB0ZXN0TnVtID0gMzsKK3ZhciBz
ZW5kRGF0YSA9IFsKKyAgICAiLSIsIC8vIHJlcXVlc3QgY2xvc2UgZnJhbWUgd2l0aG91dCBjb2Rl
IGFuZCByZWFzb24KKyAgICAiLS0iLCAvLyByZXF1ZXN0IGNsb3NlIGZyYW1lIHdpdGggaW52YWxp
ZCBib2R5IHdoaWNoIHNpemUgaXMgMQorICAgICI2NTUzNSBnb29kIGJ5ZSIsIC8vIHJlcXVlc3Qg
Y2xvc2UgZnJhbWUgd2l0aCBzcGVjaWZpZWQgY29kZSBhbmQgcmVhc29uCitdOwordmFyIGV4cGVj
dGVkQ29kZSA9IFsKKyAgICBjb2RlTm9TdGF0dXNSY3ZkLAorICAgIGNvZGVOb1N0YXR1c1JjdmQs
CisgICAgNjU1MzUsCitdOwordmFyIGV4cGVjdGVkUmVhc29uID0gWworICAgICIiLAorICAgICIi
LAorICAgICJnb29kIGJ5ZSIsCitdOworCitXZWJTb2NrZXRUZXN0ID0gZnVuY3Rpb24oKSB7Cisg
ICAgdGhpcy53cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvY2xvc2UtY29kZS1hbmQtcmVhc29uIik7CisgICAgdGhpcy53cy5vbm9wZW4g
PSB0aGlzLm9ub3BlbjsKKyAgICB0aGlzLndzLm9ubWVzc2FnZSA9IHRoaXMub25tZXNzYWdlOwor
ICAgIHRoaXMud3Mub25jbG9zZSA9IHRoaXMub25jbG9zZTsKK307CisKK1dlYlNvY2tldFRlc3Qu
cHJvdG90eXBlLm9ub3BlbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICBwb3N0TWVzc2FnZSgiV2ViU29j
a2V0VGVzdC5vbm9wZW4oKSB3YXMgY2FsbGVkIHdpdGggdGVzdElkID0gIiArIHRlc3RJZCArICIu
Iik7CisgICAgdGhpcy5zZW5kKHNlbmREYXRhW3Rlc3RJZF0pOworfTsKKworV2ViU29ja2V0VGVz
dC5wcm90b3R5cGUub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgcG9zdE1lc3Nh
Z2UoIkZBSUw6IFdlYlNvY2tldFRlc3Qub25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2Ug
PSBcIiIgKyBldmVudC5kYXRhICsgIlwiKSIpOworfTsKKworV2ViU29ja2V0VGVzdC5wcm90b3R5
cGUub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIHBvc3RNZXNzYWdlKCJXZWJTb2Nr
ZXRUZXN0Lm9uY2xvc2UoKSB3YXMgY2FsbGVkIHdpdGggdGVzdElkID0gIiArIHRlc3RJZCArICIu
Iik7CisgICAgcG9zdFJlc3VsdChldmVudC53YXNDbGVhbiwgImV2ZW50Lndhc0NsZWFuIiwgInRy
dWUiKTsKKyAgICBwb3N0UmVzdWx0KGV2ZW50LmNvZGUgPT0gZXhwZWN0ZWRDb2RlW3Rlc3RJZF0s
ICJldmVudC5jb2RlIiwgZXhwZWN0ZWRDb2RlW3Rlc3RJZF0pOworICAgIHBvc3RSZXN1bHQoZXZl
bnQucmVhc29uID09IGV4cGVjdGVkUmVhc29uW3Rlc3RJZF0sICJldmVudC5yZWFzb24iLCBleHBl
Y3RlZFJlYXNvblt0ZXN0SWRdKTsKKyAgICBldmVudC5jb2RlID0gMDsKKyAgICBldmVudC5yZWFz
b24gPSAicmVhZG9ubHkiOworICAgIHBvc3RSZXN1bHQoZXZlbnQuY29kZSA9PSBleHBlY3RlZENv
ZGVbdGVzdElkXSwgImV2ZW50LmNvZGUiLCBleHBlY3RlZENvZGVbdGVzdElkXSk7CisgICAgcG9z
dFJlc3VsdChldmVudC5yZWFzb24gPT0gZXhwZWN0ZWRSZWFzb25bdGVzdElkXSwgImV2ZW50LnJl
YXNvbiIsIGV4cGVjdGVkUmVhc29uW3Rlc3RJZF0pOworICAgIHRlc3RJZCsrOworICAgIGlmICh0
ZXN0SWQgPCB0ZXN0TnVtKQorICAgICAgICB0ZXN0ID0gbmV3IFdlYlNvY2tldFRlc3QoKTsKKyAg
ICBlbHNlCisgICAgICAgIHBvc3RNZXNzYWdlKCJET05FIikKK307CisKK3ZhciB0ZXN0ID0gbmV3
IFdlYlNvY2tldFRlc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NzdiZGVmYTIwZjA0Yjg4MmY4NGJkOTI3
MDIwYWY3ODNiNDgxZWE5Li44MjgyM2Q2NmE2YzA2YjFhYzhjY2M0ZmNiNDdkYzEyYThjYzhiOWI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTEtMDgtMTcgIFRha2FzaGkgVG95b3No
aW1hICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJTb2NrZXRdIENsb3Nl
RXZlbnQncyBjb2RlIGFuZCByZWFzb24gcHJvcGVydGllcyBzdXBwb3J0LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYzNjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50IFdlYlNvY2tldCBpbXBs
ZW1lbnRhdGlvbiBtaXNzIGNvZGUgYW5kIHJlYXNvbiBwcm9wZXJ0aWVzCisgICAgICAgIGluIENs
b3NlRXZlbnQuIFRoaXMgY2hhbmdlIGV4cG9zZSBpbmNvbWluZyBjbG9zaW5nIGZyYW1lJ3MgY29k
ZQorICAgICAgICBhbmQgcmVhc29uIHRvIEphdmFTY3JpcHQgQVBJLgorCisgICAgICAgIFRlc3Rz
OiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLWNvZGUtYW5kLXJlYXNvbi5o
dG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtl
cnMvY2xvc2UtY29kZS1hbmQtcmVhc29uLmh0bWwKKworICAgICAgICAqIHdlYnNvY2tldHMvQ2xv
c2VFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2xvc2VFdmVudDo6aW5pdENsb3NlRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Q2xvc2VFdmVudDo6Y29kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDbG9zZUV2ZW50OjpyZWFzb24pOgorICAgICAgICAoV2ViQ29yZTo6Q2xvc2VFdmVudDo6Q2xv
c2VFdmVudCk6CisgICAgICAgICogd2Vic29ja2V0cy9DbG9zZUV2ZW50LmlkbDoKKyAgICAgICAg
QWRkIGNvZGUgYW5kIHJlYXNvbiBwcm9wZXJpZXMuCisgICAgICAgICogd2Vic29ja2V0cy9UaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6
OmRpZENsb3NlQ2FsbGJhY2spOgorICAgICAgICAqIHdlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmg6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRDb25uZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlkQ2xvc2UpOgorICAgICAgICAqIHdlYnNvY2tldHMv
V2ViU29ja2V0Lmg6CisgICAgICAgIEFkZCBpbXBsZW1lbnQgdG8gaGFuZGxlIGNvZGUgYW5kIHJl
YXNvbi4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6V2ViU29ja2V0Q2hhbm5lbCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpkaWRDbG9zZVNvY2tldFN0cmVhbSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWUpOgorICAgICAgICAq
IHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICBBZGQgY2xvc2luZyBmcmFt
ZSBwYXlsb2FkIHBhcnNlci4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxD
bGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWxDbGllbnQ6OmRpZENs
b3NlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndvcmtlckNvbnRleHREaWRDbG9zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlk
Q2xvc2UpOgorICAgICAgICAqIHdlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuaDoKKyAgICAgICAgQWRkIGltcGxlbWVudCB0byBoYW5kbGUgY29kZSBhbmQgcmVhc29u
LgorCiAyMDExLTA4LTE4ICBHYXZpbiBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFByZXBhcmUgZnJhbWVzIGZvciBoaXN0b3J5IG5hdmlnYXRpb24uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvQ2xvc2VFdmVudC5oCmluZGV4IGEwNzkwMDMzZjRjYzczMDBhOGRiM2NhN2U2
ZjdiNGQ1MDY2NjM4NDUuLjliZjI1OWNkNWM0ODVlZmE4MzllZDk0MjMxOTAzZDVjZGRmYmU3M2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5oCkBAIC00NSw3ICs0NSw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbG9zZUV2ZW50KCkpOwogICAg
IH0KIAotICAgIHZvaWQgaW5pdENsb3NlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBib29sIHdhc0NsZWFuKQorICAgIHZvaWQg
aW5pdENsb3NlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBib29sIHdhc0NsZWFuLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25z
dCBTdHJpbmcmIHJlYXNvbikKICAgICB7CiAgICAgICAgIGlmIChkaXNwYXRjaGVkKCkpCiAgICAg
ICAgICAgICByZXR1cm47CkBAIC01MywxNyArNTMsMjQgQEAgcHVibGljOgogICAgICAgICBpbml0
RXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKTsKIAogICAgICAgICBtX3dhc0NsZWFu
ID0gd2FzQ2xlYW47CisgICAgICAgIG1fY29kZSA9IGNvZGU7CisgICAgICAgIG1fcmVhc29uID0g
cmVhc29uOwogICAgIH0KIAogICAgIGJvb2wgd2FzQ2xlYW4oKSBjb25zdCB7IHJldHVybiBtX3dh
c0NsZWFuOyB9CisgICAgdW5zaWduZWQgc2hvcnQgY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29k
ZTsgfQorICAgIFN0cmluZyByZWFzb24oKSBjb25zdCB7IHJldHVybiBtX3JlYXNvbjsgfQogCiBw
cml2YXRlOgogICAgIENsb3NlRXZlbnQoKQogICAgICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5j
bG9zZUV2ZW50LCBmYWxzZSwgZmFsc2UpCiAgICAgICAgICwgbV93YXNDbGVhbihmYWxzZSkKKyAg
ICAgICAgLCBtX2NvZGUoMCkKICAgICB7IH0KIAogICAgIGJvb2wgbV93YXNDbGVhbjsKKyAgICB1
bnNpZ25lZCBzaG9ydCBtX2NvZGU7CisgICAgU3RyaW5nIG1fcmVhc29uOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9D
bG9zZUV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5pZGwK
aW5kZXggZDc0YWIyZDY1ZmE2NmVjNGIyNTY4N2E1Y2EyMzU5OTc0MDRkODhhMy4uYTI5MTE0NjZi
MWE4MjBkMDlmMTk4ZTE1NTczYmExZDI4NzMyZmNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9DbG9zZUV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL0Nsb3NlRXZlbnQuaWRsCkBAIC0zNCwxMCArMzQsMTQgQEAgbW9kdWxlIGV2ZW50cyB7CiAg
ICAgICAgIE5vU3RhdGljVGFibGVzCiAgICAgXSBDbG9zZUV2ZW50IDogRXZlbnQgewogICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3YXNDbGVhbjsKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IGNvZGU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBbQ29udmVydGluZ051bGxTdHJpbmdUbz1VbmRlZmluZWRdIERPTVN0cmluZyByZWFzb247CiAg
ICAgICAgIHZvaWQgaW5pdENsb3NlRXZlbnQoaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZh
bHVlXSBET01TdHJpbmcgdHlwZUFyZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBb
T3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIGJvb2xlYW4gY2FuQnViYmxlQXJnLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1
ZV0gYm9vbGVhbiBjYW5jZWxhYmxlQXJnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gYm9vbGVhbiB3YXNDbGVhbkFyZyk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZh
bHVlXSBib29sZWFuIHdhc0NsZWFuQXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gdW5zaWduZWQgc2hvcnQgY29kZUFyZywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0
VmFsdWVdIERPTVN0cmluZyByZWFzb25BcmcpOwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAppbmRleCAxYTE3OWM5ODI5MjJkMTcyNGM0MzUzNWIy
YzQ3ZDZlMjY1ZDYzM2I4Li4yM2Y0NWFkYTBhYWNiY2YzNTE5YWYxOThlNjVkMGFkNmExN2YyMTY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCkBAIC0xMzksOSAr
MTM5LDkgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRp
ZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiAgICAgICAgIHByb2Nlc3NQZW5kaW5nVGFza3MoKTsK
IH0KIAotdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENs
b3NlKHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIFdlYlNvY2tldENoYW5u
ZWxDbGllbnQ6OkNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzIGNsb3NpbmdIYW5kc2hh
a2VDb21wbGV0aW9uKQordm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI6OmRpZENsb3NlKHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIFdlYlNv
Y2tldENoYW5uZWxDbGllbnQ6OkNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzIGNsb3Np
bmdIYW5kc2hha2VDb21wbGV0aW9uLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcm
IHJlYXNvbikKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoY3JlYXRlQ2FsbGJhY2tUYXNr
KCZUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENsb3NlQ2FsbGJh
Y2ssIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50
LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbikpOworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVu
ZChjcmVhdGVDYWxsYmFja1Rhc2soJlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlcjo6ZGlkQ2xvc2VDYWxsYmFjaywgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgdW5o
YW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2RlLCBy
ZWFzb24pKTsKICAgICBpZiAoIW1fc3VzcGVuZGVkKQogICAgICAgICBwcm9jZXNzUGVuZGluZ1Rh
c2tzKCk7CiB9CkBAIC0xODcsMTEgKzE4NywxMSBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlQ2FsbGJhY2soUwog
ICAgICAgICB3cmFwcGVyLT5tX2NsaWVudC0+ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7CiB9
CiAKLXZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9z
ZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciogd3JhcHBlciwgdW5zaWduZWQgbG9uZyB1bmhhbmRs
ZWRCdWZmZXJlZEFtb3VudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hhbmRzaGFr
ZUNvbXBsZXRpb25TdGF0dXMgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24pCit2b2lkIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ2xvc2VDYWxsYmFjayhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXIqIHdyYXBwZXIsIHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91
bnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQ6OkNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3Rh
dHVzIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25z
dCBTdHJpbmcmIHJlYXNvbikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsICFjb250ZXh0
KTsKICAgICBpZiAod3JhcHBlci0+bV9jbGllbnQpCi0gICAgICAgIHdyYXBwZXItPm1fY2xpZW50
LT5kaWRDbG9zZSh1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBs
ZXRpb24pOworICAgICAgICB3cmFwcGVyLT5tX2NsaWVudC0+ZGlkQ2xvc2UodW5oYW5kbGVkQnVm
ZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2RlLCByZWFzb24pOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oIGIvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXIuaAppbmRleCBiNTRhY2EwNzBhOTk5OGMwOGQxMjhkODdkN2ZkZWExODA3OGQzMzBhLi5i
Y2VhOWQ2Y2JjYmU3YTc5NDMwZWViYThlZjg0MmE1ODMzOTkxMjJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyLmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIHZv
aWQgZGlkQ29ubmVjdCgpOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKTsKICAgICB2b2lkIGRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpOwotICAgIHZv
aWQgZGlkQ2xvc2UodW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgV2ViU29j
a2V0Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMpOworICAg
IHZvaWQgZGlkQ2xvc2UodW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgV2Vi
U29ja2V0Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMsIHVu
c2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKIAogICAgIHZvaWQgc3Vz
cGVuZCgpOwogICAgIHZvaWQgcmVzdW1lKCk7CkBAIC04NSw3ICs4NSw3IEBAIHByb3RlY3RlZDoK
ICAgICBzdGF0aWMgdm9pZCBkaWRDb25uZWN0Q2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciopOwogICAgIHN0YXRp
YyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciosIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSk7CiAgICAgc3RhdGljIHZvaWQgZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlQ2FsbGJh
Y2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlciopOwotICAgIHN0YXRpYyB2b2lkIGRpZENsb3NlQ2FsbGJhY2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcios
IHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIFdlYlNvY2tldENoYW5uZWxD
bGllbnQ6OkNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzKTsKKyAgICBzdGF0aWMgdm9p
ZCBkaWRDbG9zZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIqLCB1bnNpZ25lZCBsb25nIHVuaGFuZGxlZEJ1ZmZl
cmVkQW1vdW50LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50OjpDbG9zaW5nSGFuZHNoYWtlQ29tcGxl
dGlvblN0YXR1cywgdW5zaWduZWQgc2hvcnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOwog
CiAgICAgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogbV9jbGllbnQ7CiAgICAgYm9vbCBtX3N5bmNN
ZXRob2REb25lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDFi
MDEzM2U5N2RiNWRjZGMyOTg5ZDcyYWE2ZjYwNmQ4ZWY1ZDk1MDMuLmYxNzk3ZjA4NGFjZjQwMThj
MmQzNjQ1NzdhMThiMjhlNDg2ZGZmNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5jcHAKQEAgLTM3OCw3ICszNzgsNyBAQCB2b2lkIFdlYlNvY2tldDo6ZGlkQ29ubmVjdCgp
CiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgZGlkQ29ubmVjdCIsIHRoaXMpOwog
ICAgIGlmIChtX3N0YXRlICE9IENPTk5FQ1RJTkcpIHsKLSAgICAgICAgZGlkQ2xvc2UoMCwgQ2xv
c2luZ0hhbmRzaGFrZUluY29tcGxldGUpOworICAgICAgICBkaWRDbG9zZSgwLCBDbG9zaW5nSGFu
ZHNoYWtlSW5jb21wbGV0ZSwgV2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVBYm5vcm1h
bENsb3N1cmUsICIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKTsKQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIFdlYlNvY2tldDo6
ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKICAgICBtX3N0YXRlID0gQ0xPU0lORzsKIH0KIAot
dm9pZCBXZWJTb2NrZXQ6OmRpZENsb3NlKHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVkQnVmZmVyZWRB
bW91bnQsIENsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzIGNsb3NpbmdIYW5kc2hha2VD
b21wbGV0aW9uKQordm9pZCBXZWJTb2NrZXQ6OmRpZENsb3NlKHVuc2lnbmVkIGxvbmcgdW5oYW5k
bGVkQnVmZmVyZWRBbW91bnQsIENsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzIGNsb3Np
bmdIYW5kc2hha2VDb21wbGV0aW9uLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcm
IHJlYXNvbikKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBkaWRDbG9zZSIsIHRo
aXMpOwogICAgIGlmICghbV9jaGFubmVsKQpAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgV2ViU29j
a2V0OjpkaWRDbG9zZSh1bnNpZ25lZCBsb25nIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBDbG9z
aW5nSGFuZHNoYWtlCiAgICAgbV9idWZmZXJlZEFtb3VudEFmdGVyQ2xvc2UgKz0gdW5oYW5kbGVk
QnVmZmVyZWRBbW91bnQ7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAg
ICAgUmVmUHRyPENsb3NlRXZlbnQ+IGV2ZW50ID0gQ2xvc2VFdmVudDo6Y3JlYXRlKCk7Ci0gICAg
ZXZlbnQtPmluaXRDbG9zZUV2ZW50KGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBmYWxzZSwgZmFs
c2UsIHdhc0NsZWFuKTsKKyAgICBldmVudC0+aW5pdENsb3NlRXZlbnQoZXZlbnROYW1lcygpLmNs
b3NlRXZlbnQsIGZhbHNlLCBmYWxzZSwgd2FzQ2xlYW4sIGNvZGUsIHJlYXNvbik7CiAgICAgZGlz
cGF0Y2hFdmVudChldmVudCk7CiAgICAgaWYgKG1fY2hhbm5lbCkgewogICAgICAgICBtX2NoYW5u
ZWwtPmRpc2Nvbm5lY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4
IDJmNzFiMzE1MmE4ZjFlMjYzNTQ2ZmQ5NGE2NjgyOTZjMzFkY2IxZWEuLjI3MTI1NDFmYTlmZjJm
M2U3OWI0ODVhZDkzNzdhNDE4NjUxMmIyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXQuaApAQCAtMTAyLDcgKzEwMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUVycm9yKCk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKTsKLSAgICAgICAgdmlydHVhbCB2
b2lkIGRpZENsb3NlKHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIENsb3Np
bmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENs
b3NlKHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIENsb3NpbmdIYW5kc2hh
a2VDb21wbGV0aW9uU3RhdHVzLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcmIHJl
YXNvbik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBXZWJTb2NrZXQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5jcHAKaW5kZXggOWFmYzc0YzVhN2Q4ZDU5NGY2OWQ0NmJmZDI4NTI0ZDJmMTJjYmVmNy4uZWU4
NjhmZmIzMTZiYmM3NjdiYmZhNzMzYjEwMjI0NDU0YzQwNjU4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC05OCw2ICs5OCw3IEBAIFdl
YlNvY2tldENoYW5uZWw6OldlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgV2ViU29ja2V0Q2hhCiAgICAgLCBtX2lkZW50aWZpZXIoMCkKICAgICAsIG1fdXNl
SGl4aWU3NlByb3RvY29sKHRydWUpCiAgICAgLCBtX2hhc0NvbnRpbnVvdXNGcmFtZShmYWxzZSkK
KyAgICAsIG1fY2xvc2VFdmVudENvZGUoQ2xvc2VFdmVudENvZGVBYm5vcm1hbENsb3N1cmUpCiB7
CiAgICAgQVNTRVJUKG1fY29udGV4dC0+aXNEb2N1bWVudCgpKTsKICAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fY29udGV4dCk7CkBAIC0yNDYsNyArMjQ3
LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRDbG9zZVNvY2tldFN0cmVhbShTb2NrZXRT
dHJlYW1IYW5kbGUqIGhhbmRsZSkKICAgICAgICAgbV9jb250ZXh0ID0gMDsKICAgICAgICAgbV9o
YW5kbGUgPSAwOwogICAgICAgICBpZiAoY2xpZW50KQotICAgICAgICAgICAgY2xpZW50LT5kaWRD
bG9zZShtX3VuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBtX3JlY2VpdmVkQ2xvc2luZ0hhbmRzaGFr
ZSA/IFdlYlNvY2tldENoYW5uZWxDbGllbnQ6OkNsb3NpbmdIYW5kc2hha2VDb21wbGV0ZSA6IFdl
YlNvY2tldENoYW5uZWxDbGllbnQ6OkNsb3NpbmdIYW5kc2hha2VJbmNvbXBsZXRlKTsKKyAgICAg
ICAgICAgIGNsaWVudC0+ZGlkQ2xvc2UobV91bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgbV9yZWNl
aXZlZENsb3NpbmdIYW5kc2hha2UgPyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50OjpDbG9zaW5nSGFu
ZHNoYWtlQ29tcGxldGUgOiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50OjpDbG9zaW5nSGFuZHNoYWtl
SW5jb21wbGV0ZSwgbV9jbG9zZUV2ZW50Q29kZSwgbV9jbG9zZUV2ZW50UmVhc29uKTsKICAgICB9
CiAgICAgZGVyZWYoKTsKIH0KQEAgLTYyMyw3ICs2MjQsMTYgQEAgYm9vbCBXZWJTb2NrZXRDaGFu
bmVsOjpwcm9jZXNzRnJhbWUoKQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgT3BDb2RlQ2xv
c2U6Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgcGF5bG9hZC4KKyAgICAgICAgaWYgKGZyYW1l
LnBheWxvYWRMZW5ndGggPj0gMikgeworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBoaWdoQnl0
ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGZyYW1lLnBheWxvYWRbMF0pOworICAgICAg
ICAgICAgdW5zaWduZWQgY2hhciBsb3dCeXRlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4o
ZnJhbWUucGF5bG9hZFsxXSk7CisgICAgICAgICAgICBtX2Nsb3NlRXZlbnRDb2RlID0gaGlnaEJ5
dGUgPDwgOCB8IGxvd0J5dGU7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9jbG9zZUV2
ZW50Q29kZSA9IENsb3NlRXZlbnRDb2RlTm9TdGF0dXNSY3ZkOworICAgICAgICBpZiAoZnJhbWUu
cGF5bG9hZExlbmd0aCA+PSAzKQorICAgICAgICAgICAgbV9jbG9zZUV2ZW50UmVhc29uID0gU3Ry
aW5nOjpmcm9tVVRGOCgmZnJhbWUucGF5bG9hZFsyXSwgZnJhbWUucGF5bG9hZExlbmd0aCAtIDIp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Nsb3NlRXZlbnRSZWFzb24gPSAiIjsKICAg
ICAgICAgc2tpcEJ1ZmZlcihmcmFtZS5mcmFtZUVuZCAtIG1fYnVmZmVyKTsKICAgICAgICAgbV9y
ZWNlaXZlZENsb3NpbmdIYW5kc2hha2UgPSB0cnVlOwogICAgICAgICBzdGFydENsb3NpbmdIYW5k
c2hha2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgK
aW5kZXggMGZkOTZmMTYxZWM0ZTk2NDllM2ViNGRjMDY3OGUxODc1MmQ2MzFmYS4uMzg4NGZjZjUz
ZDVjYTQyMGYyNjg0NzU5ZmJiOWU1NDU0Y2MxMTRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTc0LDYgKzc0LDE3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsK
IAorICAgICAgICBlbnVtIENsb3NlRXZlbnRDb2RlIHsKKyAgICAgICAgICAgIENsb3NlRXZlbnRD
b2RlTm9ybWFsQ2xvc3VyZSA9IDEwMDAsCisgICAgICAgICAgICBDbG9zZUV2ZW50Q29kZUdvaW5n
QXdheSA9IDEwMDEsCisgICAgICAgICAgICBDbG9zZUV2ZW50Q29kZVByb3RvY29sRXJyb3IgPSAx
MDAyLAorICAgICAgICAgICAgQ2xvc2VFdmVudENvZGVVbnN1cHBvcnRlZERhdGEgPSAxMDAzLAor
ICAgICAgICAgICAgQ2xvc2VFdmVudENvZGVGcmFtZVRvb0xhcmdlID0gMTAwNCwKKyAgICAgICAg
ICAgIENsb3NlRXZlbnRDb2RlTm9TdGF0dXNSY3ZkID0gMTAwNSwKKyAgICAgICAgICAgIENsb3Nl
RXZlbnRDb2RlQWJub3JtYWxDbG9zdXJlID0gMTAwNiwKKyAgICAgICAgICAgIENsb3NlRXZlbnRD
b2RlSW52YWxpZFVURjggPSAxMDA3CisgICAgICAgIH07CisKICAgICAgICAgdXNpbmcgUmVmQ291
bnRlZDxXZWJTb2NrZXRDaGFubmVsPjo6cmVmOwogICAgICAgICB1c2luZyBSZWZDb3VudGVkPFdl
YlNvY2tldENoYW5uZWw+OjpkZXJlZjsKIApAQCAtMTU0LDYgKzE2NSw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2hhc0NvbnRpbnVvdXNGcmFtZTsKICAgICAgICAgT3BD
b2RlIG1fY29udGludW91c0ZyYW1lT3BDb2RlOwogICAgICAgICBWZWN0b3I8Y2hhcj4gbV9jb250
aW51b3VzRnJhbWVEYXRhOworICAgICAgICB1bnNpZ25lZCBzaG9ydCBtX2Nsb3NlRXZlbnRDb2Rl
OworICAgICAgICBTdHJpbmcgbV9jbG9zZUV2ZW50UmVhc29uOwogICAgIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50LmgKaW5kZXggMzhiZDE3ZDAwZDY1ZjJmMmIwMWY0YjkzODBjMGI0ZTJj
N2M3Njg3NS4uYzM4YjA1YzgxNGZiM2EzMDcwOWExMmRjMzM2NDJlODUzYTFlYTgxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpA
QCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBDbG9zaW5n
SGFuZHNoYWtlSW5jb21wbGV0ZSwKICAgICAgICAgICAgIENsb3NpbmdIYW5kc2hha2VDb21wbGV0
ZQogICAgICAgICB9OwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UodW5zaWduZWQgbG9u
ZyAvKiB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCAqLywgQ2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRp
b25TdGF0dXMpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UodW5zaWduZWQgbG9u
ZyAvKiB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCAqLywgQ2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRp
b25TdGF0dXMsIHVuc2lnbmVkIHNob3J0IC8qIGNvZGUgKi8sIGNvbnN0IFN0cmluZyYgLyogcmVh
c29uICovKSB7IH0KIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgV2ViU29ja2V0Q2hhbm5lbENs
aWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCAzMzRlNzUyNmZiNzJl
NzNhYTU2NjkzZDgwNGNjZDE4Y2ZiMjI4NmUyLi45ZGFiODEyZmM4MDE1ZjM4OWY3NDA4ZDBkZWE3
Y2JlY2Y5NjI4NGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yNjUs
MTcgKzI2NSwxNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVy
OjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKQogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2VyQ29udGV4dERp
ZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSwgbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgbV90YXNrTW9k
ZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHdvcmtlckNvbnRleHREaWRDbG9zZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgdW5zaWduZWQgbG9uZyB1bmhhbmRs
ZWRCdWZmZXJlZEFtb3VudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hhbmRzaGFr
ZUNvbXBsZXRpb25TdGF0dXMgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24pCitzdGF0aWMgdm9p
ZCB3b3JrZXJDb250ZXh0RGlkQ2xvc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtl
ckNsaWVudFdyYXBwZXIsIHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIFdl
YlNvY2tldENoYW5uZWxDbGllbnQ6OkNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzIGNs
b3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJp
bmcmIHJlYXNvbikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlzV29y
a2VyQ29udGV4dCgpKTsKLSAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRDbG9zZSh1bmhhbmRs
ZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24pOworICAgIHdvcmtl
ckNsaWVudFdyYXBwZXItPmRpZENsb3NlKHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5n
SGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29uKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkQ2xvc2UodW5zaWduZWQgbG9uZyB1bmhh
bmRsZWRCdWZmZXJlZEFtb3VudCwgQ2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMgY2xv
c2luZ0hhbmRzaGFrZUNvbXBsZXRpb24pCit2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpQZWVyOjpkaWRDbG9zZSh1bnNpZ25lZCBsb25nIHVuaGFuZGxlZEJ1ZmZlcmVkQW1v
dW50LCBDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvblN0YXR1cyBjbG9zaW5nSGFuZHNoYWtlQ29t
cGxldGlvbiwgdW5zaWduZWQgc2hvcnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBtX21haW5XZWJTb2NrZXRDaGFubmVsID0g
MDsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVh
dGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRDbG9zZSwgbV93b3JrZXJDbGllbnRXcmFw
cGVyLCB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24p
LCBtX3Rhc2tNb2RlKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2Vy
Q29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRDbG9zZSwgbV93b3Jr
ZXJDbGllbnRXcmFwcGVyLCB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFr
ZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbiksIG1fdGFza01vZGUpOwogfQogCiB2b2lkIFdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnNldFdlYlNvY2tldENoYW5uZWwo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgQnJpZGdlKiB0aGlzUHRyLCBQZWVyKiBw
ZWVyLCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4g
d29ya2VyQ2xpZW50V3JhcHBlciwgYm9vbCB1c2VIaXhpZTc2UHJvdG9jb2wpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmgKaW5kZXggNDQwMDM3MGY1MDVjZjFjYzliNWJkNzcxZDI2NDJmYjg4NGE2ZmIz
ZS4uMGRjMzhjMzJkN2YyNzllNmEyMGEwYzdkNDMzNmM4OGVmNDFiMjY3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDks
IDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpZENvbm5lY3QoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRTdGFydENsb3NpbmdIYW5kc2hha2UoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZENsb3Nl
KHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIENsb3NpbmdIYW5kc2hha2VD
b21wbGV0aW9uU3RhdHVzKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKHVuc2lnbmVk
IGxvbmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIENsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9u
U3RhdHVzLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICBQZWVyKFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyPiwgV29ya2VyTG9hZGVyUHJveHkmLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>