<?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>69266</bug_id>
          
          <creation_ts>2011-10-03 09:37:10 -0700</creation_ts>
          <short_desc>REGRESSION (r84225): Virtual function called from Node::parentNode()</short_desc>
          <delta_ts>2011-10-06 05:52:53 -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>DOM</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>
          <dependson>69406</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Dominic Cooney">dominicc</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>koivisto</cc>
    
    <cc>krit</cc>
    
    <cc>morrita</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>477032</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-10-03 09:37:10 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/84225 from bug 52788 added a virtual function call (isSVGShadowRoot()) to Node::parentNode():

 inline ContainerNode* Node::parentNode() const
 {
-    return getFlag(IsShadowRootFlag) ? 0 : parent();
+    return getFlag(IsShadowRootFlag) || isSVGShadowRoot() ? 0 : parent();
 }

This regresses everything that depends on walking up the tree, most crucially CSS selector matching.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477033</commentid>
    <comment_count>1</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-10-03 09:39:18 -0700</bug_when>
    <thetext>The fact that the call is carefully inlined should be a hint that you are not supposed to put a virtual call here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477290</commentid>
    <comment_count>2</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-10-03 15:31:37 -0700</bug_when>
    <thetext>OK. Does SVGShadowRoot warrant its own flag to avoid this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477293</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-10-03 15:37:26 -0700</bug_when>
    <thetext>Why does it need a separate test? It makes no logical sense that a &quot;SVG shadow root&quot; is not a &quot;shadow root&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477294</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-10-03 15:39:04 -0700</bug_when>
    <thetext>We are running out of bits in Node so preferably not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477320</commentid>
    <comment_count>5</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-10-03 16:14:25 -0700</bug_when>
    <thetext>Originally there was an attempt to merge ShadowRoot and SVGShadowRoot, but it turned out to be difficult—dglazkov should be able to provide context. I attempted to separate them which is what motivated this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477330</commentid>
    <comment_count>6</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-10-03 16:27:59 -0700</bug_when>
    <thetext>To add some commentary on what was difficult about merging ShadowRoot and SVGShadowRoot—IIRC:

- Rendering is different.
- SVGShadowRoot tries to behave like &lt;svg:g&gt;, which is not helpful when ShadowRoot appears in a HTML tree.
- Event dispatch is different.
- There’s a handful of special behavior for SVGShadowRoot, eg can’t have &lt;script&gt; descendants.
- There’s a handful of special behavior for ShadowRoot around editing.

CC’d Krit in case he is working on any refactoring around SVGShadowRoot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477356</commentid>
    <comment_count>7</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-10-03 17:10:44 -0700</bug_when>
    <thetext>I think that sums it up pretty nicely. One other approach we were discussing is to set the parent pointer to NULL, the host node holding an explicit ref on the (SVG) shadow root instead, and having a separate host element pointer on the (SVG) shadow root.

However, until we add ShadowRoot to SVG, this merely pushes the virtual function call from parentNode() to parentOrHostNode().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477391</commentid>
    <comment_count>8</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-10-03 18:15:33 -0700</bug_when>
    <thetext>Maybe right now we can move back to using the &apos;shadow root&apos; flag for ShadowRoot and SVGShadowRoot. This will make parentNode() fast. Some editing code may slow down, although maybe we can make isShadowRoot do

getFlag(ShadowRoot) &amp;&amp; !n-&gt;isSVGShadowRoot()

which is still fast in &lt;input&gt;, &lt;textarea&gt;, etc. when the result is false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478150</commentid>
    <comment_count>9</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-10-04 21:06:35 -0700</bug_when>
    <thetext>Another awkward difference between ShadowRoot and SVGShadowRoot is ShadowRoot sets and clears the flag when it goes into and out of the tree, but isSVGShadowRoot is constant.

A big hacky, but parentNode can be trivially sped up in the non-SVG case with something like:

return getFlag(IsShadowRootFlag) || (isSVGElement() &amp;&amp; isSVGShadowRoot()) ? 0 : parent();

which predicates the virtual call on another flag test.

For now I am going to look at using these pairs of flags:

IsShadowRootFlag, not IsSVGElementFlag =&gt; ShadowRoot
IsShadowRootFlag, IsSVGElementFlag =&gt; SVGShadowRoot

