<?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>150634</bug_id>
          
          <creation_ts>2015-10-28 14:00:30 -0700</creation_ts>
          <short_desc>Inner height behavior when the keyboard is shown should match on WKWebView and MobileSafari</short_desc>
          <delta_ts>2015-10-30 18:09:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>benjamin</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1137266</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-28 14:00:30 -0700</bug_when>
    <thetext>Inner height behavior when the keyboard is shown should match on WKWebView and MobileSafari. More specifically, WKWebView should match MobileSafari&apos;s behavior by not sending resize events and changing window.innerHeight when bring the keyboard up or down.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137270</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-28 14:03:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/23202254&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137279</commentid>
    <comment_count>2</comment_count>
      <attachid>264244</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-28 14:17:04 -0700</bug_when>
    <thetext>Created attachment 264244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137290</commentid>
    <comment_count>3</comment_count>
      <attachid>264246</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-28 14:30:36 -0700</bug_when>
    <thetext>Created attachment 264246
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137532</commentid>
    <comment_count>4</comment_count>
      <attachid>264246</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-29 08:54:46 -0700</bug_when>
    <thetext>Comment on attachment 264246
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1693
&gt; +        if (_currentlyAdjustingScrollViewInsetsForKeyboard)

On second thought, it doesn&apos;t look like calling _updateVisibleContentRects from within _adjustForAutomaticKeyboardInfo is intended in the first place, especially since we call _updateVisibleContentRects after adjusting for the keyboard anyways. I think it would make more sense to simply return early from _updateVisibleContentRects when _currentlyAdjustingScrollViewInsetsForKeyboard is YES. This also means we don&apos;t have to store the old bottom inset before adjustment, which is nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137534</commentid>
    <comment_count>5</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-29 08:58:30 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 264246 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264246&amp;action=review
&gt; 
&gt; ...especially since we call _updateVisibleContentRects after adjusting for the
&gt; keyboard anyways...

My bad, we currently call _updateVisibleContentRects before adjusting for the keyboard. I propose calling _updateVisibleContentRects *after* adjusting for the keyboard, and adding the early return to _updateVisibleContentRects so we don&apos;t call it twice while calling _adjustForAutomaticKeyboardInfo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137612</commentid>
    <comment_count>6</comment_count>
      <attachid>264333</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-29 12:38:27 -0700</bug_when>
    <thetext>Created attachment 264333
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137618</commentid>
    <comment_count>7</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-29 12:47:53 -0700</bug_when>
    <thetext>*** Bug 150401 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137654</commentid>
    <comment_count>8</comment_count>
      <attachid>264333</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-29 14:33:51 -0700</bug_when>
    <thetext>Comment on attachment 264333
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1680
&gt; +        || [_scrollView isZoomBouncing]
&gt; +        || _currentlyAdjustingScrollViewInsetsForKeyboard)

These seems similar to the &apos;isStableState&apos; things below. Do you have to early return here, or can you just treat them as non-stable state?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137663</commentid>
    <comment_count>9</comment_count>
      <attachid>264333</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-29 14:49:59 -0700</bug_when>
    <thetext>Comment on attachment 264333
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1680
&gt;&gt; +        || _currentlyAdjustingScrollViewInsetsForKeyboard)
&gt; 
&gt; These seems similar to the &apos;isStableState&apos; things below. Do you have to early return here, or can you just treat them as non-stable state?

The early return involving _currentlyAdjustingScrollViewInsetsForKeyboard is quite specific to when we&apos;re adjusting the insets for the keyboard changing frame. This if statement was originally three separate early returns, and instead of adding a fourth early return I changed it to be a single if. The early return checks were all added in separate commits, and it doesn&apos;t look like they&apos;re related to the notion of a stable state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137691</commentid>
    <comment_count>10</comment_count>
      <attachid>264333</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-10-29 16:03:25 -0700</bug_when>
    <thetext>Comment on attachment 264333
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:215
&gt; +    CGFloat _totalScrollViewBottomInsetAdjustment;

The name is a bit generic.

I think I would prefer a name mentioning the keyboard + a comment explaining what the attribute/ivar is for.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1686
&gt; +    UIEdgeInsets computedContentInset = [self _computedContentInset];

IMHO, you need to make an argument about why &quot;_totalScrollViewBottomInsetAdjustment&quot; is adjusted here specifically and not in -_computedContentInset.
Such argument can go in the changelog.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1687
&gt; +    // &lt;rdar://problem/23202254&gt; Adjust the bottom inset to not take the keyboard adjustments into account if the obscured insets were not explicitly set through SPI.

Comments like this are less valuable than what they look like. You have to read the radar to know the context.

A complete explanation is better IMHO. You can have such explanation with _totalScrollViewBottomInsetAdjustment and/or in the changelog.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1766
&gt; +        _currentlyAdjustingScrollViewInsetsForKeyboard = YES;

You can use WTF&apos;s TemporaryChange to protect against reentrancy.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1770
&gt; +        if (bottomInsetBeforeAdjustment != [_scrollView contentInset].bottom)

Let&apos;s have a temporary for [_scrollView contentInset].bottom to avoid making the call twice for the next line.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1771
&gt; +            _totalScrollViewBottomInsetAdjustment += [_scrollView contentInset].bottom - bottomInsetBeforeAdjustment;

I am a bit confused by this, wouldn&apos;t &quot;_totalScrollViewBottomInsetAdjustment&quot; grow every time the keyboard show up?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137704</commentid>
    <comment_count>11</comment_count>
      <attachid>264333</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-29 16:19:09 -0700</bug_when>
    <thetext>Comment on attachment 264333
Patch

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

Thanks for taking a look! I&apos;ll address the issues with an updated patch soon.

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:215
&gt;&gt; +    CGFloat _totalScrollViewBottomInsetAdjustment;
&gt; 
&gt; The name is a bit generic.
&gt; 
&gt; I think I would prefer a name mentioning the keyboard + a comment explaining what the attribute/ivar is for.

Sounds good. I&apos;ll rename and add more description (it will be in the changelog)

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1686
&gt;&gt; +    UIEdgeInsets computedContentInset = [self _computedContentInset];
&gt; 
&gt; IMHO, you need to make an argument about why &quot;_totalScrollViewBottomInsetAdjustment&quot; is adjusted here specifically and not in -_computedContentInset.
&gt; Such argument can go in the changelog.

Got it. I&apos;ll add more detail the changelog explaining why/how this fixes the problem.

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1687
&gt;&gt; +    // &lt;rdar://problem/23202254&gt; Adjust the bottom inset to not take the keyboard adjustments into account if the obscured insets were not explicitly set through SPI.
&gt; 
&gt; Comments like this are less valuable than what they look like. You have to read the radar to know the context.
&gt; 
&gt; A complete explanation is better IMHO. You can have such explanation with _totalScrollViewBottomInsetAdjustment and/or in the changelog.

Sounds good. I&apos;ll include a thorough explanation of how this works in the changelog (and maybe a &quot;see changelog for more details&quot; here).

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1766
&gt;&gt; +        _currentlyAdjustingScrollViewInsetsForKeyboard = YES;
&gt; 
&gt; You can use WTF&apos;s TemporaryChange to protect against reentrancy.

Got it -- changed.

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1770
&gt;&gt; +        if (bottomInsetBeforeAdjustment != [_scrollView contentInset].bottom)
&gt; 
&gt; Let&apos;s have a temporary for [_scrollView contentInset].bottom to avoid making the call twice for the next line.

Sounds good.

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1771
&gt;&gt; +            _totalScrollViewBottomInsetAdjustment += [_scrollView contentInset].bottom - bottomInsetBeforeAdjustment;
&gt; 
&gt; I am a bit confused by this, wouldn&apos;t &quot;_totalScrollViewBottomInsetAdjustment&quot; grow every time the keyboard show up?

It also shrinks when the keyboard hides.  However, I should double check that there&apos;s no way for the keyboard frame to be shown/dismissed without _keyboardDidChangeFrame or _keyboardWillChangeFrame being called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137864</commentid>
    <comment_count>12</comment_count>
      <attachid>264395</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-30 07:24:29 -0700</bug_when>
    <thetext>Created attachment 264395
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138015</commentid>
    <comment_count>13</comment_count>
      <attachid>264395</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-10-30 16:11:52 -0700</bug_when>
    <thetext>Comment on attachment 264395
Patch

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

&gt; Source/WebKit2/ChangeLog:19
&gt; +        We perform this readjustment in _updateVisibleContentRects rather than in _computedContentInset since some users
&gt; +        of _computedContentInset may still expect the bottom inset to account for the keyboard height. However, when
&gt; +        updating visible content rects, we should not account for the keyboard height since we don&apos;t want the inner height
&gt; +        to change when showing or hiding the keyboard.

