<?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>46765</bug_id>
          
          <creation_ts>2010-09-28 16:31:15 -0700</creation_ts>
          <short_desc>Render textures directly in VideoFrameChromium</short_desc>
          <delta_ts>2010-10-18 13:24:30 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hin-Chung Lam">hclam</reporter>
          <assigned_to name="Hin-Chung Lam">hclam</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>jamesr</cc>
    
    <cc>vangelis</cc>
    
    <cc>vrk</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>286618</commentid>
    <comment_count>0</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2010-09-28 16:31:15 -0700</bug_when>
    <thetext>Render textures directly in VideoFrameChromium</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286623</commentid>
    <comment_count>1</comment_count>
      <attachid>69131</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2010-09-28 16:40:57 -0700</bug_when>
    <thetext>Created attachment 69131
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286636</commentid>
    <comment_count>2</comment_count>
      <attachid>69131</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-09-28 16:56:56 -0700</bug_when>
    <thetext>Comment on attachment 69131
Patch

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

What&apos;s the lifetime of the texture if it is provided by the frame?  I&apos;m curious how that is tied in to the lifetime of the compositor (specifically how long it is safe to stash it in a member of the layer).

&gt; WebCore/platform/graphics/chromium/VideoFrameChromium.h:66
&gt; +        TypeGlTexture,

GlTexture is redundant - in WebCore the only type of texture is a GraphicsContext3D texture which is GL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286641</commentid>
    <comment_count>3</comment_count>
      <attachid>69137</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2010-09-28 17:04:29 -0700</bug_when>
    <thetext>Created attachment 69137
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286646</commentid>
    <comment_count>4</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2010-09-28 17:09:35 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 69131 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=69131&amp;action=review
&gt; 
&gt; What&apos;s the lifetime of the texture if it is provided by the frame?  I&apos;m curious how that is tied in to the lifetime of the compositor (specifically how long it is safe to stash it in a member of the layer).

The lifetime tires directly to HTMLMediaElement, it is no longer than the compositor. Since the lifetime of VideoLayerChromium tires to HTMLMediaElement, we should be safe to use the texture as long as VideoLayerChromium is alive. There might be some edge cases that we need to deal with later.

However we don&apos;t keep the textures for a long period of time, we should keep the texture until swap buffers happen. 

&gt; 
&gt; &gt; WebCore/platform/graphics/chromium/VideoFrameChromium.h:66
&gt; &gt; +        TypeGlTexture,
&gt; 
&gt; GlTexture is redundant - in WebCore the only type of texture is a GraphicsContext3D texture which is GL.

Renamed it to TypeTexture.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286649</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-09-28 17:13:03 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 69131 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=69131&amp;action=review
&gt; &gt; 
&gt; &gt; What&apos;s the lifetime of the texture if it is provided by the frame?  I&apos;m curious how that is tied in to the lifetime of the compositor (specifically how long it is safe to stash it in a member of the layer).
&gt; 
&gt; The lifetime tires directly to HTMLMediaElement, it is no longer than the compositor. Since the lifetime of VideoLayerChromium tires to HTMLMediaElement, we should be safe to use the texture as long as VideoLayerChromium is alive. There might be some edge cases that we need to deal with later.

