<?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>154082</bug_id>
          
          <creation_ts>2016-02-10 12:48:16 -0800</creation_ts>
          <short_desc>Web Inspector: In the styles sidebar, Option-clicking on --css-variable should jump to its definition</short_desc>
          <delta_ts>2016-02-17 22:37:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          <dependson>154215</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikita Vasilyev">nvasilyev</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>hi</cc>
    
    <cc>hyatt</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1163568</commentid>
    <comment_count>0</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2016-02-10 12:48:16 -0800</bug_when>
    <thetext>In &quot;Styles — Rules&quot;, Option-clicking on a property name/value isn&apos;t
a very common action. CSS rule&apos;s source links (on the right
to CSS selectors) allow navigating to the corresponding line
in CSS resource already.

With CSS variables gaining popularity, I suggest repurposing Option-Click.
In the following example,

    .title {
      color: var(--theme-text-color)
    }

Option-clicking on &quot;--theme-text-color&quot; would jump to the variable&apos;s
definition, e.g.:

    body {
      --theme-text-color: black
    }

(via Bug 149521)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163569</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-02-10 12:48:41 -0800</bug_when>
    <thetext>&lt;rdar://problem/24593361&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164504</commentid>
    <comment_count>2</comment_count>
      <attachid>271274</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2016-02-13 00:12:05 -0800</bug_when>
    <thetext>Created attachment 271274
[WIP] Patch

So I was playing around with this for a bit, and I ran into something of a roadblock.  It looks like CSSStyleDeclarations are only created for each instance of DOMNodeStyles, which means that CSS variables declared on a different tag won&apos;t have a style associated with them until the node is selected on which they are applied (look at UserInterface/Views/Variables.css for an example).  I only spent a little time on this, so I may be missing an extremely obvious case for how to work around this, but what I have written so far works if the node which matches the rule containing the CSS variable is selected (thus creating the DOMNodeStyles) before trying to Option-click a CSS variable.  If anyone else wants to take over, feel free as I am not sure how much time I have in the next few weeks (horray midterms &gt;.&gt; )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164519</commentid>
    <comment_count>3</comment_count>
      <attachid>271274</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-02-13 01:52:11 -0800</bug_when>
    <thetext>Comment on attachment 271274
[WIP] Patch

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

&gt; Source/WebInspectorUI/ChangeLog:3
&gt; +        Web Inspector: In the styles sidebar, Option-clicking on --css-variable should jump to its definition

This will require some thought.

Technically, CSS variables, being properties, have an overriding cascade. For example:

    &lt;style&gt;
    :root { --my-color: blue; }
    div { --my-color: red; }
    .foo { color: var(--my-color); }
    &lt;/style&gt;
    &lt;div class=&quot;foo&quot;&gt;Red&lt;/div&gt;
    &lt;p class=&quot;foo&quot;&gt;Blue&lt;/p&gt;

However, I think in practice most variables will be global.

This patch doesn&apos;t handle re-definitions properly. Perhaps that isn&apos;t required for a first take on the feature though. But ideally we would know and jump to precisely the appropriate --var declaration that applies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164529</commentid>
    <comment_count>4</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-02-13 05:31:45 -0800</bug_when>
    <thetext>I think we need a backend change to make this easy and correct.

CSS variables should show up as a matched rule in the sidebar (at least inherited rules), but they don&apos;t. They do show up in the computed styles list, if you &quot;show all&quot;. If they where in the matched rules cascade, this problem would be as simple as jump to property was for the computed styles goto arrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164530</commentid>
    <comment_count>5</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-02-13 05:33:33 -0800</bug_when>
    <thetext>FWIW, Chrome just made them show up in the rules sidebar. https://twitter.com/ChromeDevTools/status/696742554402852865</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164537</commentid>
    <comment_count>6</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-02-13 09:55:20 -0800</bug_when>
    <thetext>That actually does not require a backend change. We control what counts as inherited on the front-end! I filed bug 154215.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164553</commentid>
    <comment_count>7</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-02-13 10:45:07 -0800</bug_when>
    <thetext>With bug 154215 you should be able to jump to the right variable, just like computed style jumps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164616</commentid>
    <comment_count>8</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2016-02-14 03:00:12 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; With bug 154215 you should be able to jump to the right variable, just like
&gt; computed style jumps.

This was a very smart way of tackling this issue.  Awesome catch! XD</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164960</commentid>
    <comment_count>9</comment_count>
      <attachid>271389</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2016-02-15 16:28:17 -0800</bug_when>
    <thetext>Created attachment 271389
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164996</commentid>
    <comment_count>10</comment_count>
      <attachid>271389</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-02-15 18:28:45 -0800</bug_when>
    <thetext>Comment on attachment 271389
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:1670
&gt; +        // Special case option clicking CSS variables.
&gt; +        if (token &amp;&amp; /\bvariable-2\b/.test(token.type)) {
&gt; +            for (let rule of this._style.nodeStyles.matchedRules) {
&gt; +                for (let property of rule.style.properties) {
&gt; +                    if (property.name === token.string &amp;&amp; showSourceCode(rule.sourceCodeLocation, property.styleSheetTextRange))
&gt; +                        return;
&gt; +                }
&gt; +            }
&gt; +            for (let inherited of this._style.nodeStyles.inheritedRules) {
&gt; +                for (let rule of inherited.matchedRules) {
&gt; +                    for (let property of rule.style.properties) {
&gt; +                        if (property.name === token.string &amp;&amp; showSourceCode(rule.sourceCodeLocation, property.styleSheetTextRange))
&gt; +                            return;
&gt; +                    }
&gt; +                }
&gt;              }
&gt;          }

You should not need to do this iteration. You should be able to use DOMNodeStyle&apos;s effectivePropertyForName. That will give you the property that is active.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165186</commentid>
    <comment_count>11</comment_count>
      <attachid>271440</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2016-02-16 11:03:22 -0800</bug_when>
    <thetext>Created attachment 271440
Patch

