<?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>146953</bug_id>
          
          <creation_ts>2015-07-14 17:15:09 -0700</creation_ts>
          <short_desc>Negative scroll snap repeat values cause web process to hang indefinitely</short_desc>
          <delta_ts>2015-07-15 09:03:57 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1109526</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-07-14 17:15:09 -0700</bug_when>
    <thetext>Setting -webkit-scroll-snap-points-x or -y to repeat(-n) causes the web process to hang when computing snap offsets. Simon and I have agreed that the appropriate way to fix this is to not consider negative repeat values as valid in our CSS parser, and also min-threshold the parsed repeat value to 1px to prevent cases like 0.000001px from causing us trouble as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109527</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-07-14 17:17:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/21823681&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109536</commentid>
    <comment_count>2</comment_count>
      <attachid>256816</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-07-14 18:37:48 -0700</bug_when>
    <thetext>Created attachment 256816
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109537</commentid>
    <comment_count>3</comment_count>
      <attachid>256816</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-07-14 18:43:10 -0700</bug_when>
    <thetext>Comment on attachment 256816
Patch

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

&gt; Source/WebCore/page/scrolling/AxisScrollSnapOffsets.cpp:90
&gt; +    LayoutUnit repeatOffset = points ? valueForLength(points-&gt;repeatOffset, viewSize) : LayoutUnit(1.0f);

LayoutUnit(1.0f) should be LayoutUnit::fromPixel(1)

&gt; Source/WebCore/page/scrolling/AxisScrollSnapOffsets.cpp:92
&gt; +    if (repeatOffset.toFloat() &lt; 1.0f)
&gt; +        repeatOffset = LayoutUnit(1.0f);

repeatOffset = std::min&lt;LayoutUnit&gt;(repeatOffset, 1);

&gt; LayoutTests/css3/scroll-snap/scroll-snap-negative-repeat.html:39
&gt; +        &lt;style&gt;
&gt; +            #gallery {
&gt; +                height: 400px;
&gt; +                width: 400px;
&gt; +                overflow-x: hidden;
&gt; +                overflow-y: auto;
&gt; +                -webkit-overflow-scrolling: touch;
&gt; +                -webkit-scroll-snap-type: mandatory;
&gt; +                -webkit-scroll-snap-points-y: repeat(-400px);
&gt; +                margin: 0;
&gt; +                padding: 0;
&gt; +            }
&gt; +
&gt; +            .colorBox {
&gt; +                width: 400px;
&gt; +                height: 400px;
&gt; +            }
&gt; +
&gt; +            #item0 { background-color: red; }
&gt; +            #item1 { background-color: green; }
&gt; +            #item2 { background-color: blue; }
&gt; +            #item3 { background-color: aqua; }
&gt; +            #item4 { background-color: yellow; }
&gt; +            #item5 { background-color: fuchsia; }
&gt; +        &lt;/style&gt;
&gt; +        &lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
&gt; +    &lt;/head&gt;
&gt; +    &lt;body&gt;
&gt; +        &lt;div id=&quot;gallery&quot;&gt;
&gt; +            &lt;div id=&quot;item0&quot; class=&quot;colorBox&quot;&gt;&lt;/div&gt;
&gt; +            &lt;div id=&quot;item1&quot; class=&quot;colorBox&quot;&gt;&lt;/div&gt;
&gt; +            &lt;div id=&quot;item2&quot; class=&quot;colorBox&quot;&gt;&lt;/div&gt;
&gt; +            &lt;div id=&quot;item3&quot; class=&quot;colorBox&quot;&gt;&lt;/div&gt;
&gt; +            &lt;div id=&quot;item4&quot; class=&quot;colorBox&quot;&gt;&lt;/div&gt;
&gt; +            &lt;div id=&quot;item5&quot; class=&quot;colorBox&quot;&gt;&lt;/div&gt;
&gt; +        &lt;/div&gt;

Not sure that any of this is needed. Can&apos;t you just have body { -webkit-scroll-snap-type: mandatory; -webkit-scroll-snap-points-y: repeat(-400px); }

&gt; LayoutTests/css3/scroll-snap/scroll-snap-subpixel-repeat.html:10
&gt; +                -webkit-overflow-scrolling: touch;

Remove this.

&gt; LayoutTests/css3/scroll-snap/scroll-snap-subpixel-repeat.html:34
&gt; +                testRunner.waitUntilDone();

Not sure why the test needs to be async.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109541</commentid>
    <comment_count>4</comment_count>
      <attachid>256816</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-07-14 18:59:59 -0700</bug_when>
    <thetext>Comment on attachment 256816
Patch

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

&gt;&gt; Source/WebCore/page/scrolling/AxisScrollSnapOffsets.cpp:90
&gt;&gt; +    LayoutUnit repeatOffset = points ? valueForLength(points-&gt;repeatOffset, viewSize) : LayoutUnit(1.0f);
&gt; 
&gt; LayoutUnit(1.0f) should be LayoutUnit::fromPixel(1)

Fixed!

&gt;&gt; Source/WebCore/page/scrolling/AxisScrollSnapOffsets.cpp:92
&gt;&gt; +        repeatOffset = LayoutUnit(1.0f);
&gt; 
&gt; repeatOffset = std::min&lt;LayoutUnit&gt;(repeatOffset, 1);

Fixed! (I assumed std::min was meant to be std::max?)

&gt;&gt; LayoutTests/css3/scroll-snap/scroll-snap-negative-repeat.html:39
&gt;&gt; +        &lt;/div&gt;
&gt; 
&gt; Not sure that any of this is needed. Can&apos;t you just have body { -webkit-scroll-snap-type: mandatory; -webkit-scroll-snap-points-y: repeat(-400px); }

Good point -- fixed!

&gt;&gt; LayoutTests/css3/scroll-snap/scroll-snap-subpixel-repeat.html:10
&gt;&gt; +                -webkit-overflow-scrolling: touch;
&gt; 
&gt; Remove this.

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109542</commentid>
    <comment_count>5</comment_count>
      <attachid>256818</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-07-14 19:01:34 -0700</bug_when>
    <thetext>Created attachment 256818
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109545</commentid>
    <comment_count>6</comment_count>
      <attachid>256818</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-07-14 19:09:07 -0700</bug_when>
    <thetext>Comment on attachment 256818
Patch

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

&gt; LayoutTests/css3/scroll-snap/scroll-snap-negative-repeat.html:20
&gt; +            #item0 { background-color: red; }
&gt; +            #item1 { background-color: green; }
&gt; +            #item2 { background-color: blue; }
&gt; +            #item3 { background-color: aqua; }
&gt; +            #item4 { background-color: yellow; }
&gt; +            #item5 { background-color: fuchsia; }

Not needed.

&gt; LayoutTests/css3/scroll-snap/scroll-snap-negative-repeat.html:30
&gt; +        &lt;div id=&quot;item0&quot; class=&quot;colorBox&quot;&gt;&lt;/div&gt;
&gt; +        &lt;div id=&quot;item1&quot; class=&quot;colorBox&quot;&gt;&lt;/div&gt;
&gt; +        &lt;div id=&quot;item2&quot; class=&quot;colorBox&quot;&gt;&lt;/div&gt;
&gt; +        &lt;div id=&quot;item3&quot; class=&quot;colorBox&quot;&gt;&lt;/div&gt;
&gt; +        &lt;div id=&quot;item4&quot; class=&quot;colorBox&quot;&gt;&lt;/div&gt;
&gt; +        &lt;div id=&quot;item5&quot; class=&quot;colorBox&quot;&gt;&lt;/div&gt;

You still don&apos;t need these.

&gt; LayoutTests/css3/scroll-snap/scroll-snap-subpixel-repeat.html:56
&gt; +                finishJSTest();
&gt; +                testRunner.notifyDone();

finishJSTest calls notifyDone for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109561</commentid>
    <comment_count>7</comment_count>
      <attachid>256818</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-07-14 21:17:39 -0700</bug_when>
    <thetext>Comment on attachment 256818
Patch

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

&gt;&gt; LayoutTests/css3/scroll-snap/scroll-snap-negative-repeat.html:20
&gt;&gt; +            #item5 { background-color: fuchsia; }
&gt; 
&gt; Not needed.

I left these in because the length of the scrollable content must be greater than the length of the viewport in order to trigger the code path that computes scroll snap offsets (otherwise, the while loop that causes the infinite loop won&apos;t be run and the test will pass even without this patch). However, I can make this a bit simpler -- instead of 6 elements, I can just have one really long one.

&gt;&gt; LayoutTests/css3/scroll-snap/scroll-snap-negative-repeat.html:30
&gt;&gt; +        &lt;div id=&quot;item5&quot; class=&quot;colorBox&quot;&gt;&lt;/div&gt;
&gt; 
&gt; You still don&apos;t need these.

Good point -- took out the colors.

&gt;&gt; LayoutTests/css3/scroll-snap/scroll-snap-subpixel-repeat.html:56
&gt;&gt; +                testRunner.notifyDone();
&gt; 
&gt; finishJSTest calls notifyDone for you.

Got it. I&apos;ll remember that for next time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109563</commentid>
    <comment_count>8</comment_count>
      <attachid>256823</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-07-14 21:20:46 -0700</bug_when>
    <thetext>Created attachment 256823
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109566</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-07-14 21:38:09 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 256818 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=256818&amp;action=review
&gt; 
&gt; &gt;&gt; LayoutTests/css3/scroll-snap/scroll-snap-negative-repeat.html:20
&gt; &gt;&gt; +            #item5 { background-color: fuchsia; }
&gt; &gt; 
&gt; &gt; Not needed.

