<?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>97032</bug_id>
          
          <creation_ts>2012-09-18 11:37:45 -0700</creation_ts>
          <short_desc>Web Inspector: load sourcemaps asynchronously, part 1/2</short_desc>
          <delta_ts>2014-12-12 13:43:06 -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 (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>97680</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="johnjbarton">johnjbarton</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>vsevik</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>722932</commentid>
    <comment_count>0</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-09-18 11:37:45 -0700</bug_when>
    <thetext>In CompilerScriptMapping.js loadSourceMapForScript we read:
   // FIXME: make sendRequest async.
However if the sendRequest is async, then the dependent code must also be async.

Thus the FIXME has two parts:
  1. Make the callers of CompilerScriptMapping.loadSourceMapForScript async,
  2. load the source map async</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722973</commentid>
    <comment_count>1</comment_count>
      <attachid>164601</attachid>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-09-18 12:21:49 -0700</bug_when>
    <thetext>Created attachment 164601
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723012</commentid>
    <comment_count>2</comment_count>
      <attachid>164601</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-18 13:23:10 -0700</bug_when>
    <thetext>Comment on attachment 164601
Patch

Attachment 164601 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13898266

New failing tests:
http/tests/inspector/compiler-source-mapping-debug.html
http/tests/inspector/compiler-script-mapping.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723070</commentid>
    <comment_count>3</comment_count>
      <attachid>164624</attachid>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-09-18 14:52:57 -0700</bug_when>
    <thetext>Created attachment 164624
Oh that&apos;s where this is tested</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723376</commentid>
    <comment_count>4</comment_count>
      <attachid>164624</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-19 01:17:15 -0700</bug_when>
    <thetext>Comment on attachment 164624
Oh that&apos;s where this is tested

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

&gt; Source/WebCore/inspector/front-end/CompilerScriptMapping.js:96
&gt; +                script.setSourceMapping(this);

This means the script won&apos;t have source mapping until source map is loaded, which means stopping on breakpoint at this point would break things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723622</commentid>
    <comment_count>5</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-09-19 09:56:41 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 164624 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164624&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/CompilerScriptMapping.js:96
&gt; &gt; +                script.setSourceMapping(this);
&gt; 
&gt; This means the script won&apos;t have source mapping until source map is loaded, which means stopping on breakpoint at this point would break things.

Specifically, Script.rawLocationToUILocation will fail when this._sourceMapping is undefined, correct?

(I believe this already occurs, at least I recall seeing exceptions related to rawLocationToUILocation).

Assuming we want async, then it&apos;s impossible to avoid a time when the mapping will be incorrect. So I guess we need to minimize the damage.

Based on DebuggerModel.js rawLocationToUILocation can sometimes return null; UISourceCode.js returns null from uiLocationToRawLocation() if !this._sourceMap. So one solution is to cause Script.rawLocationToUILocation to return null if this._sourceMapping is undefined.

BTW it looks like http/tests/inspector/compiler-source-mapping-debug.html will fail if we complete 2/2 for exactly the reason you cite. So in addition to the issue you raise, we need a way to test breakpoints with source mapping under async for 2/2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724740</commentid>
    <comment_count>6</comment_count>
      <attachid>164962</attachid>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-09-20 12:08:39 -0700</bug_when>
    <thetext>Created attachment 164962
rebase and respond to review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724849</commentid>
    <comment_count>7</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-09-20 14:13:23 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; 
&gt; (I believe this already occurs, at least I recall seeing exceptions related to rawLocationToUILocation).

Ok here is one such exception:

WebInspector.JavaScriptSource.workingCopyCommitted() :
   var rawLocation = this.uiLocationToRawLocation(0, 0);
will be null if
  1) the source file had a syntax error,
  2) the user edits the file to fix the syntax error,
  3) the user saves.

This is a consequent of UISourceCode.uiLocationToRawLocation:
        if (!this._sourceMapping)
            return null;

(reported as https://code.google.com/p/chromium/issues/detail?id=151399)

So there are other circumstances where we don&apos;t have a sourceMapping: we need to handle these cases gracefully.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728541</commentid>
    <comment_count>8</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-26 07:35:26 -0700</bug_when>
    <thetext>Few thoughts:
1) rawLocationToUILocation should never return null. This method is manly used to stop on the breakpoint: we don&apos;t want to end up in the situation when we are stopped but the user can&apos;t see the execution line.

2) I&apos;m fine (to some extent) if uiLocationToRawLocation returns null at some point. This is actually happening for snippets and that will happen even more often when we support editing of files other than those loaded from the network (a script with syntax error is a similar situation).

3) rawLocationToUILocation should always fallback to &quot;temporary&quot; uiSourceCodes.
This could be implemented based on the https://bugs.webkit.org/show_bug.cgi?id=97680. The patch in this bug is not yet landed so I suggest that we wait another week before moving on with your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728544</commentid>
    <comment_count>9</comment_count>
      <attachid>164962</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-26 07:35:41 -0700</bug_when>
    <thetext>Comment on attachment 164962
rebase and respond to review

Clearing r? for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791553</commentid>
    <comment_count>10</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-12-14 05:17:32 -0800</bug_when>
    <thetext>See also https://bugs.webkit.org/show_bug.cgi?id=97065</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054991</commentid>
    <comment_count>11</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-12-12 13:40:55 -0800</bug_when>
    <thetext>Closing as invalid, as this bug pertains to the old inspector UI and/or its tests.