I will rename the schizoflag to IsShadowRootOrSVGShadowRootFlag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478380</commentid>
    <comment_count>10</comment_count>
      <attachid>109801</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-10-05 08:35:36 -0700</bug_when>
    <thetext>Created attachment 109801
Patch

Depends on patch on 69406.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479007</commentid>
    <comment_count>11</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-10-06 00:29:54 -0700</bug_when>
    <thetext>(In reply to comment #10)

Looks good! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479097</commentid>
    <comment_count>12</comment_count>
      <attachid>109801</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-06 05:52:48 -0700</bug_when>
    <thetext>Comment on attachment 109801
Patch

Clearing flags on attachment: 109801

Committed r96803: &lt;http://trac.webkit.org/changeset/96803&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479098</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-06 05:52:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109801</attachid>
            <date>2011-10-05 08:35:36 -0700</date>
            <delta_ts>2011-10-06 05:52:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69266-20111006003534.patch</filename>
            <type>text/plain</type>
            <size>14970</size>
            <attacher name="Dominic Cooney">dominicc</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY2NjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5ZDU4ZGI0OTYwZGEyYjhk
ZTQ0NjhmOGY4NzlmNjBmNjhiYjNhMDczLi4zZGVjYWExZTU0MjVkMjQ4ZWI2YTEyMjZjOTkzM2My
YzI0NDM0ZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMTAtMDUgIERvbWlu
aWMgQ29vbmV5ICAgPGRvbWluaWNjQGNocm9taXVtLm9yZz4KKworICAgICAgICBEb24ndCBtYWtl
IHZpcnR1YWwgY2FsbHMgaW4gTm9kZTo6cGFyZW50Tm9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MjY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhZG93Um9vdCBhbmQgU1ZHU2hhZG93Um9vdCBy
ZW1haW4gc2VtYW50aWNhbGx5IHNlcGFyYXRlIChlZworICAgICAgICBpc1NoYWRvd1Jvb3QvaXNT
VkdTaGFkb3dSb290KSBidXQgc2hhcmUgYSBmbGFnCisgICAgICAgIChJc1NoYWRvd1Jvb3RPclNW
R1NoYWRvd1Jvb3RGbGFnLCBoaXRoZXJ0byBJc1NoYWRvd1Jvb3RGbGFnIGp1c3QKKyAgICAgICAg
Zm9yIFNoYWRvd1Jvb3QpLiBJbiBjb21iaW5hdGlvbiB3aXRoIElzU1ZHRmxhZyBTaGFkb3dSb290
IChmYWxzZSkKKyAgICAgICAgY2FuIGJlIGRpc3Rpbmd1aXNoZWQgZnJvbSBTVkdTaGFkb3dSb290
ICh0cnVlKS4gVGhpcyBsZXRzIHVzIG1ha2UKKyAgICAgICAgaXNTVkdTaGFkb3dSb290IG5vbi12
aXJ0dWFsLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvciA9PiBObyBuZXcgdGVzdHMu
CisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzaGFk
b3dIb3N0KToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
aXNTVkdTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzU2hhZG93Um9vdCk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpwYXJlbnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OnBhcmVudE5vZGVHdWFyYW50ZWVkSG9zdEZyZWUpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvU1ZHU2hhZG93VHJlZUVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1No
YWRvd1RyZWVDb250YWluZXJFbGVtZW50OjpTVkdTaGFkb3dUcmVlQ29udGFpbmVyRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQ6OlNWR1NoYWRvd1Ry
ZWVSb290RWxlbWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdTaGFkb3dUcmVlRWxl
bWVudHMuaDoKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdFbGVtZW50OjpTVkdFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHRWxl
bWVudDo6U1ZHR0VsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdHRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxl
ZEVsZW1lbnQ6OlNWR1N0eWxlZEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6U1ZHU3R5bGVkTG9jYXRh
YmxlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OlNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQuaDoKKwogMjAxMS0xMC0wNSAgRG9taW5pYyBDb29uZXkgIDxkb21pbmljY0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgSXNTaGFkb3dSb290RmxhZyBzaG91bGQgbm90IGRlcGVuZCBvbiB3
aGV0aGVyIGEgU2hhZG93Um9vdCBpcyBhdHRhY2hlZCB0byBhIGhvc3QuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
aW5kZXggNmNiNTQ5Y2EzNWVlZDkxNTFmYWJjZDBjNzNlY2MwNTZiMTQ4YTNmYi4uNGU3OTc3YTJl
OTgzZmVjMDE5MDAzNmQyNjZmZTA1ZjJlNDA2ZjhlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNTYz
LDcgKzU2Myw3IEBAIHZvaWQgTm9kZTo6Y2xlYXJSYXJlRGF0YSgpCiAKIEVsZW1lbnQqIE5vZGU6
OnNoYWRvd0hvc3QoKSBjb25zdAogewotICAgIHJldHVybiB0b0VsZW1lbnQoZ2V0RmxhZyhJc1No
YWRvd1Jvb3RGbGFnKSA/IHBhcmVudCgpIDogMCk7CisgICAgcmV0dXJuIHRvRWxlbWVudChpc1No
YWRvd1Jvb3QoKSA/IHBhcmVudCgpIDogMCk7CiB9CiAKIHZvaWQgTm9kZTo6c2V0U2hhZG93SG9z
dChFbGVtZW50KiBob3N0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggZWM5YzFmYjkzNTliYWM5YjY2M2FlNWVj
MDY4MWUwY2I0YTNlNjQwNC4uZmRlYzgxOTkyYmQwYjFkODQxYTdiZDc4YTViYWUxYmFjZDkwZWNl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oCkBAIC0xOTgsNyArMTk4LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNI
VE1MRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNIVE1MRmxhZyk7IH0KIAogICAg
IGJvb2wgaXNTVkdFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc1NWR0ZsYWcpOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzU1ZHU2hhZG93Um9vdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBpc1NWR1NoYWRvd1Jvb3QoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElz
U2hhZG93Um9vdE9yU1ZHU2hhZG93Um9vdEZsYWcpICYmIGlzU1ZHRWxlbWVudCgpOyB9CiAjaWYg
RU5BQkxFKFNWRykKICAgICBTVkdVc2VFbGVtZW50KiBzdmdTaGFkb3dIb3N0KCkgY29uc3Q7CiAj
ZW5kaWYKQEAgLTIxMSw3ICsyMTEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NvbW1lbnROb2Rl
KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc0NvbW1lbnRGbGFnKTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBpc0NoYXJhY3RlckRhdGFOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBi
b29sIGlzRG9jdW1lbnROb2RlKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1NoYWRvd1Jvb3QoKSBjb25z
dCB7IHJldHVybiBnZXRGbGFnKElzU2hhZG93Um9vdEZsYWcpOyB9CisgICAgYm9vbCBpc1NoYWRv
d1Jvb3QoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzU2hhZG93Um9vdE9yU1ZHU2hhZG93Um9v
dEZsYWcpICYmICFpc1NWR0VsZW1lbnQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRlbnRF
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2
ZUxpZ2h0Q2hpbGRSZW5kZXJlcldpdGhTaGFkb3coKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
CkBAIC02MDEsNyArNjAxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgSW5BY3RpdmVDaGFpbkZsYWcg
PSAxIDw8IDE1LAogICAgICAgICBJbkRldGFjaEZsYWcgPSAxIDw8IDE2LAogICAgICAgICBIYXNS
YXJlRGF0YUZsYWcgPSAxIDw8IDE3LAotICAgICAgICBJc1NoYWRvd1Jvb3RGbGFnID0gMSA8PCAx
OCwKKyAgICAgICAgSXNTaGFkb3dSb290T3JTVkdTaGFkb3dSb290RmxhZyA9IDEgPDwgMTgsCiAK
ICAgICAgICAgLy8gVGhlc2UgYml0cyBhcmUgdXNlZCBieSBkZXJpdmVkIGNsYXNzZXMsIHB1bGxl
ZCB1cCBoZXJlIHNvIHRoZXkgY2FuCiAgICAgICAgIC8vIGJlIHN0b3JlZCBpbiB0aGUgc2FtZSBt
ZW1vcnkgd29yZCBhcyB0aGUgTm9kZSBiaXRzIGFib3ZlLgpAQCAtNjQxLDEwICs2NDEsMTEgQEAg
cHJvdGVjdGVkOgogICAgICAgICBDcmVhdGVDb21tZW50ID0gRGVmYXVsdE5vZGVGbGFncyB8IElz
Q29tbWVudEZsYWcsCiAgICAgICAgIENyZWF0ZUNvbnRhaW5lciA9IERlZmF1bHROb2RlRmxhZ3Mg
fCBJc0NvbnRhaW5lckZsYWcsIAogICAgICAgICBDcmVhdGVFbGVtZW50ID0gQ3JlYXRlQ29udGFp
bmVyIHwgSXNFbGVtZW50RmxhZywgCi0gICAgICAgIENyZWF0ZVNoYWRvd1Jvb3QgPSBDcmVhdGVD
b250YWluZXIgfCBJc1NoYWRvd1Jvb3RGbGFnLAorICAgICAgICBDcmVhdGVTaGFkb3dSb290ID0g
Q3JlYXRlQ29udGFpbmVyIHwgSXNTaGFkb3dSb290T3JTVkdTaGFkb3dSb290RmxhZywKICAgICAg
ICAgQ3JlYXRlU3R5bGVkRWxlbWVudCA9IENyZWF0ZUVsZW1lbnQgfCBJc1N0eWxlZEVsZW1lbnRG
bGFnLCAKICAgICAgICAgQ3JlYXRlSFRNTEVsZW1lbnQgPSBDcmVhdGVTdHlsZWRFbGVtZW50IHwg
SXNIVE1MRmxhZywgCiAgICAgICAgIENyZWF0ZVNWR0VsZW1lbnQgPSBDcmVhdGVTdHlsZWRFbGVt
ZW50IHwgSXNTVkdGbGFnLAorICAgICAgICBDcmVhdGVTVkdTaGFkb3dSb290ID0gQ3JlYXRlU1ZH
RWxlbWVudCB8IElzU2hhZG93Um9vdE9yU1ZHU2hhZG93Um9vdEZsYWcsCiAgICAgfTsKICAgICBO
b2RlKERvY3VtZW50KiwgQ29uc3RydWN0aW9uVHlwZSk7CiAKQEAgLTc0NCw3ICs3NDUsNyBAQCBp
bmxpbmUgdm9pZCBhZGRTdWJyZXNvdXJjZVVSTChMaXN0SGFzaFNldDxLVVJMPiYgdXJscywgY29u
c3QgS1VSTCYgdXJsKQogCiBpbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50Tm9kZSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdldEZsYWcoSXNTaGFkb3dSb290RmxhZykgfHwgaXNTVkdT
aGFkb3dSb290KCkgPyAwIDogcGFyZW50KCk7CisgICAgcmV0dXJuIGdldEZsYWcoSXNTaGFkb3dS
b290T3JTVkdTaGFkb3dSb290RmxhZykgPyAwIDogcGFyZW50KCk7CiB9CiAKIGlubGluZSBDb250
YWluZXJOb2RlKiBOb2RlOjpwYXJlbnRPckhvc3ROb2RlKCkgY29uc3QKQEAgLTc1NCw3ICs3NTUs
NyBAQCBpbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50T3JIb3N0Tm9kZSgpIGNvbnN0
CiAKIGlubGluZSBDb250YWluZXJOb2RlKiBOb2RlOjpwYXJlbnROb2RlR3VhcmFudGVlZEhvc3RG
cmVlKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoIWdldEZsYWcoSXNTaGFkb3dSb290RmxhZykgJiYg
IWlzU1ZHU2hhZG93Um9vdCgpKTsKKyAgICBBU1NFUlQoIWdldEZsYWcoSXNTaGFkb3dSb290T3JT
VkdTaGFkb3dSb290RmxhZykpOwogICAgIHJldHVybiBwYXJlbnRPckhvc3ROb2RlKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHU2hhZG93VHJlZUVs
ZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHU2hhZG93VHJlZUVs
ZW1lbnRzLmNwcAppbmRleCA2OTMzZThjYWE5MjYwNTk4NzE3ZmJjOWEwN2M1YTQyMjAwZjQ4YmJh
Li5iMjlmZmU0NGU2ZDkzYmYyN2JjMWI5OGE4MDA0OGUxNWZlYjgyNzEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1NoYWRvd1RyZWVFbGVtZW50cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdTaGFkb3dUcmVlRWxlbWVudHMuY3Bw
CkBAIC0zMyw4ICszMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gU1ZHU2hhZG93VHJl
ZUNvbnRhaW5lckVsZW1lbnQKIAotU1ZHU2hhZG93VHJlZUNvbnRhaW5lckVsZW1lbnQ6OlNWR1No
YWRvd1RyZWVDb250YWluZXJFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IFNWR0dF
bGVtZW50KFNWR05hbWVzOjpnVGFnLCBkb2N1bWVudCkKK1NWR1NoYWRvd1RyZWVDb250YWluZXJF
bGVtZW50OjpTVkdTaGFkb3dUcmVlQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQs
IENvbnN0cnVjdGlvblR5cGUgY29uc3RydWN0aW9uVHlwZSkKKyAgICA6IFNWR0dFbGVtZW50KFNW
R05hbWVzOjpnVGFnLCBkb2N1bWVudCwgY29uc3RydWN0aW9uVHlwZSkKICAgICAsIG1fY29udGFp
bmVyT2Zmc2V0Q2hhbmdlZChmYWxzZSkKIHsKIH0KQEAgLTYzLDcgKzYzLDcgQEAgUGFzc1JlZlB0
cjxFbGVtZW50PiBTVkdTaGFkb3dUcmVlQ29udGFpbmVyRWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0
aG91dEF0dHJpYnV0ZXMKIC8vIFNWR1NoYWRvd1RyZWVSb290RWxlbWVudAogCiBpbmxpbmUgU1ZH
U2hhZG93VHJlZVJvb3RFbGVtZW50OjpTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQoRG9jdW1lbnQq
IGRvY3VtZW50LCBTVkdVc2VFbGVtZW50KiBob3N0KQotICAgIDogU1ZHU2hhZG93VHJlZUNvbnRh
aW5lckVsZW1lbnQoZG9jdW1lbnQpCisgICAgOiBTVkdTaGFkb3dUcmVlQ29udGFpbmVyRWxlbWVu
dChkb2N1bWVudCwgQ3JlYXRlU1ZHU2hhZG93Um9vdCkKIHsKICAgICBzZXRQYXJlbnQoaG9zdCk7
CiAgICAgc2V0SW5Eb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdTaGFkb3dUcmVlRWxlbWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHU2hhZG93VHJlZUVsZW1lbnRzLmgKaW5kZXggYTZhZTZiODQwOGVhODY3NjIxODUy
Njc5OTIwZWRhODU1ZDQzNjYxNy4uNTA1NzE1MGM4MDk0MDZmYTk4MzQwYTUxMGQzYTA0ZDZkOGFm
ZjIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdTaGFkb3dU
cmVlRWxlbWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1NoYWRv
d1RyZWVFbGVtZW50cy5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8UmVuZGVyU3R5bGU+IGN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoKTsKIAogcHJvdGVj
dGVkOgotICAgIFNWR1NoYWRvd1RyZWVDb250YWluZXJFbGVtZW50KERvY3VtZW50Kik7CisgICAg
U1ZHU2hhZG93VHJlZUNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBl
ID0gQ3JlYXRlU1ZHRWxlbWVudCk7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKTsKQEAg
LTYwLDggKzYwLDYgQEAgcHVibGljOgogICAgIHZvaWQgYXR0YWNoRWxlbWVudChQYXNzUmVmUHRy
PFJlbmRlclN0eWxlPiwgUmVuZGVyQXJlbmEqKTsKICAgICB2b2lkIGNsZWFyU1ZHU2hhZG93SG9z
dCgpOwogCi0gICAgdmlydHVhbCBib29sIGlzU1ZHU2hhZG93Um9vdCgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KLQogcHJpdmF0ZToKICAgICBTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQoRG9jdW1l
bnQqLCBTVkdVc2VFbGVtZW50KiBob3N0KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAK
aW5kZXggMzNhOGViODBkNjQ3YmVlZjI0NDhkNDAxNjFhZDU2NWQxOThiMDVhZS4uYzUzNDFiZGQ4
MTlmYmRmZmNlMGQwNmJjN2EzMmJmMWY0ZTllODhjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmNwcApAQCAtNTUsOCArNTUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAKLVNWR0VsZW1lbnQ6OlNWR0VsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogU3R5bGVkRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCwgQ3JlYXRlU1ZHRWxlbWVudCkKK1NWR0VsZW1lbnQ6OlNWR0VsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBDb25z
dHJ1Y3Rpb25UeXBlIGNvbnN0cnVjdGlvblR5cGUpCisgICAgOiBTdHlsZWRFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50LCBjb25zdHJ1Y3Rpb25UeXBlKQogewogICAgIHNldEhhc0N1c3RvbVN0eWxl
Rm9yUmVuZGVyZXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCmluZGV4IGY2Y2RkM2M4OTJl
MjExZTFiMzI5YmUxMjJmYjAwNTgyYWVkOTY5ZGQuLjNmYzQ4MmI0ZmUwNjQ0NTY2YmMyM2FmNTEz
Zjk2ZWY2ZGJmMTQ0YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApAQCAtMTAyLDcgKzEwMiw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAmIGxvY2Fs
QXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgU1ZHRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKyAgICBTVkdFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIENvbnN0cnVjdGlvblR5cGUgPSBDcmVhdGVTVkdFbGVt
ZW50KTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAKaW5kZXggNmNjN2Q4M2ZlOTYyYWQ4Y2U3
NTEwOTg2MzMxOGJkYjA5MTE2MmYxMS4uNGIyMzU5NDRjNjJkZGY4MzU2NDFkZGM3ODhlNmVjY2Yz
NDAxOWE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCkBAIC00MCw4ICs0MCw4IEBA
IEJFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHR0VsZW1lbnQpCiAgICAgUkVH
SVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCiBFTkRfUkVHSVNURVJf
QU5JTUFURURfUFJPUEVSVElFUwogCi1TVkdHRWxlbWVudDo6U1ZHR0VsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCitTVkdHRWxlbWVudDo6U1ZH
R0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
LCBDb25zdHJ1Y3Rpb25UeXBlIGNvbnN0cnVjdGlvblR5cGUpCisgICAgOiBTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgY29uc3RydWN0aW9uVHlwZSkKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6Z1RhZykpOwogICAgIHJlZ2lzdGVyQW5p
bWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHR0VsZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmgK
aW5kZXggMjFjMDRkYjE4OWI2MGEyYTJmMmFhYmE3ZTAxNTE2OWQ0YWZhMWQwZS4uNTUxYWMwOTg0
NDk5NjYxYjYxNThlNjE0ZTkxYzEzNTVjZjcxNWNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50
LmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1NoYWRvd1Ry
ZWVDb250YWluZXJFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJvdGVjdGVk
OgotICAgIFNWR0dFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworICAg
IFNWR0dFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIENvbnN0cnVjdGlv
blR5cGUgPSBDcmVhdGVTVkdFbGVtZW50KTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAppbmRleCA5ODgwYjE4MTA5ZWZmNDEzNzQ2ODgxMWVi
ZDQ1YWM1MDU3ODcwZWE4Li4xNDgwMzQwMWM4N2E0MjIwZTYxNzEwOTlmZDE2YzQwODcwMDMwYTE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCkBAIC02NCw4ICs2NCw4
IEBAIHZvaWQgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShIYXNoTWFwPEF0b21pY1N0cmluZ0lt
cGwqLCBpbnQ+KiBwcm9wZXJ0eU5hbWVUb0lkCiAgICAgcHJvcGVydHlOYW1lVG9JZE1hcC0+c2V0
KGF0dHJOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSwgcHJvcGVydHlJZCk7CiB9CiAKLVNWR1N0eWxl
ZEVsZW1lbnQ6OlNWR1N0eWxlZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkK
K1NWR1N0eWxlZEVsZW1lbnQ6OlNWR1N0eWxlZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIGNvbnN0cnVjdGlv
blR5cGUpCisgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBjb25zdHJ1Y3Rpb25U
eXBlKQogewogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHU3R5bGVkRWxlbWVu
dCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgKaW5kZXggOTkxOGEwOGMw
NzJmMTQ5MjMyMTJkNDNkOWFlYThjYTQxNTIzMmUxMi4uNzU3NzE1MThkOTZhYjczZjA0ZTJkZGVm
ZWNmNWJjY2UyOTNiMGUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxl
ZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCkBA
IC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNQZW5kaW5nUmVz
b3VyY2VIYW5kbGluZygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogcHJvdGVjdGVkOiAKLSAg
ICBTVkdTdHlsZWRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworICAg
IFNWR1N0eWxlZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgQ29uc3Ry
dWN0aW9uVHlwZSA9IENyZWF0ZVNWR0VsZW1lbnQpOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJl
cklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAKICAgICB2aXJ0dWFsIGJv
b2wgbWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiwgTWFwcGVkQXR0cmlidXRlRW50cnkm
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRMb2NhdGFi
bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVt
ZW50LmNwcAppbmRleCA5MTUzODQyMGVhM2NjZDBmYjE2M2NjNmNkYzEwYjhjN2YzYWQxYTdiLi4x
Y2Q0NmI2MGQ4ZTY4NmNiZWJlNDIyMWUyNDg5MjAwNTdkOThiZmJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQuY3BwCkBAIC0yOSw4ICsyOSw4
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6
U1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KQorU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6U1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0
cnVjdGlvblR5cGUgY29uc3RydWN0aW9uVHlwZSkKKyAgICA6IFNWR1N0eWxlZEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQsIGNvbnN0cnVjdGlvblR5cGUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5oCmluZGV4IDVlZWJkMDUzMjRhZjQ2
MTFiNzU3ZTQzMjkxYThmNTRhNWM2M2QyNzguLjQ2MTI0M2MxNzRiNDNiZGM3NzMyN2ZhMzRhNTll
YTdkOTYzNjAwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRMb2Nh
dGFibGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZExvY2F0YWJs
ZUVsZW1lbnQuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBBZmZpbmVU
cmFuc2Zvcm0gbG9jYWxDb29yZGluYXRlU3BhY2VUcmFuc2Zvcm0oU1ZHTG9jYXRhYmxlOjpDVE1T
Y29wZSBtb2RlKSBjb25zdCB7IHJldHVybiBTVkdMb2NhdGFibGU6OmxvY2FsQ29vcmRpbmF0ZVNw
YWNlVHJhbnNmb3JtKG1vZGUpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBTVkdTdHlsZWRMb2NhdGFi
bGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworICAgIFNWR1N0eWxl
ZExvY2F0YWJsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgQ29uc3Ry
dWN0aW9uVHlwZSA9IENyZWF0ZVNWR0VsZW1lbnQpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwg
Ym9vbCBpc1N0eWxlZExvY2F0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwCmlu
ZGV4IDRiYmQ2MmMwNmFiOGYyMDViMDljZWRiOWVjNWQwNzc3ZTJiYTA2ZDMuLmUxOTdlYTU5OGMy
ZGRiYjM1MjFiYWJkYTdmMDk3NGQzNTc3OGEwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcApAQCAtNDAsOCArNDAsOCBA
QCBCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50KQogICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0
eWxlZExvY2F0YWJsZUVsZW1lbnQpCiBFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwog
Ci1TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQot
ICAgIDogU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKK1NWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVj
dGlvblR5cGUgY29uc3RydWN0aW9uVHlwZSkKKyAgICA6IFNWR1N0eWxlZExvY2F0YWJsZUVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQsIGNvbnN0cnVjdGlvblR5cGUpCiB7CiAgICAgcmVnaXN0ZXJB
bmltYXRlZFByb3BlcnRpZXNGb3JTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQu
aAppbmRleCAyMjdkMjViNDRlNWE1MjIxYmZmZjhmYWViMjJhNGZmNGZkNTVhY2I1Li45ZjAyYzBl
ZGVmNjM2YjU2ZjVhMDNiNjAzY2QwOTgyYWFjMDM2ODIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaApAQCAtNTMsNyArNTMsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogcHJvdGVjdGVkOgotICAgIFNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworICAgIFNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCosIENvbnN0cnVjdGlvblR5cGUgPSBDcmVhdGVTVkdFbGVtZW50KTsKIAogICAgIGJvb2wgaXNT
dXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>