Just put a height on the body in CSS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109622</commentid>
    <comment_count>10</comment_count>
      <attachid>256837</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-07-15 07:02:54 -0700</bug_when>
    <thetext>Created attachment 256837
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109635</commentid>
    <comment_count>11</comment_count>
      <attachid>256837</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-15 09:03:52 -0700</bug_when>
    <thetext>Comment on attachment 256837
Patch

Clearing flags on attachment: 256837

Committed r186840: &lt;http://trac.webkit.org/changeset/186840&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109636</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-15 09:03:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256816</attachid>
            <date>2015-07-14 18:37:48 -0700</date>
            <delta_ts>2015-07-14 19:01:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146953-20150714183641.patch</filename>
            <type>text/plain</type>
            <size>10750</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Q3ZjU2YTk2NmYzMTE3
OWExYTQ2ZTc0ZDVmNGJkOWUwYzA1ZTlkMi4uZTllZmRjNDA0OTBhMWI2MDFmZDI2Y2RhMGZhNTNh
YjQyNDU3ODY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE1LTA3LTE0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIE5lZ2F0aXZlIHNj
cm9sbCBzbmFwIHJlcGVhdCB2YWx1ZXMgY2F1c2Ugd2ViIHByb2Nlc3MgdG8gaGFuZyBpbmRlZmlu
aXRlbHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
Njk1MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjE4MjM2ODE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4ZWQgZGFuZ2Vyb3VzIGJlaGF2aW9y
IGNhdXNlZCBieSBzZXR0aW5nIC1zY3JvbGwtc25hcC1wb2ludHMteCBvciAteSB0byBuZWdhdGl2
ZSBvciB2ZXJ5IHNtYWxsCisgICAgICAgIHBvc2l0aXZlIHZhbHVlcy4gSW4gdGhlIGNhc2Ugb2Yg
bmVnYXRpdmUgb3IgMCByZXBlYXRzLCB0aGUgd2ViIHByb2Nlc3Mgd291bGQgaGFuZyBpbmRlZmlu
aXRlbHkuIEluCisgICAgICAgIHRoZSBjYXNlIG9mIHZlcnkgc21hbGwgcG9zaXRpdmUgdmFsdWVz
LCBhIG1hc3NpdmUgYW1vdW50IG9mIG1lbW9yeSBjb3VsZCBwb3RlbnRpYWxseSBiZSBhbGxvY2F0
ZWQKKyAgICAgICAganVzdCB0byBzdG9yZSBzbmFwIG9mZnNldHMuCisKKyAgICAgICAgVGVzdHM6
IGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbmVnYXRpdmUtcmVwZWF0Lmh0bWwKKyAgICAg
ICAgICAgICAgIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3VicGl4ZWwtcmVwZWF0Lmh0
bWwKKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpwYXJzZU5vbkVsZW1lbnRTbmFwUG9pbnRzKTogQ2hhbmdlZCB0byBjb25zaWRlciBu
ZWdhdGl2ZSBzbmFwIHJlcGVhdCB2YWx1ZXMgYXMgaW52YWxpZCBDU1MuCisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnVwZGF0ZUZyb21TdHlsZSk6IENoYW5nZWQgdG8gdGhyZXNob2xkIG5vbi1uZWdhdGl2ZSBzbmFw
IHJlcGVhdCB2YWx1ZXMgdG8gMXB4LgorCiAyMDE1LTA3LTE0ICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHdrUG9wdXBNZW51IGZyb20gV2Vi
Q29yZVN5c3RlbUludGVyZmFjZTsgaXQncyBub3QgY2FsbGVkIGZyb20gV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcAppbmRleCA1OGNhMjdkNzhkNTQxMDEwMjA0NmY4ODkyOGQzMDVhZGVi
MTNlZmQxLi5jYzRjMzhjM2JhZjhiYTg3OGQ2NjQ4NTM0ZjQ2ZTg5NTM3NzI0YmM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMzM5Nyw3ICszMzk3LDcgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlTm9uRWxlbWVudFNuYXBQb2ludHMoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1w
b3J0YW50KQogICAgICAgICAgICAgJiYgdmFsdWUtPmZ1bmN0aW9uLT5hcmdzLT5zaXplKCkgPT0g
MQogICAgICAgICAgICAgJiYgZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUtPmZ1bmN0aW9uLT5uYW1l
LCAicmVwZWF0KCIpKSB7CiAgICAgICAgICAgICBWYWx1ZVdpdGhDYWxjdWxhdGlvbiBhcmd1bWVu
dFdpdGhDYWxjdWxhdGlvbigqdmFsdWUtPmZ1bmN0aW9uLT5hcmdzLmdldCgpLT5jdXJyZW50KCkp
OwotICAgICAgICAgICAgaWYgKHZhbGlkYXRlVW5pdChhcmd1bWVudFdpdGhDYWxjdWxhdGlvbiwg
Rkxlbmd0aCB8IEZQZXJjZW50KSkgeworICAgICAgICAgICAgaWYgKHZhbGlkYXRlVW5pdChhcmd1
bWVudFdpdGhDYWxjdWxhdGlvbiwgRkxlbmd0aCB8IEZQZXJjZW50IHwgRk5vbk5lZykpIHsKICAg
ICAgICAgICAgICAgICB2YWx1ZXMtPmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShM
ZW5ndGhSZXBlYXQ6OmNyZWF0ZShjcmVhdGVQcmltaXRpdmVOdW1lcmljVmFsdWUoYXJndW1lbnRX
aXRoQ2FsY3VsYXRpb24pKSkpOwogICAgICAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7
CiAgICAgICAgICAgICAgICAgaWYgKG1fdmFsdWVMaXN0LT5jdXJyZW50KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNw
cAppbmRleCBlZTkwY2NjODM0YTZmNTYyMjMxMTU2Y2QwZjlhZWFjYmJhYTk2MDRiLi44NzFiMDRk
YmU2MGVmYzBhMmYwNmI3YmYwNjY1NGRlOWY4OTk2N2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHAKQEAgLTg3
LDcgKzg3LDEwIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUZyb21TdHlsZShWZWN0b3I8TGF5b3V0VW5p
dD4mIHNuYXBPZmZzZXRzLCBjb25zdCBSZW5kZXJTdHlsZSYKIAogICAgIGF1dG8qIHBvaW50cyA9
IChheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCkgPyBzdHlsZS5zY3JvbGxTbmFw
UG9pbnRzWCgpIDogc3R5bGUuc2Nyb2xsU25hcFBvaW50c1koKTsKICAgICBib29sIGhhc1JlcGVh
dCA9IHBvaW50cyA/IHBvaW50cy0+aGFzUmVwZWF0IDogZmFsc2U7Ci0gICAgTGF5b3V0VW5pdCBy
ZXBlYXRPZmZzZXQgPSBwb2ludHMgPyB2YWx1ZUZvckxlbmd0aChwb2ludHMtPnJlcGVhdE9mZnNl
dCwgdmlld1NpemUpIDogTGF5b3V0VW5pdCgpOworICAgIExheW91dFVuaXQgcmVwZWF0T2Zmc2V0
ID0gcG9pbnRzID8gdmFsdWVGb3JMZW5ndGgocG9pbnRzLT5yZXBlYXRPZmZzZXQsIHZpZXdTaXpl
KSA6IExheW91dFVuaXQoMS4wZik7CisgICAgaWYgKHJlcGVhdE9mZnNldC50b0Zsb2F0KCkgPCAx
LjBmKQorICAgICAgICByZXBlYXRPZmZzZXQgPSBMYXlvdXRVbml0KDEuMGYpOworICAgIAogICAg
IExheW91dFVuaXQgZGVzdGluYXRpb25PZmZzZXQgPSBkZXN0aW5hdGlvbk9mZnNldEZvclZpZXdT
aXplKGF4aXMsIHN0eWxlLnNjcm9sbFNuYXBEZXN0aW5hdGlvbigpLCB2aWV3U2l6ZSk7CiAgICAg
TGF5b3V0VW5pdCBjdXJTbmFwUG9zaXRpb25TaGlmdCA9IDA7CiAgICAgTGF5b3V0VW5pdCBtYXhT
Y3JvbGxPZmZzZXQgPSBzY3JvbGxTaXplIC0gdmlld1NpemU7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjE4MDIyZjZlYmEx
OGM5ODJjYzZmMmUyN2M2OTFlZGI5OWFiOTQ5NC4uMDE0NGU5NWY0OWRmNjdkNjQ0MWJhM2RiMWFh
NDU0ZjM5OGNhN2Y0YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE1LTA3LTE0ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIE5lZ2F0aXZlIHNjcm9s
bCBzbmFwIHJlcGVhdCB2YWx1ZXMgY2F1c2Ugd2ViIHByb2Nlc3MgdG8gaGFuZyBpbmRlZmluaXRl
bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Njk1
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBm
aXJzdCB0ZXN0IGNhc2UgY2hlY2tzIHRoYXQgc2V0dGluZyAtc2Nyb2xsLXNuYXAtcG9pbnRzLXgg
b3IgLXkgdG8gYSBuZWdhdGl2ZSB2YWx1ZQorICAgICAgICB3aWxsIG5vdCBjYXVzZSB0aGUgd2Vi
IHByb2Nlc3MgdG8gaGFuZy4gVGhlIHNlY29uZCB0ZXN0IGNhc2UgKGluIGEgc2ltaWxhciB2ZWlu
KSBjaGVja3MKKyAgICAgICAgdGhhdCB0aW55IHN1YnBpeGVsIHNuYXAgcmVwZWF0cyBnZW5lcmF0
ZSBhIHJlYXNvbmFibGUgbnVtYmVyIG9mIHNuYXAgb2Zmc2V0cy4KKworICAgICAgICAqIGNzczMv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbmVnYXRpdmUtcmVwZWF0LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1uZWdhdGl2ZS1yZXBl
YXQuaHRtbDogQWRkZWQuCisgICAgICAgICogY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1z
dWJwaXhlbC1yZXBlYXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLXN1YnBpeGVsLXJlcGVhdC5odG1sOiBBZGRlZC4KKwogMjAxNS0w
Ny0xNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE4NjgwOS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbmVnYXRpdmUtcmVwZWF0LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbmVnYXRpdmUtcmVw
ZWF0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzhkYzc2OWFlMWJjZDc2MGU5ZGZiNjliZTcx
Zjg4OWViZGVjZWU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1uZWdhdGl2ZS1yZXBlYXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
OSBAQAorVGVzdHMgdGhhdCBuZWdhdGl2ZSByZXBlYXQoKSB2YWx1ZXMgZG9uJ3QgaGFuZyBvbiBz
bmFwIHBvaW50IGNvbXB1dGF0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbmVnYXRpdmUt
cmVwZWF0Lmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW5l
Z2F0aXZlLXJlcGVhdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzN2FjMDQ1MDY3ZDQzYThlZjNlZmNhOWMx
MmJiNzk1NjVhZmM0ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLW5lZ2F0aXZlLXJlcGVhdC5odG1sCkBAIC0wLDAgKzEsNDcgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAg
ICAgICAgICAgICNnYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDQwMHB4OworICAg
ICAgICAgICAgICAgIHdpZHRoOiA0MDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAg
ICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CisgICAgICAgICAgICAgICAgLXdl
YmtpdC1zY3JvbGwtc25hcC10eXBlOiBtYW5kYXRvcnk7CisgICAgICAgICAgICAgICAgLXdlYmtp
dC1zY3JvbGwtc25hcC1wb2ludHMteTogcmVwZWF0KC00MDBweCk7CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAwOworICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC5jb2xvckJveCB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDQwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogNDAwcHg7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICNpdGVtMCB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgfQorICAgICAgICAgICAgI2l0ZW0x
IHsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IH0KKyAgICAgICAgICAgICNpdGVtMiB7IGJhY2tn
cm91bmQtY29sb3I6IGJsdWU7IH0KKyAgICAgICAgICAgICNpdGVtMyB7IGJhY2tncm91bmQtY29s
b3I6IGFxdWE7IH0KKyAgICAgICAgICAgICNpdGVtNCB7IGJhY2tncm91bmQtY29sb3I6IHllbGxv
dzsgfQorICAgICAgICAgICAgI2l0ZW01IHsgYmFja2dyb3VuZC1jb2xvcjogZnVjaHNpYTsgfQor
ICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAg
IDxkaXYgaWQ9ImdhbGxlcnkiPgorICAgICAgICAgICAgPGRpdiBpZD0iaXRlbTAiIGNsYXNzPSJj
b2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtMSIgY2xhc3M9ImNvbG9y
Qm94Ij48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW0yIiBjbGFzcz0iY29sb3JCb3gi
PjwvZGl2PgorICAgICAgICAgICAgPGRpdiBpZD0iaXRlbTMiIGNsYXNzPSJjb2xvckJveCI+PC9k
aXY+CisgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtNCIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4K
KyAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW01IiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAg
ICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDxz
Y3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IG5lZ2F0aXZlIHJlcGVhdCgp
IHZhbHVlcyBkb24ndCBoYW5nIG9uIHNuYXAgcG9pbnQgY29tcHV0YXRpb24uIik7CisgICAgICAg
IDwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN1YnBpeGVsLXJlcGVhdC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN1
YnBpeGVsLXJlcGVhdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFmYmJiNDdmODViNDU1ZGFk
ZWJmMGZlMGU5MTE1OTI4NTIyZjZhNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nz
czMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3VicGl4ZWwtcmVwZWF0LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDEzIEBACitUZXN0cyB0aGF0IHNtYWxsIHBvc2l0aXZlIHJlcGVhdCgpIHZhbHVl
cyBnZW5lcmF0ZXMgYSByZWFzb25hYmxlIG51bWJlciBvZiBzbmFwIG9mZnNldHMuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKK051bWJlciBvZiBzbmFwIG9mZnNldHM6IDk5CitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zdWJwaXhlbC1yZXBlYXQuaHRt
bCBiL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3VicGl4ZWwtcmVw
ZWF0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRmMWExMzk2ODhiMzZlMjM3NzgzYjFmMjc4OTI3MWEwZTNi
MmU1MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtc3VicGl4ZWwtcmVwZWF0Lmh0bWwKQEAgLTAsMCArMSw3NCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAg
I2dhbGxlcnkgeworICAgICAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDEwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIC13ZWJraXQt
b3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKKyAgICAgICAgICAgICAgICAtd2Via2l0LXNjcm9s
bC1zbmFwLXR5cGU6IG1hbmRhdG9yeTsKKyAgICAgICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1z
bmFwLXBvaW50cy15OiByZXBlYXQoMC4wMDAxcHgpOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MDsKKyAgICAgICAgICAgICAgICBwYWRkaW5nOiAwOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAuY29sb3JCb3ggeworICAgICAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjaXRl
bTAgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IH0KKyAgICAgICAgICAgICNpdGVtMSB7IGJhY2tn
cm91bmQtY29sb3I6IGdyZWVuOyB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGdhbGxlcnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ2FsbGVyeSIpOworCisg
ICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChkdW1wU25hcE9mZnNldHMsIDApOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzbmFwT2Zmc2V0c0Zyb21TdHJpbmcob2Zmc2V0
c0FzU3RyaW5nKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBzdGFydEluZGV4
ID0gb2Zmc2V0c0FzU3RyaW5nLnNlYXJjaCgvXHsvKTsKKyAgICAgICAgICAgICAgICB2YXIgZW5k
SW5kZXggPSBvZmZzZXRzQXNTdHJpbmcuc2VhcmNoKC9cfS8pOworICAgICAgICAgICAgICAgIGlm
IChzdGFydEluZGV4ID09IC0xIHx8IGVuZEluZGV4ID09IC0xIHx8IGVuZEluZGV4IDw9IHN0YXJ0
SW5kZXgpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXQorCisgICAgICAgICAgICAgICAg
cmV0dXJuIG9mZnNldHNBc1N0cmluZworICAgICAgICAgICAgICAgICAgICAuc3Vic3RyaW5nKHN0
YXJ0SW5kZXggKyAxLCBlbmRJbmRleCAtIHN0YXJ0SW5kZXggLSAxKQorICAgICAgICAgICAgICAg
ICAgICAudHJpbSgpCisgICAgICAgICAgICAgICAgICAgIC5zcGxpdCgiLCIpCisgICAgICAgICAg
ICAgICAgICAgIC5tYXAoZnVuY3Rpb24ocykgeyByZXR1cm4gcGFyc2VGbG9hdChzLnRyaW0oKSkg
fSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGR1bXBTbmFwT2Zmc2V0
cygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIG9mZnNldHMgPSBzbmFwT2Zm
c2V0c0Zyb21TdHJpbmcod2luZG93LmludGVybmFscy5zY3JvbGxTbmFwT2Zmc2V0cyhnYWxsZXJ5
KSk7CisgICAgICAgICAgICAgICAgZGVidWcoIk51bWJlciBvZiBzbmFwIG9mZnNldHM6ICIgKyBv
ZmZzZXRzLmxlbmd0aCk7CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KKyAgICAgICAgPGRpdiBpZD0iZ2FsbGVyeSI+CisgICAgICAgICAgICA8ZGl2IGlk
PSJpdGVtMCIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgaWQ9Iml0
ZW0xIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0
aW9uKCJUZXN0cyB0aGF0IHNtYWxsIHBvc2l0aXZlIHJlcGVhdCgpIHZhbHVlcyBnZW5lcmF0ZXMg
YSByZWFzb25hYmxlIG51bWJlciBvZiBzbmFwIG9mZnNldHMuIik7CisgICAgICAgIDwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256818</attachid>
            <date>2015-07-14 19:01:34 -0700</date>
            <delta_ts>2015-07-14 21:20:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146953-20150714190026.patch</filename>
            <type>text/plain</type>
            <size>10389</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Q3ZjU2YTk2NmYzMTE3
