<?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>49438</bug_id>
          
          <creation_ts>2010-11-12 03:51:39 -0800</creation_ts>
          <short_desc>Add LayoutTests to test high accuracy mode in Geolocation</short_desc>
          <delta_ts>2011-02-15 04:41:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>UNCONFIRMED</bug_status>
          <resolution></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>49258</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="John Knottenbelt">jknotten</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>buildbot</cc>
    
    <cc>gustavo</cc>
    
    <cc>jknotten</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>308480</commentid>
    <comment_count>0</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-11-12 03:51:39 -0800</bug_when>
    <thetext>We need additional LayoutTests to test that setEnableHighAccuracy is being invoked correctly on the GeolocationClient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319550</commentid>
    <comment_count>1</comment_count>
      <attachid>76085</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-12-09 10:17:03 -0800</bug_when>
    <thetext>Created attachment 76085
Patch

Draft patch to get feedback on general approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320110</commentid>
    <comment_count>2</comment_count>
      <attachid>76085</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-12-10 06:02:04 -0800</bug_when>
    <thetext>Comment on attachment 76085
Patch

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

I&apos;m not sure how useful it is to add this test. The test code is rather subtle, yet all we&apos;re really testing is that a boolean flag is successfully passed to the client/service. Would it be better to add a layoutTestController.getGeolocationClientState() method which returns {idle,lowAccuracy,highAccuracy} so we can test this directly? That would also allow us to more easily write more interesting tests for the multiplexing of multiple requests to a single client in GeolocationController.

&gt; WebKit/chromium/public/WebGeolocationClientMock.h:52
&gt; +    WEBKIT_API void setPositions(double lowAccuracyLatitude, double lowAccuracyLongitude, double lowAccuracyAccuracy, double highAccuracyLatitude, double highAccuracyLongitude, double highAccuracyAccuracy);

I think you should do this in the non-client-based mock too.

