<?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>108073</bug_id>
          
          <creation_ts>2013-01-28 03:53:38 -0800</creation_ts>
          <short_desc>Web Inspector: Allow user to change dock side by dragging toolbar</short_desc>
          <delta_ts>2013-02-04 06:45:05 -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>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dmitry Gozman">dgozman</reporter>
          <assigned_to name="Dmitry Gozman">dgozman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>817674</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry Gozman">dgozman</who>
    <bug_when>2013-01-28 03:53:38 -0800</bug_when>
    <thetext>We should allow user to change dock side (bottom to right and vice versa) by dragging the toolbar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817678</commentid>
    <comment_count>1</comment_count>
      <attachid>184968</attachid>
    <who name="Dmitry Gozman">dgozman</who>
    <bug_when>2013-01-28 04:12:11 -0800</bug_when>
    <thetext>Created attachment 184968
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817689</commentid>
    <comment_count>2</comment_count>
      <attachid>184968</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-01-28 04:40:19 -0800</bug_when>
    <thetext>Comment on attachment 184968
Patch

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

&gt; Source/WebCore/inspector/front-end/DockController.js:198
&gt; +    changeDockSide: function(side) {

Why extracting a method that does pure delegation?

&gt; Source/WebCore/inspector/front-end/Toolbar.js:46
&gt; +    this._isWindowMoveSupported = WebInspector.platformFlavor() == WebInspector.PlatformFlavor.MacLeopard || WebInspector.platformFlavor() == WebInspector.PlatformFlavor.MacSnowLeopard;

Why is this platform-specific?

&gt; Source/WebCore/inspector/front-end/Toolbar.js:102
&gt; +     * @return {boolean?}

This is a boolean query, why is it nullable? Use !! below instead.

&gt; Source/WebCore/inspector/front-end/Toolbar.js:112
&gt; +    _isUndocked: function()

ditto

&gt; Source/WebCore/inspector/front-end/Toolbar.js:137
&gt; +        this._startDeltaX = window.innerWidth - event.clientX;

Delta between what and what?

&gt; Source/WebCore/inspector/front-end/Toolbar.js:176
&gt; +            // After changing dock side, drag events start working unpredictably, so we disable the handling.

Why is that? It should not be unpredictable

&gt; Source/WebCore/inspector/front-end/Toolbar.js:179
&gt; +                if (delta &lt; this._startDeltaX / 2) {

Consider renaming delta to something else - otherwise it is hard to follow the logic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817709</commentid>
    <comment_count>3</comment_count>
      <attachid>184968</attachid>
    <who name="Dmitry Gozman">dgozman</who>
    <bug_when>2013-01-28 05:55:14 -0800</bug_when>
    <thetext>Comment on attachment 184968
Patch

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

&gt;&gt; Source/WebCore/inspector/front-end/DockController.js:198
&gt;&gt; +    changeDockSide: function(side) {
&gt; 
&gt; Why extracting a method that does pure delegation?

Because DockController should own dock-related methods, including this one.
Do you mean we should call |InspectorFrontendHost.requestDockSide| in arbitrary places?

&gt;&gt; Source/WebCore/inspector/front-end/Toolbar.js:46
&gt;&gt; +    this._isWindowMoveSupported = WebInspector.platformFlavor() == WebInspector.PlatformFlavor.MacLeopard || WebInspector.platformFlavor() == WebInspector.PlatformFlavor.MacSnowLeopard;
&gt; 
&gt; Why is this platform-specific?

I&apos;ve just moved the code from _toolbarDragStart method. Looks like |moveWindowBy| does not work on other platforms. I will look into this later.

&gt;&gt; Source/WebCore/inspector/front-end/Toolbar.js:102
&gt;&gt; +     * @return {boolean?}
&gt; 
&gt; This is a boolean query, why is it nullable? Use !! below instead.

Done.

&gt;&gt; Source/WebCore/inspector/front-end/Toolbar.js:176
&gt;&gt; +            // After changing dock side, drag events start working unpredictably, so we disable the handling.
&gt; 
&gt; Why is that? It should not be unpredictable

On linux, you are not able to drag to the top of current position after changing dock side. You have to release mouse and start new drag for it to properly work.
Adjusted the comment.

&gt;&gt; Source/WebCore/inspector/front-end/Toolbar.js:179
&gt;&gt; +                if (delta &lt; this._startDeltaX / 2) {
&gt; 
&gt; Consider renaming delta to something else - otherwise it is hard to follow the logic.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817710</commentid>
    <comment_count>4</comment_count>
      <attachid>184974</attachid>
    <who name="Dmitry Gozman">dgozman</who>
    <bug_when>2013-01-28 05:57:15 -0800</bug_when>
    <thetext>Created attachment 184974
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820043</commentid>
    <comment_count>5</comment_count>
      <attachid>184974</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-01-30 03:32:22 -0800</bug_when>
    <thetext>Comment on attachment 184974
Patch

Lets disabled resize via drag for now for better UX.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820073</commentid>
    <comment_count>6</comment_count>
      <attachid>185464</attachid>
    <who name="Dmitry Gozman">dgozman</who>
    <bug_when>2013-01-30 04:08:49 -0800</bug_when>
    <thetext>Created attachment 185464
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820076</commentid>
    <comment_count>7</comment_count>
      <attachid>185465</attachid>
    <who name="Dmitry Gozman">dgozman</who>
    <bug_when>2013-01-30 04:12:19 -0800</bug_when>
    <thetext>Created attachment 185465
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820084</commentid>
    <comment_count>8</comment_count>
      <attachid>185465</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-01-30 04:34:54 -0800</bug_when>
    <thetext>Comment on attachment 185465
Patch

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

&gt; Source/WebCore/inspector/front-end/DockController.js:198
&gt; +    changeDockSide: function(side) {

{ should go to the next line.

&gt; Source/WebCore/inspector/front-end/Toolbar.js:106
&gt; +        return !!(WebInspector.dockController &amp;&amp; WebInspector.dockController.dockSide() == WebInspector.DockController.State.DockedToBottom);

Should have been !!WebInspector.dockController &amp;&amp; WebInspector.dockController.isDockedToBottom();

&gt; Source/WebCore/inspector/front-end/Toolbar.js:-144
&gt; -            InspectorFrontendHost.setAttachedWindowHeight(height);

Mac port will get upset about regressing this. Especially given they don&apos;t support dock-to-right. You should maintain existing behavior for the ports that have Preferences.showDockToRight === false.

&gt; Source/WebCore/inspector/front-end/UIUtils.js:100
&gt; +WebInspector.cancelDragEvents = function(element)

You should instead keep this private and allow elementDrag handler terminate current drag operation. For example, it could return &quot;true&quot; to terminate the drag. Otherwise this API becomes error prone</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820120</commentid>
    <comment_count>9</comment_count>
      <attachid>185465</attachid>
    <who name="Dmitry Gozman">dgozman</who>
    <bug_when>2013-01-30 05:31:17 -0800</bug_when>
    <thetext>Comment on attachment 185465
Patch

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

&gt;&gt; Source/WebCore/inspector/front-end/DockController.js:198
&gt;&gt; +    changeDockSide: function(side) {
&gt; 
&gt; { should go to the next line.

Done.

&gt;&gt; Source/WebCore/inspector/front-end/Toolbar.js:106
&gt;&gt; +        return !!(WebInspector.dockController &amp;&amp; WebInspector.dockController.dockSide() == WebInspector.DockController.State.DockedToBottom);
&gt; 
&gt; Should have been !!WebInspector.dockController &amp;&amp; WebInspector.dockController.isDockedToBottom();

Done.

&gt;&gt; Source/WebCore/inspector/front-end/Toolbar.js:-144
&gt;&gt; -            InspectorFrontendHost.setAttachedWindowHeight(height);
&gt; 
&gt; Mac port will get upset about regressing this. Especially given they don&apos;t support dock-to-right. You should maintain existing behavior for the ports that have Preferences.showDockToRight === false.

Fixed.

&gt;&gt; Source/WebCore/inspector/front-end/UIUtils.js:100
&gt;&gt; +WebInspector.cancelDragEvents = function(element)
&gt; 
&gt; You should instead keep this private and allow elementDrag handler terminate current drag operation. For example, it could return &quot;true&quot; to terminate the drag. Otherwise this API becomes error prone

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820123</commentid>
    <comment_count>10</comment_count>
      <attachid>185475</attachid>
    <who name="Dmitry Gozman">dgozman</who>
    <bug_when>2013-01-30 05:36:36 -0800</bug_when>
    <thetext>Created attachment 185475
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821336</commentid>
    <comment_count>11</comment_count>
      <attachid>185736</attachid>
    <who name="Dmitry Gozman">dgozman</who>
    <bug_when>2013-01-31 03:36:50 -0800</bug_when>
    <thetext>Created attachment 185736
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821341</commentid>
    <comment_count>12</comment_count>
      <attachid>185736</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-01-31 03:47:43 -0800</bug_when>
    <thetext>Comment on attachment 185736
Patch

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

&gt; Source/WebCore/inspector/front-end/DockController.js:67
&gt; +      return this._dockSide;

4 space indentation please.

&gt; Source/WebCore/inspector/front-end/DockController.js:193
&gt; +        InspectorFrontendHost.requestSetDockSide(side);

It still looks weird - why introducing a method that does nothing but delegation?

&gt; Source/WebCore/inspector/front-end/Toolbar.js:46
&gt; +    this._isWindowMoveSupported = WebInspector.platformFlavor() == WebInspector.PlatformFlavor.MacLeopard || WebInspector.platformFlavor() == WebInspector.PlatformFlavor.MacSnowLeopard;

WebInspector.platformFlavor would return MacLeopard Chromium&apos;s Mac port. You want (!Preferences.showDockToRight &amp;&amp; WebInspector.isMac())

&gt; Source/WebCore/inspector/front-end/Toolbar.js:122
&gt; +        if (WebInspector.port() == &quot;qt&quot;)

Scattered platforms checks does not look good. You should only install drag handler in case (this._isWindowMoveSupported || Preferences.showDockToRight). If fact, you probably want different drag handlers for better readability. Otherwise, you mix two different actions into single drag handling pipeline. Sorry for bringing it up so late, but it is so obvious now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821381</commentid>
    <comment_count>13</comment_count>
      <attachid>185748</attachid>
    <who name="Dmitry Gozman">dgozman</who>
    <bug_when>2013-01-31 04:35:46 -0800</bug_when>
    <thetext>Created attachment 185748
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821382</commentid>
    <comment_count>14</comment_count>
    <who name="Dmitry Gozman">dgozman</who>
    <bug_when>2013-01-31 04:38:16 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=185736&amp;action=review

&gt;&gt; Source/WebCore/inspector/front-end/DockController.js:67
&gt;&gt; +      return this._dockSide;
&gt; 
&gt; 4 space indentation please.

Done :)

&gt;&gt; Source/WebCore/inspector/front-end/DockController.js:193
&gt;&gt; +        InspectorFrontendHost.requestSetDockSide(side);
&gt; 
&gt; It still looks weird - why introducing a method that does nothing but delegation?

Ok, let&apos;s call InspectorFrontendHost directly.

&gt;&gt; Source/WebCore/inspector/front-end/Toolbar.js:46
&gt;&gt; +    this._isWindowMoveSupported = WebInspector.platformFlavor() == WebInspector.PlatformFlavor.MacLeopard || WebInspector.platformFlavor() == WebInspector.PlatformFlavor.MacSnowLeopard;
&gt; 
&gt; WebInspector.platformFlavor would return MacLeopard Chromium&apos;s Mac port. You want (!Preferences.showDockToRight &amp;&amp; WebInspector.isMac())

Looks like it&apos;s supported on each Mac port.

&gt;&gt; Source/WebCore/inspector/front-end/Toolbar.js:122
&gt;&gt; +        if (WebInspector.port() == &quot;qt&quot;)
&gt; 
&gt; Scattered platforms checks does not look good. You should only install drag handler in case (this._isWindowMoveSupported || Preferences.showDockToRight). If fact, you probably want different drag handlers for better readability. Otherwise, you mix two different actions into single drag handling pipeline. Sorry for bringing it up so late, but it is so obvious now.

It turned to be impossible to install different drag handlers: we should handle both undocked and docked situations always. I&apos;ve split implementation into 3 methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824252</commentid>
    <comment_count>15</comment_count>
      <attachid>185748</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-02-04 04:44:09 -0800</bug_when>
    <thetext>Comment on attachment 185748
Patch

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

Looks good! Please fix the style nits and reattach for automated landing!

&gt; Source/WebCore/inspector/front-end/Toolbar.js:158
&gt; +        else if (Preferences.showDockToRight)

Remove &quot;else&quot;

&gt; Source/WebCore/inspector/front-end/Toolbar.js:160
&gt; +        else

ditto

&gt; Source/WebCore/inspector/front-end/Toolbar.js:170
&gt; +        // We cannot call window.moveBy here because it restricts the movement

Just remove this comment...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824286</commentid>
    <comment_count>16</comment_count>
      <attachid>186358</attachid>
    <who name="Dmitry Gozman">dgozman</who>
    <bug_when>2013-02-04 05:48:32 -0800</bug_when>
    <thetext>Created attachment 186358
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824314</commentid>
    <comment_count>17</comment_count>
      <attachid>186358</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-04 06:45:00 -0800</bug_when>
    <thetext>Comment on attachment 186358
Patch

Clearing flags on attachment: 186358

Committed r141768: &lt;http://trac.webkit.org/changeset/141768&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824315</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-04 06:45:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184968</attachid>
            <date>2013-01-28 04:12:11 -0800</date>
            <delta_ts>2013-01-28 05:57:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108073-20130128160858.patch</filename>
            <type>text/plain</type>
            <size>7815</size>
            <attacher name="Dmitry Gozman">dgozman</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDk2MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEzLTAxLTI4ICBEbWl0cnkg
R296bWFuICA8ZGdvem1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
QWxsb3cgdXNlciB0byBjaGFuZ2UgZG9jayBzaWRlIGJ5IGRyYWdnaW5nIHRvb2xiYXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODA3MworCisgICAg
ICAgIERyYWdnaW5nIHRvb2xiYXIgdG8gdGhlIHJpZ2h0L2JvdHRvbSB3aWxsIGNoYW5nZSB0aGUg
ZG9jayBzaWRlIGFjY29yZGluZ2x5LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYmVjYXVzZSBvZiBwdXJlIGluc3BlY3RvciBV
SSBjaGFuZ2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RvY2tDb250cm9sbGVy
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRvY2tDb250cm9sbGVyLnByb3RvdHlwZS5fdG9n
Z2xlRG9ja1N0YXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Eb2NrQ29udHJvbGxlci5wcm90
b3R5cGUuY2hhbmdlRG9ja1NpZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVG9v
bGJhci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5faXNEb2NrZWRUb0JvdHRvbSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUuX2lzVW5kb2NrZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLl90b29sYmFyRHJhZ1N0YXJ0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5fdG9vbGJhckRyYWdFbmQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLl90b29sYmFyRHJhZyk6CisKIDIwMTMt
MDEtMjggIEFuZHJleSBBZGFpa2luICA8YWFuZHJleUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogW0NhbnZhc10gcmVmYWN0b3JpbmcgaW4gQ2FudmFzQWdlbnQgdG8gcmVk
dWNlIGNvZGUgZHVwcwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
b2NrQ29udHJvbGxlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RvY2tDb250cm9sbGVyLmpzCShyZXZpc2lvbiAxNDA5NTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RvY2tDb250cm9sbGVyLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC05MiwxNCArOTIsNiBAQCBXZWJJbnNwZWN0b3IuRG9ja0NvbnRyb2xsZXIucHJvdG90
eXBlID0KICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHJldHVybiB7Ym9vbGVhbn0KLSAgICAg
Ki8KLSAgICBpc0RvY2tlZFRvQm90dG9tOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1
cm4gdGhpcy5fZG9ja1NpZGUgPT0gV2ViSW5zcGVjdG9yLkRvY2tDb250cm9sbGVyLlN0YXRlLkRv
Y2tlZFRvQm90dG9tOwotICAgIH0sCi0KLSAgICAvKioKICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59
IHVuYXZhaWxhYmxlCiAgICAgICovCiAgICAgc2V0RG9ja2luZ1VuYXZhaWxhYmxlOiBmdW5jdGlv
bih1bmF2YWlsYWJsZSkKQEAgLTE5NSw4ICsxODcsMTYgQEAgV2ViSW5zcGVjdG9yLkRvY2tDb250
cm9sbGVyLnByb3RvdHlwZSA9CiAgICAgICAgIGNhc2UgImJvdHRvbSI6IGFjdGlvbiA9ICJib3R0
b20iOyBicmVhazsKICAgICAgICAgY2FzZSAicmlnaHQiOiBhY3Rpb24gPSAicmlnaHQiOyBicmVh
azsKICAgICAgICAgY2FzZSAidW5kb2NrIjogYWN0aW9uID0gInVuZG9ja2VkIjsgYnJlYWs7Cisg
ICAgICAgIGRlZmF1bHQ6IHJldHVybjsKICAgICAgICAgfQotICAgICAgICBJbnNwZWN0b3JGcm9u
dGVuZEhvc3QucmVxdWVzdFNldERvY2tTaWRlKGFjdGlvbik7CisgICAgICAgIHRoaXMuY2hhbmdl
RG9ja1NpZGUoYWN0aW9uKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJp
bmd9IHNpZGUKKyAgICAgKi8KKyAgICBjaGFuZ2VEb2NrU2lkZTogZnVuY3Rpb24oc2lkZSkgewor
ICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QucmVxdWVzdFNldERvY2tTaWRlKHNpZGUpOwog
ICAgIH0sCiAKICAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rvb2xiYXIuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Ub29sYmFyLmpzCShy
ZXZpc2lvbiAxNDA5NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rv
b2xiYXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDggQEAgV2ViSW5zcGVjdG9yLlRv
b2xiYXIgPSBmdW5jdGlvbigpCiAKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xvc2Ut
YnV0dG9uLWxlZnQiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX29uQ2xvc2UsIHRy
dWUpOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbG9zZS1idXR0b24tcmlnaHQiKS5h
ZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX29uQ2xvc2UsIHRydWUpOworCisgICAgdGhp
cy5faXNXaW5kb3dNb3ZlU3VwcG9ydGVkID0gV2ViSW5zcGVjdG9yLnBsYXRmb3JtRmxhdm9yKCkg
PT0gV2ViSW5zcGVjdG9yLlBsYXRmb3JtRmxhdm9yLk1hY0xlb3BhcmQgfHwgV2ViSW5zcGVjdG9y
LnBsYXRmb3JtRmxhdm9yKCkgPT0gV2ViSW5zcGVjdG9yLlBsYXRmb3JtRmxhdm9yLk1hY1Nub3dM
ZW9wYXJkOwogfQogCiBXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUgPSB7CkBAIC05Nywx
MSArOTksMTkgQEAgV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlID0gewogICAgIH0sCiAK
ICAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqIEByZXR1cm4ge2Jvb2xl
YW4/fQogICAgICAqLwogICAgIF9pc0RvY2tlZFRvQm90dG9tOiBmdW5jdGlvbigpCiAgICAgewot
ICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRvY2tDb250cm9sbGVyICYmIFdlYkluc3BlY3Rv
ci5kb2NrQ29udHJvbGxlci5pc0RvY2tlZFRvQm90dG9tKCk7CisgICAgICAgIHJldHVybiBXZWJJ
bnNwZWN0b3IuZG9ja0NvbnRyb2xsZXIgJiYgV2ViSW5zcGVjdG9yLmRvY2tDb250cm9sbGVyLmRv
Y2tTaWRlKCkgPT0gV2ViSW5zcGVjdG9yLkRvY2tDb250cm9sbGVyLlN0YXRlLkRvY2tlZFRvQm90
dG9tOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtib29sZWFuP30KKyAgICAg
Ki8KKyAgICBfaXNVbmRvY2tlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdl
Ykluc3BlY3Rvci5kb2NrQ29udHJvbGxlciAmJiBXZWJJbnNwZWN0b3IuZG9ja0NvbnRyb2xsZXIu
ZG9ja1NpZGUoKSA9PSBXZWJJbnNwZWN0b3IuRG9ja0NvbnRyb2xsZXIuU3RhdGUuVW5kb2NrZWQ7
CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTA5LDcgKzExOSwxMCBAQCBXZWJJbnNwZWN0b3IuVG9v
bGJhci5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3Rvb2xiYXJEcmFnU3RhcnQ6IGZ1bmN0
aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYgKCghdGhpcy5faXNEb2NrZWRUb0JvdHRvbSgp
ICYmIFdlYkluc3BlY3Rvci5wbGF0Zm9ybUZsYXZvcigpICE9PSBXZWJJbnNwZWN0b3IuUGxhdGZv
cm1GbGF2b3IuTWFjTGVvcGFyZCAmJiBXZWJJbnNwZWN0b3IucGxhdGZvcm1GbGF2b3IoKSAhPT0g
V2ViSW5zcGVjdG9yLlBsYXRmb3JtRmxhdm9yLk1hY1Nub3dMZW9wYXJkKSB8fCBXZWJJbnNwZWN0
b3IucG9ydCgpID09ICJxdCIpCisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IucG9ydCgpID09ICJx
dCIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKHRoaXMuX2lzVW5k
b2NrZWQoKSAmJiAhdGhpcy5faXNXaW5kb3dNb3ZlU3VwcG9ydGVkKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgICAgIHZhciB0YXJnZXQgPSBldmVudC50YXJnZXQ7CkBAIC0xMTks
OSArMTMyLDEyIEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAg
aWYgKHRhcmdldCAhPT0gdGhpcy5lbGVtZW50ICYmICF0YXJnZXQuaGFzU3R5bGVDbGFzcygidG9v
bGJhci1pdGVtIikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgdGhpcy5l
bGVtZW50Lmxhc3RTY3JlZW5YID0gZXZlbnQuc2NyZWVuWDsKLSAgICAgICAgdGhpcy5lbGVtZW50
Lmxhc3RTY3JlZW5ZID0gZXZlbnQuc2NyZWVuWTsKKyAgICAgICAgdGhpcy5fbGFzdFNjcmVlblgg
PSBldmVudC5zY3JlZW5YOworICAgICAgICB0aGlzLl9sYXN0U2NyZWVuWSA9IGV2ZW50LnNjcmVl
blk7CisgICAgICAgIHRoaXMuX3N0YXJ0RGVsdGFYID0gd2luZG93LmlubmVyV2lkdGggLSBldmVu
dC5jbGllbnRYOworICAgICAgICB0aGlzLl9zdGFydERlbHRhWSA9IHdpbmRvdy5pbm5lckhlaWdo
dCAtIGV2ZW50LmNsaWVudFk7CiAgICAgICAgIHRoaXMuX2xhc3RIZWlnaHREdXJpbmdEcmFnID0g
d2luZG93LmlubmVySGVpZ2h0OworICAgICAgICB0aGlzLl9pZ25vcmVEcmFnID0gZmFsc2U7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0sCiAKQEAgLTEzMCwyOSArMTQ2LDUzIEBAIFdlYklu
c3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gV2UgbWF5IG5vdCBnZXQg
dGhlIGRyYWcgZXZlbnQgYXQgdGhlIGVuZC4KICAgICAgICAgLy8gQXBwbHkgbGFzdCBjaGFuZ2Vz
IG1hbnVhbGx5LgogICAgICAgICB0aGlzLl90b29sYmFyRHJhZyhldmVudCk7Ci0gICAgICAgIGRl
bGV0ZSB0aGlzLmVsZW1lbnQubGFzdFNjcmVlblg7Ci0gICAgICAgIGRlbGV0ZSB0aGlzLmVsZW1l
bnQubGFzdFNjcmVlblk7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9sYXN0U2NyZWVuWDsKKyAgICAg
ICAgZGVsZXRlIHRoaXMuX2xhc3RTY3JlZW5ZOworICAgICAgICBkZWxldGUgdGhpcy5fc3RhcnRE
ZWx0YVg7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9zdGFydERlbHRhWTsKICAgICAgICAgZGVsZXRl
IHRoaXMuX2xhc3RIZWlnaHREdXJpbmdEcmFnOworICAgICAgICBkZWxldGUgdGhpcy5faWdub3Jl
RHJhZzsKICAgICB9LAogCiAgICAgX3Rvb2xiYXJEcmFnOiBmdW5jdGlvbihldmVudCkKICAgICB7
Ci0gICAgICAgIGlmICh0aGlzLl9pc0RvY2tlZFRvQm90dG9tKCkpIHsKLSAgICAgICAgICAgIHZh
ciBoZWlnaHQgPSB0aGlzLl9sYXN0SGVpZ2h0RHVyaW5nRHJhZyAtIChldmVudC5zY3JlZW5ZIC0g
dGhpcy5lbGVtZW50Lmxhc3RTY3JlZW5ZKTsKLSAgICAgICAgICAgIHRoaXMuX2xhc3RIZWlnaHRE
dXJpbmdEcmFnID0gaGVpZ2h0OworICAgICAgICBpZiAodGhpcy5faWdub3JlRHJhZykKKyAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNldEF0
dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdodCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICB2YXIgeCA9IGV2ZW50LnNjcmVlblggLSB0aGlzLmVsZW1lbnQubGFzdFNjcmVlblg7Ci0gICAg
ICAgICAgICB2YXIgeSA9IGV2ZW50LnNjcmVlblkgLSB0aGlzLmVsZW1lbnQubGFzdFNjcmVlblk7
CisgICAgICAgIGlmICh0aGlzLl9pc1VuZG9ja2VkKCkpIHsKKyAgICAgICAgICAgIHZhciB4ID0g
ZXZlbnQuc2NyZWVuWCAtIHRoaXMuX2xhc3RTY3JlZW5YOworICAgICAgICAgICAgdmFyIHkgPSBl
dmVudC5zY3JlZW5ZIC0gdGhpcy5fbGFzdFNjcmVlblk7CiAKICAgICAgICAgICAgIC8vIFdlIGNh
bm5vdCBjYWxsIHdpbmRvdy5tb3ZlQnkgaGVyZSBiZWNhdXNlIGl0IHJlc3RyaWN0cyB0aGUgbW92
ZW1lbnQKICAgICAgICAgICAgIC8vIG9mIHRoZSB3aW5kb3cgYXQgdGhlIGVkZ2VzLgogICAgICAg
ICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lm1vdmVXaW5kb3dCeSh4LCB5KTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9pc0RvY2tlZFRvQm90dG9tKCkpIHsKKyAg
ICAgICAgICAgICAgICB2YXIgaGVpZ2h0ID0gdGhpcy5fbGFzdEhlaWdodER1cmluZ0RyYWcgLSAo
ZXZlbnQuc2NyZWVuWSAtIHRoaXMuX2xhc3RTY3JlZW5ZKTsKKyAgICAgICAgICAgICAgICB0aGlz
Ll9sYXN0SGVpZ2h0RHVyaW5nRHJhZyA9IGhlaWdodDsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JGcm9udGVuZEhvc3Quc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQoaGVpZ2h0KTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gQWZ0ZXIgY2hhbmdpbmcgZG9jayBzaWRlLCBkcmFnIGV2
ZW50cyBzdGFydCB3b3JraW5nIHVucHJlZGljdGFibHksIHNvIHdlIGRpc2FibGUgdGhlIGhhbmRs
aW5nLgorICAgICAgICAgICAgaWYgKHRoaXMuX2lzRG9ja2VkVG9Cb3R0b20oKSkgeworICAgICAg
ICAgICAgICAgIHZhciBkZWx0YSA9IHdpbmRvdy5pbm5lcldpZHRoIC0gZXZlbnQuY2xpZW50WDsK
KyAgICAgICAgICAgICAgICBpZiAoZGVsdGEgPCB0aGlzLl9zdGFydERlbHRhWCAvIDIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvY2tDb250cm9sbGVyLmNoYW5nZURvY2tT
aWRlKFdlYkluc3BlY3Rvci5Eb2NrQ29udHJvbGxlci5TdGF0ZS5Eb2NrZWRUb1JpZ2h0KTsKKyAg
ICAgICAgICAgICAgICAgICAgdGhpcy5faWdub3JlRHJhZyA9IHRydWU7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgZGVsdGEgPSB3
aW5kb3cuaW5uZXJIZWlnaHQgLSBldmVudC5jbGllbnRZOworICAgICAgICAgICAgICAgIGlmIChk
ZWx0YSA8IHRoaXMuX3N0YXJ0RGVsdGFZIC8gMikgeworICAgICAgICAgICAgICAgICAgICB2YXIg
aGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0IC0gKHRoaXMuX3N0YXJ0RGVsdGFZIC0gZGVsdGEp
OworICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9ja0NvbnRyb2xsZXIuY2hhbmdl
RG9ja1NpZGUoV2ViSW5zcGVjdG9yLkRvY2tDb250cm9sbGVyLlN0YXRlLkRvY2tlZFRvQm90dG9t
KTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNldEF0dGFjaGVk
V2luZG93SGVpZ2h0KGhlaWdodCk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2lnbm9yZURy
YWcgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfQog
Ci0gICAgICAgIHRoaXMuZWxlbWVudC5sYXN0U2NyZWVuWCA9IGV2ZW50LnNjcmVlblg7Ci0gICAg
ICAgIHRoaXMuZWxlbWVudC5sYXN0U2NyZWVuWSA9IGV2ZW50LnNjcmVlblk7CisgICAgICAgIHRo
aXMuX2xhc3RTY3JlZW5YID0gZXZlbnQuc2NyZWVuWDsKKyAgICAgICAgdGhpcy5fbGFzdFNjcmVl
blkgPSBldmVudC5zY3JlZW5ZOwogCiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAg
ICAgfSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184974</attachid>
            <date>2013-01-28 05:57:15 -0800</date>
            <delta_ts>2013-01-30 04:08:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108073-20130128175402.patch</filename>
            <type>text/plain</type>
            <size>8027</size>
            <attacher name="Dmitry Gozman">dgozman</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDk2NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEzLTAxLTI4ICBEbWl0cnkg
R296bWFuICA8ZGdvem1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
QWxsb3cgdXNlciB0byBjaGFuZ2UgZG9jayBzaWRlIGJ5IGRyYWdnaW5nIHRvb2xiYXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODA3MworCisgICAg
ICAgIERyYWdnaW5nIHRvb2xiYXIgdG8gdGhlIHJpZ2h0L2JvdHRvbSB3aWxsIGNoYW5nZSB0aGUg
ZG9jayBzaWRlIGFjY29yZGluZ2x5LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYmVjYXVzZSBvZiBwdXJlIGluc3BlY3RvciBV
SSBjaGFuZ2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RvY2tDb250cm9sbGVy
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRvY2tDb250cm9sbGVyLnByb3RvdHlwZS5fdG9n
Z2xlRG9ja1N0YXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Eb2NrQ29udHJvbGxlci5wcm90
b3R5cGUuY2hhbmdlRG9ja1NpZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVG9v
bGJhci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5faXNEb2NrZWRUb0JvdHRvbSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUuX2lzVW5kb2NrZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLl90b29sYmFyRHJhZ1N0YXJ0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5fdG9vbGJhckRyYWdFbmQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLl90b29sYmFyRHJhZyk6CisKIDIwMTMt
MDEtMjggIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogW1JlZ3Jlc3Npb25dIFNlYXJjaCBhbGwgc291cmNlcyBzaG91bGQgbm90
IHNlYXJjaCBhY3Jvc3Mgc2VydmljZSBwcm9qZWN0cy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRG9ja0NvbnRyb2xsZXIuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Eb2NrQ29udHJvbGxlci5qcwkocmV2aXNpb24g
MTQwOTU1KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Eb2NrQ29udHJv
bGxlci5qcwkod29ya2luZyBjb3B5KQpAQCAtOTIsMTQgKzkyLDYgQEAgV2ViSW5zcGVjdG9yLkRv
Y2tDb250cm9sbGVyLnByb3RvdHlwZSA9CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEByZXR1
cm4ge2Jvb2xlYW59Ci0gICAgICovCi0gICAgaXNEb2NrZWRUb0JvdHRvbTogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2RvY2tTaWRlID09IFdlYkluc3BlY3Rvci5Eb2Nr
Q29udHJvbGxlci5TdGF0ZS5Eb2NrZWRUb0JvdHRvbTsKLSAgICB9LAotCi0gICAgLyoqCiAgICAg
ICogQHBhcmFtIHtib29sZWFufSB1bmF2YWlsYWJsZQogICAgICAqLwogICAgIHNldERvY2tpbmdV
bmF2YWlsYWJsZTogZnVuY3Rpb24odW5hdmFpbGFibGUpCkBAIC0xOTUsOCArMTg3LDE2IEBAIFdl
Ykluc3BlY3Rvci5Eb2NrQ29udHJvbGxlci5wcm90b3R5cGUgPQogICAgICAgICBjYXNlICJib3R0
b20iOiBhY3Rpb24gPSAiYm90dG9tIjsgYnJlYWs7CiAgICAgICAgIGNhc2UgInJpZ2h0IjogYWN0
aW9uID0gInJpZ2h0IjsgYnJlYWs7CiAgICAgICAgIGNhc2UgInVuZG9jayI6IGFjdGlvbiA9ICJ1
bmRvY2tlZCI7IGJyZWFrOworICAgICAgICBkZWZhdWx0OiByZXR1cm47CiAgICAgICAgIH0KLSAg
ICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnJlcXVlc3RTZXREb2NrU2lkZShhY3Rpb24pOwor
ICAgICAgICB0aGlzLmNoYW5nZURvY2tTaWRlKGFjdGlvbik7CisgICAgfSwKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzaWRlCisgICAgICovCisgICAgY2hhbmdlRG9ja1NpZGU6
IGZ1bmN0aW9uKHNpZGUpIHsKKyAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnJlcXVlc3RT
ZXREb2NrU2lkZShzaWRlKTsKICAgICB9LAogCiAgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3Iu
T2JqZWN0LnByb3RvdHlwZQpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Ub29sYmFyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvVG9vbGJhci5qcwkocmV2aXNpb24gMTQwOTU1KQorKysgU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Ub29sYmFyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw4
IEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyID0gZnVuY3Rpb24oKQogCiAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNsb3NlLWJ1dHRvbi1sZWZ0IikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2si
LCB0aGlzLl9vbkNsb3NlLCB0cnVlKTsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xv
c2UtYnV0dG9uLXJpZ2h0IikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9vbkNsb3Nl
LCB0cnVlKTsKKworICAgIHRoaXMuX2lzV2luZG93TW92ZVN1cHBvcnRlZCA9IFdlYkluc3BlY3Rv
ci5wbGF0Zm9ybUZsYXZvcigpID09IFdlYkluc3BlY3Rvci5QbGF0Zm9ybUZsYXZvci5NYWNMZW9w
YXJkIHx8IFdlYkluc3BlY3Rvci5wbGF0Zm9ybUZsYXZvcigpID09IFdlYkluc3BlY3Rvci5QbGF0
Zm9ybUZsYXZvci5NYWNTbm93TGVvcGFyZDsKIH0KIAogV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJv
dG90eXBlID0gewpAQCAtMTAxLDcgKzEwMywxNSBAQCBXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90
b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2lzRG9ja2VkVG9Cb3R0b206IGZ1bmN0aW9uKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZG9ja0NvbnRyb2xsZXIgJiYgV2ViSW5z
cGVjdG9yLmRvY2tDb250cm9sbGVyLmlzRG9ja2VkVG9Cb3R0b20oKTsKKyAgICAgICAgcmV0dXJu
ICEhKFdlYkluc3BlY3Rvci5kb2NrQ29udHJvbGxlciAmJiBXZWJJbnNwZWN0b3IuZG9ja0NvbnRy
b2xsZXIuZG9ja1NpZGUoKSA9PSBXZWJJbnNwZWN0b3IuRG9ja0NvbnRyb2xsZXIuU3RhdGUuRG9j
a2VkVG9Cb3R0b20pOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtib29sZWFu
fQorICAgICAqLworICAgIF9pc1VuZG9ja2VkOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBy
ZXR1cm4gISEoV2ViSW5zcGVjdG9yLmRvY2tDb250cm9sbGVyICYmIFdlYkluc3BlY3Rvci5kb2Nr
Q29udHJvbGxlci5kb2NrU2lkZSgpID09IFdlYkluc3BlY3Rvci5Eb2NrQ29udHJvbGxlci5TdGF0
ZS5VbmRvY2tlZCk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTA5LDcgKzExOSwxMCBAQCBXZWJJ
bnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3Rvb2xiYXJEcmFn
U3RhcnQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYgKCghdGhpcy5faXNEb2Nr
ZWRUb0JvdHRvbSgpICYmIFdlYkluc3BlY3Rvci5wbGF0Zm9ybUZsYXZvcigpICE9PSBXZWJJbnNw
ZWN0b3IuUGxhdGZvcm1GbGF2b3IuTWFjTGVvcGFyZCAmJiBXZWJJbnNwZWN0b3IucGxhdGZvcm1G
bGF2b3IoKSAhPT0gV2ViSW5zcGVjdG9yLlBsYXRmb3JtRmxhdm9yLk1hY1Nub3dMZW9wYXJkKSB8
fCBXZWJJbnNwZWN0b3IucG9ydCgpID09ICJxdCIpCisgICAgICAgIGlmIChXZWJJbnNwZWN0b3Iu
cG9ydCgpID09ICJxdCIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYg
KHRoaXMuX2lzVW5kb2NrZWQoKSAmJiAhdGhpcy5faXNXaW5kb3dNb3ZlU3VwcG9ydGVkKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIHZhciB0YXJnZXQgPSBldmVudC50YXJn
ZXQ7CkBAIC0xMTksOSArMTMyLDEyIEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZSA9
IHsKICAgICAgICAgaWYgKHRhcmdldCAhPT0gdGhpcy5lbGVtZW50ICYmICF0YXJnZXQuaGFzU3R5
bGVDbGFzcygidG9vbGJhci1pdGVtIikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICAgICAgdGhpcy5lbGVtZW50Lmxhc3RTY3JlZW5YID0gZXZlbnQuc2NyZWVuWDsKLSAgICAgICAg
dGhpcy5lbGVtZW50Lmxhc3RTY3JlZW5ZID0gZXZlbnQuc2NyZWVuWTsKKyAgICAgICAgdGhpcy5f
bGFzdFNjcmVlblggPSBldmVudC5zY3JlZW5YOworICAgICAgICB0aGlzLl9sYXN0U2NyZWVuWSA9
IGV2ZW50LnNjcmVlblk7CisgICAgICAgIHRoaXMuX3N0YXJ0RGlzdGFuY2VUb1JpZ2h0ID0gd2lu
ZG93LmlubmVyV2lkdGggLSBldmVudC5jbGllbnRYOworICAgICAgICB0aGlzLl9zdGFydERpbnN0
YW5jZVRvQm90dG9tID0gd2luZG93LmlubmVySGVpZ2h0IC0gZXZlbnQuY2xpZW50WTsKICAgICAg
ICAgdGhpcy5fbGFzdEhlaWdodER1cmluZ0RyYWcgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7CisgICAg
ICAgIHRoaXMuX2lnbm9yZURyYWcgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fSwKIApAQCAtMTMwLDI5ICsxNDYsNTUgQEAgV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBl
ID0gewogICAgICAgICAvLyBXZSBtYXkgbm90IGdldCB0aGUgZHJhZyBldmVudCBhdCB0aGUgZW5k
LgogICAgICAgICAvLyBBcHBseSBsYXN0IGNoYW5nZXMgbWFudWFsbHkuCiAgICAgICAgIHRoaXMu
X3Rvb2xiYXJEcmFnKGV2ZW50KTsKLSAgICAgICAgZGVsZXRlIHRoaXMuZWxlbWVudC5sYXN0U2Ny
ZWVuWDsKLSAgICAgICAgZGVsZXRlIHRoaXMuZWxlbWVudC5sYXN0U2NyZWVuWTsKKyAgICAgICAg
ZGVsZXRlIHRoaXMuX2xhc3RTY3JlZW5YOworICAgICAgICBkZWxldGUgdGhpcy5fbGFzdFNjcmVl
blk7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9zdGFydERpc3RhbmNlVG9SaWdodDsKKyAgICAgICAg
ZGVsZXRlIHRoaXMuX3N0YXJ0RGluc3RhbmNlVG9Cb3R0b207CiAgICAgICAgIGRlbGV0ZSB0aGlz
Ll9sYXN0SGVpZ2h0RHVyaW5nRHJhZzsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2lnbm9yZURyYWc7
CiAgICAgfSwKIAogICAgIF90b29sYmFyRHJhZzogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAg
ICAgICBpZiAodGhpcy5faXNEb2NrZWRUb0JvdHRvbSgpKSB7Ci0gICAgICAgICAgICB2YXIgaGVp
Z2h0ID0gdGhpcy5fbGFzdEhlaWdodER1cmluZ0RyYWcgLSAoZXZlbnQuc2NyZWVuWSAtIHRoaXMu
ZWxlbWVudC5sYXN0U2NyZWVuWSk7Ci0gICAgICAgICAgICB0aGlzLl9sYXN0SGVpZ2h0RHVyaW5n
RHJhZyA9IGhlaWdodDsKKyAgICAgICAgaWYgKHRoaXMuX2lnbm9yZURyYWcpCisgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5zZXRBdHRhY2hl
ZFdpbmRvd0hlaWdodChoZWlnaHQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdmFy
IHggPSBldmVudC5zY3JlZW5YIC0gdGhpcy5lbGVtZW50Lmxhc3RTY3JlZW5YOwotICAgICAgICAg
ICAgdmFyIHkgPSBldmVudC5zY3JlZW5ZIC0gdGhpcy5lbGVtZW50Lmxhc3RTY3JlZW5ZOworICAg
ICAgICBpZiAodGhpcy5faXNVbmRvY2tlZCgpKSB7CisgICAgICAgICAgICB2YXIgeCA9IGV2ZW50
LnNjcmVlblggLSB0aGlzLl9sYXN0U2NyZWVuWDsKKyAgICAgICAgICAgIHZhciB5ID0gZXZlbnQu
c2NyZWVuWSAtIHRoaXMuX2xhc3RTY3JlZW5ZOwogCiAgICAgICAgICAgICAvLyBXZSBjYW5ub3Qg
Y2FsbCB3aW5kb3cubW92ZUJ5IGhlcmUgYmVjYXVzZSBpdCByZXN0cmljdHMgdGhlIG1vdmVtZW50
CiAgICAgICAgICAgICAvLyBvZiB0aGUgd2luZG93IGF0IHRoZSBlZGdlcy4KICAgICAgICAgICAg
IEluc3BlY3RvckZyb250ZW5kSG9zdC5tb3ZlV2luZG93QnkoeCwgeSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBpZiAodGhpcy5faXNEb2NrZWRUb0JvdHRvbSgpKSB7CisgICAgICAg
ICAgICAgICAgdmFyIGhlaWdodCA9IHRoaXMuX2xhc3RIZWlnaHREdXJpbmdEcmFnIC0gKGV2ZW50
LnNjcmVlblkgLSB0aGlzLl9sYXN0U2NyZWVuWSk7CisgICAgICAgICAgICAgICAgdGhpcy5fbGFz
dEhlaWdodER1cmluZ0RyYWcgPSBoZWlnaHQ7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdodCk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIEFmdGVyIGNoYW5naW5nIGRvY2sgc2lkZSwgY3VycmVudCBkcmFn
IGV2ZW50IHdvcmtzIHVucHJlZGljdGFibHksIHNvIHdlIGRpc2FibGUgdGhlIGhhbmRsaW5nLgor
ICAgICAgICAgICAgLy8gTmV4dCBkcmFnIHdpbGwgYmUgZmluZSBhZ2Fpbi4KKyAgICAgICAgICAg
IGlmICh0aGlzLl9pc0RvY2tlZFRvQm90dG9tKCkpIHsKKyAgICAgICAgICAgICAgICB2YXIgZGlz
dGFuY2VUb1JpZ2h0ID0gd2luZG93LmlubmVyV2lkdGggLSBldmVudC5jbGllbnRYOworICAgICAg
ICAgICAgICAgIGlmIChkaXN0YW5jZVRvUmlnaHQgPCB0aGlzLl9zdGFydERpc3RhbmNlVG9SaWdo
dCAvIDIpIHsKKyAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvY2tDb250cm9sbGVy
LmNoYW5nZURvY2tTaWRlKFdlYkluc3BlY3Rvci5Eb2NrQ29udHJvbGxlci5TdGF0ZS5Eb2NrZWRU
b1JpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5faWdub3JlRHJhZyA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB2
YXIgZGlzdGFuY2VUb0JvdHRvbSA9IHdpbmRvdy5pbm5lckhlaWdodCAtIGV2ZW50LmNsaWVudFk7
CisgICAgICAgICAgICAgICAgaWYgKGRpc3RhbmNlVG9Cb3R0b20gPCB0aGlzLl9zdGFydERpbnN0
YW5jZVRvQm90dG9tIC8gMikgeworICAgICAgICAgICAgICAgICAgICAvLyBDaGFuZ2Ugd2luZG93
IGhlaWdodCwgc28gY3Vyc29yIGlzIHBvc2l0aW9uZWQgYXRvcCB0aGUgdG9vbGJhci4KKyAgICAg
ICAgICAgICAgICAgICAgdmFyIGhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCAtICh0aGlzLl9z
dGFydERpbnN0YW5jZVRvQm90dG9tIC0gZGlzdGFuY2VUb0JvdHRvbSk7CisgICAgICAgICAgICAg
ICAgICAgIFdlYkluc3BlY3Rvci5kb2NrQ29udHJvbGxlci5jaGFuZ2VEb2NrU2lkZShXZWJJbnNw
ZWN0b3IuRG9ja0NvbnRyb2xsZXIuU3RhdGUuRG9ja2VkVG9Cb3R0b20pOworICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3Quc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQoaGVp
Z2h0KTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5faWdub3JlRHJhZyA9IHRydWU7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5l
bGVtZW50Lmxhc3RTY3JlZW5YID0gZXZlbnQuc2NyZWVuWDsKLSAgICAgICAgdGhpcy5lbGVtZW50
Lmxhc3RTY3JlZW5ZID0gZXZlbnQuc2NyZWVuWTsKKyAgICAgICAgdGhpcy5fbGFzdFNjcmVlblgg
PSBldmVudC5zY3JlZW5YOworICAgICAgICB0aGlzLl9sYXN0U2NyZWVuWSA9IGV2ZW50LnNjcmVl
blk7CiAKICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICB9LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185464</attachid>
            <date>2013-01-30 04:08:49 -0800</date>
            <delta_ts>2013-01-30 04:12:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108073-20130130160534.patch</filename>
            <type>text/plain</type>
            <size>9429</size>
            <attacher name="Dmitry Gozman">dgozman</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTI1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAxLTMwICBEbWl0cnkg
R296bWFuICA8ZGdvem1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
QWxsb3cgdXNlciB0byBjaGFuZ2UgZG9jayBzaWRlIGJ5IGRyYWdnaW5nIHRvb2xiYXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODA3MworCisgICAg
ICAgIERyYWdnaW5nIHRvb2xiYXIgdG8gdGhlIHJpZ2h0L2JvdHRvbSB3aWxsIGNoYW5nZSB0aGUg
ZG9jayBzaWRlIGFjY29yZGluZ2x5CisgICAgICAgIGluc3RlYWQgb2YgY2hhbmdpbmcgdGhlIGlu
c3BlY3RvciB3aW5kb3cgaGVpZ2h0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYmVjYXVzZSBvZiBwdXJlIGluc3BlY3RvciBV
SSBjaGFuZ2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RvY2tDb250cm9sbGVy
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRvY2tDb250cm9sbGVyLnByb3RvdHlwZS5fdG9n
Z2xlRG9ja1N0YXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Eb2NrQ29udHJvbGxlci5wcm90
b3R5cGUuY2hhbmdlRG9ja1NpZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVG9v
bGJhci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5faXNEb2NrZWRUb0JvdHRvbSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUuX2lzVW5kb2NrZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLl90b29sYmFyRHJhZ1N0YXJ0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5fdG9vbGJhckRyYWdFbmQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLl90b29sYmFyRHJhZyk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LmNhbmNlbERyYWdFdmVudHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ0Vu
ZCk6CisKIDIwMTMtMDEtMzAgIEFuZHJleSBBZGFpa2luICA8YWFuZHJleUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW0NhbnZhc10gc3VwcG9ydCBpbnN0cnVtZW50aW5n
IGNhbnZhc2VzIGluIGlmcmFtZXMgKGZyb250ZW5kIHNpZGUpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RvY2tDb250cm9sbGVyLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRG9ja0NvbnRyb2xsZXIuanMJKHJldmlz
aW9uIDE0MDk1NSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRG9ja0Nv
bnRyb2xsZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTkyLDE0ICs5Miw2IEBAIFdlYkluc3BlY3Rv
ci5Eb2NrQ29udHJvbGxlci5wcm90b3R5cGUgPQogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBA
cmV0dXJuIHtib29sZWFufQotICAgICAqLwotICAgIGlzRG9ja2VkVG9Cb3R0b206IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9kb2NrU2lkZSA9PSBXZWJJbnNwZWN0b3Iu
RG9ja0NvbnRyb2xsZXIuU3RhdGUuRG9ja2VkVG9Cb3R0b207Ci0gICAgfSwKLQotICAgIC8qKgog
ICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gdW5hdmFpbGFibGUKICAgICAgKi8KICAgICBzZXREb2Nr
aW5nVW5hdmFpbGFibGU6IGZ1bmN0aW9uKHVuYXZhaWxhYmxlKQpAQCAtMTk1LDggKzE4NywxNiBA
QCBXZWJJbnNwZWN0b3IuRG9ja0NvbnRyb2xsZXIucHJvdG90eXBlID0KICAgICAgICAgY2FzZSAi
Ym90dG9tIjogYWN0aW9uID0gImJvdHRvbSI7IGJyZWFrOwogICAgICAgICBjYXNlICJyaWdodCI6
IGFjdGlvbiA9ICJyaWdodCI7IGJyZWFrOwogICAgICAgICBjYXNlICJ1bmRvY2siOiBhY3Rpb24g
PSAidW5kb2NrZWQiOyBicmVhazsKKyAgICAgICAgZGVmYXVsdDogcmV0dXJuOwogICAgICAgICB9
Ci0gICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5yZXF1ZXN0U2V0RG9ja1NpZGUoYWN0aW9u
KTsKKyAgICAgICAgdGhpcy5jaGFuZ2VEb2NrU2lkZShhY3Rpb24pOworICAgIH0sCisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2lkZQorICAgICAqLworICAgIGNoYW5nZURvY2tT
aWRlOiBmdW5jdGlvbihzaWRlKSB7CisgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5yZXF1
ZXN0U2V0RG9ja1NpZGUoc2lkZSk7CiAgICAgfSwKIAogICAgIF9fcHJvdG9fXzogV2ViSW5zcGVj
dG9yLk9iamVjdC5wcm90b3R5cGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvVG9vbGJhci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Rvb2xiYXIuanMJKHJldmlzaW9uIDE0MDk1NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvVG9vbGJhci5qcwkod29ya2luZyBjb3B5KQpAQCAtNDIsNiAr
NDIsOCBAQCBXZWJJbnNwZWN0b3IuVG9vbGJhciA9IGZ1bmN0aW9uKCkKIAogICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjbG9zZS1idXR0b24tbGVmdCIpLmFkZEV2ZW50TGlzdGVuZXIoImNs
aWNrIiwgdGhpcy5fb25DbG9zZSwgdHJ1ZSk7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNsb3NlLWJ1dHRvbi1yaWdodCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fb25D
bG9zZSwgdHJ1ZSk7CisKKyAgICB0aGlzLl9pc1dpbmRvd01vdmVTdXBwb3J0ZWQgPSBXZWJJbnNw
ZWN0b3IucGxhdGZvcm1GbGF2b3IoKSA9PSBXZWJJbnNwZWN0b3IuUGxhdGZvcm1GbGF2b3IuTWFj
TGVvcGFyZCB8fCBXZWJJbnNwZWN0b3IucGxhdGZvcm1GbGF2b3IoKSA9PSBXZWJJbnNwZWN0b3Iu
UGxhdGZvcm1GbGF2b3IuTWFjU25vd0xlb3BhcmQ7CiB9CiAKIFdlYkluc3BlY3Rvci5Ub29sYmFy
LnByb3RvdHlwZSA9IHsKQEAgLTEwMSw3ICsxMDMsMTUgQEAgV2ViSW5zcGVjdG9yLlRvb2xiYXIu
cHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9pc0RvY2tlZFRvQm90dG9tOiBmdW5jdGlvbigp
CiAgICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRvY2tDb250cm9sbGVyICYmIFdl
Ykluc3BlY3Rvci5kb2NrQ29udHJvbGxlci5pc0RvY2tlZFRvQm90dG9tKCk7CisgICAgICAgIHJl
dHVybiAhIShXZWJJbnNwZWN0b3IuZG9ja0NvbnRyb2xsZXIgJiYgV2ViSW5zcGVjdG9yLmRvY2tD
b250cm9sbGVyLmRvY2tTaWRlKCkgPT0gV2ViSW5zcGVjdG9yLkRvY2tDb250cm9sbGVyLlN0YXRl
LkRvY2tlZFRvQm90dG9tKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7Ym9v
bGVhbn0KKyAgICAgKi8KKyAgICBfaXNVbmRvY2tlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuICEhKFdlYkluc3BlY3Rvci5kb2NrQ29udHJvbGxlciAmJiBXZWJJbnNwZWN0b3Iu
ZG9ja0NvbnRyb2xsZXIuZG9ja1NpZGUoKSA9PSBXZWJJbnNwZWN0b3IuRG9ja0NvbnRyb2xsZXIu
U3RhdGUuVW5kb2NrZWQpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTEwOSw3ICsxMTksMTAgQEAg
V2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF90b29sYmFy
RHJhZ1N0YXJ0OiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIGlmICgoIXRoaXMuX2lz
RG9ja2VkVG9Cb3R0b20oKSAmJiBXZWJJbnNwZWN0b3IucGxhdGZvcm1GbGF2b3IoKSAhPT0gV2Vi
SW5zcGVjdG9yLlBsYXRmb3JtRmxhdm9yLk1hY0xlb3BhcmQgJiYgV2ViSW5zcGVjdG9yLnBsYXRm
b3JtRmxhdm9yKCkgIT09IFdlYkluc3BlY3Rvci5QbGF0Zm9ybUZsYXZvci5NYWNTbm93TGVvcGFy
ZCkgfHwgV2ViSW5zcGVjdG9yLnBvcnQoKSA9PSAicXQiKQorICAgICAgICBpZiAoV2ViSW5zcGVj
dG9yLnBvcnQoKSA9PSAicXQiKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IGlmICh0aGlzLl9pc1VuZG9ja2VkKCkgJiYgIXRoaXMuX2lzV2luZG93TW92ZVN1cHBvcnRlZCkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICB2YXIgdGFyZ2V0ID0gZXZlbnQu
dGFyZ2V0OwpAQCAtMTE5LDkgKzEzMiwxMCBAQCBXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5
cGUgPSB7CiAgICAgICAgIGlmICh0YXJnZXQgIT09IHRoaXMuZWxlbWVudCAmJiAhdGFyZ2V0Lmhh
c1N0eWxlQ2xhc3MoInRvb2xiYXItaXRlbSIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgICAgIHRoaXMuZWxlbWVudC5sYXN0U2NyZWVuWCA9IGV2ZW50LnNjcmVlblg7Ci0gICAg
ICAgIHRoaXMuZWxlbWVudC5sYXN0U2NyZWVuWSA9IGV2ZW50LnNjcmVlblk7Ci0gICAgICAgIHRo
aXMuX2xhc3RIZWlnaHREdXJpbmdEcmFnID0gd2luZG93LmlubmVySGVpZ2h0OworICAgICAgICB0
aGlzLl9sYXN0U2NyZWVuWCA9IGV2ZW50LnNjcmVlblg7CisgICAgICAgIHRoaXMuX2xhc3RTY3Jl
ZW5ZID0gZXZlbnQuc2NyZWVuWTsKKyAgICAgICAgdGhpcy5fc3RhcnREaXN0YW5jZVRvUmlnaHQg
PSB3aW5kb3cuaW5uZXJXaWR0aCAtIGV2ZW50LmNsaWVudFg7CisgICAgICAgIHRoaXMuX3N0YXJ0
RGluc3RhbmNlVG9Cb3R0b20gPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBldmVudC5jbGllbnRZOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9LAogCkBAIC0xMzAsMjkgKzE0NCwzOSBAQCBXZWJJ
bnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIFdlIG1heSBub3QgZ2V0
IHRoZSBkcmFnIGV2ZW50IGF0IHRoZSBlbmQuCiAgICAgICAgIC8vIEFwcGx5IGxhc3QgY2hhbmdl
cyBtYW51YWxseS4KICAgICAgICAgdGhpcy5fdG9vbGJhckRyYWcoZXZlbnQpOwotICAgICAgICBk
ZWxldGUgdGhpcy5lbGVtZW50Lmxhc3RTY3JlZW5YOwotICAgICAgICBkZWxldGUgdGhpcy5lbGVt
ZW50Lmxhc3RTY3JlZW5ZOwotICAgICAgICBkZWxldGUgdGhpcy5fbGFzdEhlaWdodER1cmluZ0Ry
YWc7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9sYXN0U2NyZWVuWDsKKyAgICAgICAgZGVsZXRlIHRo
aXMuX2xhc3RTY3JlZW5ZOworICAgICAgICBkZWxldGUgdGhpcy5fc3RhcnREaXN0YW5jZVRvUmln
aHQ7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9zdGFydERpbnN0YW5jZVRvQm90dG9tOwogICAgIH0s
CiAKICAgICBfdG9vbGJhckRyYWc6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYg
KHRoaXMuX2lzRG9ja2VkVG9Cb3R0b20oKSkgewotICAgICAgICAgICAgdmFyIGhlaWdodCA9IHRo
aXMuX2xhc3RIZWlnaHREdXJpbmdEcmFnIC0gKGV2ZW50LnNjcmVlblkgLSB0aGlzLmVsZW1lbnQu
bGFzdFNjcmVlblkpOwotICAgICAgICAgICAgdGhpcy5fbGFzdEhlaWdodER1cmluZ0RyYWcgPSBo
ZWlnaHQ7Ci0KLSAgICAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5zZXRBdHRhY2hlZFdp
bmRvd0hlaWdodChoZWlnaHQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdmFyIHgg
PSBldmVudC5zY3JlZW5YIC0gdGhpcy5lbGVtZW50Lmxhc3RTY3JlZW5YOwotICAgICAgICAgICAg
dmFyIHkgPSBldmVudC5zY3JlZW5ZIC0gdGhpcy5lbGVtZW50Lmxhc3RTY3JlZW5ZOworICAgICAg
ICBpZiAodGhpcy5faXNVbmRvY2tlZCgpKSB7CisgICAgICAgICAgICB2YXIgeCA9IGV2ZW50LnNj
cmVlblggLSB0aGlzLl9sYXN0U2NyZWVuWDsKKyAgICAgICAgICAgIHZhciB5ID0gZXZlbnQuc2Ny
ZWVuWSAtIHRoaXMuX2xhc3RTY3JlZW5ZOwogCiAgICAgICAgICAgICAvLyBXZSBjYW5ub3QgY2Fs
bCB3aW5kb3cubW92ZUJ5IGhlcmUgYmVjYXVzZSBpdCByZXN0cmljdHMgdGhlIG1vdmVtZW50CiAg
ICAgICAgICAgICAvLyBvZiB0aGUgd2luZG93IGF0IHRoZSBlZGdlcy4KICAgICAgICAgICAgIElu
c3BlY3RvckZyb250ZW5kSG9zdC5tb3ZlV2luZG93QnkoeCwgeSk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBpZiAodGhpcy5faXNEb2NrZWRUb0JvdHRvbSgpKSB7CisgICAgICAgICAg
ICAgICAgdmFyIGRpc3RhbmNlVG9SaWdodCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gZXZlbnQuY2xp
ZW50WDsKKyAgICAgICAgICAgICAgICBpZiAoZGlzdGFuY2VUb1JpZ2h0IDwgdGhpcy5fc3RhcnRE
aXN0YW5jZVRvUmlnaHQgKiAyIC8gMykgeworICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuZG9ja0NvbnRyb2xsZXIuY2hhbmdlRG9ja1NpZGUoV2ViSW5zcGVjdG9yLkRvY2tDb250cm9s
bGVyLlN0YXRlLkRvY2tlZFRvUmlnaHQpOworICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuY2FuY2VsRHJhZ0V2ZW50cyh0aGlzLmVsZW1lbnQpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIGRpc3RhbmNlVG9Cb3R0b20g
PSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBldmVudC5jbGllbnRZOworICAgICAgICAgICAgICAgIGlm
IChkaXN0YW5jZVRvQm90dG9tIDwgdGhpcy5fc3RhcnREaW5zdGFuY2VUb0JvdHRvbSAqIDIgLyAz
KSB7CisgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb2NrQ29udHJvbGxlci5jaGFu
Z2VEb2NrU2lkZShXZWJJbnNwZWN0b3IuRG9ja0NvbnRyb2xsZXIuU3RhdGUuRG9ja2VkVG9Cb3R0
b20pOworICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY2FuY2VsRHJhZ0V2ZW50cyh0
aGlzLmVsZW1lbnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAg
fQogCi0gICAgICAgIHRoaXMuZWxlbWVudC5sYXN0U2NyZWVuWCA9IGV2ZW50LnNjcmVlblg7Ci0g
ICAgICAgIHRoaXMuZWxlbWVudC5sYXN0U2NyZWVuWSA9IGV2ZW50LnNjcmVlblk7CisgICAgICAg
IHRoaXMuX2xhc3RTY3JlZW5YID0gZXZlbnQuc2NyZWVuWDsKKyAgICAgICAgdGhpcy5fbGFzdFNj
cmVlblkgPSBldmVudC5zY3JlZW5ZOwogCiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7
CiAgICAgfSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlVdGls
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJ
VXRpbHMuanMJKHJldmlzaW9uIDE0MDk1NSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvVUlVdGlscy5qcwkod29ya2luZyBjb3B5KQpAQCAtOTQsMjMgKzk0LDMxIEBAIFdl
Ykluc3BlY3Rvci5fdW5yZWdpc3Rlck1vdXNlT3V0V2hpbGVEcmEKICAgICBkZWxldGUgV2ViSW5z
cGVjdG9yLl9tb3VzZU91dFdoaWxlRHJhZ2dpbmdUYXJnZXREb2N1bWVudDsKIH0KIAotV2ViSW5z
cGVjdG9yLl9lbGVtZW50RHJhZ0VuZCA9IGZ1bmN0aW9uKGV2ZW50KQorLyoqCisgKiBAcGFyYW0g
e0VsZW1lbnR9IGVsZW1lbnQKKyAqLworV2ViSW5zcGVjdG9yLmNhbmNlbERyYWdFdmVudHMgPSBm
dW5jdGlvbihlbGVtZW50KQogewotICAgIHZhciB0YXJnZXREb2N1bWVudCA9IGV2ZW50LnRhcmdl
dC5vd25lckRvY3VtZW50OwotICAgIHRhcmdldERvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIo
Im1vdXNlbW92ZSIsIFdlYkluc3BlY3Rvci5fZWxlbWVudERyYWdnaW5nRXZlbnRMaXN0ZW5lciwg
dHJ1ZSk7Ci0gICAgdGFyZ2V0RG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIs
IFdlYkluc3BlY3Rvci5fZWxlbWVudERyYWdFbmQsIHRydWUpOwotICAgIFdlYkluc3BlY3Rvci5f
dW5yZWdpc3Rlck1vdXNlT3V0V2hpbGVEcmFnZ2luZygpOwotCi0gICAgdGFyZ2V0RG9jdW1lbnQu
Ym9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiY3Vyc29yIik7Ci0KLSAgICBpZiAoV2ViSW5zcGVj
dG9yLl9lbGVtZW50RHJhZ2dpbmdHbGFzc1BhbmUpCi0gICAgICAgIFdlYkluc3BlY3Rvci5fZWxl
bWVudERyYWdnaW5nR2xhc3NQYW5lLmRpc3Bvc2UoKTsKKyAgdmFyIHRhcmdldERvY3VtZW50ID0g
ZWxlbWVudC5vd25lckRvY3VtZW50OworICB0YXJnZXREb2N1bWVudC5yZW1vdmVFdmVudExpc3Rl
bmVyKCJtb3VzZW1vdmUiLCBXZWJJbnNwZWN0b3IuX2VsZW1lbnREcmFnZ2luZ0V2ZW50TGlzdGVu
ZXIsIHRydWUpOworICB0YXJnZXREb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVw
IiwgV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ0VuZCwgdHJ1ZSk7CisgIFdlYkluc3BlY3Rvci5f
dW5yZWdpc3Rlck1vdXNlT3V0V2hpbGVEcmFnZ2luZygpOworCisgIHRhcmdldERvY3VtZW50LmJv
ZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoImN1cnNvciIpOworCisgIGlmIChXZWJJbnNwZWN0b3Iu
X2VsZW1lbnREcmFnZ2luZ0dsYXNzUGFuZSkKKyAgICAgIFdlYkluc3BlY3Rvci5fZWxlbWVudERy
YWdnaW5nR2xhc3NQYW5lLmRpc3Bvc2UoKTsKKworICBkZWxldGUgV2ViSW5zcGVjdG9yLl9lbGVt
ZW50RHJhZ2dpbmdHbGFzc1BhbmU7CisgIGRlbGV0ZSBXZWJJbnNwZWN0b3IuX2VsZW1lbnREcmFn
Z2luZ0V2ZW50TGlzdGVuZXI7CisgIGRlbGV0ZSBXZWJJbnNwZWN0b3IuX2VsZW1lbnRFbmREcmFn
Z2luZ0V2ZW50TGlzdGVuZXI7Cit9CiAKK1dlYkluc3BlY3Rvci5fZWxlbWVudERyYWdFbmQgPSBm
dW5jdGlvbihldmVudCkKK3sKICAgICB2YXIgZWxlbWVudERyYWdFbmQgPSBXZWJJbnNwZWN0b3Iu
X2VsZW1lbnRFbmREcmFnZ2luZ0V2ZW50TGlzdGVuZXI7CiAKLSAgICBkZWxldGUgV2ViSW5zcGVj
dG9yLl9lbGVtZW50RHJhZ2dpbmdHbGFzc1BhbmU7Ci0gICAgZGVsZXRlIFdlYkluc3BlY3Rvci5f
ZWxlbWVudERyYWdnaW5nRXZlbnRMaXN0ZW5lcjsKLSAgICBkZWxldGUgV2ViSW5zcGVjdG9yLl9l
bGVtZW50RW5kRHJhZ2dpbmdFdmVudExpc3RlbmVyOworICAgIFdlYkluc3BlY3Rvci5jYW5jZWxE
cmFnRXZlbnRzKGV2ZW50LnRhcmdldCk7CiAKICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwog
ICAgIGlmIChlbGVtZW50RHJhZ0VuZCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185465</attachid>
            <date>2013-01-30 04:12:19 -0800</date>
            <delta_ts>2013-01-30 05:36:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108073-20130130160903.patch</filename>
            <type>text/plain</type>
            <size>8943</size>
            <attacher name="Dmitry Gozman">dgozman</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTI1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAxLTMwICBEbWl0cnkg
R296bWFuICA8ZGdvem1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
QWxsb3cgdXNlciB0byBjaGFuZ2UgZG9jayBzaWRlIGJ5IGRyYWdnaW5nIHRvb2xiYXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODA3MworCisgICAg
ICAgIERyYWdnaW5nIHRvb2xiYXIgdG8gdGhlIHJpZ2h0L2JvdHRvbSB3aWxsIGNoYW5nZSB0aGUg
ZG9jayBzaWRlIGFjY29yZGluZ2x5CisgICAgICAgIGluc3RlYWQgb2YgY2hhbmdpbmcgdGhlIGlu
c3BlY3RvciB3aW5kb3cgaGVpZ2h0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYmVjYXVzZSBvZiBwdXJlIGluc3BlY3RvciBV
SSBjaGFuZ2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RvY2tDb250cm9sbGVy
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRvY2tDb250cm9sbGVyLnByb3RvdHlwZS5fdG9n
Z2xlRG9ja1N0YXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Eb2NrQ29udHJvbGxlci5wcm90
b3R5cGUuY2hhbmdlRG9ja1NpZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVG9v
bGJhci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5faXNEb2NrZWRUb0JvdHRvbSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUuX2lzVW5kb2NrZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLl90b29sYmFyRHJhZ1N0YXJ0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5fdG9vbGJhckRyYWdFbmQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLl90b29sYmFyRHJhZyk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LmNhbmNlbERyYWdFdmVudHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ0Vu
ZCk6CisKIDIwMTMtMDEtMzAgIEFuZHJleSBBZGFpa2luICA8YWFuZHJleUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW0NhbnZhc10gc3VwcG9ydCBpbnN0cnVtZW50aW5n
IGNhbnZhc2VzIGluIGlmcmFtZXMgKGZyb250ZW5kIHNpZGUpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RvY2tDb250cm9sbGVyLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRG9ja0NvbnRyb2xsZXIuanMJKHJldmlz
aW9uIDE0MDk1NSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRG9ja0Nv
bnRyb2xsZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTkyLDE0ICs5Miw2IEBAIFdlYkluc3BlY3Rv
ci5Eb2NrQ29udHJvbGxlci5wcm90b3R5cGUgPQogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBA
cmV0dXJuIHtib29sZWFufQotICAgICAqLwotICAgIGlzRG9ja2VkVG9Cb3R0b206IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9kb2NrU2lkZSA9PSBXZWJJbnNwZWN0b3Iu
RG9ja0NvbnRyb2xsZXIuU3RhdGUuRG9ja2VkVG9Cb3R0b207Ci0gICAgfSwKLQotICAgIC8qKgog
ICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gdW5hdmFpbGFibGUKICAgICAgKi8KICAgICBzZXREb2Nr
aW5nVW5hdmFpbGFibGU6IGZ1bmN0aW9uKHVuYXZhaWxhYmxlKQpAQCAtMTk1LDggKzE4NywxNiBA
QCBXZWJJbnNwZWN0b3IuRG9ja0NvbnRyb2xsZXIucHJvdG90eXBlID0KICAgICAgICAgY2FzZSAi
Ym90dG9tIjogYWN0aW9uID0gImJvdHRvbSI7IGJyZWFrOwogICAgICAgICBjYXNlICJyaWdodCI6
IGFjdGlvbiA9ICJyaWdodCI7IGJyZWFrOwogICAgICAgICBjYXNlICJ1bmRvY2siOiBhY3Rpb24g
PSAidW5kb2NrZWQiOyBicmVhazsKKyAgICAgICAgZGVmYXVsdDogcmV0dXJuOwogICAgICAgICB9
Ci0gICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5yZXF1ZXN0U2V0RG9ja1NpZGUoYWN0aW9u
KTsKKyAgICAgICAgdGhpcy5jaGFuZ2VEb2NrU2lkZShhY3Rpb24pOworICAgIH0sCisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2lkZQorICAgICAqLworICAgIGNoYW5nZURvY2tT
aWRlOiBmdW5jdGlvbihzaWRlKSB7CisgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5yZXF1
ZXN0U2V0RG9ja1NpZGUoc2lkZSk7CiAgICAgfSwKIAogICAgIF9fcHJvdG9fXzogV2ViSW5zcGVj
dG9yLk9iamVjdC5wcm90b3R5cGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvVG9vbGJhci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Rvb2xiYXIuanMJKHJldmlzaW9uIDE0MDk1NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvVG9vbGJhci5qcwkod29ya2luZyBjb3B5KQpAQCAtNDIsNiAr
NDIsOCBAQCBXZWJJbnNwZWN0b3IuVG9vbGJhciA9IGZ1bmN0aW9uKCkKIAogICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjbG9zZS1idXR0b24tbGVmdCIpLmFkZEV2ZW50TGlzdGVuZXIoImNs
aWNrIiwgdGhpcy5fb25DbG9zZSwgdHJ1ZSk7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNsb3NlLWJ1dHRvbi1yaWdodCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fb25D
bG9zZSwgdHJ1ZSk7CisKKyAgICB0aGlzLl9pc1dpbmRvd01vdmVTdXBwb3J0ZWQgPSBXZWJJbnNw
ZWN0b3IucGxhdGZvcm1GbGF2b3IoKSA9PSBXZWJJbnNwZWN0b3IuUGxhdGZvcm1GbGF2b3IuTWFj
TGVvcGFyZCB8fCBXZWJJbnNwZWN0b3IucGxhdGZvcm1GbGF2b3IoKSA9PSBXZWJJbnNwZWN0b3Iu
UGxhdGZvcm1GbGF2b3IuTWFjU25vd0xlb3BhcmQ7CiB9CiAKIFdlYkluc3BlY3Rvci5Ub29sYmFy
LnByb3RvdHlwZSA9IHsKQEAgLTEwMSw3ICsxMDMsMTUgQEAgV2ViSW5zcGVjdG9yLlRvb2xiYXIu
cHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9pc0RvY2tlZFRvQm90dG9tOiBmdW5jdGlvbigp
CiAgICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRvY2tDb250cm9sbGVyICYmIFdl
Ykluc3BlY3Rvci5kb2NrQ29udHJvbGxlci5pc0RvY2tlZFRvQm90dG9tKCk7CisgICAgICAgIHJl
dHVybiAhIShXZWJJbnNwZWN0b3IuZG9ja0NvbnRyb2xsZXIgJiYgV2ViSW5zcGVjdG9yLmRvY2tD
b250cm9sbGVyLmRvY2tTaWRlKCkgPT0gV2ViSW5zcGVjdG9yLkRvY2tDb250cm9sbGVyLlN0YXRl
LkRvY2tlZFRvQm90dG9tKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7Ym9v
bGVhbn0KKyAgICAgKi8KKyAgICBfaXNVbmRvY2tlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuICEhKFdlYkluc3BlY3Rvci5kb2NrQ29udHJvbGxlciAmJiBXZWJJbnNwZWN0b3Iu
ZG9ja0NvbnRyb2xsZXIuZG9ja1NpZGUoKSA9PSBXZWJJbnNwZWN0b3IuRG9ja0NvbnRyb2xsZXIu
U3RhdGUuVW5kb2NrZWQpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTEwOSw3ICsxMTksMTAgQEAg
V2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF90b29sYmFy
RHJhZ1N0YXJ0OiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIGlmICgoIXRoaXMuX2lz
RG9ja2VkVG9Cb3R0b20oKSAmJiBXZWJJbnNwZWN0b3IucGxhdGZvcm1GbGF2b3IoKSAhPT0gV2Vi
SW5zcGVjdG9yLlBsYXRmb3JtRmxhdm9yLk1hY0xlb3BhcmQgJiYgV2ViSW5zcGVjdG9yLnBsYXRm
b3JtRmxhdm9yKCkgIT09IFdlYkluc3BlY3Rvci5QbGF0Zm9ybUZsYXZvci5NYWNTbm93TGVvcGFy
ZCkgfHwgV2ViSW5zcGVjdG9yLnBvcnQoKSA9PSAicXQiKQorICAgICAgICBpZiAoV2ViSW5zcGVj
dG9yLnBvcnQoKSA9PSAicXQiKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IGlmICh0aGlzLl9pc1VuZG9ja2VkKCkgJiYgIXRoaXMuX2lzV2luZG93TW92ZVN1cHBvcnRlZCkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICB2YXIgdGFyZ2V0ID0gZXZlbnQu
dGFyZ2V0OwpAQCAtMTE5LDkgKzEzMiwxMCBAQCBXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5
cGUgPSB7CiAgICAgICAgIGlmICh0YXJnZXQgIT09IHRoaXMuZWxlbWVudCAmJiAhdGFyZ2V0Lmhh
c1N0eWxlQ2xhc3MoInRvb2xiYXItaXRlbSIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgICAgIHRoaXMuZWxlbWVudC5sYXN0U2NyZWVuWCA9IGV2ZW50LnNjcmVlblg7Ci0gICAg
ICAgIHRoaXMuZWxlbWVudC5sYXN0U2NyZWVuWSA9IGV2ZW50LnNjcmVlblk7Ci0gICAgICAgIHRo
aXMuX2xhc3RIZWlnaHREdXJpbmdEcmFnID0gd2luZG93LmlubmVySGVpZ2h0OworICAgICAgICB0
aGlzLl9sYXN0U2NyZWVuWCA9IGV2ZW50LnNjcmVlblg7CisgICAgICAgIHRoaXMuX2xhc3RTY3Jl
ZW5ZID0gZXZlbnQuc2NyZWVuWTsKKyAgICAgICAgdGhpcy5fc3RhcnREaXN0YW5jZVRvUmlnaHQg
PSB3aW5kb3cuaW5uZXJXaWR0aCAtIGV2ZW50LmNsaWVudFg7CisgICAgICAgIHRoaXMuX3N0YXJ0
RGluc3RhbmNlVG9Cb3R0b20gPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBldmVudC5jbGllbnRZOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9LAogCkBAIC0xMzAsMjkgKzE0NCwzOSBAQCBXZWJJ
bnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIFdlIG1heSBub3QgZ2V0
IHRoZSBkcmFnIGV2ZW50IGF0IHRoZSBlbmQuCiAgICAgICAgIC8vIEFwcGx5IGxhc3QgY2hhbmdl
cyBtYW51YWxseS4KICAgICAgICAgdGhpcy5fdG9vbGJhckRyYWcoZXZlbnQpOwotICAgICAgICBk
ZWxldGUgdGhpcy5lbGVtZW50Lmxhc3RTY3JlZW5YOwotICAgICAgICBkZWxldGUgdGhpcy5lbGVt
ZW50Lmxhc3RTY3JlZW5ZOwotICAgICAgICBkZWxldGUgdGhpcy5fbGFzdEhlaWdodER1cmluZ0Ry
YWc7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9sYXN0U2NyZWVuWDsKKyAgICAgICAgZGVsZXRlIHRo
aXMuX2xhc3RTY3JlZW5ZOworICAgICAgICBkZWxldGUgdGhpcy5fc3RhcnREaXN0YW5jZVRvUmln
aHQ7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9zdGFydERpbnN0YW5jZVRvQm90dG9tOwogICAgIH0s
CiAKICAgICBfdG9vbGJhckRyYWc6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYg
KHRoaXMuX2lzRG9ja2VkVG9Cb3R0b20oKSkgewotICAgICAgICAgICAgdmFyIGhlaWdodCA9IHRo
aXMuX2xhc3RIZWlnaHREdXJpbmdEcmFnIC0gKGV2ZW50LnNjcmVlblkgLSB0aGlzLmVsZW1lbnQu
bGFzdFNjcmVlblkpOwotICAgICAgICAgICAgdGhpcy5fbGFzdEhlaWdodER1cmluZ0RyYWcgPSBo
ZWlnaHQ7Ci0KLSAgICAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5zZXRBdHRhY2hlZFdp
bmRvd0hlaWdodChoZWlnaHQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdmFyIHgg
PSBldmVudC5zY3JlZW5YIC0gdGhpcy5lbGVtZW50Lmxhc3RTY3JlZW5YOwotICAgICAgICAgICAg
dmFyIHkgPSBldmVudC5zY3JlZW5ZIC0gdGhpcy5lbGVtZW50Lmxhc3RTY3JlZW5ZOworICAgICAg
ICBpZiAodGhpcy5faXNVbmRvY2tlZCgpKSB7CisgICAgICAgICAgICB2YXIgeCA9IGV2ZW50LnNj
cmVlblggLSB0aGlzLl9sYXN0U2NyZWVuWDsKKyAgICAgICAgICAgIHZhciB5ID0gZXZlbnQuc2Ny
ZWVuWSAtIHRoaXMuX2xhc3RTY3JlZW5ZOwogCiAgICAgICAgICAgICAvLyBXZSBjYW5ub3QgY2Fs
bCB3aW5kb3cubW92ZUJ5IGhlcmUgYmVjYXVzZSBpdCByZXN0cmljdHMgdGhlIG1vdmVtZW50CiAg
ICAgICAgICAgICAvLyBvZiB0aGUgd2luZG93IGF0IHRoZSBlZGdlcy4KICAgICAgICAgICAgIElu
c3BlY3RvckZyb250ZW5kSG9zdC5tb3ZlV2luZG93QnkoeCwgeSk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBpZiAodGhpcy5faXNEb2NrZWRUb0JvdHRvbSgpKSB7CisgICAgICAgICAg
ICAgICAgdmFyIGRpc3RhbmNlVG9SaWdodCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gZXZlbnQuY2xp
ZW50WDsKKyAgICAgICAgICAgICAgICBpZiAoZGlzdGFuY2VUb1JpZ2h0IDwgdGhpcy5fc3RhcnRE
aXN0YW5jZVRvUmlnaHQgKiAyIC8gMykgeworICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuZG9ja0NvbnRyb2xsZXIuY2hhbmdlRG9ja1NpZGUoV2ViSW5zcGVjdG9yLkRvY2tDb250cm9s
bGVyLlN0YXRlLkRvY2tlZFRvUmlnaHQpOworICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuY2FuY2VsRHJhZ0V2ZW50cyh0aGlzLmVsZW1lbnQpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIGRpc3RhbmNlVG9Cb3R0b20g
PSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBldmVudC5jbGllbnRZOworICAgICAgICAgICAgICAgIGlm
IChkaXN0YW5jZVRvQm90dG9tIDwgdGhpcy5fc3RhcnREaW5zdGFuY2VUb0JvdHRvbSAqIDIgLyAz
KSB7CisgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb2NrQ29udHJvbGxlci5jaGFu
Z2VEb2NrU2lkZShXZWJJbnNwZWN0b3IuRG9ja0NvbnRyb2xsZXIuU3RhdGUuRG9ja2VkVG9Cb3R0
b20pOworICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY2FuY2VsRHJhZ0V2ZW50cyh0
aGlzLmVsZW1lbnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAg
fQogCi0gICAgICAgIHRoaXMuZWxlbWVudC5sYXN0U2NyZWVuWCA9IGV2ZW50LnNjcmVlblg7Ci0g
ICAgICAgIHRoaXMuZWxlbWVudC5sYXN0U2NyZWVuWSA9IGV2ZW50LnNjcmVlblk7CisgICAgICAg
IHRoaXMuX2xhc3RTY3JlZW5YID0gZXZlbnQuc2NyZWVuWDsKKyAgICAgICAgdGhpcy5fbGFzdFNj
cmVlblkgPSBldmVudC5zY3JlZW5ZOwogCiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7
CiAgICAgfSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlVdGls
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJ
VXRpbHMuanMJKHJldmlzaW9uIDE0MDk1NSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvVUlVdGlscy5qcwkod29ya2luZyBjb3B5KQpAQCAtOTQsOSArOTQsMTIgQEAgV2Vi
SW5zcGVjdG9yLl91bnJlZ2lzdGVyTW91c2VPdXRXaGlsZURyYQogICAgIGRlbGV0ZSBXZWJJbnNw
ZWN0b3IuX21vdXNlT3V0V2hpbGVEcmFnZ2luZ1RhcmdldERvY3VtZW50OwogfQogCi1XZWJJbnNw
ZWN0b3IuX2VsZW1lbnREcmFnRW5kID0gZnVuY3Rpb24oZXZlbnQpCisvKioKKyAqIEBwYXJhbSB7
RWxlbWVudH0gZWxlbWVudAorICovCitXZWJJbnNwZWN0b3IuY2FuY2VsRHJhZ0V2ZW50cyA9IGZ1
bmN0aW9uKGVsZW1lbnQpCiB7Ci0gICAgdmFyIHRhcmdldERvY3VtZW50ID0gZXZlbnQudGFyZ2V0
Lm93bmVyRG9jdW1lbnQ7CisgICAgdmFyIHRhcmdldERvY3VtZW50ID0gZWxlbWVudC5vd25lckRv
Y3VtZW50OwogICAgIHRhcmdldERvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92
ZSIsIFdlYkluc3BlY3Rvci5fZWxlbWVudERyYWdnaW5nRXZlbnRMaXN0ZW5lciwgdHJ1ZSk7CiAg
ICAgdGFyZ2V0RG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIFdlYkluc3Bl
Y3Rvci5fZWxlbWVudERyYWdFbmQsIHRydWUpOwogICAgIFdlYkluc3BlY3Rvci5fdW5yZWdpc3Rl
ck1vdXNlT3V0V2hpbGVEcmFnZ2luZygpOwpAQCAtMTA2LDExICsxMDksMTYgQEAgV2ViSW5zcGVj
dG9yLl9lbGVtZW50RHJhZ0VuZCA9IGZ1bmN0aW9uKAogICAgIGlmIChXZWJJbnNwZWN0b3IuX2Vs
ZW1lbnREcmFnZ2luZ0dsYXNzUGFuZSkKICAgICAgICAgV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJh
Z2dpbmdHbGFzc1BhbmUuZGlzcG9zZSgpOwogCi0gICAgdmFyIGVsZW1lbnREcmFnRW5kID0gV2Vi
SW5zcGVjdG9yLl9lbGVtZW50RW5kRHJhZ2dpbmdFdmVudExpc3RlbmVyOwotCiAgICAgZGVsZXRl
IFdlYkluc3BlY3Rvci5fZWxlbWVudERyYWdnaW5nR2xhc3NQYW5lOwogICAgIGRlbGV0ZSBXZWJJ
bnNwZWN0b3IuX2VsZW1lbnREcmFnZ2luZ0V2ZW50TGlzdGVuZXI7CiAgICAgZGVsZXRlIFdlYklu
c3BlY3Rvci5fZWxlbWVudEVuZERyYWdnaW5nRXZlbnRMaXN0ZW5lcjsKK30KKworV2ViSW5zcGVj
dG9yLl9lbGVtZW50RHJhZ0VuZCA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIHZhciBlbGVtZW50
RHJhZ0VuZCA9IFdlYkluc3BlY3Rvci5fZWxlbWVudEVuZERyYWdnaW5nRXZlbnRMaXN0ZW5lcjsK
KworICAgIFdlYkluc3BlY3Rvci5jYW5jZWxEcmFnRXZlbnRzKGV2ZW50LnRhcmdldCk7CiAKICAg
ICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgIGlmIChlbGVtZW50RHJhZ0VuZCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185475</attachid>
            <date>2013-01-30 05:36:36 -0800</date>
            <delta_ts>2013-01-31 03:36:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108073-20130130173320.patch</filename>
            <type>text/plain</type>
            <size>9998</size>
            <attacher name="Dmitry Gozman">dgozman</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTI1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAxLTMwICBEbWl0cnkg
R296bWFuICA8ZGdvem1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
QWxsb3cgdXNlciB0byBjaGFuZ2UgZG9jayBzaWRlIGJ5IGRyYWdnaW5nIHRvb2xiYXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODA3MworCisgICAg
ICAgIERyYWdnaW5nIHRvb2xiYXIgdG8gdGhlIHJpZ2h0L2JvdHRvbSB3aWxsIGNoYW5nZSB0aGUg
ZG9jayBzaWRlIGFjY29yZGluZ2x5CisgICAgICAgIGluc3RlYWQgb2YgY2hhbmdpbmcgdGhlIGlu
c3BlY3RvciB3aW5kb3cgaGVpZ2h0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYmVjYXVzZSBvZiBwdXJlIGluc3BlY3RvciBV
SSBjaGFuZ2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RvY2tDb250cm9sbGVy
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRvY2tDb250cm9sbGVyLnByb3RvdHlwZS5fdG9n
Z2xlRG9ja1N0YXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Eb2NrQ29udHJvbGxlci5wcm90
b3R5cGUuY2hhbmdlRG9ja1NpZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVG9v
bGJhci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5faXNEb2NrZWRUb0JvdHRvbSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUuX2lzVW5kb2NrZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLl90b29sYmFyRHJhZ1N0YXJ0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5fdG9vbGJhckRyYWdFbmQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLl90b29sYmFyRHJhZyk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Ll9lbGVtZW50RHJhZ1N0YXJ0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5fZWxlbWVudERyYWdN
b3ZlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5fY2FuY2VsRHJhZ0V2ZW50cyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuX2VsZW1lbnREcmFnRW5kKToKKwogMjAxMy0wMS0zMCAgUGF2ZWwgRmVs
ZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBt
aWdyYXRlIGZpbGUgc2VsZWN0aW9uIGRpYWxvZyB0byB0aGUgdmlld3BvcnQuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RvY2tDb250cm9sbGVyLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRG9ja0NvbnRyb2xsZXIu
anMJKHJldmlzaW9uIDE0MDk1NSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRG9ja0NvbnRyb2xsZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTkyLDE0ICs5Miw2IEBAIFdl
Ykluc3BlY3Rvci5Eb2NrQ29udHJvbGxlci5wcm90b3R5cGUgPQogICAgIH0sCiAKICAgICAvKioK
LSAgICAgKiBAcmV0dXJuIHtib29sZWFufQotICAgICAqLwotICAgIGlzRG9ja2VkVG9Cb3R0b206
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9kb2NrU2lkZSA9PSBXZWJJ
bnNwZWN0b3IuRG9ja0NvbnRyb2xsZXIuU3RhdGUuRG9ja2VkVG9Cb3R0b207Ci0gICAgfSwKLQot
ICAgIC8qKgogICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gdW5hdmFpbGFibGUKICAgICAgKi8KICAg
ICBzZXREb2NraW5nVW5hdmFpbGFibGU6IGZ1bmN0aW9uKHVuYXZhaWxhYmxlKQpAQCAtMTk1LDgg
KzE4NywxNyBAQCBXZWJJbnNwZWN0b3IuRG9ja0NvbnRyb2xsZXIucHJvdG90eXBlID0KICAgICAg
ICAgY2FzZSAiYm90dG9tIjogYWN0aW9uID0gImJvdHRvbSI7IGJyZWFrOwogICAgICAgICBjYXNl
ICJyaWdodCI6IGFjdGlvbiA9ICJyaWdodCI7IGJyZWFrOwogICAgICAgICBjYXNlICJ1bmRvY2si
OiBhY3Rpb24gPSAidW5kb2NrZWQiOyBicmVhazsKKyAgICAgICAgZGVmYXVsdDogcmV0dXJuOwog
ICAgICAgICB9Ci0gICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5yZXF1ZXN0U2V0RG9ja1Np
ZGUoYWN0aW9uKTsKKyAgICAgICAgdGhpcy5jaGFuZ2VEb2NrU2lkZShhY3Rpb24pOworICAgIH0s
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2lkZQorICAgICAqLworICAgIGNo
YW5nZURvY2tTaWRlOiBmdW5jdGlvbihzaWRlKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LnJlcXVlc3RTZXREb2NrU2lkZShzaWRlKTsKICAgICB9LAogCiAgICAgX19wcm90
b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZQpJbmRleDogU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Ub29sYmFyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVG9vbGJhci5qcwkocmV2aXNpb24gMTQwOTU1KQorKysg
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Ub29sYmFyLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw2ICs0Miw4IEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyID0gZnVuY3Rpb24oKQog
CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNsb3NlLWJ1dHRvbi1sZWZ0IikuYWRkRXZl
bnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9vbkNsb3NlLCB0cnVlKTsKICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY2xvc2UtYnV0dG9uLXJpZ2h0IikuYWRkRXZlbnRMaXN0ZW5lcigiY2xp
Y2siLCB0aGlzLl9vbkNsb3NlLCB0cnVlKTsKKworICAgIHRoaXMuX2lzV2luZG93TW92ZVN1cHBv
cnRlZCA9IFdlYkluc3BlY3Rvci5wbGF0Zm9ybUZsYXZvcigpID09IFdlYkluc3BlY3Rvci5QbGF0
Zm9ybUZsYXZvci5NYWNMZW9wYXJkIHx8IFdlYkluc3BlY3Rvci5wbGF0Zm9ybUZsYXZvcigpID09
IFdlYkluc3BlY3Rvci5QbGF0Zm9ybUZsYXZvci5NYWNTbm93TGVvcGFyZDsKIH0KIAogV2ViSW5z
cGVjdG9yLlRvb2xiYXIucHJvdG90eXBlID0gewpAQCAtMTAxLDcgKzEwMywxNSBAQCBXZWJJbnNw
ZWN0b3IuVG9vbGJhci5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2lzRG9ja2VkVG9Cb3R0
b206IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZG9ja0Nv
bnRyb2xsZXIgJiYgV2ViSW5zcGVjdG9yLmRvY2tDb250cm9sbGVyLmlzRG9ja2VkVG9Cb3R0b20o
KTsKKyAgICAgICAgcmV0dXJuICEhV2ViSW5zcGVjdG9yLmRvY2tDb250cm9sbGVyICYmIFdlYklu
c3BlY3Rvci5kb2NrQ29udHJvbGxlci5kb2NrU2lkZSgpID09IFdlYkluc3BlY3Rvci5Eb2NrQ29u
dHJvbGxlci5TdGF0ZS5Eb2NrZWRUb0JvdHRvbTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBfaXNVbmRvY2tlZDogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuICEhV2ViSW5zcGVjdG9yLmRvY2tDb250cm9sbGVyICYmIFdl
Ykluc3BlY3Rvci5kb2NrQ29udHJvbGxlci5kb2NrU2lkZSgpID09IFdlYkluc3BlY3Rvci5Eb2Nr
Q29udHJvbGxlci5TdGF0ZS5VbmRvY2tlZDsKICAgICB9LAogCiAgICAgLyoqCkBAIC0xMDksNyAr
MTE5LDEwIEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAg
ICBfdG9vbGJhckRyYWdTdGFydDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICBpZiAo
KCF0aGlzLl9pc0RvY2tlZFRvQm90dG9tKCkgJiYgV2ViSW5zcGVjdG9yLnBsYXRmb3JtRmxhdm9y
KCkgIT09IFdlYkluc3BlY3Rvci5QbGF0Zm9ybUZsYXZvci5NYWNMZW9wYXJkICYmIFdlYkluc3Bl
Y3Rvci5wbGF0Zm9ybUZsYXZvcigpICE9PSBXZWJJbnNwZWN0b3IuUGxhdGZvcm1GbGF2b3IuTWFj
U25vd0xlb3BhcmQpIHx8IFdlYkluc3BlY3Rvci5wb3J0KCkgPT0gInF0IikKKyAgICAgICAgaWYg
KFdlYkluc3BlY3Rvci5wb3J0KCkgPT0gInF0IikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICBpZiAodGhpcy5faXNVbmRvY2tlZCgpICYmICF0aGlzLl9pc1dpbmRvd01vdmVT
dXBwb3J0ZWQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgdmFyIHRhcmdl
dCA9IGV2ZW50LnRhcmdldDsKQEAgLTExOSw5ICsxMzIsMTEgQEAgV2ViSW5zcGVjdG9yLlRvb2xi
YXIucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGFyZ2V0ICE9PSB0aGlzLmVsZW1lbnQgJiYg
IXRhcmdldC5oYXNTdHlsZUNsYXNzKCJ0b29sYmFyLWl0ZW0iKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgICAgICB0aGlzLmVsZW1lbnQubGFzdFNjcmVlblggPSBldmVudC5zY3Jl
ZW5YOwotICAgICAgICB0aGlzLmVsZW1lbnQubGFzdFNjcmVlblkgPSBldmVudC5zY3JlZW5ZOwor
ICAgICAgICB0aGlzLl9sYXN0U2NyZWVuWCA9IGV2ZW50LnNjcmVlblg7CisgICAgICAgIHRoaXMu
X2xhc3RTY3JlZW5ZID0gZXZlbnQuc2NyZWVuWTsKICAgICAgICAgdGhpcy5fbGFzdEhlaWdodER1
cmluZ0RyYWcgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7CisgICAgICAgIHRoaXMuX3N0YXJ0RGlzdGFu
Y2VUb1JpZ2h0ID0gd2luZG93LmlubmVyV2lkdGggLSBldmVudC5jbGllbnRYOworICAgICAgICB0
aGlzLl9zdGFydERpbnN0YW5jZVRvQm90dG9tID0gd2luZG93LmlubmVySGVpZ2h0IC0gZXZlbnQu
Y2xpZW50WTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSwKIApAQCAtMTMwLDI5ICsxNDUs
NDYgQEAgV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlID0gewogICAgICAgICAvLyBXZSBt
YXkgbm90IGdldCB0aGUgZHJhZyBldmVudCBhdCB0aGUgZW5kLgogICAgICAgICAvLyBBcHBseSBs
YXN0IGNoYW5nZXMgbWFudWFsbHkuCiAgICAgICAgIHRoaXMuX3Rvb2xiYXJEcmFnKGV2ZW50KTsK
LSAgICAgICAgZGVsZXRlIHRoaXMuZWxlbWVudC5sYXN0U2NyZWVuWDsKLSAgICAgICAgZGVsZXRl
IHRoaXMuZWxlbWVudC5sYXN0U2NyZWVuWTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2xhc3RTY3Jl
ZW5YOworICAgICAgICBkZWxldGUgdGhpcy5fbGFzdFNjcmVlblk7CisgICAgICAgIGRlbGV0ZSB0
aGlzLl9zdGFydERpc3RhbmNlVG9SaWdodDsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3N0YXJ0RGlu
c3RhbmNlVG9Cb3R0b207CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9sYXN0SGVpZ2h0RHVyaW5nRHJh
ZzsKICAgICB9LAogCiAgICAgX3Rvb2xiYXJEcmFnOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0g
ICAgICAgIGlmICh0aGlzLl9pc0RvY2tlZFRvQm90dG9tKCkpIHsKLSAgICAgICAgICAgIHZhciBo
ZWlnaHQgPSB0aGlzLl9sYXN0SGVpZ2h0RHVyaW5nRHJhZyAtIChldmVudC5zY3JlZW5ZIC0gdGhp
cy5lbGVtZW50Lmxhc3RTY3JlZW5ZKTsKLSAgICAgICAgICAgIHRoaXMuX2xhc3RIZWlnaHREdXJp
bmdEcmFnID0gaGVpZ2h0OwotCi0gICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3Quc2V0
QXR0YWNoZWRXaW5kb3dIZWlnaHQoaGVpZ2h0KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIHZhciB4ID0gZXZlbnQuc2NyZWVuWCAtIHRoaXMuZWxlbWVudC5sYXN0U2NyZWVuWDsKLSAg
ICAgICAgICAgIHZhciB5ID0gZXZlbnQuc2NyZWVuWSAtIHRoaXMuZWxlbWVudC5sYXN0U2NyZWVu
WTsKKyAgICAgICAgaWYgKHRoaXMuX2lzVW5kb2NrZWQoKSkgeworICAgICAgICAgICAgdmFyIHgg
PSBldmVudC5zY3JlZW5YIC0gdGhpcy5fbGFzdFNjcmVlblg7CisgICAgICAgICAgICB2YXIgeSA9
IGV2ZW50LnNjcmVlblkgLSB0aGlzLl9sYXN0U2NyZWVuWTsKIAogICAgICAgICAgICAgLy8gV2Ug
Y2Fubm90IGNhbGwgd2luZG93Lm1vdmVCeSBoZXJlIGJlY2F1c2UgaXQgcmVzdHJpY3RzIHRoZSBt
b3ZlbWVudAogICAgICAgICAgICAgLy8gb2YgdGhlIHdpbmRvdyBhdCB0aGUgZWRnZXMuCiAgICAg
ICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QubW92ZVdpbmRvd0J5KHgsIHkpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKCFQcmVmZXJlbmNlcy5zaG93RG9ja1RvUmlnaHQg
JiYgdGhpcy5faXNEb2NrZWRUb0JvdHRvbSgpKSB7CisgICAgICAgICAgICAgICAgdmFyIGhlaWdo
dCA9IHRoaXMuX2xhc3RIZWlnaHREdXJpbmdEcmFnIC0gKGV2ZW50LnNjcmVlblkgLSB0aGlzLl9s
YXN0U2NyZWVuWSk7CisgICAgICAgICAgICAgICAgdGhpcy5fbGFzdEhlaWdodER1cmluZ0RyYWcg
PSBoZWlnaHQ7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNldEF0dGFj
aGVkV2luZG93SGVpZ2h0KGhlaWdodCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
ICh0aGlzLl9pc0RvY2tlZFRvQm90dG9tKCkpIHsKKyAgICAgICAgICAgICAgICB2YXIgZGlzdGFu
Y2VUb1JpZ2h0ID0gd2luZG93LmlubmVyV2lkdGggLSBldmVudC5jbGllbnRYOworICAgICAgICAg
ICAgICAgIGlmIChkaXN0YW5jZVRvUmlnaHQgPCB0aGlzLl9zdGFydERpc3RhbmNlVG9SaWdodCAq
IDIgLyAzKSB7CisgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb2NrQ29udHJvbGxl
ci5jaGFuZ2VEb2NrU2lkZShXZWJJbnNwZWN0b3IuRG9ja0NvbnRyb2xsZXIuU3RhdGUuRG9ja2Vk
VG9SaWdodCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIGRpc3RhbmNl
VG9Cb3R0b20gPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBldmVudC5jbGllbnRZOworICAgICAgICAg
ICAgICAgIGlmIChkaXN0YW5jZVRvQm90dG9tIDwgdGhpcy5fc3RhcnREaW5zdGFuY2VUb0JvdHRv
bSAqIDIgLyAzKSB7CisgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb2NrQ29udHJv
bGxlci5jaGFuZ2VEb2NrU2lkZShXZWJJbnNwZWN0b3IuRG9ja0NvbnRyb2xsZXIuU3RhdGUuRG9j
a2VkVG9Cb3R0b20pOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLmVsZW1l
bnQubGFzdFNjcmVlblggPSBldmVudC5zY3JlZW5YOwotICAgICAgICB0aGlzLmVsZW1lbnQubGFz
dFNjcmVlblkgPSBldmVudC5zY3JlZW5ZOworICAgICAgICB0aGlzLl9sYXN0U2NyZWVuWCA9IGV2
ZW50LnNjcmVlblg7CisgICAgICAgIHRoaXMuX2xhc3RTY3JlZW5ZID0gZXZlbnQuc2NyZWVuWTsK
IAogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgIH0sCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJVXRpbHMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzCShyZXZpc2lvbiAxNDA5
NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJVXRpbHMuanMJKHdv
cmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ1N0
YXJ0ID0gZnVuY3RpbwogICAgIFdlYkluc3BlY3Rvci5fZWxlbWVudEVuZERyYWdnaW5nRXZlbnRM
aXN0ZW5lciA9IGVsZW1lbnREcmFnRW5kOwogICAgIFdlYkluc3BlY3Rvci5fbW91c2VPdXRXaGls
ZURyYWdnaW5nVGFyZ2V0RG9jdW1lbnQgPSB0YXJnZXREb2N1bWVudDsKIAotICAgIHRhcmdldERv
Y3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIFdlYkluc3BlY3Rvci5fZWxlbWVu
dERyYWdnaW5nRXZlbnRMaXN0ZW5lciwgdHJ1ZSk7CisgICAgdGFyZ2V0RG9jdW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ01vdmUsIHRy
dWUpOwogICAgIHRhcmdldERvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCBXZWJJ
bnNwZWN0b3IuX2VsZW1lbnREcmFnRW5kLCB0cnVlKTsKICAgICB0YXJnZXREb2N1bWVudC5hZGRF
dmVudExpc3RlbmVyKCJtb3VzZW91dCIsIFdlYkluc3BlY3Rvci5fbW91c2VPdXRXaGlsZURyYWdn
aW5nLCB0cnVlKTsKIApAQCAtOTQsMTAgKzk0LDE2IEBAIFdlYkluc3BlY3Rvci5fdW5yZWdpc3Rl
ck1vdXNlT3V0V2hpbGVEcmEKICAgICBkZWxldGUgV2ViSW5zcGVjdG9yLl9tb3VzZU91dFdoaWxl
RHJhZ2dpbmdUYXJnZXREb2N1bWVudDsKIH0KIAotV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ0Vu
ZCA9IGZ1bmN0aW9uKGV2ZW50KQorV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ01vdmUgPSBmdW5j
dGlvbihldmVudCkKK3sKKyAgICBpZiAoV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ2dpbmdFdmVu
dExpc3RlbmVyKGV2ZW50KSkKKyAgICAgICAgV2ViSW5zcGVjdG9yLl9jYW5jZWxEcmFnRXZlbnRz
KGV2ZW50KTsKK30KKworV2ViSW5zcGVjdG9yLl9jYW5jZWxEcmFnRXZlbnRzID0gZnVuY3Rpb24o
ZXZlbnQpCiB7CiAgICAgdmFyIHRhcmdldERvY3VtZW50ID0gZXZlbnQudGFyZ2V0Lm93bmVyRG9j
dW1lbnQ7Ci0gICAgdGFyZ2V0RG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3Zl
IiwgV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ2dpbmdFdmVudExpc3RlbmVyLCB0cnVlKTsKKyAg
ICB0YXJnZXREb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCBXZWJJbnNw
ZWN0b3IuX2VsZW1lbnREcmFnTW92ZSwgdHJ1ZSk7CiAgICAgdGFyZ2V0RG9jdW1lbnQucmVtb3Zl
RXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIFdlYkluc3BlY3Rvci5fZWxlbWVudERyYWdFbmQsIHRy
dWUpOwogICAgIFdlYkluc3BlY3Rvci5fdW5yZWdpc3Rlck1vdXNlT3V0V2hpbGVEcmFnZ2luZygp
OwogCkBAIC0xMDYsMTEgKzExMiwxNiBAQCBXZWJJbnNwZWN0b3IuX2VsZW1lbnREcmFnRW5kID0g
ZnVuY3Rpb24oCiAgICAgaWYgKFdlYkluc3BlY3Rvci5fZWxlbWVudERyYWdnaW5nR2xhc3NQYW5l
KQogICAgICAgICBXZWJJbnNwZWN0b3IuX2VsZW1lbnREcmFnZ2luZ0dsYXNzUGFuZS5kaXNwb3Nl
KCk7CiAKLSAgICB2YXIgZWxlbWVudERyYWdFbmQgPSBXZWJJbnNwZWN0b3IuX2VsZW1lbnRFbmRE
cmFnZ2luZ0V2ZW50TGlzdGVuZXI7Ci0KICAgICBkZWxldGUgV2ViSW5zcGVjdG9yLl9lbGVtZW50
RHJhZ2dpbmdHbGFzc1BhbmU7CiAgICAgZGVsZXRlIFdlYkluc3BlY3Rvci5fZWxlbWVudERyYWdn
aW5nRXZlbnRMaXN0ZW5lcjsKICAgICBkZWxldGUgV2ViSW5zcGVjdG9yLl9lbGVtZW50RW5kRHJh
Z2dpbmdFdmVudExpc3RlbmVyOworfQorCitXZWJJbnNwZWN0b3IuX2VsZW1lbnREcmFnRW5kID0g
ZnVuY3Rpb24oZXZlbnQpCit7CisgICAgdmFyIGVsZW1lbnREcmFnRW5kID0gV2ViSW5zcGVjdG9y
Ll9lbGVtZW50RW5kRHJhZ2dpbmdFdmVudExpc3RlbmVyOworCisgICAgV2ViSW5zcGVjdG9yLl9j
YW5jZWxEcmFnRXZlbnRzKGV2ZW50KTsKIAogICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAg
ICAgaWYgKGVsZW1lbnREcmFnRW5kKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185736</attachid>
            <date>2013-01-31 03:36:50 -0800</date>
            <delta_ts>2013-01-31 04:35:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108073-20130131153334.patch</filename>
            <type>text/plain</type>
            <size>10274</size>
            <attacher name="Dmitry Gozman">dgozman</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTM5NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEzLTAxLTMxICBEbWl0cnkg
R296bWFuICA8ZGdvem1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
QWxsb3cgdXNlciB0byBjaGFuZ2UgZG9jayBzaWRlIGJ5IGRyYWdnaW5nIHRvb2xiYXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODA3MworCisgICAg
ICAgIERyYWdnaW5nIHRvb2xiYXIgdG8gdGhlIHJpZ2h0L2JvdHRvbSB3aWxsIGNoYW5nZSB0aGUg
ZG9jayBzaWRlIGFjY29yZGluZ2x5CisgICAgICAgIGluc3RlYWQgb2YgY2hhbmdpbmcgdGhlIGlu
c3BlY3RvciB3aW5kb3cgaGVpZ2h0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYmVjYXVzZSBvZiBwdXJlIGluc3BlY3RvciBV
SSBjaGFuZ2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RvY2tDb250cm9sbGVy
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRvY2tDb250cm9sbGVyLnByb3RvdHlwZS5kb2Nr
U2lkZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRG9ja0NvbnRyb2xsZXIucHJvdG90eXBlLl90
b2dnbGVEb2NrU3RhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRvY2tDb250cm9sbGVyLnBy
b3RvdHlwZS5jaGFuZ2VEb2NrU2lkZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9U
b29sYmFyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLl9pc0RvY2tlZFRvQm90dG9tKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5faXNVbmRvY2tlZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUuX3Rvb2xiYXJEcmFnU3RhcnQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLl90b29sYmFyRHJhZ0VuZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUuX3Rvb2xiYXJEcmFnKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1VJVXRpbHMuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuX2VsZW1lbnREcmFnU3RhcnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJh
Z01vdmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl9jYW5jZWxEcmFnRXZlbnRzKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5fZWxlbWVudERyYWdFbmQpOgorCiAyMDEzLTAxLTMxICBLZW50IFRh
bXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBDbGljayBvbiBhIGxhYmVsIGVs
ZW1lbnQgd29uJ3Qgc2VsZWN0IGlucHV0W3R5cGU9ZGF0ZV0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRG9ja0NvbnRyb2xsZXIuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Eb2NrQ29udHJvbGxlci5qcwkocmV2aXNp
b24gMTQxMzkzKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Eb2NrQ29u
dHJvbGxlci5qcwkod29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsMTQgQEAgV2ViSW5zcGVjdG9y
LkRvY2tDb250cm9sbGVyLnByb3RvdHlwZSA9CiAgICAgfSwKIAogICAgIC8qKgorICAgICAqIEBy
ZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBkb2NrU2lkZTogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgIHJldHVybiB0aGlzLl9kb2NrU2lkZTsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICog
QHBhcmFtIHtzdHJpbmd9IGRvY2tTaWRlCiAgICAgICovCiAgICAgc2V0RG9ja1NpZGU6IGZ1bmN0
aW9uKGRvY2tTaWRlKQpAQCAtNzksMTQgKzg3LDYgQEAgV2ViSW5zcGVjdG9yLkRvY2tDb250cm9s
bGVyLnByb3RvdHlwZSA9CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEByZXR1cm4ge2Jvb2xl
YW59Ci0gICAgICovCi0gICAgaXNEb2NrZWRUb0JvdHRvbTogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuX2RvY2tTaWRlID09IFdlYkluc3BlY3Rvci5Eb2NrQ29udHJvbGxl
ci5TdGF0ZS5Eb2NrZWRUb0JvdHRvbTsKLSAgICB9LAotCi0gICAgLyoqCiAgICAgICogQHBhcmFt
IHtib29sZWFufSB1bmF2YWlsYWJsZQogICAgICAqLwogICAgIHNldERvY2tpbmdVbmF2YWlsYWJs
ZTogZnVuY3Rpb24odW5hdmFpbGFibGUpCkBAIC0xODAsOCArMTgwLDE3IEBAIFdlYkluc3BlY3Rv
ci5Eb2NrQ29udHJvbGxlci5wcm90b3R5cGUgPQogICAgICAgICBjYXNlICJib3R0b20iOiBhY3Rp
b24gPSAiYm90dG9tIjsgYnJlYWs7CiAgICAgICAgIGNhc2UgInJpZ2h0IjogYWN0aW9uID0gInJp
Z2h0IjsgYnJlYWs7CiAgICAgICAgIGNhc2UgInVuZG9jayI6IGFjdGlvbiA9ICJ1bmRvY2tlZCI7
IGJyZWFrOworICAgICAgICBkZWZhdWx0OiByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LnJlcXVlc3RTZXREb2NrU2lkZShhY3Rpb24pOworICAgICAgICB0
aGlzLmNoYW5nZURvY2tTaWRlKGFjdGlvbik7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBzaWRlCisgICAgICovCisgICAgY2hhbmdlRG9ja1NpZGU6IGZ1bmN0aW9u
KHNpZGUpCisgICAgeworICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QucmVxdWVzdFNldERv
Y2tTaWRlKHNpZGUpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Ub29sYmFyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVG9vbGJhci5qcwkocmV2aXNpb24gMTQxMzkzKQorKysgU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Ub29sYmFyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw2ICs0Miw4IEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyID0gZnVuY3Rpb24oKQogCiAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNsb3NlLWJ1dHRvbi1sZWZ0IikuYWRkRXZlbnRMaXN0ZW5l
cigiY2xpY2siLCB0aGlzLl9vbkNsb3NlLCB0cnVlKTsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY2xvc2UtYnV0dG9uLXJpZ2h0IikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlz
Ll9vbkNsb3NlLCB0cnVlKTsKKworICAgIHRoaXMuX2lzV2luZG93TW92ZVN1cHBvcnRlZCA9IFdl
Ykluc3BlY3Rvci5wbGF0Zm9ybUZsYXZvcigpID09IFdlYkluc3BlY3Rvci5QbGF0Zm9ybUZsYXZv
ci5NYWNMZW9wYXJkIHx8IFdlYkluc3BlY3Rvci5wbGF0Zm9ybUZsYXZvcigpID09IFdlYkluc3Bl
Y3Rvci5QbGF0Zm9ybUZsYXZvci5NYWNTbm93TGVvcGFyZDsKIH0KIAogV2ViSW5zcGVjdG9yLlRv
b2xiYXIucHJvdG90eXBlID0gewpAQCAtMTAxLDcgKzEwMywxNSBAQCBXZWJJbnNwZWN0b3IuVG9v
bGJhci5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2lzRG9ja2VkVG9Cb3R0b206IGZ1bmN0
aW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZG9ja0NvbnRyb2xsZXIg
JiYgV2ViSW5zcGVjdG9yLmRvY2tDb250cm9sbGVyLmlzRG9ja2VkVG9Cb3R0b20oKTsKKyAgICAg
ICAgcmV0dXJuICEhV2ViSW5zcGVjdG9yLmRvY2tDb250cm9sbGVyICYmIFdlYkluc3BlY3Rvci5k
b2NrQ29udHJvbGxlci5kb2NrU2lkZSgpID09IFdlYkluc3BlY3Rvci5Eb2NrQ29udHJvbGxlci5T
dGF0ZS5Eb2NrZWRUb0JvdHRvbTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7
Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBfaXNVbmRvY2tlZDogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuICEhV2ViSW5zcGVjdG9yLmRvY2tDb250cm9sbGVyICYmIFdlYkluc3BlY3Rv
ci5kb2NrQ29udHJvbGxlci5kb2NrU2lkZSgpID09IFdlYkluc3BlY3Rvci5Eb2NrQ29udHJvbGxl
ci5TdGF0ZS5VbmRvY2tlZDsKICAgICB9LAogCiAgICAgLyoqCkBAIC0xMDksNyArMTE5LDEwIEBA
IFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfdG9vbGJh
ckRyYWdTdGFydDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICBpZiAoKCF0aGlzLl9p
c0RvY2tlZFRvQm90dG9tKCkgJiYgV2ViSW5zcGVjdG9yLnBsYXRmb3JtRmxhdm9yKCkgIT09IFdl
Ykluc3BlY3Rvci5QbGF0Zm9ybUZsYXZvci5NYWNMZW9wYXJkICYmIFdlYkluc3BlY3Rvci5wbGF0
Zm9ybUZsYXZvcigpICE9PSBXZWJJbnNwZWN0b3IuUGxhdGZvcm1GbGF2b3IuTWFjU25vd0xlb3Bh
cmQpIHx8IFdlYkluc3BlY3Rvci5wb3J0KCkgPT0gInF0IikKKyAgICAgICAgaWYgKFdlYkluc3Bl
Y3Rvci5wb3J0KCkgPT0gInF0IikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAg
ICBpZiAodGhpcy5faXNVbmRvY2tlZCgpICYmICF0aGlzLl9pc1dpbmRvd01vdmVTdXBwb3J0ZWQp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgdmFyIHRhcmdldCA9IGV2ZW50
LnRhcmdldDsKQEAgLTExOSw5ICsxMzIsMTEgQEAgV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90
eXBlID0gewogICAgICAgICBpZiAodGFyZ2V0ICE9PSB0aGlzLmVsZW1lbnQgJiYgIXRhcmdldC5o
YXNTdHlsZUNsYXNzKCJ0b29sYmFyLWl0ZW0iKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICB0aGlzLmVsZW1lbnQubGFzdFNjcmVlblggPSBldmVudC5zY3JlZW5YOwotICAg
ICAgICB0aGlzLmVsZW1lbnQubGFzdFNjcmVlblkgPSBldmVudC5zY3JlZW5ZOworICAgICAgICB0
aGlzLl9sYXN0U2NyZWVuWCA9IGV2ZW50LnNjcmVlblg7CisgICAgICAgIHRoaXMuX2xhc3RTY3Jl
ZW5ZID0gZXZlbnQuc2NyZWVuWTsKICAgICAgICAgdGhpcy5fbGFzdEhlaWdodER1cmluZ0RyYWcg
PSB3aW5kb3cuaW5uZXJIZWlnaHQ7CisgICAgICAgIHRoaXMuX3N0YXJ0RGlzdGFuY2VUb1JpZ2h0
ID0gd2luZG93LmlubmVyV2lkdGggLSBldmVudC5jbGllbnRYOworICAgICAgICB0aGlzLl9zdGFy
dERpbnN0YW5jZVRvQm90dG9tID0gd2luZG93LmlubmVySGVpZ2h0IC0gZXZlbnQuY2xpZW50WTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSwKIApAQCAtMTMwLDI5ICsxNDUsNDYgQEAgV2Vi
SW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlID0gewogICAgICAgICAvLyBXZSBtYXkgbm90IGdl
dCB0aGUgZHJhZyBldmVudCBhdCB0aGUgZW5kLgogICAgICAgICAvLyBBcHBseSBsYXN0IGNoYW5n
ZXMgbWFudWFsbHkuCiAgICAgICAgIHRoaXMuX3Rvb2xiYXJEcmFnKGV2ZW50KTsKLSAgICAgICAg
ZGVsZXRlIHRoaXMuZWxlbWVudC5sYXN0U2NyZWVuWDsKLSAgICAgICAgZGVsZXRlIHRoaXMuZWxl
bWVudC5sYXN0U2NyZWVuWTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2xhc3RTY3JlZW5YOworICAg
ICAgICBkZWxldGUgdGhpcy5fbGFzdFNjcmVlblk7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9zdGFy
dERpc3RhbmNlVG9SaWdodDsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3N0YXJ0RGluc3RhbmNlVG9C
b3R0b207CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9sYXN0SGVpZ2h0RHVyaW5nRHJhZzsKICAgICB9
LAogCiAgICAgX3Rvb2xiYXJEcmFnOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIGlm
ICh0aGlzLl9pc0RvY2tlZFRvQm90dG9tKCkpIHsKLSAgICAgICAgICAgIHZhciBoZWlnaHQgPSB0
aGlzLl9sYXN0SGVpZ2h0RHVyaW5nRHJhZyAtIChldmVudC5zY3JlZW5ZIC0gdGhpcy5lbGVtZW50
Lmxhc3RTY3JlZW5ZKTsKLSAgICAgICAgICAgIHRoaXMuX2xhc3RIZWlnaHREdXJpbmdEcmFnID0g
aGVpZ2h0OwotCi0gICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3Quc2V0QXR0YWNoZWRX
aW5kb3dIZWlnaHQoaGVpZ2h0KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHZhciB4
ID0gZXZlbnQuc2NyZWVuWCAtIHRoaXMuZWxlbWVudC5sYXN0U2NyZWVuWDsKLSAgICAgICAgICAg
IHZhciB5ID0gZXZlbnQuc2NyZWVuWSAtIHRoaXMuZWxlbWVudC5sYXN0U2NyZWVuWTsKKyAgICAg
ICAgaWYgKHRoaXMuX2lzVW5kb2NrZWQoKSkgeworICAgICAgICAgICAgdmFyIHggPSBldmVudC5z
Y3JlZW5YIC0gdGhpcy5fbGFzdFNjcmVlblg7CisgICAgICAgICAgICB2YXIgeSA9IGV2ZW50LnNj
cmVlblkgLSB0aGlzLl9sYXN0U2NyZWVuWTsKIAogICAgICAgICAgICAgLy8gV2UgY2Fubm90IGNh
bGwgd2luZG93Lm1vdmVCeSBoZXJlIGJlY2F1c2UgaXQgcmVzdHJpY3RzIHRoZSBtb3ZlbWVudAog
ICAgICAgICAgICAgLy8gb2YgdGhlIHdpbmRvdyBhdCB0aGUgZWRnZXMuCiAgICAgICAgICAgICBJ
bnNwZWN0b3JGcm9udGVuZEhvc3QubW92ZVdpbmRvd0J5KHgsIHkpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgaWYgKCFQcmVmZXJlbmNlcy5zaG93RG9ja1RvUmlnaHQgJiYgdGhpcy5f
aXNEb2NrZWRUb0JvdHRvbSgpKSB7CisgICAgICAgICAgICAgICAgdmFyIGhlaWdodCA9IHRoaXMu
X2xhc3RIZWlnaHREdXJpbmdEcmFnIC0gKGV2ZW50LnNjcmVlblkgLSB0aGlzLl9sYXN0U2NyZWVu
WSk7CisgICAgICAgICAgICAgICAgdGhpcy5fbGFzdEhlaWdodER1cmluZ0RyYWcgPSBoZWlnaHQ7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNldEF0dGFjaGVkV2luZG93
SGVpZ2h0KGhlaWdodCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0aGlzLl9p
c0RvY2tlZFRvQm90dG9tKCkpIHsKKyAgICAgICAgICAgICAgICB2YXIgZGlzdGFuY2VUb1JpZ2h0
ID0gd2luZG93LmlubmVyV2lkdGggLSBldmVudC5jbGllbnRYOworICAgICAgICAgICAgICAgIGlm
IChkaXN0YW5jZVRvUmlnaHQgPCB0aGlzLl9zdGFydERpc3RhbmNlVG9SaWdodCAqIDIgLyAzKSB7
CisgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb2NrQ29udHJvbGxlci5jaGFuZ2VE
b2NrU2lkZShXZWJJbnNwZWN0b3IuRG9ja0NvbnRyb2xsZXIuU3RhdGUuRG9ja2VkVG9SaWdodCk7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIGRpc3RhbmNlVG9Cb3R0b20g
PSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBldmVudC5jbGllbnRZOworICAgICAgICAgICAgICAgIGlm
IChkaXN0YW5jZVRvQm90dG9tIDwgdGhpcy5fc3RhcnREaW5zdGFuY2VUb0JvdHRvbSAqIDIgLyAz
KSB7CisgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb2NrQ29udHJvbGxlci5jaGFu
Z2VEb2NrU2lkZShXZWJJbnNwZWN0b3IuRG9ja0NvbnRyb2xsZXIuU3RhdGUuRG9ja2VkVG9Cb3R0
b20pOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLmVsZW1lbnQubGFzdFNj
cmVlblggPSBldmVudC5zY3JlZW5YOwotICAgICAgICB0aGlzLmVsZW1lbnQubGFzdFNjcmVlblkg
PSBldmVudC5zY3JlZW5ZOworICAgICAgICB0aGlzLl9sYXN0U2NyZWVuWCA9IGV2ZW50LnNjcmVl
blg7CisgICAgICAgIHRoaXMuX2xhc3RTY3JlZW5ZID0gZXZlbnQuc2NyZWVuWTsKIAogICAgICAg
ICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgIH0sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1VJVXRpbHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzCShyZXZpc2lvbiAxNDEzOTMpCisrKyBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJVXRpbHMuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTcxLDcgKzcxLDcgQEAgV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ1N0YXJ0ID0gZnVu
Y3RpbwogICAgIFdlYkluc3BlY3Rvci5fZWxlbWVudEVuZERyYWdnaW5nRXZlbnRMaXN0ZW5lciA9
IGVsZW1lbnREcmFnRW5kOwogICAgIFdlYkluc3BlY3Rvci5fbW91c2VPdXRXaGlsZURyYWdnaW5n
VGFyZ2V0RG9jdW1lbnQgPSB0YXJnZXREb2N1bWVudDsKIAotICAgIHRhcmdldERvY3VtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIFdlYkluc3BlY3Rvci5fZWxlbWVudERyYWdnaW5n
RXZlbnRMaXN0ZW5lciwgdHJ1ZSk7CisgICAgdGFyZ2V0RG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigibW91c2Vtb3ZlIiwgV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ01vdmUsIHRydWUpOwogICAg
IHRhcmdldERvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCBXZWJJbnNwZWN0b3Iu
X2VsZW1lbnREcmFnRW5kLCB0cnVlKTsKICAgICB0YXJnZXREb2N1bWVudC5hZGRFdmVudExpc3Rl
bmVyKCJtb3VzZW91dCIsIFdlYkluc3BlY3Rvci5fbW91c2VPdXRXaGlsZURyYWdnaW5nLCB0cnVl
KTsKIApAQCAtOTQsMTAgKzk0LDE2IEBAIFdlYkluc3BlY3Rvci5fdW5yZWdpc3Rlck1vdXNlT3V0
V2hpbGVEcmEKICAgICBkZWxldGUgV2ViSW5zcGVjdG9yLl9tb3VzZU91dFdoaWxlRHJhZ2dpbmdU
YXJnZXREb2N1bWVudDsKIH0KIAotV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ0VuZCA9IGZ1bmN0
aW9uKGV2ZW50KQorV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ01vdmUgPSBmdW5jdGlvbihldmVu
dCkKK3sKKyAgICBpZiAoV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ2dpbmdFdmVudExpc3RlbmVy
KGV2ZW50KSkKKyAgICAgICAgV2ViSW5zcGVjdG9yLl9jYW5jZWxEcmFnRXZlbnRzKGV2ZW50KTsK
K30KKworV2ViSW5zcGVjdG9yLl9jYW5jZWxEcmFnRXZlbnRzID0gZnVuY3Rpb24oZXZlbnQpCiB7
CiAgICAgdmFyIHRhcmdldERvY3VtZW50ID0gZXZlbnQudGFyZ2V0Lm93bmVyRG9jdW1lbnQ7Ci0g
ICAgdGFyZ2V0RG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgV2ViSW5z
cGVjdG9yLl9lbGVtZW50RHJhZ2dpbmdFdmVudExpc3RlbmVyLCB0cnVlKTsKKyAgICB0YXJnZXRE
b2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCBXZWJJbnNwZWN0b3IuX2Vs
ZW1lbnREcmFnTW92ZSwgdHJ1ZSk7CiAgICAgdGFyZ2V0RG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0
ZW5lcigibW91c2V1cCIsIFdlYkluc3BlY3Rvci5fZWxlbWVudERyYWdFbmQsIHRydWUpOwogICAg
IFdlYkluc3BlY3Rvci5fdW5yZWdpc3Rlck1vdXNlT3V0V2hpbGVEcmFnZ2luZygpOwogCkBAIC0x
MDYsMTEgKzExMiwxNiBAQCBXZWJJbnNwZWN0b3IuX2VsZW1lbnREcmFnRW5kID0gZnVuY3Rpb24o
CiAgICAgaWYgKFdlYkluc3BlY3Rvci5fZWxlbWVudERyYWdnaW5nR2xhc3NQYW5lKQogICAgICAg
ICBXZWJJbnNwZWN0b3IuX2VsZW1lbnREcmFnZ2luZ0dsYXNzUGFuZS5kaXNwb3NlKCk7CiAKLSAg
ICB2YXIgZWxlbWVudERyYWdFbmQgPSBXZWJJbnNwZWN0b3IuX2VsZW1lbnRFbmREcmFnZ2luZ0V2
ZW50TGlzdGVuZXI7Ci0KICAgICBkZWxldGUgV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ2dpbmdH
bGFzc1BhbmU7CiAgICAgZGVsZXRlIFdlYkluc3BlY3Rvci5fZWxlbWVudERyYWdnaW5nRXZlbnRM
aXN0ZW5lcjsKICAgICBkZWxldGUgV2ViSW5zcGVjdG9yLl9lbGVtZW50RW5kRHJhZ2dpbmdFdmVu
dExpc3RlbmVyOworfQorCitXZWJJbnNwZWN0b3IuX2VsZW1lbnREcmFnRW5kID0gZnVuY3Rpb24o
ZXZlbnQpCit7CisgICAgdmFyIGVsZW1lbnREcmFnRW5kID0gV2ViSW5zcGVjdG9yLl9lbGVtZW50
RW5kRHJhZ2dpbmdFdmVudExpc3RlbmVyOworCisgICAgV2ViSW5zcGVjdG9yLl9jYW5jZWxEcmFn
RXZlbnRzKGV2ZW50KTsKIAogICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgaWYgKGVs
ZW1lbnREcmFnRW5kKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185748</attachid>
            <date>2013-01-31 04:35:46 -0800</date>
            <delta_ts>2013-02-04 05:48:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108073-20130131163230.patch</filename>
            <type>text/plain</type>
            <size>10265</size>
            <attacher name="Dmitry Gozman">dgozman</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTQwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDEzLTAxLTMxICBEbWl0cnkg
R296bWFuICA8ZGdvem1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
QWxsb3cgdXNlciB0byBjaGFuZ2UgZG9jayBzaWRlIGJ5IGRyYWdnaW5nIHRvb2xiYXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODA3MworCisgICAg
ICAgIERyYWdnaW5nIHRvb2xiYXIgdG8gdGhlIHJpZ2h0L2JvdHRvbSB3aWxsIGNoYW5nZSB0aGUg
ZG9jayBzaWRlIGFjY29yZGluZ2x5CisgICAgICAgIGluc3RlYWQgb2YgY2hhbmdpbmcgdGhlIGlu
c3BlY3RvciB3aW5kb3cgaGVpZ2h0IChpZiBkb2NrIHRvIHJpZ2h0IGlzIGF2YWlsYWJsZSkuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLCBiZWNhdXNlIG9mIHB1cmUgaW5zcGVjdG9yIFVJIGNoYW5nZS4KKworICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvRG9ja0NvbnRyb2xsZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRG9ja0NvbnRyb2xsZXIucHJvdG90eXBlLmRvY2tTaWRlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL1Rvb2xiYXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhcik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUuX2lzRG9ja2VkVG9Cb3R0
b20pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLl9pc1VuZG9ja2Vk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5fdG9vbGJhckRyYWdT
dGFydCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUuX3Rvb2xiYXJE
cmFnRW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5fdG9vbGJh
ckRyYWcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLl90b29sYmFy
RHJhZ01vdmVXaW5kb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBl
Ll90b29sYmFyRHJhZ0NoYW5nZURvY2tpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xi
YXIucHJvdG90eXBlLl90b29sYmFyRHJhZ0NoYW5nZUhlaWdodCk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl9lbGVtZW50
RHJhZ1N0YXJ0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5fZWxlbWVudERyYWdNb3ZlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5fY2FuY2VsRHJhZ0V2ZW50cyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuX2VsZW1lbnREcmFnRW5kKToKKwogMjAxMy0wMS0zMSAgQW5kcmV5IEx1c2huaWtvdiAg
PGx1c2huaWtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRFRFIGRv
ZXNuJ3QgaGlnaGxpZ2h0IHdvcmRzIGlmIHRoZSBzZWxlY3RlZCBvbmUgaXMgdGhlIGxhc3QgaW4g
dGhlIGxpbmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRG9ja0Nv
bnRyb2xsZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9Eb2NrQ29udHJvbGxlci5qcwkocmV2aXNpb24gMTQxMzkzKQorKysgU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Eb2NrQ29udHJvbGxlci5qcwkod29ya2luZyBjb3B5KQpA
QCAtNjAsNiArNjAsMTQgQEAgV2ViSW5zcGVjdG9yLkRvY2tDb250cm9sbGVyLnByb3RvdHlwZSA9
CiAgICAgfSwKIAogICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAg
ICBkb2NrU2lkZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2RvY2tT
aWRlOworICAgIH0sCisKKyAgICAvKioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZG9ja1NpZGUK
ICAgICAgKi8KICAgICBzZXREb2NrU2lkZTogZnVuY3Rpb24oZG9ja1NpZGUpCkBAIC03OSwxNCAr
ODcsNiBAQCBXZWJJbnNwZWN0b3IuRG9ja0NvbnRyb2xsZXIucHJvdG90eXBlID0KICAgICB9LAog
CiAgICAgLyoqCi0gICAgICogQHJldHVybiB7Ym9vbGVhbn0KLSAgICAgKi8KLSAgICBpc0RvY2tl
ZFRvQm90dG9tOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZG9ja1Np
ZGUgPT0gV2ViSW5zcGVjdG9yLkRvY2tDb250cm9sbGVyLlN0YXRlLkRvY2tlZFRvQm90dG9tOwot
ICAgIH0sCi0KLSAgICAvKioKICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHVuYXZhaWxhYmxlCiAg
ICAgICovCiAgICAgc2V0RG9ja2luZ1VuYXZhaWxhYmxlOiBmdW5jdGlvbih1bmF2YWlsYWJsZSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVG9vbGJhci5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rvb2xiYXIuanMJ
KHJldmlzaW9uIDE0MTM5MykKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
VG9vbGJhci5qcwkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOCBAQCBXZWJJbnNwZWN0b3Iu
VG9vbGJhciA9IGZ1bmN0aW9uKCkKIAogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbG9z
ZS1idXR0b24tbGVmdCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fb25DbG9zZSwg
dHJ1ZSk7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNsb3NlLWJ1dHRvbi1yaWdodCIp
LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fb25DbG9zZSwgdHJ1ZSk7CisKKyAgICB0
aGlzLl9pc1dpbmRvd01vdmVTdXBwb3J0ZWQgPSBXZWJJbnNwZWN0b3IuaXNNYWMoKTsKIH0KIAog
V2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlID0gewpAQCAtMTAxLDcgKzEwMywxNSBAQCBX
ZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2lzRG9ja2Vk
VG9Cb3R0b206IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3Iu
ZG9ja0NvbnRyb2xsZXIgJiYgV2ViSW5zcGVjdG9yLmRvY2tDb250cm9sbGVyLmlzRG9ja2VkVG9C
b3R0b20oKTsKKyAgICAgICAgcmV0dXJuICEhV2ViSW5zcGVjdG9yLmRvY2tDb250cm9sbGVyICYm
IFdlYkluc3BlY3Rvci5kb2NrQ29udHJvbGxlci5kb2NrU2lkZSgpID09IFdlYkluc3BlY3Rvci5E
b2NrQ29udHJvbGxlci5TdGF0ZS5Eb2NrZWRUb0JvdHRvbTsKKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBfaXNVbmRvY2tlZDogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuICEhV2ViSW5zcGVjdG9yLmRvY2tDb250cm9sbGVy
ICYmIFdlYkluc3BlY3Rvci5kb2NrQ29udHJvbGxlci5kb2NrU2lkZSgpID09IFdlYkluc3BlY3Rv
ci5Eb2NrQ29udHJvbGxlci5TdGF0ZS5VbmRvY2tlZDsKICAgICB9LAogCiAgICAgLyoqCkBAIC0x
MDksNyArMTE5LDcgQEAgV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlID0gewogICAgICAq
LwogICAgIF90b29sYmFyRHJhZ1N0YXJ0OiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAg
IGlmICgoIXRoaXMuX2lzRG9ja2VkVG9Cb3R0b20oKSAmJiBXZWJJbnNwZWN0b3IucGxhdGZvcm1G
bGF2b3IoKSAhPT0gV2ViSW5zcGVjdG9yLlBsYXRmb3JtRmxhdm9yLk1hY0xlb3BhcmQgJiYgV2Vi
SW5zcGVjdG9yLnBsYXRmb3JtRmxhdm9yKCkgIT09IFdlYkluc3BlY3Rvci5QbGF0Zm9ybUZsYXZv
ci5NYWNTbm93TGVvcGFyZCkgfHwgV2ViSW5zcGVjdG9yLnBvcnQoKSA9PSAicXQiKQorICAgICAg
ICBpZiAodGhpcy5faXNVbmRvY2tlZCgpICYmICF0aGlzLl9pc1dpbmRvd01vdmVTdXBwb3J0ZWQp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgdmFyIHRhcmdldCA9IGV2ZW50
LnRhcmdldDsKQEAgLTExOSw5ICsxMjksMTEgQEAgV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90
eXBlID0gewogICAgICAgICBpZiAodGFyZ2V0ICE9PSB0aGlzLmVsZW1lbnQgJiYgIXRhcmdldC5o
YXNTdHlsZUNsYXNzKCJ0b29sYmFyLWl0ZW0iKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICB0aGlzLmVsZW1lbnQubGFzdFNjcmVlblggPSBldmVudC5zY3JlZW5YOwotICAg
ICAgICB0aGlzLmVsZW1lbnQubGFzdFNjcmVlblkgPSBldmVudC5zY3JlZW5ZOworICAgICAgICB0
aGlzLl9sYXN0U2NyZWVuWCA9IGV2ZW50LnNjcmVlblg7CisgICAgICAgIHRoaXMuX2xhc3RTY3Jl
ZW5ZID0gZXZlbnQuc2NyZWVuWTsKICAgICAgICAgdGhpcy5fbGFzdEhlaWdodER1cmluZ0RyYWcg
PSB3aW5kb3cuaW5uZXJIZWlnaHQ7CisgICAgICAgIHRoaXMuX3N0YXJ0RGlzdGFuY2VUb1JpZ2h0
ID0gd2luZG93LmlubmVyV2lkdGggLSBldmVudC5jbGllbnRYOworICAgICAgICB0aGlzLl9zdGFy
dERpbnN0YW5jZVRvQm90dG9tID0gd2luZG93LmlubmVySGVpZ2h0IC0gZXZlbnQuY2xpZW50WTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSwKIApAQCAtMTMwLDMxICsxNDIsNjAgQEAgV2Vi
SW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlID0gewogICAgICAgICAvLyBXZSBtYXkgbm90IGdl
dCB0aGUgZHJhZyBldmVudCBhdCB0aGUgZW5kLgogICAgICAgICAvLyBBcHBseSBsYXN0IGNoYW5n
ZXMgbWFudWFsbHkuCiAgICAgICAgIHRoaXMuX3Rvb2xiYXJEcmFnKGV2ZW50KTsKLSAgICAgICAg
ZGVsZXRlIHRoaXMuZWxlbWVudC5sYXN0U2NyZWVuWDsKLSAgICAgICAgZGVsZXRlIHRoaXMuZWxl
bWVudC5sYXN0U2NyZWVuWTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2xhc3RTY3JlZW5YOworICAg
ICAgICBkZWxldGUgdGhpcy5fbGFzdFNjcmVlblk7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9sYXN0
SGVpZ2h0RHVyaW5nRHJhZzsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3N0YXJ0RGlzdGFuY2VUb1Jp
Z2h0OworICAgICAgICBkZWxldGUgdGhpcy5fc3RhcnREaW5zdGFuY2VUb0JvdHRvbTsKICAgICB9
LAogCiAgICAgX3Rvb2xiYXJEcmFnOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIGlm
ICh0aGlzLl9pc0RvY2tlZFRvQm90dG9tKCkpIHsKLSAgICAgICAgICAgIHZhciBoZWlnaHQgPSB0
aGlzLl9sYXN0SGVpZ2h0RHVyaW5nRHJhZyAtIChldmVudC5zY3JlZW5ZIC0gdGhpcy5lbGVtZW50
Lmxhc3RTY3JlZW5ZKTsKLSAgICAgICAgICAgIHRoaXMuX2xhc3RIZWlnaHREdXJpbmdEcmFnID0g
aGVpZ2h0OworICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogCi0gICAgICAgICAgICBJ
bnNwZWN0b3JGcm9udGVuZEhvc3Quc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQoaGVpZ2h0KTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHZhciB4ID0gZXZlbnQuc2NyZWVuWCAtIHRoaXMu
ZWxlbWVudC5sYXN0U2NyZWVuWDsKLSAgICAgICAgICAgIHZhciB5ID0gZXZlbnQuc2NyZWVuWSAt
IHRoaXMuZWxlbWVudC5sYXN0U2NyZWVuWTsKKyAgICAgICAgaWYgKHRoaXMuX2lzVW5kb2NrZWQo
KSkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl90b29sYmFyRHJhZ01vdmVXaW5kb3coZXZlbnQp
OworICAgICAgICBlbHNlIGlmIChQcmVmZXJlbmNlcy5zaG93RG9ja1RvUmlnaHQpCisgICAgICAg
ICAgICByZXR1cm4gdGhpcy5fdG9vbGJhckRyYWdDaGFuZ2VEb2NraW5nKGV2ZW50KTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Rvb2xiYXJEcmFnQ2hhbmdlSGVpZ2h0
KGV2ZW50KTsKKyAgICB9LAorCisgICAgX3Rvb2xiYXJEcmFnTW92ZVdpbmRvdzogZnVuY3Rpb24o
ZXZlbnQpCisgICAgeworICAgICAgICB2YXIgeCA9IGV2ZW50LnNjcmVlblggLSB0aGlzLl9sYXN0
U2NyZWVuWDsKKyAgICAgICAgdmFyIHkgPSBldmVudC5zY3JlZW5ZIC0gdGhpcy5fbGFzdFNjcmVl
blk7CisgICAgICAgIHRoaXMuX2xhc3RTY3JlZW5YID0gZXZlbnQuc2NyZWVuWDsKKyAgICAgICAg
dGhpcy5fbGFzdFNjcmVlblkgPSBldmVudC5zY3JlZW5ZOworICAgICAgICAvLyBXZSBjYW5ub3Qg
Y2FsbCB3aW5kb3cubW92ZUJ5IGhlcmUgYmVjYXVzZSBpdCByZXN0cmljdHMgdGhlIG1vdmVtZW50
CisgICAgICAgIC8vIG9mIHRoZSB3aW5kb3cgYXQgdGhlIGVkZ2VzLgorICAgICAgICBJbnNwZWN0
b3JGcm9udGVuZEhvc3QubW92ZVdpbmRvd0J5KHgsIHkpOworICAgIH0sCiAKLSAgICAgICAgICAg
IC8vIFdlIGNhbm5vdCBjYWxsIHdpbmRvdy5tb3ZlQnkgaGVyZSBiZWNhdXNlIGl0IHJlc3RyaWN0
cyB0aGUgbW92ZW1lbnQKLSAgICAgICAgICAgIC8vIG9mIHRoZSB3aW5kb3cgYXQgdGhlIGVkZ2Vz
LgotICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lm1vdmVXaW5kb3dCeSh4LCB5KTsK
KyAgICBfdG9vbGJhckRyYWdDaGFuZ2VEb2NraW5nOiBmdW5jdGlvbihldmVudCkKKyAgICB7Cisg
ICAgICAgIGlmICh0aGlzLl9pc0RvY2tlZFRvQm90dG9tKCkpIHsKKyAgICAgICAgICAgIHZhciBk
aXN0YW5jZVRvUmlnaHQgPSB3aW5kb3cuaW5uZXJXaWR0aCAtIGV2ZW50LmNsaWVudFg7CisgICAg
ICAgICAgICBpZiAoZGlzdGFuY2VUb1JpZ2h0IDwgdGhpcy5fc3RhcnREaXN0YW5jZVRvUmlnaHQg
KiAyIC8gMykgeworICAgICAgICAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5yZXF1ZXN0
U2V0RG9ja1NpZGUoV2ViSW5zcGVjdG9yLkRvY2tDb250cm9sbGVyLlN0YXRlLkRvY2tlZFRvUmln
aHQpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgdmFyIGRpc3RhbmNlVG9Cb3R0b20gPSB3aW5kb3cuaW5u
ZXJIZWlnaHQgLSBldmVudC5jbGllbnRZOworICAgICAgICAgICAgaWYgKGRpc3RhbmNlVG9Cb3R0
b20gPCB0aGlzLl9zdGFydERpbnN0YW5jZVRvQm90dG9tICogMiAvIDMpIHsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QucmVxdWVzdFNldERvY2tTaWRlKFdlYkluc3BlY3Rv
ci5Eb2NrQ29udHJvbGxlci5TdGF0ZS5Eb2NrZWRUb0JvdHRvbSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICB9LAogCi0gICAgICAg
IHRoaXMuZWxlbWVudC5sYXN0U2NyZWVuWCA9IGV2ZW50LnNjcmVlblg7Ci0gICAgICAgIHRoaXMu
ZWxlbWVudC5sYXN0U2NyZWVuWSA9IGV2ZW50LnNjcmVlblk7Ci0KLSAgICAgICAgZXZlbnQucHJl
dmVudERlZmF1bHQoKTsKKyAgICBfdG9vbGJhckRyYWdDaGFuZ2VIZWlnaHQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIHsKKyAgICAgICAgLy8gQ2hhbmdlIHRoZSBpbnNwZWN0b3Igd2luZG93IGhlaWdo
dCBmb3IgZG9jay10by1ib3R0b20gb25seSBtb2RlLgorICAgICAgICB2YXIgaGVpZ2h0ID0gdGhp
cy5fbGFzdEhlaWdodER1cmluZ0RyYWcgLSAoZXZlbnQuc2NyZWVuWSAtIHRoaXMuX2xhc3RTY3Jl
ZW5ZKTsKKyAgICAgICAgdGhpcy5fbGFzdEhlaWdodER1cmluZ0RyYWcgPSBoZWlnaHQ7CisgICAg
ICAgIHRoaXMuX2xhc3RTY3JlZW5ZID0gZXZlbnQuc2NyZWVuWTsKKyAgICAgICAgSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdodCk7CiAgICAgfSwKIAog
ICAgIF9vbkNsb3NlOiBmdW5jdGlvbigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1VJVXRpbHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzCShyZXZpc2lvbiAxNDEzOTMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJVXRpbHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTcx
LDcgKzcxLDcgQEAgV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ1N0YXJ0ID0gZnVuY3RpbwogICAg
IFdlYkluc3BlY3Rvci5fZWxlbWVudEVuZERyYWdnaW5nRXZlbnRMaXN0ZW5lciA9IGVsZW1lbnRE
cmFnRW5kOwogICAgIFdlYkluc3BlY3Rvci5fbW91c2VPdXRXaGlsZURyYWdnaW5nVGFyZ2V0RG9j
dW1lbnQgPSB0YXJnZXREb2N1bWVudDsKIAotICAgIHRhcmdldERvY3VtZW50LmFkZEV2ZW50TGlz
dGVuZXIoIm1vdXNlbW92ZSIsIFdlYkluc3BlY3Rvci5fZWxlbWVudERyYWdnaW5nRXZlbnRMaXN0
ZW5lciwgdHJ1ZSk7CisgICAgdGFyZ2V0RG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vt
b3ZlIiwgV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ01vdmUsIHRydWUpOwogICAgIHRhcmdldERv
Y3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCBXZWJJbnNwZWN0b3IuX2VsZW1lbnRE
cmFnRW5kLCB0cnVlKTsKICAgICB0YXJnZXREb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3Vz
ZW91dCIsIFdlYkluc3BlY3Rvci5fbW91c2VPdXRXaGlsZURyYWdnaW5nLCB0cnVlKTsKIApAQCAt
OTQsMTAgKzk0LDE2IEBAIFdlYkluc3BlY3Rvci5fdW5yZWdpc3Rlck1vdXNlT3V0V2hpbGVEcmEK
ICAgICBkZWxldGUgV2ViSW5zcGVjdG9yLl9tb3VzZU91dFdoaWxlRHJhZ2dpbmdUYXJnZXREb2N1
bWVudDsKIH0KIAotV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ0VuZCA9IGZ1bmN0aW9uKGV2ZW50
KQorV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ01vdmUgPSBmdW5jdGlvbihldmVudCkKK3sKKyAg
ICBpZiAoV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ2dpbmdFdmVudExpc3RlbmVyKGV2ZW50KSkK
KyAgICAgICAgV2ViSW5zcGVjdG9yLl9jYW5jZWxEcmFnRXZlbnRzKGV2ZW50KTsKK30KKworV2Vi
SW5zcGVjdG9yLl9jYW5jZWxEcmFnRXZlbnRzID0gZnVuY3Rpb24oZXZlbnQpCiB7CiAgICAgdmFy
IHRhcmdldERvY3VtZW50ID0gZXZlbnQudGFyZ2V0Lm93bmVyRG9jdW1lbnQ7Ci0gICAgdGFyZ2V0
RG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgV2ViSW5zcGVjdG9yLl9l
bGVtZW50RHJhZ2dpbmdFdmVudExpc3RlbmVyLCB0cnVlKTsKKyAgICB0YXJnZXREb2N1bWVudC5y
ZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCBXZWJJbnNwZWN0b3IuX2VsZW1lbnREcmFn
TW92ZSwgdHJ1ZSk7CiAgICAgdGFyZ2V0RG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91
c2V1cCIsIFdlYkluc3BlY3Rvci5fZWxlbWVudERyYWdFbmQsIHRydWUpOwogICAgIFdlYkluc3Bl
Y3Rvci5fdW5yZWdpc3Rlck1vdXNlT3V0V2hpbGVEcmFnZ2luZygpOwogCkBAIC0xMDYsMTEgKzEx
MiwxNiBAQCBXZWJJbnNwZWN0b3IuX2VsZW1lbnREcmFnRW5kID0gZnVuY3Rpb24oCiAgICAgaWYg
KFdlYkluc3BlY3Rvci5fZWxlbWVudERyYWdnaW5nR2xhc3NQYW5lKQogICAgICAgICBXZWJJbnNw
ZWN0b3IuX2VsZW1lbnREcmFnZ2luZ0dsYXNzUGFuZS5kaXNwb3NlKCk7CiAKLSAgICB2YXIgZWxl
bWVudERyYWdFbmQgPSBXZWJJbnNwZWN0b3IuX2VsZW1lbnRFbmREcmFnZ2luZ0V2ZW50TGlzdGVu
ZXI7Ci0KICAgICBkZWxldGUgV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ2dpbmdHbGFzc1BhbmU7
CiAgICAgZGVsZXRlIFdlYkluc3BlY3Rvci5fZWxlbWVudERyYWdnaW5nRXZlbnRMaXN0ZW5lcjsK
ICAgICBkZWxldGUgV2ViSW5zcGVjdG9yLl9lbGVtZW50RW5kRHJhZ2dpbmdFdmVudExpc3RlbmVy
OworfQorCitXZWJJbnNwZWN0b3IuX2VsZW1lbnREcmFnRW5kID0gZnVuY3Rpb24oZXZlbnQpCit7
CisgICAgdmFyIGVsZW1lbnREcmFnRW5kID0gV2ViSW5zcGVjdG9yLl9lbGVtZW50RW5kRHJhZ2dp
bmdFdmVudExpc3RlbmVyOworCisgICAgV2ViSW5zcGVjdG9yLl9jYW5jZWxEcmFnRXZlbnRzKGV2
ZW50KTsKIAogICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgaWYgKGVsZW1lbnREcmFn
RW5kKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186358</attachid>
            <date>2013-02-04 05:48:32 -0800</date>
            <delta_ts>2013-02-04 06:45:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108073-20130204174510.patch</filename>
            <type>text/plain</type>
            <size>10124</size>
            <attacher name="Dmitry Gozman">dgozman</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTc2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDEzLTAyLTA0ICBEbWl0cnkg
R296bWFuICA8ZGdvem1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
QWxsb3cgdXNlciB0byBjaGFuZ2UgZG9jayBzaWRlIGJ5IGRyYWdnaW5nIHRvb2xiYXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODA3MworCisgICAg
ICAgIERyYWdnaW5nIHRvb2xiYXIgdG8gdGhlIHJpZ2h0L2JvdHRvbSB3aWxsIGNoYW5nZSB0aGUg
ZG9jayBzaWRlIGFjY29yZGluZ2x5CisgICAgICAgIGluc3RlYWQgb2YgY2hhbmdpbmcgdGhlIGlu
c3BlY3RvciB3aW5kb3cgaGVpZ2h0IChpZiBkb2NrIHRvIHJpZ2h0IGlzIGF2YWlsYWJsZSkuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLCBiZWNhdXNlIG9mIHB1cmUgaW5zcGVjdG9yIFVJIGNoYW5nZS4KKworICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvRG9ja0NvbnRyb2xsZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRG9ja0NvbnRyb2xsZXIucHJvdG90eXBlLmRvY2tTaWRlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL1Rvb2xiYXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhcik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUuX2lzRG9ja2VkVG9Cb3R0
b20pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLl9pc1VuZG9ja2Vk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5fdG9vbGJhckRyYWdT
dGFydCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUuX3Rvb2xiYXJE
cmFnRW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5fdG9vbGJh
ckRyYWcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLl90b29sYmFy
RHJhZ01vdmVXaW5kb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBl
Ll90b29sYmFyRHJhZ0NoYW5nZURvY2tpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xi
YXIucHJvdG90eXBlLl90b29sYmFyRHJhZ0NoYW5nZUhlaWdodCk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl9lbGVtZW50
RHJhZ1N0YXJ0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5fZWxlbWVudERyYWdNb3ZlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5fY2FuY2VsRHJhZ0V2ZW50cyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuX2VsZW1lbnREcmFnRW5kKToKKwogMjAxMy0wMi0wNCAgRGF2aWQgS2lsemVyICA8ZGRr
aWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBkdXBsaWNhdGUgZW50cnkgZnJvbSBX
ZWJDb3JlIFhjb2RlIHByb2plY3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRG9ja0NvbnRyb2xsZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Eb2NrQ29udHJvbGxlci5qcwkocmV2aXNpb24gMTQxNzUyKQorKysg
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Eb2NrQ29udHJvbGxlci5qcwkod29y
a2luZyBjb3B5KQpAQCAtNjAsNiArNjAsMTQgQEAgV2ViSW5zcGVjdG9yLkRvY2tDb250cm9sbGVy
LnByb3RvdHlwZSA9CiAgICAgfSwKIAogICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30K
KyAgICAgKi8KKyAgICBkb2NrU2lkZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX2RvY2tTaWRlOworICAgIH0sCisKKyAgICAvKioKICAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gZG9ja1NpZGUKICAgICAgKi8KICAgICBzZXREb2NrU2lkZTogZnVuY3Rpb24oZG9ja1NpZGUp
CkBAIC03OSwxNCArODcsNiBAQCBXZWJJbnNwZWN0b3IuRG9ja0NvbnRyb2xsZXIucHJvdG90eXBl
ID0KICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHJldHVybiB7Ym9vbGVhbn0KLSAgICAgKi8K
LSAgICBpc0RvY2tlZFRvQm90dG9tOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4g
dGhpcy5fZG9ja1NpZGUgPT0gV2ViSW5zcGVjdG9yLkRvY2tDb250cm9sbGVyLlN0YXRlLkRvY2tl
ZFRvQm90dG9tOwotICAgIH0sCi0KLSAgICAvKioKICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHVu
YXZhaWxhYmxlCiAgICAgICovCiAgICAgc2V0RG9ja2luZ1VuYXZhaWxhYmxlOiBmdW5jdGlvbih1
bmF2YWlsYWJsZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVG9v
bGJhci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Rvb2xiYXIuanMJKHJldmlzaW9uIDE0MTc1MikKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvVG9vbGJhci5qcwkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOCBAQCBX
ZWJJbnNwZWN0b3IuVG9vbGJhciA9IGZ1bmN0aW9uKCkKIAogICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjbG9zZS1idXR0b24tbGVmdCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhp
cy5fb25DbG9zZSwgdHJ1ZSk7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNsb3NlLWJ1
dHRvbi1yaWdodCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fb25DbG9zZSwgdHJ1
ZSk7CisKKyAgICB0aGlzLl9pc1dpbmRvd01vdmVTdXBwb3J0ZWQgPSBXZWJJbnNwZWN0b3IuaXNN
YWMoKSAmJiAhUHJlZmVyZW5jZXMuc2hvd0RvY2tUb1JpZ2h0OwogfQogCiBXZWJJbnNwZWN0b3Iu
VG9vbGJhci5wcm90b3R5cGUgPSB7CkBAIC0xMDEsNyArMTAzLDE1IEBAIFdlYkluc3BlY3Rvci5U
b29sYmFyLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfaXNEb2NrZWRUb0JvdHRvbTogZnVu
Y3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuICEhV2ViSW5zcGVjdG9yLmRvY2tDb250cm9s
bGVyICYmIFdlYkluc3BlY3Rvci5kb2NrQ29udHJvbGxlci5pc0RvY2tlZFRvQm90dG9tKCk7Cisg
ICAgICAgIHJldHVybiAhIVdlYkluc3BlY3Rvci5kb2NrQ29udHJvbGxlciAmJiBXZWJJbnNwZWN0
b3IuZG9ja0NvbnRyb2xsZXIuZG9ja1NpZGUoKSA9PSBXZWJJbnNwZWN0b3IuRG9ja0NvbnRyb2xs
ZXIuU3RhdGUuRG9ja2VkVG9Cb3R0b207CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1
cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgX2lzVW5kb2NrZWQ6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHJldHVybiAhIVdlYkluc3BlY3Rvci5kb2NrQ29udHJvbGxlciAmJiBXZWJJbnNw
ZWN0b3IuZG9ja0NvbnRyb2xsZXIuZG9ja1NpZGUoKSA9PSBXZWJJbnNwZWN0b3IuRG9ja0NvbnRy
b2xsZXIuU3RhdGUuVW5kb2NrZWQ7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTA5LDcgKzExOSw3
IEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfdG9v
bGJhckRyYWdTdGFydDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICBpZiAoKCF0aGlz
Ll9pc0RvY2tlZFRvQm90dG9tKCkgJiYgV2ViSW5zcGVjdG9yLnBsYXRmb3JtRmxhdm9yKCkgIT09
IFdlYkluc3BlY3Rvci5QbGF0Zm9ybUZsYXZvci5NYWNMZW9wYXJkICYmIFdlYkluc3BlY3Rvci5w
bGF0Zm9ybUZsYXZvcigpICE9PSBXZWJJbnNwZWN0b3IuUGxhdGZvcm1GbGF2b3IuTWFjU25vd0xl
b3BhcmQpIHx8IFdlYkluc3BlY3Rvci5wb3J0KCkgPT0gInF0IikKKyAgICAgICAgaWYgKHRoaXMu
X2lzVW5kb2NrZWQoKSAmJiAhdGhpcy5faXNXaW5kb3dNb3ZlU3VwcG9ydGVkKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIHZhciB0YXJnZXQgPSBldmVudC50YXJnZXQ7CkBA
IC0xMTksOSArMTI5LDExIEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgaWYgKHRhcmdldCAhPT0gdGhpcy5lbGVtZW50ICYmICF0YXJnZXQuaGFzU3R5bGVDbGFz
cygidG9vbGJhci1pdGVtIikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAg
dGhpcy5lbGVtZW50Lmxhc3RTY3JlZW5YID0gZXZlbnQuc2NyZWVuWDsKLSAgICAgICAgdGhpcy5l
bGVtZW50Lmxhc3RTY3JlZW5ZID0gZXZlbnQuc2NyZWVuWTsKKyAgICAgICAgdGhpcy5fbGFzdFNj
cmVlblggPSBldmVudC5zY3JlZW5YOworICAgICAgICB0aGlzLl9sYXN0U2NyZWVuWSA9IGV2ZW50
LnNjcmVlblk7CiAgICAgICAgIHRoaXMuX2xhc3RIZWlnaHREdXJpbmdEcmFnID0gd2luZG93Lmlu
bmVySGVpZ2h0OworICAgICAgICB0aGlzLl9zdGFydERpc3RhbmNlVG9SaWdodCA9IHdpbmRvdy5p
bm5lcldpZHRoIC0gZXZlbnQuY2xpZW50WDsKKyAgICAgICAgdGhpcy5fc3RhcnREaW5zdGFuY2VU
b0JvdHRvbSA9IHdpbmRvdy5pbm5lckhlaWdodCAtIGV2ZW50LmNsaWVudFk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0sCiAKQEAgLTEzMCwzMSArMTQyLDU5IEBAIFdlYkluc3BlY3Rvci5U
b29sYmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gV2UgbWF5IG5vdCBnZXQgdGhlIGRyYWcg
ZXZlbnQgYXQgdGhlIGVuZC4KICAgICAgICAgLy8gQXBwbHkgbGFzdCBjaGFuZ2VzIG1hbnVhbGx5
LgogICAgICAgICB0aGlzLl90b29sYmFyRHJhZyhldmVudCk7Ci0gICAgICAgIGRlbGV0ZSB0aGlz
LmVsZW1lbnQubGFzdFNjcmVlblg7Ci0gICAgICAgIGRlbGV0ZSB0aGlzLmVsZW1lbnQubGFzdFNj
cmVlblk7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9sYXN0U2NyZWVuWDsKKyAgICAgICAgZGVsZXRl
IHRoaXMuX2xhc3RTY3JlZW5ZOwogICAgICAgICBkZWxldGUgdGhpcy5fbGFzdEhlaWdodER1cmlu
Z0RyYWc7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9zdGFydERpc3RhbmNlVG9SaWdodDsKKyAgICAg
ICAgZGVsZXRlIHRoaXMuX3N0YXJ0RGluc3RhbmNlVG9Cb3R0b207CiAgICAgfSwKIAogICAgIF90
b29sYmFyRHJhZzogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICBpZiAodGhpcy5faXNE
b2NrZWRUb0JvdHRvbSgpKSB7Ci0gICAgICAgICAgICB2YXIgaGVpZ2h0ID0gdGhpcy5fbGFzdEhl
aWdodER1cmluZ0RyYWcgLSAoZXZlbnQuc2NyZWVuWSAtIHRoaXMuZWxlbWVudC5sYXN0U2NyZWVu
WSk7Ci0gICAgICAgICAgICB0aGlzLl9sYXN0SGVpZ2h0RHVyaW5nRHJhZyA9IGhlaWdodDsKKyAg
ICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKIAotICAgICAgICAgICAgSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdodCk7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICB2YXIgeCA9IGV2ZW50LnNjcmVlblggLSB0aGlzLmVsZW1lbnQubGFz
dFNjcmVlblg7Ci0gICAgICAgICAgICB2YXIgeSA9IGV2ZW50LnNjcmVlblkgLSB0aGlzLmVsZW1l
bnQubGFzdFNjcmVlblk7CisgICAgICAgIGlmICh0aGlzLl9pc1VuZG9ja2VkKCkpCisgICAgICAg
ICAgICByZXR1cm4gdGhpcy5fdG9vbGJhckRyYWdNb3ZlV2luZG93KGV2ZW50KTsKIAotICAgICAg
ICAgICAgLy8gV2UgY2Fubm90IGNhbGwgd2luZG93Lm1vdmVCeSBoZXJlIGJlY2F1c2UgaXQgcmVz
dHJpY3RzIHRoZSBtb3ZlbWVudAotICAgICAgICAgICAgLy8gb2YgdGhlIHdpbmRvdyBhdCB0aGUg
ZWRnZXMuCi0gICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QubW92ZVdpbmRvd0J5KHgs
IHkpOwotICAgICAgICB9CisgICAgICAgIGlmIChQcmVmZXJlbmNlcy5zaG93RG9ja1RvUmlnaHQp
CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fdG9vbGJhckRyYWdDaGFuZ2VEb2NraW5nKGV2ZW50
KTsKIAotICAgICAgICB0aGlzLmVsZW1lbnQubGFzdFNjcmVlblggPSBldmVudC5zY3JlZW5YOwot
ICAgICAgICB0aGlzLmVsZW1lbnQubGFzdFNjcmVlblkgPSBldmVudC5zY3JlZW5ZOworICAgICAg
ICByZXR1cm4gdGhpcy5fdG9vbGJhckRyYWdDaGFuZ2VIZWlnaHQoZXZlbnQpOworICAgIH0sCiAK
LSAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICBfdG9vbGJhckRyYWdNb3ZlV2lu
ZG93OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciB4ID0gZXZlbnQuc2NyZWVu
WCAtIHRoaXMuX2xhc3RTY3JlZW5YOworICAgICAgICB2YXIgeSA9IGV2ZW50LnNjcmVlblkgLSB0
aGlzLl9sYXN0U2NyZWVuWTsKKyAgICAgICAgdGhpcy5fbGFzdFNjcmVlblggPSBldmVudC5zY3Jl
ZW5YOworICAgICAgICB0aGlzLl9sYXN0U2NyZWVuWSA9IGV2ZW50LnNjcmVlblk7CisgICAgICAg
IEluc3BlY3RvckZyb250ZW5kSG9zdC5tb3ZlV2luZG93QnkoeCwgeSk7CisgICAgfSwKKworICAg
IF90b29sYmFyRHJhZ0NoYW5nZURvY2tpbmc6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAg
ICAgaWYgKHRoaXMuX2lzRG9ja2VkVG9Cb3R0b20oKSkgeworICAgICAgICAgICAgdmFyIGRpc3Rh
bmNlVG9SaWdodCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gZXZlbnQuY2xpZW50WDsKKyAgICAgICAg
ICAgIGlmIChkaXN0YW5jZVRvUmlnaHQgPCB0aGlzLl9zdGFydERpc3RhbmNlVG9SaWdodCAqIDIg
LyAzKSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnJlcXVlc3RTZXRE
b2NrU2lkZShXZWJJbnNwZWN0b3IuRG9ja0NvbnRyb2xsZXIuU3RhdGUuRG9ja2VkVG9SaWdodCk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICB2YXIgZGlzdGFuY2VUb0JvdHRvbSA9IHdpbmRvdy5pbm5lckhl
aWdodCAtIGV2ZW50LmNsaWVudFk7CisgICAgICAgICAgICBpZiAoZGlzdGFuY2VUb0JvdHRvbSA8
IHRoaXMuX3N0YXJ0RGluc3RhbmNlVG9Cb3R0b20gKiAyIC8gMykgeworICAgICAgICAgICAgICAg
IEluc3BlY3RvckZyb250ZW5kSG9zdC5yZXF1ZXN0U2V0RG9ja1NpZGUoV2ViSW5zcGVjdG9yLkRv
Y2tDb250cm9sbGVyLlN0YXRlLkRvY2tlZFRvQm90dG9tKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0sCisKKyAgICBfdG9vbGJh
ckRyYWdDaGFuZ2VIZWlnaHQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgLy8gQ2hh
bmdlIHRoZSBpbnNwZWN0b3Igd2luZG93IGhlaWdodCBmb3IgZG9jay10by1ib3R0b20gb25seSBt
b2RlLgorICAgICAgICB2YXIgaGVpZ2h0ID0gdGhpcy5fbGFzdEhlaWdodER1cmluZ0RyYWcgLSAo
ZXZlbnQuc2NyZWVuWSAtIHRoaXMuX2xhc3RTY3JlZW5ZKTsKKyAgICAgICAgdGhpcy5fbGFzdEhl
aWdodER1cmluZ0RyYWcgPSBoZWlnaHQ7CisgICAgICAgIHRoaXMuX2xhc3RTY3JlZW5ZID0gZXZl
bnQuc2NyZWVuWTsKKyAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNldEF0dGFjaGVkV2lu
ZG93SGVpZ2h0KGhlaWdodCk7CiAgICAgfSwKIAogICAgIF9vbkNsb3NlOiBmdW5jdGlvbigpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJVXRpbHMuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzCShy
ZXZpc2lvbiAxNDE3NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJ
VXRpbHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgV2ViSW5zcGVjdG9yLl9l
bGVtZW50RHJhZ1N0YXJ0ID0gZnVuY3RpbwogICAgIFdlYkluc3BlY3Rvci5fZWxlbWVudEVuZERy
YWdnaW5nRXZlbnRMaXN0ZW5lciA9IGVsZW1lbnREcmFnRW5kOwogICAgIFdlYkluc3BlY3Rvci5f
bW91c2VPdXRXaGlsZURyYWdnaW5nVGFyZ2V0RG9jdW1lbnQgPSB0YXJnZXREb2N1bWVudDsKIAot
ICAgIHRhcmdldERvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIFdlYkluc3Bl
Y3Rvci5fZWxlbWVudERyYWdnaW5nRXZlbnRMaXN0ZW5lciwgdHJ1ZSk7CisgICAgdGFyZ2V0RG9j
dW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgV2ViSW5zcGVjdG9yLl9lbGVtZW50
RHJhZ01vdmUsIHRydWUpOwogICAgIHRhcmdldERvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1v
dXNldXAiLCBXZWJJbnNwZWN0b3IuX2VsZW1lbnREcmFnRW5kLCB0cnVlKTsKICAgICB0YXJnZXRE
b2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW91dCIsIFdlYkluc3BlY3Rvci5fbW91c2VP
dXRXaGlsZURyYWdnaW5nLCB0cnVlKTsKIApAQCAtOTQsMTAgKzk0LDE2IEBAIFdlYkluc3BlY3Rv
ci5fdW5yZWdpc3Rlck1vdXNlT3V0V2hpbGVEcmEKICAgICBkZWxldGUgV2ViSW5zcGVjdG9yLl9t
b3VzZU91dFdoaWxlRHJhZ2dpbmdUYXJnZXREb2N1bWVudDsKIH0KIAotV2ViSW5zcGVjdG9yLl9l
bGVtZW50RHJhZ0VuZCA9IGZ1bmN0aW9uKGV2ZW50KQorV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJh
Z01vdmUgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBpZiAoV2ViSW5zcGVjdG9yLl9lbGVtZW50
RHJhZ2dpbmdFdmVudExpc3RlbmVyKGV2ZW50KSkKKyAgICAgICAgV2ViSW5zcGVjdG9yLl9jYW5j
ZWxEcmFnRXZlbnRzKGV2ZW50KTsKK30KKworV2ViSW5zcGVjdG9yLl9jYW5jZWxEcmFnRXZlbnRz
ID0gZnVuY3Rpb24oZXZlbnQpCiB7CiAgICAgdmFyIHRhcmdldERvY3VtZW50ID0gZXZlbnQudGFy
Z2V0Lm93bmVyRG9jdW1lbnQ7Ci0gICAgdGFyZ2V0RG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5l
cigibW91c2Vtb3ZlIiwgV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ2dpbmdFdmVudExpc3RlbmVy
LCB0cnVlKTsKKyAgICB0YXJnZXREb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1v
dmUiLCBXZWJJbnNwZWN0b3IuX2VsZW1lbnREcmFnTW92ZSwgdHJ1ZSk7CiAgICAgdGFyZ2V0RG9j
dW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIFdlYkluc3BlY3Rvci5fZWxlbWVu
dERyYWdFbmQsIHRydWUpOwogICAgIFdlYkluc3BlY3Rvci5fdW5yZWdpc3Rlck1vdXNlT3V0V2hp
bGVEcmFnZ2luZygpOwogCkBAIC0xMDYsMTEgKzExMiwxNiBAQCBXZWJJbnNwZWN0b3IuX2VsZW1l
bnREcmFnRW5kID0gZnVuY3Rpb24oCiAgICAgaWYgKFdlYkluc3BlY3Rvci5fZWxlbWVudERyYWdn
aW5nR2xhc3NQYW5lKQogICAgICAgICBXZWJJbnNwZWN0b3IuX2VsZW1lbnREcmFnZ2luZ0dsYXNz
UGFuZS5kaXNwb3NlKCk7CiAKLSAgICB2YXIgZWxlbWVudERyYWdFbmQgPSBXZWJJbnNwZWN0b3Iu
X2VsZW1lbnRFbmREcmFnZ2luZ0V2ZW50TGlzdGVuZXI7Ci0KICAgICBkZWxldGUgV2ViSW5zcGVj
dG9yLl9lbGVtZW50RHJhZ2dpbmdHbGFzc1BhbmU7CiAgICAgZGVsZXRlIFdlYkluc3BlY3Rvci5f
ZWxlbWVudERyYWdnaW5nRXZlbnRMaXN0ZW5lcjsKICAgICBkZWxldGUgV2ViSW5zcGVjdG9yLl9l
bGVtZW50RW5kRHJhZ2dpbmdFdmVudExpc3RlbmVyOworfQorCitXZWJJbnNwZWN0b3IuX2VsZW1l
bnREcmFnRW5kID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgdmFyIGVsZW1lbnREcmFnRW5kID0g
V2ViSW5zcGVjdG9yLl9lbGVtZW50RW5kRHJhZ2dpbmdFdmVudExpc3RlbmVyOworCisgICAgV2Vi
SW5zcGVjdG9yLl9jYW5jZWxEcmFnRXZlbnRzKGV2ZW50KTsKIAogICAgIGV2ZW50LnByZXZlbnRE
ZWZhdWx0KCk7CiAgICAgaWYgKGVsZW1lbnREcmFnRW5kKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>