OWExYTQ2ZTc0ZDVmNGJkOWUwYzA1ZTlkMi4uZTllZmRjNDA0OTBhMWI2MDFmZDI2Y2RhMGZhNTNh
YjQyNDU3ODY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE1LTA3LTE0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIE5lZ2F0aXZlIHNj
cm9sbCBzbmFwIHJlcGVhdCB2YWx1ZXMgY2F1c2Ugd2ViIHByb2Nlc3MgdG8gaGFuZyBpbmRlZmlu
aXRlbHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
Njk1MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjE4MjM2ODE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4ZWQgZGFuZ2Vyb3VzIGJlaGF2aW9y
IGNhdXNlZCBieSBzZXR0aW5nIC1zY3JvbGwtc25hcC1wb2ludHMteCBvciAteSB0byBuZWdhdGl2
ZSBvciB2ZXJ5IHNtYWxsCisgICAgICAgIHBvc2l0aXZlIHZhbHVlcy4gSW4gdGhlIGNhc2Ugb2Yg
bmVnYXRpdmUgb3IgMCByZXBlYXRzLCB0aGUgd2ViIHByb2Nlc3Mgd291bGQgaGFuZyBpbmRlZmlu
aXRlbHkuIEluCisgICAgICAgIHRoZSBjYXNlIG9mIHZlcnkgc21hbGwgcG9zaXRpdmUgdmFsdWVz
LCBhIG1hc3NpdmUgYW1vdW50IG9mIG1lbW9yeSBjb3VsZCBwb3RlbnRpYWxseSBiZSBhbGxvY2F0
ZWQKKyAgICAgICAganVzdCB0byBzdG9yZSBzbmFwIG9mZnNldHMuCisKKyAgICAgICAgVGVzdHM6
IGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbmVnYXRpdmUtcmVwZWF0Lmh0bWwKKyAgICAg
ICAgICAgICAgIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3VicGl4ZWwtcmVwZWF0Lmh0
bWwKKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpwYXJzZU5vbkVsZW1lbnRTbmFwUG9pbnRzKTogQ2hhbmdlZCB0byBjb25zaWRlciBu
ZWdhdGl2ZSBzbmFwIHJlcGVhdCB2YWx1ZXMgYXMgaW52YWxpZCBDU1MuCisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnVwZGF0ZUZyb21TdHlsZSk6IENoYW5nZWQgdG8gdGhyZXNob2xkIG5vbi1uZWdhdGl2ZSBzbmFw
IHJlcGVhdCB2YWx1ZXMgdG8gMXB4LgorCiAyMDE1LTA3LTE0ICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHdrUG9wdXBNZW51IGZyb20gV2Vi
Q29yZVN5c3RlbUludGVyZmFjZTsgaXQncyBub3QgY2FsbGVkIGZyb20gV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcAppbmRleCA1OGNhMjdkNzhkNTQxMDEwMjA0NmY4ODkyOGQzMDVhZGVi
MTNlZmQxLi5jYzRjMzhjM2JhZjhiYTg3OGQ2NjQ4NTM0ZjQ2ZTg5NTM3NzI0YmM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMzM5Nyw3ICszMzk3LDcgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlTm9uRWxlbWVudFNuYXBQb2ludHMoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1w
b3J0YW50KQogICAgICAgICAgICAgJiYgdmFsdWUtPmZ1bmN0aW9uLT5hcmdzLT5zaXplKCkgPT0g
MQogICAgICAgICAgICAgJiYgZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUtPmZ1bmN0aW9uLT5uYW1l
LCAicmVwZWF0KCIpKSB7CiAgICAgICAgICAgICBWYWx1ZVdpdGhDYWxjdWxhdGlvbiBhcmd1bWVu
dFdpdGhDYWxjdWxhdGlvbigqdmFsdWUtPmZ1bmN0aW9uLT5hcmdzLmdldCgpLT5jdXJyZW50KCkp
OwotICAgICAgICAgICAgaWYgKHZhbGlkYXRlVW5pdChhcmd1bWVudFdpdGhDYWxjdWxhdGlvbiwg
Rkxlbmd0aCB8IEZQZXJjZW50KSkgeworICAgICAgICAgICAgaWYgKHZhbGlkYXRlVW5pdChhcmd1
bWVudFdpdGhDYWxjdWxhdGlvbiwgRkxlbmd0aCB8IEZQZXJjZW50IHwgRk5vbk5lZykpIHsKICAg
ICAgICAgICAgICAgICB2YWx1ZXMtPmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShM
ZW5ndGhSZXBlYXQ6OmNyZWF0ZShjcmVhdGVQcmltaXRpdmVOdW1lcmljVmFsdWUoYXJndW1lbnRX
aXRoQ2FsY3VsYXRpb24pKSkpOwogICAgICAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7
CiAgICAgICAgICAgICAgICAgaWYgKG1fdmFsdWVMaXN0LT5jdXJyZW50KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNw
cAppbmRleCBlZTkwY2NjODM0YTZmNTYyMjMxMTU2Y2QwZjlhZWFjYmJhYTk2MDRiLi5mNmQ0YTQw
ZmFjM2Q1NDAwMmUwYWQyOWUzNzU0MDEyMGQzYmY2OTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHAKQEAgLTg3
LDcgKzg3LDkgQEAgc3RhdGljIHZvaWQgdXBkYXRlRnJvbVN0eWxlKFZlY3RvcjxMYXlvdXRVbml0
PiYgc25hcE9mZnNldHMsIGNvbnN0IFJlbmRlclN0eWxlJgogCiAgICAgYXV0byogcG9pbnRzID0g
KGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKSA/IHN0eWxlLnNjcm9sbFNuYXBQ
b2ludHNYKCkgOiBzdHlsZS5zY3JvbGxTbmFwUG9pbnRzWSgpOwogICAgIGJvb2wgaGFzUmVwZWF0
ID0gcG9pbnRzID8gcG9pbnRzLT5oYXNSZXBlYXQgOiBmYWxzZTsKLSAgICBMYXlvdXRVbml0IHJl
cGVhdE9mZnNldCA9IHBvaW50cyA/IHZhbHVlRm9yTGVuZ3RoKHBvaW50cy0+cmVwZWF0T2Zmc2V0
LCB2aWV3U2l6ZSkgOiBMYXlvdXRVbml0KCk7CisgICAgTGF5b3V0VW5pdCByZXBlYXRPZmZzZXQg
PSBwb2ludHMgPyB2YWx1ZUZvckxlbmd0aChwb2ludHMtPnJlcGVhdE9mZnNldCwgdmlld1NpemUp
IDogTGF5b3V0VW5pdDo6ZnJvbVBpeGVsKDEpOworICAgIHJlcGVhdE9mZnNldCA9IHN0ZDo6bWF4
PExheW91dFVuaXQ+KHJlcGVhdE9mZnNldCwgTGF5b3V0VW5pdDo6ZnJvbVBpeGVsKDEpKTsKKyAg
ICAKICAgICBMYXlvdXRVbml0IGRlc3RpbmF0aW9uT2Zmc2V0ID0gZGVzdGluYXRpb25PZmZzZXRG
b3JWaWV3U2l6ZShheGlzLCBzdHlsZS5zY3JvbGxTbmFwRGVzdGluYXRpb24oKSwgdmlld1NpemUp
OwogICAgIExheW91dFVuaXQgY3VyU25hcFBvc2l0aW9uU2hpZnQgPSAwOwogICAgIExheW91dFVu
aXQgbWF4U2Nyb2xsT2Zmc2V0ID0gc2Nyb2xsU2l6ZSAtIHZpZXdTaXplOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDIxODAy
MmY2ZWJhMThjOTgyY2M2ZjJlMjdjNjkxZWRiOTlhYjk0OTQuLjAxNDRlOTVmNDlkZjY3ZDY0NDFi
YTNkYjFhYTQ1NGYzOThjYTdmNGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNS0wNy0xNCAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBOZWdhdGl2
ZSBzY3JvbGwgc25hcCByZXBlYXQgdmFsdWVzIGNhdXNlIHdlYiBwcm9jZXNzIHRvIGhhbmcgaW5k
ZWZpbml0ZWx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDY5NTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGUgZmlyc3QgdGVzdCBjYXNlIGNoZWNrcyB0aGF0IHNldHRpbmcgLXNjcm9sbC1zbmFwLXBv
aW50cy14IG9yIC15IHRvIGEgbmVnYXRpdmUgdmFsdWUKKyAgICAgICAgd2lsbCBub3QgY2F1c2Ug
dGhlIHdlYiBwcm9jZXNzIHRvIGhhbmcuIFRoZSBzZWNvbmQgdGVzdCBjYXNlIChpbiBhIHNpbWls
YXIgdmVpbikgY2hlY2tzCisgICAgICAgIHRoYXQgdGlueSBzdWJwaXhlbCBzbmFwIHJlcGVhdHMg
Z2VuZXJhdGUgYSByZWFzb25hYmxlIG51bWJlciBvZiBzbmFwIG9mZnNldHMuCisKKyAgICAgICAg
KiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW5lZ2F0aXZlLXJlcGVhdC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbmVnYXRp
dmUtcmVwZWF0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtc3VicGl4ZWwtcmVwZWF0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3Nz
My9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zdWJwaXhlbC1yZXBlYXQuaHRtbDogQWRkZWQuCisK
IDIwMTUtMDctMTQgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxODY4MDkuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW5lZ2F0aXZlLXJlcGVhdC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW5lZ2F0
aXZlLXJlcGVhdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmM4ZGM3NjlhZTFiY2Q3NjBlOWRm
YjY5YmU3MWY4ODllYmRlY2VlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbmVnYXRpdmUtcmVwZWF0LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDkgQEAKK1Rlc3RzIHRoYXQgbmVnYXRpdmUgcmVwZWF0KCkgdmFsdWVzIGRvbid0IGhh
bmcgb24gc25hcCBwb2ludCBjb21wdXRhdGlvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW5l
Z2F0aXZlLXJlcGVhdC5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1uZWdhdGl2ZS1yZXBlYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjhmOWQ1NzVkZDZhZGMwOWZj
NmE3ZTQ4MWE4ZWE3YzgxOWQzMGZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3Nz
My9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1uZWdhdGl2ZS1yZXBlYXQuaHRtbApAQCAtMCwwICsx
LDM4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5
bGU+CisgICAgICAgICAgICBib2R5IHsKKyAgICAgICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1z
bmFwLXR5cGU6IG1hbmRhdG9yeTsKKyAgICAgICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1zbmFw
LXBvaW50cy15OiByZXBlYXQoLTQwMHB4KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
LmNvbG9yQm94IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogNDAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiA4MDBweDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgI2l0ZW0wIHsg
YmFja2dyb3VuZC1jb2xvcjogcmVkOyB9CisgICAgICAgICAgICAjaXRlbTEgeyBiYWNrZ3JvdW5k
LWNvbG9yOiBncmVlbjsgfQorICAgICAgICAgICAgI2l0ZW0yIHsgYmFja2dyb3VuZC1jb2xvcjog
Ymx1ZTsgfQorICAgICAgICAgICAgI2l0ZW0zIHsgYmFja2dyb3VuZC1jb2xvcjogYXF1YTsgfQor
ICAgICAgICAgICAgI2l0ZW00IHsgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OyB9CisgICAgICAg
ICAgICAjaXRlbTUgeyBiYWNrZ3JvdW5kLWNvbG9yOiBmdWNoc2lhOyB9CisgICAgICAgIDwvc3R5
bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPGRpdiBpZD0iaXRl
bTAiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgIDxkaXYgaWQ9Iml0ZW0xIiBjbGFz
cz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICA8ZGl2IGlkPSJpdGVtMiIgY2xhc3M9ImNvbG9y
Qm94Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0iaXRlbTMiIGNsYXNzPSJjb2xvckJveCI+PC9k
aXY+CisgICAgICAgIDxkaXYgaWQ9Iml0ZW00IiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAg
ICAgICA8ZGl2IGlkPSJpdGVtNSIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0
aW9uKCJUZXN0cyB0aGF0IG5lZ2F0aXZlIHJlcGVhdCgpIHZhbHVlcyBkb24ndCBoYW5nIG9uIHNu
YXAgcG9pbnQgY29tcHV0YXRpb24uIik7CisgICAgICAgIDwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisgICAg
PC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLXN1YnBpeGVsLXJlcGVhdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN1YnBpeGVsLXJlcGVhdC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOGFmYmJiNDdmODViNDU1ZGFkZWJmMGZlMGU5MTE1OTI4NTIyZjZhNwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtc3VicGl4ZWwtcmVwZWF0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUZXN0cyB0
aGF0IHNtYWxsIHBvc2l0aXZlIHJlcGVhdCgpIHZhbHVlcyBnZW5lcmF0ZXMgYSByZWFzb25hYmxl
IG51bWJlciBvZiBzbmFwIG9mZnNldHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK051bWJl
ciBvZiBzbmFwIG9mZnNldHM6IDk5CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1zdWJwaXhlbC1yZXBlYXQuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3VicGl4ZWwtcmVwZWF0Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODIx
MGQ3NGUxYTY0YjFhZDg0OGE2ZDE5NDIwZjg2YTc0YzMzOWZlMwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3VicGl4ZWwtcmVwZWF0
Lmh0bWwKQEAgLTAsMCArMSw3MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgI2dhbGxlcnkgeworICAgICAgICAgICAg
ICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgICAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBhdXRvOworICAgICAgICAgICAgICAgIC13ZWJraXQtc2Nyb2xsLXNuYXAtdHlwZTogbWFuZGF0
b3J5OworICAgICAgICAgICAgICAgIC13ZWJraXQtc2Nyb2xsLXNuYXAtcG9pbnRzLXk6IHJlcGVh
dCgwLjAwMDFweCk7CisgICAgICAgICAgICAgICAgbWFyZ2luOiAwOworICAgICAgICAgICAgICAg
IHBhZGRpbmc6IDA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC5jb2xvckJveCB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMTAw
cHg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICNpdGVtMCB7IGJhY2tncm91bmQtY29s
b3I6IHJlZDsgfQorICAgICAgICAgICAgI2l0ZW0xIHsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47
IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1
bmN0aW9uIHJ1blRlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgZ2FsbGVyeSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJnYWxsZXJ5Iik7CisKKyAgICAgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGR1bXBTbmFwT2Zmc2V0cywgMCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZ1bmN0aW9uIHNuYXBPZmZzZXRzRnJvbVN0cmluZyhvZmZzZXRzQXNTdHJpbmcpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHN0YXJ0SW5kZXggPSBvZmZzZXRzQXNTdHJpbmcu
c2VhcmNoKC9cey8pOworICAgICAgICAgICAgICAgIHZhciBlbmRJbmRleCA9IG9mZnNldHNBc1N0
cmluZy5zZWFyY2goL1x9Lyk7CisgICAgICAgICAgICAgICAgaWYgKHN0YXJ0SW5kZXggPT0gLTEg
fHwgZW5kSW5kZXggPT0gLTEgfHwgZW5kSW5kZXggPD0gc3RhcnRJbmRleCkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIFtdCisKKyAgICAgICAgICAgICAgICByZXR1cm4gb2Zmc2V0c0FzU3Ry
aW5nCisgICAgICAgICAgICAgICAgICAgIC5zdWJzdHJpbmcoc3RhcnRJbmRleCArIDEsIGVuZElu
ZGV4IC0gc3RhcnRJbmRleCAtIDEpCisgICAgICAgICAgICAgICAgICAgIC50cmltKCkKKyAgICAg
ICAgICAgICAgICAgICAgLnNwbGl0KCIsIikKKyAgICAgICAgICAgICAgICAgICAgLm1hcChmdW5j
dGlvbihzKSB7IHJldHVybiBwYXJzZUZsb2F0KHMudHJpbSgpKSB9KTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgZnVuY3Rpb24gZHVtcFNuYXBPZmZzZXRzKCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICB2YXIgb2Zmc2V0cyA9IHNuYXBPZmZzZXRzRnJvbVN0cmluZyh3aW5k
b3cuaW50ZXJuYWxzLnNjcm9sbFNuYXBPZmZzZXRzKGdhbGxlcnkpKTsKKyAgICAgICAgICAgICAg
ICBkZWJ1ZygiTnVtYmVyIG9mIHNuYXAgb2Zmc2V0czogIiArIG9mZnNldHMubGVuZ3RoKTsKKyAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgICAgICA8
ZGl2IGlkPSJnYWxsZXJ5Ij4KKyAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW0wIiBjbGFzcz0iY29s
b3JCb3giPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBpZD0iaXRlbTEiIGNsYXNzPSJjb2xvckJv
eCI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgc21h
bGwgcG9zaXRpdmUgcmVwZWF0KCkgdmFsdWVzIGdlbmVyYXRlcyBhIHJlYXNvbmFibGUgbnVtYmVy
IG9mIHNuYXAgb2Zmc2V0cy4iKTsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256823</attachid>
            <date>2015-07-14 21:20:46 -0700</date>
            <delta_ts>2015-07-15 07:02:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146953-20150714211940.patch</filename>
            <type>text/plain</type>
            <size>9788</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Q3ZjU2YTk2NmYzMTE3