&gt; WebKitTools/DumpRenderTree/LayoutTestController.h:98
&gt; +    void setMockGeolocationPositions(double lowAccuracyLatitude, double lowAccuracyLongitude, double lowAccuracyAccuracy,

This name might be a little confusing. Maybe it&apos;s better to make this setMockGeolocationPositionHighAccuracy(lat, lng, acc) - the position is used preferentially to the regular mock position when in high accuracy mode and when available.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322604</commentid>
    <comment_count>3</comment_count>
      <attachid>76647</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-12-15 08:10:52 -0800</bug_when>
    <thetext>Created attachment 76647
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322606</commentid>
    <comment_count>4</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-12-15 08:12:40 -0800</bug_when>
    <thetext>This new patch takes the alternative approach of adding a geolocationClientState method to the layoutTestController. Comments and suggestions very welcome!

(In reply to comment #3)
&gt; Created an attachment (id=76647) [details]
&gt; Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322631</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-15 09:29:31 -0800</bug_when>
    <thetext>Attachment 76647 did not build on gtk:
Build output: http://queues.webkit.org/results/7173028</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322767</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2010-12-15 12:56:54 -0800</bug_when>
    <thetext>Attachment 76647 did not build on win:
Build output: http://queues.webkit.org/results/7154037</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330134</commentid>
    <comment_count>7</comment_count>
      <attachid>76647</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-01-06 07:23:05 -0800</bug_when>
    <thetext>Comment on attachment 76647
Patch

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

&gt; LayoutTests/fast/dom/Geolocation/script-tests/accuracy-requests.js:20
&gt; +    layoutTestController.setGeolocationPermission(true);

Inconsistent indentation. Should be 4 spaces I think.

&gt; LayoutTests/fast/dom/Geolocation/script-tests/accuracy-requests.js:29
&gt; +var clientState;

Are these used?

&gt; LayoutTests/fast/dom/Geolocation/script-tests/accuracy-requests.js:44
&gt; +      layoutTestController.setMockGeolocationPosition(mockLatitude+1, mockLongitude+1, mockAccuracy+1);

Spaces around operators

&gt; LayoutTests/fast/dom/Geolocation/script-tests/accuracy-requests.js:47
&gt; +  }

No braces on one-line control statements

&gt; WebCore/platform/mock/GeolocationServiceMock.cpp:81
&gt; +    for (GeolocationServiceSet::const_iterator iter = s_instances-&gt;begin(); iter != end; ++iter) {

This is wrong I think. The LTC method should return the state of the Geolocation service/client for the current window. In the case of the client-based impl, we have one client per page, so we query the client corresponding to our page. For the non-client-based impl, we have one service per winfo, so we should query that.

&gt; WebCore/platform/mock/GeolocationServiceMock.h:46
&gt; +        Low,

I think it&apos;s better to be explicit - LowAccuracy

&gt; WebCore/platform/mock/GeolocationServiceMock.h:58
&gt; +    static ClientState geolocationClientState();

This is a confusing name, as this is non-client based!

&gt; WebKit/chromium/ChangeLog:9
&gt; +        * public/WebGeolocationServiceMock.h:
&gt; +        * src/AssertMatchingEnums.cpp:

??

&gt; WebKit/chromium/public/WebGeolocationServiceMock.h:47
&gt; +    WEBKIT_API static WebString geolocationClientState();

If we wait for the Chromium non-client-based impl to be deleted, this will go away, right?

&gt; WebKit/chromium/src/AssertMatchingEnums.cpp:395
&gt; +

Intentional?

&gt; WebKitTools/DumpRenderTree/LayoutTestController.h:269
&gt; +    JSRetainPtr&lt;JSStringRef&gt; geolocationClientState() const;

Is it better to use a name that&apos;s agnostic to client-based vs non-client-based? WDYT?

&gt; WebKitTools/DumpRenderTree/chromium/LayoutTestController.cpp:1525
&gt; +    WebString clientState = m_shell-&gt;webViewHost()-&gt;geolocationClientMock()-&gt;geolocationClientState();

I don&apos;t see the change to GeolocationClientMock?

&gt; WebKitTools/DumpRenderTree/mac/LayoutTestControllerMac.mm:370
&gt; +JSRetainPtr&lt;JSStringRef&gt; LayoutTestController::geolocationClientState() const

I think you&apos;ll need to do this for other ports too, no?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76085</attachid>
            <date>2010-12-09 10:17:03 -0800</date>
            <delta_ts>2010-12-15 08:10:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>initial.patch</filename>
            <type>text/plain</type>
            <size>22244</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">Y29tbWl0IGFkNTRkYWM5ZDIxZjI1ZWFiOTY1NmQwOWIxMGQ0ZmIwNmEyM2JkOWQKQXV0aG9yOiBK
b2huIEtub3R0ZW5iZWx0IDxqa25vdHRlbkBjaHJvbWl1bS5vcmc+CkRhdGU6ICAgVGh1IERlYyA5
IDE4OjA1OjQzIDIwMTAgKzAwMDAKCiAgICBBY2N1cmFjeVRlc3RzCgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vYWNjdXJhY3ktcmVxdWVzdHMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vYWNjdXJhY3ktcmVxdWVzdHMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyYjg1ZjMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9hY2N1
cmFjeS1yZXF1ZXN0cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMyBAQAorVGVzdHMgdGhhdCBH
ZW9sb2NhdGlvbiBjb3JyZWN0bHkgaGFuZGxlcyBtdWx0aXBsZSBjb25jdXJyZW50IHJlcXVlc3Rz
IHdpdGggcmVzcGVjdCB0byBoaWdoIGFjY3VyYWN5IG1vZGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitmaXJzdFdhdGNoCitsb3dBY2N1cmFjeUV4cGVjdGVkCitQQVNTIHBvc2l0
aW9uLmNvb3Jkcy5sYXRpdHVkZSBpcyBtb2NrTGF0aXR1ZGUKK1BBU1MgcG9zaXRpb24uY29vcmRz
LmxvbmdpdHVkZSBpcyBtb2NrTG9uZ2l0dWRlCitQQVNTIHBvc2l0aW9uLmNvb3Jkcy5hY2N1cmFj
eSBpcyBtb2NrTG93QWNjdXJhY3kKK2ZpcnN0V2F0Y2gKK2hpZ2hBY2N1cmFjeUV4cGVjdGVkCitQ
QVNTIHBvc2l0aW9uLmNvb3Jkcy5sYXRpdHVkZSBpcyBtb2NrTGF0aXR1ZGUrMQorUEFTUyBwb3Np
dGlvbi5jb29yZHMubG9uZ2l0dWRlIGlzIG1vY2tMb25naXR1ZGUrMQorUEFTUyBwb3NpdGlvbi5j
b29yZHMuYWNjdXJhY3kgaXMgbW9ja0hpZ2hBY2N1cmFjeQorc2Vjb25kV2F0Y2gKK1BBU1MgcG9z
aXRpb24uY29vcmRzLmxhdGl0dWRlIGlzIG1vY2tMYXRpdHVkZSsxCitQQVNTIHBvc2l0aW9uLmNv
b3Jkcy5sb25naXR1ZGUgaXMgbW9ja0xvbmdpdHVkZSsxCitQQVNTIHBvc2l0aW9uLmNvb3Jkcy5h
Y2N1cmFjeSBpcyBtb2NrSGlnaEFjY3VyYWN5CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
R2VvbG9jYXRpb24vYWNjdXJhY3ktcmVxdWVzdHMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL2FjY3VyYWN5LXJlcXVlc3RzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZjNiN2M2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL0dlb2xvY2F0aW9uL2FjY3VyYWN5LXJlcXVlc3RzLmh0bWwKQEAgLTAsMCArMSwxMyBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9hY2N1cmFjeS1yZXF1ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVz
dHMvYWNjdXJhY3ktcmVxdWVzdHMuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlv
bi9zY3JpcHQtdGVzdHMvYWNjdXJhY3ktcmVxdWVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYjA3OWU3YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9hY2N1cmFjeS1yZXF1ZXN0cy5qcwpAQCAt
MCwwICsxLDY1IEBACitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBHZW9sb2NhdGlvbiBjb3JyZWN0
bHkgaGFuZGxlcyBtdWx0aXBsZSBjb25jdXJyZW50IHJlcXVlc3RzIHdpdGggcmVzcGVjdCB0byBo
aWdoIGFjY3VyYWN5IG1vZGUuIik7CisKK3ZhciBtb2NrTGF0aXR1ZGUgPSA1MS40Nzg7Cit2YXIg
bW9ja0xvbmdpdHVkZSA9IC0wLjE2NjsKK3ZhciBtb2NrTG93QWNjdXJhY3kgPSAxMDA7Cit2YXIg
bW9ja0hpZ2hBY2N1cmFjeSA9IDE7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1
ZSk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25z
KG1vY2tMYXRpdHVkZSwgbW9ja0xvbmdpdHVkZSwgbW9ja0xvd0FjY3VyYWN5LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrTGF0aXR1ZGUs
IG1vY2tMb25naXR1ZGUsIG1vY2tIaWdoQWNjdXJhY3kpOworfSBlbHNlCisgICAgZGVidWcoJ1Ro
aXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicp
OworCisKK3ZhciBsb3dBY2N1cmFjeUV4cGVjdGVkID0gdHJ1ZTsKK3ZhciBoaWdoQWNjdXJhY3lF
eHBlY3RlZCA9IGZhbHNlOwordmFyIGhpZ2hBY2N1cmFjeVJlY2VpdmVkV2F0Y2hPbmUgPSBmYWxz
ZTsKK3ZhciBoaWdoQWNjdXJhY3lSZWNlaXZlZFdhdGNoVHdvID0gZmFsc2U7CisKK3ZhciBwb3Np
dGlvbjsKK2Z1bmN0aW9uIGZpcnN0V2F0Y2gocCkgeworICBkZWJ1ZygnZmlyc3RXYXRjaCcpOwor
ICBwb3NpdGlvbiA9IHA7CisgIGlmIChsb3dBY2N1cmFjeUV4cGVjdGVkKSB7CisgICAgZGVidWco
J2xvd0FjY3VyYWN5RXhwZWN0ZWQnKTsKKyAgICBzaG91bGRCZSgncG9zaXRpb24uY29vcmRzLmxh
dGl0dWRlJywgJ21vY2tMYXRpdHVkZScpOworICAgIHNob3VsZEJlKCdwb3NpdGlvbi5jb29yZHMu
bG9uZ2l0dWRlJywgJ21vY2tMb25naXR1ZGUnKTsKKyAgICBzaG91bGRCZSgncG9zaXRpb24uY29v
cmRzLmFjY3VyYWN5JywgJ21vY2tMb3dBY2N1cmFjeScpOworCisgICAgLy8gQWRkIGEgaGlnaC1h
Y2N1cmFjeSB3YXRjaAorICAgIGxvd0FjY3VyYWN5RXhwZWN0ZWQgPSBmYWxzZTsKKyAgICBuYXZp
Z2F0b3IuZ2VvbG9jYXRpb24ud2F0Y2hQb3NpdGlvbihzZWNvbmRXYXRjaCwgZXJyb3JDYWxsYmFj
aywge2VuYWJsZUhpZ2hBY2N1cmFjeTp0cnVlfSk7CisKKyAgICAvLyBTZW5kIGEgZnJlc2ggcG9z
aXRpb24gdGhyb3VnaAorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbnMobW9ja0xh
dGl0dWRlKzEsIG1vY2tMb25naXR1ZGUrMSwgbW9ja0xvd0FjY3VyYWN5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2tMYXRpdHVkZSsx
LCBtb2NrTG9uZ2l0dWRlKzEsIG1vY2tIaWdoQWNjdXJhY3kpOworICB9IGVsc2UgeworICAgIGRl
YnVnKCdoaWdoQWNjdXJhY3lFeHBlY3RlZCcpOworICAgIHNob3VsZEJlKCdwb3NpdGlvbi5jb29y
ZHMubGF0aXR1ZGUnLCAnbW9ja0xhdGl0dWRlKzEnKTsKKyAgICBzaG91bGRCZSgncG9zaXRpb24u
Y29vcmRzLmxvbmdpdHVkZScsICdtb2NrTG9uZ2l0dWRlKzEnKTsKKyAgICBzaG91bGRCZSgncG9z
aXRpb24uY29vcmRzLmFjY3VyYWN5JywgJ21vY2tIaWdoQWNjdXJhY3knKTsKKyAgfQorfQorCitm
dW5jdGlvbiBzZWNvbmRXYXRjaChwKSB7CisgIGRlYnVnKCdzZWNvbmRXYXRjaCcpOworICBwb3Np
dGlvbiA9IHA7CisgIHNob3VsZEJlKCdwb3NpdGlvbi5jb29yZHMubGF0aXR1ZGUnLCAnbW9ja0xh
dGl0dWRlKzEnKTsKKyAgc2hvdWxkQmUoJ3Bvc2l0aW9uLmNvb3Jkcy5sb25naXR1ZGUnLCAnbW9j
a0xvbmdpdHVkZSsxJyk7CisgIHNob3VsZEJlKCdwb3NpdGlvbi5jb29yZHMuYWNjdXJhY3knLCAn
bW9ja0hpZ2hBY2N1cmFjeScpOworICBmaW5pc2hKU1Rlc3QoKTsKK307CisKK2Z1bmN0aW9uIGVy
cm9yQ2FsbGJhY2soKSB7CisgICAgdGVzdEZhaWxlZCgnRXJyb3IgY2FsbGJhY2sgaW52b2tlZCB1
bmV4cGVjdGVkbHknKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK307CisKK25hdmlnYXRvci5nZW9s
b2NhdGlvbi53YXRjaFBvc2l0aW9uKGZpcnN0V2F0Y2gsIGVycm9yQ2FsbGJhY2spOworCit3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50
TW9jay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNw
cAppbmRleCA1MjU1YjM0Li5jZWVkMThiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
R2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcApAQCAtNDQsNiArNDQsNyBAQCBHZW9sb2NhdGlvbkNs
aWVudE1vY2s6Okdlb2xvY2F0aW9uQ2xpZW50TW9jaygpCiAgICAgLCBtX2NvbnRyb2xsZXJUaW1l
cih0aGlzLCAmR2VvbG9jYXRpb25DbGllbnRNb2NrOjpjb250cm9sbGVyVGltZXJGaXJlZCkKICAg
ICAsIG1fcGVybWlzc2lvblRpbWVyKHRoaXMsICZHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnBlcm1p
c3Npb25UaW1lckZpcmVkKQogICAgICwgbV9pc0FjdGl2ZShmYWxzZSkKKyAgICAsIG1faXNIaWdo
QWNjdXJhY3koZmFsc2UpCiAgICAgLCBtX3Blcm1pc3Npb25TdGF0ZShQZXJtaXNzaW9uU3RhdGVV
bnNldCkKIHsKIH0KQEAgLTU5LDkgKzYwLDIxIEBAIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2Nr
OjpzZXRDb250cm9sbGVyKEdlb2xvY2F0aW9uQ29udHJvbGxlciAqY29udHJvbGxlcikKICAgICBt
X2NvbnRyb2xsZXIgPSBjb250cm9sbGVyOwogfQogCi12b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9j
azo6c2V0UG9zaXRpb24oUGFzc1JlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBwb3NpdGlvbikK
K3ZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRQb3NpdGlvbihQYXNzUmVmUHRyPEdlb2xv
Y2F0aW9uUG9zaXRpb24+IHBycFBvc2l0aW9uKQogewotICAgIG1fbGFzdFBvc2l0aW9uID0gcG9z
aXRpb247CisgICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IHBvc2l0aW9uID0gcHJwUG9z
aXRpb247CisgICAgbV9tb2NrUG9zaXRpb25IaWdoQWNjdXJhY3kgPSBwb3NpdGlvbjsKKyAgICBt
X21vY2tQb3NpdGlvbkxvd0FjY3VyYWN5ID0gcG9zaXRpb247CisKKyAgICBtX2xhc3RFcnJvciA9
IDA7CisgICAgYXN5bmNVcGRhdGVDb250cm9sbGVyKCk7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb25D
bGllbnRNb2NrOjpzZXRQb3NpdGlvbnMoUGFzc1JlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBs
b3dBY2N1cmFjeVBvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQYXNzUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IGhpZ2hBY2N1cmFjeVBvc2l0aW9u
KQoreworICAgIG1fbW9ja1Bvc2l0aW9uTG93QWNjdXJhY3kgPSBsb3dBY2N1cmFjeVBvc2l0aW9u
OworICAgIG1fbW9ja1Bvc2l0aW9uSGlnaEFjY3VyYWN5ID0gaGlnaEFjY3VyYWN5UG9zaXRpb247
CiAgICAgbV9sYXN0RXJyb3IgPSAwOwogICAgIGFzeW5jVXBkYXRlQ29udHJvbGxlcigpOwogfQpA
QCAtMTE5LDYgKzEzMiw4IEBAIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpwZXJtaXNzaW9u
VGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxHZW9sb2NhdGlvbkNsaWVuCiAKIHZvaWQgR2VvbG9j
YXRpb25DbGllbnRNb2NrOjpyZXNldCgpCiB7CisgICAgbV9tb2NrUG9zaXRpb25IaWdoQWNjdXJh
Y3kgPSAwOworICAgIG1fbW9ja1Bvc2l0aW9uTG93QWNjdXJhY3kgPSAwOwogICAgIG1fbGFzdFBv
c2l0aW9uID0gMDsKICAgICBtX2xhc3RFcnJvciA9IDA7CiAgICAgbV9wZXJtaXNzaW9uU3RhdGUg
PSBQZXJtaXNzaW9uU3RhdGVVbnNldDsKQEAgLTE0MywxMCArMTU4LDkgQEAgdm9pZCBHZW9sb2Nh
dGlvbkNsaWVudE1vY2s6OnN0b3BVcGRhdGluZygpCiAgICAgbV9jb250cm9sbGVyVGltZXIuc3Rv
cCgpOwogfQogCi12b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0RW5hYmxlSGlnaEFjY3Vy
YWN5KGJvb2wpCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0RW5hYmxlSGlnaEFjY3Vy
YWN5KGJvb2wgaGlnaEFjY3VyYWN5KQogewotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGFkZCBz
b21lIHRlc3RzIHJlZ2FyZGluZyAiaGlnaCBhY2N1cmFjeSIgbW9kZS4KLSAgICAvLyBTZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5NDM4CisgICAgbV9pc0hpZ2hB
Y2N1cmFjeSA9IGhpZ2hBY2N1cmFjeTsKIH0KIAogR2VvbG9jYXRpb25Qb3NpdGlvbiogR2VvbG9j
YXRpb25DbGllbnRNb2NrOjpsYXN0UG9zaXRpb24oKQpAQCAtMTY2LDYgKzE4MCwxMSBAQCB2b2lk
IEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y29udHJvbGxlclRpbWVyRmlyZWQoVGltZXI8R2VvbG9j
YXRpb25DbGllbnRNb2NrPiogdAogICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZt
X2NvbnRyb2xsZXJUaW1lcik7CiAgICAgQVNTRVJUKG1fY29udHJvbGxlcik7CiAKKyAgICBpZiAo
bV9pc0hpZ2hBY2N1cmFjeSkKKyAgICAgICAgbV9sYXN0UG9zaXRpb24gPSBtX21vY2tQb3NpdGlv
bkhpZ2hBY2N1cmFjeTsKKyAgICBlbHNlCisgICAgICAgIG1fbGFzdFBvc2l0aW9uID0gbV9tb2Nr
UG9zaXRpb25Mb3dBY2N1cmFjeTsKKwogICAgIGlmIChtX2xhc3RQb3NpdGlvbi5nZXQoKSkKICAg
ICAgICAgbV9jb250cm9sbGVyLT5wb3NpdGlvbkNoYW5nZWQobV9sYXN0UG9zaXRpb24uZ2V0KCkp
OwogICAgIGVsc2UgaWYgKG1fbGFzdEVycm9yLmdldCgpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oCmluZGV4IGRmMzUzMTYuLmJkMzE2YTMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKQEAgLTU4LDYg
KzU4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRFcnJvcihQYXNzUmVmUHRyPEdlb2xvY2F0
aW9uRXJyb3I+KTsKICAgICB2b2lkIHNldFBvc2l0aW9uKFBhc3NSZWZQdHI8R2VvbG9jYXRpb25Q
b3NpdGlvbj4pOworICAgIHZvaWQgc2V0UG9zaXRpb25zKFBhc3NSZWZQdHI8R2VvbG9jYXRpb25Q
b3NpdGlvbj4gbG93QWNjdXJhY3lQb3NpdGlvbiwgUGFzc1JlZlB0cjxHZW9sb2NhdGlvblBvc2l0
aW9uPiBoaWdoQWNjdXJhY3lQb3NpdGlvbik7CiAgICAgdm9pZCBzZXRQZXJtaXNzaW9uKGJvb2wg
YWxsb3dlZCk7CiAKICAgICAvLyBHZW9sb2NhdGlvbkNsaWVudApAQCAtNzgsMTAgKzc5LDEzIEBA
IHByaXZhdGU6CiAKICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsKICAg
ICBSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0UG9zaXRpb247CisgICAgUmVmUHRy
PEdlb2xvY2F0aW9uUG9zaXRpb24+IG1fbW9ja1Bvc2l0aW9uSGlnaEFjY3VyYWN5OworICAgIFJl
ZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBtX21vY2tQb3NpdGlvbkxvd0FjY3VyYWN5OwogICAg
IFJlZlB0cjxHZW9sb2NhdGlvbkVycm9yPiBtX2xhc3RFcnJvcjsKICAgICBUaW1lcjxHZW9sb2Nh
dGlvbkNsaWVudE1vY2s+IG1fY29udHJvbGxlclRpbWVyOwogICAgIFRpbWVyPEdlb2xvY2F0aW9u
Q2xpZW50TW9jaz4gbV9wZXJtaXNzaW9uVGltZXI7CiAgICAgYm9vbCBtX2lzQWN0aXZlOworICAg
IGJvb2wgbV9pc0hpZ2hBY2N1cmFjeTsKIAogICAgIGVudW0gUGVybWlzc2lvblN0YXRlIHsKICAg
ICAgICAgUGVybWlzc2lvblN0YXRlVW5zZXQsCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5oIGIvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suaAppbmRleCAwOGE4NWUyLi45OTkyZGE0IDEwMDY0
NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5o
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmgK
QEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIH5XZWJHZW9sb2NhdGlvbkNsaWVudE1vY2so
KSB7IHJlc2V0KCk7IH0KIAogICAgIFdFQktJVF9BUEkgdm9pZCBzZXRQb3NpdGlvbihkb3VibGUg
bGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7CisgICAgV0VCS0lU
X0FQSSB2b2lkIHNldFBvc2l0aW9ucyhkb3VibGUgbG93QWNjdXJhY3lMYXRpdHVkZSwgZG91Ymxl
IGxvd0FjY3VyYWN5TG9uZ2l0dWRlLCBkb3VibGUgbG93QWNjdXJhY3lBY2N1cmFjeSwgZG91Ymxl
IGhpZ2hBY2N1cmFjeUxhdGl0dWRlLCBkb3VibGUgaGlnaEFjY3VyYWN5TG9uZ2l0dWRlLCBkb3Vi
bGUgaGlnaEFjY3VyYWN5QWNjdXJhY3kpOwogICAgIFdFQktJVF9BUEkgdm9pZCBzZXRFcnJvcihp
bnQgZXJyb3JDb2RlLCBjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpOwogICAgIFdFQktJVF9BUEkg
dm9pZCBzZXRQZXJtaXNzaW9uKGJvb2wpOwogICAgIFdFQktJVF9BUEkgdm9pZCByZXNldE1vY2so
KTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25DbGllbnRN
b2NrLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmNw
cAppbmRleCAxZWMzZGQxLi41NmYwM2RmIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCkBAIC01OCw2ICs1OCwxNyBAQCB2b2lkIFdlYkdl
b2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0UG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUg
bG9uZ2l0dWRlLCBkbwogICAgIG1fY2xpZW50TW9jay0+c2V0UG9zaXRpb24od2ViUG9zaXRpb24p
OwogfQogCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0UG9zaXRpb25zKGRvdWJs
ZSBsb3dBY2N1cmFjeUxhdGl0dWRlLCBkb3VibGUgbG93QWNjdXJhY3lMb25naXR1ZGUsIGRvdWJs
ZSBsb3dBY2N1cmFjeUFjY3VyYWN5LCBkb3VibGUgaGlnaEFjY3VyYWN5TGF0aXR1ZGUsIGRvdWJs
ZSBoaWdoQWNjdXJhY3lMb25naXR1ZGUsIGRvdWJsZSBoaWdoQWNjdXJhY3lBY2N1cmFjeSkKK3sK
KyAgICBkb3VibGUgbm93ID0gY3VycmVudFRpbWUoKTsKKyAgICBXZWJHZW9sb2NhdGlvblBvc2l0
aW9uIGxvd0FjY3VyYWN5KG5vdywgbG93QWNjdXJhY3lMYXRpdHVkZSwgbG93QWNjdXJhY3lMb25n
aXR1ZGUsIGxvd0FjY3VyYWN5QWNjdXJhY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmYWxzZSwgMCwgZmFsc2UsIDAsIGZhbHNlLCAwLCBmYWxzZSwgMCk7CisgICAg
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBoaWdoQWNjdXJhY3kobm93LCBoaWdoQWNjdXJhY3lMYXRp
dHVkZSwgaGlnaEFjY3VyYWN5TG9uZ2l0dWRlLCBoaWdoQWNjdXJhY3lBY2N1cmFjeSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCAwLCBmYWxzZSwgMCwgZmFs
c2UsIDAsIGZhbHNlLCAwKTsKKworICAgIG1fY2xpZW50TW9jay0+c2V0UG9zaXRpb25zKGxvd0Fj
Y3VyYWN5LCBoaWdoQWNjdXJhY3kpOworfQorCiB2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9j
azo6c2V0RXJyb3IoaW50IGVycm9yQ29kZSwgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKQogewog
ICAgIFdlYkdlb2xvY2F0aW9uRXJyb3I6OkVycm9yIGNvZGU7CmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggYTIyNTc5YS4u
YWI5YWM3YiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcApAQCAtMTA3MCw5ICsxMDcwLDI1IEBAIHN0YXRpYyBKU1ZhbHVlUmVm
IHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTT2JqCiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAog
ICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxM
YXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0g
ICAgY29udHJvbGxlci0+c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oSlNWYWx1ZVRvTnVtYmVy
KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgTlVMTCksICAvLyBsYXRpdHVkZQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBh
cmd1bWVudHNbMV0sIE5VTEwpLCAgLy8gbG9uZ2l0dWRlCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sy
XSwgTlVMTCkpOyAgLy8gYWNjdXJhY3kKKyAgICBjb250cm9sbGVyLT5zZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvbihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCAwKSwgLy8g
bGF0aXR1ZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU1Zh
bHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzFdLCAwKSwgLy8gbG9uZ2l0dWRlCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVRvTnVtYmVyKGNv
bnRleHQsIGFyZ3VtZW50c1syXSwgMCkpOyAvLyBhY2N1cmFjeQorCisgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvbnNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
Cit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCA2KQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJv
bGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdl
dFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnNldE1vY2tHZW9sb2NhdGlv
blBvc2l0aW9ucyhKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCAwKSwgLy8g
bG93LWFjY3VyYWN5IGxhdGl0dWRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMV0sIDApLCAvLyBs
b3ctYWNjdXJhY3kgbG9uZ2l0dWRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMl0sIDApLCAvLyBs
b3ctYWNjdXJhY3kgYWNjdXJhY3kKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1szXSwgMCksIC8vIGhp
Z2gtYWNjdXJhY3kgbGF0aXR1ZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1s0XSwgMCksIC8vIGhp
Z2gtYWNjdXJhY3kgbG9uZ2l0dWRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbNV0sIDApKTsgLy8g
aGlnaC1hY2N1cmFjeSBhY2N1cmFjeQogCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOwogfQpAQCAtMTk5Miw2ICsyMDA4LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgInNldE1vY2tE
ZXZpY2VPcmllbnRhdGlvbiIsIHNldE1vY2tEZXZpY2VPcmllbnRhdGlvbkNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgICAgIHsgInNldE1vY2tHZW9sb2NhdGlvbkVycm9yIiwgc2V0TW9ja0dlb2xvY2F0
aW9uRXJyb3JDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRNb2NrR2VvbG9jYXRpb25Q
b3NpdGlvbiIsIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAg
ICAgICAgeyAic2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25zIiwgc2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb25zQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiYWRkTW9ja1NwZWVjaElucHV0
UmVzdWx0IiwgYWRkTW9ja1NwZWVjaElucHV0UmVzdWx0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAic2V0TmV3V2luZG93c0NvcHlCYWNrRm9yd2FyZExpc3QiLCBzZXROZXdXaW5kb3dzQ29w
eUJhY2tGb3J3YXJkTGlzdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFBPU0lYTG9j
YWxlIiwgc2V0UE9TSVhMb2NhbGVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggMmU5Yzg1Ni4uOGE3
YTQ3NCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oCkBAIC05NSw2ICs5NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1vY2tEZXZp
Y2VPcmllbnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNh
blByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBn
YW1tYSk7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQgY29kZSwgSlNTdHJp
bmdSZWYgbWVzc2FnZSk7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3Vi
bGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7CisgICAgdm9p
ZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbnMoZG91YmxlIGxvd0FjY3VyYWN5TGF0aXR1ZGUs
IGRvdWJsZSBsb3dBY2N1cmFjeUxvbmdpdHVkZSwgZG91YmxlIGxvd0FjY3VyYWN5QWNjdXJhY3ks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGhpZ2hBY2N1cmFj
eUxhdGl0dWRlLCBkb3VibGUgaGlnaEFjY3VyYWN5TG9uZ2l0dWRlLCBkb3VibGUgaGlnaEFjY3Vy
YWN5QWNjdXJhY3kpOwogICAgIHZvaWQgYWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5n
UmVmIHJlc3VsdCwgZG91YmxlIGNvbmZpZGVuY2UsIEpTU3RyaW5nUmVmIGxhbmd1YWdlKTsKICAg
ICB2b2lkIHNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVmIHBh
dGgpOwogICAgIHZvaWQgc2V0UGx1Z2luc0VuYWJsZWQoYm9vbCBmbGFnKTsKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcAppbmRleCBkMjUyYzYzLi5jZmY3N2NmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwCkBAIC0xNTQsNiArMTU0LDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RD
b250cm9sbGVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0Rldmlj
ZU9yaWVudGF0aW9uIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50
YXRpb24pOwogICAgIGJpbmRNZXRob2QoInNldE1vY2tHZW9sb2NhdGlvbkVycm9yIiwgJkxheW91
dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcik7CiAgICAgYmluZE1ldGhv
ZCgic2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24iLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvbnMiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlv
blBvc2l0aW9ucyk7CiAgICAgYmluZE1ldGhvZCgiYWRkTW9ja1NwZWVjaElucHV0UmVzdWx0Iiwg
JkxheW91dFRlc3RDb250cm9sbGVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOwogICAgIGJp
bmRNZXRob2QoInNldFBvcHVwQmxvY2tpbmdFbmFibGVkIiwgJkxheW91dFRlc3RDb250cm9sbGVy
OjpzZXRQb3B1cEJsb2NraW5nRW5hYmxlZCk7CiAgICAgYmluZE1ldGhvZCgic2V0UE9TSVhMb2Nh
bGUiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFBPU0lYTG9jYWxlKTsKQEAgLTE1MzYsNiAr
MTUzNywyMCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Q
b3NpdGlvbihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZwogI2VuZGlmCiB9CiAKK3ZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9ucyhjb25zdCBDcHBB
cmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3Vs
dC0+c2V0TnVsbCgpOworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDwgNiB8fCAhYXJndW1lbnRz
WzBdLmlzTnVtYmVyKCkgfHwgIWFyZ3VtZW50c1sxXS5pc051bWJlcigpIHx8ICFhcmd1bWVudHNb
Ml0uaXNOdW1iZXIoKQorICAgICAgICB8fCAhYXJndW1lbnRzWzNdLmlzTnVtYmVyKCkgfHwgIWFy
Z3VtZW50c1s0XS5pc051bWJlcigpIHx8ICFhcmd1bWVudHNbNV0uaXNOdW1iZXIoKSkKKyAgICAg
ICAgcmV0dXJuOworI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisgICAgbV9z
aGVsbC0+d2ViVmlld0hvc3QoKS0+Z2VvbG9jYXRpb25DbGllbnRNb2NrKCktPnNldFBvc2l0aW9u
cyhhcmd1bWVudHNbMF0udG9Eb3VibGUoKSwgYXJndW1lbnRzWzFdLnRvRG91YmxlKCksIGFyZ3Vt
ZW50c1syXS50b0RvdWJsZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzWzNdLnRvRG91YmxlKCksIGFy
Z3VtZW50c1s0XS50b0RvdWJsZSgpLCBhcmd1bWVudHNbNV0udG9Eb3VibGUoKSk7CisjZWxzZQor
ICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gaW1wbGVtZW50IHRoaXMgZm9yIG5vbi1jbGllbnQtYmFz
ZWQgZ2VvbG9jYXRpb24uCisjZW5kaWYKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMs
IENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICByZXN1bHQtPnNldE51bGwoKTsKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9s
bGVyLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oCmluZGV4IDAzYWZmYTMuLjEwZGNkMWMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaApA
QCAtMzIxLDYgKzMyMSw3IEBAIHB1YmxpYzoKICAgICAvLyBHZW9sb2NhdGlvbiByZWxhdGVkIGZ1
bmN0aW9ucy4KICAgICB2b2lkIHNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvbihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBzZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvbnMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCopOwogCiAgICAgLy8gRW1wdHkgc3R1YiBtZXRob2QgdG8ga2VlcCBw
YXJpdHkgd2l0aCBvYmplY3QgbW9kZWwgZXhwb3NlZCBieSBnbG9iYWwgTGF5b3V0VGVzdENvbnRy
b2xsZXIuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0
VGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xh
eW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAppbmRleCA4Mzg3NGY0Li4wNDA5YzIyIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJH
dGsuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29u
dHJvbGxlckd0ay5jcHAKQEAgLTQ3NSw2ICs0NzUsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUg
bG8KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4
MjY0LgogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Q
b3NpdGlvbihkb3VibGUgbG93QWNjdXJhY3lMYXRpdHVkZSwgZG91YmxlIGxvd0FjY3VyYWN5TG9u
Z2l0dWRlLCBkb3VibGUgbG93QWNjdXJhY3lBY2N1cmFjeSwgZG91YmxlIGhpZ2hBY2N1cmFjeUxh
dGl0dWRlLCBkb3VibGUgaGlnaEFjY3VyYWN5TG9uZ2l0dWRlLCBkb3VibGUgaGlnaEFjY3VyYWN5
QWNjdXJhY3kpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgR2VvbG9jYXRpb24gbGF5
b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjgyNjQuCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9s
b2NhdGlvbkVycm9yKGludCBjb2RlLCBKU1N0cmluZ1JlZiBtZXNzYWdlKQogewogICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgZm9yIEdlb2xvY2F0aW9uIGxheW91dCB0ZXN0cy4KZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5t
bSBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1h
Yy5tbQppbmRleCBiZTNlYjA5Li40NDRmM2U2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KKysrIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCkBAIC0zNTks
NiArMzU5LDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlv
blBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvCiAgICAgW3Bvc2l0aW9uIHJlbGVh
c2VdOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Q
b3NpdGlvbnMoZG91YmxlIGxvd0FjY3VyYWN5TGF0aXR1ZGUsIGRvdWJsZSBsb3dBY2N1cmFjeUxv
bmdpdHVkZSwgZG91YmxlIGxvd0FjY3VyYWN5QWNjdXJhY3ksIGRvdWJsZSBoaWdoQWNjdXJhY3lM
YXRpdHVkZSwgZG91YmxlIGhpZ2hBY2N1cmFjeUxvbmdpdHVkZSwgZG91YmxlIGhpZ2hBY2N1cmFj
eUFjY3VyYWN5KQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgb25jZSB3ZSBhcmUgdXNpbmcg
dGhlIFdlYkNvcmUgc2hhcmVkIG1vY2suCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBKU1N0cmluZ1JlZiBtZXNzYWdlKQog
ewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWVzc2FnZUNGKEFkb3B0Q0YsIEpTU3RyaW5n
Q29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1lc3NhZ2UpKTsKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3Bw
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5j
cHAKaW5kZXggOGI0OTViZS4uYmQyMjU4YiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKKysrIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKQEAgLTc3Myw2ICs3
NzMsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9z
aXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG8KICAgICBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24obGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNj
dXJhY3kpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvbnMoZG91YmxlIGxvd0FjY3VyYWN5TGF0aXR1ZGUsIGRvdWJsZSBsb3dBY2N1cmFj
eUxvbmdpdHVkZSwgZG91YmxlIGxvd0FjY3VyYWN5QWNjdXJhY3ksIGRvdWJsZSBoaWdoQWNjdXJh
Y3lMYXRpdHVkZSwgZG91YmxlIGhpZ2hBY2N1cmFjeUxvbmdpdHVkZSwgZG91YmxlIGhpZ2hBY2N1
cmFjeUFjY3VyYWN5KQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgb25jZSB3ZSBhcmUgY2xp
ZW50LWJhc2VkIGFuZCB1c2luZyB0aGUgV2ViQ29yZSBzaGFyZWQgbW9jay4KK30KKwogdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IFFTdHJp
bmcmIHJlc3VsdCwgZG91YmxlIGNvbmZpZGVuY2UsIGNvbnN0IFFTdHJpbmcmIGxhbmd1YWdlKQog
ewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMu
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENv
bnRyb2xsZXJXaW4uY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRl
c3RDb250cm9sbGVyV2luLmNwcAppbmRleCBiMWE0ZWY0Li5jNWE2ZWFkIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3Bw
CisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxl
cldpbi5jcHAKQEAgLTM5OSw2ICszOTksMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG8KICAg
ICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MjY0Lgog
fQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlv
bnMoZG91YmxlIGxvd0FjY3VyYWN5TGF0aXR1ZGUsIGRvdWJsZSBsb3dBY2N1cmFjeUxvbmdpdHVk
ZSwgZG91YmxlIGxvd0FjY3VyYWN5QWNjdXJhY3ksIGRvdWJsZSBoaWdoQWNjdXJhY3lMYXRpdHVk
ZSwgZG91YmxlIGhpZ2hBY2N1cmFjeUxvbmdpdHVkZSwgZG91YmxlIGhpZ2hBY2N1cmFjeUFjY3Vy
YWN5KQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIEdlb2xvY2F0aW9uIGxheW91dCB0
ZXN0cy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI4MjY0LgorfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRp
b25FcnJvcihpbnQgY29kZSwgSlNTdHJpbmdSZWYgbWVzc2FnZSkKIHsKICAgICAvLyBGSVhNRTog
SW1wbGVtZW50IGZvciBHZW9sb2NhdGlvbiBsYXlvdXQgdGVzdHMuCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcCBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCmlu
ZGV4IDEyMGExYjYuLmI5M2RmZjkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCkBAIC0zMDgsNiArMzA4LDEy
IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9u
KGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODI2NC4KIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25zKGRvdWJsZSBsb3dBY2N1cmFjeUxhdGl0
dWRlLCBkb3VibGUgbG93QWNjdXJhY3lMb25naXR1ZGUsIGRvdWJsZSBsb3dBY2N1cmFjeUFjY3Vy
YWN5LCBkb3VibGUgaGlnaEFjY3VyYWN5TGF0aXR1ZGUsIGRvdWJsZSBoaWdoQWNjdXJhY3lMb25n
aXR1ZGUsIGRvdWJsZSBoaWdoQWNjdXJhY3lBY2N1cmFjeSkKK3sKKyAgICAvLyBGSVhNRTogSW1w
bGVtZW50IGZvciBHZW9sb2NhdGlvbiBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODI2NC4KK30KKwogdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5n
UmVmIG1lc3NhZ2UpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgR2VvbG9jYXRpb24g
bGF5b3V0IHRlc3RzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76647</attachid>
            <date>2010-12-15 08:10:52 -0800</date>
            <delta_ts>2011-02-15 04:41:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49438-20101215161050.patch</filename>
            <type>text/plain</type>
            <size>20935</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4YWEwMDZjMTRiZGQ1YzhkYzVhY2JkMGU0ZmJlYjkyMTQxNmY2ZmYwLi5kNzA5Mzky
OWE0YWRjZDQ2MjFhNTVmOGE2ZjE2MDliZDM3MGJmMWZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTAtMTItMTUgIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIExheW91
dFRlc3RzIHRvIHRlc3QgaGlnaCBhY2N1cmFjeSBtb2RlIGluIEdlb2xvY2F0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTQzOAorCisgICAgICAg
ICogZmFzdC9kb20vR2VvbG9jYXRpb24vYWNjdXJhY3ktcmVxdWVzdHMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9hY2N1cmFjeS1yZXF1ZXN0cy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMv
YWNjdXJhY3ktcmVxdWVzdHMuanM6IEFkZGVkLgorICAgICAgICAoY2hlY2tDbGllbnRTdGF0ZSk6
CisgICAgICAgIChmaXJzdFdhdGNoKToKKyAgICAgICAgKHNlY29uZFdhdGNoKToKKyAgICAgICAg
KGVycm9yQ2FsbGJhY2spOgorCiAyMDEwLTEyLTE0ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4gQ2hyb21pdW0gdGVzdHMgcmVi
YXNlbGluZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9h
Y2N1cmFjeS1yZXF1ZXN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9s
b2NhdGlvbi9hY2N1cmFjeS1yZXF1ZXN0cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDM3ZTFi
NTkyMWI3MTY3NjJjMDk2MjcwYjExM2FhOTFjZGYzZDgzOAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2FjY3VyYWN5LXJlcXVlc3RzLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE2IEBACitUZXN0cyB0aGF0IEdlb2xvY2F0aW9uIGNvcnJlY3RseSBo
YW5kbGVzIG11bHRpcGxlIGNvbmN1cnJlbnQgcmVxdWVzdHMgd2l0aCByZXNwZWN0IHRvIGhpZ2gg
YWNjdXJhY3kgbW9kZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgY2xp
ZW50U3RhdGUgaXMgbW9ja1N0YXRlSWRsZQorZmlyc3RXYXRjaAorUEFTUyBjbGllbnRTdGF0ZSBp
cyBtb2NrU3RhdGVMb3cKK2ZpcnN0V2F0Y2gKK1BBU1MgY2xpZW50U3RhdGUgaXMgbW9ja1N0YXRl
SGlnaAorc2Vjb25kV2F0Y2gKK1BBU1MgY2xpZW50U3RhdGUgaXMgbW9ja1N0YXRlSGlnaAorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2FjY3VyYWN5LXJlcXVlc3RzLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9hY2N1cmFjeS1yZXF1ZXN0cy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmYzYjdjNjQyMDc5NTg2ZDhhOGM0MjNjMjgxNDM2NzQ1N2ZmMzE3NWUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9hY2N1
cmFjeS1yZXF1ZXN0cy5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYWNjdXJhY3ktcmVxdWVzdHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2FjY3VyYWN5LXJlcXVlc3RzLmpz
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2FjY3VyYWN5
LXJlcXVlc3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwNzNmMjg5YjdiYTJjZWIyNzg1YjZjZTc1NDVlNzcy
YzNhODU2NTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2Nh
dGlvbi9zY3JpcHQtdGVzdHMvYWNjdXJhY3ktcmVxdWVzdHMuanMKQEAgLTAsMCArMSw2NSBAQAor
ZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgR2VvbG9jYXRpb24gY29ycmVjdGx5IGhhbmRsZXMgbXVs
dGlwbGUgY29uY3VycmVudCByZXF1ZXN0cyB3aXRoIHJlc3BlY3QgdG8gaGlnaCBhY2N1cmFjeSBt
b2RlLiIpOworCit2YXIgbW9ja0xhdGl0dWRlID0gNTEuNDc4OwordmFyIG1vY2tMb25naXR1ZGUg
PSAtMC4xNjY7Cit2YXIgbW9ja0FjY3VyYWN5ID0gMTAwOworCit2YXIgbW9ja1N0YXRlSWRsZSA9
ICdpZGxlJzsKK3ZhciBtb2NrU3RhdGVIaWdoID0gJ2hpZ2gnOwordmFyIG1vY2tTdGF0ZUxvdyA9
ICdsb3cnOworCit2YXIgY2xpZW50U3RhdGU7CitmdW5jdGlvbiBjaGVja0NsaWVudFN0YXRlKHN0
YXRlKSB7CisgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBjbGllbnRT
dGF0ZSA9IGxheW91dFRlc3RDb250cm9sbGVyLmdlb2xvY2F0aW9uQ2xpZW50U3RhdGUoKTsKKyAg
ICBzaG91bGRCZSgnY2xpZW50U3RhdGUnLCBzdGF0ZSk7CisgIH0KK30KKworaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEdlb2xv
Y2F0aW9uUGVybWlzc2lvbih0cnVlKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvbihtb2NrTGF0aXR1ZGUsIG1vY2tMb25naXR1ZGUsIG1vY2tBY2N1
cmFjeSk7Cit9IGVsc2UKKyAgICBkZWJ1ZygnVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhv
dXQgdGhlIExheW91dFRlc3RDb250cm9sbGVyJyk7CisKK3ZhciBsb3dBY2N1cmFjeUV4cGVjdGVk
ID0gdHJ1ZTsKK3ZhciBoaWdoQWNjdXJhY3lFeHBlY3RlZCA9IGZhbHNlOwordmFyIGhpZ2hBY2N1
cmFjeVJlY2VpdmVkV2F0Y2hPbmUgPSBmYWxzZTsKK3ZhciBoaWdoQWNjdXJhY3lSZWNlaXZlZFdh
dGNoVHdvID0gZmFsc2U7Cit2YXIgY2xpZW50U3RhdGU7CisKK2NoZWNrQ2xpZW50U3RhdGUoJ21v
Y2tTdGF0ZUlkbGUnKTsKKworZnVuY3Rpb24gZmlyc3RXYXRjaChwKSB7CisgIGRlYnVnKCdmaXJz
dFdhdGNoJyk7CisgIGlmIChsb3dBY2N1cmFjeUV4cGVjdGVkKSB7CisgICAgY2hlY2tDbGllbnRT
dGF0ZSgnbW9ja1N0YXRlTG93Jyk7CisKKyAgICAvLyBBZGQgYSBoaWdoLWFjY3VyYWN5IHdhdGNo
CisgICAgbG93QWNjdXJhY3lFeHBlY3RlZCA9IGZhbHNlOworICAgIG5hdmlnYXRvci5nZW9sb2Nh
dGlvbi53YXRjaFBvc2l0aW9uKHNlY29uZFdhdGNoLCBlcnJvckNhbGxiYWNrLCB7ZW5hYmxlSGln
aEFjY3VyYWN5OnRydWV9KTsKKworICAgIC8vIFNlbmQgYSBmcmVzaCBwb3NpdGlvbiB0aHJvdWdo
CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKG1vY2tMYXRpdHVkZSsxLCBtb2Nr
TG9uZ2l0dWRlKzEsIG1vY2tBY2N1cmFjeSsxKTsKKyAgfSBlbHNlIHsKKyAgICBjaGVja0NsaWVu
dFN0YXRlKCdtb2NrU3RhdGVIaWdoJyk7CisgIH0KK30KKworZnVuY3Rpb24gc2Vjb25kV2F0Y2go
cCkgeworICBkZWJ1Zygnc2Vjb25kV2F0Y2gnKTsKKyAgY2hlY2tDbGllbnRTdGF0ZSgnbW9ja1N0
YXRlSGlnaCcpOworICBmaW5pc2hKU1Rlc3QoKTsKK307CisKK2Z1bmN0aW9uIGVycm9yQ2FsbGJh
Y2soKSB7CisgICAgdGVzdEZhaWxlZCgnRXJyb3IgY2FsbGJhY2sgaW52b2tlZCB1bmV4cGVjdGVk
bHknKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK307CisKK25hdmlnYXRvci5nZW9sb2NhdGlvbi53
YXRjaFBvc2l0aW9uKGZpcnN0V2F0Y2gsIGVycm9yQ2FsbGJhY2spOworCit3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NjQ3
NTZhOTAwOTBiMTU3MTI5ZjdjNzAwMDcyODhkZmM5OGI1N2RlLi5mNmIzZjFiZmFhYjI2ZTg3NGMz
MWU4ZWNiN2QzN2JkNWViNjAwOTZlIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEwLTEyLTE1ICBKb2huIEtu
b3R0ZW5iZWx0ICA8amtub3R0ZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBMYXlvdXRUZXN0cyB0byB0ZXN0IGhpZ2gg
YWNjdXJhY3kgbW9kZSBpbiBHZW9sb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk0MzgKKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9HZW9s
b2NhdGlvbi9hY2N1cmFjeS1yZXF1ZXN0cy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L0dlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRp
b25TZXJ2aWNlTW9jazo6R2VvbG9jYXRpb25TZXJ2aWNlTW9jayk6CisgICAgICAgIChXZWJDb3Jl
OjpHZW9sb2NhdGlvblNlcnZpY2VNb2NrOjpnZW9sb2NhdGlvbkNsaWVudFN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uU2VydmljZU1vY2s6OnN0YXJ0VXBkYXRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6Y2xpZW50U3RhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6aW5pdFN0YXRpY3MpOgorICAg
ICAgICAqIHBsYXRmb3JtL21vY2svR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oOgorCiAyMDEwLTEy
LTE0ICBDaGFybGllIFJlaXMgIDxjcmVpc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2Vv
bG9jYXRpb25TZXJ2aWNlTW9jay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRp
b25TZXJ2aWNlTW9jay5jcHAKaW5kZXggYjI1NGNiODEyNzY5NWFkMDVkOWVkOGE3OTU1ZTEyZmQ0
NTZkYzNhNC4uYjk1NjQwNThkNDBkODRiZTNiNDVmNDA3OTFmZTY2OTRmNmQ0NDk5YSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvblNlcnZpY2VNb2NrLmNwcApAQCAt
NTAsNiArNTAsNyBAQCBHZW9sb2NhdGlvblNlcnZpY2VNb2NrOjpHZW9sb2NhdGlvblNlcnZpY2VN
b2NrKEdlb2xvY2F0aW9uU2VydmljZUNsaWVudCogY2xpZW50KQogICAgIDogR2VvbG9jYXRpb25T
ZXJ2aWNlKGNsaWVudCkKICAgICAsIG1fdGltZXIodGhpcywgJkdlb2xvY2F0aW9uU2VydmljZU1v
Y2s6OnRpbWVyRmlyZWQpCiAgICAgLCBtX2lzQWN0aXZlKGZhbHNlKQorICAgICwgbV9pc0hpZ2hB
Y2N1cmFjeShmYWxzZSkKIHsKICAgICBzX2luc3RhbmNlcy0+YWRkKHRoaXMpOwogfQpAQCAtNzEs
NiArNzIsMjEgQEAgdm9pZCBHZW9sb2NhdGlvblNlcnZpY2VNb2NrOjpzZXRQb3NpdGlvbihQYXNz
UmVmUHRyPEdlb3Bvc2l0aW9uPiBwb3NpdGlvbikKICAgICBtYWtlR2VvbG9jYXRpb25DYWxsYmFj
a0Zyb21BbGxJbnN0YW5jZXMoKTsKIH0KIAorR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6Q2xpZW50
U3RhdGUgR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6Z2VvbG9jYXRpb25DbGllbnRTdGF0ZSgpCit7
CisgICAgaW5pdFN0YXRpY3MoKTsKKworICAgIEdlb2xvY2F0aW9uU2VydmljZVNldDo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gc19pbnN0YW5jZXMtPmVuZCgpOworICAgIENsaWVudFN0YXRlIGNsaWVu
dFN0YXRlID0gSWRsZTsKKyAgICBmb3IgKEdlb2xvY2F0aW9uU2VydmljZVNldDo6Y29uc3RfaXRl
cmF0b3IgaXRlciA9IHNfaW5zdGFuY2VzLT5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7
CisgICAgICAgIEdlb2xvY2F0aW9uU2VydmljZU1vY2sqIGdlb2xvY2F0aW9uU2VydmljZU1vY2sg
PSAqaXRlcjsKKyAgICAgICAgaWYgKGdlb2xvY2F0aW9uU2VydmljZU1vY2stPmNsaWVudFN0YXRl
KCkgPiBjbGllbnRTdGF0ZSkKKyAgICAgICAgICAgIGNsaWVudFN0YXRlID0gZ2VvbG9jYXRpb25T
ZXJ2aWNlTW9jay0+Y2xpZW50U3RhdGUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gY2xpZW50U3Rh
dGU7Cit9CisKIHZvaWQgR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6c2V0RXJyb3IoUGFzc1JlZlB0
cjxQb3NpdGlvbkVycm9yPiBlcnJvcikKIHsKICAgICBpbml0U3RhdGljcygpOwpAQCAtODAsMTAg
Kzk2LDExIEBAIHZvaWQgR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6c2V0RXJyb3IoUGFzc1JlZlB0
cjxQb3NpdGlvbkVycm9yPiBlcnJvcikKICAgICBtYWtlR2VvbG9jYXRpb25DYWxsYmFja0Zyb21B
bGxJbnN0YW5jZXMoKTsKIH0KIAotYm9vbCBHZW9sb2NhdGlvblNlcnZpY2VNb2NrOjpzdGFydFVw
ZGF0aW5nKFBvc2l0aW9uT3B0aW9ucyopCitib29sIEdlb2xvY2F0aW9uU2VydmljZU1vY2s6OnN0
YXJ0VXBkYXRpbmcoUG9zaXRpb25PcHRpb25zKiBvcHRpb25zKQogewogICAgIG1faXNBY3RpdmUg
PSB0cnVlOwogICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOworICAgIG1faXNIaWdoQWNjdXJh
Y3kgPSBvcHRpb25zLT5lbmFibGVIaWdoQWNjdXJhY3koKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtOTgsNiArMTE1LDE1IEBAIHZvaWQgR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6dGltZXJG
aXJlZChUaW1lcjxHZW9sb2NhdGlvblNlcnZpY2VNb2NrPiogdGltZXIpCiAgICAgbWFrZUdlb2xv
Y2F0aW9uQ2FsbGJhY2soKTsKIH0KIAorR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6Q2xpZW50U3Rh
dGUgR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6Y2xpZW50U3RhdGUoKSBjb25zdAoreworICAgIGlm
ICghbV9pc0FjdGl2ZSkKKyAgICAgICAgcmV0dXJuIElkbGU7CisgICAgaWYgKG1faXNIaWdoQWNj
dXJhY3kpCisgICAgICAgIHJldHVybiBIaWdoOworICAgIHJldHVybiBMb3c7Cit9CisKIHZvaWQg
R2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6bWFrZUdlb2xvY2F0aW9uQ2FsbGJhY2tGcm9tQWxsSW5z
dGFuY2VzKCkKIHsKICAgICBHZW9sb2NhdGlvblNlcnZpY2VTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IHNfaW5zdGFuY2VzLT5lbmQoKTsKQEAgLTExOCw3ICsxNDQsNyBAQCB2b2lkIEdlb2xvY2F0
aW9uU2VydmljZU1vY2s6Om1ha2VHZW9sb2NhdGlvbkNhbGxiYWNrKCkKIAogdm9pZCBHZW9sb2Nh
dGlvblNlcnZpY2VNb2NrOjppbml0U3RhdGljcygpCiB7Ci0gICAgaWYgKHNfaW5zdGFuY2VzID09
IDApIHsgCisgICAgaWYgKCFzX2luc3RhbmNlcykgewogICAgICAgICBzX2luc3RhbmNlcyA9IG5l
dyBHZW9sb2NhdGlvblNlcnZpY2VTZXQ7CiAgICAgICAgIHNfbGFzdFBvc2l0aW9uID0gbmV3IFJl
ZlB0cjxHZW9wb3NpdGlvbj47CiAgICAgICAgIHNfbGFzdEVycm9yID0gbmV3IFJlZlB0cjxQb3Np
dGlvbkVycm9yPjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlv
blNlcnZpY2VNb2NrLmggYi9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25TZXJ2aWNl
TW9jay5oCmluZGV4IDdkMDI3OTczOTBmNjBkY2JkYjk0YTAzZWVlMWQ4NGQwNWQ4MjZmZDkuLjJj
OWY0NTY1ZGY2MWY0YjY0YTlhYmJkM2MyNzQ4MWI4OTgyZjNjNjAgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvblNlcnZpY2VNb2NrLmgKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uU2VydmljZU1vY2suaApAQCAtNDEsNiArNDEsMTIgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogLy8gcG9zaXRpb24gb3IgZXJyb3IgZXZlcnkgdGltZSBlaXRo
ZXIgb2YgdGhlc2UgaXMgdXBkYXRlZC4KIGNsYXNzIEdlb2xvY2F0aW9uU2VydmljZU1vY2sgOiBw
dWJsaWMgR2VvbG9jYXRpb25TZXJ2aWNlIHsKICAgcHVibGljOgorICAgIGVudW0gQ2xpZW50U3Rh
dGUgeworICAgICAgICBJZGxlLAorICAgICAgICBMb3csCisgICAgICAgIEhpZ2gKKyAgICB9Owor
CiAgICAgc3RhdGljIEdlb2xvY2F0aW9uU2VydmljZSogY3JlYXRlKEdlb2xvY2F0aW9uU2Vydmlj
ZUNsaWVudCopOwogCiAgICAgR2VvbG9jYXRpb25TZXJ2aWNlTW9jayhHZW9sb2NhdGlvblNlcnZp
Y2VDbGllbnQqKTsKQEAgLTQ5LDYgKzU1LDcgQEAgY2xhc3MgR2VvbG9jYXRpb25TZXJ2aWNlTW9j
ayA6IHB1YmxpYyBHZW9sb2NhdGlvblNlcnZpY2UgewogICAgIHZpcnR1YWwgYm9vbCBzdGFydFVw
ZGF0aW5nKFBvc2l0aW9uT3B0aW9ucyopOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmco
KTsKIAorICAgIHN0YXRpYyBDbGllbnRTdGF0ZSBnZW9sb2NhdGlvbkNsaWVudFN0YXRlKCk7CiAg
ICAgc3RhdGljIHZvaWQgc2V0UG9zaXRpb24oUGFzc1JlZlB0cjxHZW9wb3NpdGlvbj4gcG9zaXRp
b24pOwogICAgIHN0YXRpYyB2b2lkIHNldEVycm9yKFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvcj4g
cG9zaXRpb24pOwogCkBAIC01NiwxMSArNjMsMTQgQEAgY2xhc3MgR2VvbG9jYXRpb25TZXJ2aWNl
TW9jayA6IHB1YmxpYyBHZW9sb2NhdGlvblNlcnZpY2UgewogICAgIHZpcnR1YWwgUG9zaXRpb25F
cnJvciogbGFzdEVycm9yKCkgY29uc3QgeyByZXR1cm4gc19sYXN0RXJyb3ItPmdldCgpOyB9CiAK
ICAgcHJpdmF0ZToKKwogICAgIHN0YXRpYyB2b2lkIG1ha2VHZW9sb2NhdGlvbkNhbGxiYWNrRnJv
bUFsbEluc3RhbmNlcygpOwogICAgIHZvaWQgbWFrZUdlb2xvY2F0aW9uQ2FsbGJhY2soKTsKIAog
ICAgIHZvaWQgdGltZXJGaXJlZChUaW1lcjxHZW9sb2NhdGlvblNlcnZpY2VNb2NrPiopOwogCisg
ICAgQ2xpZW50U3RhdGUgY2xpZW50U3RhdGUoKSBjb25zdDsKKwogICAgIHN0YXRpYyB2b2lkIGlu
aXRTdGF0aWNzKCk7CiAgICAgc3RhdGljIHZvaWQgY2xlYW5VcFN0YXRpY3MoKTsKIApAQCAtNzMs
NiArODMsNyBAQCBjbGFzcyBHZW9sb2NhdGlvblNlcnZpY2VNb2NrIDogcHVibGljIEdlb2xvY2F0
aW9uU2VydmljZSB7CiAgICAgVGltZXI8R2VvbG9jYXRpb25TZXJ2aWNlTW9jaz4gbV90aW1lcjsK
IAogICAgIGJvb2wgbV9pc0FjdGl2ZTsKKyAgICBib29sIG1faXNIaWdoQWNjdXJhY3k7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA0MDMyNWM5OTlhNGM1ZmMx
ZjM0ZmFhMjQ5NGRlYmVjNmQwNTgxZTNkLi5mMGIzMzhhMzE3MzI4MTI0N2QzMWM4NTc1Mzg3ZGY1
MjVlODk0NmUxIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0xMi0xNSAgSm9o
biBLbm90dGVuYmVsdCAgPGprbm90dGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgTGF5b3V0VGVzdHMgdG8gdGVzdCBo
aWdoIGFjY3VyYWN5IG1vZGUgaW4gR2VvbG9jYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5NDM4CisKKyAgICAgICAgKiBwdWJsaWMvV2ViR2Vv
bG9jYXRpb25TZXJ2aWNlTW9jay5oOgorICAgICAgICAqIHNyYy9Bc3NlcnRNYXRjaGluZ0VudW1z
LmNwcDoKKyAgICAgICAgKiBzcmMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uU2VydmljZU1vY2s6Omdlb2xvY2F0aW9uQ2xpZW50
U3RhdGUpOgorCiAyMDEwLTEyLTEzICBNaWtlIExhd3RoZXIgIDxtaWtlbGF3dGhlckBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uU2VydmljZU1vY2suaCBiL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oCmluZGV4IDgy
MDk3NWUxMTA5ZWNhYzgxNzYwMGRiZDNiMjgzZTE3ZTM5OGJmNjEuLjAzNGJiYmRlNTVlZTUzY2Iw
Nzc1NGM3NTlkZGRmNmExOWJhNDNhZGEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oCkBAIC00NCw2ICs0NCw3IEBAIHB1YmxpYzoK
ICAgICBXRUJLSVRfQVBJIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBlcm1pc3Npb24o
Ym9vbCBhbGxvd2VkKTsKICAgICBXRUJLSVRfQVBJIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFj
Y3VyYWN5KTsKICAgICBXRUJLSVRfQVBJIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9sb2NhdGlvbkVy
cm9yKGludCBlcnJvckNvZGUsIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSk7CisgICAgV0VCS0lU
X0FQSSBzdGF0aWMgV2ViU3RyaW5nIGdlb2xvY2F0aW9uQ2xpZW50U3RhdGUoKTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3Nl
cnRNYXRjaGluZ0VudW1zLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdF
bnVtcy5jcHAKaW5kZXggY2VlZWQ4ZGJjNWZmMjIxMmEyOTlhZjQ5MzIxNGVhOTg5ZjdlODU5YS4u
ZDY4Yzc0MjRkODc1ZDFjOWU0MWY2NDJkY2IwNDM2MjU4ZDY5ZmYzYSAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCkBAIC0zOTIsMyArMzkyLDQgQEAgQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJGaWxlRXJyb3JQYXRoRXhpc3RzLCBGaWxlRXJy
b3I6OlBBVEhfRVhJU1RTX0VSUikKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViR2Vv
bG9jYXRpb25FcnJvcjo6RXJyb3JQZXJtaXNzaW9uRGVuaWVkLCBHZW9sb2NhdGlvbkVycm9yOjpQ
ZXJtaXNzaW9uRGVuaWVkKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViR2VvbG9j
YXRpb25FcnJvcjo6RXJyb3JQb3NpdGlvblVuYXZhaWxhYmxlLCBHZW9sb2NhdGlvbkVycm9yOjpQ
b3NpdGlvblVuYXZhaWxhYmxlKTsKICNlbmRpZgorCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmNwcAppbmRleCA2NjdiOGIxNmVmYmJhMDM0NGY5
ZTI1MWMwYjRkNmZmNTdhNzljYzBkLi5iZGMwOGFiYmQzMWNiNzIwMGY3MmVhNmNkZDEyZDMxMzlh
YWNjNDU3IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uU2Vy
dmljZU1vY2suY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25TZXJ2
aWNlTW9jay5jcHAKQEAgLTE3OSw2ICsxNzksMjEgQEAgdm9pZCBXZWJHZW9sb2NhdGlvblNlcnZp
Y2VNb2NrOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBXZWIK
ICAgICBHZW9sb2NhdGlvblNlcnZpY2VNb2NrOjpzZXRFcnJvcihwb3NpdGlvbkVycm9yKTsKIH0K
IAorV2ViU3RyaW5nIFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2s6Omdlb2xvY2F0aW9uQ2xpZW50
U3RhdGUoKQoreworICAgIHN3aXRjaCAoR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6Z2VvbG9jYXRp
b25DbGllbnRTdGF0ZSgpKSB7CisgICAgY2FzZSBHZW9sb2NhdGlvblNlcnZpY2VNb2NrOjpJZGxl
OgorICAgICAgICByZXR1cm4gV2ViU3RyaW5nOjpmcm9tVVRGOCgiaWRsZSIpOworICAgIGNhc2Ug
R2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6TG93OgorICAgICAgICByZXR1cm4gV2ViU3RyaW5nOjpm
cm9tVVRGOCgibG93Iik7CisgICAgY2FzZSBHZW9sb2NhdGlvblNlcnZpY2VNb2NrOjpIaWdoOgor
ICAgICAgICByZXR1cm4gV2ViU3RyaW5nOjpmcm9tVVRGOCgiaGlnaCIpOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gV2ViU3RyaW5n
Ojpmcm9tVVRGOCgibm90LXJlYWNoZWQiKTsKKyAgICB9Cit9CisKIFdlYkdlb2xvY2F0aW9uU2Vy
dmljZU1vY2tJbXBsOjpXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrSW1wbCgpCiB7CiAgICAgQVNT
RVJUKCFzX2luc3RhbmNlKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dl
YktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCA2Y2QyZmE5NmYwZDQ5YWIwYTA2MWIyYjg5ZjIzYWFi
NTUwZTQ5YTFkLi4zNzBlODI1Y2U3ZGM4YWUxZGY2YWQwYWY2OTNhZTcxYTEzY2Y0MDI5IDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMTItMTUgIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRl
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIExheW91dFRlc3RzIHRvIHRlc3QgaGlnaCBhY2N1cmFjeSBtb2RlIGluIEdl
b2xvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00OTQzOAorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoZ2VvbG9jYXRpb25DbGllbnRTdGF0ZUNhbGxiYWNrKToKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpnZW9sb2NhdGlvbkNsaWVudFN0YXRlKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRl
c3RDb250cm9sbGVyOjpnZW9sb2NhdGlvbkNsaWVudFN0YXRlKToKKwogMjAxMC0xMi0xNCAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2phbiBW
YWZhaS4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcAppbmRleCAxNmEzMTQ5YTgyMGNkZjIwZmIyZjUzMTFhM2NhOGIyNjc2YTIxMjdh
Li5lZjI4ZWM5ZTMxNTM2NTZlYjA5OGI1YmI2NjY3MjZhODY5ZDMwNjFmIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC00
OTEsNiArNDkxLDE1IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGNvdW50ZXJWYWx1ZUZvckVsZW1lbnRC
eUlkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqCiAgICAgcmV0dXJuIEpTVmFs
dWVNYWtlU3RyaW5nKGNvbnRleHQsIGNvdW50ZXJWYWx1ZS5nZXQoKSk7CiB9CiAKK3N0YXRpYyBK
U1ZhbHVlUmVmIGdlb2xvY2F0aW9uQ2xpZW50U3RhdGVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVf
dCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pCit7CisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBz
dGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlz
T2JqZWN0KSk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGNsaWVudFN0YXRlKGNvbnRy
b2xsZXItPmdlb2xvY2F0aW9uQ2xpZW50U3RhdGUoKSk7CisgICAgaWYgKCFjbGllbnRTdGF0ZS5n
ZXQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworICAg
IHJldHVybiBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCBjbGllbnRTdGF0ZS5nZXQoKSk7Cit9
CisKIHN0YXRpYyBKU1ZhbHVlUmVmIGdyYW50RGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb25D
YWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2Jq
ZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVm
IGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgLy8gSGFzIFdpbmRv
d3MgaW1wbGVtZW50YXRpb24KQEAgLTE5NzIsNyArMTk4MSw4IEBAIEpTU3RhdGljRnVuY3Rpb24q
IExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJleGVj
Q29tbWFuZCIsIGV4ZWNDb21tYW5kQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZmluZFN0
cmluZyIsIGZpbmRTdHJpbmdDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJjb3VudGVyVmFs
dWVGb3JFbGVtZW50QnlJZCIsIGNvdW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKLSAgICAgICAgeyAiZ3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbiIsIGdy
YW50RGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LCAKKyAgICAg
ICAgeyAiZ2VvbG9jYXRpb25DbGllbnRTdGF0ZSIsIGdlb2xvY2F0aW9uQ2xpZW50U3RhdGVDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAorICAgICAgICB7ICJncmFudERlc2t0b3BOb3RpZmljYXRpb25QZXJtaXNz
aW9uIiwgZ3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgImhhc1NwZWxsaW5nTWFya2VyIiwgaGFzU3BlbGxpbmdNYXJrZXJDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7ICJpc0NvbW1hbmRFbmFibGVkIiwgaXNDb21tYW5kRW5hYmxl
ZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImlzUGFnZUJveFZpc2libGUiLCBpc1BhZ2VC
b3hWaXNpYmxlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDAyNmRlMTNmYmRmOGI5M2UyYzE3OTI4
ZTA5MDAyNGNkYjY1ZWYxNjAuLjQ4YWU0Mzk0NjA1YThlZjZjOGE1ZGQyYmM5N2U5MjAyNzY3ZDZm
N2MgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuaApAQCAtMjY2LDYgKzI2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFVzZXJTY3Jp
cHQoSlNTdHJpbmdSZWYgc291cmNlLCBib29sIHJ1bkF0U3RhcnQsIGJvb2wgYWxsRnJhbWVzKTsK
ICAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0KEpTU3RyaW5nUmVmIHNvdXJjZSwgYm9vbCBhbGxG
cmFtZXMpOwogCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGdlb2xvY2F0aW9uQ2xpZW50
U3RhdGUoKSBjb25zdDsKICAgICB2b2lkIHNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFs
bG93KTsKICAgICBib29sIGlzR2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0KCkgY29uc3QgeyByZXR1
cm4gbV9pc0dlb2xvY2F0aW9uUGVybWlzc2lvblNldDsgfQogICAgIGJvb2wgZ2VvbG9jYXRpb25Q
ZXJtaXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9nZW9sb2NhdGlvblBlcm1pc3Npb247IH0KZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBlM2FmNzM4MzEzZmZhOTliY2QxYmUwNmMxMzFlNWJm
MjRkZDMwZjkxLi4xYzUxODk2ODUyMmEzYzFlMDI5NGYyZDIxNDU3MGQ3YWY1N2UxNDJmIDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xMTEsNiArMTExLDcgQEAgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmluZE1l
dGhvZCgiZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQiLCAmTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKTsKICAgICBiaW5kTWV0aG9kKCJleGVj
Q29tbWFuZCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZXhlY0NvbW1hbmQpOwogICAgIGJpbmRN
ZXRob2QoImZvcmNlUmVkU2VsZWN0aW9uQ29sb3JzIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpm
b3JjZVJlZFNlbGVjdGlvbkNvbG9ycyk7CisgICAgYmluZE1ldGhvZCgiZ2VvbG9jYXRpb25DbGll
bnRTdGF0ZSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6Z2VvbG9jYXRpb25DbGllbnRTdGF0ZSk7
CiAgICAgYmluZE1ldGhvZCgiZ3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbiIsICZM
YXlvdXRUZXN0Q29udHJvbGxlcjo6Z3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbik7
CiAgICAgYmluZE1ldGhvZCgiaXNDb21tYW5kRW5hYmxlZCIsICZMYXlvdXRUZXN0Q29udHJvbGxl
cjo6aXNDb21tYW5kRW5hYmxlZCk7CiAgICAgYmluZE1ldGhvZCgibGF5ZXJUcmVlQXNUZXh0Iiwg
JkxheW91dFRlc3RDb250cm9sbGVyOjpsYXllclRyZWVBc1RleHQpOwpAQCAtMTUxOCw2ICsxNTE5
LDE2IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlv
bihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtCiAgICAgbV9zaGVsbC0+d2ViVmlld0hvc3Qo
KS0+ZGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCktPnNldE9yaWVudGF0aW9uKG9yaWVudGF0
aW9uKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Z2VvbG9jYXRpb25DbGllbnRT
dGF0ZShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0
KQoreworI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisgICAgV2ViU3RyaW5n
IGNsaWVudFN0YXRlID0gbV9zaGVsbC0+d2ViVmlld0hvc3QoKS0+Z2VvbG9jYXRpb25DbGllbnRN
b2NrKCktPmdlb2xvY2F0aW9uQ2xpZW50U3RhdGUoKTsKKyNlbHNlCisgICAgV2ViU3RyaW5nIGNs
aWVudFN0YXRlID0gV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6Z2VvbG9jYXRpb25DbGllbnRT
dGF0ZSgpOworI2VuZGlmCisgICAgcmVzdWx0LT5zZXQoY2xpZW50U3RhdGUudXRmOCgpKTsKK30K
Kwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAg
ICAgcmVzdWx0LT5zZXROdWxsKCk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCAxM2QxNDQ3NTg1
NmYwOTc4ZDIyMDRmYjgyYjMwNTdiYjZkZTUyNmEzLi5mYzE0Mzk1ZmIzYWQ5OTBlNzMwYmY1Yjk4
Yzc4MmRhNDZhNmViMmE0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTMyMiw2ICszMjIsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCiAgICAgLy8gR2VvbG9jYXRpb24gcmVsYXRlZCBm
dW5jdGlvbnMuCisgICAgdm9pZCBnZW9sb2NhdGlvbkNsaWVudFN0YXRlKGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIHNldEdlb2xvY2F0aW9uUGVybWlzc2lv
bihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBzZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvbihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7
CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50Kik7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggYTY5MTk1MTcyNzE3YzkxZjY2
YjgyNzliZjVkZTc3MzExNGRmMzEzNC4uMDE0NGM3MjVlZjFjZmU5MjRmZWY2YzFmZDZlY2YzOGU5
YzJkYmQzYiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQpAQCAtMzY3LDYgKzM2NywxMyBAQCB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQgY29kZSwgSlNT
dHJpbmdSZWYgbWVzc2FnZQogICAgIFtbTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgc2hhcmVkXSBz
ZXRFcnJvcjplcnJvcl07CiB9CiAKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6Z2VvbG9jYXRpb25DbGllbnRTdGF0ZSgpIGNvbnN0Cit7CisgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgZm9yIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2FjY3VyYWN5LXRlc3RzLmh0bWwK
KyAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IG5vdEltcGxlbWVudGVkKEFkb3B0LCBKU1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibm90LWltcGxlbWVudGVkIikpOworICByZXR1cm4gbm90
SW1wbGVtZW50ZWQ7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEdlb2xvY2F0
aW9uUGVybWlzc2lvbihib29sIGFsbG93KQogewogICAgIHNldEdlb2xvY2F0aW9uUGVybWlzc2lv
bkNvbW1vbihhbGxvdyk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>