<?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>164247</bug_id>
          
          <creation_ts>2016-10-31 15:55:38 -0700</creation_ts>
          <short_desc>Web Inspector: Shadow DOM scoped styles are missing</short_desc>
          <delta_ts>2016-10-31 18:19:47 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>bburg</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>koivisto</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>rniwa</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1246647</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-10-31 15:55:38 -0700</bug_when>
    <thetext>Summary:
Shadow DOM scoped styles are missing

Test:
&lt;div&gt;&lt;div id=&quot;host&quot;&gt;&lt;/div&gt;&lt;/div&gt;
&lt;script&gt;
(function() {
    let shadowRoot = document.getElementById(&quot;host&quot;).attachShadow({mode: &quot;open&quot;});
    shadowRoot.innerHTML = `
        &lt;style&gt;
        :host { padding: 20px; }
        div { color: blue; }
        &lt;/style&gt;
        &lt;div id=&quot;inner&quot;&gt;Shadow Content&lt;/div&gt;
    `;
})();
&lt;/script&gt;

Steps to Reproduce:
1. Inspect #host on test page
2. Show Styles &gt; Rules sidebar
  =&gt; Expected to see :host rule in sidebar
3. Inspect #inner on test page
  =&gt; Expected to see scoped &quot;div { color: blue }&quot; rule in sidebar</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246662</commentid>
    <comment_count>1</comment_count>
      <attachid>293484</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-10-31 16:05:08 -0700</bug_when>
    <thetext>Created attachment 293484
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246682</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-10-31 16:22:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/29035061&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246698</commentid>
    <comment_count>3</comment_count>
      <attachid>293484</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2016-10-31 16:38:12 -0700</bug_when>
    <thetext>Comment on attachment 293484
[PATCH] Proposed Fix

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