Please file a new bug (https://www.webkit.org/new-inspector-bug) if the bug/feature/issue is still relevant to WebKit trunk.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164601</attachid>
            <date>2012-09-18 12:21:49 -0700</date>
            <delta_ts>2012-09-18 14:52:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97032-20120918122115.patch</filename>
            <type>text/plain</type>
            <size>9478</size>
            <attacher name="johnjbarton">johnjbarton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4OTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk0ZmMyZGExNGRiMTJl
MGRiOTZhYTcyNDUyM2UwY2QyMmI4MjAxYS4uZjdlN2EzOTA5YWM5YzI4NTliZjkzMzQ1MTY5ZmU1
M2MzNWQyNjczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA5LTE4ICBKb2hu
IEouIEJhcnRvbiAgPGpvaG5qYmFydG9uQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBsb2FkIHNvdXJjZW1hcHMgYXN5bmNocm9ub3VzbHksIHBhcnQgMS8yCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzAzMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhc3Mgc291cmNlTWFwUGFy
c2VyIGJ5IGNhbGxiYWNrIHJhdGhlciB0aGFuIHJldHVybiwgcHJlcGFyZXMgZm9yIGxvYWRpbmcg
dGhlIAorICAgICAgICBtYXAgYW5kIGNyZWF0aW5nIHRoZSBTb3VyY2VNYXBQYXJzZXIgYXN5bmMg
aW4gYSBmdXR1cmUgcGF0Y2guCisgICAgICAgIAorICAgICAgICBSZWZhY3RvcmluZywgY29kZSBj
b21waWxlcyAmIGFsbCB0ZXN0IHBhc3MuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0NvbXBpbGVyU2NyaXB0TWFwcGluZy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db21waWxl
clNjcmlwdE1hcHBpbmcucHJvdG90eXBlLmxvYWRTb3VyY2VNYXBGb3JTY3JpcHQpOgorICAgICAg
ICAgIGdldHMgYSBjYWxsYmFjayBzbyBjYWxsZXJzIGNhbiBiZSBhc3luYworICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJTY3JpcHRNYXBwaW5nLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuX3BhcnNlZFNjcmlwdFNv
dXJjZS5hZGRTY3JpcHRUb01hcHBpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
U2NyaXB0TWFwcGluZy5wcm90b3R5cGUuX3BhcnNlZFNjcmlwdFNvdXJjZSk6CisgICAgICAgICAg
cHJpdmF0ZSBmdW5jdGlvbiBpcyBldmVudCBsaXN0ZW5lciwgbm8gc3luYyBjYWxsZXJzCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5fbWFwcGlu
Z0ZvclNjcmlwdC5lbHNlLmdldCBkaWRMb2FkU291cmNlTWFwKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlclNjcmlwdE1hcHBpbmcucHJvdG90eXBlLl9tYXBwaW5nRm9yU2NyaXB0KToK
KyAgICAgICAgICBwcml2YXRlIGZ1bmN0aW9uIG9ubHkgY2FsbGVkIGJ5IF9wYXJzZWRTY3JpcHRT
b3VyY2UKKwogMjAxMi0wOS0xOCAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtFeHRlbnNpb25zIEFQSV0gcG9zdHBvbmUgcmVx
dWVzdHMgdG8gYWRkIGV4dGVuc2lvbnMgdW50aWwgZXh0ZW5zaW9uIHNlcnZlciBpcyBpbml0aWFs
aXplZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db21w
aWxlclNjcmlwdE1hcHBpbmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0NvbXBpbGVyU2NyaXB0TWFwcGluZy5qcwppbmRleCA3ZjRiOWRhZTNkMGE5ODBmYzdmYTRkNGY3
NzMyYzczOTk5MWJkM2ZiLi5kMDhkZmNkMjlkODg2ZDRlOGZhZTFkM2JlNmZlMmY1ZjBlNTMzOTU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVy
U2NyaXB0TWFwcGluZy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0NvbXBpbGVyU2NyaXB0TWFwcGluZy5qcwpAQCAtODksNjYgKzg5LDY4IEBAIFdlYkluc3BlY3Rv
ci5Db21waWxlclNjcmlwdE1hcHBpbmcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zY3Jp
cHRGb3JPcmlnaW5hbFVJU291cmNlLnB1dChvcmlnaW5hbFVJU291cmNlQ29kZSwgc2NyaXB0KTsK
ICAgICAgICAgdGhpcy5fd29ya3NwYWNlLnByb2plY3QoKS5hZGRVSVNvdXJjZUNvZGUob3JpZ2lu
YWxVSVNvdXJjZUNvZGUpOwogCi0gICAgICAgIHZhciBzb3VyY2VNYXAgPSB0aGlzLmxvYWRTb3Vy
Y2VNYXBGb3JTY3JpcHQoc2NyaXB0KTsKKyAgICAgICAgZnVuY3Rpb24gYWRkU291cmNlTWFwKHNv
dXJjZU1hcCkgCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9zY3JpcHRGb3JTb3Vy
Y2VNYXAuZ2V0KHNvdXJjZU1hcCkpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9zb3VyY2VNYXBG
b3JTY3JpcHRJZFtzY3JpcHQuc2NyaXB0SWRdID0gc291cmNlTWFwOworICAgICAgICAgICAgICAg
IHNjcmlwdC5zZXRTb3VyY2VNYXBwaW5nKHRoaXMpOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZUxpc3QgPSBbXTsK
KyAgICAgICAgICAgIHZhciBzb3VyY2VVUkxzID0gc291cmNlTWFwLnNvdXJjZXMoKTsKKyAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc291cmNlVVJMcy5sZW5ndGg7ICsraSkgeworICAg
ICAgICAgICAgICAgIHZhciBzb3VyY2VVUkwgPSBzb3VyY2VVUkxzW2ldOworICAgICAgICAgICAg
ICAgIGlmICh0aGlzLl91aVNvdXJjZUNvZGVCeVVSTFtzb3VyY2VVUkxdKQorICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB2YXIgc291cmNlQ29udGVudCA9IHNv
dXJjZU1hcC5zb3VyY2VDb250ZW50KHNvdXJjZVVSTCk7CisgICAgICAgICAgICAgICAgdmFyIGNv
bnRlbnRQcm92aWRlcjsKKyAgICAgICAgICAgICAgICBpZiAoc291cmNlQ29udGVudCkKKyAgICAg
ICAgICAgICAgICAgICAgY29udGVudFByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0aWND
b250ZW50UHJvdmlkZXIoV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU2NyaXB0LCBzb3VyY2VD
b250ZW50KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGNvbnRl
bnRQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nQ29udGVu
dFByb3ZpZGVyKHNvdXJjZVVSTCk7CisgICAgICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9
IG5ldyBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZShzb3VyY2VVUkwsIG51bGwsIGNvbnRl
bnRQcm92aWRlciwgZmFsc2UpOworICAgICAgICAgICAgICAgIHVpU291cmNlQ29kZS5zZXRTb3Vy
Y2VNYXBwaW5nKHRoaXMpOworICAgICAgICAgICAgICAgIHVpU291cmNlQ29kZS5pc0NvbnRlbnRT
Y3JpcHQgPSBzY3JpcHQuaXNDb250ZW50U2NyaXB0OworICAgICAgICAgICAgICAgIHRoaXMuX3Vp
U291cmNlQ29kZUJ5VVJMW3NvdXJjZVVSTF0gPSB1aVNvdXJjZUNvZGU7CisgICAgICAgICAgICAg
ICAgdGhpcy5fc291cmNlTWFwRm9yVUlTb3VyY2VDb2RlLnB1dCh1aVNvdXJjZUNvZGUsIHNvdXJj
ZU1hcCk7CisgICAgICAgICAgICAgICAgdWlTb3VyY2VDb2RlTGlzdC5wdXNoKHVpU291cmNlQ29k
ZSk7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgaWYgKHRoaXMuX3NjcmlwdEZvclNvdXJjZU1h
cC5nZXQoc291cmNlTWFwKSkgewogICAgICAgICAgICAgdGhpcy5fc291cmNlTWFwRm9yU2NyaXB0
SWRbc2NyaXB0LnNjcmlwdElkXSA9IHNvdXJjZU1hcDsKKyAgICAgICAgICAgIHRoaXMuX3Njcmlw
dEZvclNvdXJjZU1hcC5wdXQoc291cmNlTWFwLCBzY3JpcHQpOwogICAgICAgICAgICAgc2NyaXB0
LnNldFNvdXJjZU1hcHBpbmcodGhpcyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
IAotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlTGlzdCA9IFtdOwotICAgICAgICB2YXIgc291cmNl
VVJMcyA9IHNvdXJjZU1hcC5zb3VyY2VzKCk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
c291cmNlVVJMcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIHNvdXJjZVVSTCA9IHNv
dXJjZVVSTHNbaV07Ci0gICAgICAgICAgICBpZiAodGhpcy5fdWlTb3VyY2VDb2RlQnlVUkxbc291
cmNlVVJMXSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHZhciBzb3Vy
Y2VDb250ZW50ID0gc291cmNlTWFwLnNvdXJjZUNvbnRlbnQoc291cmNlVVJMKTsKLSAgICAgICAg
ICAgIHZhciBjb250ZW50UHJvdmlkZXI7Ci0gICAgICAgICAgICBpZiAoc291cmNlQ29udGVudCkK
LSAgICAgICAgICAgICAgICBjb250ZW50UHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXRp
Y0NvbnRlbnRQcm92aWRlcihXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5TY3JpcHQsIHNvdXJj
ZUNvbnRlbnQpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbnRlbnRQcm92
aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nQ29udGVudFByb3Zp
ZGVyKHNvdXJjZVVSTCk7Ci0gICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gbmV3IFdlYklu
c3BlY3Rvci5KYXZhU2NyaXB0U291cmNlKHNvdXJjZVVSTCwgbnVsbCwgY29udGVudFByb3ZpZGVy
LCBmYWxzZSk7Ci0gICAgICAgICAgICB1aVNvdXJjZUNvZGUuc2V0U291cmNlTWFwcGluZyh0aGlz
KTsKLSAgICAgICAgICAgIHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQgPSBzY3JpcHQuaXND
b250ZW50U2NyaXB0OwotICAgICAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlQnlVUkxbc291cmNl
VVJMXSA9IHVpU291cmNlQ29kZTsKLSAgICAgICAgICAgIHRoaXMuX3NvdXJjZU1hcEZvclVJU291
cmNlQ29kZS5wdXQodWlTb3VyY2VDb2RlLCBzb3VyY2VNYXApOwotICAgICAgICAgICAgdWlTb3Vy
Y2VDb2RlTGlzdC5wdXNoKHVpU291cmNlQ29kZSk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHVpU291cmNlQ29kZUxpc3QubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgdGhp
cy5fd29ya3NwYWNlLnByb2plY3QoKS5hZGRVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlTGlzdFtp
XSk7CiAgICAgICAgIH0KLQotICAgICAgICB0aGlzLl9zb3VyY2VNYXBGb3JTY3JpcHRJZFtzY3Jp
cHQuc2NyaXB0SWRdID0gc291cmNlTWFwOwotICAgICAgICB0aGlzLl9zY3JpcHRGb3JTb3VyY2VN
YXAucHV0KHNvdXJjZU1hcCwgc2NyaXB0KTsKLSAgICAgICAgc2NyaXB0LnNldFNvdXJjZU1hcHBp
bmcodGhpcyk7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1aVNvdXJjZUNvZGVMaXN0
Lmxlbmd0aDsgKytpKQotICAgICAgICAgICAgdGhpcy5fd29ya3NwYWNlLnByb2plY3QoKS5hZGRV
SVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlTGlzdFtpXSk7CisgICAgICAgIHRoaXMubG9hZFNvdXJj
ZU1hcEZvclNjcmlwdChzY3JpcHQsIGFkZFNvdXJjZU1hcC5iaW5kKHRoaXMpKTsKICAgICB9LAog
CiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSBzY3JpcHQKLSAg
ICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuU291cmNlTWFwUGFyc2VyfQorICAgICAqIEBwYXJh
bSB7ZnVuY3Rpb24oV2ViSW5zcGVjdG9yLlNvdXJjZU1hcFBhcnNlcil9IGNhbGxiYWNrCiAgICAg
ICovCi0gICAgbG9hZFNvdXJjZU1hcEZvclNjcmlwdDogZnVuY3Rpb24oc2NyaXB0KQorICAgIGxv
YWRTb3VyY2VNYXBGb3JTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlwdCwgY2FsbGJhY2spCiAgICAgewog
ICAgICAgICB2YXIgc291cmNlTWFwVVJMID0gV2ViSW5zcGVjdG9yLlNvdXJjZU1hcFBhcnNlci5w
cm90b3R5cGUuX2Nhbm9uaWNhbGl6ZVVSTChzY3JpcHQuc291cmNlTWFwVVJMLCBzY3JpcHQuc291
cmNlVVJMKTsKICAgICAgICAgdmFyIHNvdXJjZU1hcCA9IHRoaXMuX3NvdXJjZU1hcEJ5VVJMW3Nv
dXJjZU1hcFVSTF07Ci0gICAgICAgIGlmIChzb3VyY2VNYXApCi0gICAgICAgICAgICByZXR1cm4g
c291cmNlTWFwOwotCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogbWFrZSBz
ZW5kUmVxdWVzdCBhc3luYy4KLSAgICAgICAgICAgIHZhciByZXNwb25zZSA9IEluc3BlY3RvckZy
b250ZW5kSG9zdC5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHNvdXJjZU1hcFVSTCk7Ci0gICAg
ICAgICAgICBpZiAocmVzcG9uc2Uuc2xpY2UoMCwgMykgPT09ICIpXX0iKQotICAgICAgICAgICAg
ICAgIHJlc3BvbnNlID0gcmVzcG9uc2Uuc3Vic3RyaW5nKHJlc3BvbnNlLmluZGV4T2YoJ1xuJykp
OwotICAgICAgICAgICAgdmFyIHBheWxvYWQgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5Tb3Vy
Y2VNYXBQYXlsb2FkfSAqLyBKU09OLnBhcnNlKHJlc3BvbnNlKTsKLSAgICAgICAgICAgIHNvdXJj
ZU1hcCA9IG5ldyBXZWJJbnNwZWN0b3IuU291cmNlTWFwUGFyc2VyKHNvdXJjZU1hcFVSTCwgcGF5
bG9hZCk7Ci0gICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICAgICAgY29uc29sZS5lcnJvcihl
Lm1lc3NhZ2UpOwotICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIGlmIChzb3VyY2VN
YXApIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHNvdXJjZU1hcCk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBtYWtlIHNlbmRS
ZXF1ZXN0IGFzeW5jLgorICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IEluc3BlY3RvckZy
b250ZW5kSG9zdC5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHNvdXJjZU1hcFVSTCk7CisgICAg
ICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnNsaWNlKDAsIDMpID09PSAiKV19IikKKyAgICAgICAg
ICAgICAgICAgICAgcmVzcG9uc2UgPSByZXNwb25zZS5zdWJzdHJpbmcocmVzcG9uc2UuaW5kZXhP
ZignXG4nKSk7CisgICAgICAgICAgICAgICAgdmFyIHBheWxvYWQgPSAvKiogQHR5cGUge1dlYklu
c3BlY3Rvci5Tb3VyY2VNYXBQYXlsb2FkfSAqLyBKU09OLnBhcnNlKHJlc3BvbnNlKTsKKyAgICAg
ICAgICAgICAgICBzb3VyY2VNYXAgPSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZU1hcFBhcnNlcihz
b3VyY2VNYXBVUkwsIHBheWxvYWQpOworICAgICAgICAgICAgICAgIHRoaXMuX3NvdXJjZU1hcEJ5
VVJMW3NvdXJjZU1hcFVSTF0gPSBzb3VyY2VNYXA7CisgICAgICAgICAgICAgICAgY2FsbGJhY2so
c291cmNlTWFwKTsKKyAgICAgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgICAgIGNv
bnNvbGUuZXJyb3IoZS5tZXNzYWdlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAg
ICB0aGlzLl9zb3VyY2VNYXBCeVVSTFtzb3VyY2VNYXBVUkxdID0gc291cmNlTWFwOwotICAgICAg
ICByZXR1cm4gc291cmNlTWFwOwogICAgIH0sCiAKICAgICBfcmVzZXQ6IGZ1bmN0aW9uKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJTY3Jp
cHRNYXBwaW5nLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dl
clNjcmlwdE1hcHBpbmcuanMKaW5kZXggMTJjZTkyODAxMWQ5NmYyMDQ1ZmM5ZDZiNTVkZDVhZjg4
ZmNkMmIwNC4uNTE3MWI2NjE3MjRhZjc1Y2NkNjAwZWM5NDNmNTE1NTIwZThhOGU1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclNjcmlwdE1h
cHBpbmcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dl
clNjcmlwdE1hcHBpbmcuanMKQEAgLTUzLDI2ICs1MywzMCBAQCBXZWJJbnNwZWN0b3IuRGVidWdn
ZXJTY3JpcHRNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICBfcGFyc2VkU2NyaXB0U291cmNlOiBm
dW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHZhciBzY3JpcHQgPSAvKiogQHR5cGUge1dl
Ykluc3BlY3Rvci5TY3JpcHR9ICovIGV2ZW50LmRhdGE7Ci0gICAgICAgIHZhciBtYXBwaW5nID0g
dGhpcy5fbWFwcGluZ0ZvclNjcmlwdChzY3JpcHQpOwotICAgICAgICBtYXBwaW5nLmFkZFNjcmlw
dChzY3JpcHQpOworICAgICAgICBmdW5jdGlvbiBhZGRTY3JpcHRUb01hcHBpbmcobWFwcGluZykg
CisgICAgICAgIHsKKyAgICAgICAgICAgIG1hcHBpbmcuYWRkU2NyaXB0KHNjcmlwdCk7CisgICAg
ICAgIH0KKyAgICAgICAgdGhpcy5fbWFwcGluZ0ZvclNjcmlwdChzY3JpcHQsIGFkZFNjcmlwdFRv
TWFwcGluZyk7CiAgICAgfSwKIAogICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlNjcmlwdH0gc2NyaXB0Ci0gICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlNvdXJjZU1hcHBp
bmd9CisgICAgICogQHBhcmFtIHtmdW5jdGlvbihXZWJJbnNwZWN0b3IuU291cmNlTWFwcGluZyl9
IGNhbGxiYWNrCiAgICAgICovCi0gICAgX21hcHBpbmdGb3JTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlw
dCkKKyAgICBfbWFwcGluZ0ZvclNjcmlwdDogZnVuY3Rpb24oc2NyaXB0LCBjYWxsYmFjaykKICAg
ICB7CiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZXhwZXJpbWVudHNTZXR0aW5ncy5zbmlwcGV0
c1N1cHBvcnQuaXNFbmFibGVkKCkpIHsKICAgICAgICAgICAgIGlmICh0aGlzLl9zbmlwcGV0TWFw
cGluZyAmJiB0aGlzLl9zbmlwcGV0TWFwcGluZy5zbmlwcGV0SWRGb3JTb3VyY2VVUkwoc2NyaXB0
LnNvdXJjZVVSTCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NuaXBwZXRNYXBwaW5n
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zb3VyY2VN
YXBzRW5hYmxlZC5nZXQoKSAmJiBzY3JpcHQuc291cmNlTWFwVVJMKSB7Ci0gICAgICAgICAgICBp
ZiAodGhpcy5fY29tcGlsZXJNYXBwaW5nLmxvYWRTb3VyY2VNYXBGb3JTY3JpcHQoc2NyaXB0KSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY29tcGlsZXJNYXBwaW5nOworICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKHRoaXMuX3NuaXBwZXRNYXBwaW5nKTsKKyAgICAgICAgfSBlbHNlIGlm
IChXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc291cmNlTWFwc0VuYWJsZWQuZ2V0KCkgJiYgc2NyaXB0
LnNvdXJjZU1hcFVSTCkgeworICAgICAgICAgICAgZnVuY3Rpb24gZGlkTG9hZFNvdXJjZU1hcChz
b3VyY2VNYXApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5f
Y29tcGlsZXJNYXBwaW5nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuX2NvbXBp
bGVyTWFwcGluZy5sb2FkU291cmNlTWFwRm9yU2NyaXB0KHNjcmlwdCwgZGlkTG9hZFNvdXJjZU1h
cCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9yZXNvdXJj
ZU1hcHBpbmcpOwogICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlTWFw
cGluZzsKICAgICB9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164624</attachid>
            <date>2012-09-18 14:52:57 -0700</date>
            <delta_ts>2012-09-20 12:08:36 -0700</delta_ts>
            <desc>Oh that&apos;s where this is tested</desc>
            <filename>bug-97032-20120918145224.patch</filename>
            <type>text/plain</type>
            <size>10803</size>
            <attacher name="johnjbarton">johnjbarton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4OTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk0ZmMyZGExNGRiMTJl
MGRiOTZhYTcyNDUyM2UwY2QyMmI4MjAxYS4uZjdlN2EzOTA5YWM5YzI4NTliZjkzMzQ1MTY5ZmU1
M2MzNWQyNjczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA5LTE4ICBKb2hu
IEouIEJhcnRvbiAgPGpvaG5qYmFydG9uQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBsb2FkIHNvdXJjZW1hcHMgYXN5bmNocm9ub3VzbHksIHBhcnQgMS8yCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzAzMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhc3Mgc291cmNlTWFwUGFy
c2VyIGJ5IGNhbGxiYWNrIHJhdGhlciB0aGFuIHJldHVybiwgcHJlcGFyZXMgZm9yIGxvYWRpbmcg
dGhlIAorICAgICAgICBtYXAgYW5kIGNyZWF0aW5nIHRoZSBTb3VyY2VNYXBQYXJzZXIgYXN5bmMg
aW4gYSBmdXR1cmUgcGF0Y2guCisgICAgICAgIAorICAgICAgICBSZWZhY3RvcmluZywgY29kZSBj
b21waWxlcyAmIGFsbCB0ZXN0IHBhc3MuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0NvbXBpbGVyU2NyaXB0TWFwcGluZy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db21waWxl
clNjcmlwdE1hcHBpbmcucHJvdG90eXBlLmxvYWRTb3VyY2VNYXBGb3JTY3JpcHQpOgorICAgICAg
ICAgIGdldHMgYSBjYWxsYmFjayBzbyBjYWxsZXJzIGNhbiBiZSBhc3luYworICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJTY3JpcHRNYXBwaW5nLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuX3BhcnNlZFNjcmlwdFNv
dXJjZS5hZGRTY3JpcHRUb01hcHBpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
U2NyaXB0TWFwcGluZy5wcm90b3R5cGUuX3BhcnNlZFNjcmlwdFNvdXJjZSk6CisgICAgICAgICAg
cHJpdmF0ZSBmdW5jdGlvbiBpcyBldmVudCBsaXN0ZW5lciwgbm8gc3luYyBjYWxsZXJzCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5fbWFwcGlu
Z0ZvclNjcmlwdC5lbHNlLmdldCBkaWRMb2FkU291cmNlTWFwKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlclNjcmlwdE1hcHBpbmcucHJvdG90eXBlLl9tYXBwaW5nRm9yU2NyaXB0KToK
KyAgICAgICAgICBwcml2YXRlIGZ1bmN0aW9uIG9ubHkgY2FsbGVkIGJ5IF9wYXJzZWRTY3JpcHRT
b3VyY2UKKwogMjAxMi0wOS0xOCAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtFeHRlbnNpb25zIEFQSV0gcG9zdHBvbmUgcmVx
dWVzdHMgdG8gYWRkIGV4dGVuc2lvbnMgdW50aWwgZXh0ZW5zaW9uIHNlcnZlciBpcyBpbml0aWFs
aXplZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db21w
aWxlclNjcmlwdE1hcHBpbmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0NvbXBpbGVyU2NyaXB0TWFwcGluZy5qcwppbmRleCA3ZjRiOWRhZTNkMGE5ODBmYzdmYTRkNGY3
NzMyYzczOTk5MWJkM2ZiLi5kMDhkZmNkMjlkODg2ZDRlOGZhZTFkM2JlNmZlMmY1ZjBlNTMzOTU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVy
U2NyaXB0TWFwcGluZy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0NvbXBpbGVyU2NyaXB0TWFwcGluZy5qcwpAQCAtODksNjYgKzg5LDY4IEBAIFdlYkluc3BlY3Rv
ci5Db21waWxlclNjcmlwdE1hcHBpbmcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zY3Jp
cHRGb3JPcmlnaW5hbFVJU291cmNlLnB1dChvcmlnaW5hbFVJU291cmNlQ29kZSwgc2NyaXB0KTsK
ICAgICAgICAgdGhpcy5fd29ya3NwYWNlLnByb2plY3QoKS5hZGRVSVNvdXJjZUNvZGUob3JpZ2lu
YWxVSVNvdXJjZUNvZGUpOwogCi0gICAgICAgIHZhciBzb3VyY2VNYXAgPSB0aGlzLmxvYWRTb3Vy
Y2VNYXBGb3JTY3JpcHQoc2NyaXB0KTsKKyAgICAgICAgZnVuY3Rpb24gYWRkU291cmNlTWFwKHNv
dXJjZU1hcCkgCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9zY3JpcHRGb3JTb3Vy
Y2VNYXAuZ2V0KHNvdXJjZU1hcCkpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9zb3VyY2VNYXBG
b3JTY3JpcHRJZFtzY3JpcHQuc2NyaXB0SWRdID0gc291cmNlTWFwOworICAgICAgICAgICAgICAg
IHNjcmlwdC5zZXRTb3VyY2VNYXBwaW5nKHRoaXMpOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZUxpc3QgPSBbXTsK
KyAgICAgICAgICAgIHZhciBzb3VyY2VVUkxzID0gc291cmNlTWFwLnNvdXJjZXMoKTsKKyAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc291cmNlVVJMcy5sZW5ndGg7ICsraSkgeworICAg
ICAgICAgICAgICAgIHZhciBzb3VyY2VVUkwgPSBzb3VyY2VVUkxzW2ldOworICAgICAgICAgICAg
ICAgIGlmICh0aGlzLl91aVNvdXJjZUNvZGVCeVVSTFtzb3VyY2VVUkxdKQorICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB2YXIgc291cmNlQ29udGVudCA9IHNv
dXJjZU1hcC5zb3VyY2VDb250ZW50KHNvdXJjZVVSTCk7CisgICAgICAgICAgICAgICAgdmFyIGNv
bnRlbnRQcm92aWRlcjsKKyAgICAgICAgICAgICAgICBpZiAoc291cmNlQ29udGVudCkKKyAgICAg
ICAgICAgICAgICAgICAgY29udGVudFByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0aWND
b250ZW50UHJvdmlkZXIoV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU2NyaXB0LCBzb3VyY2VD
b250ZW50KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGNvbnRl
bnRQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nQ29udGVu
dFByb3ZpZGVyKHNvdXJjZVVSTCk7CisgICAgICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9
IG5ldyBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZShzb3VyY2VVUkwsIG51bGwsIGNvbnRl
bnRQcm92aWRlciwgZmFsc2UpOworICAgICAgICAgICAgICAgIHVpU291cmNlQ29kZS5zZXRTb3Vy
Y2VNYXBwaW5nKHRoaXMpOworICAgICAgICAgICAgICAgIHVpU291cmNlQ29kZS5pc0NvbnRlbnRT
Y3JpcHQgPSBzY3JpcHQuaXNDb250ZW50U2NyaXB0OworICAgICAgICAgICAgICAgIHRoaXMuX3Vp
U291cmNlQ29kZUJ5VVJMW3NvdXJjZVVSTF0gPSB1aVNvdXJjZUNvZGU7CisgICAgICAgICAgICAg
ICAgdGhpcy5fc291cmNlTWFwRm9yVUlTb3VyY2VDb2RlLnB1dCh1aVNvdXJjZUNvZGUsIHNvdXJj
ZU1hcCk7CisgICAgICAgICAgICAgICAgdWlTb3VyY2VDb2RlTGlzdC5wdXNoKHVpU291cmNlQ29k
ZSk7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgaWYgKHRoaXMuX3NjcmlwdEZvclNvdXJjZU1h
cC5nZXQoc291cmNlTWFwKSkgewogICAgICAgICAgICAgdGhpcy5fc291cmNlTWFwRm9yU2NyaXB0
SWRbc2NyaXB0LnNjcmlwdElkXSA9IHNvdXJjZU1hcDsKKyAgICAgICAgICAgIHRoaXMuX3Njcmlw
dEZvclNvdXJjZU1hcC5wdXQoc291cmNlTWFwLCBzY3JpcHQpOwogICAgICAgICAgICAgc2NyaXB0
LnNldFNvdXJjZU1hcHBpbmcodGhpcyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
IAotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlTGlzdCA9IFtdOwotICAgICAgICB2YXIgc291cmNl
VVJMcyA9IHNvdXJjZU1hcC5zb3VyY2VzKCk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
c291cmNlVVJMcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIHNvdXJjZVVSTCA9IHNv
dXJjZVVSTHNbaV07Ci0gICAgICAgICAgICBpZiAodGhpcy5fdWlTb3VyY2VDb2RlQnlVUkxbc291
cmNlVVJMXSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHZhciBzb3Vy
Y2VDb250ZW50ID0gc291cmNlTWFwLnNvdXJjZUNvbnRlbnQoc291cmNlVVJMKTsKLSAgICAgICAg
ICAgIHZhciBjb250ZW50UHJvdmlkZXI7Ci0gICAgICAgICAgICBpZiAoc291cmNlQ29udGVudCkK
LSAgICAgICAgICAgICAgICBjb250ZW50UHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXRp
Y0NvbnRlbnRQcm92aWRlcihXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5TY3JpcHQsIHNvdXJj
ZUNvbnRlbnQpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbnRlbnRQcm92
aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nQ29udGVudFByb3Zp
ZGVyKHNvdXJjZVVSTCk7Ci0gICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gbmV3IFdlYklu
c3BlY3Rvci5KYXZhU2NyaXB0U291cmNlKHNvdXJjZVVSTCwgbnVsbCwgY29udGVudFByb3ZpZGVy
LCBmYWxzZSk7Ci0gICAgICAgICAgICB1aVNvdXJjZUNvZGUuc2V0U291cmNlTWFwcGluZyh0aGlz
KTsKLSAgICAgICAgICAgIHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQgPSBzY3JpcHQuaXND
b250ZW50U2NyaXB0OwotICAgICAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlQnlVUkxbc291cmNl
VVJMXSA9IHVpU291cmNlQ29kZTsKLSAgICAgICAgICAgIHRoaXMuX3NvdXJjZU1hcEZvclVJU291
cmNlQ29kZS5wdXQodWlTb3VyY2VDb2RlLCBzb3VyY2VNYXApOwotICAgICAgICAgICAgdWlTb3Vy
Y2VDb2RlTGlzdC5wdXNoKHVpU291cmNlQ29kZSk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHVpU291cmNlQ29kZUxpc3QubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgdGhp
cy5fd29ya3NwYWNlLnByb2plY3QoKS5hZGRVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlTGlzdFtp
XSk7CiAgICAgICAgIH0KLQotICAgICAgICB0aGlzLl9zb3VyY2VNYXBGb3JTY3JpcHRJZFtzY3Jp
cHQuc2NyaXB0SWRdID0gc291cmNlTWFwOwotICAgICAgICB0aGlzLl9zY3JpcHRGb3JTb3VyY2VN
YXAucHV0KHNvdXJjZU1hcCwgc2NyaXB0KTsKLSAgICAgICAgc2NyaXB0LnNldFNvdXJjZU1hcHBp
bmcodGhpcyk7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1aVNvdXJjZUNvZGVMaXN0
Lmxlbmd0aDsgKytpKQotICAgICAgICAgICAgdGhpcy5fd29ya3NwYWNlLnByb2plY3QoKS5hZGRV
SVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlTGlzdFtpXSk7CisgICAgICAgIHRoaXMubG9hZFNvdXJj
ZU1hcEZvclNjcmlwdChzY3JpcHQsIGFkZFNvdXJjZU1hcC5iaW5kKHRoaXMpKTsKICAgICB9LAog
CiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSBzY3JpcHQKLSAg
ICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuU291cmNlTWFwUGFyc2VyfQorICAgICAqIEBwYXJh
bSB7ZnVuY3Rpb24oV2ViSW5zcGVjdG9yLlNvdXJjZU1hcFBhcnNlcil9IGNhbGxiYWNrCiAgICAg
ICovCi0gICAgbG9hZFNvdXJjZU1hcEZvclNjcmlwdDogZnVuY3Rpb24oc2NyaXB0KQorICAgIGxv
YWRTb3VyY2VNYXBGb3JTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlwdCwgY2FsbGJhY2spCiAgICAgewog
ICAgICAgICB2YXIgc291cmNlTWFwVVJMID0gV2ViSW5zcGVjdG9yLlNvdXJjZU1hcFBhcnNlci5w
cm90b3R5cGUuX2Nhbm9uaWNhbGl6ZVVSTChzY3JpcHQuc291cmNlTWFwVVJMLCBzY3JpcHQuc291
cmNlVVJMKTsKICAgICAgICAgdmFyIHNvdXJjZU1hcCA9IHRoaXMuX3NvdXJjZU1hcEJ5VVJMW3Nv
dXJjZU1hcFVSTF07Ci0gICAgICAgIGlmIChzb3VyY2VNYXApCi0gICAgICAgICAgICByZXR1cm4g
c291cmNlTWFwOwotCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogbWFrZSBz
ZW5kUmVxdWVzdCBhc3luYy4KLSAgICAgICAgICAgIHZhciByZXNwb25zZSA9IEluc3BlY3RvckZy
b250ZW5kSG9zdC5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHNvdXJjZU1hcFVSTCk7Ci0gICAg
ICAgICAgICBpZiAocmVzcG9uc2Uuc2xpY2UoMCwgMykgPT09ICIpXX0iKQotICAgICAgICAgICAg
ICAgIHJlc3BvbnNlID0gcmVzcG9uc2Uuc3Vic3RyaW5nKHJlc3BvbnNlLmluZGV4T2YoJ1xuJykp
OwotICAgICAgICAgICAgdmFyIHBheWxvYWQgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5Tb3Vy
Y2VNYXBQYXlsb2FkfSAqLyBKU09OLnBhcnNlKHJlc3BvbnNlKTsKLSAgICAgICAgICAgIHNvdXJj
ZU1hcCA9IG5ldyBXZWJJbnNwZWN0b3IuU291cmNlTWFwUGFyc2VyKHNvdXJjZU1hcFVSTCwgcGF5
bG9hZCk7Ci0gICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICAgICAgY29uc29sZS5lcnJvcihl
Lm1lc3NhZ2UpOwotICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIGlmIChzb3VyY2VN
YXApIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHNvdXJjZU1hcCk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBtYWtlIHNlbmRS
ZXF1ZXN0IGFzeW5jLgorICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IEluc3BlY3RvckZy
b250ZW5kSG9zdC5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHNvdXJjZU1hcFVSTCk7CisgICAg
ICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnNsaWNlKDAsIDMpID09PSAiKV19IikKKyAgICAgICAg
ICAgICAgICAgICAgcmVzcG9uc2UgPSByZXNwb25zZS5zdWJzdHJpbmcocmVzcG9uc2UuaW5kZXhP
ZignXG4nKSk7CisgICAgICAgICAgICAgICAgdmFyIHBheWxvYWQgPSAvKiogQHR5cGUge1dlYklu
c3BlY3Rvci5Tb3VyY2VNYXBQYXlsb2FkfSAqLyBKU09OLnBhcnNlKHJlc3BvbnNlKTsKKyAgICAg
ICAgICAgICAgICBzb3VyY2VNYXAgPSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZU1hcFBhcnNlcihz
b3VyY2VNYXBVUkwsIHBheWxvYWQpOworICAgICAgICAgICAgICAgIHRoaXMuX3NvdXJjZU1hcEJ5
VVJMW3NvdXJjZU1hcFVSTF0gPSBzb3VyY2VNYXA7CisgICAgICAgICAgICAgICAgY2FsbGJhY2so
c291cmNlTWFwKTsKKyAgICAgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgICAgIGNv
bnNvbGUuZXJyb3IoZS5tZXNzYWdlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAg
ICB0aGlzLl9zb3VyY2VNYXBCeVVSTFtzb3VyY2VNYXBVUkxdID0gc291cmNlTWFwOwotICAgICAg
ICByZXR1cm4gc291cmNlTWFwOwogICAgIH0sCiAKICAgICBfcmVzZXQ6IGZ1bmN0aW9uKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJTY3Jp
cHRNYXBwaW5nLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dl
clNjcmlwdE1hcHBpbmcuanMKaW5kZXggMTJjZTkyODAxMWQ5NmYyMDQ1ZmM5ZDZiNTVkZDVhZjg4
ZmNkMmIwNC4uOGQ5OWY3N2RiMjk5MzE5ZmQwNDFkZjMyNGFlNjM5ODllMTM3ZTk4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclNjcmlwdE1h
cHBpbmcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dl
clNjcmlwdE1hcHBpbmcuanMKQEAgLTUzLDI2ICs1MywzMCBAQCBXZWJJbnNwZWN0b3IuRGVidWdn
ZXJTY3JpcHRNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICBfcGFyc2VkU2NyaXB0U291cmNlOiBm
dW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHZhciBzY3JpcHQgPSAvKiogQHR5cGUge1dl
Ykluc3BlY3Rvci5TY3JpcHR9ICovIGV2ZW50LmRhdGE7Ci0gICAgICAgIHZhciBtYXBwaW5nID0g
dGhpcy5fbWFwcGluZ0ZvclNjcmlwdChzY3JpcHQpOwotICAgICAgICBtYXBwaW5nLmFkZFNjcmlw
dChzY3JpcHQpOworICAgICAgICBmdW5jdGlvbiBhZGRTY3JpcHRUb01hcHBpbmcobWFwcGluZykg
CisgICAgICAgIHsKKyAgICAgICAgICAgIG1hcHBpbmcuYWRkU2NyaXB0KHNjcmlwdCk7CisgICAg
ICAgIH0KKyAgICAgICAgdGhpcy5fbWFwcGluZ0ZvclNjcmlwdChzY3JpcHQsIGFkZFNjcmlwdFRv
TWFwcGluZyk7CiAgICAgfSwKIAogICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlNjcmlwdH0gc2NyaXB0Ci0gICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlNvdXJjZU1hcHBp
bmd9CisgICAgICogQHBhcmFtIHtmdW5jdGlvbihXZWJJbnNwZWN0b3IuU291cmNlTWFwcGluZyl9
IGNhbGxiYWNrCiAgICAgICovCi0gICAgX21hcHBpbmdGb3JTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlw
dCkKKyAgICBfbWFwcGluZ0ZvclNjcmlwdDogZnVuY3Rpb24oc2NyaXB0LCBjYWxsYmFjaykKICAg
ICB7CiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZXhwZXJpbWVudHNTZXR0aW5ncy5zbmlwcGV0
c1N1cHBvcnQuaXNFbmFibGVkKCkpIHsKICAgICAgICAgICAgIGlmICh0aGlzLl9zbmlwcGV0TWFw
cGluZyAmJiB0aGlzLl9zbmlwcGV0TWFwcGluZy5zbmlwcGV0SWRGb3JTb3VyY2VVUkwoc2NyaXB0
LnNvdXJjZVVSTCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NuaXBwZXRNYXBwaW5n
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zb3VyY2VN
YXBzRW5hYmxlZC5nZXQoKSAmJiBzY3JpcHQuc291cmNlTWFwVVJMKSB7Ci0gICAgICAgICAgICBp
ZiAodGhpcy5fY29tcGlsZXJNYXBwaW5nLmxvYWRTb3VyY2VNYXBGb3JTY3JpcHQoc2NyaXB0KSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY29tcGlsZXJNYXBwaW5nOworICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKHRoaXMuX3NuaXBwZXRNYXBwaW5nKTsKKyAgICAgICAgfSBlbHNlIGlm
IChXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc291cmNlTWFwc0VuYWJsZWQuZ2V0KCkgJiYgc2NyaXB0
LnNvdXJjZU1hcFVSTCkgeworICAgICAgICAgICAgZnVuY3Rpb24gZGlkTG9hZFNvdXJjZU1hcChz
b3VyY2VNYXApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5f
Y29tcGlsZXJNYXBwaW5nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuX2NvbXBp
bGVyTWFwcGluZy5sb2FkU291cmNlTWFwRm9yU2NyaXB0KHNjcmlwdCwgZGlkTG9hZFNvdXJjZU1h
cC5iaW5kKHRoaXMpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHRo
aXMuX3Jlc291cmNlTWFwcGluZyk7CiAgICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdGhpcy5f
cmVzb3VyY2VNYXBwaW5nOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2NvbXBpbGVyLXNjcmlwdC1tYXBwaW5nLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb21waWxlci1zY3JpcHQtbWFwcGluZy5odG1sCmluZGV4
IDEyY2QxYzI4OTkwZGQ5NjVjYWU5ZmQ2NTgxOWQ0ZTQ5YTg1OWYxOGQuLjRkNWQ4Yzk4MTA3YTI5
MTExOTcyNjU1OWExZjdlMTA1ZGY3ZGM5NGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2NvbXBpbGVyLXNjcmlwdC1tYXBwaW5nLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29tcGlsZXItc2NyaXB0LW1hcHBpbmcuaHRtbApA
QCAtMjAwLDEwICsyMDAsMTUgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB2YXIgc2Ny
aXB0ID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVTY3JpcHRNb2NrKCJjb21waWxlZC5qcyIsIDAsIDAs
IHRydWUsICIiKTsKICAgICAgICAgICAgIHNjcmlwdC5zb3VyY2VNYXBVUkwgPSAiaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL2luc3BlY3Rvci9yZXNvdXJjZXMvc291cmNlLW1hcC5qc29uXyI7CiAgICAg
ICAgICAgICBjb25zb2xlLmVycm9yID0gZnVuY3Rpb24oKSB7fTsgLy8gRXJyb3IgbWVzc2FnZSBp
cyBwbGF0Zm9ybSBkZXBlbmRlbnQuCi0gICAgICAgICAgICBkZWJ1Z2dlclNjcmlwdE1hcHBpbmcu
X3BhcnNlZFNjcmlwdFNvdXJjZSh7ZGF0YTpzY3JpcHR9KTsKLSAgICAgICAgICAgIHZhciB1aUxv
Y2F0aW9uID0gc2NyaXB0LnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKDAsIDApOwotICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQodWlMb2NhdGlvbi51aVNvdXJjZUNvZGUudXJsKTsK
LSAgICAgICAgICAgIG5leHQoKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gYWRkU2NyaXB0VG9N
YXBwaW5nKG1hcHBpbmcpIAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1hcHBpbmcu
YWRkU2NyaXB0KHNjcmlwdCk7CisgICAgICAgICAgICAgICAgdmFyIHVpTG9jYXRpb24gPSBzY3Jp
cHQucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oMCwgMCk7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQodWlMb2NhdGlvbi51aVNvdXJjZUNvZGUudXJsKTsKKyAgICAgICAg
ICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWJ1Z2dlclNjcmlw
dE1hcHBpbmcuX21hcHBpbmdGb3JTY3JpcHQoe2RhdGE6c2NyaXB0fSwgYWRkU2NyaXB0VG9NYXBw
aW5nKTsKICAgICAgICAgfQogICAgIF0pOwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164962</attachid>
            <date>2012-09-20 12:08:39 -0700</date>
            <delta_ts>2012-09-26 07:35:40 -0700</delta_ts>
            <desc>rebase and respond to review</desc>
            <filename>bug-97032-20120920120804.patch</filename>
            <type>text/plain</type>
            <size>11805</size>
            <attacher name="johnjbarton">johnjbarton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGFlNGI2Y2QxYzllZWEw
OWY4MzE3ODJiZGIxNjhhNjFhODRkMmNkMC4uNjI4NDQ5MTY3ODc2NWVmNWQ2ODU5MTlmNDMzYTRk
YTdlNmVjYWZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA5LTE4ICBKb2hu
IEouIEJhcnRvbiAgPGpvaG5qYmFydG9uQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBsb2FkIHNvdXJjZW1hcHMgYXN5bmNocm9ub3VzbHksIHBhcnQgMS8yCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzAzMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhc3Mgc291cmNlTWFwUGFy
c2VyIGJ5IGNhbGxiYWNrIHJhdGhlciB0aGFuIHJldHVybjsgcmV0dXJuIG51bGwgaWYgYSBzY3Jp
cHQKKyAgICAgICAgZG9lcyBub3QgeWV0IGhhdmUgYSBzb3VyY2VNYXBwaW5nLiAKKyAgICAgICAg
UHJlcGFyZXMgZm9yIGxvYWRpbmcgdGhlIG1hcCBhbmQgY3JlYXRpbmcgdGhlIFNvdXJjZU1hcFBh
cnNlciBhc3luYyBpbiBhIGZ1dHVyZSBwYXRjaC4KKyAgICAgICAgCisgICAgICAgIFJlZmFjdG9y
aW5nLCBjb2RlIGNvbXBpbGVzICYgYWxsIHRlc3QgcGFzcy4KKworICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvQ29tcGlsZXJTY3JpcHRNYXBwaW5nLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbXBpbGVyU2NyaXB0TWFwcGluZy5wcm90b3R5cGUubG9hZFNvdXJjZU1hcEZvclNjcmlw
dCk6CisgICAgICAgICAgZ2V0cyBhIGNhbGxiYWNrIHNvIGNhbGxlcnMgY2FuIGJlIGFzeW5jCisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclNjcmlwdE1hcHBpbmcuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5fcGFy
c2VkU2NyaXB0U291cmNlLmFkZFNjcmlwdFRvTWFwcGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRGVidWdnZXJTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5fcGFyc2VkU2NyaXB0U291cmNlKToK
KyAgICAgICAgICBwcml2YXRlIGZ1bmN0aW9uIGlzIGV2ZW50IGxpc3RlbmVyLCBubyBzeW5jIGNh
bGxlcnMKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNjcmlwdE1hcHBpbmcucHJvdG90
eXBlLl9tYXBwaW5nRm9yU2NyaXB0LmVsc2UuZ2V0IGRpZExvYWRTb3VyY2VNYXApOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuX21hcHBpbmdG
b3JTY3JpcHQpOgorICAgICAgICAgIHByaXZhdGUgZnVuY3Rpb24gb25seSBjYWxsZWQgYnkgX3Bh
cnNlZFNjcmlwdFNvdXJjZQorCiAyMDEyLTA5LTIwICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZm
cmFpeEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBpc1N0YXJ0Q29sdW1uIGluIHRoZSBi
b3JkZXIgY29sbGFwc2luZyBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0NvbXBpbGVyU2NyaXB0TWFwcGluZy5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQ29tcGlsZXJTY3JpcHRNYXBwaW5nLmpzCmluZGV4IDdmNGI5ZGFl
M2QwYTk4MGZjN2ZhNGQ0Zjc3MzJjNzM5OTkxYmQzZmIuLmQwOGRmY2QyOWQ4ODZkNGU4ZmFlMWQz
YmU2ZmUyZjVmMGU1MzM5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvQ29tcGlsZXJTY3JpcHRNYXBwaW5nLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQ29tcGlsZXJTY3JpcHRNYXBwaW5nLmpzCkBAIC04OSw2NiArODks
NjggQEAgV2ViSW5zcGVjdG9yLkNvbXBpbGVyU2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMuX3NjcmlwdEZvck9yaWdpbmFsVUlTb3VyY2UucHV0KG9yaWdpbmFsVUlTb3Vy
Y2VDb2RlLCBzY3JpcHQpOwogICAgICAgICB0aGlzLl93b3Jrc3BhY2UucHJvamVjdCgpLmFkZFVJ
U291cmNlQ29kZShvcmlnaW5hbFVJU291cmNlQ29kZSk7CiAKLSAgICAgICAgdmFyIHNvdXJjZU1h
cCA9IHRoaXMubG9hZFNvdXJjZU1hcEZvclNjcmlwdChzY3JpcHQpOworICAgICAgICBmdW5jdGlv
biBhZGRTb3VyY2VNYXAoc291cmNlTWFwKSAKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHRo
aXMuX3NjcmlwdEZvclNvdXJjZU1hcC5nZXQoc291cmNlTWFwKSkgeworICAgICAgICAgICAgICAg
IHRoaXMuX3NvdXJjZU1hcEZvclNjcmlwdElkW3NjcmlwdC5zY3JpcHRJZF0gPSBzb3VyY2VNYXA7
CisgICAgICAgICAgICAgICAgc2NyaXB0LnNldFNvdXJjZU1hcHBpbmcodGhpcyk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgdWlTb3Vy
Y2VDb2RlTGlzdCA9IFtdOworICAgICAgICAgICAgdmFyIHNvdXJjZVVSTHMgPSBzb3VyY2VNYXAu
c291cmNlcygpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzb3VyY2VVUkxzLmxl
bmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFyIHNvdXJjZVVSTCA9IHNvdXJjZVVSTHNb
aV07CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3VpU291cmNlQ29kZUJ5VVJMW3NvdXJjZVVS
TF0pCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIHZhciBz
b3VyY2VDb250ZW50ID0gc291cmNlTWFwLnNvdXJjZUNvbnRlbnQoc291cmNlVVJMKTsKKyAgICAg
ICAgICAgICAgICB2YXIgY29udGVudFByb3ZpZGVyOworICAgICAgICAgICAgICAgIGlmIChzb3Vy
Y2VDb250ZW50KQorICAgICAgICAgICAgICAgICAgICBjb250ZW50UHJvdmlkZXIgPSBuZXcgV2Vi
SW5zcGVjdG9yLlN0YXRpY0NvbnRlbnRQcm92aWRlcihXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBl
cy5TY3JpcHQsIHNvdXJjZUNvbnRlbnQpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgY29udGVudFByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5Db21waWxlclNv
dXJjZU1hcHBpbmdDb250ZW50UHJvdmlkZXIoc291cmNlVVJMKTsKKyAgICAgICAgICAgICAgICB2
YXIgdWlTb3VyY2VDb2RlID0gbmV3IFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlKHNvdXJj
ZVVSTCwgbnVsbCwgY29udGVudFByb3ZpZGVyLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgdWlT
b3VyY2VDb2RlLnNldFNvdXJjZU1hcHBpbmcodGhpcyk7CisgICAgICAgICAgICAgICAgdWlTb3Vy
Y2VDb2RlLmlzQ29udGVudFNjcmlwdCA9IHNjcmlwdC5pc0NvbnRlbnRTY3JpcHQ7CisgICAgICAg
ICAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlQnlVUkxbc291cmNlVVJMXSA9IHVpU291cmNlQ29k
ZTsKKyAgICAgICAgICAgICAgICB0aGlzLl9zb3VyY2VNYXBGb3JVSVNvdXJjZUNvZGUucHV0KHVp
U291cmNlQ29kZSwgc291cmNlTWFwKTsKKyAgICAgICAgICAgICAgICB1aVNvdXJjZUNvZGVMaXN0
LnB1c2godWlTb3VyY2VDb2RlKTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICBpZiAodGhpcy5f
c2NyaXB0Rm9yU291cmNlTWFwLmdldChzb3VyY2VNYXApKSB7CiAgICAgICAgICAgICB0aGlzLl9z
b3VyY2VNYXBGb3JTY3JpcHRJZFtzY3JpcHQuc2NyaXB0SWRdID0gc291cmNlTWFwOworICAgICAg
ICAgICAgdGhpcy5fc2NyaXB0Rm9yU291cmNlTWFwLnB1dChzb3VyY2VNYXAsIHNjcmlwdCk7CiAg
ICAgICAgICAgICBzY3JpcHQuc2V0U291cmNlTWFwcGluZyh0aGlzKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQogCi0gICAgICAgIHZhciB1aVNvdXJjZUNvZGVMaXN0ID0gW107Ci0g
ICAgICAgIHZhciBzb3VyY2VVUkxzID0gc291cmNlTWFwLnNvdXJjZXMoKTsKLSAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBzb3VyY2VVUkxzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2
YXIgc291cmNlVVJMID0gc291cmNlVVJMc1tpXTsKLSAgICAgICAgICAgIGlmICh0aGlzLl91aVNv
dXJjZUNvZGVCeVVSTFtzb3VyY2VVUkxdKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgdmFyIHNvdXJjZUNvbnRlbnQgPSBzb3VyY2VNYXAuc291cmNlQ29udGVudChzb3Vy
Y2VVUkwpOwotICAgICAgICAgICAgdmFyIGNvbnRlbnRQcm92aWRlcjsKLSAgICAgICAgICAgIGlm
IChzb3VyY2VDb250ZW50KQotICAgICAgICAgICAgICAgIGNvbnRlbnRQcm92aWRlciA9IG5ldyBX
ZWJJbnNwZWN0b3IuU3RhdGljQ29udGVudFByb3ZpZGVyKFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5
cGVzLlNjcmlwdCwgc291cmNlQ29udGVudCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgY29udGVudFByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5Db21waWxlclNvdXJjZU1h
cHBpbmdDb250ZW50UHJvdmlkZXIoc291cmNlVVJMKTsKLSAgICAgICAgICAgIHZhciB1aVNvdXJj
ZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2Uoc291cmNlVVJMLCBudWxs
LCBjb250ZW50UHJvdmlkZXIsIGZhbHNlKTsKLSAgICAgICAgICAgIHVpU291cmNlQ29kZS5zZXRT
b3VyY2VNYXBwaW5nKHRoaXMpOwotICAgICAgICAgICAgdWlTb3VyY2VDb2RlLmlzQ29udGVudFNj
cmlwdCA9IHNjcmlwdC5pc0NvbnRlbnRTY3JpcHQ7Ci0gICAgICAgICAgICB0aGlzLl91aVNvdXJj
ZUNvZGVCeVVSTFtzb3VyY2VVUkxdID0gdWlTb3VyY2VDb2RlOwotICAgICAgICAgICAgdGhpcy5f
c291cmNlTWFwRm9yVUlTb3VyY2VDb2RlLnB1dCh1aVNvdXJjZUNvZGUsIHNvdXJjZU1hcCk7Ci0g
ICAgICAgICAgICB1aVNvdXJjZUNvZGVMaXN0LnB1c2godWlTb3VyY2VDb2RlKTsKKyAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdWlTb3VyY2VDb2RlTGlzdC5sZW5ndGg7ICsraSkKKyAg
ICAgICAgICAgICAgICB0aGlzLl93b3Jrc3BhY2UucHJvamVjdCgpLmFkZFVJU291cmNlQ29kZSh1
aVNvdXJjZUNvZGVMaXN0W2ldKTsKICAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX3NvdXJjZU1h
cEZvclNjcmlwdElkW3NjcmlwdC5zY3JpcHRJZF0gPSBzb3VyY2VNYXA7Ci0gICAgICAgIHRoaXMu
X3NjcmlwdEZvclNvdXJjZU1hcC5wdXQoc291cmNlTWFwLCBzY3JpcHQpOwotICAgICAgICBzY3Jp
cHQuc2V0U291cmNlTWFwcGluZyh0aGlzKTsKLQotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHVpU291cmNlQ29kZUxpc3QubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0aGlzLl93b3Jrc3Bh
Y2UucHJvamVjdCgpLmFkZFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGVMaXN0W2ldKTsKKyAgICAg
ICAgdGhpcy5sb2FkU291cmNlTWFwRm9yU2NyaXB0KHNjcmlwdCwgYWRkU291cmNlTWFwLmJpbmQo
dGhpcykpOwogICAgIH0sCiAKICAgICAvKioKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5T
Y3JpcHR9IHNjcmlwdAotICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5Tb3VyY2VNYXBQYXJz
ZXJ9CisgICAgICogQHBhcmFtIHtmdW5jdGlvbihXZWJJbnNwZWN0b3IuU291cmNlTWFwUGFyc2Vy
KX0gY2FsbGJhY2sKICAgICAgKi8KLSAgICBsb2FkU291cmNlTWFwRm9yU2NyaXB0OiBmdW5jdGlv
bihzY3JpcHQpCisgICAgbG9hZFNvdXJjZU1hcEZvclNjcmlwdDogZnVuY3Rpb24oc2NyaXB0LCBj
YWxsYmFjaykKICAgICB7CiAgICAgICAgIHZhciBzb3VyY2VNYXBVUkwgPSBXZWJJbnNwZWN0b3Iu
U291cmNlTWFwUGFyc2VyLnByb3RvdHlwZS5fY2Fub25pY2FsaXplVVJMKHNjcmlwdC5zb3VyY2VN
YXBVUkwsIHNjcmlwdC5zb3VyY2VVUkwpOwogICAgICAgICB2YXIgc291cmNlTWFwID0gdGhpcy5f
c291cmNlTWFwQnlVUkxbc291cmNlTWFwVVJMXTsKLSAgICAgICAgaWYgKHNvdXJjZU1hcCkKLSAg
ICAgICAgICAgIHJldHVybiBzb3VyY2VNYXA7Ci0KLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAg
IC8vIEZJWE1FOiBtYWtlIHNlbmRSZXF1ZXN0IGFzeW5jLgotICAgICAgICAgICAgdmFyIHJlc3Bv
bnNlID0gSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoc291
cmNlTWFwVVJMKTsKLSAgICAgICAgICAgIGlmIChyZXNwb25zZS5zbGljZSgwLCAzKSA9PT0gIild
fSIpCi0gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSByZXNwb25zZS5zdWJzdHJpbmcocmVzcG9u
c2UuaW5kZXhPZignXG4nKSk7Ci0gICAgICAgICAgICB2YXIgcGF5bG9hZCA9IC8qKiBAdHlwZSB7
V2ViSW5zcGVjdG9yLlNvdXJjZU1hcFBheWxvYWR9ICovIEpTT04ucGFyc2UocmVzcG9uc2UpOwot
ICAgICAgICAgICAgc291cmNlTWFwID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VNYXBQYXJzZXIo
c291cmNlTWFwVVJMLCBwYXlsb2FkKTsKLSAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAgICAgICAg
ICBjb25zb2xlLmVycm9yKGUubWVzc2FnZSk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAg
ICAgICAgaWYgKHNvdXJjZU1hcCkgeworICAgICAgICAgICAgY2FsbGJhY2soc291cmNlTWFwKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgLy8g
RklYTUU6IG1ha2Ugc2VuZFJlcXVlc3QgYXN5bmMuCisgICAgICAgICAgICAgICAgdmFyIHJlc3Bv
bnNlID0gSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoc291
cmNlTWFwVVJMKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc2xpY2UoMCwgMykgPT09
ICIpXX0iKQorICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IHJlc3BvbnNlLnN1YnN0cmlu
ZyhyZXNwb25zZS5pbmRleE9mKCdcbicpKTsKKyAgICAgICAgICAgICAgICB2YXIgcGF5bG9hZCA9
IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlNvdXJjZU1hcFBheWxvYWR9ICovIEpTT04ucGFyc2Uo
cmVzcG9uc2UpOworICAgICAgICAgICAgICAgIHNvdXJjZU1hcCA9IG5ldyBXZWJJbnNwZWN0b3Iu
U291cmNlTWFwUGFyc2VyKHNvdXJjZU1hcFVSTCwgcGF5bG9hZCk7CisgICAgICAgICAgICAgICAg
dGhpcy5fc291cmNlTWFwQnlVUkxbc291cmNlTWFwVVJMXSA9IHNvdXJjZU1hcDsKKyAgICAgICAg
ICAgICAgICBjYWxsYmFjayhzb3VyY2VNYXApOworICAgICAgICAgICAgfSBjYXRjaChlKSB7Cisg
ICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlLm1lc3NhZ2UpOworICAgICAgICAgICAgfQog
ICAgICAgICB9Ci0gICAgICAgIHRoaXMuX3NvdXJjZU1hcEJ5VVJMW3NvdXJjZU1hcFVSTF0gPSBz
b3VyY2VNYXA7Ci0gICAgICAgIHJldHVybiBzb3VyY2VNYXA7CiAgICAgfSwKIAogICAgIF9yZXNl
dDogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9EZWJ1Z2dlclNjcmlwdE1hcHBpbmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RlYnVnZ2VyU2NyaXB0TWFwcGluZy5qcwppbmRleCAxMmNlOTI4MDExZDk2ZjIw
NDVmYzlkNmI1NWRkNWFmODhmY2QyYjA0Li5lZjEyNWJkODQ5YmE3YzRiODM3Y2JiZGY5NjlkNDdk
ODg1YWQ2YTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0RlYnVnZ2VyU2NyaXB0TWFwcGluZy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RlYnVnZ2VyU2NyaXB0TWFwcGluZy5qcwpAQCAtNTMsMjYgKzUzLDMxIEBAIFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlclNjcmlwdE1hcHBpbmcucHJvdG90eXBlID0gewogICAgIF9wYXJz
ZWRTY3JpcHRTb3VyY2U6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHNjcmlw
dCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0gKi8gZXZlbnQuZGF0YTsKLSAgICAg
ICAgdmFyIG1hcHBpbmcgPSB0aGlzLl9tYXBwaW5nRm9yU2NyaXB0KHNjcmlwdCk7Ci0gICAgICAg
IG1hcHBpbmcuYWRkU2NyaXB0KHNjcmlwdCk7CisgICAgICAgIGZ1bmN0aW9uIGFkZFNjcmlwdFRv
TWFwcGluZyhtYXBwaW5nKSAKKyAgICAgICAgeworICAgICAgICAgICAgbWFwcGluZy5hZGRTY3Jp
cHQoc2NyaXB0KTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9tYXBwaW5nRm9yU2NyaXB0KHNj
cmlwdCwgYWRkU2NyaXB0VG9NYXBwaW5nKTsKICAgICB9LAogCiAgICAgLyoqCiAgICAgICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSBzY3JpcHQKLSAgICAgKiBAcmV0dXJuIHtXZWJJbnNw
ZWN0b3IuU291cmNlTWFwcGluZ30KKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKFdlYkluc3BlY3Rv
ci5Tb3VyY2VNYXBwaW5nKX0gY2FsbGJhY2sKICAgICAgKi8KLSAgICBfbWFwcGluZ0ZvclNjcmlw
dDogZnVuY3Rpb24oc2NyaXB0KQorICAgIF9tYXBwaW5nRm9yU2NyaXB0OiBmdW5jdGlvbihzY3Jp
cHQsIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5leHBlcmltZW50
c1NldHRpbmdzLnNuaXBwZXRzU3VwcG9ydC5pc0VuYWJsZWQoKSkgewotICAgICAgICAgICAgaWYg
KHRoaXMuX3NuaXBwZXRNYXBwaW5nICYmIHRoaXMuX3NuaXBwZXRNYXBwaW5nLnNuaXBwZXRJZEZv
clNvdXJjZVVSTChzY3JpcHQuc291cmNlVVJMKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhp
cy5fc25pcHBldE1hcHBpbmc7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoV2ViSW5zcGVjdG9y
LnNldHRpbmdzLnNvdXJjZU1hcHNFbmFibGVkLmdldCgpICYmIHNjcmlwdC5zb3VyY2VNYXBVUkwp
IHsKLSAgICAgICAgICAgIGlmICh0aGlzLl9jb21waWxlck1hcHBpbmcubG9hZFNvdXJjZU1hcEZv
clNjcmlwdChzY3JpcHQpKQotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb21waWxlck1h
cHBpbmc7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZXhwZXJpbWVudHNTZXR0aW5ncy5zbmlw
cGV0c1N1cHBvcnQuaXNFbmFibGVkKCkgJiYKKyAgICAgICAgICAgIHRoaXMuX3NuaXBwZXRNYXBw
aW5nICYmIAorICAgICAgICAgICAgdGhpcy5fc25pcHBldE1hcHBpbmcuc25pcHBldElkRm9yU291
cmNlVVJMKHNjcmlwdC5zb3VyY2VVUkwpKSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2sodGhp
cy5fc25pcHBldE1hcHBpbmcpOworICAgICAgICB9IGVsc2UgaWYgKFdlYkluc3BlY3Rvci5zZXR0
aW5ncy5zb3VyY2VNYXBzRW5hYmxlZC5nZXQoKSAmJiBzY3JpcHQuc291cmNlTWFwVVJMKSB7Cisg
ICAgICAgICAgICBmdW5jdGlvbiBkaWRMb2FkU291cmNlTWFwKHNvdXJjZU1hcCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9jb21waWxlck1hcHBpbmcpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy5fY29tcGlsZXJNYXBwaW5nLmxvYWRTb3Vy
Y2VNYXBGb3JTY3JpcHQoc2NyaXB0LCBkaWRMb2FkU291cmNlTWFwLmJpbmQodGhpcykpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fcmVzb3VyY2VNYXBwaW5n
KTsKICAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZU1hcHBpbmc7CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9T
Y3JpcHQuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qcwpp
bmRleCA5MjBhYzI2NzUwYTVhZjQwZWU1NTcxZjdkM2E1NDA2MTM5NWIzOWIwLi44MmNhMDg4NDYw
YTFhMmNhNjY0MmZhMmYzYjVmNWI4Njc5YWE3ZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qcwpAQCAtMTc0LDYgKzE3NCw5IEBAIFdlYkluc3BlY3Rv
ci5TY3JpcHQucHJvdG90eXBlID0gewogICAgICAqLwogICAgIHJhd0xvY2F0aW9uVG9VSUxvY2F0
aW9uOiBmdW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgeworICAgICAgICBp
ZiAoIXRoaXMuX3NvdXJjZU1hcHBpbmcpICAvLyBlZyB0aGUgYXN5bmMgc291cmNlIG1hcCBsb2Fk
aW5nIGhhcyBub3QgY29tcGxldGVkLgorICAgICAgICAgICAgcmV0dXJuIG51bGw7IAorCiAgICAg
ICAgIHZhciB1aUxvY2F0aW9uID0gdGhpcy5fc291cmNlTWFwcGluZy5yYXdMb2NhdGlvblRvVUlM
b2NhdGlvbihuZXcgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb24odGhpcy5zY3Jp
cHRJZCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyIHx8IDApKTsKICAgICAgICAgcmV0dXJuIHVp
TG9jYXRpb24udWlTb3VyY2VDb2RlLm92ZXJyaWRlTG9jYXRpb24odWlMb2NhdGlvbik7CiAgICAg
fSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbXBpbGVy
LXNjcmlwdC1tYXBwaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9j
b21waWxlci1zY3JpcHQtbWFwcGluZy5odG1sCmluZGV4IDEyY2QxYzI4OTkwZGQ5NjVjYWU5ZmQ2
NTgxOWQ0ZTQ5YTg1OWYxOGQuLjRkNWQ4Yzk4MTA3YTI5MTExOTcyNjU1OWExZjdlMTA1ZGY3ZGM5
NGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbXBpbGVy
LXNjcmlwdC1tYXBwaW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvY29tcGlsZXItc2NyaXB0LW1hcHBpbmcuaHRtbApAQCAtMjAwLDEwICsyMDAsMTUgQEAgZnVu
Y3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB2YXIgc2NyaXB0ID0gSW5zcGVjdG9yVGVzdC5jcmVh
dGVTY3JpcHRNb2NrKCJjb21waWxlZC5qcyIsIDAsIDAsIHRydWUsICIiKTsKICAgICAgICAgICAg
IHNjcmlwdC5zb3VyY2VNYXBVUkwgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL2luc3BlY3Rvci9y
ZXNvdXJjZXMvc291cmNlLW1hcC5qc29uXyI7CiAgICAgICAgICAgICBjb25zb2xlLmVycm9yID0g
ZnVuY3Rpb24oKSB7fTsgLy8gRXJyb3IgbWVzc2FnZSBpcyBwbGF0Zm9ybSBkZXBlbmRlbnQuCi0g
ICAgICAgICAgICBkZWJ1Z2dlclNjcmlwdE1hcHBpbmcuX3BhcnNlZFNjcmlwdFNvdXJjZSh7ZGF0
YTpzY3JpcHR9KTsKLSAgICAgICAgICAgIHZhciB1aUxvY2F0aW9uID0gc2NyaXB0LnJhd0xvY2F0
aW9uVG9VSUxvY2F0aW9uKDAsIDApOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQodWlMb2NhdGlvbi51aVNvdXJjZUNvZGUudXJsKTsKLSAgICAgICAgICAgIG5leHQoKTsKKwor
ICAgICAgICAgICAgZnVuY3Rpb24gYWRkU2NyaXB0VG9NYXBwaW5nKG1hcHBpbmcpIAorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIG1hcHBpbmcuYWRkU2NyaXB0KHNjcmlwdCk7CisgICAg
ICAgICAgICAgICAgdmFyIHVpTG9jYXRpb24gPSBzY3JpcHQucmF3TG9jYXRpb25Ub1VJTG9jYXRp
b24oMCwgMCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQodWlMb2Nh
dGlvbi51aVNvdXJjZUNvZGUudXJsKTsKKyAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBkZWJ1Z2dlclNjcmlwdE1hcHBpbmcuX21hcHBpbmdGb3JTY3Jp
cHQoe2RhdGE6c2NyaXB0fSwgYWRkU2NyaXB0VG9NYXBwaW5nKTsKICAgICAgICAgfQogICAgIF0p
OwogfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>