OWExYTQ2ZTc0ZDVmNGJkOWUwYzA1ZTlkMi4uZTllZmRjNDA0OTBhMWI2MDFmZDI2Y2RhMGZhNTNh
YjQyNDU3ODY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE1LTA3LTE0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIE5lZ2F0aXZlIHNj
cm9sbCBzbmFwIHJlcGVhdCB2YWx1ZXMgY2F1c2Ugd2ViIHByb2Nlc3MgdG8gaGFuZyBpbmRlZmlu
aXRlbHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
Njk1MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjE4MjM2ODE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4ZWQgZGFuZ2Vyb3VzIGJlaGF2aW9y
IGNhdXNlZCBieSBzZXR0aW5nIC1zY3JvbGwtc25hcC1wb2ludHMteCBvciAteSB0byBuZWdhdGl2
ZSBvciB2ZXJ5IHNtYWxsCisgICAgICAgIHBvc2l0aXZlIHZhbHVlcy4gSW4gdGhlIGNhc2Ugb2Yg
bmVnYXRpdmUgb3IgMCByZXBlYXRzLCB0aGUgd2ViIHByb2Nlc3Mgd291bGQgaGFuZyBpbmRlZmlu
aXRlbHkuIEluCisgICAgICAgIHRoZSBjYXNlIG9mIHZlcnkgc21hbGwgcG9zaXRpdmUgdmFsdWVz
LCBhIG1hc3NpdmUgYW1vdW50IG9mIG1lbW9yeSBjb3VsZCBwb3RlbnRpYWxseSBiZSBhbGxvY2F0
ZWQKKyAgICAgICAganVzdCB0byBzdG9yZSBzbmFwIG9mZnNldHMuCisKKyAgICAgICAgVGVzdHM6
IGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbmVnYXRpdmUtcmVwZWF0Lmh0bWwKKyAgICAg
ICAgICAgICAgIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3VicGl4ZWwtcmVwZWF0Lmh0
bWwKKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpwYXJzZU5vbkVsZW1lbnRTbmFwUG9pbnRzKTogQ2hhbmdlZCB0byBjb25zaWRlciBu
ZWdhdGl2ZSBzbmFwIHJlcGVhdCB2YWx1ZXMgYXMgaW52YWxpZCBDU1MuCisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnVwZGF0ZUZyb21TdHlsZSk6IENoYW5nZWQgdG8gdGhyZXNob2xkIG5vbi1uZWdhdGl2ZSBzbmFw
IHJlcGVhdCB2YWx1ZXMgdG8gMXB4LgorCiAyMDE1LTA3LTE0ICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHdrUG9wdXBNZW51IGZyb20gV2Vi
Q29yZVN5c3RlbUludGVyZmFjZTsgaXQncyBub3QgY2FsbGVkIGZyb20gV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcAppbmRleCA1OGNhMjdkNzhkNTQxMDEwMjA0NmY4ODkyOGQzMDVhZGVi
MTNlZmQxLi5jYzRjMzhjM2JhZjhiYTg3OGQ2NjQ4NTM0ZjQ2ZTg5NTM3NzI0YmM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMzM5Nyw3ICszMzk3LDcgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlTm9uRWxlbWVudFNuYXBQb2ludHMoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1w
b3J0YW50KQogICAgICAgICAgICAgJiYgdmFsdWUtPmZ1bmN0aW9uLT5hcmdzLT5zaXplKCkgPT0g
MQogICAgICAgICAgICAgJiYgZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUtPmZ1bmN0aW9uLT5uYW1l
LCAicmVwZWF0KCIpKSB7CiAgICAgICAgICAgICBWYWx1ZVdpdGhDYWxjdWxhdGlvbiBhcmd1bWVu
dFdpdGhDYWxjdWxhdGlvbigqdmFsdWUtPmZ1bmN0aW9uLT5hcmdzLmdldCgpLT5jdXJyZW50KCkp
OwotICAgICAgICAgICAgaWYgKHZhbGlkYXRlVW5pdChhcmd1bWVudFdpdGhDYWxjdWxhdGlvbiwg
Rkxlbmd0aCB8IEZQZXJjZW50KSkgeworICAgICAgICAgICAgaWYgKHZhbGlkYXRlVW5pdChhcmd1
bWVudFdpdGhDYWxjdWxhdGlvbiwgRkxlbmd0aCB8IEZQZXJjZW50IHwgRk5vbk5lZykpIHsKICAg
ICAgICAgICAgICAgICB2YWx1ZXMtPmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShM
ZW5ndGhSZXBlYXQ6OmNyZWF0ZShjcmVhdGVQcmltaXRpdmVOdW1lcmljVmFsdWUoYXJndW1lbnRX
aXRoQ2FsY3VsYXRpb24pKSkpOwogICAgICAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7
CiAgICAgICAgICAgICAgICAgaWYgKG1fdmFsdWVMaXN0LT5jdXJyZW50KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNw
cAppbmRleCBlZTkwY2NjODM0YTZmNTYyMjMxMTU2Y2QwZjlhZWFjYmJhYTk2MDRiLi5mNmQ0YTQw
ZmFjM2Q1NDAwMmUwYWQyOWUzNzU0MDEyMGQzYmY2OTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHAKQEAgLTg3
LDcgKzg3LDkgQEAgc3RhdGljIHZvaWQgdXBkYXRlRnJvbVN0eWxlKFZlY3RvcjxMYXlvdXRVbml0
PiYgc25hcE9mZnNldHMsIGNvbnN0IFJlbmRlclN0eWxlJgogCiAgICAgYXV0byogcG9pbnRzID0g
KGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKSA/IHN0eWxlLnNjcm9sbFNuYXBQ
b2ludHNYKCkgOiBzdHlsZS5zY3JvbGxTbmFwUG9pbnRzWSgpOwogICAgIGJvb2wgaGFzUmVwZWF0
ID0gcG9pbnRzID8gcG9pbnRzLT5oYXNSZXBlYXQgOiBmYWxzZTsKLSAgICBMYXlvdXRVbml0IHJl
cGVhdE9mZnNldCA9IHBvaW50cyA/IHZhbHVlRm9yTGVuZ3RoKHBvaW50cy0+cmVwZWF0T2Zmc2V0
LCB2aWV3U2l6ZSkgOiBMYXlvdXRVbml0KCk7CisgICAgTGF5b3V0VW5pdCByZXBlYXRPZmZzZXQg
PSBwb2ludHMgPyB2YWx1ZUZvckxlbmd0aChwb2ludHMtPnJlcGVhdE9mZnNldCwgdmlld1NpemUp
IDogTGF5b3V0VW5pdDo6ZnJvbVBpeGVsKDEpOworICAgIHJlcGVhdE9mZnNldCA9IHN0ZDo6bWF4
PExheW91dFVuaXQ+KHJlcGVhdE9mZnNldCwgTGF5b3V0VW5pdDo6ZnJvbVBpeGVsKDEpKTsKKyAg
ICAKICAgICBMYXlvdXRVbml0IGRlc3RpbmF0aW9uT2Zmc2V0ID0gZGVzdGluYXRpb25PZmZzZXRG
b3JWaWV3U2l6ZShheGlzLCBzdHlsZS5zY3JvbGxTbmFwRGVzdGluYXRpb24oKSwgdmlld1NpemUp
OwogICAgIExheW91dFVuaXQgY3VyU25hcFBvc2l0aW9uU2hpZnQgPSAwOwogICAgIExheW91dFVu
aXQgbWF4U2Nyb2xsT2Zmc2V0ID0gc2Nyb2xsU2l6ZSAtIHZpZXdTaXplOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDIxODAy
MmY2ZWJhMThjOTgyY2M2ZjJlMjdjNjkxZWRiOTlhYjk0OTQuLjAxNDRlOTVmNDlkZjY3ZDY0NDFi
YTNkYjFhYTQ1NGYzOThjYTdmNGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNS0wNy0xNCAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBOZWdhdGl2
ZSBzY3JvbGwgc25hcCByZXBlYXQgdmFsdWVzIGNhdXNlIHdlYiBwcm9jZXNzIHRvIGhhbmcgaW5k
ZWZpbml0ZWx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDY5NTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGUgZmlyc3QgdGVzdCBjYXNlIGNoZWNrcyB0aGF0IHNldHRpbmcgLXNjcm9sbC1zbmFwLXBv
aW50cy14IG9yIC15IHRvIGEgbmVnYXRpdmUgdmFsdWUKKyAgICAgICAgd2lsbCBub3QgY2F1c2Ug
dGhlIHdlYiBwcm9jZXNzIHRvIGhhbmcuIFRoZSBzZWNvbmQgdGVzdCBjYXNlIChpbiBhIHNpbWls
YXIgdmVpbikgY2hlY2tzCisgICAgICAgIHRoYXQgdGlueSBzdWJwaXhlbCBzbmFwIHJlcGVhdHMg
Z2VuZXJhdGUgYSByZWFzb25hYmxlIG51bWJlciBvZiBzbmFwIG9mZnNldHMuCisKKyAgICAgICAg
KiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW5lZ2F0aXZlLXJlcGVhdC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbmVnYXRp
dmUtcmVwZWF0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtc3VicGl4ZWwtcmVwZWF0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3Nz
My9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zdWJwaXhlbC1yZXBlYXQuaHRtbDogQWRkZWQuCisK
IDIwMTUtMDctMTQgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxODY4MDkuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW5lZ2F0aXZlLXJlcGVhdC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW5lZ2F0
aXZlLXJlcGVhdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmM4ZGM3NjlhZTFiY2Q3NjBlOWRm
YjY5YmU3MWY4ODllYmRlY2VlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbmVnYXRpdmUtcmVwZWF0LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDkgQEAKK1Rlc3RzIHRoYXQgbmVnYXRpdmUgcmVwZWF0KCkgdmFsdWVzIGRvbid0IGhh
bmcgb24gc25hcCBwb2ludCBjb21wdXRhdGlvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW5l
Z2F0aXZlLXJlcGVhdC5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1uZWdhdGl2ZS1yZXBlYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzMxYzg5NGQ2YzcxODEyODdj
Y2MxMmNjZmIwYzQ0ZjU1NGM3Yjk3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3Nz
My9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1uZWdhdGl2ZS1yZXBlYXQuaHRtbApAQCAtMCwwICsx
LDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5
bGU+CisgICAgICAgICAgICBib2R5IHsKKyAgICAgICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1z
bmFwLXR5cGU6IG1hbmRhdG9yeTsKKyAgICAgICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1zbmFw
LXBvaW50cy15OiByZXBlYXQoLTQwMHB4KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
I3ZzcGFjZSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDQwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogNTAwMHB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxkaXYgaWQ9InZzcGFjZSI+PC9kaXY+
CisgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8c2NyaXB0PgorICAg
ICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBuZWdhdGl2ZSByZXBlYXQoKSB2YWx1ZXMgZG9u
J3QgaGFuZyBvbiBzbmFwIHBvaW50IGNvbXB1dGF0aW9uLiIpOworICAgICAgICA8L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Y3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zdWJwaXhlbC1yZXBlYXQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zdWJwaXhlbC1yZXBl
YXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhZmJiYjQ3Zjg1YjQ1NWRhZGViZjBmZTBlOTEx
NTkyODUyMmY2YTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLXN1YnBpeGVsLXJlcGVhdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MyBAQAorVGVzdHMgdGhhdCBzbWFsbCBwb3NpdGl2ZSByZXBlYXQoKSB2YWx1ZXMgZ2VuZXJhdGVz
IGEgcmVhc29uYWJsZSBudW1iZXIgb2Ygc25hcCBvZmZzZXRzLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCitOdW1iZXIgb2Ygc25hcCBvZmZzZXRzOiA5OQorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nz
czMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3VicGl4ZWwtcmVwZWF0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN1YnBpeGVsLXJlcGVhdC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjYxOTA5NDI2ODZiZWI0NDMzOTk0OTI3MDBjZTA0NjM0NTMyNjcxZTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN1
YnBpeGVsLXJlcGVhdC5odG1sCkBAIC0wLDAgKzEsNzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgICNnYWxsZXJ5IHsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICAgICAgICAgIHdpZHRoOiAx
MDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1zbmFw
LXR5cGU6IG1hbmRhdG9yeTsKKyAgICAgICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1zbmFwLXBv
aW50cy15OiByZXBlYXQoMC4wMDAxcHgpOworICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKKyAg
ICAgICAgICAgICAgICBwYWRkaW5nOiAwOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAu
Y29sb3JCb3ggeworICAgICAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDEwMHB4OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjaXRlbTAgeyBi
YWNrZ3JvdW5kLWNvbG9yOiByZWQ7IH0KKyAgICAgICAgICAgICNpdGVtMSB7IGJhY2tncm91bmQt
Y29sb3I6IGdyZWVuOyB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
PgorICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGdhbGxlcnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ2FsbGVyeSIpOworCisgICAgICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICB3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChkdW1wU25hcE9mZnNldHMsIDApOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBmdW5jdGlvbiBzbmFwT2Zmc2V0c0Zyb21TdHJpbmcob2Zmc2V0c0FzU3Ry
aW5nKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBzdGFydEluZGV4ID0gb2Zm
c2V0c0FzU3RyaW5nLnNlYXJjaCgvXHsvKTsKKyAgICAgICAgICAgICAgICB2YXIgZW5kSW5kZXgg
PSBvZmZzZXRzQXNTdHJpbmcuc2VhcmNoKC9cfS8pOworICAgICAgICAgICAgICAgIGlmIChzdGFy
dEluZGV4ID09IC0xIHx8IGVuZEluZGV4ID09IC0xIHx8IGVuZEluZGV4IDw9IHN0YXJ0SW5kZXgp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXQorCisgICAgICAgICAgICAgICAgcmV0dXJu
IG9mZnNldHNBc1N0cmluZworICAgICAgICAgICAgICAgICAgICAuc3Vic3RyaW5nKHN0YXJ0SW5k
ZXggKyAxLCBlbmRJbmRleCAtIHN0YXJ0SW5kZXggLSAxKQorICAgICAgICAgICAgICAgICAgICAu
dHJpbSgpCisgICAgICAgICAgICAgICAgICAgIC5zcGxpdCgiLCIpCisgICAgICAgICAgICAgICAg
ICAgIC5tYXAoZnVuY3Rpb24ocykgeyByZXR1cm4gcGFyc2VGbG9hdChzLnRyaW0oKSkgfSk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGR1bXBTbmFwT2Zmc2V0cygpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIG9mZnNldHMgPSBzbmFwT2Zmc2V0c0Zy
b21TdHJpbmcod2luZG93LmludGVybmFscy5zY3JvbGxTbmFwT2Zmc2V0cyhnYWxsZXJ5KSk7Cisg
ICAgICAgICAgICAgICAgZGVidWcoIk51bWJlciBvZiBzbmFwIG9mZnNldHM6ICIgKyBvZmZzZXRz
Lmxlbmd0aCk7CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9u
bG9hZD0icnVuVGVzdCgpIj4KKyAgICAgICAgPGRpdiBpZD0iZ2FsbGVyeSI+CisgICAgICAgICAg
ICA8ZGl2IGlkPSJpdGVtMCIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgIDxk
aXYgaWQ9Iml0ZW0xIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAg
ICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAg
IGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHNtYWxsIHBvc2l0aXZlIHJlcGVhdCgpIHZhbHVlcyBn
ZW5lcmF0ZXMgYSByZWFzb25hYmxlIG51bWJlciBvZiBzbmFwIG9mZnNldHMuIik7CisgICAgICAg
IDwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256837</attachid>
            <date>2015-07-15 07:02:54 -0700</date>
            <delta_ts>2015-07-15 09:03:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146953-20150715070147.patch</filename>
            <type>text/plain</type>
            <size>9684</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Q3ZjU2YTk2NmYzMTE3