That&apos;s not true - layers outlive their associated elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286654</commentid>
    <comment_count>6</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2010-09-28 17:22:46 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; (From update of attachment 69131 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=69131&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; What&apos;s the lifetime of the texture if it is provided by the frame?  I&apos;m curious how that is tied in to the lifetime of the compositor (specifically how long it is safe to stash it in a member of the layer).
&gt; &gt; 
&gt; &gt; The lifetime tires directly to HTMLMediaElement, it is no longer than the compositor. Since the lifetime of VideoLayerChromium tires to HTMLMediaElement, we should be safe to use the texture as long as VideoLayerChromium is alive. There might be some edge cases that we need to deal with later.
&gt; 
&gt; That&apos;s not true - layers outlive their associated elements.

I see. In the case where we putVideoFrame() after swap buffers, what happens is that HTMLMediaElement will be destroyed, but the corresponding backend of media engine will still alive waiting for the video frame to be released. So we are safe to use the textures until we call putVideoFrame(). This patch need a later fix to hook to the swap buffers signal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286657</commentid>
    <comment_count>7</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2010-09-28 17:26:25 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; &gt; (From update of attachment 69131 [details] [details] [details] [details])
&gt; &gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=69131&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; What&apos;s the lifetime of the texture if it is provided by the frame?  I&apos;m curious how that is tied in to the lifetime of the compositor (specifically how long it is safe to stash it in a member of the layer).
&gt; &gt; &gt; 
&gt; &gt; &gt; The lifetime tires directly to HTMLMediaElement, it is no longer than the compositor. Since the lifetime of VideoLayerChromium tires to HTMLMediaElement, we should be safe to use the texture as long as VideoLayerChromium is alive. There might be some edge cases that we need to deal with later.
&gt; &gt; 
&gt; &gt; That&apos;s not true - layers outlive their associated elements.
&gt; 
&gt; I see. In the case where we putVideoFrame() after swap buffers, what happens is that HTMLMediaElement will be destroyed, but the corresponding backend of media engine will still alive waiting for the video frame to be released. So we are safe to use the textures until we call putVideoFrame(). This patch need a later fix to hook to the swap buffers signal.

Oh and by the way, this code path will be exercised only behind a flag when hardware video decoding is enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286668</commentid>
    <comment_count>8</comment_count>
      <attachid>69137</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-09-28 17:43:48 -0700</bug_when>
    <thetext>Comment on attachment 69137
Patch

If putCurrentFrame() can delete the texture then this will cause the compositor to attempt to use a texture after it&apos;s deleted since the draw call happens after updateContents.  IMO this should be fixed before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287231</commentid>
    <comment_count>9</comment_count>
      <attachid>69284</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2010-09-29 17:11:06 -0700</bug_when>
    <thetext>Created attachment 69284
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287235</commentid>
    <comment_count>10</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2010-09-29 17:14:55 -0700</bug_when>
    <thetext>There are few main points in the latest patch:
1. Release the frame after the render calls if it contains textures
2. Add method to VideoLayerChromium so that it releases the frame if the owner of the frame is going away
3. VideoFrameProvider shouldn&apos;t be a OwnPtr in VideoLayerChromium because it is implemented by WebMediaPlayerClientImpl which is owned by MediaPlayer. I don&apos;t know why it didn&apos;t blow up before..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287249</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-29 17:32:40 -0700</bug_when>
    <thetext>Attachment 69284 did not build on chromium:
Build output: http://queues.webkit.org/results/4163030</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287252</commentid>
    <comment_count>12</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2010-09-29 17:34:29 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Attachment 69284 [details] did not build on chromium:
&gt; Build output: http://queues.webkit.org/results/4163030

Need to roll deps to chromium to pull in new code that implements that method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287258</commentid>
    <comment_count>13</comment_count>
      <attachid>69284</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-09-29 17:39:20 -0700</bug_when>
    <thetext>Comment on attachment 69284
Patch

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

&gt; WebCore/platform/graphics/chromium/VideoLayerChromium.cpp:404
&gt; +    for (unsigned plane = 0; plane &lt; VideoFrameChromium::maxPlanes; plane++) {

It seems that if frame-&gt;surfaceType() != VideoFrameChromium::TypeTexture then m_textures will contain ids of textures created by the compositor which you will need to delete before zero-ing them out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287260</commentid>
    <comment_count>14</comment_count>
      <attachid>69284</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2010-09-29 17:42:54 -0700</bug_when>
    <thetext>Comment on attachment 69284
Patch

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

&gt;&gt; WebCore/platform/graphics/chromium/VideoLayerChromium.cpp:404
&gt;&gt; +    for (unsigned plane = 0; plane &lt; VideoFrameChromium::maxPlanes; plane++) {
&gt; 
&gt; It seems that if frame-&gt;surfaceType() != VideoFrameChromium::TypeTexture then m_textures will contain ids of textures created by the compositor which you will need to delete before zero-ing them out.

This method is called only in construct and in releaseCurrentFrame(). releaseCurrentFrame() will early return for the case of TypeTexture because a frame is never saved in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287265</commentid>
    <comment_count>15</comment_count>
      <attachid>69284</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-09-29 17:47:49 -0700</bug_when>
    <thetext>Comment on attachment 69284
Patch

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

&gt;&gt;&gt; WebCore/platform/graphics/chromium/VideoLayerChromium.cpp:404
&gt;&gt;&gt; +    for (unsigned plane = 0; plane &lt; VideoFrameChromium::maxPlanes; plane++) {
&gt;&gt; 
&gt;&gt; It seems that if frame-&gt;surfaceType() != VideoFrameChromium::TypeTexture then m_textures will contain ids of textures created by the compositor which you will need to delete before zero-ing them out.
&gt; 
&gt; This method is called only in construct and in releaseCurrentFrame(). releaseCurrentFrame() will early return for the case of TypeTexture because a frame is never saved in this case.

Ah, makes sense. I missed the early return part. Thanks for clarifying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288519</commentid>
    <comment_count>16</comment_count>
      <attachid>69284</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-01 15:23:56 -0700</bug_when>
    <thetext>Comment on attachment 69284
Patch

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

&gt; WebCore/ChangeLog:4
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +

This needs a one-line patch description (usually the bug title) and a link to the bug

&gt; WebCore/platform/graphics/chromium/VideoLayerChromium.cpp:257
&gt; +
&gt; +    // FIXME: If surface type is GL texture we should call putCurrentFrame() only after swap buffers happened.
&gt;      m_provider-&gt;putCurrentFrame(frame);

I think this goes away now

&gt; WebKit/chromium/public/WebVideoFrame.h:56
&gt; +        SurfaceTypeGlTexture,

This should probably match the other SurfaceType enum (i.e. not have &apos;Gl&apos;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288532</commentid>
    <comment_count>17</comment_count>
      <attachid>69531</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2010-10-01 15:47:47 -0700</bug_when>
    <thetext>Created attachment 69531
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288537</commentid>
    <comment_count>18</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2010-10-01 15:49:11 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Created an attachment (id=69531) [details]
&gt; Patch

DEPS chromium has already been rolled forward so it&apos;s not necessary to do it in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288549</commentid>
    <comment_count>19</comment_count>
      <attachid>69531</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-01 15:58:45 -0700</bug_when>
    <thetext>Comment on attachment 69531
Patch

Looks good to me.  Marking R+, although it would be great if Vangelis would give this a once-over before landing as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289706</commentid>
    <comment_count>20</comment_count>
      <attachid>69531</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-10-05 10:14:46 -0700</bug_when>
    <thetext>Comment on attachment 69531
Patch

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

Only nits from my side. Otherwise looks good.

&gt; WebCore/platform/graphics/chromium/VideoLayerChromium.h:52
&gt; +    // This function is called by VideFrameProvider. When this method is called

typo: VideoFrameProvider

&gt; WebKit/chromium/ChangeLog:8
&gt; +

Missing link to bug</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69131</attachid>
            <date>2010-09-28 16:40:57 -0700</date>
            <delta_ts>2010-09-28 17:04:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46765-20100928164056.patch</filename>
            <type>text/plain</type>
            <size>10421</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTFlOWMwY2JjMDFjYTUyMTJiNWNkNWI1NDRhMTEzOWZkYThlZjgwYy4uNGQzNWIzMWQyNDdlN2I3
YjQ5MGI5MjFhYzQyODUwNmI1ZmZiMTIxZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wOS0yOCAgQWxw
aGEgTGFtICA8aGNsYW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlciB0ZXh0dXJlcyBpbiBWaWRlb0xheWVyQ2hyb21p
dW0gZGlyZWN0bHkgaWYgdGhlIHZpZGVvIGZyYW1lIHR5cGUKKyAgICAgICAgaXMgR0wgdGV4dHVy
ZS4gSW4gdGhlIGZ1dHVyZSBWaWRlb0xheWVyQ2hyb21pdW0gd2lsbCBub3QgYWxsb2NhdGUKKyAg
ICAgICAgdGV4dHVyZXMgYW5kIHBlcmZvcm0gdGV4dHVyZXMgdXBsb2FkIGFzIHRob3NlIG9wZXJh
dGlvbnMgd2lsbCBiZSBkb25lCisgICAgICAgIGluIENocm9taXVtIHRvIG1pbmltaXplIG1lbW9y
eSBjb3B5LiBUaGlzIHBhdGNoIHdpbGwgaGVscCBtb3ZpbmcgdG93YXJkCisgICAgICAgIHRoaXMg
ZGlyZWN0aW9uIGFuZCBmYWNpbGl0YXRlIGhhcmR3YXJlIHZpZGVvIGRlY29kaW5nLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZUNocm9taXVtLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VmlkZW9MYXllckNocm9t
aXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6flZpZGVvTGF5ZXJD
aHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNv
bnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6YWxsb2NhdGVU
ZXh0dXJlc0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9W
aWRlb0xheWVyQ2hyb21pdW0uaDoKKwogMjAxMC0wOS0yOCAgRGF2aWQgSHlhdHQgIDxoeWF0dEBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZUNocm9taXVtLmgg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJhbWVDaHJvbWl1bS5o
CmluZGV4IDM0ZTkyMmI0ZjJhZGNkMmY4YzU3NDZmNTBkZmQwMmY0NjhkMGRkM2QuLjIyYWEyMjdi
NzJlYTFkY2M5YzVmMDM4Mzc5MDk0YzA0YmZmZmQ5MjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZUNocm9taXVtLmgKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0ZyYW1lQ2hyb21pdW0uaApAQCAtNjMs
MTAgKzYzLDcgQEAgcHVibGljOgogCiAgICAgZW51bSBTdXJmYWNlVHlwZSB7CiAgICAgICAgIFR5
cGVTeXN0ZW1NZW1vcnksCi0gICAgICAgIFR5cGVPTVhCdWZmZXJIZWFkLAotICAgICAgICBUeXBl
RUdMSW1hZ2UsCi0gICAgICAgIFR5cGVNRkJ1ZmZlciwKLSAgICAgICAgVHlwZURpcmVjdDNEU3Vy
ZmFjZQorICAgICAgICBUeXBlR2xUZXh0dXJlLAogICAgIH07CiAKICAgICB2aXJ0dWFsIFN1cmZh
Y2VUeXBlIHN1cmZhY2VUeXBlKCkgY29uc3QgPSAwOwpAQCAtNzYsNiArNzMsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB1bnNpZ25lZCBwbGFuZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBp
bnQgc3RyaWRlKHVuc2lnbmVkIHBsYW5lKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBjb25zdCB2
b2lkKiBkYXRhKHVuc2lnbmVkIHBsYW5lKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25l
ZCB0ZXh0dXJlKHVuc2lnbmVkIHBsYW5lKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBJ
bnRTaXplIHJlcXVpcmVkVGV4dHVyZVNpemUodW5zaWduZWQgcGxhbmUpIGNvbnN0ID0gMDsKIH07
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9M
YXllckNocm9taXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlk
ZW9MYXllckNocm9taXVtLmNwcAppbmRleCBlZDU5YTJkODkzMTJjNTNkYjJhMmU0MGU2NjJkM2E4
ZGQ1ZWI1OTQyLi41MDU0ZGNiZGE4ODQ1NWExNTQ2ZDFjMzJhMmIwOTRjZmE0MmI3YTk2IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJv
bWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xh
eWVyQ2hyb21pdW0uY3BwCkBAIC0xODQsNiArMTg0LDcgQEAgVmlkZW9MYXllckNocm9taXVtOjpW
aWRlb0xheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lciwgVmlkZW9GcmFt
ZVAKICAgICAsIG1fc2tpcHNEcmF3KHRydWUpCiAgICAgLCBtX2ZyYW1lRm9ybWF0KFZpZGVvRnJh
bWVDaHJvbWl1bTo6SW52YWxpZCkKICAgICAsIG1fcHJvdmlkZXIocHJvdmlkZXIpCisgICAgLCBt
X293blRleHR1cmVzKGZhbHNlKQogewogICAgIGZvciAodW5zaWduZWQgcGxhbmUgPSAwOyBwbGFu
ZSA8IFZpZGVvRnJhbWVDaHJvbWl1bTo6bWF4UGxhbmVzOyBwbGFuZSsrKSB7CiAgICAgICAgIG1f
dGV4dHVyZXNbcGxhbmVdID0gMDsKQEAgLTE5NCw2ICsxOTUsOCBAQCBWaWRlb0xheWVyQ2hyb21p
dW06OlZpZGVvTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyLCBWaWRl
b0ZyYW1lUAogCiBWaWRlb0xheWVyQ2hyb21pdW06On5WaWRlb0xheWVyQ2hyb21pdW0oKQogewor
ICAgIGlmICghbV9vd25UZXh0dXJlcykKKyAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsKICAgICBmb3IgKHVuc2ln
bmVkIHBsYW5lID0gMDsgcGxhbmUgPCBWaWRlb0ZyYW1lQ2hyb21pdW06Om1heFBsYW5lczsgcGxh
bmUrKykgewogICAgICAgICBpZiAobV90ZXh0dXJlc1twbGFuZV0pCkBAIC0yMjcsMjQgKzIzMCwz
MiBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHMoKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgLy8gQWxsb2NhdGUgdGV4dHVyZXMgZm9yIHBsYW5lcyBpZiB0
aGV5IGFyZSBub3QgYWxsb2NhdGVkIGFscmVhZHksIG9yCi0gICAgLy8gcmVhbGxvY2F0ZSB0ZXh0
dXJlcyB0aGF0IGFyZSB0aGUgd3Jvbmcgc2l6ZSBmb3IgdGhlIGZyYW1lLgotICAgIEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsKLSAgICBib29sIHRl
eHR1cmVzQWxsb2NhdGVkID0gYWxsb2NhdGVUZXh0dXJlc0lmTmVlZGVkKGNvbnRleHQsIGZyYW1l
LCB0ZXh0dXJlRm9ybWF0KTsKLSAgICBpZiAoIXRleHR1cmVzQWxsb2NhdGVkKSB7Ci0gICAgICAg
IG1fc2tpcHNEcmF3ID0gdHJ1ZTsKLSAgICAgICAgbV9wcm92aWRlci0+cHV0Q3VycmVudEZyYW1l
KGZyYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZnJhbWUtPnN1cmZhY2VU
eXBlKCkgPT0gVmlkZW9GcmFtZUNocm9taXVtOjpUeXBlR2xUZXh0dXJlKSB7CisgICAgICAgIEFT
U0VSVCghbV9vd25UZXh0dXJlcyk7CisgICAgICAgIGZvciAodW5zaWduZWQgcGxhbmUgPSAwOyBw
bGFuZSA8IGZyYW1lLT5wbGFuZXMoKTsgcGxhbmUrKykKKyAgICAgICAgICAgIG1fdGV4dHVyZXNb
cGxhbmVdID0gZnJhbWUtPnRleHR1cmUocGxhbmUpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8v
IEFsbG9jYXRlIHRleHR1cmVzIGZvciBwbGFuZXMgaWYgdGhleSBhcmUgbm90IGFsbG9jYXRlZCBh
bHJlYWR5LCBvcgorICAgICAgICAvLyByZWFsbG9jYXRlIHRleHR1cmVzIHRoYXQgYXJlIHRoZSB3
cm9uZyBzaXplIGZvciB0aGUgZnJhbWUuCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsKKyAgICAgICAgYm9vbCB0ZXh0dXJlc0FsbG9j
YXRlZCA9IGFsbG9jYXRlVGV4dHVyZXNJZk5lZWRlZChjb250ZXh0LCBmcmFtZSwgdGV4dHVyZUZv
cm1hdCk7CisgICAgICAgIGlmICghdGV4dHVyZXNBbGxvY2F0ZWQpIHsKKyAgICAgICAgICAgIG1f
c2tpcHNEcmF3ID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fcHJvdmlkZXItPnB1dEN1cnJlbnRGcmFt
ZShmcmFtZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAgIC8vIFVwZGF0
ZSB0ZXh0dXJlIHBsYW5lcy4KLSAgICBmb3IgKHVuc2lnbmVkIHBsYW5lID0gMDsgcGxhbmUgPCBm
cmFtZS0+cGxhbmVzKCk7IHBsYW5lKyspIHsKLSAgICAgICAgQVNTRVJUKGZyYW1lLT5yZXF1aXJl
ZFRleHR1cmVTaXplKHBsYW5lKSA9PSBtX3RleHR1cmVTaXplc1twbGFuZV0pOwotICAgICAgICB1
cGRhdGVUZXh0dXJlKGNvbnRleHQsIG1fdGV4dHVyZXNbcGxhbmVdLCBmcmFtZS0+cmVxdWlyZWRU
ZXh0dXJlU2l6ZShwbGFuZSksIHRleHR1cmVGb3JtYXQsIGZyYW1lLT5kYXRhKHBsYW5lKSk7Cisg
ICAgICAgIC8vIFVwZGF0ZSB0ZXh0dXJlIHBsYW5lcy4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBw
bGFuZSA9IDA7IHBsYW5lIDwgZnJhbWUtPnBsYW5lcygpOyBwbGFuZSsrKSB7CisgICAgICAgICAg
ICBBU1NFUlQoZnJhbWUtPnJlcXVpcmVkVGV4dHVyZVNpemUocGxhbmUpID09IG1fdGV4dHVyZVNp
emVzW3BsYW5lXSk7CisgICAgICAgICAgICB1cGRhdGVUZXh0dXJlKGNvbnRleHQsIG1fdGV4dHVy
ZXNbcGxhbmVdLCBmcmFtZS0+cmVxdWlyZWRUZXh0dXJlU2l6ZShwbGFuZSksIHRleHR1cmVGb3Jt
YXQsIGZyYW1lLT5kYXRhKHBsYW5lKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBtX2RpcnR5
UmVjdC5zZXRTaXplKEZsb2F0U2l6ZSgpKTsKICAgICBtX2NvbnRlbnRzRGlydHkgPSBmYWxzZTsK
KworICAgIC8vIEZJWE1FOiBJZiBzdXJmYWNlIHR5cGUgaXMgR0wgdGV4dHVyZSB3ZSBzaG91bGQg
Y2FsbCBwdXRDdXJyZW50RnJhbWUoKSBvbmx5IGFmdGVyIHN3YXAgYnVmZmVycyBoYXBwZW5lZC4K
ICAgICBtX3Byb3ZpZGVyLT5wdXRDdXJyZW50RnJhbWUoZnJhbWUpOwogfQogCkBAIC0yNzQsOCAr
Mjg1LDEwIEBAIGJvb2wgVmlkZW9MYXllckNocm9taXVtOjphbGxvY2F0ZVRleHR1cmVzSWZOZWVk
ZWQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFZpCiAgICAgICAgIGlmICghbGF5ZXJSZW5k
ZXJlcigpLT5jaGVja1RleHR1cmVTaXplKHBsYW5lVGV4dHVyZVNpemUpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICghbV90ZXh0dXJlc1twbGFuZV0pCisgICAgICAg
IGlmICghbV90ZXh0dXJlc1twbGFuZV0pIHsKICAgICAgICAgICAgIG1fdGV4dHVyZXNbcGxhbmVd
ID0gbGF5ZXJSZW5kZXJlcigpLT5jcmVhdGVMYXllclRleHR1cmUoKTsKKyAgICAgICAgICAgIG1f
b3duVGV4dHVyZXMgPSB0cnVlOworICAgICAgICB9CiAKICAgICAgICAgaWYgKCFwbGFuZVRleHR1
cmVTaXplLmlzWmVybygpICYmIHBsYW5lVGV4dHVyZVNpemUgIT0gbV90ZXh0dXJlU2l6ZXNbcGxh
bmVdKSB7CiAgICAgICAgICAgICBhbGxvY2F0ZVRleHR1cmUoY29udGV4dCwgbV90ZXh0dXJlc1tw
bGFuZV0sIHBsYW5lVGV4dHVyZVNpemUsIHRleHR1cmVGb3JtYXQpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKaW5k
ZXggNjIwZDFhNzJiOTEyNTNjOTI1YTcxZGQ2YjQ0ODBjYTQ4MDFiMzFjZi4uNzdmZjNiZGE3YTFh
NGRjM2ViZmY1YjU5MWZkZjFjYjA5NTFiMTE4MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCkBAIC0xMDIsNiAr
MTAyLDcgQEAgcHJpdmF0ZToKICAgICBWaWRlb0ZyYW1lQ2hyb21pdW06OkZvcm1hdCBtX2ZyYW1l
Rm9ybWF0OwogICAgIE93blB0cjxWaWRlb0ZyYW1lUHJvdmlkZXI+IG1fcHJvdmlkZXI7CiAgICAg
dW5zaWduZWQgbV90ZXh0dXJlc1szXTsKKyAgICBib29sIG1fb3duVGV4dHVyZXM7CiAgICAgSW50
U2l6ZSBtX3RleHR1cmVTaXplc1szXTsKICAgICBJbnRTaXplIG1fZnJhbWVTaXplc1szXTsKIH07
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwppbmRleCBhMjg1MTdhZmIwNTFjYTVmODBkNzk5NzFkYTM3MjM1YWY2NTYyN2Ix
Li44MTM3MzczZjJiNmVjYWU3ODc1NDZiODE1ZmMwYmYwZWM4ODRiN2FhIDEwMDY0NAotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxMC0wOS0yOCAgQWxwaGEgTGFtICA8aGNsYW1AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBnZXR0ZXIgZm9yIGFjY2Vzc2luZyB0ZXh0dXJlcyBzdG9yZWQgaW4gVmlkZW9GcmFtZUNocm9t
aXVtIGFuZCBXZWJWaWRlb0ZyYW1lLgorCisgICAgICAgICogcHVibGljL1dlYlZpZGVvRnJhbWUu
aDoKKyAgICAgICAgKiBzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6CisgICAgICAgICogc3Jj
L1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0ZyYW1l
Q2hyb21pdW1JbXBsOjp0ZXh0dXJlKToKKyAgICAgICAgKiBzcmMvVmlkZW9GcmFtZUNocm9taXVt
SW1wbC5oOgorCiAyMDEwLTA5LTI4ICBWYW5nZWxpcyBLb2trZXZpcyAgPHZhbmdlbGlzQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZGVvRnJhbWUuaCBiL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVmlkZW9GcmFtZS5oCmluZGV4IDVlMzRmMmE0NGM4NTE5NGVjNzliZDE3
ZTAwNmI0ZDMxNWJiN2NjOWIuLjQ4ZGUwYWNkMDU5YWYzNzkwZDMxNzkyMDAzNzM0YzIwOTA2N2Iw
ZjQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9GcmFtZS5oCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9GcmFtZS5oCkBAIC01MywxMCArNTMs
NyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIFN1cmZhY2VUeXBlIHsKICAgICAgICAgU3VyZmFjZVR5
cGVTeXN0ZW1NZW1vcnksCi0gICAgICAgIFN1cmZhY2VUeXBlT01YQnVmZmVySGVhZCwKLSAgICAg
ICAgU3VyZmFjZVR5cGVFR0xJbWFnZSwKLSAgICAgICAgU3VyZmFjZVR5cGVNRkJ1ZmZlciwKLSAg
ICAgICAgU3VyZmFjZVR5cGVEaXJlY3QzRFN1cmZhY2UKKyAgICAgICAgU3VyZmFjZVR5cGVHbFRl
eHR1cmUsCiAgICAgfTsKIAogICAgIHZpcnR1YWwgU3VyZmFjZVR5cGUgc3VyZmFjZVR5cGUoKSBj
b25zdCA9IDA7CkBAIC02Niw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHVuc2lnbmVk
IHBsYW5lcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGludCBzdHJpZGUodW5zaWduZWQgcGxh
bmUpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IHZvaWQqIGRhdGEodW5zaWduZWQgcGxh
bmUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHRleHR1cmUodW5zaWduZWQgcGxh
bmUpIGNvbnN0ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcCBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKaW5kZXggZjNiOGY1YTFkNjcxOTdkNzcw
YWNkMWRlNDdhMjViYTZjZGExM2I0Yi4uOWY5N2QwZDYwNzYzNzMwYzczYmI5MTk2ODA0MWUxNTYw
YmRhZDE2MSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0Vu
dW1zLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3Bw
CkBAIC0zMjEsMTAgKzMyMSw3IEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVmlk
ZW9GcmFtZTo6Rm9ybWF0RW1wdHksIFZpZGVvRnJhbWVDaHJvbWl1bTo6RW1wCiBDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKFdlYlZpZGVvRnJhbWU6OkZvcm1hdEFTQ0lJLCBWaWRlb0ZyYW1l
Q2hyb21pdW06OkFTQ0lJKTsKIAogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJWaWRl
b0ZyYW1lOjpTdXJmYWNlVHlwZVN5c3RlbU1lbW9yeSwgVmlkZW9GcmFtZUNocm9taXVtOjpUeXBl
U3lzdGVtTWVtb3J5KTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVmlkZW9GcmFt
ZTo6U3VyZmFjZVR5cGVPTVhCdWZmZXJIZWFkLCBWaWRlb0ZyYW1lQ2hyb21pdW06OlR5cGVPTVhC
dWZmZXJIZWFkKTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVmlkZW9GcmFtZTo6
U3VyZmFjZVR5cGVFR0xJbWFnZSwgVmlkZW9GcmFtZUNocm9taXVtOjpUeXBlRUdMSW1hZ2UpOwot
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJWaWRlb0ZyYW1lOjpTdXJmYWNlVHlwZU1G
QnVmZmVyLCBWaWRlb0ZyYW1lQ2hyb21pdW06OlR5cGVNRkJ1ZmZlcik7Ci1DT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKFdlYlZpZGVvRnJhbWU6OlN1cmZhY2VUeXBlRGlyZWN0M0RTdXJmYWNl
LCBWaWRlb0ZyYW1lQ2hyb21pdW06OlR5cGVEaXJlY3QzRFN1cmZhY2UpOworQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJWaWRlb0ZyYW1lOjpTdXJmYWNlVHlwZUdsVGV4dHVyZSwgVmlk
ZW9GcmFtZUNocm9taXVtOjpUeXBlR2xUZXh0dXJlKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1ZpZGVvRnJhbWVD
aHJvbWl1bUltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1J
bXBsLmNwcAppbmRleCBhNjBmZTI4YzExMGNmM2IyM2ZiNmY3OTVhNTUyMWI4ZmIyYWM4ODM2Li45
OWUzZTFlNzIyNmJlNTViNDFmMzBhZTRhNzg0NWVlMTgxMjA3NTUxIDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuY3BwCisrKyBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5jcHAKQEAgLTEwMCw2ICsxMDAsMTMg
QEAgY29uc3Qgdm9pZCogVmlkZW9GcmFtZUNocm9taXVtSW1wbDo6ZGF0YSh1bnNpZ25lZCBwbGFu
ZSkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAordW5zaWduZWQgVmlkZW9GcmFtZUNocm9taXVt
SW1wbDo6dGV4dHVyZSh1bnNpZ25lZCBwbGFuZSkgY29uc3QKK3sKKyAgICBpZiAobV93ZWJWaWRl
b0ZyYW1lKQorICAgICAgICByZXR1cm4gbV93ZWJWaWRlb0ZyYW1lLT50ZXh0dXJlKHBsYW5lKTsK
KyAgICByZXR1cm4gMDsKK30KKwogY29uc3QgSW50U2l6ZSBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBs
OjpyZXF1aXJlZFRleHR1cmVTaXplKHVuc2lnbmVkIHBsYW5lKSBjb25zdAogewogICAgIHN3aXRj
aCAoZm9ybWF0KCkpIHsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvVmlkZW9GcmFt
ZUNocm9taXVtSW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1J
bXBsLmgKaW5kZXggMDQyY2Q3ZTcxNjM1NmJhZmI0NWJmYzc0NTkyOTVmMzhkYjc5M2JiZC4uZjg2
ZWUxYzBkNTMyMGM3OTZkZTEzY2VlZjI0YjVkYjg2MGVmNmY5MyAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmgKQEAgLTU2LDYgKzU2LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdW5zaWduZWQgcGxhbmVzKCkgY29uc3Q7CiAgICAgdmlydHVhbCBpbnQg
c3RyaWRlKHVuc2lnbmVkIHBsYW5lKSBjb25zdDsKICAgICB2aXJ0dWFsIGNvbnN0IHZvaWQqIGRh
dGEodW5zaWduZWQgcGxhbmUpIGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQgdGV4dHVyZSh1
bnNpZ25lZCBwbGFuZSkgY29uc3Q7CiAgICAgdmlydHVhbCBjb25zdCBJbnRTaXplIHJlcXVpcmVk
VGV4dHVyZVNpemUodW5zaWduZWQgcGxhbmUpIGNvbnN0OwogCiBwcml2YXRlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69137</attachid>
            <date>2010-09-28 17:04:29 -0700</date>
            <delta_ts>2010-09-29 17:11:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46765-20100928170428.patch</filename>
            <type>text/plain</type>
            <size>10415</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTFlOWMwY2JjMDFjYTUyMTJiNWNkNWI1NDRhMTEzOWZkYThlZjgwYy4uNGQzNWIzMWQyNDdlN2I3
YjQ5MGI5MjFhYzQyODUwNmI1ZmZiMTIxZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wOS0yOCAgQWxw
aGEgTGFtICA8aGNsYW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlciB0ZXh0dXJlcyBpbiBWaWRlb0xheWVyQ2hyb21p
dW0gZGlyZWN0bHkgaWYgdGhlIHZpZGVvIGZyYW1lIHR5cGUKKyAgICAgICAgaXMgR0wgdGV4dHVy
ZS4gSW4gdGhlIGZ1dHVyZSBWaWRlb0xheWVyQ2hyb21pdW0gd2lsbCBub3QgYWxsb2NhdGUKKyAg
ICAgICAgdGV4dHVyZXMgYW5kIHBlcmZvcm0gdGV4dHVyZXMgdXBsb2FkIGFzIHRob3NlIG9wZXJh
dGlvbnMgd2lsbCBiZSBkb25lCisgICAgICAgIGluIENocm9taXVtIHRvIG1pbmltaXplIG1lbW9y
eSBjb3B5LiBUaGlzIHBhdGNoIHdpbGwgaGVscCBtb3ZpbmcgdG93YXJkCisgICAgICAgIHRoaXMg
ZGlyZWN0aW9uIGFuZCBmYWNpbGl0YXRlIGhhcmR3YXJlIHZpZGVvIGRlY29kaW5nLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZUNocm9taXVtLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VmlkZW9MYXllckNocm9t
aXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6flZpZGVvTGF5ZXJD
aHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNv
bnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6YWxsb2NhdGVU
ZXh0dXJlc0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9W
aWRlb0xheWVyQ2hyb21pdW0uaDoKKwogMjAxMC0wOS0yOCAgRGF2aWQgSHlhdHQgIDxoeWF0dEBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZUNocm9taXVtLmgg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJhbWVDaHJvbWl1bS5o
CmluZGV4IDM0ZTkyMmI0ZjJhZGNkMmY4YzU3NDZmNTBkZmQwMmY0NjhkMGRkM2QuLmUxNzZiMGM3
N2ZhOWZiOWY1MThmNjM3NGMxOWUyMjBkZTBkYzc0OTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZUNocm9taXVtLmgKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0ZyYW1lQ2hyb21pdW0uaApAQCAtNjMs
MTAgKzYzLDcgQEAgcHVibGljOgogCiAgICAgZW51bSBTdXJmYWNlVHlwZSB7CiAgICAgICAgIFR5
cGVTeXN0ZW1NZW1vcnksCi0gICAgICAgIFR5cGVPTVhCdWZmZXJIZWFkLAotICAgICAgICBUeXBl
RUdMSW1hZ2UsCi0gICAgICAgIFR5cGVNRkJ1ZmZlciwKLSAgICAgICAgVHlwZURpcmVjdDNEU3Vy
ZmFjZQorICAgICAgICBUeXBlVGV4dHVyZSwKICAgICB9OwogCiAgICAgdmlydHVhbCBTdXJmYWNl
VHlwZSBzdXJmYWNlVHlwZSgpIGNvbnN0ID0gMDsKQEAgLTc2LDYgKzczLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdW5zaWduZWQgcGxhbmVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgaW50
IHN0cmlkZSh1bnNpZ25lZCBwbGFuZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgY29uc3Qgdm9p
ZCogZGF0YSh1bnNpZ25lZCBwbGFuZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQg
dGV4dHVyZSh1bnNpZ25lZCBwbGFuZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgSW50
U2l6ZSByZXF1aXJlZFRleHR1cmVTaXplKHVuc2lnbmVkIHBsYW5lKSBjb25zdCA9IDA7CiB9Owog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5
ZXJDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVv
TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZWQ1OWEyZDg5MzEyYzUzZGIyYTJlNDBlNjYyZDNhOGRk
NWViNTk0Mi4uOTY3MDM0MjJhMTA1MDhjNDU1MDE0OGMzMjJhNzQ5ODE5OGZhMDllNyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21p
dW0uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXll
ckNocm9taXVtLmNwcApAQCAtMTg0LDYgKzE4NCw3IEBAIFZpZGVvTGF5ZXJDaHJvbWl1bTo6Vmlk
ZW9MYXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIsIFZpZGVvRnJhbWVQ
CiAgICAgLCBtX3NraXBzRHJhdyh0cnVlKQogICAgICwgbV9mcmFtZUZvcm1hdChWaWRlb0ZyYW1l
Q2hyb21pdW06OkludmFsaWQpCiAgICAgLCBtX3Byb3ZpZGVyKHByb3ZpZGVyKQorICAgICwgbV9v
d25UZXh0dXJlcyhmYWxzZSkKIHsKICAgICBmb3IgKHVuc2lnbmVkIHBsYW5lID0gMDsgcGxhbmUg
PCBWaWRlb0ZyYW1lQ2hyb21pdW06Om1heFBsYW5lczsgcGxhbmUrKykgewogICAgICAgICBtX3Rl
eHR1cmVzW3BsYW5lXSA9IDA7CkBAIC0xOTQsNiArMTk1LDggQEAgVmlkZW9MYXllckNocm9taXVt
OjpWaWRlb0xheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lciwgVmlkZW9G
cmFtZVAKIAogVmlkZW9MYXllckNocm9taXVtOjp+VmlkZW9MYXllckNocm9taXVtKCkKIHsKKyAg
ICBpZiAoIW1fb3duVGV4dHVyZXMpCisgICAgICAgIHJldHVybjsKICAgICBHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCA9IGxheWVyUmVuZGVyZXJDb250ZXh0KCk7CiAgICAgZm9yICh1bnNpZ25l
ZCBwbGFuZSA9IDA7IHBsYW5lIDwgVmlkZW9GcmFtZUNocm9taXVtOjptYXhQbGFuZXM7IHBsYW5l
KyspIHsKICAgICAgICAgaWYgKG1fdGV4dHVyZXNbcGxhbmVdKQpAQCAtMjI3LDI0ICsyMzAsMzIg
QEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzKCkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIC8vIEFsbG9jYXRlIHRleHR1cmVzIGZvciBwbGFuZXMgaWYgdGhl
eSBhcmUgbm90IGFsbG9jYXRlZCBhbHJlYWR5LCBvcgotICAgIC8vIHJlYWxsb2NhdGUgdGV4dHVy
ZXMgdGhhdCBhcmUgdGhlIHdyb25nIHNpemUgZm9yIHRoZSBmcmFtZS4KLSAgICBHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCA9IGxheWVyUmVuZGVyZXJDb250ZXh0KCk7Ci0gICAgYm9vbCB0ZXh0
dXJlc0FsbG9jYXRlZCA9IGFsbG9jYXRlVGV4dHVyZXNJZk5lZWRlZChjb250ZXh0LCBmcmFtZSwg
dGV4dHVyZUZvcm1hdCk7Ci0gICAgaWYgKCF0ZXh0dXJlc0FsbG9jYXRlZCkgewotICAgICAgICBt
X3NraXBzRHJhdyA9IHRydWU7Ci0gICAgICAgIG1fcHJvdmlkZXItPnB1dEN1cnJlbnRGcmFtZShm
cmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGZyYW1lLT5zdXJmYWNlVHlw
ZSgpID09IFZpZGVvRnJhbWVDaHJvbWl1bTo6VHlwZVRleHR1cmUpIHsKKyAgICAgICAgQVNTRVJU
KCFtX293blRleHR1cmVzKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5l
IDwgZnJhbWUtPnBsYW5lcygpOyBwbGFuZSsrKQorICAgICAgICAgICAgbV90ZXh0dXJlc1twbGFu
ZV0gPSBmcmFtZS0+dGV4dHVyZShwbGFuZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gQWxs
b2NhdGUgdGV4dHVyZXMgZm9yIHBsYW5lcyBpZiB0aGV5IGFyZSBub3QgYWxsb2NhdGVkIGFscmVh
ZHksIG9yCisgICAgICAgIC8vIHJlYWxsb2NhdGUgdGV4dHVyZXMgdGhhdCBhcmUgdGhlIHdyb25n
IHNpemUgZm9yIHRoZSBmcmFtZS4KKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQg
PSBsYXllclJlbmRlcmVyQ29udGV4dCgpOworICAgICAgICBib29sIHRleHR1cmVzQWxsb2NhdGVk
ID0gYWxsb2NhdGVUZXh0dXJlc0lmTmVlZGVkKGNvbnRleHQsIGZyYW1lLCB0ZXh0dXJlRm9ybWF0
KTsKKyAgICAgICAgaWYgKCF0ZXh0dXJlc0FsbG9jYXRlZCkgeworICAgICAgICAgICAgbV9za2lw
c0RyYXcgPSB0cnVlOworICAgICAgICAgICAgbV9wcm92aWRlci0+cHV0Q3VycmVudEZyYW1lKGZy
YW1lKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAgLy8gVXBkYXRlIHRl
eHR1cmUgcGxhbmVzLgotICAgIGZvciAodW5zaWduZWQgcGxhbmUgPSAwOyBwbGFuZSA8IGZyYW1l
LT5wbGFuZXMoKTsgcGxhbmUrKykgewotICAgICAgICBBU1NFUlQoZnJhbWUtPnJlcXVpcmVkVGV4
dHVyZVNpemUocGxhbmUpID09IG1fdGV4dHVyZVNpemVzW3BsYW5lXSk7Ci0gICAgICAgIHVwZGF0
ZVRleHR1cmUoY29udGV4dCwgbV90ZXh0dXJlc1twbGFuZV0sIGZyYW1lLT5yZXF1aXJlZFRleHR1
cmVTaXplKHBsYW5lKSwgdGV4dHVyZUZvcm1hdCwgZnJhbWUtPmRhdGEocGxhbmUpKTsKKyAgICAg
ICAgLy8gVXBkYXRlIHRleHR1cmUgcGxhbmVzLgorICAgICAgICBmb3IgKHVuc2lnbmVkIHBsYW5l
ID0gMDsgcGxhbmUgPCBmcmFtZS0+cGxhbmVzKCk7IHBsYW5lKyspIHsKKyAgICAgICAgICAgIEFT
U0VSVChmcmFtZS0+cmVxdWlyZWRUZXh0dXJlU2l6ZShwbGFuZSkgPT0gbV90ZXh0dXJlU2l6ZXNb
cGxhbmVdKTsKKyAgICAgICAgICAgIHVwZGF0ZVRleHR1cmUoY29udGV4dCwgbV90ZXh0dXJlc1tw
bGFuZV0sIGZyYW1lLT5yZXF1aXJlZFRleHR1cmVTaXplKHBsYW5lKSwgdGV4dHVyZUZvcm1hdCwg
ZnJhbWUtPmRhdGEocGxhbmUpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIG1fZGlydHlSZWN0
LnNldFNpemUoRmxvYXRTaXplKCkpOwogICAgIG1fY29udGVudHNEaXJ0eSA9IGZhbHNlOworCisg
ICAgLy8gRklYTUU6IElmIHN1cmZhY2UgdHlwZSBpcyBHTCB0ZXh0dXJlIHdlIHNob3VsZCBjYWxs
IHB1dEN1cnJlbnRGcmFtZSgpIG9ubHkgYWZ0ZXIgc3dhcCBidWZmZXJzIGhhcHBlbmVkLgogICAg
IG1fcHJvdmlkZXItPnB1dEN1cnJlbnRGcmFtZShmcmFtZSk7CiB9CiAKQEAgLTI3NCw4ICsyODUs
MTAgQEAgYm9vbCBWaWRlb0xheWVyQ2hyb21pdW06OmFsbG9jYXRlVGV4dHVyZXNJZk5lZWRlZChH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVmkKICAgICAgICAgaWYgKCFsYXllclJlbmRlcmVy
KCktPmNoZWNrVGV4dHVyZVNpemUocGxhbmVUZXh0dXJlU2l6ZSkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKCFtX3RleHR1cmVzW3BsYW5lXSkKKyAgICAgICAgaWYg
KCFtX3RleHR1cmVzW3BsYW5lXSkgewogICAgICAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0gPSBs
YXllclJlbmRlcmVyKCktPmNyZWF0ZUxheWVyVGV4dHVyZSgpOworICAgICAgICAgICAgbV9vd25U
ZXh0dXJlcyA9IHRydWU7CisgICAgICAgIH0KIAogICAgICAgICBpZiAoIXBsYW5lVGV4dHVyZVNp
emUuaXNaZXJvKCkgJiYgcGxhbmVUZXh0dXJlU2l6ZSAhPSBtX3RleHR1cmVTaXplc1twbGFuZV0p
IHsKICAgICAgICAgICAgIGFsbG9jYXRlVGV4dHVyZShjb250ZXh0LCBtX3RleHR1cmVzW3BsYW5l
XSwgcGxhbmVUZXh0dXJlU2l6ZSwgdGV4dHVyZUZvcm1hdCk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAppbmRleCA2
MjBkMWE3MmI5MTI1M2M5MjVhNzFkZDZiNDQ4MGNhNDgwMWIzMWNmLi43N2ZmM2JkYTdhMWE0ZGMz
ZWJmZjViNTkxZmRmMWNiMDk1MWIxMTgzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKQEAgLTEwMiw2ICsxMDIs
NyBAQCBwcml2YXRlOgogICAgIFZpZGVvRnJhbWVDaHJvbWl1bTo6Rm9ybWF0IG1fZnJhbWVGb3Jt
YXQ7CiAgICAgT3duUHRyPFZpZGVvRnJhbWVQcm92aWRlcj4gbV9wcm92aWRlcjsKICAgICB1bnNp
Z25lZCBtX3RleHR1cmVzWzNdOworICAgIGJvb2wgbV9vd25UZXh0dXJlczsKICAgICBJbnRTaXpl
IG1fdGV4dHVyZVNpemVzWzNdOwogICAgIEludFNpemUgbV9mcmFtZVNpemVzWzNdOwogfTsKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IGEyODUxN2FmYjA1MWNhNWY4MGQ3OTk3MWRhMzcyMzVhZjY1NjI3YjEuLjgx
MzczNzNmMmI2ZWNhZTc4NzU0NmI4MTVmYzBiZjBlYzg4NGI3YWEgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDEwLTA5LTI4ICBBbHBoYSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGdl
dHRlciBmb3IgYWNjZXNzaW5nIHRleHR1cmVzIHN0b3JlZCBpbiBWaWRlb0ZyYW1lQ2hyb21pdW0g
YW5kIFdlYlZpZGVvRnJhbWUuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViVmlkZW9GcmFtZS5oOgor
ICAgICAgICAqIHNyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcDoKKyAgICAgICAgKiBzcmMvVmlk
ZW9GcmFtZUNocm9taXVtSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnJhbWVDaHJv
bWl1bUltcGw6OnRleHR1cmUpOgorICAgICAgICAqIHNyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBs
Lmg6CisKIDIwMTAtMDktMjggIFZhbmdlbGlzIEtva2tldmlzICA8dmFuZ2VsaXNAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9GcmFtZS5oIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJWaWRlb0ZyYW1lLmgKaW5kZXggNWUzNGYyYTQ0Yzg1MTk0ZWM3OWJkMTdlMDA2
YjRkMzE1YmI3Y2M5Yi4uNDhkZTBhY2QwNTlhZjM3OTBkMzE3OTIwMDM3MzRjMjA5MDY3YjBmNCAx
MDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWRlb0ZyYW1lLmgKKysrIGIv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWRlb0ZyYW1lLmgKQEAgLTUzLDEwICs1Myw3IEBA
IHB1YmxpYzoKIAogICAgIGVudW0gU3VyZmFjZVR5cGUgewogICAgICAgICBTdXJmYWNlVHlwZVN5
c3RlbU1lbW9yeSwKLSAgICAgICAgU3VyZmFjZVR5cGVPTVhCdWZmZXJIZWFkLAotICAgICAgICBT
dXJmYWNlVHlwZUVHTEltYWdlLAotICAgICAgICBTdXJmYWNlVHlwZU1GQnVmZmVyLAotICAgICAg
ICBTdXJmYWNlVHlwZURpcmVjdDNEU3VyZmFjZQorICAgICAgICBTdXJmYWNlVHlwZUdsVGV4dHVy
ZSwKICAgICB9OwogCiAgICAgdmlydHVhbCBTdXJmYWNlVHlwZSBzdXJmYWNlVHlwZSgpIGNvbnN0
ID0gMDsKQEAgLTY2LDYgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdW5zaWduZWQgcGxh
bmVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgaW50IHN0cmlkZSh1bnNpZ25lZCBwbGFuZSkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgY29uc3Qgdm9pZCogZGF0YSh1bnNpZ25lZCBwbGFuZSkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgdGV4dHVyZSh1bnNpZ25lZCBwbGFuZSkg
Y29uc3QgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAppbmRleCBmM2I4ZjVhMWQ2NzE5N2Q3NzBhY2Qx
ZGU0N2EyNWJhNmNkYTEzYjRiLi42MDRkMzk2MTJiZmEyNTg1YTUxMjRmN2U2OWZjYTVjZmFlNjg0
Y2I2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMu
Y3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKQEAg
LTMyMSwxMCArMzIxLDcgQEAgQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJWaWRlb0Zy
YW1lOjpGb3JtYXRFbXB0eSwgVmlkZW9GcmFtZUNocm9taXVtOjpFbXAKIENPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oV2ViVmlkZW9GcmFtZTo6Rm9ybWF0QVNDSUksIFZpZGVvRnJhbWVDaHJv
bWl1bTo6QVNDSUkpOwogCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlZpZGVvRnJh
bWU6OlN1cmZhY2VUeXBlU3lzdGVtTWVtb3J5LCBWaWRlb0ZyYW1lQ2hyb21pdW06OlR5cGVTeXN0
ZW1NZW1vcnkpOwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJWaWRlb0ZyYW1lOjpT
dXJmYWNlVHlwZU9NWEJ1ZmZlckhlYWQsIFZpZGVvRnJhbWVDaHJvbWl1bTo6VHlwZU9NWEJ1ZmZl
ckhlYWQpOwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJWaWRlb0ZyYW1lOjpTdXJm
YWNlVHlwZUVHTEltYWdlLCBWaWRlb0ZyYW1lQ2hyb21pdW06OlR5cGVFR0xJbWFnZSk7Ci1DT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlZpZGVvRnJhbWU6OlN1cmZhY2VUeXBlTUZCdWZm
ZXIsIFZpZGVvRnJhbWVDaHJvbWl1bTo6VHlwZU1GQnVmZmVyKTsKLUNPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oV2ViVmlkZW9GcmFtZTo6U3VyZmFjZVR5cGVEaXJlY3QzRFN1cmZhY2UsIFZp
ZGVvRnJhbWVDaHJvbWl1bTo6VHlwZURpcmVjdDNEU3VyZmFjZSk7CitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYlZpZGVvRnJhbWU6OlN1cmZhY2VUeXBlR2xUZXh0dXJlLCBWaWRlb0Zy
YW1lQ2hyb21pdW06OlR5cGVUZXh0dXJlKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1ZpZGVvRnJhbWVDaHJvbWl1
bUltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmNw
cAppbmRleCBhNjBmZTI4YzExMGNmM2IyM2ZiNmY3OTVhNTUyMWI4ZmIyYWM4ODM2Li45OWUzZTFl
NzIyNmJlNTViNDFmMzBhZTRhNzg0NWVlMTgxMjA3NTUxIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5jcHAKQEAgLTEwMCw2ICsxMDAsMTMgQEAgY29u
c3Qgdm9pZCogVmlkZW9GcmFtZUNocm9taXVtSW1wbDo6ZGF0YSh1bnNpZ25lZCBwbGFuZSkgY29u
c3QKICAgICByZXR1cm4gMDsKIH0KIAordW5zaWduZWQgVmlkZW9GcmFtZUNocm9taXVtSW1wbDo6
dGV4dHVyZSh1bnNpZ25lZCBwbGFuZSkgY29uc3QKK3sKKyAgICBpZiAobV93ZWJWaWRlb0ZyYW1l
KQorICAgICAgICByZXR1cm4gbV93ZWJWaWRlb0ZyYW1lLT50ZXh0dXJlKHBsYW5lKTsKKyAgICBy
ZXR1cm4gMDsKK30KKwogY29uc3QgSW50U2l6ZSBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjpyZXF1
aXJlZFRleHR1cmVTaXplKHVuc2lnbmVkIHBsYW5lKSBjb25zdAogewogICAgIHN3aXRjaCAoZm9y
bWF0KCkpIHsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvVmlkZW9GcmFtZUNocm9t
aXVtSW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmgK
aW5kZXggMDQyY2Q3ZTcxNjM1NmJhZmI0NWJmYzc0NTkyOTVmMzhkYjc5M2JiZC4uZjg2ZWUxYzBk
NTMyMGM3OTZkZTEzY2VlZjI0YjVkYjg2MGVmNmY5MyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmgKQEAgLTU2LDYgKzU2LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdW5zaWduZWQgcGxhbmVzKCkgY29uc3Q7CiAgICAgdmlydHVhbCBpbnQgc3RyaWRl
KHVuc2lnbmVkIHBsYW5lKSBjb25zdDsKICAgICB2aXJ0dWFsIGNvbnN0IHZvaWQqIGRhdGEodW5z
aWduZWQgcGxhbmUpIGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQgdGV4dHVyZSh1bnNpZ25l
ZCBwbGFuZSkgY29uc3Q7CiAgICAgdmlydHVhbCBjb25zdCBJbnRTaXplIHJlcXVpcmVkVGV4dHVy
ZVNpemUodW5zaWduZWQgcGxhbmUpIGNvbnN0OwogCiBwcml2YXRlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69284</attachid>
            <date>2010-09-29 17:11:06 -0700</date>
            <delta_ts>2010-10-01 15:47:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46765-20100929171104.patch</filename>
            <type>text/plain</type>
            <size>15030</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTFlOWMwY2JjMDFjYTUyMTJiNWNkNWI1NDRhMTEzOWZkYThlZjgwYy4uYmVhZjA2ZjUxMzllYzdk
Y2I0MmUwY2YzNWNiMGQ0ZTIyNzVhYzY2NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMC0wOS0yOSAgQWxw
aGEgTGFtICA8aGNsYW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlciB0ZXh0dXJlcyBpbiBWaWRlb0xheWVyQ2hyb21p
dW0gZGlyZWN0bHkgaWYgdGhlIHZpZGVvIGZyYW1lIHR5cGUKKyAgICAgICAgaXMgR0wgdGV4dHVy
ZS4gSW4gdGhlIGZ1dHVyZSBWaWRlb0xheWVyQ2hyb21pdW0gd2lsbCBub3QgYWxsb2NhdGUKKyAg
ICAgICAgdGV4dHVyZXMgYW5kIHBlcmZvcm0gdGV4dHVyZXMgdXBsb2FkIGFzIHRob3NlIG9wZXJh
dGlvbnMgd2lsbCBiZSBkb25lCisgICAgICAgIGluIENocm9taXVtIHRvIG1pbmltaXplIG1lbW9y
eSBjb3B5LiBUaGlzIHBhdGNoIHdpbGwgaGVscCBtb3ZpbmcgdG93YXJkCisgICAgICAgIHRoaXMg
ZGlyZWN0aW9uIGFuZCBmYWNpbGl0YXRlIGhhcmR3YXJlIHZpZGVvIGRlY29kaW5nLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZUNocm9taXVtLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZVByb3ZpZGVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lUHJvdmlkZXI6On5WaWRlb0ZyYW1lUHJvdmlk
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OlZpZGVvTGF5
ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06On5WaWRl
b0xheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjp1
cGRhdGVDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OmRy
YXcpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpyZWxlYXNlQ3VycmVu
dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6cmVzZXRGcmFt
ZVBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpzYXZl
Q3VycmVudEZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRl
b0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6
U2hhcmVkVmFsdWVzOjppbml0aWFsaXplZCk6CisKIDIwMTAtMDktMjggIERhdmlkIEh5YXR0ICA8
aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJhbWVDaHJv
bWl1bS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0ZyYW1lQ2hy
b21pdW0uaAppbmRleCAzNGU5MjJiNGYyYWRjZDJmOGM1NzQ2ZjUwZGZkMDJmNDY4ZDBkZDNkLi5l
MTc2YjBjNzdmYTlmYjlmNTE4ZjYzNzRjMTllMjIwZGUwZGM3NDk3IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJhbWVDaHJvbWl1bS5oCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZUNocm9taXVtLmgK
QEAgLTYzLDEwICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIGVudW0gU3VyZmFjZVR5cGUgewogICAg
ICAgICBUeXBlU3lzdGVtTWVtb3J5LAotICAgICAgICBUeXBlT01YQnVmZmVySGVhZCwKLSAgICAg
ICAgVHlwZUVHTEltYWdlLAotICAgICAgICBUeXBlTUZCdWZmZXIsCi0gICAgICAgIFR5cGVEaXJl
Y3QzRFN1cmZhY2UKKyAgICAgICAgVHlwZVRleHR1cmUsCiAgICAgfTsKIAogICAgIHZpcnR1YWwg
U3VyZmFjZVR5cGUgc3VyZmFjZVR5cGUoKSBjb25zdCA9IDA7CkBAIC03Niw2ICs3Myw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHVuc2lnbmVkIHBsYW5lcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIGludCBzdHJpZGUodW5zaWduZWQgcGxhbmUpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGNv
bnN0IHZvaWQqIGRhdGEodW5zaWduZWQgcGxhbmUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHVu
c2lnbmVkIHRleHR1cmUodW5zaWduZWQgcGxhbmUpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGNv
bnN0IEludFNpemUgcmVxdWlyZWRUZXh0dXJlU2l6ZSh1bnNpZ25lZCBwbGFuZSkgY29uc3QgPSAw
OwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9W
aWRlb0ZyYW1lUHJvdmlkZXIuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VmlkZW9GcmFtZVByb3ZpZGVyLmgKaW5kZXggZjBiYWQwODMyNmMwYjNiZmRjYTZiNWFkZjM2NWFm
MzFlYTE5ZGMxMi4uYzU5NmY4NzY5NzZkYjFhMDM5Njg0ZTlkZGY2YjE3MTA4ZWYwZTRiMCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0ZyYW1lUHJv
dmlkZXIuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJh
bWVQcm92aWRlci5oCkBAIC0zNyw2ICszNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgVmlkZW9GcmFtZVByb3ZpZGVyIHsKIHB1YmxpYzoKKyAgICB2aXJ0dWFsIH5WaWRlb0ZyYW1l
UHJvdmlkZXIoKSB7IH0KKwogICAgIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIHBvaW50ZXIg
dG8gYSBWaWRlb0ZyYW1lQ2hyb21pdW0sIHdoaWNoIGlzCiAgICAgLy8gdGhlIFdlYkNvcmUgd3Jh
cHBlciBmb3IgYSB2aWRlbyBmcmFtZSBpbiBDaHJvbWl1bS4gZ2V0Q3VycmVudEZyYW1lKCkKICAg
ICAvLyBwbGFjZXMgYSBsb2NrIG9uIHRoZSBmcmFtZSBpbiBDaHJvbWl1bS4gQ2FsbHMgdG8gdGhp
cyBtZXRob2Qgc2hvdWxkCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZWQ1OWEyZDg5MzEyYzUzZGIy
YTJlNDBlNjYyZDNhOGRkNWViNTk0Mi4uYjg3ZWNiYWY3YTE5ZDk4N2IxMTM4ZTM2ZGY1ODFkNDY3
ZjdmNmNkOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9W
aWRlb0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcApAQCAtMTg0LDE2ICsxODQsMTUgQEAgVmlkZW9M
YXllckNocm9taXVtOjpWaWRlb0xheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBv
d25lciwgVmlkZW9GcmFtZVAKICAgICAsIG1fc2tpcHNEcmF3KHRydWUpCiAgICAgLCBtX2ZyYW1l
Rm9ybWF0KFZpZGVvRnJhbWVDaHJvbWl1bTo6SW52YWxpZCkKICAgICAsIG1fcHJvdmlkZXIocHJv
dmlkZXIpCisgICAgLCBtX2N1cnJlbnRGcmFtZSgwKQogewotICAgIGZvciAodW5zaWduZWQgcGxh
bmUgPSAwOyBwbGFuZSA8IFZpZGVvRnJhbWVDaHJvbWl1bTo6bWF4UGxhbmVzOyBwbGFuZSsrKSB7
Ci0gICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdID0gMDsKLSAgICAgICAgbV90ZXh0dXJlU2l6ZXNb
cGxhbmVdID0gSW50U2l6ZSgpOwotICAgICAgICBtX2ZyYW1lU2l6ZXNbcGxhbmVdID0gSW50U2l6
ZSgpOwotICAgIH0KKyAgICByZXNldEZyYW1lUGFyYW1ldGVycygpOwogfQogCiBWaWRlb0xheWVy
Q2hyb21pdW06On5WaWRlb0xheWVyQ2hyb21pdW0oKQogeworICAgIHJlbGVhc2VDdXJyZW50RnJh
bWUoKTsKKwogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlckNv
bnRleHQoKTsKICAgICBmb3IgKHVuc2lnbmVkIHBsYW5lID0gMDsgcGxhbmUgPCBWaWRlb0ZyYW1l
Q2hyb21pdW06Om1heFBsYW5lczsgcGxhbmUrKykgewogICAgICAgICBpZiAobV90ZXh0dXJlc1tw
bGFuZV0pCkBAIC0yMjcsNiArMjI2LDE0IEBAIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRh
dGVDb250ZW50cygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoZnJhbWUtPnN1
cmZhY2VUeXBlKCkgPT0gVmlkZW9GcmFtZUNocm9taXVtOjpUeXBlVGV4dHVyZSkgeworICAgICAg
ICByZWxlYXNlQ3VycmVudEZyYW1lKCk7CisgICAgICAgIHNhdmVDdXJyZW50RnJhbWUoZnJhbWUp
OworICAgICAgICBtX2RpcnR5UmVjdC5zZXRTaXplKEZsb2F0U2l6ZSgpKTsKKyAgICAgICAgbV9j
b250ZW50c0RpcnR5ID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBB
bGxvY2F0ZSB0ZXh0dXJlcyBmb3IgcGxhbmVzIGlmIHRoZXkgYXJlIG5vdCBhbGxvY2F0ZWQgYWxy
ZWFkeSwgb3IKICAgICAvLyByZWFsbG9jYXRlIHRleHR1cmVzIHRoYXQgYXJlIHRoZSB3cm9uZyBz
aXplIGZvciB0aGUgZnJhbWUuCiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXll
clJlbmRlcmVyQ29udGV4dCgpOwpAQCAtMjQ1LDYgKzI1Miw4IEBAIHZvaWQgVmlkZW9MYXllckNo
cm9taXVtOjp1cGRhdGVDb250ZW50cygpCiAKICAgICBtX2RpcnR5UmVjdC5zZXRTaXplKEZsb2F0
U2l6ZSgpKTsKICAgICBtX2NvbnRlbnRzRGlydHkgPSBmYWxzZTsKKworICAgIC8vIEZJWE1FOiBJ
ZiBzdXJmYWNlIHR5cGUgaXMgR0wgdGV4dHVyZSB3ZSBzaG91bGQgY2FsbCBwdXRDdXJyZW50RnJh
bWUoKSBvbmx5IGFmdGVyIHN3YXAgYnVmZmVycyBoYXBwZW5lZC4KICAgICBtX3Byb3ZpZGVyLT5w
dXRDdXJyZW50RnJhbWUoZnJhbWUpOwogfQogCkBAIC0zMjgsNiArMzM3LDE3IEBAIHZvaWQgVmlk
ZW9MYXllckNocm9taXVtOjpkcmF3KCkKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIHJlbGVhc2VDdXJyZW50RnJhbWUoKTsKK30KKwordm9pZCBW
aWRlb0xheWVyQ2hyb21pdW06OnJlbGVhc2VDdXJyZW50RnJhbWUoKQoreworICAgIGlmICghbV9j
dXJyZW50RnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcHJvdmlkZXItPnB1dEN1cnJl
bnRGcmFtZShtX2N1cnJlbnRGcmFtZSk7CisgICAgbV9jdXJyZW50RnJhbWUgPSAwOworICAgIHJl
c2V0RnJhbWVQYXJhbWV0ZXJzKCk7CiB9CiAKIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpkcmF3
WVVWKGNvbnN0IFNoYXJlZFZhbHVlcyogc3YpCkBAIC0zNzksNiArMzk5LDI2IEBAIHZvaWQgVmlk
ZW9MYXllckNocm9taXVtOjpkcmF3UkdCQShjb25zdCBTaGFyZWRWYWx1ZXMqIHN2KQogICAgICAg
ICAgICAgICAgICAgICAgc3YtPnJnYmFTaGFkZXJNYXRyaXhMb2NhdGlvbigpLCBzdi0+cmdiYUFs
cGhhTG9jYXRpb24oKSk7CiB9CiAKK3ZvaWQgVmlkZW9MYXllckNocm9taXVtOjpyZXNldEZyYW1l
UGFyYW1ldGVycygpCit7CisgICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5lIDwgVmlk
ZW9GcmFtZUNocm9taXVtOjptYXhQbGFuZXM7IHBsYW5lKyspIHsKKyAgICAgICAgbV90ZXh0dXJl
c1twbGFuZV0gPSAwOworICAgICAgICBtX3RleHR1cmVTaXplc1twbGFuZV0gPSBJbnRTaXplKCk7
CisgICAgICAgIG1fZnJhbWVTaXplc1twbGFuZV0gPSBJbnRTaXplKCk7CisgICAgfQorfQorCit2
b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6c2F2ZUN1cnJlbnRGcmFtZShWaWRlb0ZyYW1lQ2hyb21p
dW0qIGZyYW1lKQoreworICAgIEFTU0VSVCghbV9jdXJyZW50RnJhbWUpOworICAgIG1fY3VycmVu
dEZyYW1lID0gZnJhbWU7CisgICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5lIDwgZnJh
bWUtPnBsYW5lcygpOyBwbGFuZSsrKSB7CisgICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdID0gZnJh
bWUtPnRleHR1cmUocGxhbmUpOworICAgICAgICBtX3RleHR1cmVTaXplc1twbGFuZV0gPSBmcmFt
ZS0+cmVxdWlyZWRUZXh0dXJlU2l6ZShwbGFuZSk7CisgICAgICAgIG1fZnJhbWVTaXplc1twbGFu
ZV0gPSBtX3RleHR1cmVTaXplc1twbGFuZV07CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1
bS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21p
dW0uaAppbmRleCA2MjBkMWE3MmI5MTI1M2M5MjVhNzFkZDZiNDQ4MGNhNDgwMWIzMWNmLi45YjU5
ZTNmNDdkODdhZDg5MDM4ZDRhZTc0YTk3NjMzNTIxZDk3ZTU1IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKQEAg
LTQ5LDYgKzQ5LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkcmF3KCk7CiAKKyAgICAvLyBUaGlz
IGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBWaWRlRnJhbWVQcm92aWRlci4gV2hlbiB0aGlzIG1ldGhv
ZCBpcyBjYWxsZWQKKyAgICAvLyBwdXRDdXJyZW50RnJhbWUoKSBtdXN0IGJlIGNhbGxlZCB0byBy
ZXR1cm4gdGhlIGZyYW1lIGN1cnJlbnRseSBoZWxkLgorICAgIHZvaWQgcmVsZWFzZUN1cnJlbnRG
cmFtZSgpOworCiAgICAgY2xhc3MgU2hhcmVkVmFsdWVzIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IGV4cGxpY2l0IFNoYXJlZFZhbHVlcyhHcmFwaGljc0NvbnRleHQzRCopOwpAQCAtNjYsNyArNzAs
NyBAQCBwdWJsaWM6CiAgICAgICAgIGludCByZ2JhQWxwaGFMb2NhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fcmdiYUFscGhhTG9jYXRpb247IH0KICAgICAgICAgaW50IHJnYmFUZXh0dXJlTG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX3JnYmFUZXh0dXJlTG9jYXRpb247IH0KICAgICAgICAgaW50
IGNjTWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NjTWF0cml4TG9jYXRpb247IH0K
LSAgICAgICAgYm9vbCBpbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbGl6ZWQ7
IH07CisgICAgICAgIGJvb2wgaW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxp
emVkOyB9CiAgICAgcHJpdmF0ZToKICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4
dDsKICAgICAgICAgdW5zaWduZWQgbV95dXZTaGFkZXJQcm9ncmFtOwpAQCAtOTUsMTIgKzk5LDE2
IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwg
dW5zaWduZWQgdGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJiBkaW1lbnNpb25zLCB1bnNpZ25lZCB0
ZXh0dXJlRm9ybWF0LCBjb25zdCB2b2lkKiBkYXRhKTsKICAgICB2b2lkIGRyYXdZVVYoY29uc3Qg
U2hhcmVkVmFsdWVzKik7CiAgICAgdm9pZCBkcmF3UkdCQShjb25zdCBTaGFyZWRWYWx1ZXMqKTsK
KyAgICB2b2lkIHJlc2V0RnJhbWVQYXJhbWV0ZXJzKCk7CisgICAgdm9pZCBzYXZlQ3VycmVudEZy
YW1lKFZpZGVvRnJhbWVDaHJvbWl1bSopOwogCiAgICAgc3RhdGljIGNvbnN0IGZsb2F0IHl1djJS
R0JbOV07CiAKICAgICBib29sIG1fc2tpcHNEcmF3OwogICAgIFZpZGVvRnJhbWVDaHJvbWl1bTo6
Rm9ybWF0IG1fZnJhbWVGb3JtYXQ7Ci0gICAgT3duUHRyPFZpZGVvRnJhbWVQcm92aWRlcj4gbV9w
cm92aWRlcjsKKyAgICBWaWRlb0ZyYW1lUHJvdmlkZXIqIG1fcHJvdmlkZXI7CisgICAgVmlkZW9G
cmFtZUNocm9taXVtKiBtX2N1cnJlbnRGcmFtZTsKKwogICAgIHVuc2lnbmVkIG1fdGV4dHVyZXNb
M107CiAgICAgSW50U2l6ZSBtX3RleHR1cmVTaXplc1szXTsKICAgICBJbnRTaXplIG1fZnJhbWVT
aXplc1szXTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGEyODUxN2FmYjA1MWNhNWY4MGQ3OTk3MWRhMzcyMzVh
ZjY1NjI3YjEuLjNiNjliMjE2NjAwMWFmOGMxOGQ5ODM2NWU2Mzk5MmU3ZWY4ZDg4NzEgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEwLTA5LTI5ICBBbHBoYSBMYW0gIDxoY2xhbUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGdldHRlciBmb3IgYWNjZXNzaW5nIHRleHR1cmVzIHN0b3JlZCBpbiBWaWRlb0Zy
YW1lQ2hyb21pdW0gYW5kIFdlYlZpZGVvRnJhbWUuCisgICAgICAgIEFsc28gZXhwbGljaXRseSBp
bnN0cnVjdCBWaWRlb0xheWVyQ2hyb21pdW0gdG8gcmVsZWFzZSB2aWRlbyBmcmFtZSB3aGVuIHRo
ZSBvd25lcgorICAgICAgICBvZiB2aWRlbyBmcmFtZSBpcyBnb2luZyBhd2F5LgorCisgICAgICAg
ICogcHVibGljL1dlYlZpZGVvRnJhbWUuaDoKKyAgICAgICAgKiBzcmMvQXNzZXJ0TWF0Y2hpbmdF
bnVtcy5jcHA6CisgICAgICAgICogc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjp0ZXh0dXJlKToKKyAgICAgICAg
KiBzcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBs
YXllckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVu
dEltcGw6On5XZWJNZWRpYVBsYXllckNsaWVudEltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJN
ZWRpYVBsYXllckNsaWVudEltcGw6OmxvYWQpOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXll
ckNsaWVudEltcGwuaDoKKwogMjAxMC0wOS0yOCAgVmFuZ2VsaXMgS29ra2V2aXMgIDx2YW5nZWxp
c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWRlb0ZyYW1lLmggYi9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlZpZGVvRnJhbWUuaAppbmRleCA1ZTM0ZjJhNDRjODUxOTRl
Yzc5YmQxN2UwMDZiNGQzMTViYjdjYzliLi40OGRlMGFjZDA1OWFmMzc5MGQzMTc5MjAwMzczNGMy
MDkwNjdiMGY0IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZGVvRnJh
bWUuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZGVvRnJhbWUuaApAQCAtNTMs
MTAgKzUzLDcgQEAgcHVibGljOgogCiAgICAgZW51bSBTdXJmYWNlVHlwZSB7CiAgICAgICAgIFN1
cmZhY2VUeXBlU3lzdGVtTWVtb3J5LAotICAgICAgICBTdXJmYWNlVHlwZU9NWEJ1ZmZlckhlYWQs
Ci0gICAgICAgIFN1cmZhY2VUeXBlRUdMSW1hZ2UsCi0gICAgICAgIFN1cmZhY2VUeXBlTUZCdWZm
ZXIsCi0gICAgICAgIFN1cmZhY2VUeXBlRGlyZWN0M0RTdXJmYWNlCisgICAgICAgIFN1cmZhY2VU
eXBlR2xUZXh0dXJlLAogICAgIH07CiAKICAgICB2aXJ0dWFsIFN1cmZhY2VUeXBlIHN1cmZhY2VU
eXBlKCkgY29uc3QgPSAwOwpAQCAtNjYsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB1
bnNpZ25lZCBwbGFuZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBpbnQgc3RyaWRlKHVuc2ln
bmVkIHBsYW5lKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBjb25zdCB2b2lkKiBkYXRhKHVuc2ln
bmVkIHBsYW5lKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCB0ZXh0dXJlKHVuc2ln
bmVkIHBsYW5lKSBjb25zdCA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAgYi9XZWJL
aXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCmluZGV4IGYzYjhmNWExZDY3
MTk3ZDc3MGFjZDFkZTQ3YTI1YmE2Y2RhMTNiNGIuLjYwNGQzOTYxMmJmYTI1ODVhNTEyNGY3ZTY5
ZmNhNWNmYWU2ODRjYjYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0
Y2hpbmdFbnVtcy5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0Vu
dW1zLmNwcApAQCAtMzIxLDEwICszMjEsNyBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KFdlYlZpZGVvRnJhbWU6OkZvcm1hdEVtcHR5LCBWaWRlb0ZyYW1lQ2hyb21pdW06OkVtcAogQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJWaWRlb0ZyYW1lOjpGb3JtYXRBU0NJSSwgVmlk
ZW9GcmFtZUNocm9taXVtOjpBU0NJSSk7CiAKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
V2ViVmlkZW9GcmFtZTo6U3VyZmFjZVR5cGVTeXN0ZW1NZW1vcnksIFZpZGVvRnJhbWVDaHJvbWl1
bTo6VHlwZVN5c3RlbU1lbW9yeSk7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlZp
ZGVvRnJhbWU6OlN1cmZhY2VUeXBlT01YQnVmZmVySGVhZCwgVmlkZW9GcmFtZUNocm9taXVtOjpU
eXBlT01YQnVmZmVySGVhZCk7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlZpZGVv
RnJhbWU6OlN1cmZhY2VUeXBlRUdMSW1hZ2UsIFZpZGVvRnJhbWVDaHJvbWl1bTo6VHlwZUVHTElt
YWdlKTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVmlkZW9GcmFtZTo6U3VyZmFj
ZVR5cGVNRkJ1ZmZlciwgVmlkZW9GcmFtZUNocm9taXVtOjpUeXBlTUZCdWZmZXIpOwotQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJWaWRlb0ZyYW1lOjpTdXJmYWNlVHlwZURpcmVjdDNE
U3VyZmFjZSwgVmlkZW9GcmFtZUNocm9taXVtOjpUeXBlRGlyZWN0M0RTdXJmYWNlKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVmlkZW9GcmFtZTo6U3VyZmFjZVR5cGVHbFRleHR1
cmUsIFZpZGVvRnJhbWVDaHJvbWl1bTo6VHlwZVRleHR1cmUpOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvVmlkZW9G
cmFtZUNocm9taXVtSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1ZpZGVvRnJhbWVDaHJv
bWl1bUltcGwuY3BwCmluZGV4IGE2MGZlMjhjMTEwY2YzYjIzZmI2Zjc5NWE1NTIxYjhmYjJhYzg4
MzYuLjk5ZTNlMWU3MjI2YmU1NWI0MWYzMGFlNGE3ODQ1ZWUxODEyMDc1NTEgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5jcHAKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmNwcApAQCAtMTAwLDYgKzEw
MCwxMyBAQCBjb25zdCB2b2lkKiBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjpkYXRhKHVuc2lnbmVk
IHBsYW5lKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCit1bnNpZ25lZCBWaWRlb0ZyYW1lQ2hy
b21pdW1JbXBsOjp0ZXh0dXJlKHVuc2lnbmVkIHBsYW5lKSBjb25zdAoreworICAgIGlmIChtX3dl
YlZpZGVvRnJhbWUpCisgICAgICAgIHJldHVybiBtX3dlYlZpZGVvRnJhbWUtPnRleHR1cmUocGxh
bmUpOworICAgIHJldHVybiAwOworfQorCiBjb25zdCBJbnRTaXplIFZpZGVvRnJhbWVDaHJvbWl1
bUltcGw6OnJlcXVpcmVkVGV4dHVyZVNpemUodW5zaWduZWQgcGxhbmUpIGNvbnN0CiB7CiAgICAg
c3dpdGNoIChmb3JtYXQoKSkgewpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9WaWRl
b0ZyYW1lQ2hyb21pdW1JbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1ZpZGVvRnJhbWVDaHJv
bWl1bUltcGwuaAppbmRleCAwNDJjZDdlNzE2MzU2YmFmYjQ1YmZjNzQ1OTI5NWYzOGRiNzkzYmJk
Li5mODZlZTFjMGQ1MzIwYzc5NmRlMTNjZWVmMjRiNWRiODYwZWY2ZjkzIDEwMDY0NAotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuaAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuaApAQCAtNTYsNiArNTYsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB1bnNpZ25lZCBwbGFuZXMoKSBjb25zdDsKICAgICB2aXJ0dWFs
IGludCBzdHJpZGUodW5zaWduZWQgcGxhbmUpIGNvbnN0OwogICAgIHZpcnR1YWwgY29uc3Qgdm9p
ZCogZGF0YSh1bnNpZ25lZCBwbGFuZSkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCB0ZXh0
dXJlKHVuc2lnbmVkIHBsYW5lKSBjb25zdDsKICAgICB2aXJ0dWFsIGNvbnN0IEludFNpemUgcmVx
dWlyZWRUZXh0dXJlU2l6ZSh1bnNpZ25lZCBwbGFuZSkgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKaW5kZXgg
ZjBlY2UwZDc1MjFiZDZmOWQxZDIyYWYxNTI5MGE2ZDZmZjc4NDYyYS4uODRmNzY5OTkwMmZmZjM2
MjQ2YTRiYWVhMzg0NjBlYmQ5MDhkOTIyOCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcApAQCAtOTUsNiArOTUsMTQgQEAgV2ViTWVkaWFQ
bGF5ZXIqIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6bWVkaWFQbGF5ZXIoKSBjb25zdAogCiAv
LyBXZWJNZWRpYVBsYXllckNsaWVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCitXZWJNZWRpYVBsYXllckNsaWVudEltcGw6On5XZWJN
ZWRpYVBsYXllckNsaWVudEltcGwoKQoreworICAgIC8vIFZpZGVvTGF5ZXJDaHJvbWl1bSBtYXkg
b3V0bGl2ZSB0aGlzIG9iamVjdCBzbyBtYWtlIHN1cmUgYWxsIGZyYW1lcyBhcmUKKyAgICAvLyBy
ZWxlYXNlZC4KKyAgICBpZiAobV92aWRlb0xheWVyLmdldCgpKQorICAgICAgICBtX3ZpZGVvTGF5
ZXItPnJlbGVhc2VDdXJyZW50RnJhbWUoKTsKK30KKwogdm9pZCBXZWJNZWRpYVBsYXllckNsaWVu
dEltcGw6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoKQogewogICAgIEFTU0VSVChtX21lZGlhUGxheWVy
KTsKQEAgLTE3Myw2ICsxODEsMTEgQEAgdm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6Omxv
YWQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8SFRN
TE1lZGlhRWxlbWVudCo+KAogICAgICAgICBtX21lZGlhUGxheWVyLT5tZWRpYVBsYXllckNsaWVu
dCgpKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKIAorICAgIC8vIFZpZGVvIGZyYW1lIG9iamVjdCBp
cyBvd25lZCBieSBXZWJNZWRpYVBsYXllci4gQmVmb3JlIGRlc3Ryb3lpbmcKKyAgICAvLyBXZWJN
ZWRpYVBsYXllciBhbGwgZnJhbWVzIG5lZWQgdG8gYmUgcmVsZWFzZWQuCisgICAgaWYgKG1fdmlk
ZW9MYXllci5nZXQoKSkKKyAgICAgICAgbV92aWRlb0xheWVyLT5yZWxlYXNlQ3VycmVudEZyYW1l
KCk7CisKICAgICBtX3dlYk1lZGlhUGxheWVyLnNldChjcmVhdGVXZWJNZWRpYVBsYXllcih0aGlz
LCBmcmFtZSkpOwogICAgIGlmIChtX3dlYk1lZGlhUGxheWVyLmdldCgpKQogICAgICAgICBtX3dl
Yk1lZGlhUGxheWVyLT5sb2FkKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpKTsKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmggYi9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCmluZGV4IGUwMTQ4NzFi
M2JhNGM1MjUwNmNiYjRlYjg2YmIyMTg5YzdmZTY4ZDQuLjY1MzUwOTRlNWZiYmY1ZDQ0NDRiNDk3
MDM3Zjg1Y2E5NGY5NjJhZDYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBs
YXllckNsaWVudEltcGwuaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIk1lZGlhUGxheWVy
UHJpdmF0ZS5oIgogI2luY2x1ZGUgIlZpZGVvRnJhbWVDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlZp
ZGVvRnJhbWVQcm92aWRlci5oIgorI2luY2x1ZGUgIlZpZGVvTGF5ZXJDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgIldlYk1lZGlhUGxheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgog
CkBAIC02MSw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICBXZWJNZWRpYVBsYXllciogbWVkaWFQbGF5
ZXIoKSBjb25zdDsKIAogICAgIC8vIFdlYk1lZGlhUGxheWVyQ2xpZW50IG1ldGhvZHM6CisgICAg
dmlydHVhbCB+V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsKCk7CiAgICAgdmlydHVhbCB2b2lkIG5l
dHdvcmtTdGF0ZUNoYW5nZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVhZHlTdGF0ZUNoYW5nZWQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgdm9sdW1lQ2hhbmdlZChmbG9hdCk7CkBAIC0xMjksNyArMTMx
LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllciogbV9tZWRpYVBsYXllcjsK
ICAgICBPd25QdHI8V2ViTWVkaWFQbGF5ZXI+IG1fd2ViTWVkaWFQbGF5ZXI7CiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybUxheWVy
PiBtX3ZpZGVvTGF5ZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bT4g
bV92aWRlb0xheWVyOwogICAgIGJvb2wgbV9zdXBwb3J0c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmc7
CiAjZW5kaWYKICAgICBzdGF0aWMgYm9vbCBtX2lzRW5hYmxlZDsK
</data>
<flag name="review"
          id="58949"
          type_id="1"
          status="-"
          setter="jamesr"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69531</attachid>
            <date>2010-10-01 15:47:47 -0700</date>
            <delta_ts>2010-10-05 10:14:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>webkit-texture.patch</filename>
            <type>text/plain</type>
            <size>14226</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NjEyZDM4NC4uM2NhMThiNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMC0wOS0yOSAgQWxwaGEgTGFtICA8
aGNsYW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlbmRlciB0ZXh0dXJlcyBpbiB2aWRlbyBmcmFtZSBkaXJlY3RseS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2NzY1CisKKyAg
ICAgICAgUmVuZGVyIHRleHR1cmVzIGluIFZpZGVvTGF5ZXJDaHJvbWl1bSBkaXJlY3RseSBpZiB0
aGUgdmlkZW8gZnJhbWUgdHlwZQorICAgICAgICBpcyBHTCB0ZXh0dXJlLiBJbiB0aGUgZnV0dXJl
IFZpZGVvTGF5ZXJDaHJvbWl1bSB3aWxsIG5vdCBhbGxvY2F0ZQorICAgICAgICB0ZXh0dXJlcyBh
bmQgcGVyZm9ybSB0ZXh0dXJlcyB1cGxvYWQgYXMgdGhvc2Ugb3BlcmF0aW9ucyB3aWxsIGJlIGRv
bmUKKyAgICAgICAgaW4gQ2hyb21pdW0gdG8gbWluaW1pemUgbWVtb3J5IGNvcHkuIFRoaXMgcGF0
Y2ggd2lsbCBoZWxwIG1vdmluZyB0b3dhcmQKKyAgICAgICAgdGhpcyBkaXJlY3Rpb24gYW5kIGZh
Y2lsaXRhdGUgaGFyZHdhcmUgdmlkZW8gZGVjb2RpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9WaWRlb0ZyYW1lQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0ZyYW1lUHJvdmlkZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvRnJhbWVQcm92aWRlcjo6flZpZGVvRnJhbWVQcm92aWRlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VmlkZW9MYXllckNocm9taXVtKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6flZpZGVvTGF5ZXJDaHJvbWl1bSk6
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6ZHJhdyk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OnJlbGVhc2VDdXJyZW50RnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpyZXNldEZyYW1lUGFyYW1ldGVycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OnNhdmVDdXJyZW50RnJhbWUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5o
OgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpTaGFyZWRWYWx1ZXM6Omlu
aXRpYWxpemVkKToKKwogMjAxMC0xMC0wMSAgRXJpYyBVaHJoYW5lICA8ZXJpY3VAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5hdGUgQ2hhcGluLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0ZyYW1lQ2hyb21pdW0uaCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZUNocm9taXVtLmgKaW5k
ZXggMzRlOTIyYi4uZTE3NmIwYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9WaWRlb0ZyYW1lQ2hyb21pdW0uaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJhbWVDaHJvbWl1bS5oCkBAIC02MywxMCArNjMsNyBAQCBw
dWJsaWM6CiAKICAgICBlbnVtIFN1cmZhY2VUeXBlIHsKICAgICAgICAgVHlwZVN5c3RlbU1lbW9y
eSwKLSAgICAgICAgVHlwZU9NWEJ1ZmZlckhlYWQsCi0gICAgICAgIFR5cGVFR0xJbWFnZSwKLSAg
ICAgICAgVHlwZU1GQnVmZmVyLAotICAgICAgICBUeXBlRGlyZWN0M0RTdXJmYWNlCisgICAgICAg
IFR5cGVUZXh0dXJlLAogICAgIH07CiAKICAgICB2aXJ0dWFsIFN1cmZhY2VUeXBlIHN1cmZhY2VU
eXBlKCkgY29uc3QgPSAwOwpAQCAtNzYsNiArNzMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB1
bnNpZ25lZCBwbGFuZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBpbnQgc3RyaWRlKHVuc2ln
bmVkIHBsYW5lKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBjb25zdCB2b2lkKiBkYXRhKHVuc2ln
bmVkIHBsYW5lKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCB0ZXh0dXJlKHVuc2ln
bmVkIHBsYW5lKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBJbnRTaXplIHJlcXVpcmVk
VGV4dHVyZVNpemUodW5zaWduZWQgcGxhbmUpIGNvbnN0ID0gMDsKIH07CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZVByb3ZpZGVyLmgg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJhbWVQcm92aWRlci5o
CmluZGV4IGYwYmFkMDguLmM1OTZmODcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZVByb3ZpZGVyLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0ZyYW1lUHJvdmlkZXIuaApAQCAtMzcsNiArMzcsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFZpZGVvRnJhbWVQcm92aWRlciB7CiBwdWJs
aWM6CisgICAgdmlydHVhbCB+VmlkZW9GcmFtZVByb3ZpZGVyKCkgeyB9CisKICAgICAvLyBUaGlz
IGZ1bmN0aW9uIHJldHVybnMgYSBwb2ludGVyIHRvIGEgVmlkZW9GcmFtZUNocm9taXVtLCB3aGlj
aCBpcwogICAgIC8vIHRoZSBXZWJDb3JlIHdyYXBwZXIgZm9yIGEgdmlkZW8gZnJhbWUgaW4gQ2hy
b21pdW0uIGdldEN1cnJlbnRGcmFtZSgpCiAgICAgLy8gcGxhY2VzIGEgbG9jayBvbiB0aGUgZnJh
bWUgaW4gQ2hyb21pdW0uIENhbGxzIHRvIHRoaXMgbWV0aG9kIHNob3VsZApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0u
Y3BwCmluZGV4IDI2NjQxYTkuLjZlNDYzMzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTE3NSwx
NiArMTc1LDE1IEBAIFZpZGVvTGF5ZXJDaHJvbWl1bTo6VmlkZW9MYXllckNocm9taXVtKEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bSogb3duZXIsIFZpZGVvRnJhbWVQCiAgICAgLCBtX3NraXBzRHJhdyh0
cnVlKQogICAgICwgbV9mcmFtZUZvcm1hdChWaWRlb0ZyYW1lQ2hyb21pdW06OkludmFsaWQpCiAg
ICAgLCBtX3Byb3ZpZGVyKHByb3ZpZGVyKQorICAgICwgbV9jdXJyZW50RnJhbWUoMCkKIHsKLSAg
ICBmb3IgKHVuc2lnbmVkIHBsYW5lID0gMDsgcGxhbmUgPCBWaWRlb0ZyYW1lQ2hyb21pdW06Om1h
eFBsYW5lczsgcGxhbmUrKykgewotICAgICAgICBtX3RleHR1cmVzW3BsYW5lXSA9IDA7Ci0gICAg
ICAgIG1fdGV4dHVyZVNpemVzW3BsYW5lXSA9IEludFNpemUoKTsKLSAgICAgICAgbV9mcmFtZVNp
emVzW3BsYW5lXSA9IEludFNpemUoKTsKLSAgICB9CisgICAgcmVzZXRGcmFtZVBhcmFtZXRlcnMo
KTsKIH0KIAogVmlkZW9MYXllckNocm9taXVtOjp+VmlkZW9MYXllckNocm9taXVtKCkKIHsKKyAg
ICByZWxlYXNlQ3VycmVudEZyYW1lKCk7CisKICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCA9IGxheWVyUmVuZGVyZXJDb250ZXh0KCk7CiAgICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7
IHBsYW5lIDwgVmlkZW9GcmFtZUNocm9taXVtOjptYXhQbGFuZXM7IHBsYW5lKyspIHsKICAgICAg
ICAgaWYgKG1fdGV4dHVyZXNbcGxhbmVdKQpAQCAtMjE4LDYgKzIxNywxNCBAQCB2b2lkIFZpZGVv
TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHMoKQogICAgICAgICByZXR1cm47CiAgICAgfQog
CisgICAgaWYgKGZyYW1lLT5zdXJmYWNlVHlwZSgpID09IFZpZGVvRnJhbWVDaHJvbWl1bTo6VHlw
ZVRleHR1cmUpIHsKKyAgICAgICAgcmVsZWFzZUN1cnJlbnRGcmFtZSgpOworICAgICAgICBzYXZl
Q3VycmVudEZyYW1lKGZyYW1lKTsKKyAgICAgICAgbV9kaXJ0eVJlY3Quc2V0U2l6ZShGbG9hdFNp
emUoKSk7CisgICAgICAgIG1fY29udGVudHNEaXJ0eSA9IGZhbHNlOworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgLy8gQWxsb2NhdGUgdGV4dHVyZXMgZm9yIHBsYW5lcyBpZiB0aGV5IGFy
ZSBub3QgYWxsb2NhdGVkIGFscmVhZHksIG9yCiAgICAgLy8gcmVhbGxvY2F0ZSB0ZXh0dXJlcyB0
aGF0IGFyZSB0aGUgd3Jvbmcgc2l6ZSBmb3IgdGhlIGZyYW1lLgogICAgIEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsKQEAgLTIzNiw2ICsyNDMsNyBA
QCB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHMoKQogCiAgICAgbV9kaXJ0
eVJlY3Quc2V0U2l6ZShGbG9hdFNpemUoKSk7CiAgICAgbV9jb250ZW50c0RpcnR5ID0gZmFsc2U7
CisKICAgICBtX3Byb3ZpZGVyLT5wdXRDdXJyZW50RnJhbWUoZnJhbWUpOwogfQogCkBAIC0zMTks
NiArMzI3LDE3IEBAIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpkcmF3KCkKICAgICAgICAgbm90
SW1wbGVtZW50ZWQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIHJlbGVhc2VDdXJyZW50
RnJhbWUoKTsKK30KKwordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnJlbGVhc2VDdXJyZW50RnJh
bWUoKQoreworICAgIGlmICghbV9jdXJyZW50RnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fcHJvdmlkZXItPnB1dEN1cnJlbnRGcmFtZShtX2N1cnJlbnRGcmFtZSk7CisgICAgbV9jdXJy
ZW50RnJhbWUgPSAwOworICAgIHJlc2V0RnJhbWVQYXJhbWV0ZXJzKCk7CiB9CiAKIHZvaWQgVmlk
ZW9MYXllckNocm9taXVtOjpkcmF3WVVWKGNvbnN0IFNoYXJlZFZhbHVlcyogc3YpCkBAIC0zNzAs
NiArMzg5LDI2IEBAIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpkcmF3UkdCQShjb25zdCBTaGFy
ZWRWYWx1ZXMqIHN2KQogICAgICAgICAgICAgICAgICAgICAgc3YtPnJnYmFTaGFkZXJNYXRyaXhM
b2NhdGlvbigpLCBzdi0+cmdiYUFscGhhTG9jYXRpb24oKSk7CiB9CiAKK3ZvaWQgVmlkZW9MYXll
ckNocm9taXVtOjpyZXNldEZyYW1lUGFyYW1ldGVycygpCit7CisgICAgZm9yICh1bnNpZ25lZCBw
bGFuZSA9IDA7IHBsYW5lIDwgVmlkZW9GcmFtZUNocm9taXVtOjptYXhQbGFuZXM7IHBsYW5lKysp
IHsKKyAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0gPSAwOworICAgICAgICBtX3RleHR1cmVTaXpl
c1twbGFuZV0gPSBJbnRTaXplKCk7CisgICAgICAgIG1fZnJhbWVTaXplc1twbGFuZV0gPSBJbnRT
aXplKCk7CisgICAgfQorfQorCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6c2F2ZUN1cnJlbnRG
cmFtZShWaWRlb0ZyYW1lQ2hyb21pdW0qIGZyYW1lKQoreworICAgIEFTU0VSVCghbV9jdXJyZW50
RnJhbWUpOworICAgIG1fY3VycmVudEZyYW1lID0gZnJhbWU7CisgICAgZm9yICh1bnNpZ25lZCBw
bGFuZSA9IDA7IHBsYW5lIDwgZnJhbWUtPnBsYW5lcygpOyBwbGFuZSsrKSB7CisgICAgICAgIG1f
dGV4dHVyZXNbcGxhbmVdID0gZnJhbWUtPnRleHR1cmUocGxhbmUpOworICAgICAgICBtX3RleHR1
cmVTaXplc1twbGFuZV0gPSBmcmFtZS0+cmVxdWlyZWRUZXh0dXJlU2l6ZShwbGFuZSk7CisgICAg
ICAgIG1fZnJhbWVTaXplc1twbGFuZV0gPSBtX3RleHR1cmVTaXplc1twbGFuZV07CisgICAgfQor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAppbmRleCA2MjBkMWE3Li45YjU5ZTNmIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1
bS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNo
cm9taXVtLmgKQEAgLTQ5LDYgKzQ5LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZHJh
d3NDb250ZW50KCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkcmF3KCk7CiAK
KyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBWaWRlRnJhbWVQcm92aWRlci4gV2hl
biB0aGlzIG1ldGhvZCBpcyBjYWxsZWQKKyAgICAvLyBwdXRDdXJyZW50RnJhbWUoKSBtdXN0IGJl
IGNhbGxlZCB0byByZXR1cm4gdGhlIGZyYW1lIGN1cnJlbnRseSBoZWxkLgorICAgIHZvaWQgcmVs
ZWFzZUN1cnJlbnRGcmFtZSgpOworCiAgICAgY2xhc3MgU2hhcmVkVmFsdWVzIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIGV4cGxpY2l0IFNoYXJlZFZhbHVlcyhHcmFwaGljc0NvbnRleHQzRCopOwpA
QCAtNjYsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGludCByZ2JhQWxwaGFMb2NhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fcmdiYUFscGhhTG9jYXRpb247IH0KICAgICAgICAgaW50IHJnYmFU
ZXh0dXJlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3JnYmFUZXh0dXJlTG9jYXRpb247IH0K
ICAgICAgICAgaW50IGNjTWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NjTWF0cml4
TG9jYXRpb247IH0KLSAgICAgICAgYm9vbCBpbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5pdGlhbGl6ZWQ7IH07CisgICAgICAgIGJvb2wgaW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVy
biBtX2luaXRpYWxpemVkOyB9CiAgICAgcHJpdmF0ZToKICAgICAgICAgR3JhcGhpY3NDb250ZXh0
M0QqIG1fY29udGV4dDsKICAgICAgICAgdW5zaWduZWQgbV95dXZTaGFkZXJQcm9ncmFtOwpAQCAt
OTUsMTIgKzk5LDE2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEKiwgdW5zaWduZWQgdGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJiBkaW1lbnNpb25z
LCB1bnNpZ25lZCB0ZXh0dXJlRm9ybWF0LCBjb25zdCB2b2lkKiBkYXRhKTsKICAgICB2b2lkIGRy
YXdZVVYoY29uc3QgU2hhcmVkVmFsdWVzKik7CiAgICAgdm9pZCBkcmF3UkdCQShjb25zdCBTaGFy
ZWRWYWx1ZXMqKTsKKyAgICB2b2lkIHJlc2V0RnJhbWVQYXJhbWV0ZXJzKCk7CisgICAgdm9pZCBz
YXZlQ3VycmVudEZyYW1lKFZpZGVvRnJhbWVDaHJvbWl1bSopOwogCiAgICAgc3RhdGljIGNvbnN0
IGZsb2F0IHl1djJSR0JbOV07CiAKICAgICBib29sIG1fc2tpcHNEcmF3OwogICAgIFZpZGVvRnJh
bWVDaHJvbWl1bTo6Rm9ybWF0IG1fZnJhbWVGb3JtYXQ7Ci0gICAgT3duUHRyPFZpZGVvRnJhbWVQ
cm92aWRlcj4gbV9wcm92aWRlcjsKKyAgICBWaWRlb0ZyYW1lUHJvdmlkZXIqIG1fcHJvdmlkZXI7
CisgICAgVmlkZW9GcmFtZUNocm9taXVtKiBtX2N1cnJlbnRGcmFtZTsKKwogICAgIHVuc2lnbmVk
IG1fdGV4dHVyZXNbM107CiAgICAgSW50U2l6ZSBtX3RleHR1cmVTaXplc1szXTsKICAgICBJbnRT
aXplIG1fZnJhbWVTaXplc1szXTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGU2YzgwMGIuLmY4ZmQwY2MgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEwLTA5LTI5ICBBbHBoYSBMYW0gIDxoY2xh
bUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGdldHRlciBmb3IgYWNjZXNzaW5nIHRleHR1cmVzIHN0b3JlZCBpbiBWaWRl
b0ZyYW1lQ2hyb21pdW0gYW5kIFdlYlZpZGVvRnJhbWUuCisgICAgICAgIEFsc28gZXhwbGljaXRs
eSBpbnN0cnVjdCBWaWRlb0xheWVyQ2hyb21pdW0gdG8gcmVsZWFzZSB2aWRlbyBmcmFtZSB3aGVu
IHRoZSBvd25lcgorICAgICAgICBvZiB2aWRlbyBmcmFtZSBpcyBnb2luZyBhd2F5LgorCisgICAg
ICAgICogcHVibGljL1dlYlZpZGVvRnJhbWUuaDoKKyAgICAgICAgKiBzcmMvQXNzZXJ0TWF0Y2hp
bmdFbnVtcy5jcHA6CisgICAgICAgICogc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjp0ZXh0dXJlKToKKyAgICAg
ICAgKiBzcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJNZWRp
YVBsYXllckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNs
aWVudEltcGw6On5XZWJNZWRpYVBsYXllckNsaWVudEltcGwpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmxvYWQpOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBs
YXllckNsaWVudEltcGwuaDoKKwogMjAxMC0xMC0wMSAgTWloYWkgUGFycGFyaXRhICA8bWloYWlw
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOYXRlIENoYXBpbi4KZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9GcmFtZS5oIGIvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJWaWRlb0ZyYW1lLmgKaW5kZXggNWUzNGYyYS4uNThmMTExMSAxMDA2
NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWRlb0ZyYW1lLmgKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWRlb0ZyYW1lLmgKQEAgLTUzLDEwICs1Myw3IEBAIHB1
YmxpYzoKIAogICAgIGVudW0gU3VyZmFjZVR5cGUgewogICAgICAgICBTdXJmYWNlVHlwZVN5c3Rl
bU1lbW9yeSwKLSAgICAgICAgU3VyZmFjZVR5cGVPTVhCdWZmZXJIZWFkLAotICAgICAgICBTdXJm
YWNlVHlwZUVHTEltYWdlLAotICAgICAgICBTdXJmYWNlVHlwZU1GQnVmZmVyLAotICAgICAgICBT
dXJmYWNlVHlwZURpcmVjdDNEU3VyZmFjZQorICAgICAgICBTdXJmYWNlVHlwZVRleHR1cmUsCiAg
ICAgfTsKIAogICAgIHZpcnR1YWwgU3VyZmFjZVR5cGUgc3VyZmFjZVR5cGUoKSBjb25zdCA9IDA7
CkBAIC02Niw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHVuc2lnbmVkIHBsYW5lcygp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGludCBzdHJpZGUodW5zaWduZWQgcGxhbmUpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IHZvaWQqIGRhdGEodW5zaWduZWQgcGxhbmUpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHRleHR1cmUodW5zaWduZWQgcGxhbmUpIGNvbnN0
ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
QXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKaW5kZXggZjNiOGY1YS4uOTY0N2E0NCAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9XZWJL
aXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCkBAIC0zMjEsMTAgKzMyMSw3
IEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVmlkZW9GcmFtZTo6Rm9ybWF0RW1w
dHksIFZpZGVvRnJhbWVDaHJvbWl1bTo6RW1wCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KFdlYlZpZGVvRnJhbWU6OkZvcm1hdEFTQ0lJLCBWaWRlb0ZyYW1lQ2hyb21pdW06OkFTQ0lJKTsK
IAogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJWaWRlb0ZyYW1lOjpTdXJmYWNlVHlw
ZVN5c3RlbU1lbW9yeSwgVmlkZW9GcmFtZUNocm9taXVtOjpUeXBlU3lzdGVtTWVtb3J5KTsKLUNP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVmlkZW9GcmFtZTo6U3VyZmFjZVR5cGVPTVhC
dWZmZXJIZWFkLCBWaWRlb0ZyYW1lQ2hyb21pdW06OlR5cGVPTVhCdWZmZXJIZWFkKTsKLUNPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVmlkZW9GcmFtZTo6U3VyZmFjZVR5cGVFR0xJbWFn
ZSwgVmlkZW9GcmFtZUNocm9taXVtOjpUeXBlRUdMSW1hZ2UpOwotQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShXZWJWaWRlb0ZyYW1lOjpTdXJmYWNlVHlwZU1GQnVmZmVyLCBWaWRlb0ZyYW1l
Q2hyb21pdW06OlR5cGVNRkJ1ZmZlcik7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
YlZpZGVvRnJhbWU6OlN1cmZhY2VUeXBlRGlyZWN0M0RTdXJmYWNlLCBWaWRlb0ZyYW1lQ2hyb21p
dW06OlR5cGVEaXJlY3QzRFN1cmZhY2UpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShX
ZWJWaWRlb0ZyYW1lOjpTdXJmYWNlVHlwZVRleHR1cmUsIFZpZGVvRnJhbWVDaHJvbWl1bTo6VHlw
ZVRleHR1cmUpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5jcHAgYi9XZWJL
aXQvY2hyb21pdW0vc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuY3BwCmluZGV4IGE2MGZlMjgu
Ljk5ZTNlMWUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvVmlkZW9GcmFtZUNocm9t
aXVtSW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1J
bXBsLmNwcApAQCAtMTAwLDYgKzEwMCwxMyBAQCBjb25zdCB2b2lkKiBWaWRlb0ZyYW1lQ2hyb21p
dW1JbXBsOjpkYXRhKHVuc2lnbmVkIHBsYW5lKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCit1
bnNpZ25lZCBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjp0ZXh0dXJlKHVuc2lnbmVkIHBsYW5lKSBj
b25zdAoreworICAgIGlmIChtX3dlYlZpZGVvRnJhbWUpCisgICAgICAgIHJldHVybiBtX3dlYlZp
ZGVvRnJhbWUtPnRleHR1cmUocGxhbmUpOworICAgIHJldHVybiAwOworfQorCiBjb25zdCBJbnRT
aXplIFZpZGVvRnJhbWVDaHJvbWl1bUltcGw6OnJlcXVpcmVkVGV4dHVyZVNpemUodW5zaWduZWQg
cGxhbmUpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChmb3JtYXQoKSkgewpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmggYi9XZWJLaXQvY2hyb21p
dW0vc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuaAppbmRleCAwNDJjZDdlLi5mODZlZTFjIDEw
MDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuaAor
KysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuaApAQCAtNTYs
NiArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB1bnNpZ25lZCBwbGFuZXMoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGludCBzdHJpZGUodW5zaWduZWQgcGxhbmUpIGNvbnN0OwogICAgIHZpcnR1
YWwgY29uc3Qgdm9pZCogZGF0YSh1bnNpZ25lZCBwbGFuZSkgY29uc3Q7CisgICAgdmlydHVhbCB1
bnNpZ25lZCB0ZXh0dXJlKHVuc2lnbmVkIHBsYW5lKSBjb25zdDsKICAgICB2aXJ0dWFsIGNvbnN0
IEludFNpemUgcmVxdWlyZWRUZXh0dXJlU2l6ZSh1bnNpZ25lZCBwbGFuZSkgY29uc3Q7CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xp
ZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1w
bC5jcHAKaW5kZXggZjBlY2UwZC4uODRmNzY5OSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcApAQCAtOTUsNiArOTUsMTQgQEAgV2ViTWVk
aWFQbGF5ZXIqIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6bWVkaWFQbGF5ZXIoKSBjb25zdAog
CiAvLyBXZWJNZWRpYVBsYXllckNsaWVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCitXZWJNZWRpYVBsYXllckNsaWVudEltcGw6On5X
ZWJNZWRpYVBsYXllckNsaWVudEltcGwoKQoreworICAgIC8vIFZpZGVvTGF5ZXJDaHJvbWl1bSBt
YXkgb3V0bGl2ZSB0aGlzIG9iamVjdCBzbyBtYWtlIHN1cmUgYWxsIGZyYW1lcyBhcmUKKyAgICAv
LyByZWxlYXNlZC4KKyAgICBpZiAobV92aWRlb0xheWVyLmdldCgpKQorICAgICAgICBtX3ZpZGVv
TGF5ZXItPnJlbGVhc2VDdXJyZW50RnJhbWUoKTsKK30KKwogdm9pZCBXZWJNZWRpYVBsYXllckNs
aWVudEltcGw6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoKQogewogICAgIEFTU0VSVChtX21lZGlhUGxh
eWVyKTsKQEAgLTE3Myw2ICsxODEsMTEgQEAgdm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6
OmxvYWQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8
SFRNTE1lZGlhRWxlbWVudCo+KAogICAgICAgICBtX21lZGlhUGxheWVyLT5tZWRpYVBsYXllckNs
aWVudCgpKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKIAorICAgIC8vIFZpZGVvIGZyYW1lIG9iamVj
dCBpcyBvd25lZCBieSBXZWJNZWRpYVBsYXllci4gQmVmb3JlIGRlc3Ryb3lpbmcKKyAgICAvLyBX
ZWJNZWRpYVBsYXllciBhbGwgZnJhbWVzIG5lZWQgdG8gYmUgcmVsZWFzZWQuCisgICAgaWYgKG1f
dmlkZW9MYXllci5nZXQoKSkKKyAgICAgICAgbV92aWRlb0xheWVyLT5yZWxlYXNlQ3VycmVudEZy
YW1lKCk7CisKICAgICBtX3dlYk1lZGlhUGxheWVyLnNldChjcmVhdGVXZWJNZWRpYVBsYXllcih0
aGlzLCBmcmFtZSkpOwogICAgIGlmIChtX3dlYk1lZGlhUGxheWVyLmdldCgpKQogICAgICAgICBt
X3dlYk1lZGlhUGxheWVyLT5sb2FkKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpKTsKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmggYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCmluZGV4IGUwMTQ4
NzEuLjY1MzUwOTQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNs
aWVudEltcGwuaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0
ZS5oIgogI2luY2x1ZGUgIlZpZGVvRnJhbWVDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlZpZGVvRnJh
bWVQcm92aWRlci5oIgorI2luY2x1ZGUgIlZpZGVvTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUg
IldlYk1lZGlhUGxheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCkBAIC02
MSw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICBXZWJNZWRpYVBsYXllciogbWVkaWFQbGF5ZXIoKSBj
b25zdDsKIAogICAgIC8vIFdlYk1lZGlhUGxheWVyQ2xpZW50IG1ldGhvZHM6CisgICAgdmlydHVh
bCB+V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsKCk7CiAgICAgdmlydHVhbCB2b2lkIG5ldHdvcmtT
dGF0ZUNoYW5nZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVhZHlTdGF0ZUNoYW5nZWQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgdm9sdW1lQ2hhbmdlZChmbG9hdCk7CkBAIC0xMjksNyArMTMxLDcgQEAg
cHJpdmF0ZToKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllciogbV9tZWRpYVBsYXllcjsKICAgICBP
d25QdHI8V2ViTWVkaWFQbGF5ZXI+IG1fd2ViTWVkaWFQbGF5ZXI7CiAjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQotICAgIFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybUxheWVyPiBtX3Zp
ZGVvTGF5ZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bT4gbV92aWRl
b0xheWVyOwogICAgIGJvb2wgbV9zdXBwb3J0c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmc7CiAjZW5k
aWYKICAgICBzdGF0aWMgYm9vbCBtX2lzRW5hYmxlZDsK
</data>
<flag name="review"
          id="59240"
          type_id="1"
          status="+"
          setter="jamesr"
    />
          </attachment>
      

    </bug>

</bugzilla>