<?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>86870</bug_id>
          
          <creation_ts>2012-05-18 10:49:24 -0700</creation_ts>
          <short_desc>[chromium] add back-face visibility check for renderSurfaces</short_desc>
          <delta_ts>2012-05-18 15:28:00 -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>Layout and Rendering</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>84195</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Shawn Singh">shawnsingh</reporter>
          <assigned_to name="Shawn Singh">shawnsingh</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>627807</commentid>
    <comment_count>0</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-18 10:49:24 -0700</bug_when>
    <thetext>This patch is related to https://bugs.webkit.org/show_bug.cgi?id=84195, but it might be convenient if this lands first, to reduce conflicts just in case we want to merge it back to m20.
I&apos;m currently testing this patch, both by itself and in conjunction with https://bugs.webkit.org/show_bug.cgi?id=84195, and its passing all unit tests and layout tests everywhere.

The bug was that when a parent has preserves3D, but the layer does not, then it creates a renderSurface, and we do not correctly check backface visibility in that case.  This caused a few pages that use flip mechanisms to break</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627894</commentid>
    <comment_count>1</comment_count>
      <attachid>142760</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-18 12:05:11 -0700</bug_when>
    <thetext>Created attachment 142760
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627896</commentid>
    <comment_count>2</comment_count>
      <attachid>142760</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-18 12:06:19 -0700</bug_when>
    <thetext>Comment on attachment 142760
Patch

forgot to update the other unit test, will submit new patch in a bit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627919</commentid>
    <comment_count>3</comment_count>
      <attachid>142760</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2012-05-18 12:23:32 -0700</bug_when>
    <thetext>Comment on attachment 142760
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostCommon.cpp:386
&gt; +        if (layer-&gt;parent() &amp;&amp; layer-&gt;parent()-&gt;preserves3D() &amp;&amp; !layer-&gt;doubleSided() &amp;&amp; combinedTransform.isBackFaceVisible())

Do we have to worry about combinedTransform&apos;s that are animated on the thread? It seems from:

https://bugs.webkit.org/show_bug.cgi?id=82370

that we always need to have a RS on the main tree for layers that could get one on the impl side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627990</commentid>
    <comment_count>4</comment_count>
      <attachid>142777</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-18 13:30:24 -0700</bug_when>
    <thetext>Created attachment 142777
added transformIsKnown check

ah, thanks... that is what was going wrong.  This patch now passes all unit tests, no obvious regression on layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628022</commentid>
    <comment_count>5</comment_count>
      <attachid>142777</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-05-18 13:43:22 -0700</bug_when>
    <thetext>Comment on attachment 142777
added transformIsKnown check

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostCommon.cpp:388
&gt; +        // If this surface flattens its entire subtree, then we need to check back-face visibility before continuing with this surface.
&gt; +        // Cannot early exit here, however, if the transform is animating and not known on the main thread.
&gt; +        if (layer-&gt;parent() &amp;&amp; layer-&gt;parent()-&gt;preserves3D() &amp;&amp; transformToParentIsKnown(layer) &amp;&amp; !layer-&gt;doubleSided() &amp;&amp; combinedTransform.isBackFaceVisible())

Don&apos;t you also need to check !layer-&gt;preserves3D() to know that this layer flattens its subtree? I think a &quot;flattensSubtreeToSurface()&quot; helper might improve readability too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628043</commentid>
    <comment_count>6</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-18 14:01:07 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 142777 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=142777&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostCommon.cpp:388
&gt; &gt; +        // If this surface flattens its entire subtree, then we need to check back-face visibility before continuing with this surface.
&gt; &gt; +        // Cannot early exit here, however, if the transform is animating and not known on the main thread.
&gt; &gt; +        if (layer-&gt;parent() &amp;&amp; layer-&gt;parent()-&gt;preserves3D() &amp;&amp; transformToParentIsKnown(layer) &amp;&amp; !layer-&gt;doubleSided() &amp;&amp; combinedTransform.isBackFaceVisible())
&gt; 
&gt; Don&apos;t you also need to check !layer-&gt;preserves3D() to know that this layer flattens its subtree? I think a &quot;flattensSubtreeToSurface()&quot; helper might improve readability too.

Actually the code is correct, its my comment that is misleading and wrong.   The comment should say &quot;if this surface is already in a w3c rendering context, then we should check whether the back face is visible&quot;

The full situation can be understood in the context of https://bugs.webkit.org/show_bug.cgi?id=84195.  Different transforms need to be used to check back-face visibility, depending on whether we&apos;re in a 3d rendering context or not.

I&apos;ll add the appropriate helper function and fix the comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628078</commentid>
    <comment_count>7</comment_count>
      <attachid>142784</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-18 14:30:41 -0700</bug_when>
    <thetext>Created attachment 142784
Fixed comment and added useful helper function

Tested again manually, unit, layout, all seems good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628123</commentid>
    <comment_count>8</comment_count>
      <attachid>142784</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-05-18 15:05:08 -0700</bug_when>
    <thetext>Comment on attachment 142784
Fixed comment and added useful helper function

R=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628149</commentid>
    <comment_count>9</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-18 15:27:30 -0700</bug_when>
    <thetext>Committed r117645: &lt;http://trac.webkit.org/changeset/117645&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628152</commentid>
    <comment_count>10</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-18 15:28:00 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 142784 [details])
&gt; R=me.

Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142760</attachid>
            <date>2012-05-18 12:05:11 -0700</date>
            <delta_ts>2012-05-18 13:30:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86870-20120518120510.patch</filename>
            <type>text/plain</type>
            <size>7160</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGUwMzQyNmRlZmQwZTQx
