<?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>70580</bug_id>
          
          <creation_ts>2011-10-20 21:47:15 -0700</creation_ts>
          <short_desc>[Chromium] Implement MessagePort transfer in chromium port of webkit</short_desc>
          <delta_ts>2011-10-21 17:37:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>65209</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dmitry Lomov">dslomov</reporter>
          <assigned_to name="Dmitry Lomov">dslomov</assigned_to>
          <cc>abarth</cc>
    
    <cc>dslomov</cc>
    
    <cc>japhet</cc>
    
    <cc>levin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>488150</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-10-20 21:47:15 -0700</bug_when>
    <thetext>SerializedScriptValue should support transferring message ports</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488153</commentid>
    <comment_count>1</comment_count>
      <attachid>111901</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-10-20 21:50:58 -0700</bug_when>
    <thetext>Created attachment 111901
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488187</commentid>
    <comment_count>2</comment_count>
      <attachid>111901</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-10-20 23:16:31 -0700</bug_when>
    <thetext>Comment on attachment 111901
Fix

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

Looks good (except I just want to understand the wrap issue before I r+).

&gt; LayoutTests/fast/events/resources/message-port-multi.js:58
&gt; +            if(event.ports &amp;&amp; event.ports.length &gt; 0 &amp;&amp; event.ports[0] === event.data.port)

add space after if

&gt; LayoutTests/fast/events/resources/message-port-multi.js:79
&gt; +            testFailed(&quot;Unexpexcted message &quot; + event.data);

typo: Unexpexcted

&gt; Source/WebCore/bindings/v8/SerializedScriptValue.cpp:1065
&gt; +            uint32_t messagePortIndex;

indent is incorrect here and below

&gt; Source/WebCore/bindings/v8/SerializedScriptValue.cpp:1801
&gt; +        *object = V8MessagePort::wrap(m_transferredMessagePorts-&gt;at(index).get());