OWExYTQ2ZTc0ZDVmNGJkOWUwYzA1ZTlkMi4uZTllZmRjNDA0OTBhMWI2MDFmZDI2Y2RhMGZhNTNh
YjQyNDU3ODY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE1LTA3LTE0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIE5lZ2F0aXZlIHNj
cm9sbCBzbmFwIHJlcGVhdCB2YWx1ZXMgY2F1c2Ugd2ViIHByb2Nlc3MgdG8gaGFuZyBpbmRlZmlu
aXRlbHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
Njk1MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjE4MjM2ODE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4ZWQgZGFuZ2Vyb3VzIGJlaGF2aW9y
IGNhdXNlZCBieSBzZXR0aW5nIC1zY3JvbGwtc25hcC1wb2ludHMteCBvciAteSB0byBuZWdhdGl2
ZSBvciB2ZXJ5IHNtYWxsCisgICAgICAgIHBvc2l0aXZlIHZhbHVlcy4gSW4gdGhlIGNhc2Ugb2Yg
bmVnYXRpdmUgb3IgMCByZXBlYXRzLCB0aGUgd2ViIHByb2Nlc3Mgd291bGQgaGFuZyBpbmRlZmlu
aXRlbHkuIEluCisgICAgICAgIHRoZSBjYXNlIG9mIHZlcnkgc21hbGwgcG9zaXRpdmUgdmFsdWVz
LCBhIG1hc3NpdmUgYW1vdW50IG9mIG1lbW9yeSBjb3VsZCBwb3RlbnRpYWxseSBiZSBhbGxvY2F0
ZWQKKyAgICAgICAganVzdCB0byBzdG9yZSBzbmFwIG9mZnNldHMuCisKKyAgICAgICAgVGVzdHM6
IGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbmVnYXRpdmUtcmVwZWF0Lmh0bWwKKyAgICAg
ICAgICAgICAgIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3VicGl4ZWwtcmVwZWF0Lmh0
bWwKKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpwYXJzZU5vbkVsZW1lbnRTbmFwUG9pbnRzKTogQ2hhbmdlZCB0byBjb25zaWRlciBu
ZWdhdGl2ZSBzbmFwIHJlcGVhdCB2YWx1ZXMgYXMgaW52YWxpZCBDU1MuCisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnVwZGF0ZUZyb21TdHlsZSk6IENoYW5nZWQgdG8gdGhyZXNob2xkIG5vbi1uZWdhdGl2ZSBzbmFw
IHJlcGVhdCB2YWx1ZXMgdG8gMXB4LgorCiAyMDE1LTA3LTE0ICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHdrUG9wdXBNZW51IGZyb20gV2Vi
Q29yZVN5c3RlbUludGVyZmFjZTsgaXQncyBub3QgY2FsbGVkIGZyb20gV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcAppbmRleCA1OGNhMjdkNzhkNTQxMDEwMjA0NmY4ODkyOGQzMDVhZGVi
MTNlZmQxLi5jYzRjMzhjM2JhZjhiYTg3OGQ2NjQ4NTM0ZjQ2ZTg5NTM3NzI0YmM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMzM5Nyw3ICszMzk3LDcgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlTm9uRWxlbWVudFNuYXBQb2ludHMoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1w
b3J0YW50KQogICAgICAgICAgICAgJiYgdmFsdWUtPmZ1bmN0aW9uLT5hcmdzLT5zaXplKCkgPT0g
MQogICAgICAgICAgICAgJiYgZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUtPmZ1bmN0aW9uLT5uYW1l
LCAicmVwZWF0KCIpKSB7CiAgICAgICAgICAgICBWYWx1ZVdpdGhDYWxjdWxhdGlvbiBhcmd1bWVu
dFdpdGhDYWxjdWxhdGlvbigqdmFsdWUtPmZ1bmN0aW9uLT5hcmdzLmdldCgpLT5jdXJyZW50KCkp
OwotICAgICAgICAgICAgaWYgKHZhbGlkYXRlVW5pdChhcmd1bWVudFdpdGhDYWxjdWxhdGlvbiwg
Rkxlbmd0aCB8IEZQZXJjZW50KSkgeworICAgICAgICAgICAgaWYgKHZhbGlkYXRlVW5pdChhcmd1
bWVudFdpdGhDYWxjdWxhdGlvbiwgRkxlbmd0aCB8IEZQZXJjZW50IHwgRk5vbk5lZykpIHsKICAg
ICAgICAgICAgICAgICB2YWx1ZXMtPmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShM
ZW5ndGhSZXBlYXQ6OmNyZWF0ZShjcmVhdGVQcmltaXRpdmVOdW1lcmljVmFsdWUoYXJndW1lbnRX
aXRoQ2FsY3VsYXRpb24pKSkpOwogICAgICAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7
CiAgICAgICAgICAgICAgICAgaWYgKG1fdmFsdWVMaXN0LT5jdXJyZW50KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNw
cAppbmRleCBlZTkwY2NjODM0YTZmNTYyMjMxMTU2Y2QwZjlhZWFjYmJhYTk2MDRiLi5mNmQ0YTQw
ZmFjM2Q1NDAwMmUwYWQyOWUzNzU0MDEyMGQzYmY2OTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHAKQEAgLTg3
LDcgKzg3LDkgQEAgc3RhdGljIHZvaWQgdXBkYXRlRnJvbVN0eWxlKFZlY3RvcjxMYXlvdXRVbml0
PiYgc25hcE9mZnNldHMsIGNvbnN0IFJlbmRlclN0eWxlJgogCiAgICAgYXV0byogcG9pbnRzID0g
KGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKSA/IHN0eWxlLnNjcm9sbFNuYXBQ
b2ludHNYKCkgOiBzdHlsZS5zY3JvbGxTbmFwUG9pbnRzWSgpOwogICAgIGJvb2wgaGFzUmVwZWF0
ID0gcG9pbnRzID8gcG9pbnRzLT5oYXNSZXBlYXQgOiBmYWxzZTsKLSAgICBMYXlvdXRVbml0IHJl
cGVhdE9mZnNldCA9IHBvaW50cyA/IHZhbHVlRm9yTGVuZ3RoKHBvaW50cy0+cmVwZWF0T2Zmc2V0
LCB2aWV3U2l6ZSkgOiBMYXlvdXRVbml0KCk7CisgICAgTGF5b3V0VW5pdCByZXBlYXRPZmZzZXQg
PSBwb2ludHMgPyB2YWx1ZUZvckxlbmd0aChwb2ludHMtPnJlcGVhdE9mZnNldCwgdmlld1NpemUp
IDogTGF5b3V0VW5pdDo6ZnJvbVBpeGVsKDEpOworICAgIHJlcGVhdE9mZnNldCA9IHN0ZDo6bWF4
PExheW91dFVuaXQ+KHJlcGVhdE9mZnNldCwgTGF5b3V0VW5pdDo6ZnJvbVBpeGVsKDEpKTsKKyAg
ICAKICAgICBMYXlvdXRVbml0IGRlc3RpbmF0aW9uT2Zmc2V0ID0gZGVzdGluYXRpb25PZmZzZXRG
b3JWaWV3U2l6ZShheGlzLCBzdHlsZS5zY3JvbGxTbmFwRGVzdGluYXRpb24oKSwgdmlld1NpemUp
OwogICAgIExheW91dFVuaXQgY3VyU25hcFBvc2l0aW9uU2hpZnQgPSAwOwogICAgIExheW91dFVu
aXQgbWF4U2Nyb2xsT2Zmc2V0ID0gc2Nyb2xsU2l6ZSAtIHZpZXdTaXplOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDIxODAy
MmY2ZWJhMThjOTgyY2M2ZjJlMjdjNjkxZWRiOTlhYjk0OTQuLjAxNDRlOTVmNDlkZjY3ZDY0NDFi
YTNkYjFhYTQ1NGYzOThjYTdmNGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNS0wNy0xNCAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBOZWdhdGl2
ZSBzY3JvbGwgc25hcCByZXBlYXQgdmFsdWVzIGNhdXNlIHdlYiBwcm9jZXNzIHRvIGhhbmcgaW5k
ZWZpbml0ZWx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDY5NTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGUgZmlyc3QgdGVzdCBjYXNlIGNoZWNrcyB0aGF0IHNldHRpbmcgLXNjcm9sbC1zbmFwLXBv
aW50cy14IG9yIC15IHRvIGEgbmVnYXRpdmUgdmFsdWUKKyAgICAgICAgd2lsbCBub3QgY2F1c2Ug
dGhlIHdlYiBwcm9jZXNzIHRvIGhhbmcuIFRoZSBzZWNvbmQgdGVzdCBjYXNlIChpbiBhIHNpbWls
YXIgdmVpbikgY2hlY2tzCisgICAgICAgIHRoYXQgdGlueSBzdWJwaXhlbCBzbmFwIHJlcGVhdHMg
Z2VuZXJhdGUgYSByZWFzb25hYmxlIG51bWJlciBvZiBzbmFwIG9mZnNldHMuCisKKyAgICAgICAg
KiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW5lZ2F0aXZlLXJlcGVhdC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbmVnYXRp
dmUtcmVwZWF0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtc3VicGl4ZWwtcmVwZWF0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3Nz
My9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zdWJwaXhlbC1yZXBlYXQuaHRtbDogQWRkZWQuCisK
IDIwMTUtMDctMTQgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxODY4MDkuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW5lZ2F0aXZlLXJlcGVhdC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW5lZ2F0
aXZlLXJlcGVhdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmM4ZGM3NjlhZTFiY2Q3NjBlOWRm
YjY5YmU3MWY4ODllYmRlY2VlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbmVnYXRpdmUtcmVwZWF0LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDkgQEAKK1Rlc3RzIHRoYXQgbmVnYXRpdmUgcmVwZWF0KCkgdmFsdWVzIGRvbid0IGhh
bmcgb24gc25hcCBwb2ludCBjb21wdXRhdGlvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW5l
Z2F0aXZlLXJlcGVhdC5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1uZWdhdGl2ZS1yZXBlYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTA2YjkyMmNhMDk0MWE3YTJj
YzU3NzIwZGIwODU5MzVhYzg0ZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3Nz
My9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1uZWdhdGl2ZS1yZXBlYXQuaHRtbApAQCAtMCwwICsx
LDIxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5
bGU+CisgICAgICAgICAgICBib2R5IHsKKyAgICAgICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1z
bmFwLXR5cGU6IG1hbmRhdG9yeTsKKyAgICAgICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1zbmFw
LXBvaW50cy15OiByZXBlYXQoLTQwMHB4KTsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDUwMDBw
eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgor
ICAgIDxib2R5PgorICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgbmVnYXRpdmUgcmVwZWF0KCkg
dmFsdWVzIGRvbid0IGhhbmcgb24gc25hcCBwb2ludCBjb21wdXRhdGlvbi4iKTsKKyAgICAgICAg
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3VicGl4ZWwtcmVwZWF0LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3Vi
cGl4ZWwtcmVwZWF0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YWZiYmI0N2Y4NWI0NTVkYWRl
YmYwZmUwZTkxMTU5Mjg1MjJmNmE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3Nz
My9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zdWJwaXhlbC1yZXBlYXQtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTMgQEAKK1Rlc3RzIHRoYXQgc21hbGwgcG9zaXRpdmUgcmVwZWF0KCkgdmFsdWVz
IGdlbmVyYXRlcyBhIHJlYXNvbmFibGUgbnVtYmVyIG9mIHNuYXAgb2Zmc2V0cy4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorTnVtYmVyIG9mIHNuYXAgb2Zmc2V0czogOTkKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN1YnBpeGVsLXJlcGVhdC5odG1s
IGIvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zdWJwaXhlbC1yZXBl
YXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42MTkwOTQyNjg2YmViNDQzMzk5NDkyNzAwY2UwNDYzNDUzMjY3
MWUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1zdWJwaXhlbC1yZXBlYXQuaHRtbApAQCAtMCwwICsxLDcxIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAj
Z2FsbGVyeSB7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgICAgICAg
ICB3aWR0aDogMTAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgLXdlYmtpdC1z
Y3JvbGwtc25hcC10eXBlOiBtYW5kYXRvcnk7CisgICAgICAgICAgICAgICAgLXdlYmtpdC1zY3Jv
bGwtc25hcC1wb2ludHMteTogcmVwZWF0KDAuMDAwMXB4KTsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDA7CisgICAgICAgICAgICAgICAgcGFkZGluZzogMDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLmNvbG9yQm94IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMTAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
I2l0ZW0wIHsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyB9CisgICAgICAgICAgICAjaXRlbTEgeyBi
YWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICAg
ICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBnYWxsZXJ5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdhbGxlcnkiKTsK
KworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZHVtcFNuYXBPZmZzZXRzLCAwKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc25hcE9mZnNldHNGcm9tU3RyaW5nKG9m
ZnNldHNBc1N0cmluZykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgc3RhcnRJ
bmRleCA9IG9mZnNldHNBc1N0cmluZy5zZWFyY2goL1x7Lyk7CisgICAgICAgICAgICAgICAgdmFy
IGVuZEluZGV4ID0gb2Zmc2V0c0FzU3RyaW5nLnNlYXJjaCgvXH0vKTsKKyAgICAgICAgICAgICAg
ICBpZiAoc3RhcnRJbmRleCA9PSAtMSB8fCBlbmRJbmRleCA9PSAtMSB8fCBlbmRJbmRleCA8PSBz
dGFydEluZGV4KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gW10KKworICAgICAgICAgICAg
ICAgIHJldHVybiBvZmZzZXRzQXNTdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgLnN1YnN0cmlu
ZyhzdGFydEluZGV4ICsgMSwgZW5kSW5kZXggLSBzdGFydEluZGV4IC0gMSkKKyAgICAgICAgICAg
ICAgICAgICAgLnRyaW0oKQorICAgICAgICAgICAgICAgICAgICAuc3BsaXQoIiwiKQorICAgICAg
ICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uKHMpIHsgcmV0dXJuIHBhcnNlRmxvYXQocy50cmlt
KCkpIH0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBkdW1wU25hcE9m
ZnNldHMoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBvZmZzZXRzID0gc25h
cE9mZnNldHNGcm9tU3RyaW5nKHdpbmRvdy5pbnRlcm5hbHMuc2Nyb2xsU25hcE9mZnNldHMoZ2Fs
bGVyeSkpOworICAgICAgICAgICAgICAgIGRlYnVnKCJOdW1iZXIgb2Ygc25hcCBvZmZzZXRzOiAi
ICsgb2Zmc2V0cy5sZW5ndGgpOworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgICAgIDxkaXYgaWQ9ImdhbGxlcnkiPgor
ICAgICAgICAgICAgPGRpdiBpZD0iaXRlbTAiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAg
ICAgICAgICA8ZGl2IGlkPSJpdGVtMSIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAg
PC9kaXY+CisgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8c2NyaXB0
PgorICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBzbWFsbCBwb3NpdGl2ZSByZXBlYXQo
KSB2YWx1ZXMgZ2VuZXJhdGVzIGEgcmVhc29uYWJsZSBudW1iZXIgb2Ygc25hcCBvZmZzZXRzLiIp
OworICAgICAgICA8L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>