ZTliY2RkOWE3ZGQ4OTc2YTBkNDVkNDE5YS4uZTQ4ZTAzYWYxNDZhMTljZGMxOTY1NzA4OTk1OWRl
OWYxZmUyMzJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA1LTE4ICBTaGF3
biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
YWRkIGJhY2stZmFjZSB2aXNpYmlsaXR5IGNoZWNrIGZvciByZW5kZXJTdXJmYWNlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY4NzAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0IGFkZGVkIENDTGF5
ZXJUcmVlSG9zdENvbW1vblRlc3Q6OnZlcmlmeUJhY2tGYWNlQ3VsbGluZ1dpdGhQcmVzZXJ2ZXMz
ZEZvckZsYXR0ZW5pbmdTdXJmYWNlCisKKyAgICAgICAgQ2hyb21pdW0gd2FzIG5vdCBjaGVja2lu
ZyBiYWNrLWZhY2UgdmlzaWJpbGl0eSBmb3IgcmVuZGVyU3VyZmFjZXMKKyAgICAgICAgdGhhdCBu
ZWVkZWQgaXQuIFRoaXMgcGF0Y2ggYWRkcyB0aGF0IGNoZWNrIGFuZCB0aGUgYXBwcm9wcmlhdGUK
KyAgICAgICAgdW5pdCB0ZXN0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1
bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eUludGVybmFsKToKKwogMjAxMi0wNS0xNyAg
U3VkYXJzYW5hIE5hZ2luZW5pICA8c3VkYXJzYW5hLm5hZ2luZW5pQGxpbnV4LmludGVsLmNvbT4K
IAogICAgICAgICBNZW1vcnkgbGVhayBpbiBOZXR3b3JrSW5mb0NsaWVudApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwppbmRleCA0NDU0OWNkMTdhNTczZTcyMTc3ZGI1MWMxNTVmYmZjNjM2MTE5OWQ1
Li4wMjYzNjk4NjIzZTBhNWI4YWI2NjI5NGRhYTE0ZGZjOTI4NWZlMGQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA1LTE4ICBTaGF3biBTaW5naCAg
PHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gYWRkIGJhY2st
ZmFjZSB2aXNpYmlsaXR5IGNoZWNrIGZvciByZW5kZXJTdXJmYWNlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY4NzAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdENv
bW1vblRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1QpOgorICAgICAgICAoV2Vi
S2l0VGVzdHMpOgorCiAyMDEyLTA1LTE3ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBSZW1vdmUgSURCSW5kZXguc3RvcmVOYW1lCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcAppbmRleCA1MTFlODM3ZGM4ZGFi
YzNjNWM5MTE2YmYzM2U1MmYwNGFlNmFiNTM2Li45ODY5NjIyMTYxMDliZmM5MWM5MTI5MzY4YTRl
MzNiM2RmOThlZjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5j
cHAKQEAgLTM4Miw2ICszODIsMTAgQEAgc3RhdGljIGJvb2wgY2FsY3VsYXRlRHJhd1RyYW5zZm9y
bXNBbmRWaXNpYmlsaXR5SW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXIKICAgICBsYXll
ci0+c2V0VXNlc0xheWVyQ2xpcHBpbmcoZmFsc2UpOwogCiAgICAgaWYgKHN1YnRyZWVTaG91bGRS
ZW5kZXJUb1NlcGFyYXRlU3VyZmFjZShsYXllciwgaXNTY2FsZU9yVHJhbnNsYXRpb24oY29tYmlu
ZWRUcmFuc2Zvcm0pKSkgeworCisgICAgICAgIGlmIChsYXllci0+cGFyZW50KCkgJiYgbGF5ZXIt
PnBhcmVudCgpLT5wcmVzZXJ2ZXMzRCgpICYmICFsYXllci0+ZG91YmxlU2lkZWQoKSAmJiBjb21i
aW5lZFRyYW5zZm9ybS5pc0JhY2tGYWNlVmlzaWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCiAgICAgICAgIGlmICghbGF5ZXItPnJlbmRlclN1cmZhY2UoKSkKICAgICAgICAgICAg
IGxheWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwCmluZGV4
IGQyNDNhZWU0YWYxNjY0YjA1OTg5NWI2NjZkNmM4NTI5NWM4OGJmOWEuLjU2M2I2ZGZlMzNiZGIy
NDMwN2FhMTg1NDU2OTc3MzY3ZjZhMmM4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcApAQCAtMTIw
Niw2ICsxMjA2LDY5IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5Vmlz
aWJsZVJlY3RGb3IzZFBlcnNwZWN0aXZlV2hlbkNsaXBwZWRCeVcpCiAgICAgRVhQRUNUX0VRKGV4
cGVjdGVkV2lkdGgsIGFjdHVhbC53aWR0aCgpKTsKIH0KIAorVEVTVChDQ0xheWVyVHJlZUhvc3RD
b21tb25UZXN0LCB2ZXJpZnlCYWNrRmFjZUN1bGxpbmdXaXRoUHJlc2VydmVzM2RGb3JGbGF0dGVu
aW5nU3VyZmFjZSkKK3sKKyAgICAvLyBWZXJpZnkgdGhlIGJlaGF2aW9yIG9mIGJhY2stZmFjZSBj
dWxsaW5nIGZvciBhIHJlbmRlclN1cmZhY2UgdGhhdCBpcyBjcmVhdGVkCisgICAgLy8gd2hlbiBp
dCBmbGF0dGVucyBpdHMgc3VidHJlZSwgYW5kIGl0cyBwYXJlbnQgaGFzIHByZXNlcnZlcy0zZC4K
KworICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OworICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGZyb250RmFjaW5n
U3VyZmFjZSA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVu
dCgpKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGJh
Y2tGYWNpbmdTdXJmYWNlID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJh
d3NDb250ZW50KCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29u
dGVudD4gY2hpbGQxID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3ND
b250ZW50KCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVu
dD4gY2hpbGQyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250
ZW50KCkpOworCisgICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CisgICAgcGFyZW50
LT5hZGRDaGlsZChmcm9udEZhY2luZ1N1cmZhY2UpOworICAgIHBhcmVudC0+YWRkQ2hpbGQoYmFj
a0ZhY2luZ1N1cmZhY2UpOworICAgIGZyb250RmFjaW5nU3VyZmFjZS0+YWRkQ2hpbGQoY2hpbGQx
KTsKKyAgICBiYWNrRmFjaW5nU3VyZmFjZS0+YWRkQ2hpbGQoY2hpbGQyKTsKKworICAgIC8vIFJl
bmRlclN1cmZhY2VzIGFyZSBub3QgZG91YmxlLXNpZGVkCisgICAgZnJvbnRGYWNpbmdTdXJmYWNl
LT5zZXREb3VibGVTaWRlZChmYWxzZSk7CisgICAgYmFja0ZhY2luZ1N1cmZhY2UtPnNldERvdWJs
ZVNpZGVkKGZhbHNlKTsKKworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGJhY2tmYWNlTWF0cml4
OworICAgIGJhY2tmYWNlTWF0cml4LnRyYW5zbGF0ZSg1MCwgNTApOworICAgIGJhY2tmYWNlTWF0
cml4LnJvdGF0ZTNkKDAsIDEsIDAsIDE4MCk7CisgICAgYmFja2ZhY2VNYXRyaXgudHJhbnNsYXRl
KC01MCwgLTUwKTsKKworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50Lmdl
dCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZs
b2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApLCB0cnVlKTsgLy8gcGFyZW50IHRyYW5z
Zm9ybSBzdHlsZSBpcyBwcmVzZXJ2ZTNkLgorICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rp
bmcoZnJvbnRGYWNpbmdTdXJmYWNlLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDAp
LCBmYWxzZSk7IC8vIHN1cmZhY2UgdHJhbnNmb3JtIHN0eWxlIGlzIGZsYXQuCisgICAgc2V0TGF5
ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhiYWNrRmFjaW5nU3VyZmFjZS5nZXQoKSwgIGJhY2tmYWNl
TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAw
KSwgSW50U2l6ZSgxMDAsIDEwMCksIGZhbHNlKTsgLy8gc3VyZmFjZSB0cmFuc2Zvcm0gc3R5bGUg
aXMgZmxhdC4KKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkMS5nZXQoKSwg
aWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBv
aW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSwgZmFsc2UpOworICAgIHNldExheWVyUHJvcGVy
dGllc0ZvclRlc3RpbmcoY2hpbGQyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDAp
LCBmYWxzZSk7CisKKyAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdDsKKyAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlM
YXllckxpc3Q7CisgICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7CisgICAgcGFyZW50
LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgcGFy
ZW50LT5ib3VuZHMoKSkpOworICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2lu
dDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dC5hcHBlbmQocGFyZW50LmdldCgpKTsKKworICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2Fs
Y3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50Lmdl
dCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxp
c3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKKworICAgIC8vIFZlcmlm
eSB3aGljaCByZW5kZXJTdXJmYWNlcyB3ZXJlIGNyZWF0ZWQuCisgICAgRVhQRUNUX1RSVUUoZnJv
bnRGYWNpbmdTdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkpOworICAgIEVYUEVDVF9GQUxTRShiYWNr
RmFjaW5nU3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsgLy8gYmVjYXVzZSBpdCBzaG91bGQgYmUg
Y3VsbGVkCisgICAgRVhQRUNUX0ZBTFNFKGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBF
WFBFQ1RfRkFMU0UoY2hpbGQyLT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgLy8gVmVyaWZ5IHRo
ZSByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LiBUaGUgYmFjay1mYWNpbmcgc3VyZmFjZSBzaG91bGQg
YmUgY3VsbGVkLgorICAgIEFTU0VSVF9FUSgydSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5zaXpl
KCkpOworICAgIEVYUEVDVF9FUShwYXJlbnQtPmlkKCksIHJlbmRlclN1cmZhY2VMYXllckxpc3Rb
MF0tPmlkKCkpOworICAgIEVYUEVDVF9FUShmcm9udEZhY2luZ1N1cmZhY2UtPmlkKCksIHJlbmRl
clN1cmZhY2VMYXllckxpc3RbMV0tPmlkKCkpOworCisgICAgLy8gVmVyaWZ5IHJvb3Qgc3VyZmFj
ZSdzIGxheWVyTGlzdC4KKyAgICBBU1NFUlRfRVEoMXUsIHJlbmRlclN1cmZhY2VMYXllckxpc3Rb
MF0tPnJlbmRlclN1cmZhY2UoKS0+bGF5ZXJMaXN0KCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEo
ZnJvbnRGYWNpbmdTdXJmYWNlLT5pZCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0WzBdLT5yZW5k
ZXJTdXJmYWNlKCktPmxheWVyTGlzdCgpWzBdLT5pZCgpKTsKKworICAgIC8vIFZlcmlmeSBmcm9u
dEZhY2luZ1N1cmZhY2UncyBsYXllckxpc3QuCisgICAgQVNTRVJUX0VRKDJ1LCByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0WzFdLT5yZW5kZXJTdXJmYWNlKCktPmxheWVyTGlzdCgpLnNpemUoKSk7Cisg
ICAgRVhQRUNUX0VRKGZyb250RmFjaW5nU3VyZmFjZS0+aWQoKSwgcmVuZGVyU3VyZmFjZUxheWVy
TGlzdFsxXS0+cmVuZGVyU3VyZmFjZSgpLT5sYXllckxpc3QoKVswXS0+aWQoKSk7CisgICAgRVhQ
RUNUX0VRKGNoaWxkMS0+aWQoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdFsxXS0+cmVuZGVyU3Vy
ZmFjZSgpLT5sYXllckxpc3QoKVsxXS0+aWQoKSk7Cit9CisKIFRFU1QoQ0NMYXllclRyZWVIb3N0
Q29tbW9uVGVzdCwgdmVyaWZ5VmlzaWJsZVJlY3RGb3JQZXJzcGVjdGl2ZVVucHJvamVjdGlvbikK
IHsKICAgICAvLyBUbyBkZXRlcm1pbmUgdmlzaWJsZVJlY3QgaW4gbGF5ZXIgc3BhY2UsIHRoZXJl
IG5lZWRzIHRvIGJlIGFuIHVuLXByb2plY3Rpb24gZnJvbQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142777</attachid>
            <date>2012-05-18 13:30:24 -0700</date>
            <delta_ts>2012-05-18 14:30:37 -0700</delta_ts>
            <desc>added transformIsKnown check</desc>
            <filename>bug-86870-20120518133023.patch</filename>
            <type>text/plain</type>
            <size>7473</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTcxMjQyMzdjMmFjYWQ1
MDgyNDY2MjM3OGRkNzk5OTAzYzVkMTE1YS4uY2I2OGMyZjBhYTczZDMzNDUxNDk2MzRmZDM5MGNj
NTQ3MTlhMTBhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA1LTE4ICBTaGF3
biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
YWRkIGJhY2stZmFjZSB2aXNpYmlsaXR5IGNoZWNrIGZvciByZW5kZXJTdXJmYWNlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY4NzAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0IGFkZGVkIENDTGF5
ZXJUcmVlSG9zdENvbW1vblRlc3Q6OnZlcmlmeUJhY2tGYWNlQ3VsbGluZ1dpdGhQcmVzZXJ2ZXMz
ZEZvckZsYXR0ZW5pbmdTdXJmYWNlCisKKyAgICAgICAgQ2hyb21pdW0gd2FzIG5vdCBjaGVja2lu
ZyBiYWNrLWZhY2UgdmlzaWJpbGl0eSBmb3IgcmVuZGVyU3VyZmFjZXMKKyAgICAgICAgdGhhdCBu
ZWVkZWQgaXQuIFRoaXMgcGF0Y2ggYWRkcyB0aGF0IGNoZWNrIGFuZCB0aGUgYXBwcm9wcmlhdGUK
KyAgICAgICAgdW5pdCB0ZXN0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1
bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eUludGVybmFsKToKKwogMjAxMi0wNS0xOCAg
VG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIHJlbW92ZSB0aGUgQ1NT
X0dSSURfTEFZT1VUIGNvbXBpbGVyIGRlZmluZSwgYnV0IGRlZmF1bHQgZ3JpZCBsYXlvdXQgdG8g
b2ZmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGNlOGMzYzAxNGQ4MWI5M2ZmNmNlNzZk
ZmUyZDg5ZjAxNmJmOTE0YTEuLmE2N2E1MWE5OTMxZDQ2YTIxYWE1NWNkODI4M2I2NmEyMmE5YjM3
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDUt
MTggIFNoYXduIFNpbmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2No
cm9taXVtXSBhZGQgYmFjay1mYWNlIHZpc2liaWxpdHkgY2hlY2sgZm9yIHJlbmRlclN1cmZhY2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Njg3MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMv
Q0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVT
VCk6CisgICAgICAgIChXZWJLaXRUZXN0cyk6CisKIDIwMTItMDUtMTggIFRvbnkgQ2hhbmcgIDx0
b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICByZW1vdmUgdGhlIENTU19HUklEX0xBWU9VVCBj
b21waWxlciBkZWZpbmUsIGJ1dCBkZWZhdWx0IGdyaWQgbGF5b3V0IHRvIG9mZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0Q29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKaW5kZXggNTExZTgzN2RjOGRhYmMzYzVj
OTExNmJmMzNlNTJmMDRhZTZhYjUzNi4uYzY2ZTJhNmRmYjlhM2M5YWNiODAxZjM1MWI5YTU1YmJl
YTgyZTNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwCkBA
IC0zODIsNiArMzgyLDEyIEBAIHN0YXRpYyBib29sIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5k
VmlzaWJpbGl0eUludGVybmFsKExheWVyVHlwZSogbGF5ZXIsIExheWVyCiAgICAgbGF5ZXItPnNl
dFVzZXNMYXllckNsaXBwaW5nKGZhbHNlKTsKIAogICAgIGlmIChzdWJ0cmVlU2hvdWxkUmVuZGVy
VG9TZXBhcmF0ZVN1cmZhY2UobGF5ZXIsIGlzU2NhbGVPclRyYW5zbGF0aW9uKGNvbWJpbmVkVHJh
bnNmb3JtKSkpIHsKKworICAgICAgICAvLyBJZiB0aGlzIHN1cmZhY2UgZmxhdHRlbnMgaXRzIGVu
dGlyZSBzdWJ0cmVlLCB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgYmFjay1mYWNlIHZpc2liaWxpdHkg
YmVmb3JlIGNvbnRpbnVpbmcgd2l0aCB0aGlzIHN1cmZhY2UuCisgICAgICAgIC8vIENhbm5vdCBl
YXJseSBleGl0IGhlcmUsIGhvd2V2ZXIsIGlmIHRoZSB0cmFuc2Zvcm0gaXMgYW5pbWF0aW5nIGFu
ZCBub3Qga25vd24gb24gdGhlIG1haW4gdGhyZWFkLgorICAgICAgICBpZiAobGF5ZXItPnBhcmVu
dCgpICYmIGxheWVyLT5wYXJlbnQoKS0+cHJlc2VydmVzM0QoKSAmJiB0cmFuc2Zvcm1Ub1BhcmVu
dElzS25vd24obGF5ZXIpICYmICFsYXllci0+ZG91YmxlU2lkZWQoKSAmJiBjb21iaW5lZFRyYW5z
Zm9ybS5pc0JhY2tGYWNlVmlzaWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAg
ICAgICAgIGlmICghbGF5ZXItPnJlbmRlclN1cmZhY2UoKSkKICAgICAgICAgICAgIGxheWVyLT5j
cmVhdGVSZW5kZXJTdXJmYWNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwCmluZGV4IGQyNDNhZWU0
YWYxNjY0YjA1OTg5NWI2NjZkNmM4NTI5NWM4OGJmOWEuLmI2N2Y0NDk4N2QzMTUwZTc0NzNjMTZm
NGE4MGZiZGIxMTkzNTk5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcApAQCAtMTMyNSw2ICsxMzI1
LDY5IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5QmFja0ZhY2VDdWxs
aW5nKQogICAgIEVYUEVDVF9UUlVFKGNoaWxkT2ZBbmltYXRpbmdTdXJmYWNlLT52aXNpYmxlTGF5
ZXJSZWN0KCkuaXNFbXB0eSgpKTsKIH0KIAorVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0
LCB2ZXJpZnlCYWNrRmFjZUN1bGxpbmdXaXRoUHJlc2VydmVzM2RGb3JGbGF0dGVuaW5nU3VyZmFj
ZSkKK3sKKyAgICAvLyBWZXJpZnkgdGhlIGJlaGF2aW9yIG9mIGJhY2stZmFjZSBjdWxsaW5nIGZv
ciBhIHJlbmRlclN1cmZhY2UgdGhhdCBpcyBjcmVhdGVkCisgICAgLy8gd2hlbiBpdCBmbGF0dGVu
cyBpdHMgc3VidHJlZSwgYW5kIGl0cyBwYXJlbnQgaGFzIHByZXNlcnZlcy0zZC4KKworICAgIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OworICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGZyb250RmFjaW5nU3VyZmFjZSA9
IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKKyAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGJhY2tGYWNpbmdT
dXJmYWNlID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50
KCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gY2hp
bGQxID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkp
OworICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gY2hpbGQy
ID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwor
CisgICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CisgICAgcGFyZW50LT5hZGRDaGls
ZChmcm9udEZhY2luZ1N1cmZhY2UpOworICAgIHBhcmVudC0+YWRkQ2hpbGQoYmFja0ZhY2luZ1N1
cmZhY2UpOworICAgIGZyb250RmFjaW5nU3VyZmFjZS0+YWRkQ2hpbGQoY2hpbGQxKTsKKyAgICBi
YWNrRmFjaW5nU3VyZmFjZS0+YWRkQ2hpbGQoY2hpbGQyKTsKKworICAgIC8vIFJlbmRlclN1cmZh
Y2VzIGFyZSBub3QgZG91YmxlLXNpZGVkCisgICAgZnJvbnRGYWNpbmdTdXJmYWNlLT5zZXREb3Vi
bGVTaWRlZChmYWxzZSk7CisgICAgYmFja0ZhY2luZ1N1cmZhY2UtPnNldERvdWJsZVNpZGVkKGZh
bHNlKTsKKworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGJhY2tmYWNlTWF0cml4OworICAgIGJh
Y2tmYWNlTWF0cml4LnRyYW5zbGF0ZSg1MCwgNTApOworICAgIGJhY2tmYWNlTWF0cml4LnJvdGF0
ZTNkKDAsIDEsIDAsIDE4MCk7CisgICAgYmFja2ZhY2VNYXRyaXgudHJhbnNsYXRlKC01MCwgLTUw
KTsKKworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVu
dGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQo
MCwgMCksIEludFNpemUoMTAwLCAxMDApLCB0cnVlKTsgLy8gcGFyZW50IHRyYW5zZm9ybSBzdHls
ZSBpcyBwcmVzZXJ2ZTNkLgorICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoZnJvbnRG
YWNpbmdTdXJmYWNlLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApLCBmYWxzZSk7
IC8vIHN1cmZhY2UgdHJhbnNmb3JtIHN0eWxlIGlzIGZsYXQuCisgICAgc2V0TGF5ZXJQcm9wZXJ0
aWVzRm9yVGVzdGluZyhiYWNrRmFjaW5nU3VyZmFjZS5nZXQoKSwgIGJhY2tmYWNlTWF0cml4LCBp
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6
ZSgxMDAsIDEwMCksIGZhbHNlKTsgLy8gc3VyZmFjZSB0cmFuc2Zvcm0gc3R5bGUgaXMgZmxhdC4K
KyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkMS5nZXQoKSwgaWRlbnRpdHlN
YXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDAp
LCBJbnRTaXplKDEwMCwgMTAwKSwgZmFsc2UpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcoY2hpbGQyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApLCBmYWxzZSk7
CisKKyAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVy
TGlzdDsKKyAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7
CisgICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7CisgICAgcGFyZW50LT5yZW5kZXJT
dXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgcGFyZW50LT5ib3Vu
ZHMoKSkpOworICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygp
LCBwYXJlbnQtPmJvdW5kcygpKSk7CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQo
cGFyZW50LmdldCgpKTsKKworICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJh
d1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVu
dGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15
TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKKworICAgIC8vIFZlcmlmeSB3aGljaCBy
ZW5kZXJTdXJmYWNlcyB3ZXJlIGNyZWF0ZWQuCisgICAgRVhQRUNUX1RSVUUoZnJvbnRGYWNpbmdT
dXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkpOworICAgIEVYUEVDVF9GQUxTRShiYWNrRmFjaW5nU3Vy
ZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsgLy8gYmVjYXVzZSBpdCBzaG91bGQgYmUgY3VsbGVkCisg
ICAgRVhQRUNUX0ZBTFNFKGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBFWFBFQ1RfRkFM
U0UoY2hpbGQyLT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgLy8gVmVyaWZ5IHRoZSByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0LiBUaGUgYmFjay1mYWNpbmcgc3VyZmFjZSBzaG91bGQgYmUgY3VsbGVk
LgorICAgIEFTU0VSVF9FUSgydSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5zaXplKCkpOworICAg
IEVYUEVDVF9FUShwYXJlbnQtPmlkKCksIHJlbmRlclN1cmZhY2VMYXllckxpc3RbMF0tPmlkKCkp
OworICAgIEVYUEVDVF9FUShmcm9udEZhY2luZ1N1cmZhY2UtPmlkKCksIHJlbmRlclN1cmZhY2VM
YXllckxpc3RbMV0tPmlkKCkpOworCisgICAgLy8gVmVyaWZ5IHJvb3Qgc3VyZmFjZSdzIGxheWVy
TGlzdC4KKyAgICBBU1NFUlRfRVEoMXUsIHJlbmRlclN1cmZhY2VMYXllckxpc3RbMF0tPnJlbmRl
clN1cmZhY2UoKS0+bGF5ZXJMaXN0KCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoZnJvbnRGYWNp
bmdTdXJmYWNlLT5pZCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0WzBdLT5yZW5kZXJTdXJmYWNl
KCktPmxheWVyTGlzdCgpWzBdLT5pZCgpKTsKKworICAgIC8vIFZlcmlmeSBmcm9udEZhY2luZ1N1
cmZhY2UncyBsYXllckxpc3QuCisgICAgQVNTRVJUX0VRKDJ1LCByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0WzFdLT5yZW5kZXJTdXJmYWNlKCktPmxheWVyTGlzdCgpLnNpemUoKSk7CisgICAgRVhQRUNU
X0VRKGZyb250RmFjaW5nU3VyZmFjZS0+aWQoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdFsxXS0+
cmVuZGVyU3VyZmFjZSgpLT5sYXllckxpc3QoKVswXS0+aWQoKSk7CisgICAgRVhQRUNUX0VRKGNo
aWxkMS0+aWQoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdFsxXS0+cmVuZGVyU3VyZmFjZSgpLT5s
YXllckxpc3QoKVsxXS0+aWQoKSk7Cit9CisKIC8vIEZJWE1FOgogLy8gY29udGludWUgd29ya2lu
ZyBvbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg5NDIKIC8vICAt
IGFkZCBhIHRlc3QgdG8gdmVyaWZ5IGNsaXBwaW5nIHRoYXQgY2hhbmdlcyB0aGUgImNlbnRlciBw
b2ludCIK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142784</attachid>
            <date>2012-05-18 14:30:41 -0700</date>
            <delta_ts>2012-05-18 15:05:07 -0700</delta_ts>
            <desc>Fixed comment and added useful helper function</desc>
            <filename>bug-86870-20120518143039.patch</filename>
            <type>text/plain</type>
            <size>8950</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTcxMjQyMzdjMmFjYWQ1
MDgyNDY2MjM3OGRkNzk5OTAzYzVkMTE1YS4uN2NmY2I3MTI2ZGJkM2VlY2IwZTAzNmQyZDM2ZTNl
NmM2MTIyMTA3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA1LTE4ICBTaGF3
biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
YWRkIGJhY2stZmFjZSB2aXNpYmlsaXR5IGNoZWNrIGZvciByZW5kZXJTdXJmYWNlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY4NzAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0IGFkZGVkIENDTGF5
ZXJUcmVlSG9zdENvbW1vblRlc3Q6OnZlcmlmeUJhY2tGYWNlQ3VsbGluZ1dpdGhQcmVzZXJ2ZXMz
ZEZvckZsYXR0ZW5pbmdTdXJmYWNlCisKKyAgICAgICAgQ2hyb21pdW0gd2FzIG5vdCBjaGVja2lu
ZyBiYWNrLWZhY2UgdmlzaWJpbGl0eSBmb3IgcmVuZGVyU3VyZmFjZXMKKyAgICAgICAgdGhhdCBu
ZWVkZWQgaXQuIFRoaXMgcGF0Y2ggYWRkcyB0aGF0IGNoZWNrIGFuZCB0aGUgYXBwcm9wcmlhdGUK
KyAgICAgICAgdW5pdCB0ZXN0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxheWVy
SXNJbkV4aXN0aW5nM0RSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6c3VidHJlZVNob3VsZFJlbmRlclRvU2VwYXJhdGVTdXJmYWNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eUludGVy
bmFsKToKKwogMjAxMi0wNS0xOCAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIHJlbW92ZSB0aGUgQ1NTX0dSSURfTEFZT1VUIGNvbXBpbGVyIGRlZmluZSwgYnV0IGRl
ZmF1bHQgZ3JpZCBsYXlvdXQgdG8gb2ZmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDRk
MjNiNmU5MWJiOTVhOTQ4NTMzNGRhMTdlZDlmZDQ5ZjRjMzFjYzYuLmI2ZGJlNjJiNWQ3NDdhZDVk
NjUwZGFjNzM5OTI4OTNlYjRhMGFlYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTItMDUtMTggIFNoYXduIFNpbmdoICA8c2hhd25zaW5naEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBhZGQgYmFjay1mYWNlIHZpc2liaWxpdHkgY2hl
Y2sgZm9yIHJlbmRlclN1cmZhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04Njg3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5jcHA6CisgICAg
ICAgIChXZWJLaXRUZXN0czo6VEVTVCk6CisgICAgICAgIChXZWJLaXRUZXN0cyk6CisKIDIwMTIt
MDUtMTggIEdyZWcgQmlsbG9jayAgPGdiaWxsb2NrQGdvb2dsZS5jb20+CiAKICAgICAgICAgRW5h
YmxlIHdlYiBpbnRlbnRzIGZsYWcgZm9yIGNocm9taXVtIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RD
b21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcAppbmRleCA1MTFlODM3ZGM4ZGFiYzNjNWM5MTE2YmYz
M2U1MmYwNGFlNmFiNTM2Li4zZjFjMzhmNzI1Y2QyMzEyODA3Zjg4MmZhNmQzODVmMmI4YjdhZjc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKQEAgLTY2LDYg
KzY2LDE0IEBAIEludFJlY3QgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVWaXNpYmxl
UmVjdChjb25zdCBJbnRSZWN0JiB0YXJnZXRTdXJmYWNlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IExheWVyVHlwZT4KK3N0YXRpYyBpbmxpbmUgYm9vbCBsYXllcklzSW5FeGlzdGluZzNEUmVuZGVy
aW5nQ29udGV4dChMYXllclR5cGUqIGxheWVyKQoreworICAgIC8vIEFjY29yZGluZyB0byBjdXJy
ZW50IFczQyBzcGVjIG9uIENTUyB0cmFuc2Zvcm1zLCBhIGxheWVyIGlzIHBhcnQgb2YgYW4gZXN0
YWJsaXNoZWQKKyAgICAvLyAzZCByZW5kZXJpbmcgY29udGV4dCBpZiBpdHMgcGFyZW50IGhhcyB0
cmFuc2Zvcm0tc3R5bGUgb2YgcHJlc2VydmVzLTNkLgorICAgIHJldHVybiBsYXllci0+cGFyZW50
KCkgJiYgbGF5ZXItPnBhcmVudCgpLT5wcmVzZXJ2ZXMzRCgpOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBMYXllclR5cGU+CiBzdGF0aWMgSW50UmVjdCBjYWxjdWxhdGVWaXNpYmxlTGF5ZXJSZWN0
KExheWVyVHlwZSogbGF5ZXIpCiB7CiAgICAgQVNTRVJUKGxheWVyLT50YXJnZXRSZW5kZXJTdXJm
YWNlKCkpOwpAQCAtMjExLDcgKzIxOSw3IEBAIHN0YXRpYyBib29sIHN1YnRyZWVTaG91bGRSZW5k
ZXJUb1NlcGFyYXRlU3VyZmFjZShMYXllclR5cGUqIGxheWVyLCBib29sIGF4aXNBbGlnCiAKICAg
ICAvLyBJZiB0aGUgbGF5ZXIgZmxhdHRlbnMgaXRzIHN1YnRyZWUgKGkuZS4gdGhlIGxheWVyIGRv
ZXNuJ3QgcHJlc2VydmUtM2QpLCBidXQgaXQgaXMKICAgICAvLyB0cmVhdGVkIGFzIGEgM0Qgb2Jq
ZWN0IGJ5IGl0cyBwYXJlbnQgKGkuZS4gcGFyZW50IGRvZXMgcHJlc2VydmUtM2QpLgotICAgIGlm
IChsYXllci0+cGFyZW50KCkgJiYgbGF5ZXItPnBhcmVudCgpLT5wcmVzZXJ2ZXMzRCgpICYmICFs
YXllci0+cHJlc2VydmVzM0QoKSAmJiBkZXNjZW5kYW50RHJhd3NDb250ZW50KQorICAgIGlmIChs
YXllcklzSW5FeGlzdGluZzNEUmVuZGVyaW5nQ29udGV4dChsYXllcikgJiYgIWxheWVyLT5wcmVz
ZXJ2ZXMzRCgpICYmIGRlc2NlbmRhbnREcmF3c0NvbnRlbnQpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgLy8gT24gdGhlIG1haW4gdGhyZWFkIHNpZGUsIGFuaW1hdGluZyB0cmFuc2Zvcm1z
IGFyZSB1bmtub3duLCBhbmQgbWF5IGNhdXNlIGEgUmVuZGVyU3VyZmFjZSBvbiB0aGUgaW1wbCBz
aWRlLgpAQCAtMzgyLDYgKzM5MCwxNCBAQCBzdGF0aWMgYm9vbCBjYWxjdWxhdGVEcmF3VHJhbnNm
b3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbChMYXllclR5cGUqIGxheWVyLCBMYXllcgogICAgIGxh
eWVyLT5zZXRVc2VzTGF5ZXJDbGlwcGluZyhmYWxzZSk7CiAKICAgICBpZiAoc3VidHJlZVNob3Vs
ZFJlbmRlclRvU2VwYXJhdGVTdXJmYWNlKGxheWVyLCBpc1NjYWxlT3JUcmFuc2xhdGlvbihjb21i
aW5lZFRyYW5zZm9ybSkpKSB7CisKKyAgICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBiYWNrLWZh
Y2UgdmlzaWJpbGl0eSBiZWZvcmUgY29udGludWluZyB3aXRoIHRoaXMgc3VyZmFjZS4KKyAgICAg
ICAgLy8gV2UgY2Fubm90IGVhcmx5IGV4aXQgaGVyZSwgaG93ZXZlciwgaWYgdGhlIHRyYW5zZm9y
bSBpcyBhbmltYXRpbmcgYW5kIG5vdCBrbm93biBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAg
IC8vIEZJWE1FOiBBbHNvIGNvbXB1dGUgYmFjay1mYWNlIHZpc2liaWxpdHkgZm9yIHN1cmZhY2Vz
IHRoYXQgYXJlIG5vdCBpbiBleGlzdGluZyAzRCByZW5kZXJpbmcgY29udGV4dCwgdXNpbmcKKyAg
ICAgICAgLy8gICAgICAgIHRoZSBsYXllcidzIGxvY2FsIHRyYW5zZm9ybS4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0MTk1CisgICAgICAgIGlmIChsYXllcklzSW5F
eGlzdGluZzNEUmVuZGVyaW5nQ29udGV4dChsYXllcikgJiYgdHJhbnNmb3JtVG9QYXJlbnRJc0tu
b3duKGxheWVyKSAmJiAhbGF5ZXItPmRvdWJsZVNpZGVkKCkgJiYgY29tYmluZWRUcmFuc2Zvcm0u
aXNCYWNrRmFjZVZpc2libGUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgICAg
ICBpZiAoIWxheWVyLT5yZW5kZXJTdXJmYWNlKCkpCiAgICAgICAgICAgICBsYXllci0+Y3JlYXRl
UmVuZGVyU3VyZmFjZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcAppbmRleCBkMjQzYWVlNGFmMTY2
NGIwNTk4OTViNjY2ZDZjODUyOTVjODhiZjlhLi5iNjdmNDQ5ODdkMzE1MGU3NDczYzE2ZjRhODBm
YmRiMTE5MzU5OTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5jcHAKQEAgLTEzMjUsNiArMTMyNSw2OSBA
QCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeUJhY2tGYWNlQ3VsbGluZykK
ICAgICBFWFBFQ1RfVFJVRShjaGlsZE9mQW5pbWF0aW5nU3VyZmFjZS0+dmlzaWJsZUxheWVyUmVj
dCgpLmlzRW1wdHkoKSk7CiB9CiAKK1RFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVy
aWZ5QmFja0ZhY2VDdWxsaW5nV2l0aFByZXNlcnZlczNkRm9yRmxhdHRlbmluZ1N1cmZhY2UpCit7
CisgICAgLy8gVmVyaWZ5IHRoZSBiZWhhdmlvciBvZiBiYWNrLWZhY2UgY3VsbGluZyBmb3IgYSBy
ZW5kZXJTdXJmYWNlIHRoYXQgaXMgY3JlYXRlZAorICAgIC8vIHdoZW4gaXQgZmxhdHRlbnMgaXRz
IHN1YnRyZWUsIGFuZCBpdHMgcGFyZW50IGhhcyBwcmVzZXJ2ZXMtM2QuCisKKyAgICBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKKyAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVy
Q2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBmcm9udEZhY2luZ1N1cmZhY2UgPSBhZG9w
dFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7CisgICAgUmVm
UHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBiYWNrRmFjaW5nU3VyZmFj
ZSA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsK
KyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGNoaWxkMSA9
IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKKyAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGNoaWxkMiA9IGFk
b3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKKworICAg
IHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOworICAgIHBhcmVudC0+YWRkQ2hpbGQoZnJv
bnRGYWNpbmdTdXJmYWNlKTsKKyAgICBwYXJlbnQtPmFkZENoaWxkKGJhY2tGYWNpbmdTdXJmYWNl
KTsKKyAgICBmcm9udEZhY2luZ1N1cmZhY2UtPmFkZENoaWxkKGNoaWxkMSk7CisgICAgYmFja0Zh
Y2luZ1N1cmZhY2UtPmFkZENoaWxkKGNoaWxkMik7CisKKyAgICAvLyBSZW5kZXJTdXJmYWNlcyBh
cmUgbm90IGRvdWJsZS1zaWRlZAorICAgIGZyb250RmFjaW5nU3VyZmFjZS0+c2V0RG91YmxlU2lk
ZWQoZmFsc2UpOworICAgIGJhY2tGYWNpbmdTdXJmYWNlLT5zZXREb3VibGVTaWRlZChmYWxzZSk7
CisKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBiYWNrZmFjZU1hdHJpeDsKKyAgICBiYWNrZmFj
ZU1hdHJpeC50cmFuc2xhdGUoNTAsIDUwKTsKKyAgICBiYWNrZmFjZU1hdHJpeC5yb3RhdGUzZCgw
LCAxLCAwLCAxODApOworICAgIGJhY2tmYWNlTWF0cml4LnRyYW5zbGF0ZSgtNTAsIC01MCk7CisK
KyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlN
YXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDAp
LCBJbnRTaXplKDEwMCwgMTAwKSwgdHJ1ZSk7IC8vIHBhcmVudCB0cmFuc2Zvcm0gc3R5bGUgaXMg
cHJlc2VydmUzZC4KKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGZyb250RmFjaW5n
U3VyZmFjZS5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSwgZmFsc2UpOyAvLyBz
dXJmYWNlIHRyYW5zZm9ybSBzdHlsZSBpcyBmbGF0LgorICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3RpbmcoYmFja0ZhY2luZ1N1cmZhY2UuZ2V0KCksICBiYWNrZmFjZU1hdHJpeCwgaWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAw
LCAxMDApLCBmYWxzZSk7IC8vIHN1cmZhY2UgdHJhbnNmb3JtIHN0eWxlIGlzIGZsYXQuCisgICAg
c2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDEuZ2V0KCksIGlkZW50aXR5TWF0cml4
LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgxMDAsIDEwMCksIGZhbHNlKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KGNoaWxkMi5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSwgZmFsc2UpOworCisg
ICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7
CisgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OworICAg
IGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOworICAgIHBhcmVudC0+cmVuZGVyU3VyZmFj
ZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50KCksIHBhcmVudC0+Ym91bmRzKCkp
KTsKKyAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFy
ZW50LT5ib3VuZHMoKSkpOworICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVu
dC5nZXQoKSk7CisKKyAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFu
c2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlN
YXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVy
TGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CisKKyAgICAvLyBWZXJpZnkgd2hpY2ggcmVuZGVy
U3VyZmFjZXMgd2VyZSBjcmVhdGVkLgorICAgIEVYUEVDVF9UUlVFKGZyb250RmFjaW5nU3VyZmFj
ZS0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYmFja0ZhY2luZ1N1cmZhY2Ut
PnJlbmRlclN1cmZhY2UoKSk7IC8vIGJlY2F1c2UgaXQgc2hvdWxkIGJlIGN1bGxlZAorICAgIEVY
UEVDVF9GQUxTRShjaGlsZDEtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGNo
aWxkMi0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgIC8vIFZlcmlmeSB0aGUgcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdC4gVGhlIGJhY2stZmFjaW5nIHN1cmZhY2Ugc2hvdWxkIGJlIGN1bGxlZC4KKyAg
ICBBU1NFUlRfRVEoMnUsIHJlbmRlclN1cmZhY2VMYXllckxpc3Quc2l6ZSgpKTsKKyAgICBFWFBF
Q1RfRVEocGFyZW50LT5pZCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0WzBdLT5pZCgpKTsKKyAg
ICBFWFBFQ1RfRVEoZnJvbnRGYWNpbmdTdXJmYWNlLT5pZCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0WzFdLT5pZCgpKTsKKworICAgIC8vIFZlcmlmeSByb290IHN1cmZhY2UncyBsYXllckxpc3Qu
CisgICAgQVNTRVJUX0VRKDF1LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0WzBdLT5yZW5kZXJTdXJm
YWNlKCktPmxheWVyTGlzdCgpLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKGZyb250RmFjaW5nU3Vy
ZmFjZS0+aWQoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdFswXS0+cmVuZGVyU3VyZmFjZSgpLT5s
YXllckxpc3QoKVswXS0+aWQoKSk7CisKKyAgICAvLyBWZXJpZnkgZnJvbnRGYWNpbmdTdXJmYWNl
J3MgbGF5ZXJMaXN0LgorICAgIEFTU0VSVF9FUSgydSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdFsx
XS0+cmVuZGVyU3VyZmFjZSgpLT5sYXllckxpc3QoKS5zaXplKCkpOworICAgIEVYUEVDVF9FUShm
cm9udEZhY2luZ1N1cmZhY2UtPmlkKCksIHJlbmRlclN1cmZhY2VMYXllckxpc3RbMV0tPnJlbmRl
clN1cmZhY2UoKS0+bGF5ZXJMaXN0KClbMF0tPmlkKCkpOworICAgIEVYUEVDVF9FUShjaGlsZDEt
PmlkKCksIHJlbmRlclN1cmZhY2VMYXllckxpc3RbMV0tPnJlbmRlclN1cmZhY2UoKS0+bGF5ZXJM
aXN0KClbMV0tPmlkKCkpOworfQorCiAvLyBGSVhNRToKIC8vIGNvbnRpbnVlIHdvcmtpbmcgb24g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4OTQyCiAvLyAgLSBhZGQg
YSB0ZXN0IHRvIHZlcmlmeSBjbGlwcGluZyB0aGF0IGNoYW5nZXMgdGhlICJjZW50ZXIgcG9pbnQi
Cg==
</data>
<flag name="review"
          id="149202"
          type_id="1"
          status="+"
          setter="enne"
    />
          </attachment>
      

    </bug>

</bugzilla>