&gt; Source/WebCore/css/InspectorCSSOMWrappers.cpp:101
&gt; +    for (unsigned i = 0; i &lt; sheets.size(); ++i) {

Would it not be better to use a range based for-loop here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246718</commentid>
    <comment_count>4</comment_count>
      <attachid>293484</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-10-31 17:03:46 -0700</bug_when>
    <thetext>Comment on attachment 293484
[PATCH] Proposed Fix

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

&gt;&gt; Source/WebCore/css/InspectorCSSOMWrappers.cpp:101
&gt;&gt; +    for (unsigned i = 0; i &lt; sheets.size(); ++i) {
&gt; 
&gt; Would it not be better to use a range based for-loop here?

I tried and got a compiler error that I didn&apos;t want to waste time figuring out. The compiler didn&apos;t like:

    for (auto* sheet : sheets)

I welcome suggestions, my C++foo is quite poor =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246728</commentid>
    <comment_count>5</comment_count>
      <attachid>293484</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-10-31 17:11:47 -0700</bug_when>
    <thetext>Comment on attachment 293484
[PATCH] Proposed Fix

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

&gt;&gt;&gt; Source/WebCore/css/InspectorCSSOMWrappers.cpp:101
&gt;&gt;&gt; +    for (unsigned i = 0; i &lt; sheets.size(); ++i) {
&gt;&gt; 
&gt;&gt; Would it not be better to use a range based for-loop here?
&gt; 
&gt; I tried and got a compiler error that I didn&apos;t want to waste time figuring out. The compiler didn&apos;t like:
&gt; 
&gt;     for (auto* sheet : sheets)
&gt; 
&gt; I welcome suggestions, my C++foo is quite poor =)

for (auto&amp; sheet : sheets)

should work.

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:1018
&gt; +static Style::Scope&amp; containingStyleScopeForElement(Element* element)
&gt; +{
&gt; +    if (auto* shadowRoot = element-&gt;containingShadowRoot())
&gt; +        return shadowRoot-&gt;styleScope();
&gt; +    return element-&gt;document().styleScope();
&gt; +}
&gt; +

You should just use Style::Scope::forNode() instead of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246732</commentid>
    <comment_count>6</comment_count>
      <attachid>293484</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2016-10-31 17:14:03 -0700</bug_when>
    <thetext>Comment on attachment 293484
[PATCH] Proposed Fix

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

&gt;&gt;&gt;&gt; Source/WebCore/css/InspectorCSSOMWrappers.cpp:101
&gt;&gt;&gt;&gt; +    for (unsigned i = 0; i &lt; sheets.size(); ++i) {
&gt;&gt;&gt; 
&gt;&gt;&gt; Would it not be better to use a range based for-loop here?
&gt;&gt; 
&gt;&gt; I tried and got a compiler error that I didn&apos;t want to waste time figuring out. The compiler didn&apos;t like:
&gt;&gt; 
&gt;&gt;     for (auto* sheet : sheets)
&gt;&gt; 
&gt;&gt; I welcome suggestions, my C++foo is quite poor =)
&gt; 
&gt; for (auto&amp; sheet : sheets)
&gt; 
&gt; should work.

The only requirement for using range-based for loops with class types is that the class have members begin() and end(). WTF::Vector has these members, you just need to write the loop as Antti suggested, or:

for (const auto&amp; sheet : sheets)

for the const-happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246759</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-10-31 18:19:47 -0700</bug_when>
    <thetext>&lt;https://trac.webkit.org/changeset/208199&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293484</attachid>
            <date>2016-10-31 16:05:08 -0700</date>
            <delta_ts>2016-10-31 17:11:47 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>scoped-style-1.patch</filename>
            <type>text/plain</type>
            <size>18732</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwMTEwODU2Li41MjJhZWFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMTAt
MzEgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBTaGFkb3cgRE9NIHNjb3BlZCBzdHlsZXMgYXJlIG1pc3NpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDI0NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2Nzcy9z
aGFkb3ctc2NvcGVkLXN0eWxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVj
dG9yL2Nzcy9zaGFkb3ctc2NvcGVkLXN0eWxlLmh0bWw6IEFkZGVkLgorCiAyMDE2LTEwLTMxICBO
YW4gV2FuZyAgPG5fd2FuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IGlPUyBWb2ljZW92ZXIg
ZG9lcyBub3QgYW5ub3VuY2UgcHJldmlvdXNseSBzZWxlY3RlZCB2YWx1ZSBmcm9tIGlucHV0IHR5
cGU9ImRhdGUiIGZvcm0gZmllbGQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9j
c3Mvc2hhZG93LXNjb3BlZC1zdHlsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY3NzL3NoYWRvdy1zY29wZWQtc3R5bGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjNjNGIwYmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvY3NzL3NoYWRvdy1zY29wZWQtc3R5bGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMzcgQEAKK1Rlc3QgbWF0Y2hlZCBzdHlsZXMgZm9yIG5vZGVzIGluY2x1ZGUgc2hhZG93IGRv
bSBzY29wZWQgc3R5bGVzLgorCitCZWZvcmUKK0FmdGVyCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0
ZTogQ1NTLlNoYWRvd1Njb3BlZFN0eWxlCistLSBSdW5uaW5nIHRlc3QgY2FzZTogQ1NTLlNoYWRv
d1Njb3BlZFN0eWxlLkhvc3RTdHlsZXMKK1BBU1M6IE5vZGUgc2hvdWxkIGhhdmUgc2hhZG93IHJv
b3RzLgorUEFTUzogTm9kZSBzaG91bGQgbm90IGJlIGluIGEgc2hhZG93IHRyZWUuCitQQVNTOiBO
b2RlIHNob3VsZCBoYXZlIGFuIG9wZW4gc2hhZG93IHJvb3QuCitQQVNTOiBOb2RlIHNob3VsZCBo
YXZlIG5vIHBzZXVkbyBlbGVtZW50IHN0eWxlcy4KK1NUWUxFUzoKKyNzaGFkb3ctaG9zdCB7Cisg
ICAgcGFkZGluZzogNXB4OworfQorI3NoYWRvdy1ob3N0IHsKKyAgICBwYWRkaW5nOiAxMHB4Owor
fQorOmhvc3QgeworICAgIHBhZGRpbmc6IDIwcHg7Cit9CithZGRyZXNzLCBhcnRpY2xlLCBhc2lk
ZSwgZGl2LCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBsYXllciwgbWFpbiwgbmF2LCBzZWN0aW9u
IHsKK30KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IENTUy5TaGFkb3dTY29wZWRTdHlsZS5FbGVt
ZW50SW5TaGFkb3dUcmVlCitQQVNTOiBOb2RlIHNob3VsZCBub3QgaGF2ZSBzaGFkb3cgcm9vdHMu
CitQQVNTOiBOb2RlIHNob3VsZCBiZSBpbiBhIHNoYWRvdyB0cmVlLgorU1RZTEVTOgorI3NoYWRv
dy1ub2RlIHsKKyAgICBjb2xvcjogZ3JlZW47Cit9CitkaXYgeworICAgIGNvbG9yOiBibHVlOwor
fQorYWRkcmVzcywgYXJ0aWNsZSwgYXNpZGUsIGRpdiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwg
bGF5ZXIsIG1haW4sIG5hdiwgc2VjdGlvbiB7Cit9CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9jc3Mvc2hhZG93LXNjb3BlZC1zdHlsZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2Nzcy9zaGFkb3ctc2NvcGVkLXN0eWxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNDAxNjA4NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9jc3Mvc2hhZG93LXNjb3BlZC1zdHlsZS5odG1sCkBAIC0wLDAgKzEsMTA0IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90
ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBmdW5jdGlvbiBpc0VtcHR5T2JqZWN0KG9i
amVjdCkgeworICAgICAgICBmb3IgKGxldCBwcm9wZXJ0eSBpbiBvYmplY3QpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGZ1bmN0
aW9uIGR1bXBTdHlsZURlY2xhcmF0aW9ucyhzdHlsZXMpIHsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coIlNUWUxFUzoiKTsKKyAgICAgICAgZm9yIChsZXQgc3R5bGUgb2Ygc3R5bGVzKQorICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coc3R5bGUuZ2VuZXJhdGVDU1NSdWxlU3RyaW5nKCkp
OworICAgIH0KKworICAgIGxldCBkb2N1bWVudE5vZGU7CisgICAgbGV0IGhvc3ROb2RlOworCisg
ICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJDU1MuU2hhZG93
U2NvcGVkU3R5bGUiKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTog
IkNTUy5TaGFkb3dTY29wZWRTdHlsZS5Ib3N0U3R5bGVzIiwKKyAgICAgICAgZGVzY3JpcHRpb246
ICJFbnN1cmUgc2hhZG93IHJvb3QgaG9zdCBlbGVtZW50IGdldHMgOmhvc3Qgc3R5bGVzLiIsCisg
ICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
ZG9tVHJlZU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICIjc2hhZG93LWhv
c3QiLCAobm9kZUlkKSA9PiB7CisgICAgICAgICAgICAgICAgaWYgKCFub2RlSWQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJET00gbm9kZSAjc2hhZG93LWhvc3Qg
bm90IGZvdW5kIGluIGRvY3VtZW50LiIpOworICAgICAgICAgICAgICAgICAgICByZWplY3QoKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGhvc3ROb2RlID0gV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJ
ZChub2RlSWQpOworICAgICAgICAgICAgICAgIGxldCBub2RlU3R5bGVzID0gV2ViSW5zcGVjdG9y
LmNzc1N0eWxlTWFuYWdlci5zdHlsZXNGb3JOb2RlKGhvc3ROb2RlKTsKKyAgICAgICAgICAgICAg
ICBub2RlU3R5bGVzLnJlZnJlc2goKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGhvc3ROb2RlLmhhc1NoYWRvd1Jvb3RzKCksICJOb2Rl
IHNob3VsZCBoYXZlIHNoYWRvdyByb290cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RGYWxzZShob3N0Tm9kZS5pc0luU2hhZG93VHJlZSgpLCAiTm9kZSBzaG91
bGQgbm90IGJlIGluIGEgc2hhZG93IHRyZWUuIik7CisgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0VGhhdChob3N0Tm9kZS5zaGFkb3dSb290cygpWzBdLnNoYWRvd1Jvb3RU
eXBlKCkgPT09IFdlYkluc3BlY3Rvci5ET01Ob2RlLlNoYWRvd1Jvb3RUeXBlLk9wZW4sICJOb2Rl
IHNob3VsZCBoYXZlIGFuIG9wZW4gc2hhZG93IHJvb3QuIik7CisgICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChpc0VtcHR5T2JqZWN0KG5vZGVTdHlsZXMucHNldWRv
RWxlbWVudHMpLCAiTm9kZSBzaG91bGQgaGF2ZSBubyBwc2V1ZG8gZWxlbWVudCBzdHlsZXMuIik7
CisgICAgICAgICAgICAgICAgICAgIGR1bXBTdHlsZURlY2xhcmF0aW9ucyhub2RlU3R5bGVzLm9y
ZGVyZWRTdHlsZXMpOworICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAg
ICAgICAgfSkuY2F0Y2gocmVqZWN0KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAg
fSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJDU1MuU2hhZG93
U2NvcGVkU3R5bGUuRWxlbWVudEluU2hhZG93VHJlZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAi
RW5zdXJlIGVsZW1lbnQgaW4gc2hhZG93IHRyZWUgZ2V0cyBzaGFkb3cgZG9tIHNjb3BlZCBzdHls
ZXMuIiwKKyAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5kb21UcmVlTWFuYWdlci5xdWVyeVNlbGVjdG9yKGhvc3ROb2RlLnNoYWRvd1Jvb3Rz
KClbMF0uaWQsICIjc2hhZG93LW5vZGUiLCAobm9kZUlkKSA9PiB7CisgICAgICAgICAgICAgICAg
aWYgKCFub2RlSWQpIHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJE
T00gbm9kZSAjc2hhZG93LW5vZGUgbm90IGZvdW5kIGluICNzaGFkb3ctaG9zdCdzIHNoYWRvd1Jv
b3QuIik7CisgICAgICAgICAgICAgICAgICAgIHJlamVjdCgpOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbGV0IG5vZGUg
PSBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7CisgICAgICAg
ICAgICAgICAgbGV0IG5vZGVTdHlsZXMgPSBXZWJJbnNwZWN0b3IuY3NzU3R5bGVNYW5hZ2VyLnN0
eWxlc0Zvck5vZGUobm9kZSk7CisgICAgICAgICAgICAgICAgbm9kZVN0eWxlcy5yZWZyZXNoKCku
dGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFs
c2Uobm9kZS5oYXNTaGFkb3dSb290cygpLCAiTm9kZSBzaG91bGQgbm90IGhhdmUgc2hhZG93IHJv
b3RzLiIpOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQobm9k
ZS5pc0luU2hhZG93VHJlZSgpLCAiTm9kZSBzaG91bGQgYmUgaW4gYSBzaGFkb3cgdHJlZS4iKTsK
KyAgICAgICAgICAgICAgICAgICAgZHVtcFN0eWxlRGVjbGFyYXRpb25zKG5vZGVTdHlsZXMub3Jk
ZXJlZFN0eWxlcyk7CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAg
ICAgICB9KS5jYXRjaChyZWplY3QpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9
KTsKKworICAgIC8vIEFkZCBUZXN0OiBDU1MuU2hhZG93U2NvcGVkU3R5bGUuU2xvdHRlZEVsZW1l
bnQKKyAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2NDI0OT4gV2ViIEluc3Bl
Y3RvcjogRW5zdXJlIGluc3BlY3RvciBzaG93cyA6c2xvdHRlZCgpIHN0eWxlcyBpbiBzaWRlYmFy
CisKKyAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIucmVxdWVzdERvY3VtZW50KChub2Rl
KSA9PiB7CisgICAgICAgIGRvY3VtZW50Tm9kZSA9IG5vZGU7CisgICAgICAgIHN1aXRlLnJ1blRl
c3RDYXNlc0FuZEZpbmlzaCgpOworICAgIH0pOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IG1hdGNoZWQgc3R5bGVzIGZvciBub2RlcyBp
bmNsdWRlIHNoYWRvdyBkb20gc2NvcGVkIHN0eWxlcy48L3A+Cis8ZGl2PgorICAgIEJlZm9yZQor
ICAgIDxkaXYgaWQ9InNoYWRvdy1ob3N0IiBzdHlsZT0icGFkZGluZzogNXB4Ij48L2Rpdj4KKyAg
ICBBZnRlcgorPC9kaXY+Cis8c3R5bGU+I3NoYWRvdy1ob3N0IHsgcGFkZGluZzogMTBweDsgfTwv
c3R5bGU+Cis8c2NyaXB0PgorKGZ1bmN0aW9uKCkgeworICAgIGxldCBzaGFkb3dSb290ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNoYWRvdy1ob3N0IikuYXR0YWNoU2hhZG93KHttb2RlOiAi
b3BlbiJ9KTsKKyAgICBzaGFkb3dSb290LmlubmVySFRNTCA9IGAKKyAgICAgICAgPHN0eWxlPgor
ICAgICAgICA6aG9zdCB7IHBhZGRpbmc6IDIwcHg7IH0KKyAgICAgICAgZGl2IHsgY29sb3I6IGJs
dWU7IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPGRpdiBpZD0ic2hhZG93LW5vZGUiIHN0
eWxlPSJjb2xvcjogZ3JlZW4iPlNoYWRvdyBDb250ZW50PC9kaXY+CisgICAgYDsKK30pKCk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzYTc2NDBjLi44ZDM1MGVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzkgQEAKIDIwMTYtMTAtMzEgIEpvc2VwaCBQZWNvcmFy
byAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBTaGFkb3cg
RE9NIHNjb3BlZCBzdHlsZXMgYXJlIG1pc3NpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDI0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci9jc3Mvc2hhZG93LXNjb3BlZC1z
dHlsZS5odG1sCisKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoQXV0aG9yUnVsZXMpOgor
ICAgICAgICBPbmx5IG1hdGNoIDpob3N0IHBzZXVkbyBjbGFzcyBmb3IgTk9QU0VVRE8uIEl0IGRv
ZXNuJ3QgbWFrZSBzZW5zZQorICAgICAgICB3aXRoIGEgcHNldWRvIGVsZW1lbnQgcmVxdWVzdCAo
Omhvc3Q6OmJlZm9yZSBkb2VzIG5vdCBtYWtlIHNlbnNlKS4KKworICAgICAgICAqIGNzcy9JbnNw
ZWN0b3JDU1NPTVdyYXBwZXJzLmg6CisgICAgICAgICogY3NzL0luc3BlY3RvckNTU09NV3JhcHBl
cnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVj
dEZyb21TdHlsZVNoZWV0Q29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
T01XcmFwcGVyczo6Y29sbGVjdERvY3VtZW50V3JhcHBlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Z2V0V3JhcHBlckZvclJ1bGVJblNoZWV0cyk6CisgICAg
ICAgIFNpbXBsaWZ5IGV4aXN0aW5nICJvbmNlIHBlciBkb2N1bWVudCIgd3JhcHBlciBjb2xsZWN0
aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NPTVdyYXBwZXJzOjptYXliZUNv
bGxlY3RGcm9tU3R5bGVTaGVldHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTT01X
cmFwcGVyczo6Y29sbGVjdFNjb3BlV3JhcHBlcnMpOgorICAgICAgICBJbmNsdWRlIGEgcGF0aCB0
byBhZGQgc3R5bGUgc2hlZXRzIHRoYXQgd2VyZW4ndCBhbHJlYWR5IGNvbGxlY3RlZC4KKyAgICAg
ICAgVGhpcyB3aWxsIGJlIHVzZWZ1bCB3aGVuIHRyeWluZyB0aGUgU3R5bGVTY29wZSBzdHlsZXNo
ZWV0cyB3aGljaAorICAgICAgICBhcmUgZGlmZmVyZW50IGZvciBkaWZmZXJlbnQgbm9kZXMuCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udGFpbmluZ1N0eWxlU2NvcGVGb3JFbGVtZW50KTogICAgICAgIAorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZSk6CisgICAgICAg
IENvbGxlY3QgcnVsZXMgZm9yIGRvY3VtZW50IGFuZCBTdHlsZVNjb3BlIHNoZWV0cyBzZXBhcmF0
ZWx5LgorICAgICAgICBGb3IgZWxlbWVudHMgd2l0aCBhIHNoYWRvdyByb290LCBhZGQgdGhlIHJv
b3QncyBzaGVldHMgYXMKKyAgICAgICAgd2VsbCBpbiBjYXNlIHRoZXJlIGFyZSA6aG9zdCBydWxl
cyB0aGF0IGFmZmVjdCB0aGUgZWxlbWVudC4KKworMjAxNi0xMC0zMSAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCiAgICAgICAgIFVzZSAjcHJhZ21hIG9uY2UgaW4gV2Vi
Q29yZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0
MTk0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCmluZGV4
IDM0NjM3N2YuLmUyYmY3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50
UnVsZUNvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29s
bGVjdG9yLmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6
Om1hdGNoQXV0aG9yUnVsZXMoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKICAgICBpZiAocGFyZW50
ICYmIHBhcmVudC0+c2hhZG93Um9vdCgpKQogICAgICAgICBtYXRjaFNsb3R0ZWRQc2V1ZG9FbGVt
ZW50UnVsZXMobWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwogCi0gICAgaWYgKG1fZWxlbWVudC5z
aGFkb3dSb290KCkpCisgICAgaWYgKG1fZWxlbWVudC5zaGFkb3dSb290KCkgJiYgbV9wc2V1ZG9T
dHlsZVJlcXVlc3QucHNldWRvSWQgPT0gTk9QU0VVRE8pCiAgICAgICAgIG1hdGNoSG9zdFBzZXVk
b0NsYXNzUnVsZXMobWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwogCiAgICAgaWYgKG1fZWxlbWVu
dC5pc0luU2hhZG93VHJlZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0luc3Bl
Y3RvckNTU09NV3JhcHBlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNTU09N
V3JhcHBlcnMuY3BwCmluZGV4IGY1OGVjYWIuLjFlMmNhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAKQEAgLTgxLDEyICs4MSwxMiBAQCB2b2lk
IEluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3QoTGlzdFR5cGUqIGxpc3RUeXBlKQogICAg
IH0KIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzOjpjb2xsZWN0RnJvbVN0eWxlU2hl
ZXRDb250ZW50cyhIYXNoU2V0PFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mIHNoZWV0V3JhcHBlclNl
dCwgU3R5bGVTaGVldENvbnRlbnRzKiBzdHlsZVNoZWV0KQordm9pZCBJbnNwZWN0b3JDU1NPTVdy
YXBwZXJzOjpjb2xsZWN0RnJvbVN0eWxlU2hlZXRDb250ZW50cyhTdHlsZVNoZWV0Q29udGVudHMq
IHN0eWxlU2hlZXQpCiB7CiAgICAgaWYgKCFzdHlsZVNoZWV0KQogICAgICAgICByZXR1cm47CiAg
ICAgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IHN0eWxlU2hlZXRXcmFwcGVyID0gQ1NTU3R5bGVTaGVl
dDo6Y3JlYXRlKCpzdHlsZVNoZWV0KTsKLSAgICBzaGVldFdyYXBwZXJTZXQuYWRkKHN0eWxlU2hl
ZXRXcmFwcGVyKTsKKyAgICBtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQuYWRkKHN0eWxlU2hl
ZXRXcmFwcGVyKTsKICAgICBjb2xsZWN0KHN0eWxlU2hlZXRXcmFwcGVyLmdldCgpKTsKIH0KIApA
QCAtOTYsMjMgKzk2LDQxIEBAIHZvaWQgSW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVjdEZy
b21TdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlCiAgICAgICAgIGNvbGxl
Y3Qoc2hlZXRzW2ldLmdldCgpKTsKIH0KIAotQ1NTU3R5bGVSdWxlKiBJbnNwZWN0b3JDU1NPTVdy
YXBwZXJzOjpnZXRXcmFwcGVyRm9yUnVsZUluU2hlZXRzKFN0eWxlUnVsZSogcnVsZSwgU3R5bGU6
OlNjb3BlJiBzdHlsZVNjb3BlLCBFeHRlbnNpb25TdHlsZVNoZWV0cyYgZXh0ZW5zaW9uU3R5bGVT
aGVldHMpCit2b2lkIEluc3BlY3RvckNTU09NV3JhcHBlcnM6Om1heWJlQ29sbGVjdEZyb21TdHls
ZVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYgc2hlZXRzKQorewor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaGVldHMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgaWYgKCFtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQuY29udGFpbnMoc2hlZXRzW2ldLmdl
dCgpKSkgeworICAgICAgICAgICAgbV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyU2V0LmFkZChzaGVl
dHNbaV0pOworICAgICAgICAgICAgY29sbGVjdChzaGVldHNbaV0uZ2V0KCkpOworICAgICAgICB9
CisgICAgfQorfQorCit2b2lkIEluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3REb2N1bWVu
dFdyYXBwZXJzKEV4dGVuc2lvblN0eWxlU2hlZXRzJiBleHRlbnNpb25TdHlsZVNoZWV0cykKIHsK
ICAgICBpZiAobV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgY29sbGVjdEZyb21TdHlsZVNoZWV0Q29udGVudHMobV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVy
U2V0LCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OnNpbXBsZURlZmF1bHRTdHlsZVNoZWV0KTsKLSAg
ICAgICAgY29sbGVjdEZyb21TdHlsZVNoZWV0Q29udGVudHMobV9zdHlsZVNoZWV0Q1NTT01XcmFw
cGVyU2V0LCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmRlZmF1bHRTdHlsZVNoZWV0KTsKLSAgICAg
ICAgY29sbGVjdEZyb21TdHlsZVNoZWV0Q29udGVudHMobV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVy
U2V0LCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OnF1aXJrc1N0eWxlU2hlZXQpOwotICAgICAgICBj
b2xsZWN0RnJvbVN0eWxlU2hlZXRDb250ZW50cyhtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQs
IENTU0RlZmF1bHRTdHlsZVNoZWV0czo6c3ZnU3R5bGVTaGVldCk7Ci0gICAgICAgIGNvbGxlY3RG
cm9tU3R5bGVTaGVldENvbnRlbnRzKG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldCwgQ1NTRGVm
YXVsdFN0eWxlU2hlZXRzOjptYXRoTUxTdHlsZVNoZWV0KTsKLSAgICAgICAgY29sbGVjdEZyb21T
dHlsZVNoZWV0Q29udGVudHMobV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyU2V0LCBDU1NEZWZhdWx0
U3R5bGVTaGVldHM6Om1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KTsKLSAgICAgICAgY29sbGVjdEZy
b21TdHlsZVNoZWV0Q29udGVudHMobV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyU2V0LCBDU1NEZWZh
dWx0U3R5bGVTaGVldHM6OmZ1bGxzY3JlZW5TdHlsZVNoZWV0KTsKLSAgICAgICAgY29sbGVjdEZy
b21TdHlsZVNoZWV0Q29udGVudHMobV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyU2V0LCBDU1NEZWZh
dWx0U3R5bGVTaGVldHM6OnBsdWdJbnNTdHlsZVNoZWV0KTsKKyAgICAgICAgY29sbGVjdEZyb21T
dHlsZVNoZWV0Q29udGVudHMoQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpzaW1wbGVEZWZhdWx0U3R5
bGVTaGVldCk7CisgICAgICAgIGNvbGxlY3RGcm9tU3R5bGVTaGVldENvbnRlbnRzKENTU0RlZmF1
bHRTdHlsZVNoZWV0czo6ZGVmYXVsdFN0eWxlU2hlZXQpOworICAgICAgICBjb2xsZWN0RnJvbVN0
eWxlU2hlZXRDb250ZW50cyhDU1NEZWZhdWx0U3R5bGVTaGVldHM6OnF1aXJrc1N0eWxlU2hlZXQp
OworICAgICAgICBjb2xsZWN0RnJvbVN0eWxlU2hlZXRDb250ZW50cyhDU1NEZWZhdWx0U3R5bGVT
aGVldHM6OnN2Z1N0eWxlU2hlZXQpOworICAgICAgICBjb2xsZWN0RnJvbVN0eWxlU2hlZXRDb250
ZW50cyhDU1NEZWZhdWx0U3R5bGVTaGVldHM6Om1hdGhNTFN0eWxlU2hlZXQpOworICAgICAgICBj
b2xsZWN0RnJvbVN0eWxlU2hlZXRDb250ZW50cyhDU1NEZWZhdWx0U3R5bGVTaGVldHM6Om1lZGlh
Q29udHJvbHNTdHlsZVNoZWV0KTsKKyAgICAgICAgY29sbGVjdEZyb21TdHlsZVNoZWV0Q29udGVu
dHMoQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpmdWxsc2NyZWVuU3R5bGVTaGVldCk7CisgICAgICAg
IGNvbGxlY3RGcm9tU3R5bGVTaGVldENvbnRlbnRzKENTU0RlZmF1bHRTdHlsZVNoZWV0czo6cGx1
Z0luc1N0eWxlU2hlZXQpOwogCi0gICAgICAgIGNvbGxlY3RGcm9tU3R5bGVTaGVldHMoc3R5bGVT
Y29wZS5hY3RpdmVTdHlsZVNoZWV0cygpKTsKICAgICAgICAgY29sbGVjdChleHRlbnNpb25TdHls
ZVNoZWV0cy5wYWdlVXNlclNoZWV0KCkpOwogICAgICAgICBjb2xsZWN0RnJvbVN0eWxlU2hlZXRz
KGV4dGVuc2lvblN0eWxlU2hlZXRzLmluamVjdGVkVXNlclN0eWxlU2hlZXRzKCkpOwogICAgICAg
ICBjb2xsZWN0RnJvbVN0eWxlU2hlZXRzKGV4dGVuc2lvblN0eWxlU2hlZXRzLmRvY3VtZW50VXNl
clN0eWxlU2hlZXRzKCkpOwogICAgIH0KK30KKwordm9pZCBJbnNwZWN0b3JDU1NPTVdyYXBwZXJz
Ojpjb2xsZWN0U2NvcGVXcmFwcGVycyhTdHlsZTo6U2NvcGUmIHN0eWxlU2NvcGUpCit7CisgICAg
bWF5YmVDb2xsZWN0RnJvbVN0eWxlU2hlZXRzKHN0eWxlU2NvcGUuYWN0aXZlU3R5bGVTaGVldHMo
KSk7Cit9CisKK0NTU1N0eWxlUnVsZSogSW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Z2V0V3JhcHBl
ckZvclJ1bGVJblNoZWV0cyhTdHlsZVJ1bGUqIHJ1bGUpCit7CiAgICAgcmV0dXJuIG1fc3R5bGVS
dWxlVG9DU1NPTVdyYXBwZXJNYXAuZ2V0KHJ1bGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0luc3BlY3RvckNTU09NV3JhcHBlcnMuaAppbmRleCA1MzlkZDU4Li5hY2U5M2RhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmgKQEAgLTIwLDggKzIwLDcg
QEAKICAqCiAgKi8KIAotI2lmbmRlZiBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzX2gKLSNkZWZpbmUg
SW5zcGVjdG9yQ1NTT01XcmFwcGVyc19oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTQ1LDIwICs0NCwyMSBAQCBj
bGFzcyBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzIHsKIHB1YmxpYzoKICAgICAvLyBXQVJOSU5HLiBU
aGlzIHdpbGwgY29uc3RydWN0IENTU09NIHdyYXBwZXJzIGZvciBhbGwgc3R5bGUgcnVsZXMgYW5k
IGNhY2hlIHRoZW0gaW4gYSBtYXAgZm9yIHNpZ25pZmljYW50IG1lbW9yeSBjb3N0LgogICAgIC8v
IEl0IGlzIGhlcmUgdG8gc3VwcG9ydCBpbnNwZWN0b3IuIERvbid0IHVzZSBmb3IgYW55IHJlZ3Vs
YXIgZW5naW5lIGZ1bmN0aW9ucy4KLSAgICBDU1NTdHlsZVJ1bGUqIGdldFdyYXBwZXJGb3JSdWxl
SW5TaGVldHMoU3R5bGVSdWxlKiwgU3R5bGU6OlNjb3BlJiwgRXh0ZW5zaW9uU3R5bGVTaGVldHMm
KTsKKyAgICBDU1NTdHlsZVJ1bGUqIGdldFdyYXBwZXJGb3JSdWxlSW5TaGVldHMoU3R5bGVSdWxl
Kik7CiAgICAgdm9pZCBjb2xsZWN0RnJvbVN0eWxlU2hlZXRJZk5lZWRlZChDU1NTdHlsZVNoZWV0
Kik7CisgICAgdm9pZCBjb2xsZWN0RG9jdW1lbnRXcmFwcGVycyhFeHRlbnNpb25TdHlsZVNoZWV0
cyYpOworICAgIHZvaWQgY29sbGVjdFNjb3BlV3JhcHBlcnMoU3R5bGU6OlNjb3BlJik7CiAKIHBy
aXZhdGU6CiAgICAgdGVtcGxhdGUgPGNsYXNzIExpc3RUeXBlPgogICAgIHZvaWQgY29sbGVjdChM
aXN0VHlwZSopOwogCi0gICAgdm9pZCBjb2xsZWN0RnJvbVN0eWxlU2hlZXRDb250ZW50cyhIYXNo
U2V0PFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mIHNoZWV0V3JhcHBlclNldCwgU3R5bGVTaGVldENv
bnRlbnRzKik7CisgICAgdm9pZCBjb2xsZWN0RnJvbVN0eWxlU2hlZXRDb250ZW50cyhTdHlsZVNo
ZWV0Q29udGVudHMqKTsKICAgICB2b2lkIGNvbGxlY3RGcm9tU3R5bGVTaGVldHMoY29uc3QgVmVj
dG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mKTsKKyAgICB2b2lkIG1heWJlQ29sbGVjdEZyb21T
dHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYpOwogCiAgICAg
SGFzaE1hcDxTdHlsZVJ1bGUqLCBSZWZQdHI8Q1NTU3R5bGVSdWxlPj4gbV9zdHlsZVJ1bGVUb0NT
U09NV3JhcHBlck1hcDsKICAgICBIYXNoU2V0PFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4gbV9zdHls
ZVNoZWV0Q1NTT01XcmFwcGVyU2V0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gSW5zcGVjdG9yQ1NTT01XcmFwcGVyc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCBkN2NiNGEzLi41OTJkOTA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTUx
LDYgKzUxLDcgQEAKICNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIgogI2luY2x1
ZGUgIlNWR1N0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgorI2lu
Y2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbmNs
dWRlICJTdHlsZVByb3BlcnR5U2hvcnRoYW5kLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5o
IgpAQCAtNTksNyArNjAsNiBAQAogI2luY2x1ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCiAjaW5jbHVk
ZSAiV2ViS2l0TmFtZWRGbG93LmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclByb3Rv
Y29sT2JqZWN0cy5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CkBAIC0xMDA5LDYgKzEwMDksMTMgQEAgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHls
ZVNoZWV0T3JpZ2luIEluc3BlY3RvckNTU0FnZW50OjpkZXRlY3RPcmlnaW4oQ1NTU3QKICAgICBy
ZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpSZWd1bGFy
OwogfQogCitzdGF0aWMgU3R5bGU6OlNjb3BlJiBjb250YWluaW5nU3R5bGVTY29wZUZvckVsZW1l
bnQoRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBpZiAoYXV0byogc2hhZG93Um9vdCA9IGVsZW1l
bnQtPmNvbnRhaW5pbmdTaGFkb3dSb290KCkpCisgICAgICAgIHJldHVybiBzaGFkb3dSb290LT5z
dHlsZVNjb3BlKCk7CisgICAgcmV0dXJuIGVsZW1lbnQtPmRvY3VtZW50KCkuc3R5bGVTY29wZSgp
OworfQorCiBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0
b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JSdWxlKFN0eWxlUnVsZSogc3R5bGVSdWxlLCBTdHls
ZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBFbGVtZW50KiBlbGVtZW50KQogewogICAgIGlmICgh
c3R5bGVSdWxlKQpAQCAtMTAxNiw5ICsxMDIzLDE3IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OkNTU1J1bGU+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvclJ1bGUo
CiAKICAgICAvLyBTdHlsZVJ1bGVzIHJldHVybmVkIGJ5IFN0eWxlUmVzb2x2ZXI6OnN0eWxlUnVs
ZXNGb3JFbGVtZW50IGxhY2sgcGFyZW50IHBvaW50ZXJzIHNpbmNlIHRoYXQgaW5mb21hdGlvbiBp
cyBub3QgY2hlYXBseSBhdmFpbGFibGUuCiAgICAgLy8gU2luY2UgdGhlIGluc3BlY3RvciB3YW50
cyB0byB3YWxrIHRoZSBwYXJlbnQgY2hhaW4sIHdlIGNvbnN0cnVjdCB0aGUgZnVsbCB3cmFwcGVy
cyBoZXJlLgotICAgIENTU1N0eWxlUnVsZSogY3Nzb21XcmFwcGVyID0gc3R5bGVSZXNvbHZlci5p
bnNwZWN0b3JDU1NPTVdyYXBwZXJzKCkuZ2V0V3JhcHBlckZvclJ1bGVJblNoZWV0cyhzdHlsZVJ1
bGUsIHN0eWxlUmVzb2x2ZXIuZG9jdW1lbnQoKS5zdHlsZVNjb3BlKCksIHN0eWxlUmVzb2x2ZXIu
ZG9jdW1lbnQoKS5leHRlbnNpb25TdHlsZVNoZWV0cygpKTsKKyAgICBzdHlsZVJlc29sdmVyLmlu
c3BlY3RvckNTU09NV3JhcHBlcnMoKS5jb2xsZWN0RG9jdW1lbnRXcmFwcGVycyhzdHlsZVJlc29s
dmVyLmRvY3VtZW50KCkuZXh0ZW5zaW9uU3R5bGVTaGVldHMoKSk7CisgICAgc3R5bGVSZXNvbHZl
ci5pbnNwZWN0b3JDU1NPTVdyYXBwZXJzKCkuY29sbGVjdFNjb3BlV3JhcHBlcnMoY29udGFpbmlu
Z1N0eWxlU2NvcGVGb3JFbGVtZW50KGVsZW1lbnQpKTsKKworICAgIC8vIFBvc3NpYmxpdHkgb2Yg
Omhvc3Qgc3R5bGVzIGlmIHRoaXMgZWxlbWVudCBoYXMgYSBzaGFkb3cgcm9vdC4KKyAgICBpZiAo
U2hhZG93Um9vdCogc2hhZG93Um9vdCA9IGVsZW1lbnQtPnNoYWRvd1Jvb3QoKSkKKyAgICAgICAg
c3R5bGVSZXNvbHZlci5pbnNwZWN0b3JDU1NPTVdyYXBwZXJzKCkuY29sbGVjdFNjb3BlV3JhcHBl
cnMoc2hhZG93Um9vdC0+c3R5bGVTY29wZSgpKTsKKworICAgIENTU1N0eWxlUnVsZSogY3Nzb21X
cmFwcGVyID0gc3R5bGVSZXNvbHZlci5pbnNwZWN0b3JDU1NPTVdyYXBwZXJzKCkuZ2V0V3JhcHBl
ckZvclJ1bGVJblNoZWV0cyhzdHlsZVJ1bGUpOwogICAgIGlmICghY3Nzb21XcmFwcGVyKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3Rv
clN0eWxlU2hlZXQgPSBiaW5kU3R5bGVTaGVldChjc3NvbVdyYXBwZXItPnBhcmVudFN0eWxlU2hl
ZXQoKSk7CiAgICAgcmV0dXJuIGluc3BlY3RvclN0eWxlU2hlZXQgPyBpbnNwZWN0b3JTdHlsZVNo
ZWV0LT5idWlsZE9iamVjdEZvclJ1bGUoY3Nzb21XcmFwcGVyLCBlbGVtZW50KSA6IG51bGxwdHI7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAyZTQxYjI3Li41N2UwNjZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0xMC0zMSAgSm9zZXBoIFBl
Y29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFNo
YWRvdyBET00gc2NvcGVkIHN0eWxlcyBhcmUgbWlzc2luZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MjQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2Rl
U3R5bGVzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGVTdHlsZXMucHJvdG90eXBl
LnJlZnJlc2guZmV0Y2hlZElubGluZVN0eWxlcyk6CisgICAgICAgIEZpeCBpbmNvcnJlY3QgV3Jh
cHBlclByb21pc2UgdXNhZ2UuCisKIDIwMTYtMTAtMjggIERldmluIFJvdXNzbyAgPGRjcm91c3Nv
K3dlYmtpdEBnbWFpbC5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUHJlZmVyZW5jZXMg
Zm9yIFRleHQgRWRpdG9yIGJlaGF2aW9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzCmluZGV4IGIwMGI3
NDMuLjU2NGJlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzCkBAIC0xNDUsNyArMTQ1LDcgQEAg
V2ViSW5zcGVjdG9yLkRPTU5vZGVTdHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5bGVzIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgICAgICB0aGlzLl91cGRhdGVTdHlsZUNhc2Nh
ZGUoKTsKIAotICAgICAgICAgICAgZmV0Y2hlZENvbXB1dGVkU3R5bGVzUHJvbWlzZS5yZXNvbHZl
KCk7CisgICAgICAgICAgICBmZXRjaGVkSW5saW5lU3R5bGVzUHJvbWlzZS5yZXNvbHZlKCk7CiAg
ICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiBmZXRjaGVkQ29tcHV0ZWRTdHlsZShlcnJvciwg
Y29tcHV0ZWRQcm9wZXJ0aWVzUGF5bG9hZCkKQEAgLTI0Myw3ICsyNDMsNyBAQCBXZWJJbnNwZWN0
b3IuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuT2JqZWN0CiAgICAgICAgIENTU0FnZW50LmdldElubGluZVN0eWxlc0Zvck5vZGUuaW52b2tl
KHtub2RlSWQ6IHRoaXMuX25vZGUuaWR9LCBmZXRjaGVkSW5saW5lU3R5bGVzLmJpbmQodGhpcykp
OwogICAgICAgICBDU1NBZ2VudC5nZXRDb21wdXRlZFN0eWxlRm9yTm9kZS5pbnZva2Uoe25vZGVJ
ZDogdGhpcy5fbm9kZS5pZH0sIGZldGNoZWRDb21wdXRlZFN0eWxlLmJpbmQodGhpcykpOwogCi0g
ICAgICAgIHRoaXMuX3BlbmRpbmdSZWZyZXNoVGFzayA9IFByb21pc2UuYWxsKFtmZXRjaGVkTWF0
Y2hlZFN0eWxlc1Byb21pc2UsIGZldGNoZWRJbmxpbmVTdHlsZXNQcm9taXNlLCBmZXRjaGVkQ29t
cHV0ZWRTdHlsZXNQcm9taXNlXSkKKyAgICAgICAgdGhpcy5fcGVuZGluZ1JlZnJlc2hUYXNrID0g
UHJvbWlzZS5hbGwoW2ZldGNoZWRNYXRjaGVkU3R5bGVzUHJvbWlzZS5wcm9taXNlLCBmZXRjaGVk
SW5saW5lU3R5bGVzUHJvbWlzZS5wcm9taXNlLCBmZXRjaGVkQ29tcHV0ZWRTdHlsZXNQcm9taXNl
LnByb21pc2VdKQogICAgICAgICAudGhlbigoKSA9PiB7CiAgICAgICAgICAgICB0aGlzLl9wZW5k
aW5nUmVmcmVzaFRhc2sgPSBudWxsOwogICAgICAgICB9KTsK
</data>
<flag name="review"
          id="316357"
          type_id="1"
          status="+"
          setter="koivisto"
    />
    <flag name="commit-queue"
          id="316358"
          type_id="3"
          status="-"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>