(In reply to comment #10)
&gt; Comment on attachment 271389 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=271389&amp;action=review
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:1670
&gt; &gt; +        // Special case option clicking CSS variables.
&gt; &gt; +        if (token &amp;&amp; /\bvariable-2\b/.test(token.type)) {
&gt; &gt; +            for (let rule of this._style.nodeStyles.matchedRules) {
&gt; &gt; +                for (let property of rule.style.properties) {
&gt; &gt; +                    if (property.name === token.string &amp;&amp; showSourceCode(rule.sourceCodeLocation, property.styleSheetTextRange))
&gt; &gt; +                        return;
&gt; &gt; +                }
&gt; &gt; +            }
&gt; &gt; +            for (let inherited of this._style.nodeStyles.inheritedRules) {
&gt; &gt; +                for (let rule of inherited.matchedRules) {
&gt; &gt; +                    for (let property of rule.style.properties) {
&gt; &gt; +                        if (property.name === token.string &amp;&amp; showSourceCode(rule.sourceCodeLocation, property.styleSheetTextRange))
&gt; &gt; +                            return;
&gt; &gt; +                    }
&gt; &gt; +                }
&gt; &gt;              }
&gt; &gt;          }
&gt; 
&gt; You should not need to do this iteration. You should be able to use
&gt; DOMNodeStyle&apos;s effectivePropertyForName. That will give you the property
&gt; that is active.

Totally forgot that that function existed.  Thanks for the heads up!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165861</commentid>
    <comment_count>12</comment_count>
      <attachid>271440</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-02-17 19:29:46 -0800</bug_when>
    <thetext>Comment on attachment 271440
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:1645
&gt; +        function showSourceCode(location, range)

It is weird that you take a SourceCodeLocation but only use it for the sourceCode. You should change location to sourceCode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165919</commentid>
    <comment_count>13</comment_count>
      <attachid>271631</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2016-02-17 22:12:08 -0800</bug_when>
    <thetext>Created attachment 271631
Patch

(In reply to comment #12)
&gt; Comment on attachment 271440 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=271440&amp;action=review
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:1645
&gt; &gt; +        function showSourceCode(location, range)
&gt; 
&gt; It is weird that you take a SourceCodeLocation but only use it for the
&gt; sourceCode. You should change location to sourceCode.

I had only done that because I knew that both of the calls of showSourceCode (which I renamed to showRangeInSourceCode) had a &quot;.sourceCode&quot; member.  This is also somewhat of a mixing of styleguides with one of my current classes, so it&apos;s my bad.  Good catch though!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165939</commentid>
    <comment_count>14</comment_count>
      <attachid>271631</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-17 22:37:44 -0800</bug_when>
    <thetext>Comment on attachment 271631
Patch

Clearing flags on attachment: 271631

Committed r196746: &lt;http://trac.webkit.org/changeset/196746&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165940</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-17 22:37:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271274</attachid>
            <date>2016-02-13 00:12:05 -0800</date>
            <delta_ts>2016-02-15 16:28:10 -0800</delta_ts>
            <desc>[WIP] Patch</desc>
            <filename>154082.diff</filename>
            <type>text/plain</type>
            <size>6019</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDM1NDVjOWQuLjc4NjQwMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE2LTAyLTEzICBEZXZpbiBSb3Vzc28g
IDxkY3JvdXNzbyt3ZWJraXRAZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IElu
IHRoZSBzdHlsZXMgc2lkZWJhciwgT3B0aW9uLWNsaWNraW5nIG9uIC0tY3NzLXZhcmlhYmxlIHNo
b3VsZCBqdW1wIHRvIGl0cyBkZWZpbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQwODIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0NTkz
MzYxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTUHJvcGVydHkuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ1NTUHJvcGVydHkucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgIElmIHRoZSBDU1NQcm9w
ZXJ0eSdzIG5hbWUgbWF0Y2hlcyB0aGUgQ1NTIHZhcmlhYmxlIHBhdHRlcm4gYWRkIGl0IHRvIHRo
ZSBNYXAuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eS5EZWNsYXJlZENTU1Zh
cmlhYmxlcyk6CisgICAgICAgIEFkZGVkIGEgc3RhdGljIE1hcCB0aGF0IGxpbmtzIENTUyB2YXJp
YWJsZSBuYW1lcyB0byB0aGVpciBDU1NQcm9wZXJ0eSBvYmplY3QuCisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLnByb3RvdHlwZS50
b2tlblRyYWNraW5nQ29udHJvbGxlckhpZ2hsaWdodGVkUmFuZ2VXYXNDbGlja2VkLnNob3dTb3Vy
Y2VDb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVk
aXRvci5wcm90b3R5cGUudG9rZW5UcmFja2luZ0NvbnRyb2xsZXJIaWdobGlnaHRlZFJhbmdlV2Fz
Q2xpY2tlZCk6CisgICAgICAgIE5vdyB0ZXN0cyB0byBzZWUgaWYgdGhlIGhpZ2hsaWdodGVkIHRv
a2VuIHdhcyBhIENTUyB2YXJpYWJsZSBhbmQgaWYgc28sIGF0dGVtcHRzCisgICAgICAgIHRvIHNo
b3cgdGhlIGRlY2xhcmF0aW9uIG9mIHRoZSBDU1MgdmFyaWFibGUgaW5zdGVhZCBvZiB0aGUgbG9j
YXRpb24gd2hlcmUgaXQgaXMKKyAgICAgICAgdXNlZC4KKwogMjAxNi0wMi0xMiAgSm9zZXBoIFBl
Y29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJl
bmFtZSBkb21BZ2VudCB0byBkb21UcmVlTWFuYWdlciBpbiBET01Ob2RlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTUHJvcGVydHkuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTUHJvcGVydHku
anMKaW5kZXggYzhmNmE2NC4uZTIwMzFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1Byb3BlcnR5LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NQcm9wZXJ0eS5qcwpAQCAtMTAyLDYg
KzEwMiw5IEBAIFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eSA9IGNsYXNzIENTU1Byb3BlcnR5IGV4
dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICBkZWxldGUgdGhpcy5fY2Fub25pY2Fs
TmFtZTsKICAgICAgICAgZGVsZXRlIHRoaXMuX2hhc090aGVyVmVuZG9yTmFtZU9yS2V5d29yZDsK
IAorICAgICAgICBpZiAoIXRoaXMuX2Fub255bW91cyAmJiAvXi0tW1x3LV0rJC8udGVzdCh0aGlz
Ll9uYW1lKSkKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eS5EZWNsYXJlZENT
U1ZhcmlhYmxlcy5zZXQodGhpcy5fbmFtZSwgdGhpcyk7CisKICAgICAgICAgaWYgKGNoYW5nZWQp
CiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
Q1NTUHJvcGVydHkuRXZlbnQuQ2hhbmdlZCk7CiAgICAgfQpAQCAtMjgxLDMgKzI4NCw1IEBAIFdl
Ykluc3BlY3Rvci5DU1NQcm9wZXJ0eS5FdmVudCA9IHsKICAgICBDaGFuZ2VkOiAiY3NzLXByb3Bl
cnR5LWNoYW5nZWQiLAogICAgIE92ZXJyaWRkZW5TdGF0dXNDaGFuZ2VkOiAiY3NzLXByb3BlcnR5
LW92ZXJyaWRkZW4tc3RhdHVzLWNoYW5nZWQiCiB9OworCitXZWJJbnNwZWN0b3IuQ1NTUHJvcGVy
dHkuRGVjbGFyZWRDU1NWYXJpYWJsZXMgPSBuZXcgTWFwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4
dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NT
U1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzCmluZGV4IGZlYTMxODEuLmY5YWQ1MWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0
eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzCkBAIC0x
NjIyLDM0ICsxNjIyLDUxIEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVk
aXRvciA9IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yCiAKICAgICB0b2tlblRy
YWNraW5nQ29udHJvbGxlckhpZ2hsaWdodGVkUmFuZ2VXYXNDbGlja2VkKHRva2VuVHJhY2tpbmdD
b250cm9sbGVyKQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fc3R5bGUub3du
ZXJSdWxlLnNvdXJjZUNvZGVMb2NhdGlvbik7Ci0gICAgICAgIGlmICghdGhpcy5fc3R5bGUub3du
ZXJSdWxlLnNvdXJjZUNvZGVMb2NhdGlvbikKKyAgICAgICAgbGV0IHNvdXJjZUNvZGVMb2NhdGlv
biA9IHRoaXMuX3N0eWxlLm93bmVyUnVsZS5zb3VyY2VDb2RlTG9jYXRpb247CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHNvdXJjZUNvZGVMb2NhdGlvbik7CisgICAgICAgIGlmICghc291cmNlQ29k
ZUxvY2F0aW9uKQogICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIGxldCBjYW5kaWRhdGUg
PSB0b2tlblRyYWNraW5nQ29udHJvbGxlci5jYW5kaWRhdGU7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGNhbmRpZGF0ZSk7CisgICAgICAgIGlmICghY2FuZGlkYXRlKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGxldCB0b2tlbiA9IGNhbmRpZGF0ZS5ob3ZlcmVkVG9rZW47CisKICAg
ICAgICAgLy8gU3BlY2lhbCBjYXNlIGNvbW1hbmQgY2xpY2tpbmcgdXJsKC4uLikgbGlua3MuCi0g
ICAgICAgIHZhciB0b2tlbiA9IHRoaXMuX3Rva2VuVHJhY2tpbmdDb250cm9sbGVyLmNhbmRpZGF0
ZS5ob3ZlcmVkVG9rZW47Ci0gICAgICAgIGlmICgvXGJsaW5rXGIvLnRlc3QodG9rZW4udHlwZSkp
IHsKLSAgICAgICAgICAgIHZhciB1cmwgPSB0b2tlbi5zdHJpbmc7Ci0gICAgICAgICAgICB2YXIg
YmFzZVVSTCA9IHRoaXMuX3N0eWxlLm93bmVyUnVsZS5zb3VyY2VDb2RlTG9jYXRpb24uc291cmNl
Q29kZS51cmw7CisgICAgICAgIGlmICh0b2tlbiAmJiAvXGJsaW5rXGIvLnRlc3QodG9rZW4udHlw
ZSkpIHsKKyAgICAgICAgICAgIGxldCB1cmwgPSB0b2tlbi5zdHJpbmc7CisgICAgICAgICAgICBs
ZXQgYmFzZVVSTCA9IHNvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlLnVybDsKICAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5vcGVuVVJMKGFic29sdXRlVVJMKHVybCwgYmFzZVVSTCkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAgICAgICAgZnVuY3Rpb24gc2hvd1NvdXJj
ZUNvZGUobG9jYXRpb24sIHJhbmdlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWxvY2F0
aW9uIHx8ICFyYW5nZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5zaG93U291cmNlQ29kZUxvY2F0aW9uKGxvY2F0aW9uLnNvdXJjZUNv
ZGUuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uKHJhbmdlLnN0YXJ0TGluZSwgcmFuZ2Uuc3RhcnRD
b2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gU3BlY2lhbCBjYXNlIG9wdGlvbiBjbGlja2luZyBDU1MgdmFyaWFibGVzLgorICAgICAgICBp
ZiAodG9rZW4gJiYgL1xidmFyaWFibGUtMlxiLy50ZXN0KHRva2VuLnR5cGUpKSB7CisgICAgICAg
ICAgICBsZXQgcHJvcGVydHkgPSBXZWJJbnNwZWN0b3IuQ1NTUHJvcGVydHkuRGVjbGFyZWRDU1NW
YXJpYWJsZXMuZ2V0KHRva2VuLnN0cmluZyk7CisgICAgICAgICAgICBsZXQgb3duZXJSdWxlID0g
cHJvcGVydHkgJiYgcHJvcGVydHkub3duZXJTdHlsZSAmJiBwcm9wZXJ0eS5vd25lclN0eWxlLm93
bmVyUnVsZTsKKyAgICAgICAgICAgIGlmIChvd25lclJ1bGUgJiYgc2hvd1NvdXJjZUNvZGUob3du
ZXJSdWxlLnNvdXJjZUNvZGVMb2NhdGlvbiwgcHJvcGVydHkuc3R5bGVTaGVldFRleHRSYW5nZSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgLy8gSnVtcCB0
byB0aGUgcnVsZSBpZiB3ZSBjYW4ndCBmaW5kIGEgcHJvcGVydHkuCiAgICAgICAgIC8vIEZpbmQg
YSBiZXR0ZXIgc291cmNlIGNvZGUgbG9jYXRpb24gZnJvbSB0aGUgcHJvcGVydHkgdGhhdCB3YXMg
Y2xpY2tlZC4KLSAgICAgICAgdmFyIHNvdXJjZUNvZGVMb2NhdGlvbiA9IHRoaXMuX3N0eWxlLm93
bmVyUnVsZS5zb3VyY2VDb2RlTG9jYXRpb247Ci0gICAgICAgIHZhciBtYXJrcyA9IHRoaXMuX2Nv
ZGVNaXJyb3IuZmluZE1hcmtzQXQodGhpcy5fdG9rZW5UcmFja2luZ0NvbnRyb2xsZXIuY2FuZGlk
YXRlLmhvdmVyZWRUb2tlblJhbmdlLnN0YXJ0KTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBtYXJrcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIG1hcmsgPSBtYXJrc1tpXTsK
LSAgICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IG1hcmsuX19jc3NQcm9wZXJ0eTsKLSAgICAgICAg
ICAgIGlmIChwcm9wZXJ0eSkgewotICAgICAgICAgICAgICAgIHZhciBzb3VyY2VDb2RlID0gc291
cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNvZGU7Ci0gICAgICAgICAgICAgICAgdmFyIHN0eWxlU2hl
ZXRUZXh0UmFuZ2UgPSBwcm9wZXJ0eS5zdHlsZVNoZWV0VGV4dFJhbmdlOwotICAgICAgICAgICAg
ICAgIHNvdXJjZUNvZGVMb2NhdGlvbiA9IHNvdXJjZUNvZGUuY3JlYXRlU291cmNlQ29kZUxvY2F0
aW9uKHN0eWxlU2hlZXRUZXh0UmFuZ2Uuc3RhcnRMaW5lLCBzdHlsZVNoZWV0VGV4dFJhbmdlLnN0
YXJ0Q29sdW1uKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgbGV0IG1hcmtzID0gdGhpcy5fY29k
ZU1pcnJvci5maW5kTWFya3NBdChjYW5kaWRhdGUuaG92ZXJlZFRva2VuUmFuZ2Uuc3RhcnQpOwor
ICAgICAgICBmb3IgKGxldCBtYXJrIG9mIG1hcmtzKSB7CisgICAgICAgICAgICBsZXQgcHJvcGVy
dHkgPSBtYXJrLl9fY3NzUHJvcGVydHk7CisgICAgICAgICAgICBpZiAocHJvcGVydHkgJiYgc2hv
d1NvdXJjZUNvZGUoc291cmNlQ29kZUxvY2F0aW9uLCBwcm9wZXJ0eS5zdHlsZVNoZWV0VGV4dFJh
bmdlKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLQotICAgICAgICBXZWJJ
bnNwZWN0b3Iuc2hvd1NvdXJjZUNvZGVMb2NhdGlvbihzb3VyY2VDb2RlTG9jYXRpb24pOwogICAg
IH0KIAogICAgIHRva2VuVHJhY2tpbmdDb250cm9sbGVyTmV3SGlnaGxpZ2h0Q2FuZGlkYXRlKHRv
a2VuVHJhY2tpbmdDb250cm9sbGVyLCBjYW5kaWRhdGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271389</attachid>
            <date>2016-02-15 16:28:17 -0800</date>
            <delta_ts>2016-02-16 11:03:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154082-20160215162757.patch</filename>
            <type>text/plain</type>
            <size>5510</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDJiZjU5NTBhNzIzY2FmZTE2NTg1MzA2MzJjMjZm
NmNiMzFmOTkwNjEuLjAzMDFlMDI1ZGUwNDJiMDZjMmIyN2RmNGE4Yjg2NjBlZjFjZjI3YTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE2LTAyLTE1ICBEZXZp
biBSb3Vzc28gIDxkY3JvdXNzbyt3ZWJraXRAZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IEluIHRoZSBzdHlsZXMgc2lkZWJhciwgT3B0aW9uLWNsaWNraW5nIG9uIC0tY3NzLXZh
cmlhYmxlIHNob3VsZCBqdW1wIHRvIGl0cyBkZWZpbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQwODIKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzI0NTkzMzYxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRv
ci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRv
ci5wcm90b3R5cGUudG9rZW5UcmFja2luZ0NvbnRyb2xsZXJIaWdobGlnaHRlZFJhbmdlV2FzQ2xp
Y2tlZC5zaG93U291cmNlQ29kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNs
YXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBlLnRva2VuVHJhY2tpbmdDb250cm9sbGVySGlnaGxp
Z2h0ZWRSYW5nZVdhc0NsaWNrZWQpOgorICAgICAgICBOb3cgdGVzdHMgdG8gc2VlIGlmIHRoZSBo
aWdobGlnaHRlZCB0b2tlbiB3YXMgYSBDU1MgdmFyaWFibGUgYW5kIGlmCisgICAgICAgIHNvLCBh
dHRlbXB0cyB0byBzaG93IHRoZSBkZWNsYXJhdGlvbiBvZiB0aGUgQ1NTIHZhcmlhYmxlIGluc3Rl
YWQgb2YKKyAgICAgICAgdGhlIGxvY2F0aW9uIHdoZXJlIGl0IGlzIHVzZWQuIEl0IGNoZWNrcyBm
b3IgdGhlIG1hdGNoZWQgcnVsZXMgYW5kCisgICAgICAgIHRoZW4gaW5oZXJpdGVkIHJ1bGVzIGlu
IG9yZGVyIG9mIHNwZWNpZmljaXR5LgorCiAyMDE2LTAyLTE1ICBUaW1vdGh5IEhhdGNoZXIgIDx0
aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBTaG93IGluaGVyaXRl
ZCBDU1MgdmFyaWFibGVzIGluIHRoZSBTdHlsZSBzaWRlYmFyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4
dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NT
U1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzCmluZGV4IGZlYTMxODEwYWIyMjU4ODFlYzUz
OTY2YTNkZWE0YWY3MGEwZmFmZmYuLmVhY2FmMGJkNjA3YzI0MmUzOWFiOGZiYmY2ZmQ5ZGZjZmFi
ODc2ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9y
LmpzCkBAIC0xNjIyLDM0ICsxNjIyLDYxIEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0
aW9uVGV4dEVkaXRvciA9IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yCiAKICAg
ICB0b2tlblRyYWNraW5nQ29udHJvbGxlckhpZ2hsaWdodGVkUmFuZ2VXYXNDbGlja2VkKHRva2Vu
VHJhY2tpbmdDb250cm9sbGVyKQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5f
c3R5bGUub3duZXJSdWxlLnNvdXJjZUNvZGVMb2NhdGlvbik7Ci0gICAgICAgIGlmICghdGhpcy5f
c3R5bGUub3duZXJSdWxlLnNvdXJjZUNvZGVMb2NhdGlvbikKKyAgICAgICAgbGV0IHNvdXJjZUNv
ZGVMb2NhdGlvbiA9IHRoaXMuX3N0eWxlLm93bmVyUnVsZS5zb3VyY2VDb2RlTG9jYXRpb247Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNvdXJjZUNvZGVMb2NhdGlvbik7CisgICAgICAgIGlmICgh
c291cmNlQ29kZUxvY2F0aW9uKQogICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIGxldCBj
YW5kaWRhdGUgPSB0b2tlblRyYWNraW5nQ29udHJvbGxlci5jYW5kaWRhdGU7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGNhbmRpZGF0ZSk7CisgICAgICAgIGlmICghY2FuZGlkYXRlKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCB0b2tlbiA9IGNhbmRpZGF0ZS5ob3ZlcmVkVG9r
ZW47CisKICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIGNvbW1hbmQgY2xpY2tpbmcgdXJsKC4uLikg
bGlua3MuCi0gICAgICAgIHZhciB0b2tlbiA9IHRoaXMuX3Rva2VuVHJhY2tpbmdDb250cm9sbGVy
LmNhbmRpZGF0ZS5ob3ZlcmVkVG9rZW47Ci0gICAgICAgIGlmICgvXGJsaW5rXGIvLnRlc3QodG9r
ZW4udHlwZSkpIHsKLSAgICAgICAgICAgIHZhciB1cmwgPSB0b2tlbi5zdHJpbmc7Ci0gICAgICAg
ICAgICB2YXIgYmFzZVVSTCA9IHRoaXMuX3N0eWxlLm93bmVyUnVsZS5zb3VyY2VDb2RlTG9jYXRp
b24uc291cmNlQ29kZS51cmw7CisgICAgICAgIGlmICh0b2tlbiAmJiAvXGJsaW5rXGIvLnRlc3Qo
dG9rZW4udHlwZSkpIHsKKyAgICAgICAgICAgIGxldCB1cmwgPSB0b2tlbi5zdHJpbmc7CisgICAg
ICAgICAgICBsZXQgYmFzZVVSTCA9IHNvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlLnVybDsK
ICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5vcGVuVVJMKGFic29sdXRlVVJMKHVybCwgYmFzZVVS
TCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gSnVtcCB0
byB0aGUgcnVsZSBpZiB3ZSBjYW4ndCBmaW5kIGEgcHJvcGVydHkuCi0gICAgICAgIC8vIEZpbmQg
YSBiZXR0ZXIgc291cmNlIGNvZGUgbG9jYXRpb24gZnJvbSB0aGUgcHJvcGVydHkgdGhhdCB3YXMg
Y2xpY2tlZC4KLSAgICAgICAgdmFyIHNvdXJjZUNvZGVMb2NhdGlvbiA9IHRoaXMuX3N0eWxlLm93
bmVyUnVsZS5zb3VyY2VDb2RlTG9jYXRpb247Ci0gICAgICAgIHZhciBtYXJrcyA9IHRoaXMuX2Nv
ZGVNaXJyb3IuZmluZE1hcmtzQXQodGhpcy5fdG9rZW5UcmFja2luZ0NvbnRyb2xsZXIuY2FuZGlk
YXRlLmhvdmVyZWRUb2tlblJhbmdlLnN0YXJ0KTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBtYXJrcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIG1hcmsgPSBtYXJrc1tpXTsK
LSAgICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IG1hcmsuX19jc3NQcm9wZXJ0eTsKLSAgICAgICAg
ICAgIGlmIChwcm9wZXJ0eSkgewotICAgICAgICAgICAgICAgIHZhciBzb3VyY2VDb2RlID0gc291
cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNvZGU7Ci0gICAgICAgICAgICAgICAgdmFyIHN0eWxlU2hl
ZXRUZXh0UmFuZ2UgPSBwcm9wZXJ0eS5zdHlsZVNoZWV0VGV4dFJhbmdlOwotICAgICAgICAgICAg
ICAgIHNvdXJjZUNvZGVMb2NhdGlvbiA9IHNvdXJjZUNvZGUuY3JlYXRlU291cmNlQ29kZUxvY2F0
aW9uKHN0eWxlU2hlZXRUZXh0UmFuZ2Uuc3RhcnRMaW5lLCBzdHlsZVNoZWV0VGV4dFJhbmdlLnN0
YXJ0Q29sdW1uKTsKKyAgICAgICAgZnVuY3Rpb24gc2hvd1NvdXJjZUNvZGUobG9jYXRpb24sIHJh
bmdlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWxvY2F0aW9uIHx8ICFyYW5nZSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5z
aG93U291cmNlQ29kZUxvY2F0aW9uKGxvY2F0aW9uLnNvdXJjZUNvZGUuY3JlYXRlU291cmNlQ29k
ZUxvY2F0aW9uKHJhbmdlLnN0YXJ0TGluZSwgcmFuZ2Uuc3RhcnRDb2x1bW4pKTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gU3BlY2lhbCBjYXNlIG9w
dGlvbiBjbGlja2luZyBDU1MgdmFyaWFibGVzLgorICAgICAgICBpZiAodG9rZW4gJiYgL1xidmFy
aWFibGUtMlxiLy50ZXN0KHRva2VuLnR5cGUpKSB7CisgICAgICAgICAgICBmb3IgKGxldCBydWxl
IG9mIHRoaXMuX3N0eWxlLm5vZGVTdHlsZXMubWF0Y2hlZFJ1bGVzKSB7CisgICAgICAgICAgICAg
ICAgZm9yIChsZXQgcHJvcGVydHkgb2YgcnVsZS5zdHlsZS5wcm9wZXJ0aWVzKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5uYW1lID09PSB0b2tlbi5zdHJpbmcgJiYgc2hvd1Nv
dXJjZUNvZGUocnVsZS5zb3VyY2VDb2RlTG9jYXRpb24sIHByb3BlcnR5LnN0eWxlU2hlZXRUZXh0
UmFuZ2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciAobGV0IGluaGVyaXRlZCBvZiB0aGlz
Ll9zdHlsZS5ub2RlU3R5bGVzLmluaGVyaXRlZFJ1bGVzKSB7CisgICAgICAgICAgICAgICAgZm9y
IChsZXQgcnVsZSBvZiBpbmhlcml0ZWQubWF0Y2hlZFJ1bGVzKSB7CisgICAgICAgICAgICAgICAg
ICAgIGZvciAobGV0IHByb3BlcnR5IG9mIHJ1bGUuc3R5bGUucHJvcGVydGllcykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5Lm5hbWUgPT09IHRva2VuLnN0cmluZyAmJiBz
aG93U291cmNlQ29kZShydWxlLnNvdXJjZUNvZGVMb2NhdGlvbiwgcHJvcGVydHkuc3R5bGVTaGVl
dFRleHRSYW5nZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAKLSAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dTb3VyY2VDb2RlTG9jYXRpb24oc291cmNl
Q29kZUxvY2F0aW9uKTsKKyAgICAgICAgLy8gSnVtcCB0byB0aGUgcnVsZSBpZiB3ZSBjYW4ndCBm
aW5kIGEgcHJvcGVydHkuCisgICAgICAgIC8vIEZpbmQgYSBiZXR0ZXIgc291cmNlIGNvZGUgbG9j
YXRpb24gZnJvbSB0aGUgcHJvcGVydHkgdGhhdCB3YXMgY2xpY2tlZC4KKyAgICAgICAgbGV0IG1h
cmtzID0gdGhpcy5fY29kZU1pcnJvci5maW5kTWFya3NBdChjYW5kaWRhdGUuaG92ZXJlZFRva2Vu
UmFuZ2Uuc3RhcnQpOworICAgICAgICBmb3IgKGxldCBtYXJrIG9mIG1hcmtzKSB7CisgICAgICAg
ICAgICBsZXQgcHJvcGVydHkgPSBtYXJrLl9fY3NzUHJvcGVydHk7CisgICAgICAgICAgICBpZiAo
cHJvcGVydHkgJiYgc2hvd1NvdXJjZUNvZGUoc291cmNlQ29kZUxvY2F0aW9uLCBwcm9wZXJ0eS5z
dHlsZVNoZWV0VGV4dFJhbmdlKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
ICAgICB9CiAKICAgICB0b2tlblRyYWNraW5nQ29udHJvbGxlck5ld0hpZ2hsaWdodENhbmRpZGF0
ZSh0b2tlblRyYWNraW5nQ29udHJvbGxlciwgY2FuZGlkYXRlKQo=
</data>
<flag name="review"
          id="296208"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271440</attachid>
            <date>2016-02-16 11:03:22 -0800</date>
            <delta_ts>2016-02-17 22:12:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>154082.diff</filename>
            <type>text/plain</type>
            <size>4644</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDJiZjU5NTAuLjY3YWVhMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE2LTAyLTE2ICBEZXZpbiBSb3Vzc28g
IDxkY3JvdXNzbyt3ZWJraXRAZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IElu
IHRoZSBzdHlsZXMgc2lkZWJhciwgT3B0aW9uLWNsaWNraW5nIG9uIC0tY3NzLXZhcmlhYmxlIHNo
b3VsZCBqdW1wIHRvIGl0cyBkZWZpbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQwODIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0NTkz
MzYxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5
cGUudG9rZW5UcmFja2luZ0NvbnRyb2xsZXJIaWdobGlnaHRlZFJhbmdlV2FzQ2xpY2tlZC5zaG93
U291cmNlQ29kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRl
eHRFZGl0b3IucHJvdG90eXBlLnRva2VuVHJhY2tpbmdDb250cm9sbGVySGlnaGxpZ2h0ZWRSYW5n
ZVdhc0NsaWNrZWQpOgorICAgICAgICBOb3cgdGVzdHMgdG8gc2VlIGlmIHRoZSBoaWdobGlnaHRl
ZCB0b2tlbiB3YXMgYSBDU1MgdmFyaWFibGUgYW5kIGlmCisgICAgICAgIHNvLCBhdHRlbXB0cyB0
byBzaG93IHRoZSBkZWNsYXJhdGlvbiBvZiB0aGUgQ1NTIHZhcmlhYmxlIGluc3RlYWQgb2YKKyAg
ICAgICAgdGhlIGxvY2F0aW9uIHdoZXJlIGl0IGlzIHVzZWQuCisKIDIwMTYtMDItMTUgIFRpbW90
aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFNob3cgaW5oZXJpdGVkIENTUyB2YXJpYWJsZXMgaW4gdGhlIFN0eWxlIHNpZGViYXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxl
RGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanMKaW5kZXggZmVhMzE4
MS4uNWNmZDU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRF
ZGl0b3IuanMKQEAgLTE2MjIsMzQgKzE2MjIsNTAgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVj
bGFyYXRpb25UZXh0RWRpdG9yID0gY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IK
IAogICAgIHRva2VuVHJhY2tpbmdDb250cm9sbGVySGlnaGxpZ2h0ZWRSYW5nZVdhc0NsaWNrZWQo
dG9rZW5UcmFja2luZ0NvbnRyb2xsZXIpCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCh0
aGlzLl9zdHlsZS5vd25lclJ1bGUuc291cmNlQ29kZUxvY2F0aW9uKTsKLSAgICAgICAgaWYgKCF0
aGlzLl9zdHlsZS5vd25lclJ1bGUuc291cmNlQ29kZUxvY2F0aW9uKQorICAgICAgICBsZXQgc291
cmNlQ29kZUxvY2F0aW9uID0gdGhpcy5fc3R5bGUub3duZXJSdWxlLnNvdXJjZUNvZGVMb2NhdGlv
bjsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoc291cmNlQ29kZUxvY2F0aW9uKTsKKyAgICAgICAg
aWYgKCFzb3VyY2VDb2RlTG9jYXRpb24pCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAg
bGV0IGNhbmRpZGF0ZSA9IHRva2VuVHJhY2tpbmdDb250cm9sbGVyLmNhbmRpZGF0ZTsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQoY2FuZGlkYXRlKTsKKyAgICAgICAgaWYgKCFjYW5kaWRhdGUpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IHRva2VuID0gY2FuZGlkYXRlLmhvdmVy
ZWRUb2tlbjsKKwogICAgICAgICAvLyBTcGVjaWFsIGNhc2UgY29tbWFuZCBjbGlja2luZyB1cmwo
Li4uKSBsaW5rcy4KLSAgICAgICAgdmFyIHRva2VuID0gdGhpcy5fdG9rZW5UcmFja2luZ0NvbnRy
b2xsZXIuY2FuZGlkYXRlLmhvdmVyZWRUb2tlbjsKLSAgICAgICAgaWYgKC9cYmxpbmtcYi8udGVz
dCh0b2tlbi50eXBlKSkgewotICAgICAgICAgICAgdmFyIHVybCA9IHRva2VuLnN0cmluZzsKLSAg
ICAgICAgICAgIHZhciBiYXNlVVJMID0gdGhpcy5fc3R5bGUub3duZXJSdWxlLnNvdXJjZUNvZGVM
b2NhdGlvbi5zb3VyY2VDb2RlLnVybDsKKyAgICAgICAgaWYgKHRva2VuICYmIC9cYmxpbmtcYi8u
dGVzdCh0b2tlbi50eXBlKSkgeworICAgICAgICAgICAgbGV0IHVybCA9IHRva2VuLnN0cmluZzsK
KyAgICAgICAgICAgIGxldCBiYXNlVVJMID0gc291cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNvZGUu
dXJsOwogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLm9wZW5VUkwoYWJzb2x1dGVVUkwodXJsLCBi
YXNlVVJMKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBmdW5j
dGlvbiBzaG93U291cmNlQ29kZShsb2NhdGlvbiwgcmFuZ2UpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICghbG9jYXRpb24gfHwgIXJhbmdlKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dTb3VyY2VDb2RlTG9jYXRpb24obG9j
YXRpb24uc291cmNlQ29kZS5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24ocmFuZ2Uuc3RhcnRMaW5l
LCByYW5nZS5zdGFydENvbHVtbikpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKworICAgICAgICAvLyBTcGVjaWFsIGNhc2Ugb3B0aW9uIGNsaWNraW5nIENTUyB2YXJpYWJs
ZXMuCisgICAgICAgIGlmICh0b2tlbiAmJiAvXGJ2YXJpYWJsZS0yXGIvLnRlc3QodG9rZW4udHlw
ZSkpIHsKKyAgICAgICAgICAgIGxldCBwcm9wZXJ0eSA9IHRoaXMuX3N0eWxlLm5vZGVTdHlsZXMu
ZWZmZWN0aXZlUHJvcGVydHlGb3JOYW1lKHRva2VuLnN0cmluZyk7CisgICAgICAgICAgICBpZiAo
cHJvcGVydHkgJiYgc2hvd1NvdXJjZUNvZGUocHJvcGVydHkub3duZXJTdHlsZS5vd25lclJ1bGUu
c291cmNlQ29kZUxvY2F0aW9uLCBwcm9wZXJ0eS5zdHlsZVNoZWV0VGV4dFJhbmdlKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICAvLyBKdW1wIHRvIHRoZSBy
dWxlIGlmIHdlIGNhbid0IGZpbmQgYSBwcm9wZXJ0eS4KICAgICAgICAgLy8gRmluZCBhIGJldHRl
ciBzb3VyY2UgY29kZSBsb2NhdGlvbiBmcm9tIHRoZSBwcm9wZXJ0eSB0aGF0IHdhcyBjbGlja2Vk
LgotICAgICAgICB2YXIgc291cmNlQ29kZUxvY2F0aW9uID0gdGhpcy5fc3R5bGUub3duZXJSdWxl
LnNvdXJjZUNvZGVMb2NhdGlvbjsKLSAgICAgICAgdmFyIG1hcmtzID0gdGhpcy5fY29kZU1pcnJv
ci5maW5kTWFya3NBdCh0aGlzLl90b2tlblRyYWNraW5nQ29udHJvbGxlci5jYW5kaWRhdGUuaG92
ZXJlZFRva2VuUmFuZ2Uuc3RhcnQpOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hcmtz
Lmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgbWFyayA9IG1hcmtzW2ldOwotICAgICAg
ICAgICAgdmFyIHByb3BlcnR5ID0gbWFyay5fX2Nzc1Byb3BlcnR5OwotICAgICAgICAgICAgaWYg
KHByb3BlcnR5KSB7Ci0gICAgICAgICAgICAgICAgdmFyIHNvdXJjZUNvZGUgPSBzb3VyY2VDb2Rl
TG9jYXRpb24uc291cmNlQ29kZTsKLSAgICAgICAgICAgICAgICB2YXIgc3R5bGVTaGVldFRleHRS
YW5nZSA9IHByb3BlcnR5LnN0eWxlU2hlZXRUZXh0UmFuZ2U7Ci0gICAgICAgICAgICAgICAgc291
cmNlQ29kZUxvY2F0aW9uID0gc291cmNlQ29kZS5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24oc3R5
bGVTaGVldFRleHRSYW5nZS5zdGFydExpbmUsIHN0eWxlU2hlZXRUZXh0UmFuZ2Uuc3RhcnRDb2x1
bW4pOwotICAgICAgICAgICAgfQorICAgICAgICBsZXQgbWFya3MgPSB0aGlzLl9jb2RlTWlycm9y
LmZpbmRNYXJrc0F0KGNhbmRpZGF0ZS5ob3ZlcmVkVG9rZW5SYW5nZS5zdGFydCk7CisgICAgICAg
IGZvciAobGV0IG1hcmsgb2YgbWFya3MpIHsKKyAgICAgICAgICAgIGxldCBwcm9wZXJ0eSA9IG1h
cmsuX19jc3NQcm9wZXJ0eTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eSAmJiBzaG93U291cmNl
Q29kZShzb3VyY2VDb2RlTG9jYXRpb24sIHByb3BlcnR5LnN0eWxlU2hlZXRUZXh0UmFuZ2UpKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotCi0gICAgICAgIFdlYkluc3BlY3Rv
ci5zaG93U291cmNlQ29kZUxvY2F0aW9uKHNvdXJjZUNvZGVMb2NhdGlvbik7CiAgICAgfQogCiAg
ICAgdG9rZW5UcmFja2luZ0NvbnRyb2xsZXJOZXdIaWdobGlnaHRDYW5kaWRhdGUodG9rZW5UcmFj
a2luZ0NvbnRyb2xsZXIsIGNhbmRpZGF0ZSkK
</data>
<flag name="review"
          id="296251"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271631</attachid>
            <date>2016-02-17 22:12:08 -0800</date>
            <delta_ts>2016-02-17 22:37:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>154082.diff</filename>
            <type>text/plain</type>
            <size>4749</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDM0ZTdkZWMuLjk3ZTJmMDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIwIEBACiAyMDE2LTAyLTE3ICBEZXZpbiBSb3Vzc28g
IDxkY3JvdXNzbyt3ZWJraXRAZ21haWwuY29tPgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IElu
IHRoZSBzdHlsZXMgc2lkZWJhciwgT3B0aW9uLWNsaWNraW5nIG9uIC0tY3NzLXZhcmlhYmxlIHNo
b3VsZCBqdW1wIHRvIGl0cyBkZWZpbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQwODIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0NTkz
MzYxPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IucHJvdG90
eXBlLnRva2VuVHJhY2tpbmdDb250cm9sbGVySGlnaGxpZ2h0ZWRSYW5nZVdhc0NsaWNrZWQuc2hv
d1JhbmdlSW5Tb3VyY2VDb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xh
cmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUudG9rZW5UcmFja2luZ0NvbnRyb2xsZXJIaWdobGln
aHRlZFJhbmdlV2FzQ2xpY2tlZCk6CisgICAgICAgIE5vdyB0ZXN0cyB0byBzZWUgaWYgdGhlIGhp
Z2hsaWdodGVkIHRva2VuIHdhcyBhIENTUyB2YXJpYWJsZSBhbmQgaWYKKyAgICAgICAgc28sIGF0
dGVtcHRzIHRvIHNob3cgdGhlIGRlY2xhcmF0aW9uIG9mIHRoZSBDU1MgdmFyaWFibGUgaW5zdGVh
ZCBvZgorICAgICAgICB0aGUgbG9jYXRpb24gd2hlcmUgaXQgaXMgdXNlZC4KKworMjAxNi0wMi0x
NyAgRGV2aW4gUm91c3NvICA8ZGNyb3Vzc28rd2Via2l0QGdtYWlsLmNvbT4KKwogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBBZGQgQ29udGV4dCBtZW51IHNlcGFyYXRvcnMgdG8gU3R5bGVzIHNpZGVi
YXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDM2
MAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzCmlu
ZGV4IGZlYTMxODEuLjdlN2UxOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFy
YXRpb25UZXh0RWRpdG9yLmpzCkBAIC0xNjIyLDM0ICsxNjIyLDUwIEBAIFdlYkluc3BlY3Rvci5D
U1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvciA9IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb25U
ZXh0RWRpdG9yCiAKICAgICB0b2tlblRyYWNraW5nQ29udHJvbGxlckhpZ2hsaWdodGVkUmFuZ2VX
YXNDbGlja2VkKHRva2VuVHJhY2tpbmdDb250cm9sbGVyKQogICAgIHsKLSAgICAgICAgY29uc29s
ZS5hc3NlcnQodGhpcy5fc3R5bGUub3duZXJSdWxlLnNvdXJjZUNvZGVMb2NhdGlvbik7Ci0gICAg
ICAgIGlmICghdGhpcy5fc3R5bGUub3duZXJSdWxlLnNvdXJjZUNvZGVMb2NhdGlvbikKKyAgICAg
ICAgbGV0IHNvdXJjZUNvZGVMb2NhdGlvbiA9IHRoaXMuX3N0eWxlLm93bmVyUnVsZS5zb3VyY2VD
b2RlTG9jYXRpb247CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNvdXJjZUNvZGVMb2NhdGlvbik7
CisgICAgICAgIGlmICghc291cmNlQ29kZUxvY2F0aW9uKQogICAgICAgICAgICAgcmV0dXJuOwog
CisgICAgICAgIGxldCBjYW5kaWRhdGUgPSB0b2tlblRyYWNraW5nQ29udHJvbGxlci5jYW5kaWRh
dGU7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNhbmRpZGF0ZSk7CisgICAgICAgIGlmICghY2Fu
ZGlkYXRlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCB0b2tlbiA9IGNhbmRp
ZGF0ZS5ob3ZlcmVkVG9rZW47CisKICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIGNvbW1hbmQgY2xp
Y2tpbmcgdXJsKC4uLikgbGlua3MuCi0gICAgICAgIHZhciB0b2tlbiA9IHRoaXMuX3Rva2VuVHJh
Y2tpbmdDb250cm9sbGVyLmNhbmRpZGF0ZS5ob3ZlcmVkVG9rZW47Ci0gICAgICAgIGlmICgvXGJs
aW5rXGIvLnRlc3QodG9rZW4udHlwZSkpIHsKLSAgICAgICAgICAgIHZhciB1cmwgPSB0b2tlbi5z
dHJpbmc7Ci0gICAgICAgICAgICB2YXIgYmFzZVVSTCA9IHRoaXMuX3N0eWxlLm93bmVyUnVsZS5z
b3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29kZS51cmw7CisgICAgICAgIGlmICh0b2tlbiAmJiAv
XGJsaW5rXGIvLnRlc3QodG9rZW4udHlwZSkpIHsKKyAgICAgICAgICAgIGxldCB1cmwgPSB0b2tl
bi5zdHJpbmc7CisgICAgICAgICAgICBsZXQgYmFzZVVSTCA9IHNvdXJjZUNvZGVMb2NhdGlvbi5z
b3VyY2VDb2RlLnVybDsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5vcGVuVVJMKGFic29sdXRl
VVJMKHVybCwgYmFzZVVSTCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAg
ICAgICAgZnVuY3Rpb24gc2hvd1JhbmdlSW5Tb3VyY2VDb2RlKHNvdXJjZUNvZGUsIHJhbmdlKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXNvdXJjZUNvZGUgfHwgIXJhbmdlKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dT
b3VyY2VDb2RlTG9jYXRpb24oc291cmNlQ29kZS5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24ocmFu
Z2Uuc3RhcnRMaW5lLCByYW5nZS5zdGFydENvbHVtbikpOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBTcGVjaWFsIGNhc2Ugb3B0aW9uIGNsaWNraW5n
IENTUyB2YXJpYWJsZXMuCisgICAgICAgIGlmICh0b2tlbiAmJiAvXGJ2YXJpYWJsZS0yXGIvLnRl
c3QodG9rZW4udHlwZSkpIHsKKyAgICAgICAgICAgIGxldCBwcm9wZXJ0eSA9IHRoaXMuX3N0eWxl
Lm5vZGVTdHlsZXMuZWZmZWN0aXZlUHJvcGVydHlGb3JOYW1lKHRva2VuLnN0cmluZyk7CisgICAg
ICAgICAgICBpZiAocHJvcGVydHkgJiYgc2hvd1JhbmdlSW5Tb3VyY2VDb2RlKHByb3BlcnR5Lm93
bmVyU3R5bGUub3duZXJSdWxlLnNvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlLCBwcm9wZXJ0
eS5zdHlsZVNoZWV0VGV4dFJhbmdlKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKwogICAgICAgICAvLyBKdW1wIHRvIHRoZSBydWxlIGlmIHdlIGNhbid0IGZpbmQgYSBwcm9w
ZXJ0eS4KICAgICAgICAgLy8gRmluZCBhIGJldHRlciBzb3VyY2UgY29kZSBsb2NhdGlvbiBmcm9t
IHRoZSBwcm9wZXJ0eSB0aGF0IHdhcyBjbGlja2VkLgotICAgICAgICB2YXIgc291cmNlQ29kZUxv
Y2F0aW9uID0gdGhpcy5fc3R5bGUub3duZXJSdWxlLnNvdXJjZUNvZGVMb2NhdGlvbjsKLSAgICAg
ICAgdmFyIG1hcmtzID0gdGhpcy5fY29kZU1pcnJvci5maW5kTWFya3NBdCh0aGlzLl90b2tlblRy
YWNraW5nQ29udHJvbGxlci5jYW5kaWRhdGUuaG92ZXJlZFRva2VuUmFuZ2Uuc3RhcnQpOwotICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hcmtzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAg
ICB2YXIgbWFyayA9IG1hcmtzW2ldOwotICAgICAgICAgICAgdmFyIHByb3BlcnR5ID0gbWFyay5f
X2Nzc1Byb3BlcnR5OwotICAgICAgICAgICAgaWYgKHByb3BlcnR5KSB7Ci0gICAgICAgICAgICAg
ICAgdmFyIHNvdXJjZUNvZGUgPSBzb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29kZTsKLSAgICAg
ICAgICAgICAgICB2YXIgc3R5bGVTaGVldFRleHRSYW5nZSA9IHByb3BlcnR5LnN0eWxlU2hlZXRU
ZXh0UmFuZ2U7Ci0gICAgICAgICAgICAgICAgc291cmNlQ29kZUxvY2F0aW9uID0gc291cmNlQ29k
ZS5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24oc3R5bGVTaGVldFRleHRSYW5nZS5zdGFydExpbmUs
IHN0eWxlU2hlZXRUZXh0UmFuZ2Uuc3RhcnRDb2x1bW4pOwotICAgICAgICAgICAgfQorICAgICAg
ICBsZXQgbWFya3MgPSB0aGlzLl9jb2RlTWlycm9yLmZpbmRNYXJrc0F0KGNhbmRpZGF0ZS5ob3Zl
cmVkVG9rZW5SYW5nZS5zdGFydCk7CisgICAgICAgIGZvciAobGV0IG1hcmsgb2YgbWFya3MpIHsK
KyAgICAgICAgICAgIGxldCBwcm9wZXJ0eSA9IG1hcmsuX19jc3NQcm9wZXJ0eTsKKyAgICAgICAg
ICAgIGlmIChwcm9wZXJ0eSAmJiBzaG93UmFuZ2VJblNvdXJjZUNvZGUoc291cmNlQ29kZUxvY2F0
aW9uLnNvdXJjZUNvZGUsIHByb3BlcnR5LnN0eWxlU2hlZXRUZXh0UmFuZ2UpKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotCi0gICAgICAgIFdlYkluc3BlY3Rvci5zaG93U291
cmNlQ29kZUxvY2F0aW9uKHNvdXJjZUNvZGVMb2NhdGlvbik7CiAgICAgfQogCiAgICAgdG9rZW5U
cmFja2luZ0NvbnRyb2xsZXJOZXdIaWdobGlnaHRDYW5kaWRhdGUodG9rZW5UcmFja2luZ0NvbnRy
b2xsZXIsIGNhbmRpZGF0ZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>