Pretty unfortunate but that looks right. The method -_navigationGestureDidBegin expects the offset without keyboard for example :(

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1690
&gt; +    UIEdgeInsets computedContentInset = [self _computedContentInset];

I think a better name would be useful.
The variable shares the name with -_computedContentInset but not the value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138077</commentid>
    <comment_count>14</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-30 18:09:58 -0700</bug_when>
    <thetext>Committed r191834: &lt;http://trac.webkit.org/changeset/191834&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264244</attachid>
            <date>2015-10-28 14:17:04 -0700</date>
            <delta_ts>2015-10-28 14:30:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150634-20151028141613.patch</filename>
            <type>text/plain</type>
            <size>8651</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYWY0NGYyZDkwZGJjMzQw
YmFhZTY4N2Y0OGU1NDczZDdkZGRlZDJkZS4uZDQ0N2E5ZTFlYjVlZTJhMTQwNmIyMjA5NTVkZDVi
OTFmMTA5YzgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE1LTEwLTI4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIElubmVyIGhlaWdo
dCBiZWhhdmlvciB3aGVuIHRoZSBrZXlib2FyZCBpcyBzaG93biBzaG91bGQgbWF0Y2ggb24gV0tX
ZWJWaWV3IGFuZCBNb2JpbGVTYWZhcmkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MDYzNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjMyMDIyNTQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBX
S1dlYlZpZXcgbWF0Y2ggYmVoYXZpb3IgaW4gU2FmYXJpIGJ5IG5vdCBmaXJpbmcgcmVzaXplIGV2
ZW50cyBhbmQgY2hhbmdpbmcgdGhlIGlubmVyIGhlaWdodCB3aGVuIHNob3dpbmcKKyAgICAgICAg
b3IgaGlkaW5nIHRoZSBrZXlib2FyZC4gUHJldmlvdXNseSwgdGhlIFdLV2ViVmlldyB3b3VsZCBk
byBib3RoIG9mIHRoZSBhYm92ZSBiZWNhdXNlIHdlIHVzZSB0aGUgc2Nyb2xsIHZpZXcncworICAg
ICAgICBjb250ZW50SW5zZXQgcHJvcGVydHkgd2hlbiBubyB1bm9ic2N1cmVkIGluc2V0cyBhcmUg
ZXhwbGljaXRseSBzZXQgZm9yIHRoZSBXS1dlYlZpZXcuIFRvIGZpeCB0aGlzLCB3aGVuIHVwZGF0
aW5nCisgICAgICAgIHRoZSB2aXNpYmxlIGNvbnRlbnQgcmVjdCBvZiBhIFdLV2ViVmlldyBmb3Ig
Y29tcHV0aW5nIHRoZSBpbm5lciBoZWlnaHQsIHdlIHJlYWRqdXN0IHRoZSBjb21wdXRlZCBib3R0
b20gaW5zZXQKKyAgICAgICAgdG8gbm90IHRha2UgdGhlIGtleWJvYXJkIGhlaWdodCBpbnRvIGFj
Y291bnQuCisKKyAgICAgICAgVGVzdDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2tleWJv
YXJkLXNob3VsZC1ub3QtdHJpZ2dlci1yZXNpemUuaHRtbAorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfdXBkYXRlVmlz
aWJsZUNvbnRlbnRSZWN0c10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2tleWJvYXJkQ2hhbmdl
ZFdpdGhJbmZvOmFkanVzdFNjcm9sbFZpZXc6XSk6CisKIDIwMTUtMTAtMjcgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IHZpZXdwb3J0
LXdpZHRoLWJhc2VkIGZhc3QtY2xpY2sgaGV1cmlzdGljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDg4NTJjYzQyY2RlNmNkMWQ1NTY0
YTNkMWRjZGFkN2JmN2FhNThmNjcuLjFiNjY0MjIwZmEyODlhODYxMTI3ZWVmNDk2NDk0NDU3ZmYw
YjJiMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCkBAIC0yMTIsNiArMjEyLDEwIEBAIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgewog
CiAgICAgV2ViQ29yZTo6Q29sb3IgX3Njcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3I7CiAKKyAgICBD
R0Zsb2F0IF90b3RhbFNjcm9sbFZpZXdCb3R0b21JbnNldEFkanVzdG1lbnQ7CisgICAgQ0dGbG9h
dCBfc2Nyb2xsVmlld0JvdHRvbUluc2V0QmVmb3JlQWRqdXN0bWVudDsKKyAgICBCT09MIF9jdXJy
ZW50bHlBZGp1c3RpbmdTY3JvbGxWaWV3SW5zZXRzRm9yS2V5Ym9hcmQ7CisKICAgICBCT09MIF9k
ZWxheVVwZGF0ZVZpc2libGVDb250ZW50UmVjdHM7CiAgICAgQk9PTCBfaGFkRGVsYXllZFVwZGF0
ZVZpc2libGVDb250ZW50UmVjdHM7CiAKQEAgLTE2ODMsNyArMTY4NywxNiBAQCAtICh2b2lkKV91
cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzCiAgICAgQ0dSZWN0IGZ1bGxWaWV3UmVjdCA9IHNlbGYu
Ym91bmRzOwogICAgIENHUmVjdCB2aXNpYmxlUmVjdEluQ29udGVudENvb3JkaW5hdGVzID0gX2Zy
b3plblZpc2libGVDb250ZW50UmVjdCA/IF9mcm96ZW5WaXNpYmxlQ29udGVudFJlY3QudmFsdWUo
KSA6IFtzZWxmIGNvbnZlcnRSZWN0OmZ1bGxWaWV3UmVjdCB0b1ZpZXc6X2NvbnRlbnRWaWV3Lmdl
dCgpXTsKIAotICAgIENHUmVjdCB1bm9ic2N1cmVkUmVjdCA9IFVJRWRnZUluc2V0c0luc2V0UmVj
dChmdWxsVmlld1JlY3QsIFtzZWxmIF9jb21wdXRlZENvbnRlbnRJbnNldF0pOworICAgIFVJRWRn
ZUluc2V0cyBjb21wdXRlZENvbnRlbnRJbnNldCA9IFtzZWxmIF9jb21wdXRlZENvbnRlbnRJbnNl
dF07CisgICAgaWYgKCFfaGF2ZVNldE9ic2N1cmVkSW5zZXRzKSB7CisgICAgICAgIC8vIDxyZGFy
Oi8vcHJvYmxlbS8yMzIwMjI1ND4gQWRqdXN0IHRoZSBib3R0b20gaW5zZXQgdG8gbm90IHRha2Ug
dGhlIGtleWJvYXJkIGFkanVzdG1lbnRzIGludG8gYWNjb3VudCBpZiB0aGUgb2JzY3VyZWQgaW5z
ZXRzIHdlcmUgbm90IGV4cGxpY2l0bHkgc2V0IHRocm91Z2ggU1BJLgorICAgICAgICBpZiAoX2N1
cnJlbnRseUFkanVzdGluZ1Njcm9sbFZpZXdJbnNldHNGb3JLZXlib2FyZCkKKyAgICAgICAgICAg
IGNvbXB1dGVkQ29udGVudEluc2V0LmJvdHRvbSA9IF9zY3JvbGxWaWV3Qm90dG9tSW5zZXRCZWZv
cmVBZGp1c3RtZW50IC0gX3RvdGFsU2Nyb2xsVmlld0JvdHRvbUluc2V0QWRqdXN0bWVudDsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgY29tcHV0ZWRDb250ZW50SW5zZXQuYm90dG9tIC09IF90
b3RhbFNjcm9sbFZpZXdCb3R0b21JbnNldEFkanVzdG1lbnQ7CisgICAgfQorCisgICAgQ0dSZWN0
IHVub2JzY3VyZWRSZWN0ID0gVUlFZGdlSW5zZXRzSW5zZXRSZWN0KGZ1bGxWaWV3UmVjdCwgY29t
cHV0ZWRDb250ZW50SW5zZXQpOwogICAgIENHUmVjdCB1bm9ic2N1cmVkUmVjdEluQ29udGVudENv
b3JkaW5hdGVzID0gX2Zyb3plblVub2JzY3VyZWRDb250ZW50UmVjdCA/IF9mcm96ZW5Vbm9ic2N1
cmVkQ29udGVudFJlY3QudmFsdWUoKSA6IFtzZWxmIGNvbnZlcnRSZWN0OnVub2JzY3VyZWRSZWN0
IHRvVmlldzpfY29udGVudFZpZXcuZ2V0KCldOwogCiAgICAgQ0dGbG9hdCBzY2FsZUZhY3RvciA9
IGNvbnRlbnRab29tU2NhbGUoc2VsZik7CkBAIC0xNjk5LDcgKzE3MTIsNyBAQCAtICh2b2lkKV91
cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzCiAgICAgICAgIFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JQcm94eSogY29vcmRpbmF0b3IgPSBfcGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eSgpOwogICAgICAgICBpZiAoY29vcmRpbmF0b3IgJiYgY29vcmRpbmF0b3ItPmhhc0Fj
dGl2ZVNuYXBQb2ludCgpKSB7CiAgICAgICAgICAgICBDR1JlY3QgZnVsbFZpZXdSZWN0ID0gc2Vs
Zi5ib3VuZHM7Ci0gICAgICAgICAgICBDR1JlY3QgdW5vYnNjdXJlZFJlY3QgPSBVSUVkZ2VJbnNl
dHNJbnNldFJlY3QoZnVsbFZpZXdSZWN0LCBbc2VsZiBfY29tcHV0ZWRDb250ZW50SW5zZXRdKTsK
KyAgICAgICAgICAgIENHUmVjdCB1bm9ic2N1cmVkUmVjdCA9IFVJRWRnZUluc2V0c0luc2V0UmVj
dChmdWxsVmlld1JlY3QsIGNvbXB1dGVkQ29udGVudEluc2V0KTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgQ0dQb2ludCBjdXJyZW50UG9pbnQgPSBbX3Njcm9sbFZpZXcgY29udGVudE9mZnNl
dF07CiAgICAgICAgICAgICBDR1BvaW50IGFjdGl2ZVBvaW50ID0gY29vcmRpbmF0b3ItPm5lYXJl
c3RBY3RpdmVDb250ZW50SW5zZXRBZGp1c3RlZFNuYXBQb2ludCh1bm9ic2N1cmVkUmVjdC5vcmln
aW4ueSwgY3VycmVudFBvaW50KTsKQEAgLTE3NTUsMTAgKzE3NjgsMTggQEAgLSAodm9pZClfa2V5
Ym9hcmRDaGFuZ2VkV2l0aEluZm86KE5TRGljdGlvbmFyeSAqKWtleWJvYXJkSW5mbyBhZGp1c3RT
Y3JvbGxWaWV3OigKICAgICBlbHNlCiAgICAgICAgIF9pbnB1dFZpZXdCb3VuZHMgPSBbc2VsZi53
aW5kb3cgY29udmVydFJlY3Q6Q0dSZWN0SW50ZXJzZWN0aW9uKFtlbmRGcmFtZVZhbHVlIENHUmVj
dFZhbHVlXSwgc2VsZi53aW5kb3cuc2NyZWVuLmJvdW5kcykgZnJvbVdpbmRvdzpuaWxdOwogCi0g
ICAgW3NlbGYgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHNdOworICAgIGlmIChhZGp1c3RTY3Jv
bGxWaWV3KSB7CisgICAgICAgIF9zY3JvbGxWaWV3Qm90dG9tSW5zZXRCZWZvcmVBZGp1c3RtZW50
ID0gW19zY3JvbGxWaWV3IGNvbnRlbnRJbnNldF0uYm90dG9tOwogCi0gICAgaWYgKGFkanVzdFNj
cm9sbFZpZXcpCisgICAgICAgIF9jdXJyZW50bHlBZGp1c3RpbmdTY3JvbGxWaWV3SW5zZXRzRm9y
S2V5Ym9hcmQgPSBZRVM7CiAgICAgICAgIFtfc2Nyb2xsVmlldyBfYWRqdXN0Rm9yQXV0b21hdGlj
S2V5Ym9hcmRJbmZvOmtleWJvYXJkSW5mbyBhbmltYXRlZDpZRVMgbGFzdEFkanVzdG1lbnQ6Jl9s
YXN0QWRqdXN0bWVudEZvclNjcm9sbGVyXTsKKyAgICAgICAgX2N1cnJlbnRseUFkanVzdGluZ1Nj
cm9sbFZpZXdJbnNldHNGb3JLZXlib2FyZCA9IE5POworCisgICAgICAgIGlmIChfc2Nyb2xsVmll
d0JvdHRvbUluc2V0QmVmb3JlQWRqdXN0bWVudCAhPSBbX3Njcm9sbFZpZXcgY29udGVudEluc2V0
XS5ib3R0b20pCisgICAgICAgICAgICBfdG90YWxTY3JvbGxWaWV3Qm90dG9tSW5zZXRBZGp1c3Rt
ZW50ICs9IFtfc2Nyb2xsVmlldyBjb250ZW50SW5zZXRdLmJvdHRvbSAtIF9zY3JvbGxWaWV3Qm90
dG9tSW5zZXRCZWZvcmVBZGp1c3RtZW50OworICAgIH0KKworICAgIFtzZWxmIF91cGRhdGVWaXNp
YmxlQ29udGVudFJlY3RzXTsKIH0KIAogLSAoQk9PTClfc2hvdWxkVXBkYXRlS2V5Ym9hcmRXaXRo
SW5mbzooTlNEaWN0aW9uYXJ5ICopa2V5Ym9hcmRJbmZvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzhkM2NlNzEzNDc2YjVk
YmJlOGJmNmZiZDI1YjM5NjE1OTAwYjYxYS4uMDg3MWI3ODU2OTI5ZTgyNmUxNzQ2NmQ5Y2U0ZmJk
OTgzN2E5NzcwMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE1LTEwLTI4ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIElubmVyIGhlaWdodCBiZWhh
dmlvciB3aGVuIHRoZSBrZXlib2FyZCBpcyBzaG93biBzaG91bGQgbWF0Y2ggb24gV0tXZWJWaWV3
IGFuZCBNb2JpbGVTYWZhcmkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MDYzNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjMyMDIyNTQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgdGhhdCBX
S1dlYlZpZXdzIGRvIG5vdCBmaXJlIHJlc2l6ZSBldmVudHMgd2hlbiBzaG93aW5nIG9yIGhpZGlu
ZyB0aGUga2V5Ym9hcmQuIFRoaXMgYmVoYXZpb3IKKyAgICAgICAgaXMgY29uc2lzdGVudCB3aXRo
IG1vYmlsZSBTYWZhcmkuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9pb3Mva2V5Ym9hcmQtc2hv
dWxkLW5vdC10cmlnZ2VyLXJlc2l6ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZXZlbnRzL2lvcy9rZXlib2FyZC1zaG91bGQtbm90LXRyaWdnZXItcmVzaXplLmh0bWw6IEFk
ZGVkLgorCiAyMDE1LTEwLTI3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBhIGZhaWxpbmcgaU9TIFdLMiB0ZXN0LgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2tleWJvYXJkLXNob3VsZC1ub3Qt
dHJpZ2dlci1yZXNpemUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9z
L2tleWJvYXJkLXNob3VsZC1ub3QtdHJpZ2dlci1yZXNpemUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmJkYWYzYWNkMzk0Nzc2OWVmOTllZjIzOWRjYTYxMTczY2M5NDk0YzQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3Mva2V5Ym9hcmQtc2hvdWxkLW5vdC10
cmlnZ2VyLXJlc2l6ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9pb3Mva2V5Ym9hcmQtc2hvdWxkLW5vdC10cmlnZ2VyLXJlc2l6
ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2tleWJvYXJkLXNob3VsZC1ub3Qt
dHJpZ2dlci1yZXNpemUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNmM4NGFiZjY4NjkxNmI5ZTVhOWJkZTlm
NmFiM2UyMGFmMGM3NDUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvaW9zL2tleWJvYXJkLXNob3VsZC1ub3QtdHJpZ2dlci1yZXNpemUuaHRtbApAQCAtMCwwICsx
LDYzIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4
aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKworPGh0bWw+CisKKzxoZWFkPgorICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxt
ZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+CisgICAgPHNj
cmlwdCBpZD0idWktc2NyaXB0IiB0eXBlPSJ0ZXh0L3BsYWluIj4KKyAgICAgICAgKGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgdWlDb250cm9sbGVyLmRpZFNob3dLZXlib2FyZENhbGxiYWNrID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLnR5cGVDaGFyYWN0ZXJV
c2luZ0hhcmR3YXJlS2V5Ym9hcmQoImEiLCBmdW5jdGlvbigpIHsgfSk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICB1aUNvbnRyb2xsZXIuZGlkSGlkZUtleWJvYXJkQ2FsbGJhY2sgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZSgp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgdWlDb250cm9sbGVyLnNpbmdsZVRhcEF0UG9p
bnQoNTAsIDI1LCBmdW5jdGlvbigpIHt9KTsKKyAgICAgICAgfSkoKTsKKyAgICA8L3NjcmlwdD4K
KworICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGdldFVJU2NyaXB0
KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ1aS1zY3JpcHQiKS50ZXh0OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcnVuVGVz
dCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIgfHwgIXRl
c3RSdW5uZXIucnVuVUlTY3JpcHQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICB3aW5kb3cub25yZXNpemUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBkZWJ1
ZygiUmVjZWl2ZWQgdW5leHBlY3RlZCBvbnJlc2l6ZSBldmVudCEiKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChnZXRVSVNjcmlwdCgpLCBmdW5j
dGlvbihyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gaGFuZGxlSW5w
dXQoKSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dGZpZWxkIiku
Ymx1cigpOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+CisgICAgPHN0eWxlPgorICAgIGlucHV0
IHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDUwcHg7CisgICAgfQor
ICAgIDwvc3R5bGU+Cis8L2hlYWQ+CisKKzxib2R5IHN0eWxlPSJtYXJnaW46IDA7IiBvbmxvYWQ9
InJ1blRlc3QoKSI+CisgICAgPGlucHV0IGlkPSJ0ZXh0ZmllbGQiIHN0eWxlPSJ3aWR0aDogMTAw
cHg7IGhlaWdodDogNTBweDsiIG9uaW5wdXQ9ImhhbmRsZUlucHV0KCkiPgorICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKworPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264246</attachid>
            <date>2015-10-28 14:30:36 -0700</date>
            <delta_ts>2015-10-29 12:38:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150634-20151028142945.patch</filename>
            <type>text/plain</type>
            <size>9198</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYWY0NGYyZDkwZGJjMzQw
YmFhZTY4N2Y0OGU1NDczZDdkZGRlZDJkZS4uZDQ0N2E5ZTFlYjVlZTJhMTQwNmIyMjA5NTVkZDVi
OTFmMTA5YzgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE1LTEwLTI4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIElubmVyIGhlaWdo
dCBiZWhhdmlvciB3aGVuIHRoZSBrZXlib2FyZCBpcyBzaG93biBzaG91bGQgbWF0Y2ggb24gV0tX
ZWJWaWV3IGFuZCBNb2JpbGVTYWZhcmkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MDYzNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjMyMDIyNTQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBX
S1dlYlZpZXcgbWF0Y2ggYmVoYXZpb3IgaW4gU2FmYXJpIGJ5IG5vdCBmaXJpbmcgcmVzaXplIGV2
ZW50cyBhbmQgY2hhbmdpbmcgdGhlIGlubmVyIGhlaWdodCB3aGVuIHNob3dpbmcKKyAgICAgICAg
b3IgaGlkaW5nIHRoZSBrZXlib2FyZC4gUHJldmlvdXNseSwgdGhlIFdLV2ViVmlldyB3b3VsZCBk
byBib3RoIG9mIHRoZSBhYm92ZSBiZWNhdXNlIHdlIHVzZSB0aGUgc2Nyb2xsIHZpZXcncworICAg
ICAgICBjb250ZW50SW5zZXQgcHJvcGVydHkgd2hlbiBubyB1bm9ic2N1cmVkIGluc2V0cyBhcmUg
ZXhwbGljaXRseSBzZXQgZm9yIHRoZSBXS1dlYlZpZXcuIFRvIGZpeCB0aGlzLCB3aGVuIHVwZGF0
aW5nCisgICAgICAgIHRoZSB2aXNpYmxlIGNvbnRlbnQgcmVjdCBvZiBhIFdLV2ViVmlldyBmb3Ig
Y29tcHV0aW5nIHRoZSBpbm5lciBoZWlnaHQsIHdlIHJlYWRqdXN0IHRoZSBjb21wdXRlZCBib3R0
b20gaW5zZXQKKyAgICAgICAgdG8gbm90IHRha2UgdGhlIGtleWJvYXJkIGhlaWdodCBpbnRvIGFj
Y291bnQuCisKKyAgICAgICAgVGVzdDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2tleWJv
YXJkLXNob3VsZC1ub3QtdHJpZ2dlci1yZXNpemUuaHRtbAorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfdXBkYXRlVmlz
aWJsZUNvbnRlbnRSZWN0c10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2tleWJvYXJkQ2hhbmdl
ZFdpdGhJbmZvOmFkanVzdFNjcm9sbFZpZXc6XSk6CisKIDIwMTUtMTAtMjcgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IHZpZXdwb3J0
LXdpZHRoLWJhc2VkIGZhc3QtY2xpY2sgaGV1cmlzdGljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDg4NTJjYzQyY2RlNmNkMWQ1NTY0
YTNkMWRjZGFkN2JmN2FhNThmNjcuLjFiNjY0MjIwZmEyODlhODYxMTI3ZWVmNDk2NDk0NDU3ZmYw
YjJiMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCkBAIC0yMTIsNiArMjEyLDEwIEBAIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgewog
CiAgICAgV2ViQ29yZTo6Q29sb3IgX3Njcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3I7CiAKKyAgICBD
R0Zsb2F0IF90b3RhbFNjcm9sbFZpZXdCb3R0b21JbnNldEFkanVzdG1lbnQ7CisgICAgQ0dGbG9h
dCBfc2Nyb2xsVmlld0JvdHRvbUluc2V0QmVmb3JlQWRqdXN0bWVudDsKKyAgICBCT09MIF9jdXJy
ZW50bHlBZGp1c3RpbmdTY3JvbGxWaWV3SW5zZXRzRm9yS2V5Ym9hcmQ7CisKICAgICBCT09MIF9k
ZWxheVVwZGF0ZVZpc2libGVDb250ZW50UmVjdHM7CiAgICAgQk9PTCBfaGFkRGVsYXllZFVwZGF0
ZVZpc2libGVDb250ZW50UmVjdHM7CiAKQEAgLTE2ODMsNyArMTY4NywxNiBAQCAtICh2b2lkKV91
cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzCiAgICAgQ0dSZWN0IGZ1bGxWaWV3UmVjdCA9IHNlbGYu
Ym91bmRzOwogICAgIENHUmVjdCB2aXNpYmxlUmVjdEluQ29udGVudENvb3JkaW5hdGVzID0gX2Zy
b3plblZpc2libGVDb250ZW50UmVjdCA/IF9mcm96ZW5WaXNpYmxlQ29udGVudFJlY3QudmFsdWUo
KSA6IFtzZWxmIGNvbnZlcnRSZWN0OmZ1bGxWaWV3UmVjdCB0b1ZpZXc6X2NvbnRlbnRWaWV3Lmdl
dCgpXTsKIAotICAgIENHUmVjdCB1bm9ic2N1cmVkUmVjdCA9IFVJRWRnZUluc2V0c0luc2V0UmVj
dChmdWxsVmlld1JlY3QsIFtzZWxmIF9jb21wdXRlZENvbnRlbnRJbnNldF0pOworICAgIFVJRWRn
ZUluc2V0cyBjb21wdXRlZENvbnRlbnRJbnNldCA9IFtzZWxmIF9jb21wdXRlZENvbnRlbnRJbnNl
dF07CisgICAgaWYgKCFfaGF2ZVNldE9ic2N1cmVkSW5zZXRzKSB7CisgICAgICAgIC8vIDxyZGFy
Oi8vcHJvYmxlbS8yMzIwMjI1ND4gQWRqdXN0IHRoZSBib3R0b20gaW5zZXQgdG8gbm90IHRha2Ug
dGhlIGtleWJvYXJkIGFkanVzdG1lbnRzIGludG8gYWNjb3VudCBpZiB0aGUgb2JzY3VyZWQgaW5z
ZXRzIHdlcmUgbm90IGV4cGxpY2l0bHkgc2V0IHRocm91Z2ggU1BJLgorICAgICAgICBpZiAoX2N1
cnJlbnRseUFkanVzdGluZ1Njcm9sbFZpZXdJbnNldHNGb3JLZXlib2FyZCkKKyAgICAgICAgICAg
IGNvbXB1dGVkQ29udGVudEluc2V0LmJvdHRvbSA9IF9zY3JvbGxWaWV3Qm90dG9tSW5zZXRCZWZv
cmVBZGp1c3RtZW50IC0gX3RvdGFsU2Nyb2xsVmlld0JvdHRvbUluc2V0QWRqdXN0bWVudDsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgY29tcHV0ZWRDb250ZW50SW5zZXQuYm90dG9tIC09IF90
b3RhbFNjcm9sbFZpZXdCb3R0b21JbnNldEFkanVzdG1lbnQ7CisgICAgfQorCisgICAgQ0dSZWN0
IHVub2JzY3VyZWRSZWN0ID0gVUlFZGdlSW5zZXRzSW5zZXRSZWN0KGZ1bGxWaWV3UmVjdCwgY29t
cHV0ZWRDb250ZW50SW5zZXQpOwogICAgIENHUmVjdCB1bm9ic2N1cmVkUmVjdEluQ29udGVudENv
b3JkaW5hdGVzID0gX2Zyb3plblVub2JzY3VyZWRDb250ZW50UmVjdCA/IF9mcm96ZW5Vbm9ic2N1
cmVkQ29udGVudFJlY3QudmFsdWUoKSA6IFtzZWxmIGNvbnZlcnRSZWN0OnVub2JzY3VyZWRSZWN0
IHRvVmlldzpfY29udGVudFZpZXcuZ2V0KCldOwogCiAgICAgQ0dGbG9hdCBzY2FsZUZhY3RvciA9
IGNvbnRlbnRab29tU2NhbGUoc2VsZik7CkBAIC0xNjk5LDcgKzE3MTIsNyBAQCAtICh2b2lkKV91
cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzCiAgICAgICAgIFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JQcm94eSogY29vcmRpbmF0b3IgPSBfcGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eSgpOwogICAgICAgICBpZiAoY29vcmRpbmF0b3IgJiYgY29vcmRpbmF0b3ItPmhhc0Fj
dGl2ZVNuYXBQb2ludCgpKSB7CiAgICAgICAgICAgICBDR1JlY3QgZnVsbFZpZXdSZWN0ID0gc2Vs
Zi5ib3VuZHM7Ci0gICAgICAgICAgICBDR1JlY3QgdW5vYnNjdXJlZFJlY3QgPSBVSUVkZ2VJbnNl
dHNJbnNldFJlY3QoZnVsbFZpZXdSZWN0LCBbc2VsZiBfY29tcHV0ZWRDb250ZW50SW5zZXRdKTsK
KyAgICAgICAgICAgIENHUmVjdCB1bm9ic2N1cmVkUmVjdCA9IFVJRWRnZUluc2V0c0luc2V0UmVj
dChmdWxsVmlld1JlY3QsIGNvbXB1dGVkQ29udGVudEluc2V0KTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgQ0dQb2ludCBjdXJyZW50UG9pbnQgPSBbX3Njcm9sbFZpZXcgY29udGVudE9mZnNl
dF07CiAgICAgICAgICAgICBDR1BvaW50IGFjdGl2ZVBvaW50ID0gY29vcmRpbmF0b3ItPm5lYXJl
c3RBY3RpdmVDb250ZW50SW5zZXRBZGp1c3RlZFNuYXBQb2ludCh1bm9ic2N1cmVkUmVjdC5vcmln
aW4ueSwgY3VycmVudFBvaW50KTsKQEAgLTE3NTUsMTAgKzE3NjgsMTggQEAgLSAodm9pZClfa2V5
Ym9hcmRDaGFuZ2VkV2l0aEluZm86KE5TRGljdGlvbmFyeSAqKWtleWJvYXJkSW5mbyBhZGp1c3RT
Y3JvbGxWaWV3OigKICAgICBlbHNlCiAgICAgICAgIF9pbnB1dFZpZXdCb3VuZHMgPSBbc2VsZi53
aW5kb3cgY29udmVydFJlY3Q6Q0dSZWN0SW50ZXJzZWN0aW9uKFtlbmRGcmFtZVZhbHVlIENHUmVj
dFZhbHVlXSwgc2VsZi53aW5kb3cuc2NyZWVuLmJvdW5kcykgZnJvbVdpbmRvdzpuaWxdOwogCi0g
ICAgW3NlbGYgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHNdOworICAgIGlmIChhZGp1c3RTY3Jv
bGxWaWV3KSB7CisgICAgICAgIF9zY3JvbGxWaWV3Qm90dG9tSW5zZXRCZWZvcmVBZGp1c3RtZW50
ID0gW19zY3JvbGxWaWV3IGNvbnRlbnRJbnNldF0uYm90dG9tOwogCi0gICAgaWYgKGFkanVzdFNj
cm9sbFZpZXcpCisgICAgICAgIF9jdXJyZW50bHlBZGp1c3RpbmdTY3JvbGxWaWV3SW5zZXRzRm9y
S2V5Ym9hcmQgPSBZRVM7CiAgICAgICAgIFtfc2Nyb2xsVmlldyBfYWRqdXN0Rm9yQXV0b21hdGlj
S2V5Ym9hcmRJbmZvOmtleWJvYXJkSW5mbyBhbmltYXRlZDpZRVMgbGFzdEFkanVzdG1lbnQ6Jl9s
YXN0QWRqdXN0bWVudEZvclNjcm9sbGVyXTsKKyAgICAgICAgX2N1cnJlbnRseUFkanVzdGluZ1Nj
cm9sbFZpZXdJbnNldHNGb3JLZXlib2FyZCA9IE5POworCisgICAgICAgIGlmIChfc2Nyb2xsVmll
d0JvdHRvbUluc2V0QmVmb3JlQWRqdXN0bWVudCAhPSBbX3Njcm9sbFZpZXcgY29udGVudEluc2V0
XS5ib3R0b20pCisgICAgICAgICAgICBfdG90YWxTY3JvbGxWaWV3Qm90dG9tSW5zZXRBZGp1c3Rt
ZW50ICs9IFtfc2Nyb2xsVmlldyBjb250ZW50SW5zZXRdLmJvdHRvbSAtIF9zY3JvbGxWaWV3Qm90
dG9tSW5zZXRCZWZvcmVBZGp1c3RtZW50OworICAgIH0KKworICAgIFtzZWxmIF91cGRhdGVWaXNp
YmxlQ29udGVudFJlY3RzXTsKIH0KIAogLSAoQk9PTClfc2hvdWxkVXBkYXRlS2V5Ym9hcmRXaXRo
SW5mbzooTlNEaWN0aW9uYXJ5ICopa2V5Ym9hcmRJbmZvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzhkM2NlNzEzNDc2YjVk
YmJlOGJmNmZiZDI1YjM5NjE1OTAwYjYxYS4uMDE5ZmFiNGY2YzhhNDU2ZmRjNTAwYTI4OTMzYjA4
YTZiODY3ZTljYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE1LTEwLTI4ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIElubmVyIGhlaWdodCBiZWhh
dmlvciB3aGVuIHRoZSBrZXlib2FyZCBpcyBzaG93biBzaG91bGQgbWF0Y2ggb24gV0tXZWJWaWV3
IGFuZCBNb2JpbGVTYWZhcmkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MDYzNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjMyMDIyNTQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgdGhhdCBX
S1dlYlZpZXdzIGRvIG5vdCBmaXJlIHJlc2l6ZSBldmVudHMgb3IgY2hhbmdlIHdpbmRvdy5pbm5l
ckhlaWdodCB3aGVuIHNob3dpbmcgb3IKKyAgICAgICAgaGlkaW5nIHRoZSBrZXlib2FyZC4gVGhp
cyBiZWhhdmlvciBpcyBjb25zaXN0ZW50IHdpdGggbW9iaWxlIFNhZmFyaS4KKworICAgICAgICAq
IGZhc3QvZXZlbnRzL2lvcy9rZXlib2FyZC1zaG91bGQtbm90LXRyaWdnZXItcmVzaXplLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvaW9zL2tleWJvYXJkLXNob3Vs
ZC1ub3QtdHJpZ2dlci1yZXNpemUuaHRtbDogQWRkZWQuCisKIDIwMTUtMTAtMjcgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4
IGEgZmFpbGluZyBpT1MgV0syIHRlc3QuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9pb3Mva2V5Ym9hcmQtc2hvdWxkLW5vdC10cmlnZ2VyLXJlc2l6ZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3Mva2V5Ym9hcmQtc2hvdWxkLW5vdC10cmlnZ2Vy
LXJlc2l6ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU0ZjM5NDc5NWNlZGU5MDkzMmE2ZmFl
YWZjYjY5NjExYWYwOTU0ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL2lvcy9rZXlib2FyZC1zaG91bGQtbm90LXRyaWdnZXItcmVzaXplLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDggQEAKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCitCZWZvcmUgc2hvd2luZyB0aGUga2V5Ym9hcmQsIHdpbmRvdy5pbm5lckhlaWdo
dCA9IDQ4MAorQWZ0ZXIgc2hvd2luZyB0aGUga2V5Ym9hcmQsIHdpbmRvdy5pbm5lckhlaWdodCA9
IDQ4MAorQWZ0ZXIgaGlkaW5nIHRoZSBrZXlib2FyZCwgd2luZG93LmlubmVySGVpZ2h0ID0gNDgw
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9rZXlib2FyZC1zaG91
bGQtbm90LXRyaWdnZXItcmVzaXplLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3Mv
a2V5Ym9hcmQtc2hvdWxkLW5vdC10cmlnZ2VyLXJlc2l6ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5NWZm
MGFkMmFhYWEyNmMzMjJjNjg0ZDA1YTlmNDk5ZGJiZWE4MjIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3Mva2V5Ym9hcmQtc2hvdWxkLW5vdC10cmlnZ2VyLXJl
c2l6ZS5odG1sCkBAIC0wLDAgKzEsNjcgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10
ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorCis8aHRtbD4KKwor
PGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+CisgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwt
c2NhbGU9MS4wLCB1c2VyLXNjYWxhYmxlPW5vIj4KKyAgICA8c2NyaXB0IGlkPSJ1aS1zY3JpcHQi
IHR5cGU9InRleHQvcGxhaW4iPgorICAgICAgICAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB1
aUNvbnRyb2xsZXIuZGlkU2hvd0tleWJvYXJkQ2FsbGJhY2sgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICB1aUNvbnRyb2xsZXIudHlwZUNoYXJhY3RlclVzaW5nSGFyZHdhcmVLZXlib2Fy
ZCgiYSIsIGZ1bmN0aW9uKCkgeyB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHVpQ29u
dHJvbGxlci5kaWRIaWRlS2V5Ym9hcmRDYWxsYmFjayA9IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB1aUNvbnRyb2xsZXIuc2luZ2xlVGFwQXRQb2ludCg1MCwgMjUsIGZ1bmN0aW9u
KCkge30pOworICAgICAgICB9KSgpOworICAgIDwvc2NyaXB0PgorCisgICAgPHNjcmlwdD4KKyAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZ2V0VUlTY3JpcHQoKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVpLXNjcmlwdCIpLnRleHQ7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIkJlZm9yZSBzaG93aW5nIHRoZSBrZXlib2FyZCwgd2luZG93LmlubmVy
SGVpZ2h0ID0gIiArIHdpbmRvdy5pbm5lckhlaWdodCk7CisgICAgICAgICAgICBpZiAoIXdpbmRv
dy50ZXN0UnVubmVyIHx8ICF0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KQorICAgICAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAgICAgd2luZG93Lm9ucmVzaXplID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgICAgZGVidWcoIlJlY2VpdmVkIHVuZXhwZWN0ZWQgb25yZXNpemUgZXZlbnQh
IHdpbmRvdy5pbm5lckhlaWdodCA9ICIgKyB3aW5kb3cuaW5uZXJIZWlnaHQpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGdldFVJU2NyaXB0KCks
IGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJBZnRlciBoaWRpbmcg
dGhlIGtleWJvYXJkLCB3aW5kb3cuaW5uZXJIZWlnaHQgPSAiICsgd2luZG93LmlubmVySGVpZ2h0
KTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gaGFuZGxlSW5wdXQoKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiQWZ0ZXIgc2hvd2luZyB0aGUga2V5Ym9hcmQsIHdpbmRv
dy5pbm5lckhlaWdodCA9ICIgKyB3aW5kb3cuaW5uZXJIZWlnaHQpOworICAgICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHRmaWVsZCIpLmJsdXIoKTsKKyAgICAgICAgfQorICAg
IDwvc2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICBpbnB1dCB7CisgICAgICAgIHdpZHRoOiAxMDBw
eDsKKyAgICAgICAgaGVpZ2h0OiA1MHB4OworICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgor
Cis8Ym9keSBzdHlsZT0ibWFyZ2luOiAwOyIgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxpbnB1
dCBpZD0idGV4dGZpZWxkIiBzdHlsZT0id2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDUwcHg7IiBvbmlu
cHV0PSJoYW5kbGVJbnB1dCgpIj4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+CisKKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264333</attachid>
            <date>2015-10-29 12:38:27 -0700</date>
            <delta_ts>2015-10-30 07:24:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150634-20151029123735.patch</filename>
            <type>text/plain</type>
            <size>9403</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYWY0NGYyZDkwZGJjMzQw
YmFhZTY4N2Y0OGU1NDczZDdkZGRlZDJkZS4uZDQ0N2E5ZTFlYjVlZTJhMTQwNmIyMjA5NTVkZDVi
OTFmMTA5YzgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE1LTEwLTI4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIElubmVyIGhlaWdo
dCBiZWhhdmlvciB3aGVuIHRoZSBrZXlib2FyZCBpcyBzaG93biBzaG91bGQgbWF0Y2ggb24gV0tX
ZWJWaWV3IGFuZCBNb2JpbGVTYWZhcmkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MDYzNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjMyMDIyNTQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBX
S1dlYlZpZXcgbWF0Y2ggYmVoYXZpb3IgaW4gU2FmYXJpIGJ5IG5vdCBmaXJpbmcgcmVzaXplIGV2
ZW50cyBhbmQgY2hhbmdpbmcgdGhlIGlubmVyIGhlaWdodCB3aGVuIHNob3dpbmcKKyAgICAgICAg
b3IgaGlkaW5nIHRoZSBrZXlib2FyZC4gUHJldmlvdXNseSwgdGhlIFdLV2ViVmlldyB3b3VsZCBk
byBib3RoIG9mIHRoZSBhYm92ZSBiZWNhdXNlIHdlIHVzZSB0aGUgc2Nyb2xsIHZpZXcncworICAg
ICAgICBjb250ZW50SW5zZXQgcHJvcGVydHkgd2hlbiBubyB1bm9ic2N1cmVkIGluc2V0cyBhcmUg
ZXhwbGljaXRseSBzZXQgZm9yIHRoZSBXS1dlYlZpZXcuIFRvIGZpeCB0aGlzLCB3aGVuIHVwZGF0
aW5nCisgICAgICAgIHRoZSB2aXNpYmxlIGNvbnRlbnQgcmVjdCBvZiBhIFdLV2ViVmlldyBmb3Ig
Y29tcHV0aW5nIHRoZSBpbm5lciBoZWlnaHQsIHdlIHJlYWRqdXN0IHRoZSBjb21wdXRlZCBib3R0
b20gaW5zZXQKKyAgICAgICAgdG8gbm90IHRha2UgdGhlIGtleWJvYXJkIGhlaWdodCBpbnRvIGFj
Y291bnQuCisKKyAgICAgICAgVGVzdDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2tleWJv
YXJkLXNob3VsZC1ub3QtdHJpZ2dlci1yZXNpemUuaHRtbAorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfdXBkYXRlVmlz
aWJsZUNvbnRlbnRSZWN0c10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2tleWJvYXJkQ2hhbmdl
ZFdpdGhJbmZvOmFkanVzdFNjcm9sbFZpZXc6XSk6CisKIDIwMTUtMTAtMjcgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IHZpZXdwb3J0
LXdpZHRoLWJhc2VkIGZhc3QtY2xpY2sgaGV1cmlzdGljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDg4NTJjYzQyY2RlNmNkMWQ1NTY0
YTNkMWRjZGFkN2JmN2FhNThmNjcuLjJlYWYyZmM0YTE1ZWJhMjQ2YzlmMDA2NGVlOGY5Njg5MGEw
ZDZkYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCkBAIC0yMTIsNiArMjEyLDkgQEAgQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyB7CiAK
ICAgICBXZWJDb3JlOjpDb2xvciBfc2Nyb2xsVmlld0JhY2tncm91bmRDb2xvcjsKIAorICAgIENH
RmxvYXQgX3RvdGFsU2Nyb2xsVmlld0JvdHRvbUluc2V0QWRqdXN0bWVudDsKKyAgICBCT09MIF9j
dXJyZW50bHlBZGp1c3RpbmdTY3JvbGxWaWV3SW5zZXRzRm9yS2V5Ym9hcmQ7CisKICAgICBCT09M
IF9kZWxheVVwZGF0ZVZpc2libGVDb250ZW50UmVjdHM7CiAgICAgQk9PTCBfaGFkRGVsYXllZFVw
ZGF0ZVZpc2libGVDb250ZW50UmVjdHM7CiAKQEAgLTE2NzEsMTkgKzE2NzQsMjEgQEAgLSAodm9p
ZClfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgaWYgKF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICE9IER5bmFtaWNWaWV3cG9ydFVwZGF0
ZU1vZGU6Ok5vdFJlc2l6aW5nKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoX25lZWRzUmVz
ZXRWaWV3U3RhdGVBZnRlckNvbW1pdExvYWRGb3JNYWluRnJhbWUpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGlmIChbX3Njcm9sbFZpZXcgaXNab29tQm91bmNpbmddKQorICAgIGlmIChfZHluYW1p
Y1ZpZXdwb3J0VXBkYXRlTW9kZSAhPSBEeW5hbWljVmlld3BvcnRVcGRhdGVNb2RlOjpOb3RSZXNp
emluZworICAgICAgICB8fCBfbmVlZHNSZXNldFZpZXdTdGF0ZUFmdGVyQ29tbWl0TG9hZEZvck1h
aW5GcmFtZQorICAgICAgICB8fCBbX3Njcm9sbFZpZXcgaXNab29tQm91bmNpbmddCisgICAgICAg
IHx8IF9jdXJyZW50bHlBZGp1c3RpbmdTY3JvbGxWaWV3SW5zZXRzRm9yS2V5Ym9hcmQpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIENHUmVjdCBmdWxsVmlld1JlY3QgPSBzZWxmLmJvdW5kczsKICAg
ICBDR1JlY3QgdmlzaWJsZVJlY3RJbkNvbnRlbnRDb29yZGluYXRlcyA9IF9mcm96ZW5WaXNpYmxl
Q29udGVudFJlY3QgPyBfZnJvemVuVmlzaWJsZUNvbnRlbnRSZWN0LnZhbHVlKCkgOiBbc2VsZiBj
b252ZXJ0UmVjdDpmdWxsVmlld1JlY3QgdG9WaWV3Ol9jb250ZW50Vmlldy5nZXQoKV07CiAKLSAg
ICBDR1JlY3QgdW5vYnNjdXJlZFJlY3QgPSBVSUVkZ2VJbnNldHNJbnNldFJlY3QoZnVsbFZpZXdS
ZWN0LCBbc2VsZiBfY29tcHV0ZWRDb250ZW50SW5zZXRdKTsKKyAgICBVSUVkZ2VJbnNldHMgY29t
cHV0ZWRDb250ZW50SW5zZXQgPSBbc2VsZiBfY29tcHV0ZWRDb250ZW50SW5zZXRdOworICAgIC8v
IDxyZGFyOi8vcHJvYmxlbS8yMzIwMjI1ND4gQWRqdXN0IHRoZSBib3R0b20gaW5zZXQgdG8gbm90
IHRha2UgdGhlIGtleWJvYXJkIGFkanVzdG1lbnRzIGludG8gYWNjb3VudCBpZiB0aGUgb2JzY3Vy
ZWQgaW5zZXRzIHdlcmUgbm90IGV4cGxpY2l0bHkgc2V0IHRocm91Z2ggU1BJLgorICAgIGlmICgh
X2hhdmVTZXRPYnNjdXJlZEluc2V0cykKKyAgICAgICAgY29tcHV0ZWRDb250ZW50SW5zZXQuYm90
dG9tIC09IF90b3RhbFNjcm9sbFZpZXdCb3R0b21JbnNldEFkanVzdG1lbnQ7CisKKyAgICBDR1Jl
Y3QgdW5vYnNjdXJlZFJlY3QgPSBVSUVkZ2VJbnNldHNJbnNldFJlY3QoZnVsbFZpZXdSZWN0LCBj
b21wdXRlZENvbnRlbnRJbnNldCk7CiAgICAgQ0dSZWN0IHVub2JzY3VyZWRSZWN0SW5Db250ZW50
Q29vcmRpbmF0ZXMgPSBfZnJvemVuVW5vYnNjdXJlZENvbnRlbnRSZWN0ID8gX2Zyb3plblVub2Jz
Y3VyZWRDb250ZW50UmVjdC52YWx1ZSgpIDogW3NlbGYgY29udmVydFJlY3Q6dW5vYnNjdXJlZFJl
Y3QgdG9WaWV3Ol9jb250ZW50Vmlldy5nZXQoKV07CiAKICAgICBDR0Zsb2F0IHNjYWxlRmFjdG9y
ID0gY29udGVudFpvb21TY2FsZShzZWxmKTsKQEAgLTE2OTksNyArMTcwNCw3IEBAIC0gKHZvaWQp
X3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHMKICAgICAgICAgV2ViS2l0OjpSZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclByb3h5KiBjb29yZGluYXRvciA9IF9wYWdlLT5zY3JvbGxpbmdDb29yZGlu
YXRvclByb3h5KCk7CiAgICAgICAgIGlmIChjb29yZGluYXRvciAmJiBjb29yZGluYXRvci0+aGFz
QWN0aXZlU25hcFBvaW50KCkpIHsKICAgICAgICAgICAgIENHUmVjdCBmdWxsVmlld1JlY3QgPSBz
ZWxmLmJvdW5kczsKLSAgICAgICAgICAgIENHUmVjdCB1bm9ic2N1cmVkUmVjdCA9IFVJRWRnZUlu
c2V0c0luc2V0UmVjdChmdWxsVmlld1JlY3QsIFtzZWxmIF9jb21wdXRlZENvbnRlbnRJbnNldF0p
OworICAgICAgICAgICAgQ0dSZWN0IHVub2JzY3VyZWRSZWN0ID0gVUlFZGdlSW5zZXRzSW5zZXRS
ZWN0KGZ1bGxWaWV3UmVjdCwgY29tcHV0ZWRDb250ZW50SW5zZXQpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBDR1BvaW50IGN1cnJlbnRQb2ludCA9IFtfc2Nyb2xsVmlldyBjb250ZW50T2Zm
c2V0XTsKICAgICAgICAgICAgIENHUG9pbnQgYWN0aXZlUG9pbnQgPSBjb29yZGluYXRvci0+bmVh
cmVzdEFjdGl2ZUNvbnRlbnRJbnNldEFkanVzdGVkU25hcFBvaW50KHVub2JzY3VyZWRSZWN0Lm9y
aWdpbi55LCBjdXJyZW50UG9pbnQpOwpAQCAtMTc1NSwxMCArMTc2MCwxOCBAQCAtICh2b2lkKV9r
ZXlib2FyZENoYW5nZWRXaXRoSW5mbzooTlNEaWN0aW9uYXJ5ICopa2V5Ym9hcmRJbmZvIGFkanVz
dFNjcm9sbFZpZXc6KAogICAgIGVsc2UKICAgICAgICAgX2lucHV0Vmlld0JvdW5kcyA9IFtzZWxm
LndpbmRvdyBjb252ZXJ0UmVjdDpDR1JlY3RJbnRlcnNlY3Rpb24oW2VuZEZyYW1lVmFsdWUgQ0dS
ZWN0VmFsdWVdLCBzZWxmLndpbmRvdy5zY3JlZW4uYm91bmRzKSBmcm9tV2luZG93Om5pbF07CiAK
LSAgICBbc2VsZiBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c107CisgICAgaWYgKGFkanVzdFNj
cm9sbFZpZXcpIHsKKyAgICAgICAgQ0dGbG9hdCBib3R0b21JbnNldEJlZm9yZUFkanVzdG1lbnQg
PSBbX3Njcm9sbFZpZXcgY29udGVudEluc2V0XS5ib3R0b207CiAKLSAgICBpZiAoYWRqdXN0U2Ny
b2xsVmlldykKKyAgICAgICAgX2N1cnJlbnRseUFkanVzdGluZ1Njcm9sbFZpZXdJbnNldHNGb3JL
ZXlib2FyZCA9IFlFUzsKICAgICAgICAgW19zY3JvbGxWaWV3IF9hZGp1c3RGb3JBdXRvbWF0aWNL
ZXlib2FyZEluZm86a2V5Ym9hcmRJbmZvIGFuaW1hdGVkOllFUyBsYXN0QWRqdXN0bWVudDomX2xh
c3RBZGp1c3RtZW50Rm9yU2Nyb2xsZXJdOworICAgICAgICBfY3VycmVudGx5QWRqdXN0aW5nU2Ny
b2xsVmlld0luc2V0c0ZvcktleWJvYXJkID0gTk87CisKKyAgICAgICAgaWYgKGJvdHRvbUluc2V0
QmVmb3JlQWRqdXN0bWVudCAhPSBbX3Njcm9sbFZpZXcgY29udGVudEluc2V0XS5ib3R0b20pCisg
ICAgICAgICAgICBfdG90YWxTY3JvbGxWaWV3Qm90dG9tSW5zZXRBZGp1c3RtZW50ICs9IFtfc2Ny
b2xsVmlldyBjb250ZW50SW5zZXRdLmJvdHRvbSAtIGJvdHRvbUluc2V0QmVmb3JlQWRqdXN0bWVu
dDsKKyAgICB9CisKKyAgICBbc2VsZiBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c107CiB9CiAK
IC0gKEJPT0wpX3Nob3VsZFVwZGF0ZUtleWJvYXJkV2l0aEluZm86KE5TRGljdGlvbmFyeSAqKWtl
eWJvYXJkSW5mbwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDM4ZDNjZTcxMzQ3NmI1ZGJiZThiZjZmYmQyNWIzOTYxNTkwMGI2
MWEuLjAxOWZhYjRmNmM4YTQ1NmZkYzUwMGEyODkzM2IwOGE2Yjg2N2U5Y2MgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxNS0xMC0yOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KKworICAgICAgICBJbm5lciBoZWlnaHQgYmVoYXZpb3Igd2hlbiB0aGUga2V5Ym9hcmQg
aXMgc2hvd24gc2hvdWxkIG1hdGNoIG9uIFdLV2ViVmlldyBhbmQgTW9iaWxlU2FmYXJpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA2MzQKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzIzMjAyMjU0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIHRoYXQgV0tXZWJWaWV3cyBkbyBub3QgZmlyZSBy
ZXNpemUgZXZlbnRzIG9yIGNoYW5nZSB3aW5kb3cuaW5uZXJIZWlnaHQgd2hlbiBzaG93aW5nIG9y
CisgICAgICAgIGhpZGluZyB0aGUga2V5Ym9hcmQuIFRoaXMgYmVoYXZpb3IgaXMgY29uc2lzdGVu
dCB3aXRoIG1vYmlsZSBTYWZhcmkuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9pb3Mva2V5Ym9h
cmQtc2hvdWxkLW5vdC10cmlnZ2VyLXJlc2l6ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZXZlbnRzL2lvcy9rZXlib2FyZC1zaG91bGQtbm90LXRyaWdnZXItcmVzaXplLmh0
bWw6IEFkZGVkLgorCiAyMDE1LTEwLTI3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBhIGZhaWxpbmcgaU9TIFdLMiB0ZXN0
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2tleWJvYXJkLXNob3Vs
ZC1ub3QtdHJpZ2dlci1yZXNpemUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvaW9zL2tleWJvYXJkLXNob3VsZC1ub3QtdHJpZ2dlci1yZXNpemUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJlNGYzOTQ3OTVjZWRlOTA5MzJhNmZhZWFmY2I2OTYxMWFmMDk1NGUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3Mva2V5Ym9hcmQtc2hvdWxk
LW5vdC10cmlnZ2VyLXJlc2l6ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACisKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorQmVmb3JlIHNob3dp
bmcgdGhlIGtleWJvYXJkLCB3aW5kb3cuaW5uZXJIZWlnaHQgPSA0ODAKK0FmdGVyIHNob3dpbmcg
dGhlIGtleWJvYXJkLCB3aW5kb3cuaW5uZXJIZWlnaHQgPSA0ODAKK0FmdGVyIGhpZGluZyB0aGUg
a2V5Ym9hcmQsIHdpbmRvdy5pbm5lckhlaWdodCA9IDQ4MAorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9pb3Mva2V5Ym9hcmQtc2hvdWxkLW5vdC10cmlnZ2VyLXJlc2l6ZS5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2tleWJvYXJkLXNob3VsZC1ub3QtdHJp
Z2dlci1yZXNpemUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTVmZjBhZDJhYWFhMjZjMzIyYzY4NGQwNWE5
ZjQ5OWRiYmVhODIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
aW9zL2tleWJvYXJkLXNob3VsZC1ub3QtdHJpZ2dlci1yZXNpemUuaHRtbApAQCAtMCwwICsxLDY3
IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJs
ZVZpZXdwb3J0PXRydWUgXSAtLT4KKworPGh0bWw+CisKKzxoZWFkPgorICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxtZXRh
IG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJs
ZT1ubyI+CisgICAgPHNjcmlwdCBpZD0idWktc2NyaXB0IiB0eXBlPSJ0ZXh0L3BsYWluIj4KKyAg
ICAgICAgKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdWlDb250cm9sbGVyLmRpZFNob3dLZXli
b2FyZENhbGxiYWNrID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdWlDb250cm9sbGVy
LnR5cGVDaGFyYWN0ZXJVc2luZ0hhcmR3YXJlS2V5Ym9hcmQoImEiLCBmdW5jdGlvbigpIHsgfSk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICB1aUNvbnRyb2xsZXIuZGlkSGlkZUtleWJvYXJk
Q2FsbGJhY2sgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIudWlT
Y3JpcHRDb21wbGV0ZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdWlDb250cm9sbGVy
LnNpbmdsZVRhcEF0UG9pbnQoNTAsIDI1LCBmdW5jdGlvbigpIHt9KTsKKyAgICAgICAgfSkoKTsK
KyAgICA8L3NjcmlwdD4KKworICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGdldFVJU2NyaXB0KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ1aS1zY3JpcHQiKS50ZXh0OworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJCZWZvcmUg
c2hvd2luZyB0aGUga2V5Ym9hcmQsIHdpbmRvdy5pbm5lckhlaWdodCA9ICIgKyB3aW5kb3cuaW5u
ZXJIZWlnaHQpOworICAgICAgICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhdGVzdFJ1
bm5lci5ydW5VSVNjcmlwdCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IHdpbmRvdy5vbnJlc2l6ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJS
ZWNlaXZlZCB1bmV4cGVjdGVkIG9ucmVzaXplIGV2ZW50ISB3aW5kb3cuaW5uZXJIZWlnaHQgPSAi
ICsgd2luZG93LmlubmVySGVpZ2h0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGVz
dFJ1bm5lci5ydW5VSVNjcmlwdChnZXRVSVNjcmlwdCgpLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAg
ICAgICAgICAgICAgICBkZWJ1ZygiQWZ0ZXIgaGlkaW5nIHRoZSBrZXlib2FyZCwgd2luZG93Lmlu
bmVySGVpZ2h0ID0gIiArIHdpbmRvdy5pbm5lckhlaWdodCk7CisgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGhhbmRsZUlucHV0KCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IkFmdGVyIHNob3dpbmcgdGhlIGtleWJvYXJkLCB3aW5kb3cuaW5uZXJIZWlnaHQgPSAiICsgd2lu
ZG93LmlubmVySGVpZ2h0KTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
ZXh0ZmllbGQiKS5ibHVyKCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKyAgICA8c3R5bGU+
CisgICAgaW5wdXQgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogNTBw
eDsKKyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKworPGJvZHkgc3R5bGU9Im1hcmdpbjog
MDsiIG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8aW5wdXQgaWQ9InRleHRmaWVsZCIgc3R5bGU9
IndpZHRoOiAxMDBweDsgaGVpZ2h0OiA1MHB4OyIgb25pbnB1dD0iaGFuZGxlSW5wdXQoKSI+Cisg
ICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorCis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264395</attachid>
            <date>2015-10-30 07:24:29 -0700</date>
            <delta_ts>2015-10-30 16:11:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150634-20151030072337.patch</filename>
            <type>text/plain</type>
            <size>10987</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYWY0NGYyZDkwZGJjMzQw
YmFhZTY4N2Y0OGU1NDczZDdkZGRlZDJkZS4uMDJkY2RlOTczNDg5Zjc3ZjU1YzVjZDc1MmI4M2Zh
MTIzNjFlODkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE1LTEwLTI4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIElubmVyIGhlaWdo
dCBiZWhhdmlvciB3aGVuIHRoZSBrZXlib2FyZCBpcyBzaG93biBzaG91bGQgbWF0Y2ggb24gV0tX
ZWJWaWV3IGFuZCBNb2JpbGVTYWZhcmkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MDYzNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjMyMDIyNTQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBX
S1dlYlZpZXcgbWF0Y2ggYmVoYXZpb3IgaW4gU2FmYXJpIGJ5IG5vdCBmaXJpbmcgcmVzaXplIGV2
ZW50cyBhbmQgY2hhbmdpbmcgdGhlIGlubmVyIGhlaWdodCB3aGVuIHNob3dpbmcKKyAgICAgICAg
b3IgaGlkaW5nIHRoZSBrZXlib2FyZC4gUHJldmlvdXNseSwgdGhlIFdLV2ViVmlldyB3b3VsZCBk
byBib3RoIG9mIHRoZSBhYm92ZSBiZWNhdXNlIHdlIHVzZSB0aGUgc2Nyb2xsIHZpZXcncworICAg
ICAgICBjb250ZW50SW5zZXQgcHJvcGVydHkgd2hlbiBubyB1bm9ic2N1cmVkIGluc2V0cyBhcmUg
ZXhwbGljaXRseSBzZXQgZm9yIHRoZSBXS1dlYlZpZXcuIFRvIGZpeCB0aGlzLCB3aGVuIHVwZGF0
aW5nCisgICAgICAgIHRoZSB2aXNpYmxlIGNvbnRlbnQgcmVjdCBvZiBhIFdLV2ViVmlldyBmb3Ig
Y29tcHV0aW5nIHRoZSBpbm5lciBoZWlnaHQsIHdlIHJlYWRqdXN0IHRoZSBjb21wdXRlZCBib3R0
b20gaW5zZXQKKyAgICAgICAgdG8gbm90IHRha2UgdGhlIGtleWJvYXJkIGhlaWdodCBpbnRvIGFj
Y291bnQuIFRvIGtub3cgaG93IG11Y2ggd2UgbmVlZCB0byByZWFkanVzdCB0aGUgaW5zZXQgYnks
IHdlIHN0b3JlIHRoZQorICAgICAgICB0b3RhbCBhbW91bnQgYnkgd2hpY2ggdGhlIHNjcm9sbCB2
aWV3J3MgYm90dG9tIGluc2V0IGhhcyBiZWVuIGFkanVzdGVkIGR1ZSB0byB0aGUga2V5Ym9hcmQu
CisKKyAgICAgICAgV2UgcGVyZm9ybSB0aGlzIHJlYWRqdXN0bWVudCBpbiBfdXBkYXRlVmlzaWJs
ZUNvbnRlbnRSZWN0cyByYXRoZXIgdGhhbiBpbiBfY29tcHV0ZWRDb250ZW50SW5zZXQgc2luY2Ug
c29tZSB1c2VycworICAgICAgICBvZiBfY29tcHV0ZWRDb250ZW50SW5zZXQgbWF5IHN0aWxsIGV4
cGVjdCB0aGUgYm90dG9tIGluc2V0IHRvIGFjY291bnQgZm9yIHRoZSBrZXlib2FyZCBoZWlnaHQu
IEhvd2V2ZXIsIHdoZW4KKyAgICAgICAgdXBkYXRpbmcgdmlzaWJsZSBjb250ZW50IHJlY3RzLCB3
ZSBzaG91bGQgbm90IGFjY291bnQgZm9yIHRoZSBrZXlib2FyZCBoZWlnaHQgc2luY2Ugd2UgZG9u
J3Qgd2FudCB0aGUgaW5uZXIgaGVpZ2h0CisgICAgICAgIHRvIGNoYW5nZSB3aGVuIHNob3dpbmcg
b3IgaGlkaW5nIHRoZSBrZXlib2FyZC4KKworICAgICAgICBMYXN0bHksIHdoaWxlIGNhbGxpbmcg
X2FkanVzdEZvckF1dG9tYXRpY0tleWJvYXJkSW5mbywgd2UgbWF5IGVuZCB1cCBjYWxsaW5nIF91
cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzLiBUaGlzIGNhbGwKKyAgICAgICAgaXMgdW5uZWNlc3Nh
cnkgc2luY2Ugd2UgY2FsbCBpdCBhZ2FpbiBpbW1lZGlhdGVseSBhZnRlciBfYWRqdXN0Rm9yQXV0
b21hdGljS2V5Ym9hcmRJbmZvLCBhbmQgaXQgYWxzbyBjb21wbGljYXRlcworICAgICAgICB0aGUg
cmVhZGp1c3RtZW50IGxvZ2ljLCBzbyBpdCBtYWtlcyBzZW5zZSB0byBwcmV2ZW50IHRoZSB1cGRh
dGUgZnJvbSBoYXBwZW5pbmcgYWx0b2dldGhlciB3aGlsZSB3ZSBhcmUgYWRqdXN0aW5nCisgICAg
ICAgIHRoZSBzY3JvbGwgdmlldydzIGluc2V0cyBkdWUgdG8ga2V5Ym9hcmQgY2hhbmdlcy4gQWx0
b2dldGhlciwgdGhlc2UgY2hhbmdlcyBtZWFuIHRoYXQgdGhlIGNvbXB1dGVkIGlubmVyIGhlaWdo
dAorICAgICAgICB3aWxsIG5vIGxvbmdlciBiZSBhZGp1c3RlZCBmb3IgdGhlIGtleWJvYXJkIGhl
aWdodCBvbiBXS1dlYlZpZXdzLCBtYXRjaGluZyB0aGUgYmVoYXZpb3Igb2JzZXJ2ZWQgb24gbW9i
aWxlIFNhZmFyaS4KKworICAgICAgICBUZXN0OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3Mv
a2V5Ym9hcmQtc2hvdWxkLW5vdC10cmlnZ2VyLXJlc2l6ZS5odG1sCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF91cGRh
dGVWaXNpYmxlQ29udGVudFJlY3RzXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfa2V5Ym9hcmRD
aGFuZ2VkV2l0aEluZm86YWRqdXN0U2Nyb2xsVmlldzpdKToKKwogMjAxNS0xMC0yNyAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgdmll
d3BvcnQtd2lkdGgtYmFzZWQgZmFzdC1jbGljayBoZXVyaXN0aWMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggODg1MmNjNDJjZGU2Y2Qx
ZDU1NjRhM2QxZGNkYWQ3YmY3YWE1OGY2Ny4uZjQ1YzcxMjI3YmZjMGQ2MjM4ZTFlM2M4MTA2YWUw
ZjRkZjY3MTRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KQEAgLTg2LDYgKzg2LDcgQEAKICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CisjaW1wb3J0IDx3dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAj
aW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFsLmgiCkBAIC0yMTIsNiArMjEzLDEyIEBAIEBp
bXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgewogCiAgICAgV2ViQ29yZTo6Q29sb3IgX3Njcm9sbFZp
ZXdCYWNrZ3JvdW5kQ29sb3I7CiAKKyAgICAvLyBUaGlzIHZhbHVlIHRyYWNrcyB0aGUgY3VycmVu
dCBhZGp1c3RtZW50IGFkZGVkIHRvIHRoZSBib3R0b20gaW5zZXQgZHVlIHRvIHRoZSBrZXlib2Fy
ZCBzbGlkaW5nIG91dCBmcm9tIHRoZSBib3R0b20KKyAgICAvLyB3aGVuIGNvbXB1dGluZyBvYnNj
dXJlZCBjb250ZW50IGluc2V0cy4gVGhpcyBpcyB1c2VkIHdoZW4gdXBkYXRpbmcgdGhlIHZpc2li
bGUgY29udGVudCByZWN0cyB3aGVyZSB3ZSBzaG91bGQgbm90CisgICAgLy8gaW5jbHVkZSB0aGlz
IGFkanVzdG1lbnQuCisgICAgQ0dGbG9hdCBfdG90YWxTY3JvbGxWaWV3Qm90dG9tSW5zZXRBZGp1
c3RtZW50Rm9yS2V5Ym9hcmQ7CisgICAgQk9PTCBfY3VycmVudGx5QWRqdXN0aW5nU2Nyb2xsVmll
d0luc2V0c0ZvcktleWJvYXJkOworCiAgICAgQk9PTCBfZGVsYXlVcGRhdGVWaXNpYmxlQ29udGVu
dFJlY3RzOwogICAgIEJPT0wgX2hhZERlbGF5ZWRVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzOwog
CkBAIC0xNjcxLDE5ICsxNjc4LDIwIEBAIC0gKHZvaWQpX3VwZGF0ZVZpc2libGVDb250ZW50UmVj
dHMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChfZHluYW1pY1ZpZXdwb3J0VXBk
YXRlTW9kZSAhPSBEeW5hbWljVmlld3BvcnRVcGRhdGVNb2RlOjpOb3RSZXNpemluZykKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaWYgKF9uZWVkc1Jlc2V0Vmlld1N0YXRlQWZ0ZXJDb21taXRMb2Fk
Rm9yTWFpbkZyYW1lKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoW19zY3JvbGxWaWV3IGlz
Wm9vbUJvdW5jaW5nXSkKKyAgICBpZiAoX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgIT0gRHlu
YW1pY1ZpZXdwb3J0VXBkYXRlTW9kZTo6Tm90UmVzaXppbmcKKyAgICAgICAgfHwgX25lZWRzUmVz
ZXRWaWV3U3RhdGVBZnRlckNvbW1pdExvYWRGb3JNYWluRnJhbWUKKyAgICAgICAgfHwgW19zY3Jv
bGxWaWV3IGlzWm9vbUJvdW5jaW5nXQorICAgICAgICB8fCBfY3VycmVudGx5QWRqdXN0aW5nU2Ny
b2xsVmlld0luc2V0c0ZvcktleWJvYXJkKQogICAgICAgICByZXR1cm47CiAKICAgICBDR1JlY3Qg
ZnVsbFZpZXdSZWN0ID0gc2VsZi5ib3VuZHM7CiAgICAgQ0dSZWN0IHZpc2libGVSZWN0SW5Db250
ZW50Q29vcmRpbmF0ZXMgPSBfZnJvemVuVmlzaWJsZUNvbnRlbnRSZWN0ID8gX2Zyb3plblZpc2li
bGVDb250ZW50UmVjdC52YWx1ZSgpIDogW3NlbGYgY29udmVydFJlY3Q6ZnVsbFZpZXdSZWN0IHRv
VmlldzpfY29udGVudFZpZXcuZ2V0KCldOwogCi0gICAgQ0dSZWN0IHVub2JzY3VyZWRSZWN0ID0g
VUlFZGdlSW5zZXRzSW5zZXRSZWN0KGZ1bGxWaWV3UmVjdCwgW3NlbGYgX2NvbXB1dGVkQ29udGVu
dEluc2V0XSk7CisgICAgVUlFZGdlSW5zZXRzIGNvbXB1dGVkQ29udGVudEluc2V0ID0gW3NlbGYg
X2NvbXB1dGVkQ29udGVudEluc2V0XTsKKyAgICBpZiAoIV9oYXZlU2V0T2JzY3VyZWRJbnNldHMp
CisgICAgICAgIGNvbXB1dGVkQ29udGVudEluc2V0LmJvdHRvbSAtPSBfdG90YWxTY3JvbGxWaWV3
Qm90dG9tSW5zZXRBZGp1c3RtZW50Rm9yS2V5Ym9hcmQ7CisKKyAgICBDR1JlY3QgdW5vYnNjdXJl
ZFJlY3QgPSBVSUVkZ2VJbnNldHNJbnNldFJlY3QoZnVsbFZpZXdSZWN0LCBjb21wdXRlZENvbnRl
bnRJbnNldCk7CiAgICAgQ0dSZWN0IHVub2JzY3VyZWRSZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMg
PSBfZnJvemVuVW5vYnNjdXJlZENvbnRlbnRSZWN0ID8gX2Zyb3plblVub2JzY3VyZWRDb250ZW50
UmVjdC52YWx1ZSgpIDogW3NlbGYgY29udmVydFJlY3Q6dW5vYnNjdXJlZFJlY3QgdG9WaWV3Ol9j
b250ZW50Vmlldy5nZXQoKV07CiAKICAgICBDR0Zsb2F0IHNjYWxlRmFjdG9yID0gY29udGVudFpv
b21TY2FsZShzZWxmKTsKQEAgLTE2OTksNyArMTcwNyw3IEBAIC0gKHZvaWQpX3VwZGF0ZVZpc2li
bGVDb250ZW50UmVjdHMKICAgICAgICAgV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clByb3h5KiBjb29yZGluYXRvciA9IF9wYWdlLT5zY3JvbGxpbmdDb29yZGluYXRvclByb3h5KCk7
CiAgICAgICAgIGlmIChjb29yZGluYXRvciAmJiBjb29yZGluYXRvci0+aGFzQWN0aXZlU25hcFBv
aW50KCkpIHsKICAgICAgICAgICAgIENHUmVjdCBmdWxsVmlld1JlY3QgPSBzZWxmLmJvdW5kczsK
LSAgICAgICAgICAgIENHUmVjdCB1bm9ic2N1cmVkUmVjdCA9IFVJRWRnZUluc2V0c0luc2V0UmVj
dChmdWxsVmlld1JlY3QsIFtzZWxmIF9jb21wdXRlZENvbnRlbnRJbnNldF0pOworICAgICAgICAg
ICAgQ0dSZWN0IHVub2JzY3VyZWRSZWN0ID0gVUlFZGdlSW5zZXRzSW5zZXRSZWN0KGZ1bGxWaWV3
UmVjdCwgY29tcHV0ZWRDb250ZW50SW5zZXQpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBD
R1BvaW50IGN1cnJlbnRQb2ludCA9IFtfc2Nyb2xsVmlldyBjb250ZW50T2Zmc2V0XTsKICAgICAg
ICAgICAgIENHUG9pbnQgYWN0aXZlUG9pbnQgPSBjb29yZGluYXRvci0+bmVhcmVzdEFjdGl2ZUNv
bnRlbnRJbnNldEFkanVzdGVkU25hcFBvaW50KHVub2JzY3VyZWRSZWN0Lm9yaWdpbi55LCBjdXJy
ZW50UG9pbnQpOwpAQCAtMTc1NSwxMCArMTc2MywxNiBAQCAtICh2b2lkKV9rZXlib2FyZENoYW5n
ZWRXaXRoSW5mbzooTlNEaWN0aW9uYXJ5ICopa2V5Ym9hcmRJbmZvIGFkanVzdFNjcm9sbFZpZXc6
KAogICAgIGVsc2UKICAgICAgICAgX2lucHV0Vmlld0JvdW5kcyA9IFtzZWxmLndpbmRvdyBjb252
ZXJ0UmVjdDpDR1JlY3RJbnRlcnNlY3Rpb24oW2VuZEZyYW1lVmFsdWUgQ0dSZWN0VmFsdWVdLCBz
ZWxmLndpbmRvdy5zY3JlZW4uYm91bmRzKSBmcm9tV2luZG93Om5pbF07CiAKLSAgICBbc2VsZiBf
dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c107Ci0KLSAgICBpZiAoYWRqdXN0U2Nyb2xsVmlldykK
KyAgICBpZiAoYWRqdXN0U2Nyb2xsVmlldykgeworICAgICAgICBDR0Zsb2F0IGJvdHRvbUluc2V0
QmVmb3JlQWRqdXN0bWVudCA9IFtfc2Nyb2xsVmlldyBjb250ZW50SW5zZXRdLmJvdHRvbTsKKyAg
ICAgICAgVGVtcG9yYXJ5Q2hhbmdlPEJPT0w+IGluc2V0QWRqdXN0bWVudEd1YXJkKF9jdXJyZW50
bHlBZGp1c3RpbmdTY3JvbGxWaWV3SW5zZXRzRm9yS2V5Ym9hcmQsIFlFUyk7CiAgICAgICAgIFtf
c2Nyb2xsVmlldyBfYWRqdXN0Rm9yQXV0b21hdGljS2V5Ym9hcmRJbmZvOmtleWJvYXJkSW5mbyBh
bmltYXRlZDpZRVMgbGFzdEFkanVzdG1lbnQ6Jl9sYXN0QWRqdXN0bWVudEZvclNjcm9sbGVyXTsK
KyAgICAgICAgQ0dGbG9hdCBib3R0b21JbnNldEFmdGVyQWRqdXN0bWVudCA9IFtfc2Nyb2xsVmll
dyBjb250ZW50SW5zZXRdLmJvdHRvbTsKKyAgICAgICAgaWYgKGJvdHRvbUluc2V0QmVmb3JlQWRq
dXN0bWVudCAhPSBib3R0b21JbnNldEFmdGVyQWRqdXN0bWVudCkKKyAgICAgICAgICAgIF90b3Rh
bFNjcm9sbFZpZXdCb3R0b21JbnNldEFkanVzdG1lbnRGb3JLZXlib2FyZCArPSBib3R0b21JbnNl
dEFmdGVyQWRqdXN0bWVudCAtIGJvdHRvbUluc2V0QmVmb3JlQWRqdXN0bWVudDsKKyAgICB9CisK
KyAgICBbc2VsZiBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c107CiB9CiAKIC0gKEJPT0wpX3No
b3VsZFVwZGF0ZUtleWJvYXJkV2l0aEluZm86KE5TRGljdGlvbmFyeSAqKWtleWJvYXJkSW5mbwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDM4ZDNjZTcxMzQ3NmI1ZGJiZThiZjZmYmQyNWIzOTYxNTkwMGI2MWEuLjAxOWZhYjRm
NmM4YTQ1NmZkYzUwMGEyODkzM2IwOGE2Yjg2N2U5Y2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxNS0xMC0yOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAg
ICAgICBJbm5lciBoZWlnaHQgYmVoYXZpb3Igd2hlbiB0aGUga2V5Ym9hcmQgaXMgc2hvd24gc2hv
dWxkIG1hdGNoIG9uIFdLV2ViVmlldyBhbmQgTW9iaWxlU2FmYXJpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA2MzQKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzIzMjAyMjU0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRlc3RzIHRoYXQgV0tXZWJWaWV3cyBkbyBub3QgZmlyZSByZXNpemUgZXZlbnRz
IG9yIGNoYW5nZSB3aW5kb3cuaW5uZXJIZWlnaHQgd2hlbiBzaG93aW5nIG9yCisgICAgICAgIGhp
ZGluZyB0aGUga2V5Ym9hcmQuIFRoaXMgYmVoYXZpb3IgaXMgY29uc2lzdGVudCB3aXRoIG1vYmls
ZSBTYWZhcmkuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9pb3Mva2V5Ym9hcmQtc2hvdWxkLW5v
dC10cmlnZ2VyLXJlc2l6ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZl
bnRzL2lvcy9rZXlib2FyZC1zaG91bGQtbm90LXRyaWdnZXItcmVzaXplLmh0bWw6IEFkZGVkLgor
CiAyMDE1LTEwLTI3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIGZpeCBhIGZhaWxpbmcgaU9TIFdLMiB0ZXN0LgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2tleWJvYXJkLXNob3VsZC1ub3QtdHJpZ2dl
ci1yZXNpemUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2tleWJv
YXJkLXNob3VsZC1ub3QtdHJpZ2dlci1yZXNpemUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJl
NGYzOTQ3OTVjZWRlOTA5MzJhNmZhZWFmY2I2OTYxMWFmMDk1NGUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3Mva2V5Ym9hcmQtc2hvdWxkLW5vdC10cmlnZ2Vy
LXJlc2l6ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACisKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorQmVmb3JlIHNob3dpbmcgdGhlIGtleWJv
YXJkLCB3aW5kb3cuaW5uZXJIZWlnaHQgPSA0ODAKK0FmdGVyIHNob3dpbmcgdGhlIGtleWJvYXJk
LCB3aW5kb3cuaW5uZXJIZWlnaHQgPSA0ODAKK0FmdGVyIGhpZGluZyB0aGUga2V5Ym9hcmQsIHdp
bmRvdy5pbm5lckhlaWdodCA9IDQ4MAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9pb3Mva2V5Ym9hcmQtc2hvdWxkLW5vdC10cmlnZ2VyLXJlc2l6ZS5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvaW9zL2tleWJvYXJkLXNob3VsZC1ub3QtdHJpZ2dlci1yZXNpemUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iOTVmZjBhZDJhYWFhMjZjMzIyYzY4NGQwNWE5ZjQ5OWRiYmVhODIy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2tleWJvYXJk
LXNob3VsZC1ub3QtdHJpZ2dlci1yZXNpemUuaHRtbApAQCAtMCwwICsxLDY3IEBACis8IURPQ1RZ
UEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRy
dWUgXSAtLT4KKworPGh0bWw+CisKKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxtZXRhIG5hbWU9InZpZXdw
b3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT1ubyI+CisgICAg
PHNjcmlwdCBpZD0idWktc2NyaXB0IiB0eXBlPSJ0ZXh0L3BsYWluIj4KKyAgICAgICAgKGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgdWlDb250cm9sbGVyLmRpZFNob3dLZXlib2FyZENhbGxiYWNr
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLnR5cGVDaGFyYWN0
ZXJVc2luZ0hhcmR3YXJlS2V5Ym9hcmQoImEiLCBmdW5jdGlvbigpIHsgfSk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICB1aUNvbnRyb2xsZXIuZGlkSGlkZUtleWJvYXJkQ2FsbGJhY2sgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0
ZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdWlDb250cm9sbGVyLnNpbmdsZVRhcEF0
UG9pbnQoNTAsIDI1LCBmdW5jdGlvbigpIHt9KTsKKyAgICAgICAgfSkoKTsKKyAgICA8L3Njcmlw
dD4KKworICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGdldFVJU2Ny
aXB0KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ1aS1zY3JpcHQiKS50ZXh0OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcnVu
VGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJCZWZvcmUgc2hvd2luZyB0aGUg
a2V5Ym9hcmQsIHdpbmRvdy5pbm5lckhlaWdodCA9ICIgKyB3aW5kb3cuaW5uZXJIZWlnaHQpOwor
ICAgICAgICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhdGVzdFJ1bm5lci5ydW5VSVNj
cmlwdCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHdpbmRvdy5vbnJl
c2l6ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJSZWNlaXZlZCB1bmV4
cGVjdGVkIG9ucmVzaXplIGV2ZW50ISB3aW5kb3cuaW5uZXJIZWlnaHQgPSAiICsgd2luZG93Lmlu
bmVySGVpZ2h0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5V
SVNjcmlwdChnZXRVSVNjcmlwdCgpLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgICAgICAg
ICBkZWJ1ZygiQWZ0ZXIgaGlkaW5nIHRoZSBrZXlib2FyZCwgd2luZG93LmlubmVySGVpZ2h0ID0g
IiArIHdpbmRvdy5pbm5lckhlaWdodCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGhhbmRsZUlucHV0KCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIkFmdGVyIHNob3dp
bmcgdGhlIGtleWJvYXJkLCB3aW5kb3cuaW5uZXJIZWlnaHQgPSAiICsgd2luZG93LmlubmVySGVp
Z2h0KTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0ZmllbGQiKS5i
bHVyKCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKyAgICA8c3R5bGU+CisgICAgaW5wdXQg
eworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogNTBweDsKKyAgICB9Cisg
ICAgPC9zdHlsZT4KKzwvaGVhZD4KKworPGJvZHkgc3R5bGU9Im1hcmdpbjogMDsiIG9ubG9hZD0i
cnVuVGVzdCgpIj4KKyAgICA8aW5wdXQgaWQ9InRleHRmaWVsZCIgc3R5bGU9IndpZHRoOiAxMDBw
eDsgaGVpZ2h0OiA1MHB4OyIgb25pbnB1dD0iaGFuZGxlSW5wdXQoKSI+CisgICAgPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorCis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="289526"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>