<?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>170762</bug_id>
          
          <creation_ts>2017-04-11 21:28:49 -0700</creation_ts>
          <short_desc>Updating class name of a shadow host does not update the style applied by descendants of :host()</short_desc>
          <delta_ts>2021-05-03 22:12:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>Other</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>158900</dependson>
          <blocked>148695</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>florian.maffini</cc>
    
    <cc>ijaltllu</cc>
    
    <cc>jan</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1296641</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-04-11 21:28:49 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/202227 fixed the case where :host rule applies to itself,
but not any rules that apply styles to its descendants.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296643</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-04-11 21:29:27 -0700</bug_when>
    <thetext>See http://jsbin.com/masaxeq/edit?html,output</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296644</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-04-11 21:29:53 -0700</bug_when>
    <thetext>&lt;rdar://problem/31572668&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1298309</commentid>
    <comment_count>3</comment_count>
    <who name="vpusher">florian.maffini</who>
    <bug_when>2017-04-18 09:27:40 -0700</bug_when>
    <thetext>Experiencing the same issue with my custom element (game-card) but with an attribute selector:

:host([unrevealed]) #flipper

&gt; We can see the rule appear and match in the dev tools (transform: rotateY...), but the styles are not really applied to the #flipper element (the card should rotate on the Y axis, like it was flipped).

You can inspect it there: https://www.webcomponents.org/element/vpusher/game-card

&gt; Click on the card to toggle the &apos;unrevealed&apos; attribute on the host, then check the #flipper styles.

The thing is, if you uncheck, then check the rule in the dev tools, it applies properly.

Hope I helped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306193</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-05-08 18:35:24 -0700</bug_when>
    <thetext>*** Bug 169706 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307263</commentid>
    <comment_count>5</comment_count>
      <attachid>309710</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-05-11 08:10:07 -0700</bug_when>
    <thetext>Created attachment 309710
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307462</commentid>
    <comment_count>6</comment_count>
      <attachid>309710</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-05-11 14:17:19 -0700</bug_when>
    <thetext>Comment on attachment 309710
patch

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

&gt; Source/WebCore/css/RuleSet.cpp:208
&gt; +    return leftmostSelector-&gt;match() == CSSSelector::PseudoClass &amp;&amp; leftmostSelector-&gt;pseudoClassType() ==CSSSelector::PseudoClassHost;

Nit: Need a space after the second ==.

&gt; Source/WebCore/css/RuleSet.h:218
&gt; +    bool m_hasHostPseudoClassRulesMatchingInShadowTree { false };

You might wanna put this next to another boolean for better packing not that it matters much.

&gt; LayoutTests/fast/shadow-dom/css-scoping-host-class-and-attribute-mutation.html:108
&gt; +test(&quot;#host4&quot;, &quot;#shadow4&quot;, (host) =&gt; {
&gt; +   host.setAttribute(&apos;id&apos;,&apos;green&apos;);
&gt; +});

Could you also add a variant for modifying ID/class/attribute of a node inside the shadow tree?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307846</commentid>
    <comment_count>7</comment_count>
      <attachid>309889</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-05-12 05:03:53 -0700</bug_when>
    <thetext>Created attachment 309889
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307851</commentid>
    <comment_count>8</comment_count>
      <attachid>309889</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-12 05:31:52 -0700</bug_when>
    <thetext>Comment on attachment 309889
patch

Clearing flags on attachment: 309889

Committed r216761: &lt;http://trac.webkit.org/changeset/216761&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307852</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-12 05:31:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756437</commentid>
    <comment_count>10</comment_count>
    <who name="">ijaltllu</who>
    <bug_when>2021-05-03 22:12:23 -0700</bug_when>
    <thetext>_legacyUndefinedCheck: true</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309710</attachid>
            <date>2017-05-11 08:10:07 -0700</date>
            <delta_ts>2017-05-12 05:03:53 -0700</delta_ts>
            <desc>patch</desc>
            <filename>host-class-change.patch</filename>
            <type>text/plain</type>
            <size>16006</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNjY3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE3LTA1LTExICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGluZyBjbGFzcyBuYW1l
IG9mIGEgc2hhZG93IGhvc3QgZG9lcyBub3QgdXBkYXRlIHRoZSBzdHlsZSBhcHBsaWVkIGJ5IGRl
c2NlbmRhbnRzIG9mIDpob3N0KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MDc2MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzE1NzI2Njg+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgbmVlZCB0
byBpbnZhbGlkYXRlIHNoYWRvdyB0cmVlIHN0eWxlIHdoZW4gaG9zdCBjbGFzc2VzIG9yIGF0dHJp
YnV0ZXMgY2hhbmdlIGlmIGl0IG1heSBiZQorICAgICAgICBhZmZlY3RlZCBieSBob3N0IHJ1bGVz
LgorCisgICAgICAgIFRlc3Q6IGZhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1ob3N0LWNsYXNz
LWFuZC1hdHRyaWJ1dGUtbXV0YXRpb24uaHRtbAorCisgICAgICAgICogY3NzL1J1bGVTZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6aXNIb3N0U2VsZWN0b3JNYXRjaGluZ0luU2hhZG93VHJlZSk6
CisgICAgICAgIChXZWJDb3JlOjpSdWxlU2V0OjphZGRSdWxlKToKKworICAgICAgICAgICAgQ2hl
Y2sgaWYgd2UgaGF2ZSA6aG9zdCBzZWxlY3RvcnMgdGhhdCBhZmZlY3Qgc2hhZG93IHRyZWUuCisK
KyAgICAgICAgKiBjc3MvUnVsZVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6aGFz
SG9zdFBzZXVkb0NsYXNzUnVsZXNNYXRjaGluZ0luU2hhZG93VHJlZSk6CisgICAgICAgICogc3R5
bGUvQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjptYXlCZUFmZmVjdGVkQnlIb3N0UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OkF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0ZVN0eWxlKToKKworICAgICAg
ICAgICAgSW52YWxpZGF0ZSB0aGUgd2hvbGUgc3VidHJlZSBpZiB0aGVyZSBpcyBhIGNsYXNzIGNo
YW5nZSB0aGF0IG1heSBhZmZlY3Qgc2hhZG93IHRyZWUgc3R5bGUuCisKKyAgICAgICAgKiBzdHls
ZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
bWF5QmVBZmZlY3RlZEJ5SG9zdFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpDbGFz
c0NoYW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0ZVN0eWxlKToKKyAgICAgICAgKiBzdHlsZS9J
ZENoYW5nZUludmFsaWRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6bWF5QmVB
ZmZlY3RlZEJ5SG9zdFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpJZENoYW5nZUlu
dmFsaWRhdGlvbjo6aW52YWxpZGF0ZVN0eWxlKToKKworICAgICAgICAgICAgU2FtZSBmb3IgY2xh
c3NlcyBhbmQgaWRzLgorICAgICAgICAgICAgVGhpcyBzaG91bGQgYmUgcmVmYWN0b3JlZCBhdCBz
b21lIHBvaW50IHRvIHJlZHVjZSBjb3B5LWNvZGUuCisKIDIwMTctMDUtMTEgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIGN1c3RvbSBiaW5kaW5ncyBjb2Rl
IGZvciBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbidzIG5hbWVkIHByb3BlcnR5IGdldHRlcgpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAkocmV2aXNpb24gMjE2NjI0KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL1J1bGVTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsNiArMTk0LDIwIEBA
IHN0YXRpYyB1bnNpZ25lZCBydWxlc0NvdW50Rm9yTmFtZShjb25zdCAKICAgICByZXR1cm4gMDsK
IH0KIAorc3RhdGljIGJvb2wgaXNIb3N0U2VsZWN0b3JNYXRjaGluZ0luU2hhZG93VHJlZShjb25z
dCBDU1NTZWxlY3RvciYgc3RhcnRTZWxlY3RvcikKK3sKKyAgICBhdXRvKiBsZWZ0bW9zdFNlbGVj
dG9yID0gJnN0YXJ0U2VsZWN0b3I7CisgICAgYm9vbCBoYXNEZXNjZW5kYW50T3JDaGlsZFJlbGF0
aW9uID0gZmFsc2U7CisgICAgd2hpbGUgKGF1dG8qIHByZXZpb3VzID0gbGVmdG1vc3RTZWxlY3Rv
ci0+dGFnSGlzdG9yeSgpKSB7CisgICAgICAgIGhhc0Rlc2NlbmRhbnRPckNoaWxkUmVsYXRpb24g
PSBsZWZ0bW9zdFNlbGVjdG9yLT5oYXNEZXNjZW5kYW50T3JDaGlsZFJlbGF0aW9uKCk7CisgICAg
ICAgIGxlZnRtb3N0U2VsZWN0b3IgPSBwcmV2aW91czsKKyAgICB9CisgICAgaWYgKCFoYXNEZXNj
ZW5kYW50T3JDaGlsZFJlbGF0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1
cm4gbGVmdG1vc3RTZWxlY3Rvci0+bWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3Mg
JiYgbGVmdG1vc3RTZWxlY3Rvci0+cHNldWRvQ2xhc3NUeXBlKCkgPT1DU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3NIb3N0OworfQorCiB2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGUoU3R5bGVSdWxlKiBydWxl
LCB1bnNpZ25lZCBzZWxlY3RvckluZGV4LCBBZGRSdWxlRmxhZ3MgYWRkUnVsZUZsYWdzKQogewog
ICAgIFJ1bGVEYXRhIHJ1bGVEYXRhKHJ1bGUsIHNlbGVjdG9ySW5kZXgsIG1fcnVsZUNvdW50Kyss
IGFkZFJ1bGVGbGFncyk7CkBAIC0zMDksNiArMzIzLDkgQEAgdm9pZCBSdWxlU2V0OjphZGRSdWxl
KFN0eWxlUnVsZSogcnVsZSwgdQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKCFt
X2hhc0hvc3RQc2V1ZG9DbGFzc1J1bGVzTWF0Y2hpbmdJblNoYWRvd1RyZWUpCisgICAgICAgIG1f
aGFzSG9zdFBzZXVkb0NsYXNzUnVsZXNNYXRjaGluZ0luU2hhZG93VHJlZSA9IGlzSG9zdFNlbGVj
dG9yTWF0Y2hpbmdJblNoYWRvd1RyZWUoKnJ1bGVEYXRhLnNlbGVjdG9yKCkpOworCiAgICAgaWYg
KGhvc3RQc2V1ZG9DbGFzc1NlbGVjdG9yKSB7CiAgICAgICAgIG1faG9zdFBzZXVkb0NsYXNzUnVs
ZXMuYXBwZW5kKHJ1bGVEYXRhKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL1J1bGVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNl
dC5oCShyZXZpc2lvbiAyMTY2MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTIsNiArMTkyLDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHJ1
bGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcnVsZUNvdW50OyB9CiAKICAgICBib29sIGhhc1No
YWRvd1BzZXVkb0VsZW1lbnRSdWxlcygpIGNvbnN0OworICAgIGJvb2wgaGFzSG9zdFBzZXVkb0Ns
YXNzUnVsZXNNYXRjaGluZ0luU2hhZG93VHJlZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzSG9zdFBz
ZXVkb0NsYXNzUnVsZXNNYXRjaGluZ0luU2hhZG93VHJlZTsgfQogCiBwcml2YXRlOgogICAgIHZv
aWQgYWRkQ2hpbGRSdWxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYsIGNv
bnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIG1lZGl1bSwgU3R5bGVSZXNvbHZlciosIGJvb2wgaGFz
RG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdl
bnRTaGFkb3dUcmVlLCBBZGRSdWxlRmxhZ3MpOwpAQCAtMjE0LDYgKzIxNSw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX2F1dG9TaHJpbmtUb0ZpdEVuYWJsZWQgeyB0cnVlIH07CiAgICAgUnVsZUZl
YXR1cmVTZXQgbV9mZWF0dXJlczsKICAgICBWZWN0b3I8UnVsZVNldFNlbGVjdG9yUGFpcj4gbV9y
ZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0czsKKyAgICBib29sIG1faGFzSG9zdFBzZXVkb0NsYXNz
UnVsZXNNYXRjaGluZ0luU2hhZG93VHJlZSB7IGZhbHNlIH07CiB9OwogCiBpbmxpbmUgY29uc3Qg
UnVsZVNldDo6UnVsZURhdGFWZWN0b3IqIFJ1bGVTZXQ6OnRhZ1J1bGVzKGNvbnN0IEF0b21pY1N0
cmluZyYga2V5LCBib29sIGlzSFRNTE5hbWUpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dHlsZS9BdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N0eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5jcHAJKHJldmlzaW9u
IDIxNjYyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRh
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDE2ICs0MiwyMyBAQCBzdGF0aWMgYm9vbCBt
YXlCZUFmZmVjdGVkQnlBdHRyaWJ1dGVDaGFuCiAgICAgcmV0dXJuIG5hbWVTZXQuY29udGFpbnMo
YXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSk7CiB9CiAKLXN0YXRpYyBib29sIG1heUJlQWZmZWN0
ZWRCeUhvc3RSdWxlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lKQorc3RhdGljIGJvb2wgbWF5QmVBZmZlY3RlZEJ5SG9zdFJ1bGVzKGNv
bnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUs
IGJvb2wmIG1heUFmZmVjdFNoYWRvd1RyZWUpCiB7CisgICAgLy8gRklYTUU6IE1vcmUgb2YgdGhp
cyBjb2RlIHNob3VsZCBiZSBzaGFyZWQgYmV0d2VlbiBDbGFzcy9BdHRyaWJ1dGUvSWRJbnZhbGlk
YXRpb24uCiAgICAgYXV0byogc2hhZG93Um9vdCA9IGVsZW1lbnQuc2hhZG93Um9vdCgpOwogICAg
IGlmICghc2hhZG93Um9vdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGF1dG8mIHNoYWRv
d1J1bGVTZXRzID0gc2hhZG93Um9vdC0+c3R5bGVTY29wZSgpLnJlc29sdmVyKCkucnVsZVNldHMo
KTsKLSAgICBpZiAoc2hhZG93UnVsZVNldHMuYXV0aG9yU3R5bGUoKS5ob3N0UHNldWRvQ2xhc3NS
dWxlcygpLmlzRW1wdHkoKSkKKyAgICBhdXRvJiBhdXRob3JTdHlsZSA9IHNoYWRvd1J1bGVTZXRz
LmF1dGhvclN0eWxlKCk7CisgICAgaWYgKGF1dGhvclN0eWxlLmhvc3RQc2V1ZG9DbGFzc1J1bGVz
KCkuaXNFbXB0eSgpICYmICFhdXRob3JTdHlsZS5oYXNIb3N0UHNldWRvQ2xhc3NSdWxlc01hdGNo
aW5nSW5TaGFkb3dUcmVlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBt
YXlCZUFmZmVjdGVkQnlBdHRyaWJ1dGVDaGFuZ2Uoc2hhZG93UnVsZVNldHMsIGVsZW1lbnQuaXNI
VE1MRWxlbWVudCgpLCBhdHRyaWJ1dGVOYW1lKTsKKyAgICBpZiAoIW1heUJlQWZmZWN0ZWRCeUF0
dHJpYnV0ZUNoYW5nZShzaGFkb3dSdWxlU2V0cywgZWxlbWVudC5pc0hUTUxFbGVtZW50KCksIGF0
dHJpYnV0ZU5hbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYXV0aG9yU3R5
bGUuaGFzSG9zdFBzZXVkb0NsYXNzUnVsZXNNYXRjaGluZ0luU2hhZG93VHJlZSgpKQorICAgICAg
ICBtYXlBZmZlY3RTaGFkb3dUcmVlID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3Rh
dGljIGJvb2wgbWF5QmVBZmZlY3RlZEJ5U2xvdHRlZFJ1bGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCkBAIC03Myw5ICs4MCwxMCBA
QCB2b2lkIEF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbjo6aW52YWxpCiAKICAgICBhdXRvJiBy
dWxlU2V0cyA9IG1fZWxlbWVudC5zdHlsZVJlc29sdmVyKCkucnVsZVNldHMoKTsKICAgICBib29s
IGlzSFRNTCA9IG1fZWxlbWVudC5pc0hUTUxFbGVtZW50KCk7CisgICAgYm9vbCBtYXlBZmZlY3RT
aGFkb3dUcmVlID0gZmFsc2U7CiAKICAgICBib29sIG1heUFmZmVjdFN0eWxlID0gbWF5QmVBZmZl
Y3RlZEJ5QXR0cmlidXRlQ2hhbmdlKHJ1bGVTZXRzLCBpc0hUTUwsIGF0dHJpYnV0ZU5hbWUpCi0g
ICAgICAgIHx8IG1heUJlQWZmZWN0ZWRCeUhvc3RSdWxlcyhtX2VsZW1lbnQsIGF0dHJpYnV0ZU5h
bWUpCisgICAgICAgIHx8IG1heUJlQWZmZWN0ZWRCeUhvc3RSdWxlcyhtX2VsZW1lbnQsIGF0dHJp
YnV0ZU5hbWUsIG1heUFmZmVjdFNoYWRvd1RyZWUpCiAgICAgICAgIHx8IG1heUJlQWZmZWN0ZWRC
eVNsb3R0ZWRSdWxlcyhtX2VsZW1lbnQsIGF0dHJpYnV0ZU5hbWUpOwogCiAgICAgaWYgKCFtYXlB
ZmZlY3RTdHlsZSkKQEAgLTg2LDcgKzk0LDEwIEBAIHZvaWQgQXR0cmlidXRlQ2hhbmdlSW52YWxp
ZGF0aW9uOjppbnZhbGkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtX2VsZW1l
bnQuc2hhZG93Um9vdCgpICYmIHJ1bGVTZXRzLmF1dGhvclN0eWxlKCkuaGFzU2hhZG93UHNldWRv
RWxlbWVudFJ1bGVzKCkpIHsKKyAgICBpZiAobV9lbGVtZW50LnNoYWRvd1Jvb3QoKSAmJiBydWxl
U2V0cy5hdXRob3JTdHlsZSgpLmhhc1NoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcygpKQorICAgICAg
ICBtYXlBZmZlY3RTaGFkb3dUcmVlID0gdHJ1ZTsKKworICAgIGlmIChtYXlBZmZlY3RTaGFkb3dU
cmVlKSB7CiAgICAgICAgIG1fZWxlbWVudC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9DbGFzc0No
YW5nZUludmFsaWRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUv
Q2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCShyZXZpc2lvbiAyMTY2MjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdHlsZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg2LDE0ICs4NiwyMiBAQCBzdGF0aWMgQ2xhc3NDaGFuZ2VWZWN0b3IgY29tcHV0ZUNsYXNz
Q2hhCiAgICAgcmV0dXJuIGNoYW5nZWRDbGFzc2VzOwogfQogCi1zdGF0aWMgYm9vbCBtYXlCZUFm
ZmVjdGVkQnlIb3N0UnVsZXMoU2hhZG93Um9vdCogc2hhZG93Um9vdCwgQXRvbWljU3RyaW5nSW1w
bCogY2hhbmdlZENsYXNzKQorc3RhdGljIGJvb2wgbWF5QmVBZmZlY3RlZEJ5SG9zdFJ1bGVzKFNo
YWRvd1Jvb3QqIHNoYWRvd1Jvb3QsIEF0b21pY1N0cmluZ0ltcGwqIGNoYW5nZWRDbGFzcywgYm9v
bCYgbWF5QWZmZWN0U2hhZG93VHJlZSkKIHsKKyAgICAvLyBGSVhNRTogTW9yZSBvZiB0aGlzIGNv
ZGUgc2hvdWxkIGJlIHNoYXJlZCBiZXR3ZWVuIENsYXNzL0F0dHJpYnV0ZS9JZEludmFsaWRhdGlv
bi4KICAgICBpZiAoIXNoYWRvd1Jvb3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBhdXRv
JiBzaGFkb3dSdWxlU2V0cyA9IHNoYWRvd1Jvb3QtPnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnJ1
bGVTZXRzKCk7Ci0gICAgaWYgKHNoYWRvd1J1bGVTZXRzLmF1dGhvclN0eWxlKCkuaG9zdFBzZXVk
b0NsYXNzUnVsZXMoKS5pc0VtcHR5KCkpCisgICAgYXV0byYgYXV0aG9yU3R5bGUgPSBzaGFkb3dS
dWxlU2V0cy5hdXRob3JTdHlsZSgpOworICAgIGlmIChhdXRob3JTdHlsZS5ob3N0UHNldWRvQ2xh
c3NSdWxlcygpLmlzRW1wdHkoKSAmJiAhYXV0aG9yU3R5bGUuaGFzSG9zdFBzZXVkb0NsYXNzUnVs
ZXNNYXRjaGluZ0luU2hhZG93VHJlZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0
dXJuIHNoYWRvd1J1bGVTZXRzLmZlYXR1cmVzKCkuY2xhc3Nlc0luUnVsZXMuY29udGFpbnMoY2hh
bmdlZENsYXNzKTsKKworICAgIGlmICghc2hhZG93UnVsZVNldHMuZmVhdHVyZXMoKS5jbGFzc2Vz
SW5SdWxlcy5jb250YWlucyhjaGFuZ2VkQ2xhc3MpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoYXV0aG9yU3R5bGUuaGFzSG9zdFBzZXVkb0NsYXNzUnVsZXNNYXRjaGluZ0luU2hh
ZG93VHJlZSgpKQorICAgICAgICBtYXlBZmZlY3RTaGFkb3dUcmVlID0gdHJ1ZTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgbWF5QmVBZmZlY3RlZEJ5U2xvdHRlZFJ1bGVzKGNv
bnN0IFZlY3RvcjxTaGFkb3dSb290Kj4mIGFzc2lnbmVkU2hhZG93Um9vdHMsIEF0b21pY1N0cmlu
Z0ltcGwqIGNoYW5nZWRDbGFzcykKQEAgLTExMSw2ICsxMTksNyBAQCBzdGF0aWMgYm9vbCBtYXlC
ZUFmZmVjdGVkQnlTbG90dGVkUnVsZXMoCiB2b2lkIENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjpp
bnZhbGlkYXRlU3R5bGUoY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgb2xkQ2xhc3NlcywgY29uc3Qg
U3BhY2VTcGxpdFN0cmluZyYgbmV3Q2xhc3NlcykKIHsKICAgICBhdXRvIGNoYW5nZWRDbGFzc2Vz
ID0gY29tcHV0ZUNsYXNzQ2hhbmdlKG9sZENsYXNzZXMsIG5ld0NsYXNzZXMpOworICAgIGJvb2wg
bWF5QWZmZWN0U2hhZG93VHJlZSA9IGZhbHNlOwogCiAgICAgYXV0byYgcnVsZVNldHMgPSBtX2Vs
ZW1lbnQuc3R5bGVSZXNvbHZlcigpLnJ1bGVTZXRzKCk7CiAgICAgYXV0byogc2hhZG93Um9vdCA9
IG1fZWxlbWVudC5zaGFkb3dSb290KCk7CkBAIC0xMTksNyArMTI4LDcgQEAgdm9pZCBDbGFzc0No
YW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0ZQogICAgIENsYXNzQ2hhbmdlVmVjdG9yIGNoYW5n
ZWRDbGFzc2VzQWZmZWN0aW5nU3R5bGU7CiAgICAgZm9yIChhdXRvKiBjaGFuZ2VkQ2xhc3MgOiBj
aGFuZ2VkQ2xhc3NlcykgewogICAgICAgICBib29sIG1heUFmZmVjdFN0eWxlID0gcnVsZVNldHMu
ZmVhdHVyZXMoKS5jbGFzc2VzSW5SdWxlcy5jb250YWlucyhjaGFuZ2VkQ2xhc3MpCi0gICAgICAg
ICAgICB8fCBtYXlCZUFmZmVjdGVkQnlIb3N0UnVsZXMoc2hhZG93Um9vdCwgY2hhbmdlZENsYXNz
KQorICAgICAgICAgICAgfHwgbWF5QmVBZmZlY3RlZEJ5SG9zdFJ1bGVzKHNoYWRvd1Jvb3QsIGNo
YW5nZWRDbGFzcywgbWF5QWZmZWN0U2hhZG93VHJlZSkKICAgICAgICAgICAgIHx8IG1heUJlQWZm
ZWN0ZWRCeVNsb3R0ZWRSdWxlcyhhc3NpZ25lZFNoYWRvd1Jvb3RzLCBjaGFuZ2VkQ2xhc3MpOwog
ICAgICAgICBpZiAobWF5QWZmZWN0U3R5bGUpCiAgICAgICAgICAgICBjaGFuZ2VkQ2xhc3Nlc0Fm
ZmVjdGluZ1N0eWxlLmFwcGVuZChjaGFuZ2VkQ2xhc3MpOwpAQCAtMTI4LDcgKzEzNywxMSBAQCB2
b2lkIENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlCiAgICAgaWYgKGNoYW5nZWRD
bGFzc2VzQWZmZWN0aW5nU3R5bGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoc2hhZG93Um9vdCAmJiBydWxlU2V0cy5hdXRob3JTdHlsZSgpLmhhc1NoYWRvd1BzZXVkb0Vs
ZW1lbnRSdWxlcygpKSB7CisgICAgaWYgKHNoYWRvd1Jvb3QgJiYgcnVsZVNldHMuYXV0aG9yU3R5
bGUoKS5oYXNTaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMoKSkKKyAgICAgICAgbWF5QWZmZWN0U2hh
ZG93VHJlZSA9IHRydWU7CisKKyAgICBpZiAobWF5QWZmZWN0U2hhZG93VHJlZSkgeworICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRvIGZpbmUtZ3JhaW5lZCBpbnZhbGlkYXRpb24gZm9yIHNo
YWRvdyB0cmVlLgogICAgICAgICBtX2VsZW1lbnQuaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvSWRD
aGFuZ2VJbnZhbGlkYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0eWxl
L0lkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAkocmV2aXNpb24gMjE2NjI0KQorKysgU291cmNlL1dl
YkNvcmUvc3R5bGUvSWRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSwxNSArMzUsMjIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBTdHlsZSB7CiAK
LXN0YXRpYyBib29sIG1heUJlQWZmZWN0ZWRCeUhvc3RSdWxlcyhjb25zdCBFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGNoYW5nZWRJZCkKK3N0YXRpYyBib29sIG1heUJlQWZm
ZWN0ZWRCeUhvc3RSdWxlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJp
bmcmIGNoYW5nZWRJZCwgYm9vbCYgbWF5QWZmZWN0U2hhZG93VHJlZSkKIHsKICAgICBhdXRvKiBz
aGFkb3dSb290ID0gZWxlbWVudC5zaGFkb3dSb290KCk7CiAgICAgaWYgKCFzaGFkb3dSb290KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byYgc2hhZG93UnVsZVNldHMgPSBzaGFkb3dS
b290LT5zdHlsZVNjb3BlKCkucmVzb2x2ZXIoKS5ydWxlU2V0cygpOwotICAgIGlmIChzaGFkb3dS
dWxlU2V0cy5hdXRob3JTdHlsZSgpLmhvc3RQc2V1ZG9DbGFzc1J1bGVzKCkuaXNFbXB0eSgpKQor
ICAgIGF1dG8mIGF1dGhvclN0eWxlID0gc2hhZG93UnVsZVNldHMuYXV0aG9yU3R5bGUoKTsKKyAg
ICBpZiAoYXV0aG9yU3R5bGUuaG9zdFBzZXVkb0NsYXNzUnVsZXMoKS5pc0VtcHR5KCkgJiYgIWF1
dGhvclN0eWxlLmhhc0hvc3RQc2V1ZG9DbGFzc1J1bGVzTWF0Y2hpbmdJblNoYWRvd1RyZWUoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBzaGFkb3dSdWxlU2V0cy5mZWF0dXJl
cygpLmlkc0luUnVsZXMuY29udGFpbnMoY2hhbmdlZElkKTsKKworICAgIGlmICghc2hhZG93UnVs
ZVNldHMuZmVhdHVyZXMoKS5pZHNJblJ1bGVzLmNvbnRhaW5zKGNoYW5nZWRJZCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmIChhdXRob3JTdHlsZS5oYXNIb3N0UHNldWRvQ2xhc3NS
dWxlc01hdGNoaW5nSW5TaGFkb3dUcmVlKCkpCisgICAgICAgIG1heUFmZmVjdFNoYWRvd1RyZWUg
PSB0cnVlOworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBtYXlCZUFmZmVjdGVk
QnlTbG90dGVkUnVsZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5n
JiBjaGFuZ2VkSWQpCkBAIC02NCwxNSArNzEsMTkgQEAgdm9pZCBJZENoYW5nZUludmFsaWRhdGlv
bjo6aW52YWxpZGF0ZVN0eQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiBydWxlU2V0cyA9
IG1fZWxlbWVudC5zdHlsZVJlc29sdmVyKCkucnVsZVNldHMoKTsKKyAgICBib29sIG1heUFmZmVj
dFNoYWRvd1RyZWUgPSBmYWxzZTsKIAogICAgIGJvb2wgbWF5QWZmZWN0U3R5bGUgPSBydWxlU2V0
cy5mZWF0dXJlcygpLmlkc0luUnVsZXMuY29udGFpbnMoY2hhbmdlZElkKQotICAgICAgICB8fCBt
YXlCZUFmZmVjdGVkQnlIb3N0UnVsZXMobV9lbGVtZW50LCBjaGFuZ2VkSWQpCisgICAgICAgIHx8
IG1heUJlQWZmZWN0ZWRCeUhvc3RSdWxlcyhtX2VsZW1lbnQsIGNoYW5nZWRJZCwgbWF5QWZmZWN0
U2hhZG93VHJlZSkKICAgICAgICAgfHwgbWF5QmVBZmZlY3RlZEJ5U2xvdHRlZFJ1bGVzKG1fZWxl
bWVudCwgY2hhbmdlZElkKTsKIAogICAgIGlmICghbWF5QWZmZWN0U3R5bGUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChtX2VsZW1lbnQuc2hhZG93Um9vdCgpICYmIHJ1bGVTZXRzLmF1dGhv
clN0eWxlKCkuaGFzU2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKCkpIHsKKyAgICBpZiAobV9lbGVt
ZW50LnNoYWRvd1Jvb3QoKSAmJiBydWxlU2V0cy5hdXRob3JTdHlsZSgpLmhhc1NoYWRvd1BzZXVk
b0VsZW1lbnRSdWxlcygpKQorICAgICAgICBtYXlBZmZlY3RTaGFkb3dUcmVlID0gdHJ1ZTsKKwor
ICAgIGlmIChtYXlBZmZlY3RTaGFkb3dUcmVlKSB7CiAgICAgICAgIG1fZWxlbWVudC5pbnZhbGlk
YXRlU3R5bGVGb3JTdWJ0cmVlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMTY2MjQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNCBAQAorMjAxNy0wNS0xMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBs
ZS5jb20+CisKKyAgICAgICAgVXBkYXRpbmcgY2xhc3MgbmFtZSBvZiBhIHNoYWRvdyBob3N0IGRv
ZXMgbm90IHVwZGF0ZSB0aGUgc3R5bGUgYXBwbGllZCBieSBkZXNjZW5kYW50cyBvZiA6aG9zdCgp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA3NjIK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxNTcyNjY4PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5n
LWhvc3QtY2xhc3MtYW5kLWF0dHJpYnV0ZS1tdXRhdGlvbi1leHBlY3RlZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vY3NzLXNjb3BpbmctaG9zdC1jbGFzcy1hbmQtYXR0
cmlidXRlLW11dGF0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDE3LTA1LTEwICBNYXR0IExld2lzICA8
amxld2lzM0BhcHBsZS5jb20+CiAKICAgICAgICAgTWFya2VkIHRyYW5zaXRpb25zL2V4dHJhLXRy
YW5zaXRpb24uaHRtbCBhcyBmbGFreS4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRv
bS9jc3Mtc2NvcGluZy1ob3N0LWNsYXNzLWFuZC1hdHRyaWJ1dGUtbXV0YXRpb24tZXhwZWN0ZWQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bp
bmctaG9zdC1jbGFzcy1hbmQtYXR0cmlidXRlLW11dGF0aW9uLWV4cGVjdGVkLmh0bWwJKG5vbmV4
aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLWhvc3Qt
Y2xhc3MtYW5kLWF0dHJpYnV0ZS1tdXRhdGlvbi1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8Ym9keT4KKyAg
ICAgICAgPHA+VGVzdCBwYXNzZXMgaWYgeW91IHNlZSBhIHNpbmdsZSAxMDBweCBieSAxMDBweCBn
cmVlbiBib3ggYmVsb3cuPC9wPgorICAgICAgICA8ZGl2IHN0eWxlPSJ3aWR0aDogMTAwcHg7IGhl
aWdodDogMTAwcHg7IGJhY2tncm91bmQ6IGdyZWVuOyI+PC9kaXY+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLWhvc3Qt
Y2xhc3MtYW5kLWF0dHJpYnV0ZS1tdXRhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1ob3N0LWNsYXNzLWFuZC1hdHRyaWJ1dGUt
bXV0YXRpb24uaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1k
b20vY3NzLXNjb3BpbmctaG9zdC1jbGFzcy1hbmQtYXR0cmlidXRlLW11dGF0aW9uLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGVzdCBwYXNzZXMgaWYgeW91IHNlZSBhIHNpbmds
ZSAxMDBweCBieSAxMDBweCBncmVlbiBib3ggYmVsb3cuPC9wPgorCis8ZGl2IGlkPWhvc3QxPjwv
ZGl2PgorPGRpdiBpZD1ob3N0Mj48L2Rpdj4KKzxkaXYgaWQ9aG9zdDM+PC9kaXY+Cis8ZGl2IGlk
PWhvc3Q0PjwvZGl2PgorCis8dGVtcGxhdGUgaWQ9c2hhZG93MT4KKzxzdHlsZT4KKzpob3N0KC5n
cmVlbikgZGl2IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKK30KK2RpdiB7CisgICAg
d2lkdGg6IDEwMHB4OworICAgIGhlaWdodDogMjVweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBy
ZWQ7Cit9Cis8L3N0eWxlPgorPG5hdj48ZGl2PjwvZGl2PjwvbmF2PgorPC90ZW1wbGF0ZT4KKwor
PHRlbXBsYXRlIGlkPXNoYWRvdzI+Cis8c3R5bGU+Cis6aG9zdCguZ3JlZW4pID4gZGl2IHsKKyAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKK30KK2RpdiB7CisgICAgd2lkdGg6IDEwMHB4Owor
ICAgIGhlaWdodDogMjVweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxl
PgorPGRpdj48L2Rpdj4KKzwvdGVtcGxhdGU+CisKKzx0ZW1wbGF0ZSBpZD1zaGFkb3czPgorPHN0
eWxlPgorOmhvc3QoW2NvbG9yPWdyZWVuXSkgZGl2IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBn
cmVlbjsKK30KK2RpdiB7CisgICAgd2lkdGg6IDEwMHB4OworICAgIGhlaWdodDogMjVweDsKKyAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPGRpdj48L2Rpdj4KKzwvdGVt
cGxhdGU+CisKKzx0ZW1wbGF0ZSBpZD1zaGFkb3c0PgorPHN0eWxlPgorOmhvc3QoI2dyZWVuKSBk
aXYgeworICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworfQorZGl2IHsKKyAgICB3aWR0aDog
MTAwcHg7CisgICAgaGVpZ2h0OiAyNXB4OworICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKK30K
Kzwvc3R5bGU+Cis8ZGl2PjwvZGl2PgorPC90ZW1wbGF0ZT4KKworPGRpdiBpZD1sb2c+PC9kaXY+
CisKKzxzY3JpcHQ+CitmdW5jdGlvbiBjaGVja0NvbG9yKGhvc3QsIGV4cGVjdGVkKQoreworICAg
IGNvbnN0IGRpdiA9IGhvc3Quc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCJkaXYiKTsKKyAgICBj
b25zdCBjb2xvciA9IGdldENvbXB1dGVkU3R5bGUoZGl2KS5iYWNrZ3JvdW5kQ29sb3I7CisgICAg
Y29uc3Qgd2lkdGggPSBnZXRDb21wdXRlZFN0eWxlKGRpdikud2lkdGg7CisgICAgaWYgKGNvbG9y
ICE9IGV4cGVjdGVkKQorICAgICAgICBsb2cuaW5uZXJIVE1MICs9IGBGQUlMOiB1bmV4cGVjdGVk
IGJhY2tncm91bmQgY29sb3IgJHtjb2xvcn08YnI+YDsKKyAgICBpZiAod2lkdGggIT0gIjEwMHB4
IikKKyAgICAgICAgbG9nLmlubmVySFRNTCArPSBgRkFJTDogdW5leHBlY3RlZCB3aWR0aCAke3dp
ZHRofTxicj5gOworfQorCitmdW5jdGlvbiB0ZXN0KGhvc3RzZWxlY3Rvciwgc2hhZG93c2VsZWN0
b3IsIG11dGF0aW9uKSB7CisgICAgY29uc3QgaG9zdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
aG9zdHNlbGVjdG9yKTsKKyAgICBjb25zdCBzaGFkb3dUZW1wbGF0ZSA9IGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3Ioc2hhZG93c2VsZWN0b3IpOworCisgICAgaG9zdC5hdHRhY2hTaGFkb3coeyBtb2Rl
OiAnb3BlbicgfSk7CisgICAgaG9zdC5zaGFkb3dSb290LmFwcGVuZENoaWxkKHNoYWRvd1RlbXBs
YXRlLmNvbnRlbnQuY2xvbmVOb2RlKHRydWUpKTsKKworICAgIGNoZWNrQ29sb3IoaG9zdCwgInJn
YigyNTUsIDAsIDApIik7CisKKyAgICBtdXRhdGlvbihob3N0KTsKKworICAgIGNoZWNrQ29sb3Io
aG9zdCwgInJnYigwLCAxMjgsIDApIik7Cit9CisKK3Rlc3QoIiNob3N0MSIsICIjc2hhZG93MSIs
IChob3N0KSA9PiB7CisgICAgaG9zdC5jbGFzc0xpc3QuYWRkKCdncmVlbicpOworfSk7Cit0ZXN0
KCIjaG9zdDIiLCAiI3NoYWRvdzIiLCAoaG9zdCkgPT4geworICAgIGhvc3QuY2xhc3NMaXN0LmFk
ZCgnZ3JlZW4nKTsKKyB9KTsKK3Rlc3QoIiNob3N0MyIsICIjc2hhZG93MyIsIChob3N0KSA9PiB7
CisgICAgaG9zdC5zZXRBdHRyaWJ1dGUoJ2NvbG9yJywnZ3JlZW4nKTsKK30pOwordGVzdCgiI2hv
c3Q0IiwgIiNzaGFkb3c0IiwgKGhvc3QpID0+IHsKKyAgIGhvc3Quc2V0QXR0cmlidXRlKCdpZCcs
J2dyZWVuJyk7Cit9KTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="330883"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309889</attachid>
            <date>2017-05-12 05:03:53 -0700</date>
            <delta_ts>2017-05-12 05:31:52 -0700</delta_ts>
            <desc>patch</desc>
            <filename>host-class-change-2.patch</filename>
            <type>text/plain</type>
            <size>16345</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNjY3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE3LTA1LTExICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGluZyBjbGFzcyBuYW1l
IG9mIGEgc2hhZG93IGhvc3QgZG9lcyBub3QgdXBkYXRlIHRoZSBzdHlsZSBhcHBsaWVkIGJ5IGRl
c2NlbmRhbnRzIG9mIDpob3N0KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MDc2MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzE1NzI2Njg+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIFdlIG5lZWQgdG8g
aW52YWxpZGF0ZSBzaGFkb3cgdHJlZSBzdHlsZSB3aGVuIGhvc3QgY2xhc3NlcyBvciBhdHRyaWJ1
dGVzIGNoYW5nZSBpZiBpdCBtYXkgYmUKKyAgICAgICAgYWZmZWN0ZWQgYnkgaG9zdCBydWxlcy4K
KworICAgICAgICBUZXN0OiBmYXN0L3NoYWRvdy1kb20vY3NzLXNjb3BpbmctaG9zdC1jbGFzcy1h
bmQtYXR0cmlidXRlLW11dGF0aW9uLmh0bWwKKworICAgICAgICAqIGNzcy9SdWxlU2V0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmlzSG9zdFNlbGVjdG9yTWF0Y2hpbmdJblNoYWRvd1RyZWUpOgor
ICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6YWRkUnVsZSk6CisKKyAgICAgICAgICAgIENoZWNr
IGlmIHdlIGhhdmUgOmhvc3Qgc2VsZWN0b3JzIHRoYXQgYWZmZWN0IHNoYWRvdyB0cmVlLgorCisg
ICAgICAgICogY3NzL1J1bGVTZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6Omhhc0hv
c3RQc2V1ZG9DbGFzc1J1bGVzTWF0Y2hpbmdJblNoYWRvd1RyZWUpOgorICAgICAgICAqIHN0eWxl
L0F0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6bWF5QmVBZmZlY3RlZEJ5SG9zdFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpB
dHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVTdHlsZSk6CisKKyAgICAgICAg
ICAgIEludmFsaWRhdGUgdGhlIHdob2xlIHN1YnRyZWUgaWYgdGhlcmUgaXMgYSBjbGFzcyBjaGFu
Z2UgdGhhdCBtYXkgYWZmZWN0IHNoYWRvdyB0cmVlIHN0eWxlLgorCisgICAgICAgICogc3R5bGUv
Q2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Om1h
eUJlQWZmZWN0ZWRCeUhvc3RSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Q2xhc3ND
aGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVTdHlsZSk6CisgICAgICAgICogc3R5bGUvSWRD
aGFuZ2VJbnZhbGlkYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Om1heUJlQWZm
ZWN0ZWRCeUhvc3RSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6SWRDaGFuZ2VJbnZh
bGlkYXRpb246OmludmFsaWRhdGVTdHlsZSk6CisKKyAgICAgICAgICAgIFNhbWUgZm9yIGNsYXNz
ZXMgYW5kIGlkcy4KKyAgICAgICAgICAgIFRoaXMgc2hvdWxkIGJlIHJlZmFjdG9yZWQgYXQgc29t
ZSBwb2ludCB0byByZWR1Y2UgY29weS1jb2RlLgorCiAyMDE3LTA1LTExICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJvcCBjdXN0b20gYmluZGluZ3MgY29kZSBm
b3IgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24ncyBuYW1lZCBwcm9wZXJ0eSBnZXR0ZXIKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvUnVsZVNldC5jcHAJKHJldmlzaW9uIDIxNjYyNCkKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9SdWxlU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk0LDYgKzE5NCwyMCBAQCBz
dGF0aWMgdW5zaWduZWQgcnVsZXNDb3VudEZvck5hbWUoY29uc3QgCiAgICAgcmV0dXJuIDA7CiB9
CiAKK3N0YXRpYyBib29sIGlzSG9zdFNlbGVjdG9yTWF0Y2hpbmdJblNoYWRvd1RyZWUoY29uc3Qg
Q1NTU2VsZWN0b3ImIHN0YXJ0U2VsZWN0b3IpCit7CisgICAgYXV0byogbGVmdG1vc3RTZWxlY3Rv
ciA9ICZzdGFydFNlbGVjdG9yOworICAgIGJvb2wgaGFzRGVzY2VuZGFudE9yQ2hpbGRSZWxhdGlv
biA9IGZhbHNlOworICAgIHdoaWxlIChhdXRvKiBwcmV2aW91cyA9IGxlZnRtb3N0U2VsZWN0b3It
PnRhZ0hpc3RvcnkoKSkgeworICAgICAgICBoYXNEZXNjZW5kYW50T3JDaGlsZFJlbGF0aW9uID0g
bGVmdG1vc3RTZWxlY3Rvci0+aGFzRGVzY2VuZGFudE9yQ2hpbGRSZWxhdGlvbigpOworICAgICAg
ICBsZWZ0bW9zdFNlbGVjdG9yID0gcHJldmlvdXM7CisgICAgfQorICAgIGlmICghaGFzRGVzY2Vu
ZGFudE9yQ2hpbGRSZWxhdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJu
IGxlZnRtb3N0U2VsZWN0b3ItPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzICYm
IGxlZnRtb3N0U2VsZWN0b3ItPnBzZXVkb0NsYXNzVHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1
ZG9DbGFzc0hvc3Q7Cit9CisKIHZvaWQgUnVsZVNldDo6YWRkUnVsZShTdHlsZVJ1bGUqIHJ1bGUs
IHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIEFkZFJ1bGVGbGFncyBhZGRSdWxlRmxhZ3MpCiB7CiAg
ICAgUnVsZURhdGEgcnVsZURhdGEocnVsZSwgc2VsZWN0b3JJbmRleCwgbV9ydWxlQ291bnQrKywg
YWRkUnVsZUZsYWdzKTsKQEAgLTMwOSw2ICszMjMsOSBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGUo
U3R5bGVSdWxlKiBydWxlLCB1CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoIW1f
aGFzSG9zdFBzZXVkb0NsYXNzUnVsZXNNYXRjaGluZ0luU2hhZG93VHJlZSkKKyAgICAgICAgbV9o
YXNIb3N0UHNldWRvQ2xhc3NSdWxlc01hdGNoaW5nSW5TaGFkb3dUcmVlID0gaXNIb3N0U2VsZWN0
b3JNYXRjaGluZ0luU2hhZG93VHJlZSgqcnVsZURhdGEuc2VsZWN0b3IoKSk7CisKICAgICBpZiAo
aG9zdFBzZXVkb0NsYXNzU2VsZWN0b3IpIHsKICAgICAgICAgbV9ob3N0UHNldWRvQ2xhc3NSdWxl
cy5hcHBlbmQocnVsZURhdGEpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvUnVsZVNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0
LmgJKHJldmlzaW9uIDIxNjYyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTE5Miw2ICsxOTIsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgcnVs
ZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9ydWxlQ291bnQ7IH0KIAogICAgIGJvb2wgaGFzU2hh
ZG93UHNldWRvRWxlbWVudFJ1bGVzKCkgY29uc3Q7CisgICAgYm9vbCBoYXNIb3N0UHNldWRvQ2xh
c3NSdWxlc01hdGNoaW5nSW5TaGFkb3dUcmVlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNIb3N0UHNl
dWRvQ2xhc3NSdWxlc01hdGNoaW5nSW5TaGFkb3dUcmVlOyB9CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCBhZGRDaGlsZFJ1bGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiwgY29u
c3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgbWVkaXVtLCBTdHlsZVJlc29sdmVyKiwgYm9vbCBoYXNE
b2N1bWVudFNlY3VyaXR5T3JpZ2luLCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2Vu
dFNoYWRvd1RyZWUsIEFkZFJ1bGVGbGFncyk7CkBAIC0yMTEsNiArMjEyLDcgQEAgcHJpdmF0ZToK
ICAgICBSdWxlRGF0YVZlY3RvciBtX3VuaXZlcnNhbFJ1bGVzOwogICAgIFZlY3RvcjxTdHlsZVJ1
bGVQYWdlKj4gbV9wYWdlUnVsZXM7CiAgICAgdW5zaWduZWQgbV9ydWxlQ291bnQgeyAwIH07Cisg
ICAgYm9vbCBtX2hhc0hvc3RQc2V1ZG9DbGFzc1J1bGVzTWF0Y2hpbmdJblNoYWRvd1RyZWUgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9hdXRvU2hyaW5rVG9GaXRFbmFibGVkIHsgdHJ1ZSB9OwogICAg
IFJ1bGVGZWF0dXJlU2V0IG1fZmVhdHVyZXM7CiAgICAgVmVjdG9yPFJ1bGVTZXRTZWxlY3RvclBh
aXI+IG1fcmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNldHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dHlsZS9BdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N0eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5jcHAJKHJldmlzaW9u
IDIxNjYyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRh
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDE2ICs0MiwyMyBAQCBzdGF0aWMgYm9vbCBt
YXlCZUFmZmVjdGVkQnlBdHRyaWJ1dGVDaGFuCiAgICAgcmV0dXJuIG5hbWVTZXQuY29udGFpbnMo
YXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSk7CiB9CiAKLXN0YXRpYyBib29sIG1heUJlQWZmZWN0
ZWRCeUhvc3RSdWxlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lKQorc3RhdGljIGJvb2wgbWF5QmVBZmZlY3RlZEJ5SG9zdFJ1bGVzKGNv
bnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUs
IGJvb2wmIG1heUFmZmVjdFNoYWRvd1RyZWUpCiB7CisgICAgLy8gRklYTUU6IE1vcmUgb2YgdGhp
cyBjb2RlIHNob3VsZCBiZSBzaGFyZWQgYmV0d2VlbiBDbGFzcy9BdHRyaWJ1dGUvSWRJbnZhbGlk
YXRpb24uCiAgICAgYXV0byogc2hhZG93Um9vdCA9IGVsZW1lbnQuc2hhZG93Um9vdCgpOwogICAg
IGlmICghc2hhZG93Um9vdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGF1dG8mIHNoYWRv
d1J1bGVTZXRzID0gc2hhZG93Um9vdC0+c3R5bGVTY29wZSgpLnJlc29sdmVyKCkucnVsZVNldHMo
KTsKLSAgICBpZiAoc2hhZG93UnVsZVNldHMuYXV0aG9yU3R5bGUoKS5ob3N0UHNldWRvQ2xhc3NS
dWxlcygpLmlzRW1wdHkoKSkKKyAgICBhdXRvJiBhdXRob3JTdHlsZSA9IHNoYWRvd1J1bGVTZXRz
LmF1dGhvclN0eWxlKCk7CisgICAgaWYgKGF1dGhvclN0eWxlLmhvc3RQc2V1ZG9DbGFzc1J1bGVz
KCkuaXNFbXB0eSgpICYmICFhdXRob3JTdHlsZS5oYXNIb3N0UHNldWRvQ2xhc3NSdWxlc01hdGNo
aW5nSW5TaGFkb3dUcmVlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBt
YXlCZUFmZmVjdGVkQnlBdHRyaWJ1dGVDaGFuZ2Uoc2hhZG93UnVsZVNldHMsIGVsZW1lbnQuaXNI
VE1MRWxlbWVudCgpLCBhdHRyaWJ1dGVOYW1lKTsKKyAgICBpZiAoIW1heUJlQWZmZWN0ZWRCeUF0
dHJpYnV0ZUNoYW5nZShzaGFkb3dSdWxlU2V0cywgZWxlbWVudC5pc0hUTUxFbGVtZW50KCksIGF0
dHJpYnV0ZU5hbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYXV0aG9yU3R5
bGUuaGFzSG9zdFBzZXVkb0NsYXNzUnVsZXNNYXRjaGluZ0luU2hhZG93VHJlZSgpKQorICAgICAg
ICBtYXlBZmZlY3RTaGFkb3dUcmVlID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3Rh
dGljIGJvb2wgbWF5QmVBZmZlY3RlZEJ5U2xvdHRlZFJ1bGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCkBAIC03Myw5ICs4MCwxMCBA
QCB2b2lkIEF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbjo6aW52YWxpCiAKICAgICBhdXRvJiBy
dWxlU2V0cyA9IG1fZWxlbWVudC5zdHlsZVJlc29sdmVyKCkucnVsZVNldHMoKTsKICAgICBib29s
IGlzSFRNTCA9IG1fZWxlbWVudC5pc0hUTUxFbGVtZW50KCk7CisgICAgYm9vbCBtYXlBZmZlY3RT
aGFkb3dUcmVlID0gZmFsc2U7CiAKICAgICBib29sIG1heUFmZmVjdFN0eWxlID0gbWF5QmVBZmZl
Y3RlZEJ5QXR0cmlidXRlQ2hhbmdlKHJ1bGVTZXRzLCBpc0hUTUwsIGF0dHJpYnV0ZU5hbWUpCi0g
ICAgICAgIHx8IG1heUJlQWZmZWN0ZWRCeUhvc3RSdWxlcyhtX2VsZW1lbnQsIGF0dHJpYnV0ZU5h
bWUpCisgICAgICAgIHx8IG1heUJlQWZmZWN0ZWRCeUhvc3RSdWxlcyhtX2VsZW1lbnQsIGF0dHJp
YnV0ZU5hbWUsIG1heUFmZmVjdFNoYWRvd1RyZWUpCiAgICAgICAgIHx8IG1heUJlQWZmZWN0ZWRC
eVNsb3R0ZWRSdWxlcyhtX2VsZW1lbnQsIGF0dHJpYnV0ZU5hbWUpOwogCiAgICAgaWYgKCFtYXlB
ZmZlY3RTdHlsZSkKQEAgLTg2LDcgKzk0LDEwIEBAIHZvaWQgQXR0cmlidXRlQ2hhbmdlSW52YWxp
ZGF0aW9uOjppbnZhbGkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtX2VsZW1l
bnQuc2hhZG93Um9vdCgpICYmIHJ1bGVTZXRzLmF1dGhvclN0eWxlKCkuaGFzU2hhZG93UHNldWRv
RWxlbWVudFJ1bGVzKCkpIHsKKyAgICBpZiAobV9lbGVtZW50LnNoYWRvd1Jvb3QoKSAmJiBydWxl
U2V0cy5hdXRob3JTdHlsZSgpLmhhc1NoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcygpKQorICAgICAg
ICBtYXlBZmZlY3RTaGFkb3dUcmVlID0gdHJ1ZTsKKworICAgIGlmIChtYXlBZmZlY3RTaGFkb3dU
cmVlKSB7CiAgICAgICAgIG1fZWxlbWVudC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9DbGFzc0No
YW5nZUludmFsaWRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUv
Q2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCShyZXZpc2lvbiAyMTY2MjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdHlsZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg2LDE0ICs4NiwyMiBAQCBzdGF0aWMgQ2xhc3NDaGFuZ2VWZWN0b3IgY29tcHV0ZUNsYXNz
Q2hhCiAgICAgcmV0dXJuIGNoYW5nZWRDbGFzc2VzOwogfQogCi1zdGF0aWMgYm9vbCBtYXlCZUFm
ZmVjdGVkQnlIb3N0UnVsZXMoU2hhZG93Um9vdCogc2hhZG93Um9vdCwgQXRvbWljU3RyaW5nSW1w
bCogY2hhbmdlZENsYXNzKQorc3RhdGljIGJvb2wgbWF5QmVBZmZlY3RlZEJ5SG9zdFJ1bGVzKFNo
YWRvd1Jvb3QqIHNoYWRvd1Jvb3QsIEF0b21pY1N0cmluZ0ltcGwqIGNoYW5nZWRDbGFzcywgYm9v
bCYgbWF5QWZmZWN0U2hhZG93VHJlZSkKIHsKKyAgICAvLyBGSVhNRTogTW9yZSBvZiB0aGlzIGNv
ZGUgc2hvdWxkIGJlIHNoYXJlZCBiZXR3ZWVuIENsYXNzL0F0dHJpYnV0ZS9JZEludmFsaWRhdGlv
bi4KICAgICBpZiAoIXNoYWRvd1Jvb3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBhdXRv
JiBzaGFkb3dSdWxlU2V0cyA9IHNoYWRvd1Jvb3QtPnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnJ1
bGVTZXRzKCk7Ci0gICAgaWYgKHNoYWRvd1J1bGVTZXRzLmF1dGhvclN0eWxlKCkuaG9zdFBzZXVk
b0NsYXNzUnVsZXMoKS5pc0VtcHR5KCkpCisgICAgYXV0byYgYXV0aG9yU3R5bGUgPSBzaGFkb3dS
dWxlU2V0cy5hdXRob3JTdHlsZSgpOworICAgIGlmIChhdXRob3JTdHlsZS5ob3N0UHNldWRvQ2xh
c3NSdWxlcygpLmlzRW1wdHkoKSAmJiAhYXV0aG9yU3R5bGUuaGFzSG9zdFBzZXVkb0NsYXNzUnVs
ZXNNYXRjaGluZ0luU2hhZG93VHJlZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0
dXJuIHNoYWRvd1J1bGVTZXRzLmZlYXR1cmVzKCkuY2xhc3Nlc0luUnVsZXMuY29udGFpbnMoY2hh
bmdlZENsYXNzKTsKKworICAgIGlmICghc2hhZG93UnVsZVNldHMuZmVhdHVyZXMoKS5jbGFzc2Vz
SW5SdWxlcy5jb250YWlucyhjaGFuZ2VkQ2xhc3MpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoYXV0aG9yU3R5bGUuaGFzSG9zdFBzZXVkb0NsYXNzUnVsZXNNYXRjaGluZ0luU2hh
ZG93VHJlZSgpKQorICAgICAgICBtYXlBZmZlY3RTaGFkb3dUcmVlID0gdHJ1ZTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgbWF5QmVBZmZlY3RlZEJ5U2xvdHRlZFJ1bGVzKGNv
bnN0IFZlY3RvcjxTaGFkb3dSb290Kj4mIGFzc2lnbmVkU2hhZG93Um9vdHMsIEF0b21pY1N0cmlu
Z0ltcGwqIGNoYW5nZWRDbGFzcykKQEAgLTExMSw2ICsxMTksNyBAQCBzdGF0aWMgYm9vbCBtYXlC
ZUFmZmVjdGVkQnlTbG90dGVkUnVsZXMoCiB2b2lkIENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjpp
bnZhbGlkYXRlU3R5bGUoY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgb2xkQ2xhc3NlcywgY29uc3Qg
U3BhY2VTcGxpdFN0cmluZyYgbmV3Q2xhc3NlcykKIHsKICAgICBhdXRvIGNoYW5nZWRDbGFzc2Vz
ID0gY29tcHV0ZUNsYXNzQ2hhbmdlKG9sZENsYXNzZXMsIG5ld0NsYXNzZXMpOworICAgIGJvb2wg
bWF5QWZmZWN0U2hhZG93VHJlZSA9IGZhbHNlOwogCiAgICAgYXV0byYgcnVsZVNldHMgPSBtX2Vs
ZW1lbnQuc3R5bGVSZXNvbHZlcigpLnJ1bGVTZXRzKCk7CiAgICAgYXV0byogc2hhZG93Um9vdCA9
IG1fZWxlbWVudC5zaGFkb3dSb290KCk7CkBAIC0xMTksNyArMTI4LDcgQEAgdm9pZCBDbGFzc0No
YW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0ZQogICAgIENsYXNzQ2hhbmdlVmVjdG9yIGNoYW5n
ZWRDbGFzc2VzQWZmZWN0aW5nU3R5bGU7CiAgICAgZm9yIChhdXRvKiBjaGFuZ2VkQ2xhc3MgOiBj
aGFuZ2VkQ2xhc3NlcykgewogICAgICAgICBib29sIG1heUFmZmVjdFN0eWxlID0gcnVsZVNldHMu
ZmVhdHVyZXMoKS5jbGFzc2VzSW5SdWxlcy5jb250YWlucyhjaGFuZ2VkQ2xhc3MpCi0gICAgICAg
ICAgICB8fCBtYXlCZUFmZmVjdGVkQnlIb3N0UnVsZXMoc2hhZG93Um9vdCwgY2hhbmdlZENsYXNz
KQorICAgICAgICAgICAgfHwgbWF5QmVBZmZlY3RlZEJ5SG9zdFJ1bGVzKHNoYWRvd1Jvb3QsIGNo
YW5nZWRDbGFzcywgbWF5QWZmZWN0U2hhZG93VHJlZSkKICAgICAgICAgICAgIHx8IG1heUJlQWZm
ZWN0ZWRCeVNsb3R0ZWRSdWxlcyhhc3NpZ25lZFNoYWRvd1Jvb3RzLCBjaGFuZ2VkQ2xhc3MpOwog
ICAgICAgICBpZiAobWF5QWZmZWN0U3R5bGUpCiAgICAgICAgICAgICBjaGFuZ2VkQ2xhc3Nlc0Fm
ZmVjdGluZ1N0eWxlLmFwcGVuZChjaGFuZ2VkQ2xhc3MpOwpAQCAtMTI4LDcgKzEzNywxMSBAQCB2
b2lkIENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlCiAgICAgaWYgKGNoYW5nZWRD
bGFzc2VzQWZmZWN0aW5nU3R5bGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoc2hhZG93Um9vdCAmJiBydWxlU2V0cy5hdXRob3JTdHlsZSgpLmhhc1NoYWRvd1BzZXVkb0Vs
ZW1lbnRSdWxlcygpKSB7CisgICAgaWYgKHNoYWRvd1Jvb3QgJiYgcnVsZVNldHMuYXV0aG9yU3R5
bGUoKS5oYXNTaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMoKSkKKyAgICAgICAgbWF5QWZmZWN0U2hh
ZG93VHJlZSA9IHRydWU7CisKKyAgICBpZiAobWF5QWZmZWN0U2hhZG93VHJlZSkgeworICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRvIGZpbmUtZ3JhaW5lZCBpbnZhbGlkYXRpb24gZm9yIHNo
YWRvdyB0cmVlLgogICAgICAgICBtX2VsZW1lbnQuaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvSWRD
aGFuZ2VJbnZhbGlkYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0eWxl
L0lkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAkocmV2aXNpb24gMjE2NjI0KQorKysgU291cmNlL1dl
YkNvcmUvc3R5bGUvSWRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSwxNSArMzUsMjIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBTdHlsZSB7CiAK
LXN0YXRpYyBib29sIG1heUJlQWZmZWN0ZWRCeUhvc3RSdWxlcyhjb25zdCBFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGNoYW5nZWRJZCkKK3N0YXRpYyBib29sIG1heUJlQWZm
ZWN0ZWRCeUhvc3RSdWxlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJp
bmcmIGNoYW5nZWRJZCwgYm9vbCYgbWF5QWZmZWN0U2hhZG93VHJlZSkKIHsKICAgICBhdXRvKiBz
aGFkb3dSb290ID0gZWxlbWVudC5zaGFkb3dSb290KCk7CiAgICAgaWYgKCFzaGFkb3dSb290KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byYgc2hhZG93UnVsZVNldHMgPSBzaGFkb3dS
b290LT5zdHlsZVNjb3BlKCkucmVzb2x2ZXIoKS5ydWxlU2V0cygpOwotICAgIGlmIChzaGFkb3dS
dWxlU2V0cy5hdXRob3JTdHlsZSgpLmhvc3RQc2V1ZG9DbGFzc1J1bGVzKCkuaXNFbXB0eSgpKQor
ICAgIGF1dG8mIGF1dGhvclN0eWxlID0gc2hhZG93UnVsZVNldHMuYXV0aG9yU3R5bGUoKTsKKyAg
ICBpZiAoYXV0aG9yU3R5bGUuaG9zdFBzZXVkb0NsYXNzUnVsZXMoKS5pc0VtcHR5KCkgJiYgIWF1
dGhvclN0eWxlLmhhc0hvc3RQc2V1ZG9DbGFzc1J1bGVzTWF0Y2hpbmdJblNoYWRvd1RyZWUoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBzaGFkb3dSdWxlU2V0cy5mZWF0dXJl
cygpLmlkc0luUnVsZXMuY29udGFpbnMoY2hhbmdlZElkKTsKKworICAgIGlmICghc2hhZG93UnVs
ZVNldHMuZmVhdHVyZXMoKS5pZHNJblJ1bGVzLmNvbnRhaW5zKGNoYW5nZWRJZCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmIChhdXRob3JTdHlsZS5oYXNIb3N0UHNldWRvQ2xhc3NS
dWxlc01hdGNoaW5nSW5TaGFkb3dUcmVlKCkpCisgICAgICAgIG1heUFmZmVjdFNoYWRvd1RyZWUg
PSB0cnVlOworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBtYXlCZUFmZmVjdGVk
QnlTbG90dGVkUnVsZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5n
JiBjaGFuZ2VkSWQpCkBAIC02NCwxNSArNzEsMTkgQEAgdm9pZCBJZENoYW5nZUludmFsaWRhdGlv
bjo6aW52YWxpZGF0ZVN0eQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiBydWxlU2V0cyA9
IG1fZWxlbWVudC5zdHlsZVJlc29sdmVyKCkucnVsZVNldHMoKTsKKyAgICBib29sIG1heUFmZmVj
dFNoYWRvd1RyZWUgPSBmYWxzZTsKIAogICAgIGJvb2wgbWF5QWZmZWN0U3R5bGUgPSBydWxlU2V0
cy5mZWF0dXJlcygpLmlkc0luUnVsZXMuY29udGFpbnMoY2hhbmdlZElkKQotICAgICAgICB8fCBt
YXlCZUFmZmVjdGVkQnlIb3N0UnVsZXMobV9lbGVtZW50LCBjaGFuZ2VkSWQpCisgICAgICAgIHx8
IG1heUJlQWZmZWN0ZWRCeUhvc3RSdWxlcyhtX2VsZW1lbnQsIGNoYW5nZWRJZCwgbWF5QWZmZWN0
U2hhZG93VHJlZSkKICAgICAgICAgfHwgbWF5QmVBZmZlY3RlZEJ5U2xvdHRlZFJ1bGVzKG1fZWxl
bWVudCwgY2hhbmdlZElkKTsKIAogICAgIGlmICghbWF5QWZmZWN0U3R5bGUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChtX2VsZW1lbnQuc2hhZG93Um9vdCgpICYmIHJ1bGVTZXRzLmF1dGhv
clN0eWxlKCkuaGFzU2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKCkpIHsKKyAgICBpZiAobV9lbGVt
ZW50LnNoYWRvd1Jvb3QoKSAmJiBydWxlU2V0cy5hdXRob3JTdHlsZSgpLmhhc1NoYWRvd1BzZXVk
b0VsZW1lbnRSdWxlcygpKQorICAgICAgICBtYXlBZmZlY3RTaGFkb3dUcmVlID0gdHJ1ZTsKKwor
ICAgIGlmIChtYXlBZmZlY3RTaGFkb3dUcmVlKSB7CiAgICAgICAgIG1fZWxlbWVudC5pbnZhbGlk
YXRlU3R5bGVGb3JTdWJ0cmVlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMTY2MjQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNCBAQAorMjAxNy0wNS0xMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBs
ZS5jb20+CisKKyAgICAgICAgVXBkYXRpbmcgY2xhc3MgbmFtZSBvZiBhIHNoYWRvdyBob3N0IGRv
ZXMgbm90IHVwZGF0ZSB0aGUgc3R5bGUgYXBwbGllZCBieSBkZXNjZW5kYW50cyBvZiA6aG9zdCgp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA3NjIK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxNTcyNjY4PgorCisgICAgICAgIFJldmlld2VkIGJ5
IFJ5b3N1a2UgTml3YS4KKworICAgICAgICAqIGZhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1o
b3N0LWNsYXNzLWFuZC1hdHRyaWJ1dGUtbXV0YXRpb24tZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLWhvc3QtY2xhc3MtYW5kLWF0dHJp
YnV0ZS1tdXRhdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxNy0wNS0xMCAgTWF0dCBMZXdpcyAgPGps
ZXdpczNAYXBwbGUuY29tPgogCiAgICAgICAgIE1hcmtlZCB0cmFuc2l0aW9ucy9leHRyYS10cmFu
c2l0aW9uLmh0bWwgYXMgZmxha3kuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20v
Y3NzLXNjb3BpbmctaG9zdC1jbGFzcy1hbmQtYXR0cmlidXRlLW11dGF0aW9uLWV4cGVjdGVkLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5n
LWhvc3QtY2xhc3MtYW5kLWF0dHJpYnV0ZS1tdXRhdGlvbi1leHBlY3RlZC5odG1sCShub25leGlz
dGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1ob3N0LWNs
YXNzLWFuZC1hdHRyaWJ1dGUtbXV0YXRpb24tZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGJvZHk+CisgICAg
ICAgIDxwPlRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgYSBzaW5nbGUgMTAwcHggYnkgMTAwcHggZ3Jl
ZW4gYm94IGJlbG93LjwvcD4KKyAgICAgICAgPGRpdiBzdHlsZT0id2lkdGg6IDEwMHB4OyBoZWln
aHQ6IDEwMHB4OyBiYWNrZ3JvdW5kOiBncmVlbjsiPjwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1ob3N0LWNs
YXNzLWFuZC1hdHRyaWJ1dGUtbXV0YXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L3NoYWRvdy1kb20vY3NzLXNjb3BpbmctaG9zdC1jbGFzcy1hbmQtYXR0cmlidXRlLW11
dGF0aW9uLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9t
L2Nzcy1zY29waW5nLWhvc3QtY2xhc3MtYW5kLWF0dHJpYnV0ZS1tdXRhdGlvbi5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgYSBzaW5nbGUg
MTAwcHggYnkgMTAwcHggZ3JlZW4gYm94IGJlbG93LjwvcD4KKworPGRpdiBpZD1ob3N0MT48L2Rp
dj4KKzxkaXYgaWQ9aG9zdDIgY2xhc3M9InJlZCI+PC9kaXY+Cis8ZGl2IGlkPWhvc3QzPjwvZGl2
PgorPGRpdiBpZD1ob3N0ND48L2Rpdj4KKzxkaXYgaWQ9aG9zdDU+PC9kaXY+CisKKzx0ZW1wbGF0
ZSBpZD1zaGFkb3cxPgorPHN0eWxlPgorOmhvc3QoLmdyZWVuKSBkaXYgeworICAgIGJhY2tncm91
bmQtY29sb3I6IGdyZWVuOworfQorZGl2IHsKKyAgICB3aWR0aDogMTAwcHg7CisgICAgaGVpZ2h0
OiAyMHB4OworICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8bmF2Pjxk
aXY+PC9kaXY+PC9uYXY+Cis8L3RlbXBsYXRlPgorCis8dGVtcGxhdGUgaWQ9c2hhZG93Mj4KKzxz
dHlsZT4KKzpob3N0KC5yZWQpID4gZGl2IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Cit9
CitkaXYgeworICAgIHdpZHRoOiAxMDBweDsKKyAgICBoZWlnaHQ6IDIwcHg7CisgICAgYmFja2dy
b3VuZC1jb2xvcjogZ3JlZW47Cit9Cis8L3N0eWxlPgorPGRpdj48L2Rpdj4KKzwvdGVtcGxhdGU+
CisKKzx0ZW1wbGF0ZSBpZD1zaGFkb3czPgorPHN0eWxlPgorOmhvc3QoW2NvbG9yPWdyZWVuXSkg
ZGl2IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKK30KK2RpdiB7CisgICAgd2lkdGg6
IDEwMHB4OworICAgIGhlaWdodDogMjBweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Cit9
Cis8L3N0eWxlPgorPGRpdj48L2Rpdj4KKzwvdGVtcGxhdGU+CisKKzx0ZW1wbGF0ZSBpZD1zaGFk
b3c0PgorPHN0eWxlPgorOmhvc3QoI2dyZWVuKSBkaXYgeworICAgIGJhY2tncm91bmQtY29sb3I6
IGdyZWVuOworfQorZGl2IHsKKyAgICB3aWR0aDogMTAwcHg7CisgICAgaGVpZ2h0OiAyMHB4Owor
ICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8ZGl2PjwvZGl2PgorPC90
ZW1wbGF0ZT4KKworPHRlbXBsYXRlIGlkPXNoYWRvdzU+Cis8c3R5bGU+Cis6aG9zdCBkaXYuZ3Jl
ZW4geworICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworfQorZGl2IHsKKyAgICB3aWR0aDog
MTAwcHg7CisgICAgaGVpZ2h0OiAyMHB4OworICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKK30K
Kzwvc3R5bGU+Cis8ZGl2PjwvZGl2PgorPC90ZW1wbGF0ZT4KKworPGRpdiBpZD1sb2c+PC9kaXY+
CisKKzxzY3JpcHQ+CitmdW5jdGlvbiBjaGVja0NvbG9yKGhvc3QsIGV4cGVjdGVkKQoreworICAg
IGNvbnN0IGRpdiA9IGhvc3Quc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCJkaXYiKTsKKyAgICBj
b25zdCBjb2xvciA9IGdldENvbXB1dGVkU3R5bGUoZGl2KS5iYWNrZ3JvdW5kQ29sb3I7CisgICAg
Y29uc3Qgd2lkdGggPSBnZXRDb21wdXRlZFN0eWxlKGRpdikud2lkdGg7CisgICAgaWYgKGNvbG9y
ICE9IGV4cGVjdGVkKQorICAgICAgICBsb2cuaW5uZXJIVE1MICs9IGBGQUlMOiB1bmV4cGVjdGVk
IGJhY2tncm91bmQgY29sb3IgJHtjb2xvcn08YnI+YDsKKyAgICBpZiAod2lkdGggIT0gIjEwMHB4
IikKKyAgICAgICAgbG9nLmlubmVySFRNTCArPSBgRkFJTDogdW5leHBlY3RlZCB3aWR0aCAke3dp
ZHRofTxicj5gOworfQorCitmdW5jdGlvbiB0ZXN0KGhvc3RzZWxlY3Rvciwgc2hhZG93c2VsZWN0
b3IsIG11dGF0aW9uKSB7CisgICAgY29uc3QgaG9zdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
aG9zdHNlbGVjdG9yKTsKKyAgICBjb25zdCBzaGFkb3dUZW1wbGF0ZSA9IGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3Ioc2hhZG93c2VsZWN0b3IpOworCisgICAgaG9zdC5hdHRhY2hTaGFkb3coeyBtb2Rl
OiAnb3BlbicgfSk7CisgICAgaG9zdC5zaGFkb3dSb290LmFwcGVuZENoaWxkKHNoYWRvd1RlbXBs
YXRlLmNvbnRlbnQuY2xvbmVOb2RlKHRydWUpKTsKKworICAgIGNoZWNrQ29sb3IoaG9zdCwgInJn
YigyNTUsIDAsIDApIik7CisKKyAgICBtdXRhdGlvbihob3N0KTsKKworICAgIGNoZWNrQ29sb3Io
aG9zdCwgInJnYigwLCAxMjgsIDApIik7Cit9CisKK3Rlc3QoIiNob3N0MSIsICIjc2hhZG93MSIs
IChob3N0KSA9PiB7CisgICAgaG9zdC5jbGFzc0xpc3QuYWRkKCdncmVlbicpOworfSk7Cit0ZXN0
KCIjaG9zdDIiLCAiI3NoYWRvdzIiLCAoaG9zdCkgPT4geworICAgIGhvc3QuY2xhc3NMaXN0LnJl
bW92ZSgncmVkJyk7CisgfSk7Cit0ZXN0KCIjaG9zdDMiLCAiI3NoYWRvdzMiLCAoaG9zdCkgPT4g
eworICAgIGhvc3Quc2V0QXR0cmlidXRlKCdjb2xvcicsJ2dyZWVuJyk7Cit9KTsKK3Rlc3QoIiNo
b3N0NCIsICIjc2hhZG93NCIsIChob3N0KSA9PiB7CisgICBob3N0LnNldEF0dHJpYnV0ZSgnaWQn
LCdncmVlbicpOworfSk7Cit0ZXN0KCIjaG9zdDUiLCAiI3NoYWRvdzUiLCAoaG9zdCkgPT4gewor
ICAgaG9zdC5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ2RpdicpLmNsYXNzTGlzdC5hZGQoJ2dy
ZWVuJyk7Cit9KTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>