It is unintuitive to me that both sides of this use &quot;wrap&quot;. (line 598 and 1801). It feels like one of them should be unwrap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488191</commentid>
    <comment_count>3</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-10-20 23:18:14 -0700</bug_when>
    <thetext>(In reply to comment #2)

&gt; It is unintuitive to me that both sides of this use &quot;wrap&quot;. (line 598 and 1801). It feels like one of them should be unwrap.

On both sides we go from MessagePort (webkit object) to corresponding V8 object. Hence the wrap on both ends.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488192</commentid>
    <comment_count>4</comment_count>
      <attachid>111901</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-10-20 23:19:40 -0700</bug_when>
    <thetext>Comment on attachment 111901
Fix

ok. Please fix up the nits mentioned before landing. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488745</commentid>
    <comment_count>5</comment_count>
      <attachid>112039</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-10-21 16:00:33 -0700</bug_when>
    <thetext>Created attachment 112039
Fixes in tests + testdata for JSC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488789</commentid>
    <comment_count>6</comment_count>
      <attachid>112039</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-21 17:37:23 -0700</bug_when>
    <thetext>Comment on attachment 112039
Fixes in tests + testdata for JSC

Clearing flags on attachment: 112039

Committed r98175: &lt;http://trac.webkit.org/changeset/98175&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488790</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-21 17:37:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111901</attachid>
            <date>2011-10-20 21:50:58 -0700</date>
            <delta_ts>2011-10-21 16:00:33 -0700</delta_ts>
            <desc>Fix</desc>
            <filename>70580.patch</filename>
            <type>text/plain</type>
            <size>16418</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzZGQ3ZDBmLi5hMzY4MmFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTAt
MjAgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA1ODAKKyAgICAgICAgW0Nocm9taXVt
XSBJbXBsZW1lbnQgTWVzc2FnZVBvcnQgdHJhbnNmZXIgaW4gY2hyb21pdW0gcG9ydCBvZiB3ZWJr
aXQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBm
YXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MuaHRtbDoKKyAgICAgICAgKiBm
YXN0L2V2ZW50cy9yZXNvdXJjZXMvbWVzc2FnZS1wb3J0LW11bHRpLmpzOgorICAgICAgICAodGVz
dFRyYW5zZmVycy5jaGFubmVsMC5wb3J0Mi5vbm1lc3NhZ2UpOgorICAgICAgICAodGVzdFRyYW5z
ZmVycyk6CisgICAgICAgIChjaGFubmVsLnBvcnQyLm9ubWVzc2FnZSk6CisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1tdWx0aS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vV2luZG93L3dpbmRv
dy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dDoKKwogMjAxMS0xMC0xOSAgWXV6byBGdWpp
c2hpbWEgIDx5dXpvQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBUZXN0IGV4cGVj
dGF0aW9uIGNoYW5nZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93
aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93
L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLmh0bWwKaW5kZXggY2JkMjQzZi4uNjQ2YjM2NCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1h
cmdzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVz
c2FnZS1hcmdzLmh0bWwKQEAgLTUyLDcgKzUyLDE0IEBAIHZhciBjaGFubmVsMSA9IG5ldyBNZXNz
YWdlQ2hhbm5lbDsKIHRyeVBvc3RNZXNzYWdlRnVuY3Rpb24od2luZG93LnBvc3RNZXNzYWdlLCAn
NycsIFtjaGFubmVsMS5wb3J0MSwgY2hhbm5lbDEucG9ydDJdLCAnKicpOwogdmFyIGNoYW5uZWwy
ID0gbmV3IE1lc3NhZ2VDaGFubmVsOwogdHJ5UG9zdE1lc3NhZ2VGdW5jdGlvbih3aW5kb3cud2Vi
a2l0UG9zdE1lc3NhZ2UsICc3JywgW2NoYW5uZWwyLnBvcnQxLCBjaGFubmVsMi5wb3J0Ml0sICcq
Jyk7Cit2YXIgY2hhbm5lbDMgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CiB0cnlQb3N0TWVzc2FnZSgy
MTQ3NDgzNjQ4LCBudWxsLCAnKicpOwordHJ5UG9zdE1lc3NhZ2VGdW5jdGlvbih3aW5kb3cucG9z
dE1lc3NhZ2UsIGNoYW5uZWwzLnBvcnQxLCBbY2hhbm5lbDMucG9ydDEsIGNoYW5uZWwzLnBvcnQy
XSwgJyonLCB0cnVlKTsKK3ZhciBjaGFubmVsNCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKK3RyeVBv
c3RNZXNzYWdlRnVuY3Rpb24od2luZG93LndlYmtpdFBvc3RNZXNzYWdlLCBjaGFubmVsNC5wb3J0
MSwgW2NoYW5uZWw0LnBvcnQxLCBjaGFubmVsNC5wb3J0Ml0sICcqJyk7Cit2YXIgY2hhbm5lbDUg
PSBuZXcgTWVzc2FnZUNoYW5uZWw7Cit0cnlQb3N0TWVzc2FnZUZ1bmN0aW9uKHdpbmRvdy53ZWJr
aXRQb3N0TWVzc2FnZSwgW2NoYW5uZWw1LnBvcnQxLCBjaGFubmVsNS5wb3J0Ml0sIFtjaGFubmVs
NS5wb3J0MSwgY2hhbm5lbDUucG9ydDJdLCAnKicpOworCiB0cnlQb3N0TWVzc2FnZUZ1bmN0aW9u
KHdpbmRvdy5wb3N0TWVzc2FnZSwgJ2RvbmUnLCAnKicpOwogPC9zY3JpcHQ+CiA8L2JvZHk+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvbWVzc2FnZS1wb3J0
LW11bHRpLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL21lc3NhZ2UtcG9y
dC1tdWx0aS5qcwppbmRleCAyYWRlMjc0Li5jNjcwNmI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvbWVzc2FnZS1wb3J0LW11bHRpLmpzCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9tZXNzYWdlLXBvcnQtbXVsdGkuanMKQEAgLTMz
LDYgKzMzLDU0IEBAIHNob3VsZFRocm93KCdjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJsYXJn
ZVNlcXVlbmNlIiwgbGFyZ2VQb3J0QXJyYXkpJyk7CiAKIGNoYW5uZWwucG9ydDEucG9zdE1lc3Nh
Z2UoImRvbmUiKTsKIAorZnVuY3Rpb24gdGVzdFRyYW5zZmVycygpIHsKKyAgICB2YXIgY2hhbm5l
bDAgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTsKKyAgICAKKyAgICB2YXIgYzEgPSBuZXcgTWVzc2Fn
ZUNoYW5uZWwoKTsKKyAgICBjaGFubmVsMC5wb3J0MS53ZWJraXRQb3N0TWVzc2FnZSh7aWQ6InNl
bmQtcG9ydCIsIHBvcnQ6YzEucG9ydDF9LCBbYzEucG9ydDFdKTsKKyAgICB2YXIgYzIgPSBuZXcg
TWVzc2FnZUNoYW5uZWwoKTsKKyAgICBjaGFubmVsMC5wb3J0MS53ZWJraXRQb3N0TWVzc2FnZSh7
aWQ6InNlbmQtcG9ydC10d2ljZSIsIHBvcnQwOmMyLnBvcnQxLCBwb3J0MTpjMi5wb3J0MX0sIFtj
Mi5wb3J0MV0pOworICAgIHZhciBjMyA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOworICAgIGNoYW5u
ZWwwLnBvcnQxLndlYmtpdFBvc3RNZXNzYWdlKHtpZDoic2VuZC10d28tcG9ydHMiLCBwb3J0MDpj
My5wb3J0MSwgcG9ydDE6YzMucG9ydDJ9LCBbYzMucG9ydDEsIGMzLnBvcnQyXSk7CisgICAgc2hv
dWxkVGhyb3coJ2MyLnBvcnQxLnBvc3RNZXNzYWdlKCJlbnRhbmdsZWQgcG9ydCBhZnRlciB0cmFu
c2ZlciInKTsKKyAgICB2YXIgYzQgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTsKKyAgICB0cnkgewor
ICAgICAgICBjaGFubmVsMC5wb3J0MS53ZWJraXRQb3N0TWVzc2FnZSh7aWQ6Imhvc3Qtb2JqZWN0
IiwgaG9zdE9iamVjdDpjMywgcG9ydDpjNC5wb3J0MX0sIFtjNC5wb3J0MV0pOworICAgICAgICB0
ZXN0RmFpbGVkKCJTZW5kaW5nIGhvc3Qgb2JqZWN0IHNob3VsZCB0aHJvdyIpOworICAgIH0gY2F0
Y2goZSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJTZW5kaW5nIGhvc3Qgb2JqZWN0IGhhcyB0aHJv
d24gIiArIGUpOworICAgIH0KKyAgICBjNC5wb3J0MS5wb3N0TWVzc2FnZSgiU2hvdWxkIHN1Y2Nl
ZWQiKTsKKyAgICBjaGFubmVsMC5wb3J0MS53ZWJraXRQb3N0TWVzc2FnZSh7aWQ6ImRvbmUifSk7
CisKKyAgICBjaGFubmVsMC5wb3J0Mi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgeworICAg
ICAgICBpZiAoZXZlbnQuZGF0YS5pZCA9PSAic2VuZC1wb3J0IikgeworICAgICAgICAgICAgaWYo
ZXZlbnQucG9ydHMgJiYgZXZlbnQucG9ydHMubGVuZ3RoID4gMCAmJiBldmVudC5wb3J0c1swXSA9
PT0gZXZlbnQuZGF0YS5wb3J0KQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoInNlbmQtcG9y
dDogdHJhbnNmZXJyZWQgb25lIHBvcnQiKTsKKyAgICAgICAgICAgIGVsc2UgCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgic2VuZC1wb3J0OiBwb3J0IHRyYW5zZmVyIGZhaWxlZCIpOworICAg
ICAgICB9IGVsc2UgaWYgKGV2ZW50LmRhdGEuaWQgPT0gInNlbmQtcG9ydC10d2ljZSIpIHsKKyAg
ICAgICAgICAgIGlmIChldmVudC5wb3J0cyAmJiBldmVudC5wb3J0cy5sZW5ndGggPT0gMSAmJiAK
KyAgICAgICAgICAgICAgICAgIGV2ZW50LnBvcnRzWzBdID09PSBldmVudC5kYXRhLnBvcnQwICYm
IGV2ZW50LnBvcnRzWzBdID09PSBldmVudC5kYXRhLnBvcnQxKSAKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJzZW5kLXBvcnQtdHdpY2U6IHRyYW5zZmVycmVkIG9uZSBwb3J0IHR3aWNlIik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgic2VuZC1wb3J0
LXR3aWNlOiBmYWlsZWQgdG8gdHJhbnNmZXIgb25lIHBvcnQgdHdpY2UiKTsKKyAgICAgICAgfSBl
bHNlIGlmIChldmVudC5kYXRhLmlkID09ICJzZW5kLXR3by1wb3J0cyIpIHsKKyAgICAgICAgICAg
IGlmIChldmVudC5wb3J0cyAmJiBldmVudC5wb3J0cy5sZW5ndGggPT0gMiAmJiAKKyAgICAgICAg
ICAgICAgICAgIGV2ZW50LnBvcnRzWzBdID09PSBldmVudC5kYXRhLnBvcnQwICYmIGV2ZW50LnBv
cnRzWzFdID09PSBldmVudC5kYXRhLnBvcnQxKSAKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJzZW5kLXR3by1wb3J0czogdHJhbnNmZXJyZWQgdHdvIHBvcnRzIik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgic2VuZC10d28tcG9ydHM6IGZhaWxlZCB0
byB0cmFuc2ZlciB0d28gcG9ydHMiKTsKKyAgICAgICAgfSBlbHNlIGlmIChldmVudC5kYXRhLmlk
ID09ICJkb25lIikgeworICAgICAgICAgICAgZGVidWcoJzxicj48c3BhbiBjbGFzcz0icGFzcyI+
VEVTVCBDT01QTEVURTwvc3Bhbj4nKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJVbmV4cGV4Y3Rl
ZCBtZXNzYWdlICIgKyBldmVudC5kYXRhKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogY2hhbm5l
bC5wb3J0Mi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgewogICAgIGlmIChldmVudC5kYXRh
ID09ICJub3BvcnQiKSB7CiAgICAgICAgIGlmIChldmVudC5wb3J0cyAmJiAhZXZlbnQucG9ydHMu
bGVuZ3RoKQpAQCAtNjAsOSArMTA4LDcgQEAgY2hhbm5lbC5wb3J0Mi5vbm1lc3NhZ2UgPSBmdW5j
dGlvbihldmVudCkgewogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJldmVu
dC5wb3J0cyBjb250YWluZWQgIiArIGV2ZW50LnBvcnRzLmxlbmd0aCArICIgd2hlbiB0d28gcG9y
dHMgcmUtc2VudCBhZnRlciBlcnJvciIpOwogICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAi
ZG9uZSIpIHsKLSAgICAgICAgZGVidWcoJzxicj48c3BhbiBjbGFzcz0icGFzcyI+VEVTVCBDT01Q
TEVURTwvc3Bhbj4nKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAg
dGVzdFRyYW5zZmVycygpOwogICAgIH0gZWxzZQogICAgICAgICB0ZXN0RmFpbGVkKCJSZWNlaXZl
ZCB1bmV4cGVjdGVkIG1lc3NhZ2U6ICIgKyBldmVudC5kYXRhKTsKIH0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQt
bXVsdGktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zh
c3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1tdWx0aS1leHBlY3RlZC50eHQKaW5kZXggZjBhOTUyYS4u
ZmRjZTliMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zh
c3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1tdWx0aS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1tdWx0aS1l
eHBlY3RlZC50eHQKQEAgLTksMTAgKzksMTYgQEAgUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNz
YWdlKCJudWxsIHBvcnQiLCBbY2hhbm5lbDMucG9ydDEsIG51bGwsIGNoYW5uZWwzLnBvcnQKIFBB
U1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibm90QVBvcnQiLCBbY2hhbm5lbDMucG9ydDEs
IHt9LCBjaGFubmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE1lc3NhZ2VQ
b3J0QXJyYXkgYXJndW1lbnQgbXVzdCBjb250YWluIG9ubHkgTWVzc2FnZVBvcnRzLgogUEFTUyBj
aGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJub3RBbkFycmF5IiwgY2hhbm5lbDMucG9ydDEpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgaGFzIG5v
IGxlbmd0aCBhdHRyaWJ1dGUuCiBQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm5vdEFT
ZXF1ZW5jZSIsIFt7bGVuZ3RoOiAzfV0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE1lc3Nh
Z2VQb3J0QXJyYXkgYXJndW1lbnQgbXVzdCBjb250YWluIG9ubHkgTWVzc2FnZVBvcnRzLgorUEFT
UyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJsYXJnZVNlcXVlbmNlIiwgbGFyZ2VQb3J0QXJy
YXkpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogREFUQV9DTE9ORV9FUlI6IERPTSBFeGNlcHRpb24g
MjUuCiBQQVNTIGV2ZW50LnBvcnRzIGlzIG5vbi1udWxsIGFuZCB6ZXJvIGxlbmd0aCB3aGVuIG5v
IHBvcnQgc2VudAogUEFTUyBldmVudC5wb3J0cyBpcyBub24tbnVsbCBhbmQgemVybyBsZW5ndGgg
d2hlbiBlbXB0eSBhcnJheSBzZW50CiBQQVNTIGV2ZW50LnBvcnRzIGNvbnRhaW5zIHR3byBwb3J0
cyB3aGVuIHR3byBwb3J0cyBzZW50CiBQQVNTIGV2ZW50LnBvcnRzIGNvbnRhaW5zIHR3byBwb3J0
cyB3aGVuIHR3byBwb3J0cyByZS1zZW50IGFmdGVyIGVycm9yCitQQVNTIGMyLnBvcnQxLnBvc3RN
ZXNzYWdlKCJlbnRhbmdsZWQgcG9ydCBhZnRlciB0cmFuc2ZlciIgdGhyZXcgZXhjZXB0aW9uIFN5
bnRheEVycm9yOiBVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dC4KK1BBU1MgU2VuZGluZyBob3N0IG9i
amVjdCBoYXMgdGhyb3duIEVycm9yOiBEQVRBX0NMT05FX0VSUjogRE9NIEV4Y2VwdGlvbiAyNQor
UEFTUyBzZW5kLXBvcnQ6IHRyYW5zZmVycmVkIG9uZSBwb3J0CitQQVNTIHNlbmQtcG9ydC10d2lj
ZTogdHJhbnNmZXJyZWQgb25lIHBvcnQgdHdpY2UKK1BBU1Mgc2VuZC10d28tcG9ydHM6IHRyYW5z
ZmVycmVkIHR3byBwb3J0cwogCiBURVNUIENPTVBMRVRFCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2Ut
YXJncy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Rv
bS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0CmluZGV4IDVmOGU5
OWQuLmIwZDc4ZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0
bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dApAQCAtMTYsNiArMTYsOSBAQCBQQVNTOiBQb3N0aW5n
IG1lc3NhZ2UgKCc3JywgW29iamVjdCBNZXNzYWdlUG9ydF0sW29iamVjdCBNZXNzYWdlUG9ydF0p
IGRpZCBub3QgdAogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnNycsIFtvYmplY3QgTWVzc2FnZVBv
cnRdLFtvYmplY3QgTWVzc2FnZVBvcnRdKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFT
UzogUG9zdGluZyBtZXNzYWdlICgnMjE0NzQ4MzY0OCcsIG51bGwpIGRpZCBub3QgdGhyb3cgYW4g
ZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCcyMTQ3NDgzNjQ4JywgbnVsbCkgZGlk
IG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJ1tvYmplY3Qg
TWVzc2FnZVBvcnRdJywgW29iamVjdCBNZXNzYWdlUG9ydF0sW29iamVjdCBNZXNzYWdlUG9ydF0p
OiB0aHJldyBleGNlcHRpb24gRXJyb3I6IERBVEFfQ0xPTkVfRVJSOiBET00gRXhjZXB0aW9uIDI1
CitQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCdbb2JqZWN0IE1lc3NhZ2VQb3J0XScsIFtvYmplY3Qg
TWVzc2FnZVBvcnRdLFtvYmplY3QgTWVzc2FnZVBvcnRdKSBkaWQgbm90IHRocm93IGFuIGV4Y2Vw
dGlvbgorUEFTUzogUG9zdGluZyBtZXNzYWdlICgnW29iamVjdCBNZXNzYWdlUG9ydF0sW29iamVj
dCBNZXNzYWdlUG9ydF0nLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSxbb2JqZWN0IE1lc3NhZ2VQb3J0
XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJ2Rv
bmUnLCAqKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUmVjZWl2ZWQgbWVzc2FnZSAnNCcg
d2l0aCAwIHBvcnRzLgogUmVjZWl2ZWQgbWVzc2FnZSAnNCcgd2l0aCAwIHBvcnRzLgpAQCAtMjcs
NSArMzAsNyBAQCBSZWNlaXZlZCBtZXNzYWdlICc3JyB3aXRoIDIgcG9ydHMuCiBSZWNlaXZlZCBt
ZXNzYWdlICc3JyB3aXRoIDIgcG9ydHMuCiBSZWNlaXZlZCBtZXNzYWdlICcyMTQ3NDgzNjQ4JyB3
aXRoIDAgcG9ydHMuCiBSZWNlaXZlZCBtZXNzYWdlICcyMTQ3NDgzNjQ4JyB3aXRoIDAgcG9ydHMu
CitSZWNlaXZlZCBtZXNzYWdlICdbb2JqZWN0IE1lc3NhZ2VQb3J0XScgd2l0aCAyIHBvcnRzLgor
UmVjZWl2ZWQgbWVzc2FnZSAnW29iamVjdCBNZXNzYWdlUG9ydF0sW29iamVjdCBNZXNzYWdlUG9y
dF0nIHdpdGggMiBwb3J0cy4KIFJlY2VpdmVkIG1lc3NhZ2UgJ2RvbmUnIHdpdGggMCBwb3J0cy4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDIxMjgwODkuLjdjYjg4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MCBAQAorMjAxMS0xMC0yMCAgRG1pdHJ5IExvbW92ICA8ZHNsb21vdkBnb29nbGUuY29tPgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDU4MAorICAg
ICAgICBbQ2hyb21pdW1dIEltcGxlbWVudCBNZXNzYWdlUG9ydCB0cmFuc2ZlciBpbiBjaHJvbWl1
bSBwb3J0IG9mIHdlYmtpdC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGJpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOE9iamVjdE1hcDo6V3JpdGVyOjp3cml0ZVRyYW5zZmVycmVkTWVzc2Fn
ZVBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6VjhPYmplY3RNYXA6OlNlcmlhbGl6ZXI6OlNlcmlh
bGl6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhPYmplY3RNYXA6OlNlcmlhbGl6ZXI6OmRvU2Vy
aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlY4T2JqZWN0TWFwOjpSZWFkZXI6OnJlYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6VjhPYmplY3RNYXA6OkRlc2VyaWFsaXplcjo6RGVzZXJpYWxpemVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4T2JqZWN0TWFwOjpEZXNlcmlhbGl6ZXI6OnRyeUdldFRy
YW5zZmVycmVkTWVzc2FnZVBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6CisKIDIwMTEtMTAtMTkgIFRvbWFzeiBNb3Jh
d3NraSAgPHQubW9yYXdza2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gQWRkZWQgbWlz
c2luZyBkdW1teSBwbGF0Zm9ybURlc2NyaXB0aW9uIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCBlNWVj
ZjM2Li42YjM0Y2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTY0LDYgKzY0LDcgQEAKICNpbmNsdWRlICJWOElu
dDE2QXJyYXkuaCIKICNpbmNsdWRlICJWOEludDMyQXJyYXkuaCIKICNpbmNsdWRlICJWOEludDhB
cnJheS5oIgorI2luY2x1ZGUgIlY4TWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJWOFByb3h5Lmgi
CiAjaW5jbHVkZSAiVjhVaW50MTZBcnJheS5oIgogI2luY2x1ZGUgIlY4VWludDMyQXJyYXkuaCIK
QEAgLTE4Miw2ICsxODMsNyBAQCBlbnVtIFNlcmlhbGl6YXRpb25UYWcgewogICAgIEludDMyVGFn
ID0gJ0knLCAvLyB2YWx1ZTpaaWdaYWctZW5jb2RlZCBpbnQzMiAtPiBJbnRlZ2VyCiAgICAgVWlu
dDMyVGFnID0gJ1UnLCAvLyB2YWx1ZTp1aW50MzJfdCAtPiBJbnRlZ2VyCiAgICAgRGF0ZVRhZyA9
ICdEJywgLy8gdmFsdWU6ZG91YmxlIC0+IERhdGUgKHJlZikKKyAgICBNZXNzYWdlUG9ydFRhZyA9
ICdNJywgLy8gaW5kZXg6aW50IC0+IE1lc3NhZ2VQb3J0LiBGaWxscyB0aGUgcmVzdWx0IHdpdGgg
dHJhbnNmZXJyZWQgTWVzc2FnZVBvcnQuCiAgICAgTnVtYmVyVGFnID0gJ04nLCAvLyB2YWx1ZTpk
b3VibGUgLT4gTnVtYmVyCiAgICAgQmxvYlRhZyA9ICdiJywgLy8gdXJsOldlYkNvcmVTdHJpbmcs
IHR5cGU6V2ViQ29yZVN0cmluZywgc2l6ZTp1aW50NjRfdCAtPiBCbG9iIChyZWYpCiAgICAgRmls
ZVRhZyA9ICdmJywgLy8gZmlsZTpSYXdGaWxlIC0+IEZpbGUgKHJlZikKQEAgLTQyOSw2ICs0MzEs
MTIgQEAgcHVibGljOgogICAgICAgICBkb1dyaXRlVWludDMyKHN0YXRpY19jYXN0PHVpbnQzMl90
PihmbGFncykpOwogICAgIH0KIAorICAgIHZvaWQgd3JpdGVUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0
KHVpbnQzMl90IGluZGV4KQorICAgIHsKKyAgICAgICAgYXBwZW5kKE1lc3NhZ2VQb3J0VGFnKTsK
KyAgICAgICAgZG9Xcml0ZVVpbnQzMihpbmRleCk7CisgICAgfQorCiAgICAgdm9pZCB3cml0ZUFy
cmF5KHVpbnQzMl90IGxlbmd0aCkKICAgICB7CiAgICAgICAgIGFwcGVuZChBcnJheVRhZyk7CkBA
IC01NzYsNyArNTg0LDcgQEAgcHVibGljOgogICAgICAgICBKU0ZhaWx1cmUKICAgICB9OwogCi0g
ICAgU2VyaWFsaXplcihXcml0ZXImIHdyaXRlciwgdjg6OlRyeUNhdGNoJiB0cnlDYXRjaCkKKyAg
ICBTZXJpYWxpemVyKFdyaXRlciYgd3JpdGVyLCBNZXNzYWdlUG9ydEFycmF5KiBtZXNzYWdlUG9y
dHMsIHY4OjpUcnlDYXRjaCYgdHJ5Q2F0Y2gpCiAgICAgICAgIDogbV93cml0ZXIod3JpdGVyKQog
ICAgICAgICAsIG1fdHJ5Q2F0Y2godHJ5Q2F0Y2gpCiAgICAgICAgICwgbV9kZXB0aCgwKQpAQCAt
NTg1LDYgKzU5MywxMCBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9uZXh0T2JqZWN0UmVmZXJlbmNl
KDApCiAgICAgewogICAgICAgICBBU1NFUlQoIXRyeUNhdGNoLkhhc0NhdWdodCgpKTsKKyAgICAg
ICAgaWYgKG1lc3NhZ2VQb3J0cykgeworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtZXNzYWdlUG9ydHMtPnNpemUoKTsgaSsrKQorICAgICAgICAgICAgICAgIG1fdHJhbnNmZXJy
ZWRNZXNzYWdlUG9ydHMuc2V0KFY4TWVzc2FnZVBvcnQ6OndyYXAobWVzc2FnZVBvcnRzLT5hdChp
KS5nZXQoKSksIGkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgU3RhdHVzIHNlcmlhbGl6ZSh2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCkBAIC0xMDExLDYgKzEwMjMsNyBAQCBwcml2YXRl
OgogICAgIFN0YXR1cyBtX3N0YXR1czsKICAgICB0eXBlZGVmIFY4T2JqZWN0TWFwPHY4OjpPYmpl
Y3QsIHVpbnQzMl90PiBPYmplY3RQb29sOwogICAgIE9iamVjdFBvb2wgbV9vYmplY3RQb29sOwor
ICAgIE9iamVjdFBvb2wgbV90cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0czsKICAgICB1aW50MzJfdCBt
X25leHRPYmplY3RSZWZlcmVuY2U7CiB9OwogCkBAIC0xMDQ4LDYgKzEwNjEsMTMgQEAgU2VyaWFs
aXplcjo6U3RhdGVCYXNlKiBTZXJpYWxpemVyOjpkb1NlcmlhbGl6ZSh2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdmFsdWUsIFN0YXQKICAgICAgICAgcmV0dXJuIHdyaXRlQW5kR3JleUFycmF5QnVmZmVy
Vmlldyh2YWx1ZS5Bczx2ODo6T2JqZWN0PigpLCBuZXh0KTsKICAgICBlbHNlIGlmICh2YWx1ZS0+
SXNTdHJpbmcoKSkKICAgICAgICAgd3JpdGVTdHJpbmcodmFsdWUpOworICAgIGVsc2UgaWYgKFY4
TWVzc2FnZVBvcnQ6Okhhc0luc3RhbmNlKHZhbHVlKSkgeworICAgICAgICAgICAgdWludDMyX3Qg
bWVzc2FnZVBvcnRJbmRleDsKKyAgICAgICAgaWYgKG1fdHJhbnNmZXJyZWRNZXNzYWdlUG9ydHMu
dHJ5R2V0KHZhbHVlLkFzPHY4OjpPYmplY3Q+KCksICZtZXNzYWdlUG9ydEluZGV4KSkKKyAgICAg
ICAgICAgICAgICBtX3dyaXRlci53cml0ZVRyYW5zZmVycmVkTWVzc2FnZVBvcnQobWVzc2FnZVBv
cnRJbmRleCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRs
ZUVycm9yKERhdGFDbG9uZUVycm9yLCBuZXh0KTsKKyAgICAgICAgfQogICAgIGVsc2UgewogICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGpzT2JqZWN0ID0gdmFsdWUuQXM8djg6Ok9iamVj
dD4oKTsKICAgICAgICAgaWYgKGpzT2JqZWN0LklzRW1wdHkoKSkKQEAgLTEwOTYsNiArMTExNiw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHVpbnQzMl90IG9iamVjdFJlZmVyZW5jZUNvdW50KCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBwdXNoT2JqZWN0UmVmZXJlbmNlKGNvbnN0IHY4OjpIYW5k
bGU8djg6OlZhbHVlPiYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgdHJ5R2V0T2JqZWN0RnJvbU9i
amVjdFJlZmVyZW5jZSh1aW50MzJfdCByZWZlcmVuY2UsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiop
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgdHJ5R2V0VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCh1aW50
MzJfdCBpbmRleCwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KikgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCBuZXdBcnJheSh1aW50MzJfdCBsZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgbmV3T2Jq
ZWN0KCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjb21wbGV0ZUFycmF5KHVpbnQzMl90IGxlbmd0
aCwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KikgPSAwOwpAQCAtMTIxMiw2ICsxMjMzLDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGNyZWF0b3Iu
cHVzaE9iamVjdFJlZmVyZW5jZSgqdmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CisKICAgICAg
ICAgY2FzZSBBcnJheVRhZzogewogICAgICAgICAgICAgdWludDMyX3QgbGVuZ3RoOwogICAgICAg
ICAgICAgaWYgKCFkb1JlYWRVaW50MzIoJmxlbmd0aCkpCkBAIC0xMjc3LDYgKzEyOTksMTYgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CisgICAgICAgIGNhc2UgTWVzc2FnZVBvcnRUYWc6IHsKKyAgICAg
ICAgICAgIGlmIChtX3ZlcnNpb24gPD0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICB1aW50MzJfdCBpbmRleDsKKyAgICAgICAgICAgIGlmICghZG9SZWFkVWlu
dDMyKCZpbmRleCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
aWYgKCFjcmVhdG9yLnRyeUdldFRyYW5zZmVycmVkTWVzc2FnZVBvcnQoaW5kZXgsIHZhbHVlKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQogICAgICAgICBjYXNlIE9iamVjdFJlZmVyZW5jZVRhZzogewogICAgICAgICAgICAgaWYg
KG1fdmVyc2lvbiA8PSAwKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE2NTIs
OCArMTY4NCw5IEBAIHByaXZhdGU6CiAKIGNsYXNzIERlc2VyaWFsaXplciA6IHB1YmxpYyBDb21w
b3NpdGVDcmVhdG9yIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBEZXNlcmlhbGl6ZXIoUmVhZGVy
JiByZWFkZXIpCisgICAgZXhwbGljaXQgRGVzZXJpYWxpemVyKFJlYWRlciYgcmVhZGVyLCBNZXNz
YWdlUG9ydEFycmF5KiBtZXNzYWdlUG9ydHMpCiAgICAgICAgIDogbV9yZWFkZXIocmVhZGVyKQor
ICAgICAgICAsIG1fdHJhbnNmZXJyZWRNZXNzYWdlUG9ydHMobWVzc2FnZVBvcnRzKQogICAgICAg
ICAsIG1fdmVyc2lvbigwKQogICAgIHsKICAgICB9CkBAIC0xNzU5LDYgKzE3OTIsMTYgQEAgcHVi
bGljOgogICAgICAgICBtX29iamVjdFBvb2wuYXBwZW5kKG9iamVjdCk7CiAgICAgfQogCisgICAg
dmlydHVhbCBib29sIHRyeUdldFRyYW5zZmVycmVkTWVzc2FnZVBvcnQodWludDMyX3QgaW5kZXgs
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiogb2JqZWN0KQorICAgIHsKKyAgICAgICAgaWYgKCFtX3Ry
YW5zZmVycmVkTWVzc2FnZVBvcnRzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpZiAoaW5kZXggPj0gbV90cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0cy0+c2l6ZSgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAqb2JqZWN0ID0gVjhNZXNzYWdlUG9ydDo6d3Jh
cChtX3RyYW5zZmVycmVkTWVzc2FnZVBvcnRzLT5hdChpbmRleCkuZ2V0KCkpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICB2aXJ0dWFsIGJvb2wgdHJ5R2V0T2JqZWN0RnJvbU9i
amVjdFJlZmVyZW5jZSh1aW50MzJfdCByZWZlcmVuY2UsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiog
b2JqZWN0KQogICAgIHsKICAgICAgICAgaWYgKHJlZmVyZW5jZSA+PSBtX29iamVjdFBvb2wuc2l6
ZSgpKQpAQCAtMTgzNyw2ICsxODgwLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8djg6OkxvY2Fs
PHY4OjpWYWx1ZT4gPiBtX3N0YWNrOwogICAgIFZlY3Rvcjx2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
PiBtX29iamVjdFBvb2w7CiAgICAgVmVjdG9yPHVpbnQzMl90PiBtX29wZW5Db21wb3NpdGVSZWZl
cmVuY2VTdGFjazsKKyAgICBNZXNzYWdlUG9ydEFycmF5KiBtX3RyYW5zZmVycmVkTWVzc2FnZVBv
cnRzOwogICAgIHVpbnQzMl90IG1fdmVyc2lvbjsKIH07CiAKQEAgLTE5MjAsMTQgKzE5NjQsMTQg
QEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoKQogewogfQog
Ci1TZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkqLCBib29sJiBkaWRUaHJvdykKK1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB2YWx1ZSwgTWVzc2FnZVBvcnRBcnJheSogbWVzc2FnZVBvcnRzLCBib29sJiBkaWRU
aHJvdykKIHsKICAgICBkaWRUaHJvdyA9IGZhbHNlOwogICAgIFdyaXRlciB3cml0ZXI7CiAgICAg
U2VyaWFsaXplcjo6U3RhdHVzIHN0YXR1czsKICAgICB7CiAgICAgICAgIHY4OjpUcnlDYXRjaCB0
cnlDYXRjaDsKLSAgICAgICAgU2VyaWFsaXplciBzZXJpYWxpemVyKHdyaXRlciwgdHJ5Q2F0Y2gp
OworICAgICAgICBTZXJpYWxpemVyIHNlcmlhbGl6ZXIod3JpdGVyLCBtZXNzYWdlUG9ydHMsIHRy
eUNhdGNoKTsKICAgICAgICAgc3RhdHVzID0gc2VyaWFsaXplci5zZXJpYWxpemUodmFsdWUpOwog
ICAgICAgICBpZiAoc3RhdHVzID09IFNlcmlhbGl6ZXI6OkpTRXhjZXB0aW9uKSB7CiAgICAgICAg
ICAgICAvLyBJZiB0aGVyZSB3YXMgYSBKUyBleGNlcHRpb24gdGhyb3duLCByZS10aHJvdyBpdC4K
QEAgLTE5NjUsMTMgKzIwMDksMTMgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUoY29uc3QgU3RyaW5nJiB3aXJlRGF0YSkKICAgICBtX2RhdGEgPSB3aXJlRGF0
YS5jcm9zc1RocmVhZFN0cmluZygpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShNZXNzYWdlUG9ydEFycmF5KikKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKE1lc3NhZ2VQ
b3J0QXJyYXkqIG1lc3NhZ2VQb3J0cykKIHsKICAgICBpZiAoIW1fZGF0YS5pbXBsKCkpCiAgICAg
ICAgIHJldHVybiB2ODo6TnVsbCgpOwogICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihCdWZmZXJW
YWx1ZVR5cGUpID09IDIsIEJ1ZmZlclZhbHVlVHlwZUlzVHdvQnl0ZXMpOwogICAgIFJlYWRlciBy
ZWFkZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obV9kYXRhLmltcGwoKS0+Y2hh
cmFjdGVycygpKSwgMiAqIG1fZGF0YS5sZW5ndGgoKSk7Ci0gICAgRGVzZXJpYWxpemVyIGRlc2Vy
aWFsaXplcihyZWFkZXIpOworICAgIERlc2VyaWFsaXplciBkZXNlcmlhbGl6ZXIocmVhZGVyLCBt
ZXNzYWdlUG9ydHMpOwogICAgIHJldHVybiBkZXNlcmlhbGl6ZXIuZGVzZXJpYWxpemUoKTsKIH0K
IAo=
</data>
<flag name="review"
          id="109836"
          type_id="1"
          status="+"
          setter="levin"
    />
    <flag name="commit-queue"
          id="109844"
          type_id="3"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112039</attachid>
            <date>2011-10-21 16:00:33 -0700</date>
            <delta_ts>2011-10-21 17:37:23 -0700</delta_ts>
            <desc>Fixes in tests + testdata for JSC</desc>
            <filename>70580.patch</filename>
            <type>text/plain</type>
            <size>18879</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzZGQ3ZDBmLi44MmQ4NTVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMTAt
MjAgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA1ODAKKyAgICAgICAgW0Nocm9taXVt
XSBJbXBsZW1lbnQgTWVzc2FnZVBvcnQgdHJhbnNmZXIgaW4gY2hyb21pdW0gcG9ydCBvZiB3ZWJr
aXQuCisgICAgICAgIFJlc3VsdHMgZm9yIEpTQyBpbmNsdWRlIHNvbWUgRkFJTHMgLSB0aGlzIHdp
bGwgYmUgYWRkcmVzc2VkIHdoZW4gSlNDIAorICAgICAgICBpbXBsZW1lbnRzIG1lc3NhZ2UgcG9y
dCB0cmFuc2ZlcnMgYXMgd2VsbCAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcwNjU4KQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MuaHRt
bDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGZhc3QvZXZlbnRzL3Jlc291cmNlcy9tZXNzYWdlLXBvcnQtbXVsdGkuanM6
CisgICAgICAgICh0ZXN0VHJhbnNmZXJzLmNoYW5uZWwwLnBvcnQyLm9ubWVzc2FnZSk6CisgICAg
ICAgICh0ZXN0VHJhbnNmZXJzKToKKyAgICAgICAgKGNoYW5uZWwucG9ydDIub25tZXNzYWdlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0
LW11bHRpLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Rv
bS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0OgorCiAyMDExLTEw
LTE5ICBZdXpvIEZ1amlzaGltYSAgPHl1em9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21p
dW1dIFRlc3QgZXhwZWN0YXRpb24gY2hhbmdlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50
eHQKaW5kZXggZjY0ZGQxNC4uZmIzOWI0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQu
dHh0CkBAIC0xNiw2ICsxNiw5IEBAIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzcnLCBbb2JqZWN0
IE1lc3NhZ2VQb3J0XSxbb2JqZWN0IE1lc3NhZ2VQb3J0XSkgZGlkIG5vdCB0CiBQQVNTOiBQb3N0
aW5nIG1lc3NhZ2UgKCc3JywgW29iamVjdCBNZXNzYWdlUG9ydF0sW29iamVjdCBNZXNzYWdlUG9y
dF0pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCcy
MTQ3NDgzNjQ4JywgbnVsbCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3Rp
bmcgbWVzc2FnZSAoJzIxNDc0ODM2NDgnLCBudWxsKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlv
bgorRkFJTDogUG9zdGluZyBtZXNzYWdlICgnW29iamVjdCBNZXNzYWdlUG9ydF0nLCBbb2JqZWN0
IE1lc3NhZ2VQb3J0XSxbb2JqZWN0IE1lc3NhZ2VQb3J0XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNl
cHRpb24KK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJ1tvYmplY3QgTWVzc2FnZVBvcnRdJywgW29i
amVjdCBNZXNzYWdlUG9ydF0sW29iamVjdCBNZXNzYWdlUG9ydF0pIGRpZCBub3QgdGhyb3cgYW4g
ZXhjZXB0aW9uCitQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCdbb2JqZWN0IE1lc3NhZ2VQb3J0XSxb
b2JqZWN0IE1lc3NhZ2VQb3J0XScsIFtvYmplY3QgTWVzc2FnZVBvcnRdLFtvYmplY3QgTWVzc2Fn
ZVBvcnRdKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFTUzogUG9zdGluZyBtZXNzYWdl
ICgnZG9uZScsICopIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBSZWNlaXZlZCBtZXNzYWdl
ICc0JyB3aXRoIDAgcG9ydHMuCiBSZWNlaXZlZCBtZXNzYWdlICc0JyB3aXRoIDAgcG9ydHMuCkBA
IC0yNyw1ICszMCw4IEBAIFJlY2VpdmVkIG1lc3NhZ2UgJzcnIHdpdGggMiBwb3J0cy4KIFJlY2Vp
dmVkIG1lc3NhZ2UgJzcnIHdpdGggMiBwb3J0cy4KIFJlY2VpdmVkIG1lc3NhZ2UgJzIxNDc0ODM2
NDgnIHdpdGggMCBwb3J0cy4KIFJlY2VpdmVkIG1lc3NhZ2UgJzIxNDc0ODM2NDgnIHdpdGggMCBw
b3J0cy4KK1JlY2VpdmVkIG1lc3NhZ2UgJ1tvYmplY3QgT2JqZWN0XScgd2l0aCAyIHBvcnRzLgor
UmVjZWl2ZWQgbWVzc2FnZSAnW29iamVjdCBPYmplY3RdJyB3aXRoIDIgcG9ydHMuCitSZWNlaXZl
ZCBtZXNzYWdlICdbb2JqZWN0IE9iamVjdF0sW29iamVjdCBPYmplY3RdJyB3aXRoIDIgcG9ydHMu
CiBSZWNlaXZlZCBtZXNzYWdlICdkb25lJyB3aXRoIDAgcG9ydHMuCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLmh0bWwK
aW5kZXggY2JkMjQzZi4uNjQ2YjM2NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
V2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLmh0bWwKQEAgLTUyLDcgKzUyLDE0
IEBAIHZhciBjaGFubmVsMSA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKIHRyeVBvc3RNZXNzYWdlRnVu
Y3Rpb24od2luZG93LnBvc3RNZXNzYWdlLCAnNycsIFtjaGFubmVsMS5wb3J0MSwgY2hhbm5lbDEu
cG9ydDJdLCAnKicpOwogdmFyIGNoYW5uZWwyID0gbmV3IE1lc3NhZ2VDaGFubmVsOwogdHJ5UG9z
dE1lc3NhZ2VGdW5jdGlvbih3aW5kb3cud2Via2l0UG9zdE1lc3NhZ2UsICc3JywgW2NoYW5uZWwy
LnBvcnQxLCBjaGFubmVsMi5wb3J0Ml0sICcqJyk7Cit2YXIgY2hhbm5lbDMgPSBuZXcgTWVzc2Fn
ZUNoYW5uZWw7CiB0cnlQb3N0TWVzc2FnZSgyMTQ3NDgzNjQ4LCBudWxsLCAnKicpOwordHJ5UG9z
dE1lc3NhZ2VGdW5jdGlvbih3aW5kb3cucG9zdE1lc3NhZ2UsIGNoYW5uZWwzLnBvcnQxLCBbY2hh
bm5lbDMucG9ydDEsIGNoYW5uZWwzLnBvcnQyXSwgJyonLCB0cnVlKTsKK3ZhciBjaGFubmVsNCA9
IG5ldyBNZXNzYWdlQ2hhbm5lbDsKK3RyeVBvc3RNZXNzYWdlRnVuY3Rpb24od2luZG93LndlYmtp
dFBvc3RNZXNzYWdlLCBjaGFubmVsNC5wb3J0MSwgW2NoYW5uZWw0LnBvcnQxLCBjaGFubmVsNC5w
b3J0Ml0sICcqJyk7Cit2YXIgY2hhbm5lbDUgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Cit0cnlQb3N0
TWVzc2FnZUZ1bmN0aW9uKHdpbmRvdy53ZWJraXRQb3N0TWVzc2FnZSwgW2NoYW5uZWw1LnBvcnQx
LCBjaGFubmVsNS5wb3J0Ml0sIFtjaGFubmVsNS5wb3J0MSwgY2hhbm5lbDUucG9ydDJdLCAnKicp
OworCiB0cnlQb3N0TWVzc2FnZUZ1bmN0aW9uKHdpbmRvdy5wb3N0TWVzc2FnZSwgJ2RvbmUnLCAn
KicpOwogPC9zY3JpcHQ+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9tZXNzYWdlLXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvbWVzc2FnZS1wb3J0LW11bHRpLWV4cGVjdGVkLnR4dAppbmRleCBhNTBjNDE0Li45MDNl
YjZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtbXVs
dGktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9y
dC1tdWx0aS1leHBlY3RlZC50eHQKQEAgLTE0LDYgKzE0LDExIEBAIFBBU1MgZXZlbnQucG9ydHMg
aXMgbm9uLW51bGwgYW5kIHplcm8gbGVuZ3RoIHdoZW4gbm8gcG9ydCBzZW50CiBQQVNTIGV2ZW50
LnBvcnRzIGlzIG5vbi1udWxsIGFuZCB6ZXJvIGxlbmd0aCB3aGVuIGVtcHR5IGFycmF5IHNlbnQK
IFBBU1MgZXZlbnQucG9ydHMgY29udGFpbnMgdHdvIHBvcnRzIHdoZW4gdHdvIHBvcnRzIHNlbnQK
IFBBU1MgZXZlbnQucG9ydHMgY29udGFpbnMgdHdvIHBvcnRzIHdoZW4gdHdvIHBvcnRzIHJlLXNl
bnQgYWZ0ZXIgZXJyb3IKK0ZBSUwgU2VuZGluZyBob3N0IG9iamVjdCBzaG91bGQgdGhyb3cKK0ZB
SUwgc2VuZC1wb3J0OiBwb3J0IHRyYW5zZmVyIGZhaWxlZAorRkFJTCBzZW5kLXBvcnQtdHdpY2U6
IGZhaWxlZCB0byB0cmFuc2ZlciBvbmUgcG9ydCB0d2ljZQorRkFJTCBzZW5kLXR3by1wb3J0czog
ZmFpbGVkIHRvIHRyYW5zZmVyIHR3byBwb3J0cworRkFJTCBVbmV4cGVjdGVkIG1lc3NhZ2UgW29i
amVjdCBPYmplY3RdCiAKIFRFU1QgQ09NUExFVEUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvcmVzb3VyY2VzL21lc3NhZ2UtcG9ydC1tdWx0aS5qcyBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9tZXNzYWdlLXBvcnQtbXVsdGkuanMKaW5kZXggMmFkZTI3
NC4uNTRlNjRlMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2Vz
L21lc3NhZ2UtcG9ydC1tdWx0aS5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNv
dXJjZXMvbWVzc2FnZS1wb3J0LW11bHRpLmpzCkBAIC0zMyw2ICszMyw1MyBAQCBzaG91bGRUaHJv
dygnY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibGFyZ2VTZXF1ZW5jZSIsIGxhcmdlUG9ydEFy
cmF5KScpOwogCiBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJkb25lIik7CiAKK2Z1bmN0aW9u
IHRlc3RUcmFuc2ZlcnMoKSB7CisgICAgdmFyIGNoYW5uZWwwID0gbmV3IE1lc3NhZ2VDaGFubmVs
KCk7CisKKyAgICB2YXIgYzEgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTsKKyAgICBjaGFubmVsMC5w
b3J0MS53ZWJraXRQb3N0TWVzc2FnZSh7aWQ6InNlbmQtcG9ydCIsIHBvcnQ6YzEucG9ydDF9LCBb
YzEucG9ydDFdKTsKKyAgICB2YXIgYzIgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTsKKyAgICBjaGFu
bmVsMC5wb3J0MS53ZWJraXRQb3N0TWVzc2FnZSh7aWQ6InNlbmQtcG9ydC10d2ljZSIsIHBvcnQw
OmMyLnBvcnQxLCBwb3J0MTpjMi5wb3J0MX0sIFtjMi5wb3J0MV0pOworICAgIHZhciBjMyA9IG5l
dyBNZXNzYWdlQ2hhbm5lbCgpOworICAgIGNoYW5uZWwwLnBvcnQxLndlYmtpdFBvc3RNZXNzYWdl
KHtpZDoic2VuZC10d28tcG9ydHMiLCBwb3J0MDpjMy5wb3J0MSwgcG9ydDE6YzMucG9ydDJ9LCBb
YzMucG9ydDEsIGMzLnBvcnQyXSk7CisgICAgdmFyIGM0ID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7
CisgICAgdHJ5IHsKKyAgICAgICAgY2hhbm5lbDAucG9ydDEud2Via2l0UG9zdE1lc3NhZ2Uoe2lk
OiJob3N0LW9iamVjdCIsIGhvc3RPYmplY3Q6YzMsIHBvcnQ6YzQucG9ydDF9LCBbYzQucG9ydDFd
KTsKKyAgICAgICAgdGVzdEZhaWxlZCgiU2VuZGluZyBob3N0IG9iamVjdCBzaG91bGQgdGhyb3ci
KTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiU2VuZGluZyBob3N0IG9i
amVjdCBoYXMgdGhyb3duICIgKyBlKTsKKyAgICB9CisgICAgYzQucG9ydDEucG9zdE1lc3NhZ2Uo
IlNob3VsZCBzdWNjZWVkIik7CisgICAgY2hhbm5lbDAucG9ydDEud2Via2l0UG9zdE1lc3NhZ2Uo
e2lkOiJkb25lIn0pOworCisgICAgY2hhbm5lbDAucG9ydDIub25tZXNzYWdlID0gZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICAgICAgaWYgKGV2ZW50LmRhdGEuaWQgPT0gInNlbmQtcG9ydCIpIHsKKyAg
ICAgICAgICAgIGlmIChldmVudC5wb3J0cyAmJiBldmVudC5wb3J0cy5sZW5ndGggPiAwICYmIGV2
ZW50LnBvcnRzWzBdID09PSBldmVudC5kYXRhLnBvcnQpCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgic2VuZC1wb3J0OiB0cmFuc2ZlcnJlZCBvbmUgcG9ydCIpOworICAgICAgICAgICAgZWxz
ZSAKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJzZW5kLXBvcnQ6IHBvcnQgdHJhbnNmZXIg
ZmFpbGVkIik7CisgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YS5pZCA9PSAic2VuZC1wb3J0
LXR3aWNlIikgeworICAgICAgICAgICAgaWYgKGV2ZW50LnBvcnRzICYmIGV2ZW50LnBvcnRzLmxl
bmd0aCA9PSAxICYmIAorICAgICAgICAgICAgICAgICAgZXZlbnQucG9ydHNbMF0gPT09IGV2ZW50
LmRhdGEucG9ydDAgJiYgZXZlbnQucG9ydHNbMF0gPT09IGV2ZW50LmRhdGEucG9ydDEpIAorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoInNlbmQtcG9ydC10d2ljZTogdHJhbnNmZXJyZWQgb25l
IHBvcnQgdHdpY2UiKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJzZW5kLXBvcnQtdHdpY2U6IGZhaWxlZCB0byB0cmFuc2ZlciBvbmUgcG9ydCB0d2ljZSIp
OworICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmRhdGEuaWQgPT0gInNlbmQtdHdvLXBvcnRzIikg
eworICAgICAgICAgICAgaWYgKGV2ZW50LnBvcnRzICYmIGV2ZW50LnBvcnRzLmxlbmd0aCA9PSAy
ICYmIAorICAgICAgICAgICAgICAgICAgZXZlbnQucG9ydHNbMF0gPT09IGV2ZW50LmRhdGEucG9y
dDAgJiYgZXZlbnQucG9ydHNbMV0gPT09IGV2ZW50LmRhdGEucG9ydDEpIAorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoInNlbmQtdHdvLXBvcnRzOiB0cmFuc2ZlcnJlZCB0d28gcG9ydHMiKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJzZW5kLXR3by1w
b3J0czogZmFpbGVkIHRvIHRyYW5zZmVyIHR3byBwb3J0cyIpOworICAgICAgICB9IGVsc2UgaWYg
KGV2ZW50LmRhdGEuaWQgPT0gImRvbmUiKSB7CisgICAgICAgICAgICBkZWJ1ZygnPGJyPjxzcGFu
IGNsYXNzPSJwYXNzIj5URVNUIENPTVBMRVRFPC9zcGFuPicpOworICAgICAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRlc3RGYWls
ZWQoIlVuZXhwZWN0ZWQgbWVzc2FnZSAiICsgZXZlbnQuZGF0YSk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKIGNoYW5uZWwucG9ydDIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKICAgICBp
ZiAoZXZlbnQuZGF0YSA9PSAibm9wb3J0IikgewogICAgICAgICBpZiAoZXZlbnQucG9ydHMgJiYg
IWV2ZW50LnBvcnRzLmxlbmd0aCkKQEAgLTYwLDkgKzEwNyw3IEBAIGNoYW5uZWwucG9ydDIub25t
ZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZXZlbnQucG9ydHMgY29udGFpbmVkICIgKyBldmVudC5wb3J0cy5sZW5ndGggKyAi
IHdoZW4gdHdvIHBvcnRzIHJlLXNlbnQgYWZ0ZXIgZXJyb3IiKTsKICAgICB9IGVsc2UgaWYgKGV2
ZW50LmRhdGEgPT0gImRvbmUiKSB7Ci0gICAgICAgIGRlYnVnKCc8YnI+PHNwYW4gY2xhc3M9InBh
c3MiPlRFU1QgQ09NUExFVEU8L3NwYW4+Jyk7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgICAgIHRlc3RUcmFuc2ZlcnMoKTsKICAgICB9IGVsc2UKICAgICAgICAgdGVzdEZh
aWxlZCgiUmVjZWl2ZWQgdW5leHBlY3RlZCBtZXNzYWdlOiAiICsgZXZlbnQuZGF0YSk7CiB9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9ldmVudHMv
bWVzc2FnZS1wb3J0LW11bHRpLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtLXdpbi9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0Cmlu
ZGV4IGYwYTk1MmEuLmRmNjE2MmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtLXdpbi9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2V2ZW50cy9tZXNzYWdl
LXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0CkBAIC05LDEwICs5LDE1IEBAIFBBU1MgY2hhbm5lbC5w
b3J0MS5wb3N0TWVzc2FnZSgibnVsbCBwb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCBudWxsLCBjaGFu
bmVsMy5wb3J0CiBQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm5vdEFQb3J0IiwgW2No
YW5uZWwzLnBvcnQxLCB7fSwgY2hhbm5lbDMucG9ydDJdKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBNZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IG11c3QgY29udGFpbiBvbmx5IE1lc3NhZ2VQ
b3J0cy4KIFBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibm90QW5BcnJheSIsIGNoYW5u
ZWwzLnBvcnQxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBNZXNzYWdlUG9ydEFycmF5IGFy
Z3VtZW50IGhhcyBubyBsZW5ndGggYXR0cmlidXRlLgogUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RN
ZXNzYWdlKCJub3RBU2VxdWVuY2UiLCBbe2xlbmd0aDogM31dKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBNZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IG11c3QgY29udGFpbiBvbmx5IE1lc3Nh
Z2VQb3J0cy4KK1BBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibGFyZ2VTZXF1ZW5jZSIs
IGxhcmdlUG9ydEFycmF5KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IERBVEFfQ0xPTkVfRVJSOiBE
T00gRXhjZXB0aW9uIDI1LgogUEFTUyBldmVudC5wb3J0cyBpcyBub24tbnVsbCBhbmQgemVybyBs
ZW5ndGggd2hlbiBubyBwb3J0IHNlbnQKIFBBU1MgZXZlbnQucG9ydHMgaXMgbm9uLW51bGwgYW5k
IHplcm8gbGVuZ3RoIHdoZW4gZW1wdHkgYXJyYXkgc2VudAogUEFTUyBldmVudC5wb3J0cyBjb250
YWlucyB0d28gcG9ydHMgd2hlbiB0d28gcG9ydHMgc2VudAogUEFTUyBldmVudC5wb3J0cyBjb250
YWlucyB0d28gcG9ydHMgd2hlbiB0d28gcG9ydHMgcmUtc2VudCBhZnRlciBlcnJvcgorUEFTUyBT
ZW5kaW5nIGhvc3Qgb2JqZWN0IGhhcyB0aHJvd24gRXJyb3I6IERBVEFfQ0xPTkVfRVJSOiBET00g
RXhjZXB0aW9uIDI1CitQQVNTIHNlbmQtcG9ydDogdHJhbnNmZXJyZWQgb25lIHBvcnQKK1BBU1Mg
c2VuZC1wb3J0LXR3aWNlOiB0cmFuc2ZlcnJlZCBvbmUgcG9ydCB0d2ljZQorUEFTUyBzZW5kLXR3
by1wb3J0czogdHJhbnNmZXJyZWQgdHdvIHBvcnRzCiAKIFRFU1QgQ09NUExFVEUKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vV2luZG93L3dpbmRv
dy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50
eHQKaW5kZXggNWY4ZTk5ZC4uYjBkNzhmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9XaW5k
b3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0CkBAIC0xNiw2ICsxNiw5IEBA
IFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzcnLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSxbb2JqZWN0
IE1lc3NhZ2VQb3J0XSkgZGlkIG5vdCB0CiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCc3JywgW29i
amVjdCBNZXNzYWdlUG9ydF0sW29iamVjdCBNZXNzYWdlUG9ydF0pIGRpZCBub3QgdGhyb3cgYW4g
ZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCcyMTQ3NDgzNjQ4JywgbnVsbCkgZGlk
IG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzIxNDc0ODM2
NDgnLCBudWxsKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgorUEFTUzogUG9zdGluZyBtZXNz
YWdlICgnW29iamVjdCBNZXNzYWdlUG9ydF0nLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSxbb2JqZWN0
IE1lc3NhZ2VQb3J0XSk6IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogREFUQV9DTE9ORV9FUlI6IERP
TSBFeGNlcHRpb24gMjUKK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJ1tvYmplY3QgTWVzc2FnZVBv
cnRdJywgW29iamVjdCBNZXNzYWdlUG9ydF0sW29iamVjdCBNZXNzYWdlUG9ydF0pIGRpZCBub3Qg
dGhyb3cgYW4gZXhjZXB0aW9uCitQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCdbb2JqZWN0IE1lc3Nh
Z2VQb3J0XSxbb2JqZWN0IE1lc3NhZ2VQb3J0XScsIFtvYmplY3QgTWVzc2FnZVBvcnRdLFtvYmpl
Y3QgTWVzc2FnZVBvcnRdKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFTUzogUG9zdGlu
ZyBtZXNzYWdlICgnZG9uZScsICopIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBSZWNlaXZl
ZCBtZXNzYWdlICc0JyB3aXRoIDAgcG9ydHMuCiBSZWNlaXZlZCBtZXNzYWdlICc0JyB3aXRoIDAg
cG9ydHMuCkBAIC0yNyw1ICszMCw3IEBAIFJlY2VpdmVkIG1lc3NhZ2UgJzcnIHdpdGggMiBwb3J0
cy4KIFJlY2VpdmVkIG1lc3NhZ2UgJzcnIHdpdGggMiBwb3J0cy4KIFJlY2VpdmVkIG1lc3NhZ2Ug
JzIxNDc0ODM2NDgnIHdpdGggMCBwb3J0cy4KIFJlY2VpdmVkIG1lc3NhZ2UgJzIxNDc0ODM2NDgn
IHdpdGggMCBwb3J0cy4KK1JlY2VpdmVkIG1lc3NhZ2UgJ1tvYmplY3QgTWVzc2FnZVBvcnRdJyB3
aXRoIDIgcG9ydHMuCitSZWNlaXZlZCBtZXNzYWdlICdbb2JqZWN0IE1lc3NhZ2VQb3J0XSxbb2Jq
ZWN0IE1lc3NhZ2VQb3J0XScgd2l0aCAyIHBvcnRzLgogUmVjZWl2ZWQgbWVzc2FnZSAnZG9uZScg
d2l0aCAwIHBvcnRzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjEyODA4OS4uN2NiODgyYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTEwLTIwICBEbWl0cnkgTG9tb3YgIDxkc2xvbW92QGdv
b2dsZS5jb20+CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcwNTgwCisgICAgICAgIFtDaHJvbWl1bV0gSW1wbGVtZW50IE1lc3NhZ2VQb3J0IHRyYW5z
ZmVyIGluIGNocm9taXVtIHBvcnQgb2Ygd2Via2l0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4T2JqZWN0TWFwOjpXcml0ZXI6OndyaXRlVHJh
bnNmZXJyZWRNZXNzYWdlUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpWOE9iamVjdE1hcDo6U2Vy
aWFsaXplcjo6U2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpWOE9iamVjdE1hcDo6U2Vy
aWFsaXplcjo6ZG9TZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6VjhPYmplY3RNYXA6OlJl
YWRlcjo6cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpWOE9iamVjdE1hcDo6RGVzZXJpYWxpemVy
OjpEZXNlcmlhbGl6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhPYmplY3RNYXA6OkRlc2VyaWFs
aXplcjo6dHJ5R2V0VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKToKKwogMjAxMS0xMC0x
OSAgVG9tYXN6IE1vcmF3c2tpICA8dC5tb3Jhd3NraUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBb
RUZMXSBBZGRlZCBtaXNzaW5nIGR1bW15IHBsYXRmb3JtRGVzY3JpcHRpb24gZnVuY3Rpb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwCmluZGV4IGU1ZWNmMzYuLjc3MWVjNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtNjQsNiArNjQsNyBAQAog
I2luY2x1ZGUgIlY4SW50MTZBcnJheS5oIgogI2luY2x1ZGUgIlY4SW50MzJBcnJheS5oIgogI2lu
Y2x1ZGUgIlY4SW50OEFycmF5LmgiCisjaW5jbHVkZSAiVjhNZXNzYWdlUG9ydC5oIgogI2luY2x1
ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJWOFVpbnQxNkFycmF5LmgiCiAjaW5jbHVkZSAiVjhV
aW50MzJBcnJheS5oIgpAQCAtMTgyLDYgKzE4Myw3IEBAIGVudW0gU2VyaWFsaXphdGlvblRhZyB7
CiAgICAgSW50MzJUYWcgPSAnSScsIC8vIHZhbHVlOlppZ1phZy1lbmNvZGVkIGludDMyIC0+IElu
dGVnZXIKICAgICBVaW50MzJUYWcgPSAnVScsIC8vIHZhbHVlOnVpbnQzMl90IC0+IEludGVnZXIK
ICAgICBEYXRlVGFnID0gJ0QnLCAvLyB2YWx1ZTpkb3VibGUgLT4gRGF0ZSAocmVmKQorICAgIE1l
c3NhZ2VQb3J0VGFnID0gJ00nLCAvLyBpbmRleDppbnQgLT4gTWVzc2FnZVBvcnQuIEZpbGxzIHRo
ZSByZXN1bHQgd2l0aCB0cmFuc2ZlcnJlZCBNZXNzYWdlUG9ydC4KICAgICBOdW1iZXJUYWcgPSAn
TicsIC8vIHZhbHVlOmRvdWJsZSAtPiBOdW1iZXIKICAgICBCbG9iVGFnID0gJ2InLCAvLyB1cmw6
V2ViQ29yZVN0cmluZywgdHlwZTpXZWJDb3JlU3RyaW5nLCBzaXplOnVpbnQ2NF90IC0+IEJsb2Ig
KHJlZikKICAgICBGaWxlVGFnID0gJ2YnLCAvLyBmaWxlOlJhd0ZpbGUgLT4gRmlsZSAocmVmKQpA
QCAtNDI5LDYgKzQzMSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGRvV3JpdGVVaW50MzIoc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGZsYWdzKSk7CiAgICAgfQogCisgICAgdm9pZCB3cml0ZVRyYW5zZmVy
cmVkTWVzc2FnZVBvcnQodWludDMyX3QgaW5kZXgpCisgICAgeworICAgICAgICBhcHBlbmQoTWVz
c2FnZVBvcnRUYWcpOworICAgICAgICBkb1dyaXRlVWludDMyKGluZGV4KTsKKyAgICB9CisKICAg
ICB2b2lkIHdyaXRlQXJyYXkodWludDMyX3QgbGVuZ3RoKQogICAgIHsKICAgICAgICAgYXBwZW5k
KEFycmF5VGFnKTsKQEAgLTU3Niw3ICs1ODQsNyBAQCBwdWJsaWM6CiAgICAgICAgIEpTRmFpbHVy
ZQogICAgIH07CiAKLSAgICBTZXJpYWxpemVyKFdyaXRlciYgd3JpdGVyLCB2ODo6VHJ5Q2F0Y2gm
IHRyeUNhdGNoKQorICAgIFNlcmlhbGl6ZXIoV3JpdGVyJiB3cml0ZXIsIE1lc3NhZ2VQb3J0QXJy
YXkqIG1lc3NhZ2VQb3J0cywgdjg6OlRyeUNhdGNoJiB0cnlDYXRjaCkKICAgICAgICAgOiBtX3dy
aXRlcih3cml0ZXIpCiAgICAgICAgICwgbV90cnlDYXRjaCh0cnlDYXRjaCkKICAgICAgICAgLCBt
X2RlcHRoKDApCkBAIC01ODUsNiArNTkzLDEwIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX25leHRP
YmplY3RSZWZlcmVuY2UoMCkKICAgICB7CiAgICAgICAgIEFTU0VSVCghdHJ5Q2F0Y2guSGFzQ2F1
Z2h0KCkpOworICAgICAgICBpZiAobWVzc2FnZVBvcnRzKSB7CisgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1lc3NhZ2VQb3J0cy0+c2l6ZSgpOyBpKyspCisgICAgICAgICAgICAg
ICAgbV90cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0cy5zZXQoVjhNZXNzYWdlUG9ydDo6d3JhcChtZXNz
YWdlUG9ydHMtPmF0KGkpLmdldCgpKSwgaSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBTdGF0
dXMgc2VyaWFsaXplKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKQEAgLTEwMTEsNiArMTAy
Myw3IEBAIHByaXZhdGU6CiAgICAgU3RhdHVzIG1fc3RhdHVzOwogICAgIHR5cGVkZWYgVjhPYmpl
Y3RNYXA8djg6Ok9iamVjdCwgdWludDMyX3Q+IE9iamVjdFBvb2w7CiAgICAgT2JqZWN0UG9vbCBt
X29iamVjdFBvb2w7CisgICAgT2JqZWN0UG9vbCBtX3RyYW5zZmVycmVkTWVzc2FnZVBvcnRzOwog
ICAgIHVpbnQzMl90IG1fbmV4dE9iamVjdFJlZmVyZW5jZTsKIH07CiAKQEAgLTEwNDgsNiArMTA2
MSwxMyBAQCBTZXJpYWxpemVyOjpTdGF0ZUJhc2UqIFNlcmlhbGl6ZXI6OmRvU2VyaWFsaXplKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgU3RhdAogICAgICAgICByZXR1cm4gd3JpdGVBbmRH
cmV5QXJyYXlCdWZmZXJWaWV3KHZhbHVlLkFzPHY4OjpPYmplY3Q+KCksIG5leHQpOwogICAgIGVs
c2UgaWYgKHZhbHVlLT5Jc1N0cmluZygpKQogICAgICAgICB3cml0ZVN0cmluZyh2YWx1ZSk7Cisg
ICAgZWxzZSBpZiAoVjhNZXNzYWdlUG9ydDo6SGFzSW5zdGFuY2UodmFsdWUpKSB7CisgICAgICAg
IHVpbnQzMl90IG1lc3NhZ2VQb3J0SW5kZXg7CisgICAgICAgIGlmIChtX3RyYW5zZmVycmVkTWVz
c2FnZVBvcnRzLnRyeUdldCh2YWx1ZS5Bczx2ODo6T2JqZWN0PigpLCAmbWVzc2FnZVBvcnRJbmRl
eCkpCisgICAgICAgICAgICAgICAgbV93cml0ZXIud3JpdGVUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0
KG1lc3NhZ2VQb3J0SW5kZXgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJl
dHVybiBoYW5kbGVFcnJvcihEYXRhQ2xvbmVFcnJvciwgbmV4dCk7CisgICAgICAgIH0KICAgICBl
bHNlIHsKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBqc09iamVjdCA9IHZhbHVlLkFz
PHY4OjpPYmplY3Q+KCk7CiAgICAgICAgIGlmIChqc09iamVjdC5Jc0VtcHR5KCkpCkBAIC0xMDk2
LDYgKzExMTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB1aW50MzJfdCBvYmplY3RSZWZlcmVu
Y2VDb3VudCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHVzaE9iamVjdFJlZmVyZW5jZShjb25z
dCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4mKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHRyeUdldE9i
amVjdEZyb21PYmplY3RSZWZlcmVuY2UodWludDMyX3QgcmVmZXJlbmNlLCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4qKSA9IDA7CisgICAgdmlydHVhbCBib29sIHRyeUdldFRyYW5zZmVycmVkTWVzc2Fn
ZVBvcnQodWludDMyX3QgaW5kZXgsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiopID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgbmV3QXJyYXkodWludDMyX3QgbGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCBi
b29sIG5ld09iamVjdCgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY29tcGxldGVBcnJheSh1aW50
MzJfdCBsZW5ndGgsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiopID0gMDsKQEAgLTEyMTIsNiArMTIz
Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICBjcmVhdG9yLnB1c2hPYmplY3RSZWZlcmVuY2UoKnZhbHVlKTsKICAgICAgICAgICAgIGJyZWFr
OworCiAgICAgICAgIGNhc2UgQXJyYXlUYWc6IHsKICAgICAgICAgICAgIHVpbnQzMl90IGxlbmd0
aDsKICAgICAgICAgICAgIGlmICghZG9SZWFkVWludDMyKCZsZW5ndGgpKQpAQCAtMTI3Nyw2ICsx
Mjk5LDE2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQorICAgICAgICBjYXNlIE1lc3NhZ2VQb3J0VGFn
OiB7CisgICAgICAgICAgICBpZiAobV92ZXJzaW9uIDw9IDApCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgdWludDMyX3QgaW5kZXg7CisgICAgICAgICAgICBpZiAo
IWRvUmVhZFVpbnQzMigmaW5kZXgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIGlmICghY3JlYXRvci50cnlHZXRUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0KGluZGV4
LCB2YWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBPYmplY3RSZWZlcmVuY2VUYWc6IHsKICAgICAg
ICAgICAgIGlmIChtX3ZlcnNpb24gPD0gMCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0xNjUyLDggKzE2ODQsOSBAQCBwcml2YXRlOgogCiBjbGFzcyBEZXNlcmlhbGl6ZXIgOiBw
dWJsaWMgQ29tcG9zaXRlQ3JlYXRvciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRGVzZXJpYWxp
emVyKFJlYWRlciYgcmVhZGVyKQorICAgIGV4cGxpY2l0IERlc2VyaWFsaXplcihSZWFkZXImIHJl
YWRlciwgTWVzc2FnZVBvcnRBcnJheSogbWVzc2FnZVBvcnRzKQogICAgICAgICA6IG1fcmVhZGVy
KHJlYWRlcikKKyAgICAgICAgLCBtX3RyYW5zZmVycmVkTWVzc2FnZVBvcnRzKG1lc3NhZ2VQb3J0
cykKICAgICAgICAgLCBtX3ZlcnNpb24oMCkKICAgICB7CiAgICAgfQpAQCAtMTc1OSw2ICsxNzky
LDE2IEBAIHB1YmxpYzoKICAgICAgICAgbV9vYmplY3RQb29sLmFwcGVuZChvYmplY3QpOwogICAg
IH0KIAorICAgIHZpcnR1YWwgYm9vbCB0cnlHZXRUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0KHVpbnQz
Ml90IGluZGV4LCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4qIG9iamVjdCkKKyAgICB7CisgICAgICAg
IGlmICghbV90cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0cykKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgaWYgKGluZGV4ID49IG1fdHJhbnNmZXJyZWRNZXNzYWdlUG9ydHMtPnNpemUo
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgKm9iamVjdCA9IFY4TWVzc2Fn
ZVBvcnQ6OndyYXAobV90cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0cy0+YXQoaW5kZXgpLmdldCgpKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgdmlydHVhbCBib29sIHRyeUdldE9i
amVjdEZyb21PYmplY3RSZWZlcmVuY2UodWludDMyX3QgcmVmZXJlbmNlLCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4qIG9iamVjdCkKICAgICB7CiAgICAgICAgIGlmIChyZWZlcmVuY2UgPj0gbV9vYmpl
Y3RQb29sLnNpemUoKSkKQEAgLTE4MzcsNiArMTg4MCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9y
PHY4OjpMb2NhbDx2ODo6VmFsdWU+ID4gbV9zdGFjazsKICAgICBWZWN0b3I8djg6OkhhbmRsZTx2
ODo6VmFsdWU+ID4gbV9vYmplY3RQb29sOwogICAgIFZlY3Rvcjx1aW50MzJfdD4gbV9vcGVuQ29t
cG9zaXRlUmVmZXJlbmNlU3RhY2s7CisgICAgTWVzc2FnZVBvcnRBcnJheSogbV90cmFuc2ZlcnJl
ZE1lc3NhZ2VQb3J0czsKICAgICB1aW50MzJfdCBtX3ZlcnNpb247CiB9OwogCkBAIC0xOTIwLDE0
ICsxOTY0LDE0IEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
KCkKIHsKIH0KIAotU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUo
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBNZXNzYWdlUG9ydEFycmF5KiwgYm9vbCYgZGlk
VGhyb3cpCitTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkqIG1lc3NhZ2VQb3J0cywg
Ym9vbCYgZGlkVGhyb3cpCiB7CiAgICAgZGlkVGhyb3cgPSBmYWxzZTsKICAgICBXcml0ZXIgd3Jp
dGVyOwogICAgIFNlcmlhbGl6ZXI6OlN0YXR1cyBzdGF0dXM7CiAgICAgewogICAgICAgICB2ODo6
VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7Ci0gICAgICAgIFNlcmlhbGl6ZXIgc2VyaWFsaXplcih3cml0ZXIs
IHRyeUNhdGNoKTsKKyAgICAgICAgU2VyaWFsaXplciBzZXJpYWxpemVyKHdyaXRlciwgbWVzc2Fn
ZVBvcnRzLCB0cnlDYXRjaCk7CiAgICAgICAgIHN0YXR1cyA9IHNlcmlhbGl6ZXIuc2VyaWFsaXpl
KHZhbHVlKTsKICAgICAgICAgaWYgKHN0YXR1cyA9PSBTZXJpYWxpemVyOjpKU0V4Y2VwdGlvbikg
ewogICAgICAgICAgICAgLy8gSWYgdGhlcmUgd2FzIGEgSlMgZXhjZXB0aW9uIHRocm93biwgcmUt
dGhyb3cgaXQuCkBAIC0xOTY1LDEzICsyMDA5LDEzIEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlKGNvbnN0IFN0cmluZyYgd2lyZURhdGEpCiAgICAgbV9kYXRh
ID0gd2lyZURhdGEuY3Jvc3NUaHJlYWRTdHJpbmcoKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoTWVzc2FnZVBvcnRBcnJheSop
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6
ZShNZXNzYWdlUG9ydEFycmF5KiBtZXNzYWdlUG9ydHMpCiB7CiAgICAgaWYgKCFtX2RhdGEuaW1w
bCgpKQogICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKICAgICBDT01QSUxFX0FTU0VSVChzaXpl
b2YoQnVmZmVyVmFsdWVUeXBlKSA9PSAyLCBCdWZmZXJWYWx1ZVR5cGVJc1R3b0J5dGVzKTsKICAg
ICBSZWFkZXIgcmVhZGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fZGF0YS5p
bXBsKCktPmNoYXJhY3RlcnMoKSksIDIgKiBtX2RhdGEubGVuZ3RoKCkpOwotICAgIERlc2VyaWFs
aXplciBkZXNlcmlhbGl6ZXIocmVhZGVyKTsKKyAgICBEZXNlcmlhbGl6ZXIgZGVzZXJpYWxpemVy
KHJlYWRlciwgbWVzc2FnZVBvcnRzKTsKICAgICByZXR1cm4gZGVzZXJpYWxpemVyLmRlc2VyaWFs
aXplKCk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>