<?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>65658</bug_id>
          
          <creation_ts>2011-08-03 17:29:30 -0700</creation_ts>
          <short_desc>Readback composited webgl results for printing</short_desc>
          <delta_ts>2011-08-11 20:32:35 -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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Bauman">jbauman</reporter>
          <assigned_to name="John Bauman">jbauman</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>nduca</cc>
    
    <cc>senorblanco</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>446238</commentid>
    <comment_count>0</comment_count>
    <who name="John Bauman">jbauman</who>
    <bug_when>2011-08-03 17:29:30 -0700</bug_when>
    <thetext>Readback composited webgl results for printing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446240</commentid>
    <comment_count>1</comment_count>
      <attachid>102863</attachid>
    <who name="John Bauman">jbauman</who>
    <bug_when>2011-08-03 17:33:37 -0700</bug_when>
    <thetext>Created attachment 102863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446242</commentid>
    <comment_count>2</comment_count>
      <attachid>102863</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-03 17:42:08 -0700</bug_when>
    <thetext>Comment on attachment 102863
Patch

Attachment 102863 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9302242</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446780</commentid>
    <comment_count>3</comment_count>
    <who name="John Bauman">jbauman</who>
    <bug_when>2011-08-04 14:25:13 -0700</bug_when>
    <thetext>Hmm, http://codereview.chromium.org/7566046/ is needed for this to work. But anyway, hopefully it&apos;s ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446892</commentid>
    <comment_count>4</comment_count>
      <attachid>103004</attachid>
    <who name="John Bauman">jbauman</who>
    <bug_when>2011-08-04 16:42:40 -0700</bug_when>
    <thetext>Created attachment 103004
fix premultiply alpha</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446898</commentid>
    <comment_count>5</comment_count>
      <attachid>103004</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-04 16:52:30 -0700</bug_when>
    <thetext>Comment on attachment 103004
fix premultiply alpha

Attachment 103004 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9306622</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448182</commentid>
    <comment_count>6</comment_count>
      <attachid>103004</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-08-08 12:38:27 -0700</bug_when>
    <thetext>Comment on attachment 103004
fix premultiply alpha

The approach looks good overall. Go ahead and land the Chromium side changes. You could then either wait for the Chromium DEPS to roll in WebKit or -- better -- update chromium_rev in Source/WebKit/chromium/DEPS in this patch and ping the WebKit gardener on IRC about doing that roll along with your other changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448377</commentid>
    <comment_count>7</comment_count>
      <attachid>103319</attachid>
    <who name="John Bauman">jbauman</who>
    <bug_when>2011-08-08 17:19:16 -0700</bug_when>
    <thetext>Created attachment 103319
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448389</commentid>
    <comment_count>8</comment_count>
      <attachid>103319</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-08 17:51:10 -0700</bug_when>
    <thetext>Comment on attachment 103319
Patch

Attachment 103319 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9333215

New failing tests:
fast/canvas/webgl/premultiplyalpha-test.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448401</commentid>
    <comment_count>9</comment_count>
      <attachid>103325</attachid>
    <who name="John Bauman">jbauman</who>
    <bug_when>2011-08-08 18:23:09 -0700</bug_when>
    <thetext>Created attachment 103325
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448885</commentid>
    <comment_count>10</comment_count>
      <attachid>103417</attachid>
    <who name="John Bauman">jbauman</who>
    <bug_when>2011-08-09 16:43:14 -0700</bug_when>
    <thetext>Created attachment 103417
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448886</commentid>
    <comment_count>11</comment_count>
    <who name="John Bauman">jbauman</who>
    <bug_when>2011-08-09 16:44:25 -0700</bug_when>
    <thetext>Jamesr or senorblanco, could one of you look over this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448894</commentid>
    <comment_count>12</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-09 17:08:02 -0700</bug_when>
    <thetext>This implies having synchronous main thread access to the compositor context which is problematic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448899</commentid>
    <comment_count>13</comment_count>
    <who name="John Bauman">jbauman</who>
    <bug_when>2011-08-09 17:11:42 -0700</bug_when>
    <thetext>Right, but before we actually put the compositor context in a separate thread we&apos;re very likely going to put the webgl context in the same share group as the compositor context, so we&apos;ll be able to do the readback from the webgl context. This patch is pretty much just a bridge until that happens.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448920</commentid>
    <comment_count>14</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-09 17:54:52 -0700</bug_when>
    <thetext>I don&apos;t think we would put webgl in the same share group as the compositor, that would complicate resource and id management for no good reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448988</commentid>
    <comment_count>15</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-08-09 23:01:09 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; I don&apos;t think we would put webgl in the same share group as the compositor, that would complicate resource and id management for no good reason.

How else would we get access to the WebGL draw buffer texture from the compositor?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449123</commentid>
    <comment_count>16</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-08-10 06:53:52 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; I don&apos;t think we would put webgl in the same share group as the compositor, that would complicate resource and id management for no good reason.

On the plus side, I think this would make it possible to eliminate the readback in canvas2D-&gt;WebGL draws.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449330</commentid>
    <comment_count>17</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-10 12:58:04 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; I don&apos;t think we would put webgl in the same share group as the compositor, that would complicate resource and id management for no good reason.
&gt; 
&gt; How else would we get access to the WebGL draw buffer texture from the compositor?

Same way we do now, via magic framebuffer 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449333</commentid>
    <comment_count>18</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-10 13:00:08 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #14)
&gt; &gt; I don&apos;t think we would put webgl in the same share group as the compositor, that would complicate resource and id management for no good reason.
&gt; 
&gt; On the plus side, I think this would make it possible to eliminate the readback in canvas2D-&gt;WebGL draws.

That&apos;s a good point.

Right now, WebGL contexts are explicitly not in the same share group partially to try to provide greater isolation (don&apos;t want to accidentally share a compositor texture w/ WebGL) and also to avoid performance issues with resource ID allocation in our current share group implementation.  We can mitigate the resource ID speed issues somewhat by caching, but we do need to be careful especially since there&apos;s no way to create resources in bulk with the WebGL API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449442</commentid>
    <comment_count>19</comment_count>
    <who name="John Bauman">jbauman</who>
    <bug_when>2011-08-10 15:41:34 -0700</bug_when>
    <thetext>Yeah, at least for M14 we&apos;re not going to have the compositor context in another thread, so I&apos;d like to get this in for that. And for later versions, there are enough benefits to being able to share other textures that we&apos;ll probably find another way to ensure that textures are cleaned up properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449445</commentid>
    <comment_count>20</comment_count>
      <attachid>103544</attachid>
    <who name="John Bauman">jbauman</who>
    <bug_when>2011-08-10 15:44:23 -0700</bug_when>
    <thetext>Created attachment 103544
remove now-unnecessary DEPS roll</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449469</commentid>
    <comment_count>21</comment_count>
      <attachid>103544</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-10 16:22:12 -0700</bug_when>
    <thetext>Comment on attachment 103544
remove now-unnecessary DEPS roll

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

&gt; Source/WebCore/platform/graphics/GraphicsContext3D.h:797
&gt; +#if PLATFORM(CHROMIUM)
&gt; +    void paintFramebufferToCanvas(int framebuffer, int width, int height, bool premultiplyAlpha, CanvasRenderingContext*);
&gt; +#endif

This seems wrong, if it&apos;s chromium-specific shouldn&apos;t this be on Extensions3DChromium?

Additionally it&apos;s a layering violation to have a dependency on CanvasRenderingContext here.  CanvasRenderingContext is defined in WebCore/html/canvas/.  Classes in WebCore/platform/ should not depend on anything in WebCore/ outside of the platform/ directory.

It seems that this parameter is just used to get at the underlying ImageBuffer*.  Could we pass in an ImageBuffer* instead, perhaps)?

&gt; Source/WebCore/platform/graphics/chromium/WebGLLayerChromium.h:42
&gt; +class CanvasRenderingContext;

Newp, you can&apos;t depend on CanvasRenderingContext here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449470</commentid>
    <comment_count>22</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-10 16:23:37 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Yeah, at least for M14 we&apos;re not going to have the compositor context in another thread, so I&apos;d like to get this in for that. And for later versions, there are enough benefits to being able to share other textures that we&apos;ll probably find another way to ensure that textures are cleaned up properly.

I agree this approach is probably good for m14.  Very shortly after that it&apos;ll be a pain in the butt, though.  Maybe we can deal with it the same way we deal with other readback cases (which is TBD).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449479</commentid>
    <comment_count>23</comment_count>
    <who name="John Bauman">jbauman</who>
    <bug_when>2011-08-10 16:35:22 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 103544 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=103544&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext3D.h:797
&gt; &gt; +#if PLATFORM(CHROMIUM)
&gt; &gt; +    void paintFramebufferToCanvas(int framebuffer, int width, int height, bool premultiplyAlpha, CanvasRenderingContext*);
&gt; &gt; +#endif
&gt; 
&gt; This seems wrong, if it&apos;s chromium-specific shouldn&apos;t this be on Extensions3DChromium?
&gt; 
&gt; Additionally it&apos;s a layering violation to have a dependency on CanvasRenderingContext here.  CanvasRenderingContext is defined in WebCore/html/canvas/.  Classes in WebCore/platform/ should not depend on anything in WebCore/ outside of the platform/ directory.
&gt; 
&gt; It seems that this parameter is just used to get at the underlying ImageBuffer*.  Could we pass in an ImageBuffer* instead, perhaps)?

Oh, the code for paintRenderingResultsToCanvas already has that dependency, so I figured it was ok. I could try to replace it with ImageBuffer, but currently the CG implementation also uses that to get the correct GraphicsContext3D to paint to the canvas. I suppose I could try to make paintToCanvas static, so that&apos;s unnecessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449499</commentid>
    <comment_count>24</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-10 17:05:29 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #21)
&gt; &gt; Additionally it&apos;s a layering violation to have a dependency on CanvasRenderingContext here.  CanvasRenderingContext is defined in WebCore/html/canvas/.  Classes in WebCore/platform/ should not depend on anything in WebCore/ outside of the platform/ directory.
&gt; &gt; 
&gt; &gt; It seems that this parameter is just used to get at the underlying ImageBuffer*.  Could we pass in an ImageBuffer* instead, perhaps)?
&gt; 
&gt; Oh, the code for paintRenderingResultsToCanvas already has that dependency, so I figured it was ok. I could try to replace it with ImageBuffer, but currently the CG implementation also uses that to get the correct GraphicsContext3D to paint to the canvas. I suppose I could try to make paintToCanvas static, so that&apos;s unnecessary.

Yeah it&apos;s unfortunate that this already exists, but we shouldn&apos;t add even more.  You could pass and ImageBuffer* and a GraphicsContext3D* if you definitely need both.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450203</commentid>
    <comment_count>25</comment_count>
      <attachid>103715</attachid>
    <who name="John Bauman">jbauman</who>
    <bug_when>2011-08-11 18:06:52 -0700</bug_when>
    <thetext>Created attachment 103715
Fix layering issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450205</commentid>
    <comment_count>26</comment_count>
      <attachid>103715</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-11 18:17:19 -0700</bug_when>
    <thetext>Comment on attachment 103715
Fix layering issues

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

Would it be the epitome of foolishness to ask for a test for this?

I think the patch looks pretty reasonable.  Ken should probably take a look at it, though, as he&apos;s a lot more familiar with the WebGL preserves drawing buffer stuff than I am.

&gt; Source/WebCore/platform/graphics/GraphicsContext3D.h:797
&gt; +    void paintRenderingResultsToCanvas(CanvasRenderingContext*);
&gt;      PassRefPtr&lt;ImageData&gt; paintRenderingResultsToImageData();
&gt; +    bool paintCompositedResultsToCanvas(CanvasRenderingContext*);

these are still wrong, even though you didn&apos;t write them.  Can you file a separate bug about getting these fixed?  CC myself, kbr@chromium.org, and cmarrin@apple.com

&gt; Source/WebKit/chromium/src/GraphicsContext3DChromium.cpp:212
&gt; +    unsigned int bufferSize = 4 * width * height;

size_t please

&gt; Source/WebKit/chromium/src/GraphicsContext3DInternal.h:316
&gt;      unsigned char* m_renderOutput;
&gt; +    unsigned int m_renderOutputSize;

Hm, we&apos;re doing manual new[]/delete[] on renderOutput.  Not very pretty - we have an OwnArrayPtr&lt;&gt; type in WTF that&apos;ll take care of that.  Also, I think the size should be a size_t since it&apos;s a byte count.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450208</commentid>
    <comment_count>27</comment_count>
    <who name="John Bauman">jbauman</who>
    <bug_when>2011-08-11 18:27:22 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 103715 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=103715&amp;action=review
&gt; 
&gt; Would it be the epitome of foolishness to ask for a test for this?

If you can tell me how to do a pixel test on the printed output of a page after it&apos;s been composited, I can try.
&gt; 
&gt; I think the patch looks pretty reasonable.  Ken should probably take a look at it, though, as he&apos;s a lot more familiar with the WebGL preserves drawing buffer stuff than I am.

Ken has been at SIGGRAPH for the past few days, and I&apos;m not sure 
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext3D.h:797
&gt; &gt; +    void paintRenderingResultsToCanvas(CanvasRenderingContext*);
&gt; &gt;      PassRefPtr&lt;ImageData&gt; paintRenderingResultsToImageData();
&gt; &gt; +    bool paintCompositedResultsToCanvas(CanvasRenderingContext*);
&gt; 
&gt; these are still wrong, even though you didn&apos;t write them.  Can you file a separate bug about getting these fixed?  CC myself, kbr@chromium.org, and cmarrin@apple.com
&gt; 
Done: https://bugs.webkit.org/show_bug.cgi?id=66121

&gt; &gt; Source/WebKit/chromium/src/GraphicsContext3DChromium.cpp:212
&gt; &gt; +    unsigned int bufferSize = 4 * width * height;
&gt; 
&gt; size_t please
&gt; 
&gt; &gt; Source/WebKit/chromium/src/GraphicsContext3DInternal.h:316
&gt; &gt;      unsigned char* m_renderOutput;
&gt; &gt; +    unsigned int m_renderOutputSize;
&gt; 
&gt; Hm, we&apos;re doing manual new[]/delete[] on renderOutput.  Not very pretty - we have an OwnArrayPtr&lt;&gt; type in WTF that&apos;ll take care of that.  Also, I think the size should be a size_t since it&apos;s a byte count.

Yeah, makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450219</commentid>
    <comment_count>28</comment_count>
      <attachid>103715</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-08-11 18:44:33 -0700</bug_when>
    <thetext>Comment on attachment 103715
Fix layering issues

Given the other cleanup bug, this seems fine to me to land in its current form. John, could you file a bug about switching to use OwnArrayPtr for m_renderOutput in GraphicsContext3DInternal? This is previously existing cruft which I don&apos;t think needs to be fixed in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450224</commentid>
    <comment_count>29</comment_count>
      <attachid>103722</attachid>
    <who name="John Bauman">jbauman</who>
    <bug_when>2011-08-11 18:50:57 -0700</bug_when>
    <thetext>Created attachment 103722
use OwnArrayPtr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450226</commentid>
    <comment_count>30</comment_count>
      <attachid>103722</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-11 18:55:52 -0700</bug_when>
    <thetext>Comment on attachment 103722
use OwnArrayPtr

restoring kbr&apos;s r+ cq+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450254</commentid>
    <comment_count>31</comment_count>
      <attachid>103722</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-11 20:32:29 -0700</bug_when>
    <thetext>Comment on attachment 103722
use OwnArrayPtr

Clearing flags on attachment: 103722

Committed r92908: &lt;http://trac.webkit.org/changeset/92908&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450256</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-11 20:32:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102863</attachid>
            <date>2011-08-03 17:33:37 -0700</date>
            <delta_ts>2011-08-04 16:42:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65658-20110803173335.patch</filename>
            <type>text/plain</type>
            <size>15505</size>
            <attacher name="John Bauman">jbauman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIyOTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NTU2ZjliYzRjYWRjYWM3
YTI5MDI3YmU4MTQwMzllY2YzOTAyMjVlLi40Y2IwOTA2MTY3NDhhZTdhNTBjYjNhZjJlOTUzZWNm
ZGZiMmQ0NmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDgtMDMgIEpvaG4g
QmF1bWFuICA8amJhdW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVhZGJhY2sgY29tcG9z
aXRlZCB3ZWJnbCByZXN1bHRzIGZvciBwcmludGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcmVhbCBjb21wb3NpdGVkIHJlc3VsdHMgbWF5IGJl
IGxvY2tlZCBpbnNpZGUgdGhlIGNvbXBvc2l0b3IKKyAgICAgICAgY29udGV4dCdzIHZlcnNpb24g
b2YgYSB0ZXh0dXJlIGJlY2F1c2UgdGhlIGRyYXdpbmcgYnVmZmVyIHdhcworICAgICAgICBhdXRv
bWF0aWNhbGx5IGNsZWFyZWQsIHNvIHJlYWQgZnJvbSB0aGVyZSB0byBnZXQgdGhlIGFjdHVhbAor
ICAgICAgICBwcmVzZW50ZWQgdmVyc2lvbiB0byBkcmF3LgorCisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6cGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OnNldENvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpzZXRMYXllclJlbmRlcmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFz
KToKKwogMjAxMS0wOC0wMyAgTHVrZSBNYWNwaGVyc29uICAgPG1hY3BoZXJzb25AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFVzZSBhcHByb3ByaWF0ZSBtYWNybyBmb3IgQ1NTUHJvcGVydHlJbWFn
ZVJlbmRlcmluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDgyN2QyMDM1N2Q0YWY4MzFiYmEzNGVlN2I3MDQwZTdi
NzVkZmRmMmMuLmVkMGM4MWI0MDBlMjE2YzJiOGU0YjY4N2EyNTAzZTI3YjQ4MTNiNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmNwcApAQCAtNTY2LDkgKzU2NiwxMCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKQogewogICAgIC8vIFVudGlsIHRoZSBjYW52YXMg
aXMgd3JpdHRlbiB0byBieSB0aGUgYXBwbGljYXRpb24sIHRoZSBjbGVhciB0aGF0CiAgICAgLy8g
aGFwcGVuZWQgYWZ0ZXIgaXQgd2FzIGNvbXBvc2l0ZWQgc2hvdWxkIGJlIGlnbm9yZWQgYnkgdGhl
IGNvbXBvc2l0b3IuCi0gICAgaWYgKG1fY29udGV4dC0+bGF5ZXJDb21wb3NpdGVkKCkgJiYgIW1f
YXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpCisgICAgaWYgKG1fY29udGV4dC0+bGF5
ZXJDb21wb3NpdGVkKCkgJiYgIW1fYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpIHsK
KyAgICAgICAgbV9jb250ZXh0LT5wYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXModGhpcyk7
CiAgICAgICAgIGNhbnZhcygpLT5tYWtlUHJlc2VudGF0aW9uQ29weSgpOwotICAgIGVsc2UKKyAg
ICB9IGVsc2UKICAgICAgICAgY2FudmFzKCktPmNsZWFyUHJlc2VudGF0aW9uQ29weSgpOwogICAg
IGNsZWFySWZDb21wb3NpdGVkKCk7CiAgICAgaWYgKCFtX21hcmtlZENhbnZhc0RpcnR5ICYmICFt
X2xheWVyQ2xlYXJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IGY4NmEyZjhhYzE0NDNhYjk4NDBlZWMxODFhNGE2
MjZmNjI4NjQ1OGYuLjZmMGY5M2Y1ZDAxMmI2YzA4OGQ2NzQ4MGNiYmZkMWIxODQ0MzA4ZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dDNELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaApAQCAtNzkxLDcgKzc5MSwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBsYXllckNvbXBv
c2l0ZWQoKSBjb25zdDsKIAogICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMo
Q2FudmFzUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCk7CisjaWYgUExBVEZPUk0oQ0hST01JVU0p
CisgICAgdm9pZCBwYWludEZyYW1lYnVmZmVyVG9DYW52YXMoaW50IGZyYW1lYnVmZmVyLCBpbnQg
d2lkdGgsIGludCBoZWlnaHQsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqKTsKKyNlbmRpZgogICAg
IFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgp
OworICAgIGJvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQqKTsKIAogI2lmIFBMQVRGT1JNKFFUKQogICAgIGJvb2wgcGFpbnRzSW50b0NhbnZh
c0J1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21p
dW0uY3BwCmluZGV4IGJkNTA2NDFiOTI4NjMyMDYyYTAzYjY5ZDI4MzVlNzUyZmMwN2RhMTcuLmNl
ZGY3ZGI5ZTkxODUzNmQxYzUyZDZhNGVmNTM5MDhlYTAwMjc4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xM
YXllckNocm9taXVtLmNwcApAQCAtOTcsNiArOTcsMTggQEAgdm9pZCBXZWJHTExheWVyQ2hyb21p
dW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKQogICAgIH0KIH0KIAorYm9vbCBXZWJHTExh
eWVyQ2hyb21pdW06OnBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5n
Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBpZiAobV90ZXh0dXJlVXBkYXRlZCB8fCAhbGF5ZXJS
ZW5kZXJlcigpIHx8ICFkcmF3c0NvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgSW50U2l6ZSBmcmFtZWJ1ZmZlclNpemUgPSBtX2NvbnRleHQtPmdldEludGVybmFsRnJhbWVi
dWZmZXJTaXplKCk7CisgICAgQVNTRVJUKGxheWVyUmVuZGVyZXJDb250ZXh0KCkpOworICAgIC8v
IFRoaXMgd291bGQgaWRlYWxseSBiZSBkb25lIGluIHRoZSB3ZWJnbCBjb250ZXh0LCBidXQgdGhh
dCBpc24ndCBwb3NzaWJsZSB5ZXQuCisgICAgbGF5ZXJSZW5kZXJlckNvbnRleHQoKS0+cGFpbnRG
cmFtZWJ1ZmZlclRvQ2FudmFzKG1fZnJhbWVidWZmZXIsIGZyYW1lYnVmZmVyU2l6ZS53aWR0aCgp
LCBmcmFtZWJ1ZmZlclNpemUuaGVpZ2h0KCksIGNvbnRleHQpOworICAgIHJldHVybiB0cnVlOwor
fQorCiB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVyZVVwZGF0ZWQoKQogewogICAg
IG1fdGV4dHVyZVVwZGF0ZWQgPSB0cnVlOwpAQCAtMTI1LDYgKzEzNywxMSBAQCB2b2lkIFdlYkdM
TGF5ZXJDaHJvbWl1bTo6c2V0Q29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCkKICAgICBpZiAodGV4dHVyZUlkICE9IG1fdGV4dHVyZUlkIHx8IGNvbnRleHRDaGFuZ2VkKSB7
CiAgICAgICAgIG1fdGV4dHVyZUNoYW5nZWQgPSB0cnVlOwogICAgICAgICBtX3RleHR1cmVVcGRh
dGVkID0gdHJ1ZTsKKyAgICAgICAgaWYgKGxheWVyUmVuZGVyZXIoKSkgeworICAgICAgICAgICAg
QVNTRVJUKGxheWVyUmVuZGVyZXJDb250ZXh0KCkpOworICAgICAgICAgICAgbGF5ZXJSZW5kZXJl
ckNvbnRleHQoKS0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZF
UiwgbV9mcmFtZWJ1ZmZlcik7CisgICAgICAgICAgICBsYXllclJlbmRlcmVyQ29udGV4dCgpLT5m
cmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBo
aWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIHRleHR1cmVJZCwgMCk7CisgICAgICAgIH0KICAgICB9CiAgICAgbV90ZXh0dXJlSWQg
PSB0ZXh0dXJlSWQ7CiAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRl
cyA9IG1fY29udGV4dC0+Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKTsKQEAgLTE0NCw2ICsxNjEsMTIg
QEAgdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnNldExheWVyUmVuZGVyZXIoTGF5ZXJSZW5kZXJl
ckNocm9taXVtKiBuZXdMYXllclJlbmRlcmUKICAgICAgICAgfQogCiAgICAgICAgIExheWVyQ2hy
b21pdW06OnNldExheWVyUmVuZGVyZXIobmV3TGF5ZXJSZW5kZXJlcik7CisgICAgICAgIG1fZnJh
bWVidWZmZXIgPSBsYXllclJlbmRlcmVyQ29udGV4dCgpLT5jcmVhdGVGcmFtZWJ1ZmZlcigpOwor
ICAgICAgICBpZiAobGF5ZXJSZW5kZXJlcigpICYmIG1fdGV4dHVyZUlkKSB7CisgICAgICAgICAg
ICBBU1NFUlQobGF5ZXJSZW5kZXJlckNvbnRleHQoKSk7CisgICAgICAgICAgICBsYXllclJlbmRl
cmVyQ29udGV4dCgpLT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSLCBtX2ZyYW1lYnVmZmVyKTsKKyAgICAgICAgICAgIGxheWVyUmVuZGVyZXJDb250ZXh0KCkt
PmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgbV90ZXh0dXJlSWQsIDApOworICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVy
Q2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dl
YkdMTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDE4NmU1YzEzOThiOWE2NWQ0MzFmY2E0NGU0NDM3YmI0
MzJiZDk2MGMuLmFhMGQ0ZDQ2ODMzYWQ5OGUxMWExYjE2MWFjZTI0ZTA0MGJjMGI5MGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5
ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCkBAIC0zOSw2ICszOSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDsKIGNsYXNzIEdyYXBoaWNz
Q29udGV4dDNEOwogY2xhc3MgV2ViR0xMYXllckNocm9taXVtUmF0ZUxpbWl0VGFzazsKIApAQCAt
NTIsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCk7CiAgICAg
dm9pZCBzZXRUZXh0dXJlVXBkYXRlZCgpOworICAgIGJvb2wgcGFpbnRSZW5kZXJlZFJlc3VsdHNU
b0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0Kik7CiAKICAgICB2b2lkIHNldENvbnRleHQo
Y29uc3QgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpOwogICAgIEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0OyB9CkBAIC03NCw2ICs3Niw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2NvbnRleHRTdXBwb3J0c1JhdGVMaW1pdGluZ0V4dGVuc2lvbjsKICAg
ICBUaW1lcjxXZWJHTExheWVyQ2hyb21pdW0+IG1fcmF0ZUxpbWl0aW5nVGltZXI7CiAgICAgYm9v
bCBtX3RleHR1cmVVcGRhdGVkOworICAgIGludCBtX2ZyYW1lYnVmZmVyOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dDNET3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKaW5kZXggZDkxZmI2NmQ4YzJlMzEwNDQ0
NmMyM2NlODczY2UzZWFjYzZkMmY2YS4uZjUyZTAzOGM5ZGM4OTEzY2JmYmUxMmY5ODlmYmIzZGZj
MWM2MjE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCkBAIC0xNTEs
NiArMTUxLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGNvCiB9CiAjZW5kaWYKIAorYm9vbCBw
YWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY29u
dGV4dCkKK3sKKyAgICAvLyBOb3QgbmVlZGVkIGF0IHRoZSBtb21lbnQsIHNvIHJldHVybiB0aGF0
IG5vdGhpbmcgd2FzIGRvbmUuCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBQYXNzUmVmUHRyPElt
YWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VE
YXRhKCkKIHsKICAgICAvLyBSZWFkaW5nIHByZW11bHRpcGxpZWQgYWxwaGEgd291bGQgaW52b2x2
ZSB1bnByZW11bHRpcGx5aW5nLCB3aGljaCBpcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCA1OTM3NGIzMjliZmZkYjNmZmE2MmZjZjE0Mzk2OTZiNGNjYzY2OTgyLi40NTA3ODQzNDNhZTQ3
MWJiMWZmMTY4ZjJlOGRhZmM4OGZlOWEwNDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIwIEBACisyMDExLTA4LTAzICBKb2huIEJhdW1hbiAgPGpiYXVtYW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJlYWRiYWNrIGNvbXBvc2l0ZWQgd2ViZ2wgcmVzdWx0cyBmb3Ig
cHJpbnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY1NjU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIHN1cHBvcnQgZm9yIHJlYWRpbmcgZnJvbSB0aGUgY29tcG9zaXRlZCB2ZXJzaW9uIG9mIGEg
Y2FudmFzLgorCisgICAgICAgICogcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg6CisgICAg
ICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnRGcmFtZWJ1ZmZlclRvQ2FudmFzKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0lt
YWdlRGF0YSk6CisgICAgICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaDoKKwog
MjAxMS0wOC0wMyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogW1RpbWVsaW5lXSBIb3ZlciBvbiBwYWludCBldmVudHMgYW5kIHNl
ZSByZWN0IG91dGxpbmUgYXJvdW5kIHRoYXQgYXJlYS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IDc0ZTM3MTEzNGY1
ZTNkMTJmMWQxMDFiOWU1ZjY2ZTBkMzQ3ZTRjYWEuLjA4ZjM4MWZhNzdiZjYxNGUzZTNhZjVjYmM2
OTczN2RhYjUxYzYwYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkdyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAg
ICAvLyB0aGUgbWVtb3J5IHJlZ2lvbiBwb2ludGVkIHRvIGJ5ICJwaXhlbHMiIHdpdGggc2l6ZSAi
YnVmZmVyU2l6ZSIuIEl0IGlzCiAgICAgLy8gZXhwZWN0ZWQgdGhhdCB0aGUgc3RvcmFnZSBmb3Ig
InBpeGVscyIgY292ZXJzICg0ICogd2lkdGggKiBoZWlnaHQpIGJ5dGVzLgogICAgIC8vIFJldHVy
bnMgdHJ1ZSBvbiBzdWNjZXNzLgotICAgIHZpcnR1YWwgYm9vbCByZWFkQmFja0ZyYW1lYnVmZmVy
KHVuc2lnbmVkIGNoYXIqIHBpeGVscywgc2l6ZV90IGJ1ZmZlclNpemUpID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgcmVhZEJhY2tGcmFtZWJ1ZmZlcih1bnNpZ25lZCBjaGFyKiBwaXhlbHMsIGludCB3
aWR0aCwgaW50IGhlaWdodCwgc2l6ZV90IGJ1ZmZlclNpemUsIFdlYkdMSWQgZnJhbWVidWZmZXIp
ID0gMDsKIAogICAgIC8vIFJldHVybnMgdGhlIGlkIG9mIHRoZSB0ZXh0dXJlIHdoaWNoIGlzIHVz
ZWQgZm9yIHN0b3JpbmcgdGhlIGNvbnRlbnRzIG9mCiAgICAgLy8gdGhlIGZyYW1lYnVmZmVyIGFz
c29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRleHQuIFRoaXMgdGV4dHVyZSBpcyBhY2Nlc3NpYmxlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENo
cm9taXVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNE
Q2hyb21pdW0uY3BwCmluZGV4IGEzMDk2NTZjMWZmMWY2NGM1ZjEzMTZlZTIzZTgzMGVjMGRmMzFh
NDguLjA1MzQ4NGQ4YzI1OGQ2N2UwZjgyMzk0YjU3ZWVjYzEwMjRkZmZhMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21p
dW0uY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpsYXllckNvbXBvc2l0ZWQoKSBjb25zdAogICAgIHJldHVybiBtX2xheWVyQ29tcG9zaXRlZDsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludFJlbmRlcmluZ1Jlc3Vs
dHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0KQordm9pZCBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpwYWludEZyYW1lYnVmZmVyVG9DYW52YXMoaW50IGZyYW1lYnVm
ZmVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGNvbnRl
eHQpCiB7CiAgICAgSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcyA9IGNvbnRleHQtPmNhbnZhcygp
OwogICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGNhbnZhcy0+YnVmZmVyKCk7CkBAIC0y
MTQsNyArMjE0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludFJlbmRl
cmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb24KICAgICBjb25zdCBTa0JpdG1h
cCogY2FudmFzQml0bWFwID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0
KCktPmJpdG1hcCgpOwogICAgIGNvbnN0IFNrQml0bWFwKiByZWFkYmFja0JpdG1hcCA9IDA7CiAg
ICAgQVNTRVJUKGNhbnZhc0JpdG1hcC0+Y29uZmlnKCkgPT0gU2tCaXRtYXA6OmtBUkdCXzg4ODhf
Q29uZmlnKTsKLSAgICBpZiAoY2FudmFzQml0bWFwLT53aWR0aCgpID09IG1faW1wbC0+d2lkdGgo
KSAmJiBjYW52YXNCaXRtYXAtPmhlaWdodCgpID09IG1faW1wbC0+aGVpZ2h0KCkpIHsKKyAgICBp
ZiAoY2FudmFzQml0bWFwLT53aWR0aCgpID09IHdpZHRoICYmIGNhbnZhc0JpdG1hcC0+aGVpZ2h0
KCkgPT0gaGVpZ2h0KSB7CiAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGZhc3Rlc3QgYW5kIG1vc3Qg
Y29tbW9uIGNhc2UuIFdlIHJlYWQgYmFjawogICAgICAgICAvLyBkaXJlY3RseSBpbnRvIHRoZSBj
YW52YXMncyBiYWNraW5nIHN0b3JlLgogICAgICAgICByZWFkYmFja0JpdG1hcCA9IGNhbnZhc0Jp
dG1hcDsKQEAgLTIyMywxMCArMjIzLDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29uCiAgICAg
ICAgIC8vIFdlIG5lZWQgdG8gYWxsb2NhdGUgYSB0ZW1wb3JhcnkgYml0bWFwIGZvciByZWFkaW5n
IGJhY2sgdGhlCiAgICAgICAgIC8vIHBpeGVsIGRhdGEuIFdlIHdpbGwgdGhlbiB1c2UgU2tpYSB0
byByZXNjYWxlIHRoaXMgYml0bWFwIHRvCiAgICAgICAgIC8vIHRoZSBzaXplIG9mIHRoZSBjYW52
YXMncyBiYWNraW5nIHN0b3JlLgotICAgICAgICBpZiAobV9yZXNpemluZ0JpdG1hcC53aWR0aCgp
ICE9IG1faW1wbC0+d2lkdGgoKSB8fCBtX3Jlc2l6aW5nQml0bWFwLmhlaWdodCgpICE9IG1faW1w
bC0+aGVpZ2h0KCkpIHsKKyAgICAgICAgaWYgKG1fcmVzaXppbmdCaXRtYXAud2lkdGgoKSAhPSB3
aWR0aCB8fCBtX3Jlc2l6aW5nQml0bWFwLmhlaWdodCgpICE9IGhlaWdodCkgewogICAgICAgICAg
ICAgbV9yZXNpemluZ0JpdG1hcC5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmln
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbXBsLT53aWR0aCgp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbXBsLT5oZWlnaHQo
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCk7CiAgICAgICAgICAgICBp
ZiAoIW1fcmVzaXppbmdCaXRtYXAuYWxsb2NQaXhlbHMoKSkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KQEAgLTI0MywxMCArMjQzLDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5n
Q29uCiAjZXJyb3IgTXVzdCBwb3J0IHRvIHlvdXIgcGxhdGZvcm0KICNlbmRpZgogCi0gICAgbV9p
bXBsLT5yZWFkQmFja0ZyYW1lYnVmZmVyKHBpeGVscywgNCAqIG1faW1wbC0+d2lkdGgoKSAqIG1f
aW1wbC0+aGVpZ2h0KCkpOworICAgIG1faW1wbC0+cmVhZEJhY2tGcmFtZWJ1ZmZlcihwaXhlbHMs
IHdpZHRoLCBoZWlnaHQsIDQgKiB3aWR0aCAqIGhlaWdodCwgZnJhbWVidWZmZXIpOwogCiAgICAg
aWYgKCFtX2ltcGwtPmdldENvbnRleHRBdHRyaWJ1dGVzKCkucHJlbXVsdGlwbGllZEFscGhhKSB7
Ci0gICAgICAgIHNpemVfdCBidWZmZXJTaXplID0gNCAqIG1faW1wbC0+d2lkdGgoKSAqIG1faW1w
bC0+aGVpZ2h0KCk7CisgICAgICAgIHNpemVfdCBidWZmZXJTaXplID0gNCAqIHdpZHRoICogaGVp
Z2h0OwogCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYnVmZmVyU2l6ZTsgaSArPSA0
KSB7CiAgICAgICAgICAgICBwaXhlbHNbaSArIDBdID0gc3RkOjptaW4oMjU1LCBwaXhlbHNbaSAr
IDBdICogcGl4ZWxzW2kgKyAzXSAvIDI1NSk7CkBAIC0yNjcsMTMgKzI2NywyNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKENh
bnZhc1JlbmRlcmluZ0NvbgogI2VsaWYgVVNFKENHKQogICAgIGlmIChtX3JlbmRlck91dHB1dCAm
JiBjb250ZXh0LT5pczNkKCkpIHsKICAgICAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB3ZWJH
TENvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihjb250ZXh0KTsK
LSAgICAgICAgd2ViR0xDb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5wYWludFRvQ2FudmFz
KG1fcmVuZGVyT3V0cHV0LCBtX2ltcGwtPndpZHRoKCksIG1faW1wbC0+aGVpZ2h0KCksIGNhbnZh
cy0+d2lkdGgoKSwgY2FudmFzLT5oZWlnaHQoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS0+cGxh
dGZvcm1Db250ZXh0KCkpOworICAgICAgICB3ZWJHTENvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNE
KCktPnBhaW50VG9DYW52YXMobV9yZW5kZXJPdXRwdXQsIHdpZHRoLCBoZWlnaHQsIGNhbnZhcy0+
d2lkdGgoKSwgY2FudmFzLT5oZWlnaHQoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS0+cGxhdGZv
cm1Db250ZXh0KCkpOwogICAgIH0KICNlbHNlCiAjZXJyb3IgTXVzdCBwb3J0IHRvIHlvdXIgcGxh
dGZvcm0KICNlbmRpZgogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50
UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQp
Cit7CisgICAgcGFpbnRGcmFtZWJ1ZmZlclRvQ2FudmFzKDAsIG1faW1wbC0+d2lkdGgoKSwgbV9p
bXBsLT5oZWlnaHQoKSwgY29udGV4dCk7Cit9CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQqIGNvbnRleHQpCit7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIGlm
IChwbGF0Zm9ybUxheWVyKCkpCisgICAgICAgIHJldHVybiBwbGF0Zm9ybUxheWVyKCktPnBhaW50
UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoY29udGV4dCk7CisjZW5kaWYKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiB7CiAgICAgaWYgKG1faW1wbC0+
Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEpCkBAIC0yODMsNyArMjk3
LDcgQEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXQKICAgICB1bnNpZ25lZCBjaGFyKiBwaXhlbHMg
PSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpLT5kYXRhKCk7CiAgICAgc2l6ZV90IGJ1ZmZlclNp
emUgPSA0ICogbV9pbXBsLT53aWR0aCgpICogbV9pbXBsLT5oZWlnaHQoKTsKIAotICAgIG1faW1w
bC0+cmVhZEJhY2tGcmFtZWJ1ZmZlcihwaXhlbHMsIGJ1ZmZlclNpemUpOworICAgIG1faW1wbC0+
cmVhZEJhY2tGcmFtZWJ1ZmZlcihwaXhlbHMsIG1faW1wbC0+d2lkdGgoKSwgbV9pbXBsLT5oZWln
aHQoKSwgYnVmZmVyU2l6ZSwgMCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJ1ZmZl
clNpemU7IGkgKz0gNCkKICAgICAgICAgc3RkOjpzd2FwKHBpeGVsc1tpXSwgcGl4ZWxzW2kgKyAy
XSk7CkBAIC0xMTczLDcgKzExODcsOSBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpsYXllckNv
bXBvc2l0ZWQoKSBjb25zdAogfQogCiBERUxFR0FURV9UT19JTlRFUk5BTF8xKHBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvQ2FudmFzLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0KikKK0RFTEVHQVRFX1RP
X0lOVEVSTkFMXzQocGFpbnRGcmFtZWJ1ZmZlclRvQ2FudmFzLCBpbnQsIGludCwgaW50LCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0KikKIERFTEVHQVRFX1RPX0lOVEVSTkFMX1IocGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9JbWFnZURhdGEsIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPikKK0RFTEVHQVRFX1RP
X0lOVEVSTkFMXzFSKHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcywgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dCosIGJvb2wpCiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50c0ludG9D
YW52YXNCdWZmZXIoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oCmluZGV4IGU1ODQzNjk2M2Y4OWE3MzNk
N2Y3MzlhZWNhNmUyYWQ0MTJmYjQ4MjcuLjFhODhiOTFmNDRjMDVjM2M4ZGE1ODM1MGUzYTNjMTBi
NWFhMmYxNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFw
aGljc0NvbnRleHQzREludGVybmFsLmgKQEAgLTgwLDggKzgwLDEwIEBAIHB1YmxpYzoKICAgICB2
b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKTsKIAogICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1
bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCopOworICAgIHZvaWQgcGFpbnRGcmFt
ZWJ1ZmZlclRvQ2FudmFzKGludCBmcmFtZWJ1ZmZlciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0Kik7CiAgICAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IHBhaW50
UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCk7CiAgICAgYm9vbCBwYWludHNJbnRvQ2FudmFz
QnVmZmVyKCkgY29uc3Q7CisgICAgYm9vbCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMo
Q2FudmFzUmVuZGVyaW5nQ29udGV4dCopOwogCiAgICAgdm9pZCBwcmVwYXJlVGV4dHVyZSgpOwog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103004</attachid>
            <date>2011-08-04 16:42:40 -0700</date>
            <delta_ts>2011-08-08 17:19:12 -0700</delta_ts>
            <desc>fix premultiply alpha</desc>
            <filename>bug-65658-20110804164239.patch</filename>
            <type>text/plain</type>
            <size>15716</size>
            <attacher name="John Bauman">jbauman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIyOTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NTU2ZjliYzRjYWRjYWM3
YTI5MDI3YmU4MTQwMzllY2YzOTAyMjVlLi40Y2IwOTA2MTY3NDhhZTdhNTBjYjNhZjJlOTUzZWNm
ZGZiMmQ0NmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDgtMDMgIEpvaG4g
QmF1bWFuICA8amJhdW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVhZGJhY2sgY29tcG9z
aXRlZCB3ZWJnbCByZXN1bHRzIGZvciBwcmludGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcmVhbCBjb21wb3NpdGVkIHJlc3VsdHMgbWF5IGJl
IGxvY2tlZCBpbnNpZGUgdGhlIGNvbXBvc2l0b3IKKyAgICAgICAgY29udGV4dCdzIHZlcnNpb24g
b2YgYSB0ZXh0dXJlIGJlY2F1c2UgdGhlIGRyYXdpbmcgYnVmZmVyIHdhcworICAgICAgICBhdXRv
bWF0aWNhbGx5IGNsZWFyZWQsIHNvIHJlYWQgZnJvbSB0aGVyZSB0byBnZXQgdGhlIGFjdHVhbAor
ICAgICAgICBwcmVzZW50ZWQgdmVyc2lvbiB0byBkcmF3LgorCisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6cGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OnNldENvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpzZXRMYXllclJlbmRlcmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFz
KToKKwogMjAxMS0wOC0wMyAgTHVrZSBNYWNwaGVyc29uICAgPG1hY3BoZXJzb25AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFVzZSBhcHByb3ByaWF0ZSBtYWNybyBmb3IgQ1NTUHJvcGVydHlJbWFn
ZVJlbmRlcmluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDgyN2QyMDM1N2Q0YWY4MzFiYmEzNGVlN2I3MDQwZTdi
NzVkZmRmMmMuLmVkMGM4MWI0MDBlMjE2YzJiOGU0YjY4N2EyNTAzZTI3YjQ4MTNiNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmNwcApAQCAtNTY2LDkgKzU2NiwxMCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKQogewogICAgIC8vIFVudGlsIHRoZSBjYW52YXMg
aXMgd3JpdHRlbiB0byBieSB0aGUgYXBwbGljYXRpb24sIHRoZSBjbGVhciB0aGF0CiAgICAgLy8g
aGFwcGVuZWQgYWZ0ZXIgaXQgd2FzIGNvbXBvc2l0ZWQgc2hvdWxkIGJlIGlnbm9yZWQgYnkgdGhl
IGNvbXBvc2l0b3IuCi0gICAgaWYgKG1fY29udGV4dC0+bGF5ZXJDb21wb3NpdGVkKCkgJiYgIW1f
YXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpCisgICAgaWYgKG1fY29udGV4dC0+bGF5
ZXJDb21wb3NpdGVkKCkgJiYgIW1fYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpIHsK
KyAgICAgICAgbV9jb250ZXh0LT5wYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXModGhpcyk7
CiAgICAgICAgIGNhbnZhcygpLT5tYWtlUHJlc2VudGF0aW9uQ29weSgpOwotICAgIGVsc2UKKyAg
ICB9IGVsc2UKICAgICAgICAgY2FudmFzKCktPmNsZWFyUHJlc2VudGF0aW9uQ29weSgpOwogICAg
IGNsZWFySWZDb21wb3NpdGVkKCk7CiAgICAgaWYgKCFtX21hcmtlZENhbnZhc0RpcnR5ICYmICFt
X2xheWVyQ2xlYXJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IGY4NmEyZjhhYzE0NDNhYjk4NDBlZWMxODFhNGE2
MjZmNjI4NjQ1OGYuLjg5YmZjNWQ0ZTM4ZDNlMDhlMjYzMjBhYWRlMjliMGM1MTRmNDkwZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dDNELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaApAQCAtNzkxLDcgKzc5MSwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBsYXllckNvbXBv
c2l0ZWQoKSBjb25zdDsKIAogICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMo
Q2FudmFzUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCk7CisjaWYgUExBVEZPUk0oQ0hST01JVU0p
CisgICAgdm9pZCBwYWludEZyYW1lYnVmZmVyVG9DYW52YXMoaW50IGZyYW1lYnVmZmVyLCBpbnQg
d2lkdGgsIGludCBoZWlnaHQsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dCopOworI2VuZGlmCiAgICAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IHBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCk7CisgICAgYm9vbCBwYWludENvbXBvc2l0ZWRSZXN1bHRz
VG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCopOwogCiAjaWYgUExBVEZPUk0oUVQpCiAg
ICAgYm9vbCBwYWludHNJbnRvQ2FudmFzQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2Vi
R0xMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYmQ1MDY0MWI5Mjg2MzIwNjJhMDNi
NjlkMjgzNWU3NTJmYzA3ZGExNy4uNjU1MmIxNjljNjhhNmViODIxZGU3ZWQwYzhmMTNmNmJjNGRj
MmE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vV2ViR0xMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCkBAIC05Nyw2ICs5NywxOCBA
QCB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpCiAg
ICAgfQogfQogCitib29sIFdlYkdMTGF5ZXJDaHJvbWl1bTo6cGFpbnRSZW5kZXJlZFJlc3VsdHNU
b0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0KQoreworICAgIGlmIChtX3Rl
eHR1cmVVcGRhdGVkIHx8ICFsYXllclJlbmRlcmVyKCkgfHwgIWRyYXdzQ29udGVudCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBJbnRTaXplIGZyYW1lYnVmZmVyU2l6ZSA9IG1fY29u
dGV4dC0+Z2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKTsKKyAgICBBU1NFUlQobGF5ZXJSZW5k
ZXJlckNvbnRleHQoKSk7CisgICAgLy8gVGhpcyB3b3VsZCBpZGVhbGx5IGJlIGRvbmUgaW4gdGhl
IHdlYmdsIGNvbnRleHQsIGJ1dCB0aGF0IGlzbid0IHBvc3NpYmxlIHlldC4KKyAgICBsYXllclJl
bmRlcmVyQ29udGV4dCgpLT5wYWludEZyYW1lYnVmZmVyVG9DYW52YXMobV9mcmFtZWJ1ZmZlciwg
ZnJhbWVidWZmZXJTaXplLndpZHRoKCksIGZyYW1lYnVmZmVyU2l6ZS5oZWlnaHQoKSwgIW1fY29u
dGV4dC0+Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEsIGNvbnRleHQp
OworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6c2V0VGV4
dHVyZVVwZGF0ZWQoKQogewogICAgIG1fdGV4dHVyZVVwZGF0ZWQgPSB0cnVlOwpAQCAtMTI1LDYg
KzEzNywxMSBAQCB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGV4dChjb25zdCBHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCkKICAgICBpZiAodGV4dHVyZUlkICE9IG1fdGV4dHVyZUlk
IHx8IGNvbnRleHRDaGFuZ2VkKSB7CiAgICAgICAgIG1fdGV4dHVyZUNoYW5nZWQgPSB0cnVlOwog
ICAgICAgICBtX3RleHR1cmVVcGRhdGVkID0gdHJ1ZTsKKyAgICAgICAgaWYgKGxheWVyUmVuZGVy
ZXIoKSkgeworICAgICAgICAgICAgQVNTRVJUKGxheWVyUmVuZGVyZXJDb250ZXh0KCkpOworICAg
ICAgICAgICAgbGF5ZXJSZW5kZXJlckNvbnRleHQoKS0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mcmFtZWJ1ZmZlcik7CisgICAgICAgICAgICBsYXll
clJlbmRlcmVyQ29udGV4dCgpLT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJZCwgMCk7CisgICAgICAgIH0KICAg
ICB9CiAgICAgbV90ZXh0dXJlSWQgPSB0ZXh0dXJlSWQ7CiAgICAgR3JhcGhpY3NDb250ZXh0M0Q6
OkF0dHJpYnV0ZXMgYXR0cmlidXRlcyA9IG1fY29udGV4dC0+Z2V0Q29udGV4dEF0dHJpYnV0ZXMo
KTsKQEAgLTE0NCw2ICsxNjEsMTIgQEAgdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnNldExheWVy
UmVuZGVyZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBuZXdMYXllclJlbmRlcmUKICAgICAgICAg
fQogCiAgICAgICAgIExheWVyQ2hyb21pdW06OnNldExheWVyUmVuZGVyZXIobmV3TGF5ZXJSZW5k
ZXJlcik7CisgICAgICAgIG1fZnJhbWVidWZmZXIgPSBsYXllclJlbmRlcmVyQ29udGV4dCgpLT5j
cmVhdGVGcmFtZWJ1ZmZlcigpOworICAgICAgICBpZiAobGF5ZXJSZW5kZXJlcigpICYmIG1fdGV4
dHVyZUlkKSB7CisgICAgICAgICAgICBBU1NFUlQobGF5ZXJSZW5kZXJlckNvbnRleHQoKSk7Cisg
ICAgICAgICAgICBsYXllclJlbmRlcmVyQ29udGV4dCgpLT5iaW5kRnJhbWVidWZmZXIoR3JhcGhp
Y3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2ZyYW1lYnVmZmVyKTsKKyAgICAgICAgICAgIGxh
eWVyUmVuZGVyZXJDb250ZXh0KCktPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4
dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlSWQsIDApOworICAgICAgICB9
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDE4NmU1YzEzOThi
OWE2NWQ0MzFmY2E0NGU0NDM3YmI0MzJiZDk2MGMuLmFhMGQ0ZDQ2ODMzYWQ5OGUxMWExYjE2MWFj
ZTI0ZTA0MGJjMGI5MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCkBAIC0zOSw2ICsz
OSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgV2ViR0xMYXllckNocm9taXVt
UmF0ZUxpbWl0VGFzazsKIApAQCAtNTIsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKCk7CiAgICAgdm9pZCBzZXRUZXh0dXJlVXBkYXRlZCgpOworICAgIGJvb2wg
cGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0Kik7CiAK
ICAgICB2b2lkIHNldENvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpOwog
ICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0OyB9CkBA
IC03NCw2ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NvbnRleHRTdXBwb3J0c1JhdGVM
aW1pdGluZ0V4dGVuc2lvbjsKICAgICBUaW1lcjxXZWJHTExheWVyQ2hyb21pdW0+IG1fcmF0ZUxp
bWl0aW5nVGltZXI7CiAgICAgYm9vbCBtX3RleHR1cmVVcGRhdGVkOworICAgIGludCBtX2ZyYW1l
YnVmZmVyOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKaW5k
ZXggZDkxZmI2NmQ4YzJlMzEwNDQ0NmMyM2NlODczY2UzZWFjYzZkMmY2YS4uZjUyZTAzOGM5ZGM4
OTEzY2JmYmUxMmY5ODlmYmIzZGZjMWM2MjE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0wuY3BwCkBAIC0xNTEsNiArMTUxLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGNv
CiB9CiAjZW5kaWYKIAorYm9vbCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoQ2FudmFz
UmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKK3sKKyAgICAvLyBOb3QgbmVlZGVkIGF0IHRoZSBt
b21lbnQsIHNvIHJldHVybiB0aGF0IG5vdGhpbmcgd2FzIGRvbmUuCisgICAgcmV0dXJuIGZhbHNl
OworfQorCiBQYXNzUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkKIHsKICAgICAvLyBSZWFkaW5nIHByZW11bHRpcGxp
ZWQgYWxwaGEgd291bGQgaW52b2x2ZSB1bnByZW11bHRpcGx5aW5nLCB3aGljaCBpcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCA1OTM3NGIzMjliZmZkYjNmZmE2MmZjZjE0Mzk2OTZiNGNj
YzY2OTgyLi40NTA3ODQzNDNhZTQ3MWJiMWZmMTY4ZjJlOGRhZmM4OGZlOWEwNDQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTA4LTAzICBKb2huIEJh
dW1hbiAgPGpiYXVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlYWRiYWNrIGNvbXBvc2l0
ZWQgd2ViZ2wgcmVzdWx0cyBmb3IgcHJpbnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NjU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHJlYWRpbmcgZnJvbSB0aGUgY29t
cG9zaXRlZCB2ZXJzaW9uIG9mIGEgY2FudmFzLgorCisgICAgICAgICogcHVibGljL1dlYkdyYXBo
aWNzQ29udGV4dDNELmg6CisgICAgICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnRG
cmFtZWJ1ZmZlclRvQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0Nh
bnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWlu
dFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSk6CisgICAgICAgICogc3JjL0dyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWwuaDoKKwogMjAxMS0wOC0wMyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFu
QGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW1RpbWVsaW5lXSBIb3ZlciBv
biBwYWludCBldmVudHMgYW5kIHNlZSByZWN0IG91dGxpbmUgYXJvdW5kIHRoYXQgYXJlYS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4
dDNELmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQz
RC5oCmluZGV4IDc0ZTM3MTEzNGY1ZTNkMTJmMWQxMDFiOWU1ZjY2ZTBkMzQ3ZTRjYWEuLmYwMTQx
NDZkZWI4Njk0ZjE2NTYyOTQ1ZTA4ZDU3ZGE4NWQzMWQwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtMTM4LDcg
KzEzOCw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGUgbWVtb3J5IHJlZ2lvbiBwb2ludGVkIHRvIGJ5
ICJwaXhlbHMiIHdpdGggc2l6ZSAiYnVmZmVyU2l6ZSIuIEl0IGlzCiAgICAgLy8gZXhwZWN0ZWQg
dGhhdCB0aGUgc3RvcmFnZSBmb3IgInBpeGVscyIgY292ZXJzICg0ICogd2lkdGggKiBoZWlnaHQp
IGJ5dGVzLgogICAgIC8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLgotICAgIHZpcnR1YWwgYm9v
bCByZWFkQmFja0ZyYW1lYnVmZmVyKHVuc2lnbmVkIGNoYXIqIHBpeGVscywgc2l6ZV90IGJ1ZmZl
clNpemUpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZEJhY2tGcmFtZWJ1ZmZlcih1bnNpZ25l
ZCBjaGFyKiBwaXhlbHMsIHNpemVfdCBidWZmZXJTaXplLCBXZWJHTElkIGZyYW1lYnVmZmVyLCBp
bnQgd2lkdGgsIGludCBoZWlnaHQpID0gMDsKIAogICAgIC8vIFJldHVybnMgdGhlIGlkIG9mIHRo
ZSB0ZXh0dXJlIHdoaWNoIGlzIHVzZWQgZm9yIHN0b3JpbmcgdGhlIGNvbnRlbnRzIG9mCiAgICAg
Ly8gdGhlIGZyYW1lYnVmZmVyIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRleHQuIFRoaXMgdGV4
dHVyZSBpcyBhY2Nlc3NpYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCmluZGV4IGEzMDk2NTZjMWZmMWY2NGM1
ZjEzMTZlZTIzZTgzMGVjMGRmMzFhNDguLjc3YWUxMjc1ZjBhZmVjNTE2OGNmN2EyN2E3OTczOGUy
ZjEwYmQ5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNz
Q29udGV4dDNEQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dy
YXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpsYXllckNvbXBvc2l0ZWQoKSBjb25zdAogICAgIHJldHVy
biBtX2xheWVyQ29tcG9zaXRlZDsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBj
b250ZXh0KQordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludEZyYW1lYnVmZmVy
VG9DYW52YXMoaW50IGZyYW1lYnVmZmVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKIHsKICAgICBI
VE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gY29udGV4dC0+Y2FudmFzKCk7CiAgICAgSW1hZ2VC
dWZmZXIqIGltYWdlQnVmZmVyID0gY2FudmFzLT5idWZmZXIoKTsKQEAgLTIxNCw3ICsyMTQsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbgogICAgIGNvbnN0IFNrQml0bWFwKiBjYW52YXNCaXRt
YXAgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKS0+Yml0bWFwKCk7
CiAgICAgY29uc3QgU2tCaXRtYXAqIHJlYWRiYWNrQml0bWFwID0gMDsKICAgICBBU1NFUlQoY2Fu
dmFzQml0bWFwLT5jb25maWcoKSA9PSBTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcpOwotICAg
IGlmIChjYW52YXNCaXRtYXAtPndpZHRoKCkgPT0gbV9pbXBsLT53aWR0aCgpICYmIGNhbnZhc0Jp
dG1hcC0+aGVpZ2h0KCkgPT0gbV9pbXBsLT5oZWlnaHQoKSkgeworICAgIGlmIChjYW52YXNCaXRt
YXAtPndpZHRoKCkgPT0gd2lkdGggJiYgY2FudmFzQml0bWFwLT5oZWlnaHQoKSA9PSBoZWlnaHQp
IHsKICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZmFzdGVzdCBhbmQgbW9zdCBjb21tb24gY2FzZS4g
V2UgcmVhZCBiYWNrCiAgICAgICAgIC8vIGRpcmVjdGx5IGludG8gdGhlIGNhbnZhcydzIGJhY2tp
bmcgc3RvcmUuCiAgICAgICAgIHJlYWRiYWNrQml0bWFwID0gY2FudmFzQml0bWFwOwpAQCAtMjIz
LDEwICsyMjMsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludFJlbmRl
cmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb24KICAgICAgICAgLy8gV2UgbmVl
ZCB0byBhbGxvY2F0ZSBhIHRlbXBvcmFyeSBiaXRtYXAgZm9yIHJlYWRpbmcgYmFjayB0aGUKICAg
ICAgICAgLy8gcGl4ZWwgZGF0YS4gV2Ugd2lsbCB0aGVuIHVzZSBTa2lhIHRvIHJlc2NhbGUgdGhp
cyBiaXRtYXAgdG8KICAgICAgICAgLy8gdGhlIHNpemUgb2YgdGhlIGNhbnZhcydzIGJhY2tpbmcg
c3RvcmUuCi0gICAgICAgIGlmIChtX3Jlc2l6aW5nQml0bWFwLndpZHRoKCkgIT0gbV9pbXBsLT53
aWR0aCgpIHx8IG1fcmVzaXppbmdCaXRtYXAuaGVpZ2h0KCkgIT0gbV9pbXBsLT5oZWlnaHQoKSkg
eworICAgICAgICBpZiAobV9yZXNpemluZ0JpdG1hcC53aWR0aCgpICE9IHdpZHRoIHx8IG1fcmVz
aXppbmdCaXRtYXAuaGVpZ2h0KCkgIT0gaGVpZ2h0KSB7CiAgICAgICAgICAgICBtX3Jlc2l6aW5n
Qml0bWFwLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ltcGwtPndpZHRoKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ltcGwtPmhlaWdodCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KTsKICAgICAgICAgICAgIGlmICghbV9yZXNpemlu
Z0JpdG1hcC5hbGxvY1BpeGVscygpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtMjQzLDEwICsyNDMsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpw
YWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb24KICNlcnJvciBN
dXN0IHBvcnQgdG8geW91ciBwbGF0Zm9ybQogI2VuZGlmCiAKLSAgICBtX2ltcGwtPnJlYWRCYWNr
RnJhbWVidWZmZXIocGl4ZWxzLCA0ICogbV9pbXBsLT53aWR0aCgpICogbV9pbXBsLT5oZWlnaHQo
KSk7CisgICAgbV9pbXBsLT5yZWFkQmFja0ZyYW1lYnVmZmVyKHBpeGVscywgNCAqIHdpZHRoICog
aGVpZ2h0LCBmcmFtZWJ1ZmZlciwgd2lkdGgsIGhlaWdodCk7CiAKLSAgICBpZiAoIW1faW1wbC0+
Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEpIHsKLSAgICAgICAgc2l6
ZV90IGJ1ZmZlclNpemUgPSA0ICogbV9pbXBsLT53aWR0aCgpICogbV9pbXBsLT5oZWlnaHQoKTsK
KyAgICBpZiAocHJlbXVsdGlwbHlBbHBoYSkgeworICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9
IDQgKiB3aWR0aCAqIGhlaWdodDsKIAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJ1
ZmZlclNpemU7IGkgKz0gNCkgewogICAgICAgICAgICAgcGl4ZWxzW2kgKyAwXSA9IHN0ZDo6bWlu
KDI1NSwgcGl4ZWxzW2kgKyAwXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOwpAQCAtMjY3LDEzICsy
NjcsMjcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludFJlbmRlcmluZ1Jl
c3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb24KICNlbGlmIFVTRShDRykKICAgICBpZiAo
bV9yZW5kZXJPdXRwdXQgJiYgY29udGV4dC0+aXMzZCgpKSB7CiAgICAgICAgIFdlYkdMUmVuZGVy
aW5nQ29udGV4dCogd2ViR0xDb250ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250
ZXh0Kj4oY29udGV4dCk7Ci0gICAgICAgIHdlYkdMQ29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0Qo
KS0+cGFpbnRUb0NhbnZhcyhtX3JlbmRlck91dHB1dCwgbV9pbXBsLT53aWR0aCgpLCBtX2ltcGwt
PmhlaWdodCgpLCBjYW52YXMtPndpZHRoKCksIGNhbnZhcy0+aGVpZ2h0KCksIGltYWdlQnVmZmVy
LT5jb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICAgICAgd2ViR0xDb250ZXh0LT5n
cmFwaGljc0NvbnRleHQzRCgpLT5wYWludFRvQ2FudmFzKG1fcmVuZGVyT3V0cHV0LCB3aWR0aCwg
aGVpZ2h0LCBjYW52YXMtPndpZHRoKCksIGNhbnZhcy0+aGVpZ2h0KCksIGltYWdlQnVmZmVyLT5j
b250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpKTsKICAgICB9CiAjZWxzZQogI2Vycm9yIE11c3Qg
cG9ydCB0byB5b3VyIHBsYXRmb3JtCiAjZW5kaWYKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdD
b250ZXh0KiBjb250ZXh0KQoreworICAgIHBhaW50RnJhbWVidWZmZXJUb0NhbnZhcygwLCBtX2lt
cGwtPndpZHRoKCksIG1faW1wbC0+aGVpZ2h0KCksICFtX2ltcGwtPmdldENvbnRleHRBdHRyaWJ1
dGVzKCkucHJlbXVsdGlwbGllZEFscGhhLCBjb250ZXh0KTsKK30KKworYm9vbCBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dCogY29udGV4dCkKK3sKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCisgICAgaWYgKHBsYXRmb3JtTGF5ZXIoKSkKKyAgICAgICAgcmV0dXJuIHBsYXRmb3JtTGF5
ZXIoKS0+cGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyhjb250ZXh0KTsKKyNlbmRpZgorICAg
IHJldHVybiBmYWxzZTsKK30KKwogUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkKIHsKICAgICBp
ZiAobV9pbXBsLT5nZXRDb250ZXh0QXR0cmlidXRlcygpLnByZW11bHRpcGxpZWRBbHBoYSkKQEAg
LTI4Myw3ICsyOTcsNyBAQCBQYXNzUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdAogICAgIHVuc2lnbmVkIGNo
YXIqIHBpeGVscyA9IGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCktPmRhdGEoKTsKICAgICBzaXpl
X3QgYnVmZmVyU2l6ZSA9IDQgKiBtX2ltcGwtPndpZHRoKCkgKiBtX2ltcGwtPmhlaWdodCgpOwog
Ci0gICAgbV9pbXBsLT5yZWFkQmFja0ZyYW1lYnVmZmVyKHBpeGVscywgYnVmZmVyU2l6ZSk7Cisg
ICAgbV9pbXBsLT5yZWFkQmFja0ZyYW1lYnVmZmVyKHBpeGVscywgbV9pbXBsLT53aWR0aCgpLCBt
X2ltcGwtPmhlaWdodCgpLCBidWZmZXJTaXplLCAwKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgYnVmZmVyU2l6ZTsgaSArPSA0KQogICAgICAgICBzdGQ6OnN3YXAocGl4ZWxzW2ldLCBw
aXhlbHNbaSArIDJdKTsKQEAgLTExNzMsNyArMTE4Nyw5IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OmxheWVyQ29tcG9zaXRlZCgpIGNvbnN0CiB9CiAKIERFTEVHQVRFX1RPX0lOVEVSTkFMXzEo
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqKQor
REVMRUdBVEVfVE9fSU5URVJOQUxfNShwYWludEZyYW1lYnVmZmVyVG9DYW52YXMsIGludCwgaW50
LCBpbnQsIGJvb2wsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqKQogREVMRUdBVEVfVE9fSU5URVJO
QUxfUihwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSwgUGFzc1JlZlB0cjxJbWFnZURh
dGE+KQorREVMRUdBVEVfVE9fSU5URVJOQUxfMVIocGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2Fu
dmFzLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiwgYm9vbCkKIAogYm9vbCBHcmFwaGljc0NvbnRl
eHQzRDo6cGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmgKaW5kZXgg
ZTU4NDM2OTYzZjg5YTczM2Q3ZjczOWFlY2E2ZTJhZDQxMmZiNDgyNy4uYzAxZDkwOWVjZWMxMzU5
NDU3MzUyMDc4YmE4OTVjMDdlYzRjOGE0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaApAQCAtODAsOCArODAsMTAg
QEAgcHVibGljOgogICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpOwogCiAgICAgdm9pZCBw
YWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0Kik7Cisg
ICAgdm9pZCBwYWludEZyYW1lYnVmZmVyVG9DYW52YXMoaW50IGZyYW1lYnVmZmVyLCBpbnQgd2lk
dGgsIGludCBoZWlnaHQsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dCopOwogICAgIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNU
b0ltYWdlRGF0YSgpOwogICAgIGJvb2wgcGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIGNvbnN0Owor
ICAgIGJvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQqKTsKIAogICAgIHZvaWQgcHJlcGFyZVRleHR1cmUoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103319</attachid>
            <date>2011-08-08 17:19:16 -0700</date>
            <delta_ts>2011-08-08 18:23:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65658-20110808171915.patch</filename>
            <type>text/plain</type>
            <size>14916</size>
            <attacher name="John Bauman">jbauman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI2NDgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxOTgzZWYzMmEwMTVhMTBl
MGQ4MjZiN2Q0ODM0NzQ1Mjk2NzM5NjI1Li44MDc3MjczZjI0OTAzMzFiN2YyZDY1MmNjNjMxZWRm
MjI5NDEyMTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDgtMDggIEpvaG4g
QmF1bWFuICA8amJhdW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVhZGJhY2sgY29tcG9z
aXRlZCB3ZWJnbCByZXN1bHRzIGZvciBwcmludGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcmVhbCBjb21wb3NpdGVkIHJlc3VsdHMgbWF5IGJl
IGxvY2tlZCBpbnNpZGUgdGhlIGNvbXBvc2l0b3IKKyAgICAgICAgY29udGV4dCdzIHZlcnNpb24g
b2YgYSB0ZXh0dXJlIGJlY2F1c2UgdGhlIGRyYXdpbmcgYnVmZmVyIHdhcworICAgICAgICBhdXRv
bWF0aWNhbGx5IGNsZWFyZWQsIHNvIHJlYWQgZnJvbSB0aGVyZSB0byBnZXQgdGhlIGFjdHVhbAor
ICAgICAgICBwcmVzZW50ZWQgdmVyc2lvbiB0byBkcmF3LgorCisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6cGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OnNldENvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpzZXRMYXllclJlbmRlcmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFz
KToKKwogMjAxMS0wOC0wOCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjkyNjE5LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5k
ZXggODI3ZDIwMzU3ZDRhZjgzMWJiYTM0ZWU3YjcwNDBlN2I3NWRmZGYyYy4uZWQwYzgxYjQwMGUy
MTZjMmI4ZTRiNjg3YTI1MDNlMjdiNDgxM2I2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01NjYsOSArNTY2LDEw
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0Nh
bnZhcygpCiB7CiAgICAgLy8gVW50aWwgdGhlIGNhbnZhcyBpcyB3cml0dGVuIHRvIGJ5IHRoZSBh
cHBsaWNhdGlvbiwgdGhlIGNsZWFyIHRoYXQKICAgICAvLyBoYXBwZW5lZCBhZnRlciBpdCB3YXMg
Y29tcG9zaXRlZCBzaG91bGQgYmUgaWdub3JlZCBieSB0aGUgY29tcG9zaXRvci4KLSAgICBpZiAo
bV9jb250ZXh0LT5sYXllckNvbXBvc2l0ZWQoKSAmJiAhbV9hdHRyaWJ1dGVzLnByZXNlcnZlRHJh
d2luZ0J1ZmZlcikKKyAgICBpZiAobV9jb250ZXh0LT5sYXllckNvbXBvc2l0ZWQoKSAmJiAhbV9h
dHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikgeworICAgICAgICBtX2NvbnRleHQtPnBh
aW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyh0aGlzKTsKICAgICAgICAgY2FudmFzKCktPm1h
a2VQcmVzZW50YXRpb25Db3B5KCk7Ci0gICAgZWxzZQorICAgIH0gZWxzZQogICAgICAgICBjYW52
YXMoKS0+Y2xlYXJQcmVzZW50YXRpb25Db3B5KCk7CiAgICAgY2xlYXJJZkNvbXBvc2l0ZWQoKTsK
ICAgICBpZiAoIW1fbWFya2VkQ2FudmFzRGlydHkgJiYgIW1fbGF5ZXJDbGVhcmVkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgK
aW5kZXggNWZjNmU2YjFlMjZkMjZhNDhlZmJjMDFmOTRhMzIxMjYxMzRiY2I4NC4uNzJmZmIwMmZk
NGIzOGU0MTNkN2RiODZhOTRiZDQ3MjMwZjIyNWI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCkBAIC03OTIsNyArNzky
LDExIEBAIHB1YmxpYzoKICAgICBib29sIGxheWVyQ29tcG9zaXRlZCgpIGNvbnN0OwogCiAgICAg
dm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0
KiBjb250ZXh0KTsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICB2b2lkIHBhaW50RnJhbWVi
dWZmZXJUb0NhbnZhcyhpbnQgZnJhbWVidWZmZXIsIGludCB3aWR0aCwgaW50IGhlaWdodCwgYm9v
bCBwcmVtdWx0aXBseUFscGhhLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0Kik7CisjZW5kaWYKICAg
ICBQYXNzUmVmUHRyPEltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEo
KTsKKyAgICBib29sIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJp
bmdDb250ZXh0Kik7CiAKICNpZiBQTEFURk9STShRVCkKICAgICBib29sIHBhaW50c0ludG9DYW52
YXNCdWZmZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9t
aXVtLmNwcAppbmRleCA3NjIxN2I0YjllNmM5NWFmMmQwOGI0MjVkM2FhY2EyN2NkZjZlZmY0Li5h
MzM3OTk4MzRhYjhlNDc5MTVkZGZiZDdiNmExZTI4NmI4YjZmYzkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdM
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTk5LDYgKzk5LDIzIEBAIHZvaWQgV2ViR0xMYXllckNocm9t
aXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkKICAgICB9CiB9CiAKK2Jvb2wgV2ViR0xM
YXllckNocm9taXVtOjpwYWludFJlbmRlcmVkUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQqIGNvbnRleHQpCit7CisgICAgaWYgKG1fdGV4dHVyZVVwZGF0ZWQgfHwgIWxheWVy
UmVuZGVyZXIoKSB8fCAhZHJhd3NDb250ZW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIEludFNpemUgZnJhbWVidWZmZXJTaXplID0gbV9jb250ZXh0LT5nZXRJbnRlcm5hbEZyYW1l
YnVmZmVyU2l6ZSgpOworICAgIEFTU0VSVChsYXllclJlbmRlcmVyQ29udGV4dCgpKTsKKworICAg
IC8vIFRoaXMgd291bGQgaWRlYWxseSBiZSBkb25lIGluIHRoZSB3ZWJnbCBjb250ZXh0LCBidXQg
dGhhdCBpc24ndCBwb3NzaWJsZSB5ZXQuCisgICAgUGxhdGZvcm0zRE9iamVjdCBmcmFtZWJ1ZmZl
ciA9IGxheWVyUmVuZGVyZXJDb250ZXh0KCktPmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgbGF5
ZXJSZW5kZXJlckNvbnRleHQoKS0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUiwgZnJhbWVidWZmZXIpOworICAgIGxheWVyUmVuZGVyZXJDb250ZXh0KCktPmZy
YW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgbV90ZXh0dXJlSWQsIDApOworICAgIGxheWVyUmVuZGVyZXJDb250ZXh0KCktPnBhaW50
RnJhbWVidWZmZXJUb0NhbnZhcyhmcmFtZWJ1ZmZlciwgZnJhbWVidWZmZXJTaXplLndpZHRoKCks
IGZyYW1lYnVmZmVyU2l6ZS5oZWlnaHQoKSwgIW1fY29udGV4dC0+Z2V0Q29udGV4dEF0dHJpYnV0
ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEsIGNvbnRleHQpOworICAgIGxheWVyUmVuZGVyZXJDb250
ZXh0KCktPmRlbGV0ZUZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnNldFRleHR1cmVVcGRhdGVkKCkKIHsKICAg
ICBtX3RleHR1cmVVcGRhdGVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKaW5k
ZXggYzQzNDQwZDk3OTUwZDE3ZWZhYTQxMWNlYTNjMWE4YjNjNzUxNjFjZC4uZjUxODBmMWQzYzY3
NGQ2NTRjYzY1NTExOWY1YjNmODFiZWIwNjRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVt
LmgKQEAgLTM5LDYgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDYW52
YXNSZW5kZXJpbmdDb250ZXh0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBXZWJH
TExheWVyQ2hyb21pdW1SYXRlTGltaXRUYXNrOwogCkBAIC01Miw2ICs1Myw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKTsKICAgICB2b2lkIHNldFRleHR1cmVVcGRhdGVk
KCk7CisgICAgYm9vbCBwYWludFJlbmRlcmVkUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQqKTsKIAogICAgIHZvaWQgc2V0Q29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCk7CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQoKSB7IHJldHVybiBt
X2NvbnRleHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCmluZGV4IGY3
YTc2ZTBjMDFlZDYwMWZkMzgxOTdhNWIxZWZlYTZlYTIzY2ZhNTIuLjA5MDNjZWZlZGE0ZGQ3YjBl
MjVhOTFlMmY0ZTgxYjBlNTMzZWIyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMLmNwcApAQCAtMTUxLDYgKzE1MSwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWlu
dFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBjbwogfQog
I2VuZGlmCiAKK2Jvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRl
cmluZ0NvbnRleHQqIGNvbnRleHQpCit7CisgICAgLy8gTm90IG5lZWRlZCBhdCB0aGUgbW9tZW50
LCBzbyByZXR1cm4gdGhhdCBub3RoaW5nIHdhcyBkb25lLgorICAgIHJldHVybiBmYWxzZTsKK30K
KwogUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiB7CiAgICAgLy8gUmVhZGluZyBwcmVtdWx0aXBsaWVkIGFs
cGhhIHdvdWxkIGludm9sdmUgdW5wcmVtdWx0aXBseWluZywgd2hpY2ggaXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggZjM0NGQ0NDUyMzVkYmVhOTdjZmRmY2Q2MWIyNDFkYjZiYjczNDM0
MC4uNDI4MmU0YjgyZjIzMTk0YjIyMTIwNTMzZmVhZTRmYTk5NWY1ZTk1MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0wOC0wOCAgSm9obiBCYXVtYW4g
IDxqYmF1bWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZWFkYmFjayBjb21wb3NpdGVkIHdl
YmdsIHJlc3VsdHMgZm9yIHByaW50aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NTY1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciByZWFkaW5nIGZyb20gdGhlIGNvbXBvc2l0
ZWQgdmVyc2lvbiBvZiBhIGNhbnZhcy4KKworICAgICAgICAqIHB1YmxpYy9XZWJHcmFwaGljc0Nv
bnRleHQzRC5oOgorICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50RnJhbWVi
dWZmZXJUb0NhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEpOgorICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQz
REludGVybmFsLmg6CisKIDIwMTEtMDgtMDggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5i
b3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI5MjYxOS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vREVQUyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vREVQUwppbmRleCAwZTk3MzI3MTA4NmRmMmEwNjRhZjEzZmQ4NTMzYzNkOGYyMjZk
NzE2Li41MTY1YzliNjA3YjIwYjY2ZTYzMDY5YjcyMzE2ODdhNWRlM2U1YmIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0RFUFMKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9ERVBTCkBAIC0zMiw3ICszMiw3IEBACiAKIHZhcnMgPSB7CiAgICdjaHJvbWl1bV9zdm4nOiAn
aHR0cDovL3NyYy5jaHJvbWl1bS5vcmcvc3ZuL3RydW5rL3NyYycsCi0gICdjaHJvbWl1bV9yZXYn
OiAnOTU3ODMnCisgICdjaHJvbWl1bV9yZXYnOiAnOTU4OTgnCiB9CiAKIGRlcHMgPSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQz
RC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0Qu
aAppbmRleCA4MWE4YmQ1ZWEyYzkyMzk2NGJiOGE2NWI4YzE2ZGM1ZTBiYTVkM2YwLi4wNzYyYzJj
NGJiZmRhZWJjZTVmYmQ1Y2E0M2MwNWI4N2VjYjBlMGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKQEAgLTEzOCw3ICsx
MzgsNyBAQCBwdWJsaWM6CiAgICAgLy8gdGhlIG1lbW9yeSByZWdpb24gcG9pbnRlZCB0byBieSAi
cGl4ZWxzIiB3aXRoIHNpemUgImJ1ZmZlclNpemUiLiBJdCBpcwogICAgIC8vIGV4cGVjdGVkIHRo
YXQgdGhlIHN0b3JhZ2UgZm9yICJwaXhlbHMiIGNvdmVycyAoNCAqIHdpZHRoICogaGVpZ2h0KSBi
eXRlcy4KICAgICAvLyBSZXR1cm5zIHRydWUgb24gc3VjY2Vzcy4KLSAgICB2aXJ0dWFsIGJvb2wg
cmVhZEJhY2tGcmFtZWJ1ZmZlcih1bnNpZ25lZCBjaGFyKiBwaXhlbHMsIHNpemVfdCBidWZmZXJT
aXplKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRCYWNrRnJhbWVidWZmZXIodW5zaWduZWQg
Y2hhciogcGl4ZWxzLCBzaXplX3QgYnVmZmVyU2l6ZSwgV2ViR0xJZCBmcmFtZWJ1ZmZlciwgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0KSA9IDA7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBpZCBvZiB0aGUg
dGV4dHVyZSB3aGljaCBpcyB1c2VkIGZvciBzdG9yaW5nIHRoZSBjb250ZW50cyBvZgogICAgIC8v
IHRoZSBmcmFtZWJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb250ZXh0LiBUaGlzIHRleHR1
cmUgaXMgYWNjZXNzaWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
R3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAppbmRleCBiYTZlNzAwZTllMmNkMmEyYTAy
NmVkODAyMzkwMjJkNzJmOTVhMTQ5Li40YTNkODZmZmE2MDBiMGFhZjY5NDNkYTYwMWY3MGY0M2Vi
NDFiODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0Nv
bnRleHQzRENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFw
aGljc0NvbnRleHQzRENocm9taXVtLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6bGF5ZXJDb21wb3NpdGVkKCkgY29uc3QKICAgICByZXR1cm4g
bV9sYXllckNvbXBvc2l0ZWQ7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY29u
dGV4dCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnRGcmFtZWJ1ZmZlclRv
Q2FudmFzKGludCBmcmFtZWJ1ZmZlciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBib29sIHByZW11
bHRpcGx5QWxwaGEsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgSFRN
TENhbnZhc0VsZW1lbnQqIGNhbnZhcyA9IGNvbnRleHQtPmNhbnZhcygpOwogICAgIEltYWdlQnVm
ZmVyKiBpbWFnZUJ1ZmZlciA9IGNhbnZhcy0+YnVmZmVyKCk7CkBAIC0yMTQsNyArMjE0LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0Nh
bnZhcyhDYW52YXNSZW5kZXJpbmdDb24KICAgICBjb25zdCBTa0JpdG1hcCogY2FudmFzQml0bWFw
ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmJpdG1hcCgpOwog
ICAgIGNvbnN0IFNrQml0bWFwKiByZWFkYmFja0JpdG1hcCA9IDA7CiAgICAgQVNTRVJUKGNhbnZh
c0JpdG1hcC0+Y29uZmlnKCkgPT0gU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnKTsKLSAgICBp
ZiAoY2FudmFzQml0bWFwLT53aWR0aCgpID09IG1faW1wbC0+d2lkdGgoKSAmJiBjYW52YXNCaXRt
YXAtPmhlaWdodCgpID09IG1faW1wbC0+aGVpZ2h0KCkpIHsKKyAgICBpZiAoY2FudmFzQml0bWFw
LT53aWR0aCgpID09IHdpZHRoICYmIGNhbnZhc0JpdG1hcC0+aGVpZ2h0KCkgPT0gaGVpZ2h0KSB7
CiAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGZhc3Rlc3QgYW5kIG1vc3QgY29tbW9uIGNhc2UuIFdl
IHJlYWQgYmFjawogICAgICAgICAvLyBkaXJlY3RseSBpbnRvIHRoZSBjYW52YXMncyBiYWNraW5n
IHN0b3JlLgogICAgICAgICByZWFkYmFja0JpdG1hcCA9IGNhbnZhc0JpdG1hcDsKQEAgLTIyMywx
MCArMjIzLDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29uCiAgICAgICAgIC8vIFdlIG5lZWQg
dG8gYWxsb2NhdGUgYSB0ZW1wb3JhcnkgYml0bWFwIGZvciByZWFkaW5nIGJhY2sgdGhlCiAgICAg
ICAgIC8vIHBpeGVsIGRhdGEuIFdlIHdpbGwgdGhlbiB1c2UgU2tpYSB0byByZXNjYWxlIHRoaXMg
Yml0bWFwIHRvCiAgICAgICAgIC8vIHRoZSBzaXplIG9mIHRoZSBjYW52YXMncyBiYWNraW5nIHN0
b3JlLgotICAgICAgICBpZiAobV9yZXNpemluZ0JpdG1hcC53aWR0aCgpICE9IG1faW1wbC0+d2lk
dGgoKSB8fCBtX3Jlc2l6aW5nQml0bWFwLmhlaWdodCgpICE9IG1faW1wbC0+aGVpZ2h0KCkpIHsK
KyAgICAgICAgaWYgKG1fcmVzaXppbmdCaXRtYXAud2lkdGgoKSAhPSB3aWR0aCB8fCBtX3Jlc2l6
aW5nQml0bWFwLmhlaWdodCgpICE9IGhlaWdodCkgewogICAgICAgICAgICAgbV9yZXNpemluZ0Jp
dG1hcC5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbXBsLT53aWR0aCgpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbXBsLT5oZWlnaHQoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGhlaWdodCk7CiAgICAgICAgICAgICBpZiAoIW1fcmVzaXppbmdC
aXRtYXAuYWxsb2NQaXhlbHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
QEAgLTI0MywxMCArMjQzLDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29uCiAjZXJyb3IgTXVz
dCBwb3J0IHRvIHlvdXIgcGxhdGZvcm0KICNlbmRpZgogCi0gICAgbV9pbXBsLT5yZWFkQmFja0Zy
YW1lYnVmZmVyKHBpeGVscywgNCAqIG1faW1wbC0+d2lkdGgoKSAqIG1faW1wbC0+aGVpZ2h0KCkp
OworICAgIG1faW1wbC0+cmVhZEJhY2tGcmFtZWJ1ZmZlcihwaXhlbHMsIDQgKiB3aWR0aCAqIGhl
aWdodCwgZnJhbWVidWZmZXIsIHdpZHRoLCBoZWlnaHQpOwogCi0gICAgaWYgKCFtX2ltcGwtPmdl
dENvbnRleHRBdHRyaWJ1dGVzKCkucHJlbXVsdGlwbGllZEFscGhhKSB7Ci0gICAgICAgIHNpemVf
dCBidWZmZXJTaXplID0gNCAqIG1faW1wbC0+d2lkdGgoKSAqIG1faW1wbC0+aGVpZ2h0KCk7Cisg
ICAgaWYgKHByZW11bHRpcGx5QWxwaGEpIHsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSA0
ICogd2lkdGggKiBoZWlnaHQ7CiAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBidWZm
ZXJTaXplOyBpICs9IDQpIHsKICAgICAgICAgICAgIHBpeGVsc1tpICsgMF0gPSBzdGQ6Om1pbigy
NTUsIHBpeGVsc1tpICsgMF0gKiBwaXhlbHNbaSArIDNdIC8gMjU1KTsKQEAgLTI2NywxMyArMjY3
LDI3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnRSZW5kZXJpbmdSZXN1
bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29uCiAjZWxpZiBVU0UoQ0cpCiAgICAgaWYgKG1f
cmVuZGVyT3V0cHV0ICYmIGNvbnRleHQtPmlzM2QoKSkgewogICAgICAgICBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQqIHdlYkdMQ29udGV4dCA9IHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4
dCo+KGNvbnRleHQpOwotICAgICAgICB3ZWJHTENvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCkt
PnBhaW50VG9DYW52YXMobV9yZW5kZXJPdXRwdXQsIG1faW1wbC0+d2lkdGgoKSwgbV9pbXBsLT5o
ZWlnaHQoKSwgY2FudmFzLT53aWR0aCgpLCBjYW52YXMtPmhlaWdodCgpLCBpbWFnZUJ1ZmZlci0+
Y29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgICAgIHdlYkdMQ29udGV4dC0+Z3Jh
cGhpY3NDb250ZXh0M0QoKS0+cGFpbnRUb0NhbnZhcyhtX3JlbmRlck91dHB1dCwgd2lkdGgsIGhl
aWdodCwgY2FudmFzLT53aWR0aCgpLCBjYW52YXMtPmhlaWdodCgpLCBpbWFnZUJ1ZmZlci0+Y29u
dGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgfQogI2Vsc2UKICNlcnJvciBNdXN0IHBv
cnQgdG8geW91ciBwbGF0Zm9ybQogI2VuZGlmCiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dCogY29udGV4dCkKK3sKKyAgICBwYWludEZyYW1lYnVmZmVyVG9DYW52YXMoMCwgbV9pbXBs
LT53aWR0aCgpLCBtX2ltcGwtPmhlaWdodCgpLCAhbV9pbXBsLT5nZXRDb250ZXh0QXR0cmlidXRl
cygpLnByZW11bHRpcGxpZWRBbHBoYSwgY29udGV4dCk7Cit9CisKK2Jvb2wgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRl
cmluZ0NvbnRleHQqIGNvbnRleHQpCit7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQorICAgIGlmIChwbGF0Zm9ybUxheWVyKCkpCisgICAgICAgIHJldHVybiBwbGF0Zm9ybUxheWVy
KCktPnBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoY29udGV4dCk7CisjZW5kaWYKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiB7CiAgICAgaWYg
KG1faW1wbC0+Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEpCkBAIC0y
ODMsNyArMjk3LDcgQEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXQKICAgICB1bnNpZ25lZCBjaGFy
KiBwaXhlbHMgPSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpLT5kYXRhKCk7CiAgICAgc2l6ZV90
IGJ1ZmZlclNpemUgPSA0ICogbV9pbXBsLT53aWR0aCgpICogbV9pbXBsLT5oZWlnaHQoKTsKIAot
ICAgIG1faW1wbC0+cmVhZEJhY2tGcmFtZWJ1ZmZlcihwaXhlbHMsIGJ1ZmZlclNpemUpOworICAg
IG1faW1wbC0+cmVhZEJhY2tGcmFtZWJ1ZmZlcihwaXhlbHMsIG1faW1wbC0+d2lkdGgoKSwgbV9p
bXBsLT5oZWlnaHQoKSwgYnVmZmVyU2l6ZSwgMCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGJ1ZmZlclNpemU7IGkgKz0gNCkKICAgICAgICAgc3RkOjpzd2FwKHBpeGVsc1tpXSwgcGl4
ZWxzW2kgKyAyXSk7CkBAIC0xMTY3LDcgKzExODEsOSBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNE
OjpsYXllckNvbXBvc2l0ZWQoKSBjb25zdAogfQogCiBERUxFR0FURV9UT19JTlRFUk5BTF8xKHBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0KikKK0RF
TEVHQVRFX1RPX0lOVEVSTkFMXzUocGFpbnRGcmFtZWJ1ZmZlclRvQ2FudmFzLCBpbnQsIGludCwg
aW50LCBib29sLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0KikKIERFTEVHQVRFX1RPX0lOVEVSTkFM
X1IocGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEsIFBhc3NSZWZQdHI8SW1hZ2VEYXRh
PikKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzFSKHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZh
cywgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCosIGJvb2wpCiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OnBhaW50c0ludG9DYW52YXNCdWZmZXIoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oCmluZGV4IDE2
YTY5ZDUxMmRmZGVjYWMwNDA0Y2VkZjNhZTRlMzQ2MWMxODhjNGIuLjQxNTRlMzllMDkzZjFmNmVh
ZGI2ZWNmNjllMWI1MDBkZWIwZDQxOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmgKQEAgLTgwLDggKzgwLDEwIEBA
IHB1YmxpYzoKICAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKTsKIAogICAgIHZvaWQgcGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCopOworICAg
IHZvaWQgcGFpbnRGcmFtZWJ1ZmZlclRvQ2FudmFzKGludCBmcmFtZWJ1ZmZlciwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0LCBib29sIHByZW11bHRpcGx5QWxwaGEsIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQqKTsKICAgICBQYXNzUmVmUHRyPEltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9J
bWFnZURhdGEoKTsKICAgICBib29sIHBhaW50c0ludG9DYW52YXNCdWZmZXIoKSBjb25zdDsKKyAg
ICBib29sIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250
ZXh0Kik7CiAKICAgICB2b2lkIHByZXBhcmVUZXh0dXJlKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103325</attachid>
            <date>2011-08-08 18:23:09 -0700</date>
            <delta_ts>2011-08-09 16:43:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65658-20110808182308.patch</filename>
            <type>text/plain</type>
            <size>14916</size>
            <attacher name="John Bauman">jbauman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI2NDgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxOTgzZWYzMmEwMTVhMTBl
MGQ4MjZiN2Q0ODM0NzQ1Mjk2NzM5NjI1Li44MDc3MjczZjI0OTAzMzFiN2YyZDY1MmNjNjMxZWRm
MjI5NDEyMTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDgtMDggIEpvaG4g
QmF1bWFuICA8amJhdW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVhZGJhY2sgY29tcG9z
aXRlZCB3ZWJnbCByZXN1bHRzIGZvciBwcmludGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcmVhbCBjb21wb3NpdGVkIHJlc3VsdHMgbWF5IGJl
IGxvY2tlZCBpbnNpZGUgdGhlIGNvbXBvc2l0b3IKKyAgICAgICAgY29udGV4dCdzIHZlcnNpb24g
b2YgYSB0ZXh0dXJlIGJlY2F1c2UgdGhlIGRyYXdpbmcgYnVmZmVyIHdhcworICAgICAgICBhdXRv
bWF0aWNhbGx5IGNsZWFyZWQsIHNvIHJlYWQgZnJvbSB0aGVyZSB0byBnZXQgdGhlIGFjdHVhbAor
ICAgICAgICBwcmVzZW50ZWQgdmVyc2lvbiB0byBkcmF3LgorCisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6cGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OnNldENvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpzZXRMYXllclJlbmRlcmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFz
KToKKwogMjAxMS0wOC0wOCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjkyNjE5LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5k
ZXggODI3ZDIwMzU3ZDRhZjgzMWJiYTM0ZWU3YjcwNDBlN2I3NWRmZGYyYy4uZWQwYzgxYjQwMGUy
MTZjMmI4ZTRiNjg3YTI1MDNlMjdiNDgxM2I2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01NjYsOSArNTY2LDEw
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0Nh
bnZhcygpCiB7CiAgICAgLy8gVW50aWwgdGhlIGNhbnZhcyBpcyB3cml0dGVuIHRvIGJ5IHRoZSBh
cHBsaWNhdGlvbiwgdGhlIGNsZWFyIHRoYXQKICAgICAvLyBoYXBwZW5lZCBhZnRlciBpdCB3YXMg
Y29tcG9zaXRlZCBzaG91bGQgYmUgaWdub3JlZCBieSB0aGUgY29tcG9zaXRvci4KLSAgICBpZiAo
bV9jb250ZXh0LT5sYXllckNvbXBvc2l0ZWQoKSAmJiAhbV9hdHRyaWJ1dGVzLnByZXNlcnZlRHJh
d2luZ0J1ZmZlcikKKyAgICBpZiAobV9jb250ZXh0LT5sYXllckNvbXBvc2l0ZWQoKSAmJiAhbV9h
dHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikgeworICAgICAgICBtX2NvbnRleHQtPnBh
aW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyh0aGlzKTsKICAgICAgICAgY2FudmFzKCktPm1h
a2VQcmVzZW50YXRpb25Db3B5KCk7Ci0gICAgZWxzZQorICAgIH0gZWxzZQogICAgICAgICBjYW52
YXMoKS0+Y2xlYXJQcmVzZW50YXRpb25Db3B5KCk7CiAgICAgY2xlYXJJZkNvbXBvc2l0ZWQoKTsK
ICAgICBpZiAoIW1fbWFya2VkQ2FudmFzRGlydHkgJiYgIW1fbGF5ZXJDbGVhcmVkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgK
aW5kZXggNWZjNmU2YjFlMjZkMjZhNDhlZmJjMDFmOTRhMzIxMjYxMzRiY2I4NC4uNzJmZmIwMmZk
NGIzOGU0MTNkN2RiODZhOTRiZDQ3MjMwZjIyNWI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCkBAIC03OTIsNyArNzky
LDExIEBAIHB1YmxpYzoKICAgICBib29sIGxheWVyQ29tcG9zaXRlZCgpIGNvbnN0OwogCiAgICAg
dm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0
KiBjb250ZXh0KTsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICB2b2lkIHBhaW50RnJhbWVi
dWZmZXJUb0NhbnZhcyhpbnQgZnJhbWVidWZmZXIsIGludCB3aWR0aCwgaW50IGhlaWdodCwgYm9v
bCBwcmVtdWx0aXBseUFscGhhLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0Kik7CisjZW5kaWYKICAg
ICBQYXNzUmVmUHRyPEltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEo
KTsKKyAgICBib29sIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJp
bmdDb250ZXh0Kik7CiAKICNpZiBQTEFURk9STShRVCkKICAgICBib29sIHBhaW50c0ludG9DYW52
YXNCdWZmZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9t
aXVtLmNwcAppbmRleCA3NjIxN2I0YjllNmM5NWFmMmQwOGI0MjVkM2FhY2EyN2NkZjZlZmY0Li5h
MzM3OTk4MzRhYjhlNDc5MTVkZGZiZDdiNmExZTI4NmI4YjZmYzkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdM
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTk5LDYgKzk5LDIzIEBAIHZvaWQgV2ViR0xMYXllckNocm9t
aXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkKICAgICB9CiB9CiAKK2Jvb2wgV2ViR0xM
YXllckNocm9taXVtOjpwYWludFJlbmRlcmVkUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQqIGNvbnRleHQpCit7CisgICAgaWYgKG1fdGV4dHVyZVVwZGF0ZWQgfHwgIWxheWVy
UmVuZGVyZXIoKSB8fCAhZHJhd3NDb250ZW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIEludFNpemUgZnJhbWVidWZmZXJTaXplID0gbV9jb250ZXh0LT5nZXRJbnRlcm5hbEZyYW1l
YnVmZmVyU2l6ZSgpOworICAgIEFTU0VSVChsYXllclJlbmRlcmVyQ29udGV4dCgpKTsKKworICAg
IC8vIFRoaXMgd291bGQgaWRlYWxseSBiZSBkb25lIGluIHRoZSB3ZWJnbCBjb250ZXh0LCBidXQg
dGhhdCBpc24ndCBwb3NzaWJsZSB5ZXQuCisgICAgUGxhdGZvcm0zRE9iamVjdCBmcmFtZWJ1ZmZl
ciA9IGxheWVyUmVuZGVyZXJDb250ZXh0KCktPmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgbGF5
ZXJSZW5kZXJlckNvbnRleHQoKS0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUiwgZnJhbWVidWZmZXIpOworICAgIGxheWVyUmVuZGVyZXJDb250ZXh0KCktPmZy
YW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgbV90ZXh0dXJlSWQsIDApOworICAgIGxheWVyUmVuZGVyZXJDb250ZXh0KCktPnBhaW50
RnJhbWVidWZmZXJUb0NhbnZhcyhmcmFtZWJ1ZmZlciwgZnJhbWVidWZmZXJTaXplLndpZHRoKCks
IGZyYW1lYnVmZmVyU2l6ZS5oZWlnaHQoKSwgIW1fY29udGV4dC0+Z2V0Q29udGV4dEF0dHJpYnV0
ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEsIGNvbnRleHQpOworICAgIGxheWVyUmVuZGVyZXJDb250
ZXh0KCktPmRlbGV0ZUZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnNldFRleHR1cmVVcGRhdGVkKCkKIHsKICAg
ICBtX3RleHR1cmVVcGRhdGVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKaW5k
ZXggYzQzNDQwZDk3OTUwZDE3ZWZhYTQxMWNlYTNjMWE4YjNjNzUxNjFjZC4uZjUxODBmMWQzYzY3
NGQ2NTRjYzY1NTExOWY1YjNmODFiZWIwNjRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVt
LmgKQEAgLTM5LDYgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDYW52
YXNSZW5kZXJpbmdDb250ZXh0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBXZWJH
TExheWVyQ2hyb21pdW1SYXRlTGltaXRUYXNrOwogCkBAIC01Miw2ICs1Myw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKTsKICAgICB2b2lkIHNldFRleHR1cmVVcGRhdGVk
KCk7CisgICAgYm9vbCBwYWludFJlbmRlcmVkUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQqKTsKIAogICAgIHZvaWQgc2V0Q29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCk7CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQoKSB7IHJldHVybiBt
X2NvbnRleHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCmluZGV4IGY3
YTc2ZTBjMDFlZDYwMWZkMzgxOTdhNWIxZWZlYTZlYTIzY2ZhNTIuLjA5MDNjZWZlZGE0ZGQ3YjBl
MjVhOTFlMmY0ZTgxYjBlNTMzZWIyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMLmNwcApAQCAtMTUxLDYgKzE1MSwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWlu
dFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBjbwogfQog
I2VuZGlmCiAKK2Jvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRl
cmluZ0NvbnRleHQqIGNvbnRleHQpCit7CisgICAgLy8gTm90IG5lZWRlZCBhdCB0aGUgbW9tZW50
LCBzbyByZXR1cm4gdGhhdCBub3RoaW5nIHdhcyBkb25lLgorICAgIHJldHVybiBmYWxzZTsKK30K
KwogUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiB7CiAgICAgLy8gUmVhZGluZyBwcmVtdWx0aXBsaWVkIGFs
cGhhIHdvdWxkIGludm9sdmUgdW5wcmVtdWx0aXBseWluZywgd2hpY2ggaXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggZjM0NGQ0NDUyMzVkYmVhOTdjZmRmY2Q2MWIyNDFkYjZiYjczNDM0
MC4uNDI4MmU0YjgyZjIzMTk0YjIyMTIwNTMzZmVhZTRmYTk5NWY1ZTk1MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0wOC0wOCAgSm9obiBCYXVtYW4g
IDxqYmF1bWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZWFkYmFjayBjb21wb3NpdGVkIHdl
YmdsIHJlc3VsdHMgZm9yIHByaW50aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NTY1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciByZWFkaW5nIGZyb20gdGhlIGNvbXBvc2l0
ZWQgdmVyc2lvbiBvZiBhIGNhbnZhcy4KKworICAgICAgICAqIHB1YmxpYy9XZWJHcmFwaGljc0Nv
bnRleHQzRC5oOgorICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50RnJhbWVi
dWZmZXJUb0NhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEpOgorICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQz
REludGVybmFsLmg6CisKIDIwMTEtMDgtMDggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5i
b3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI5MjYxOS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vREVQUyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vREVQUwppbmRleCAwZTk3MzI3MTA4NmRmMmEwNjRhZjEzZmQ4NTMzYzNkOGYyMjZk
NzE2Li41MTY1YzliNjA3YjIwYjY2ZTYzMDY5YjcyMzE2ODdhNWRlM2U1YmIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0RFUFMKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9ERVBTCkBAIC0zMiw3ICszMiw3IEBACiAKIHZhcnMgPSB7CiAgICdjaHJvbWl1bV9zdm4nOiAn
aHR0cDovL3NyYy5jaHJvbWl1bS5vcmcvc3ZuL3RydW5rL3NyYycsCi0gICdjaHJvbWl1bV9yZXYn
OiAnOTU3ODMnCisgICdjaHJvbWl1bV9yZXYnOiAnOTU4OTgnCiB9CiAKIGRlcHMgPSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQz
RC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0Qu
aAppbmRleCA4MWE4YmQ1ZWEyYzkyMzk2NGJiOGE2NWI4YzE2ZGM1ZTBiYTVkM2YwLi4wNzYyYzJj
NGJiZmRhZWJjZTVmYmQ1Y2E0M2MwNWI4N2VjYjBlMGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKQEAgLTEzOCw3ICsx
MzgsNyBAQCBwdWJsaWM6CiAgICAgLy8gdGhlIG1lbW9yeSByZWdpb24gcG9pbnRlZCB0byBieSAi
cGl4ZWxzIiB3aXRoIHNpemUgImJ1ZmZlclNpemUiLiBJdCBpcwogICAgIC8vIGV4cGVjdGVkIHRo
YXQgdGhlIHN0b3JhZ2UgZm9yICJwaXhlbHMiIGNvdmVycyAoNCAqIHdpZHRoICogaGVpZ2h0KSBi
eXRlcy4KICAgICAvLyBSZXR1cm5zIHRydWUgb24gc3VjY2Vzcy4KLSAgICB2aXJ0dWFsIGJvb2wg
cmVhZEJhY2tGcmFtZWJ1ZmZlcih1bnNpZ25lZCBjaGFyKiBwaXhlbHMsIHNpemVfdCBidWZmZXJT
aXplKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRCYWNrRnJhbWVidWZmZXIodW5zaWduZWQg
Y2hhciogcGl4ZWxzLCBzaXplX3QgYnVmZmVyU2l6ZSwgV2ViR0xJZCBmcmFtZWJ1ZmZlciwgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0KSA9IDA7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBpZCBvZiB0aGUg
dGV4dHVyZSB3aGljaCBpcyB1c2VkIGZvciBzdG9yaW5nIHRoZSBjb250ZW50cyBvZgogICAgIC8v
IHRoZSBmcmFtZWJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb250ZXh0LiBUaGlzIHRleHR1
cmUgaXMgYWNjZXNzaWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
R3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAppbmRleCBiYTZlNzAwZTllMmNkMmEyYTAy
NmVkODAyMzkwMjJkNzJmOTVhMTQ5Li40YmVhOTllNjFkM2M5ODBkNDdiYWFiMjczMjAwOGNmNTY1
YmEzYjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0Nv
bnRleHQzRENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFw
aGljc0NvbnRleHQzRENocm9taXVtLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6bGF5ZXJDb21wb3NpdGVkKCkgY29uc3QKICAgICByZXR1cm4g
bV9sYXllckNvbXBvc2l0ZWQ7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY29u
dGV4dCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnRGcmFtZWJ1ZmZlclRv
Q2FudmFzKGludCBmcmFtZWJ1ZmZlciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBib29sIHByZW11
bHRpcGx5QWxwaGEsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgSFRN
TENhbnZhc0VsZW1lbnQqIGNhbnZhcyA9IGNvbnRleHQtPmNhbnZhcygpOwogICAgIEltYWdlQnVm
ZmVyKiBpbWFnZUJ1ZmZlciA9IGNhbnZhcy0+YnVmZmVyKCk7CkBAIC0yMTQsNyArMjE0LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0Nh
bnZhcyhDYW52YXNSZW5kZXJpbmdDb24KICAgICBjb25zdCBTa0JpdG1hcCogY2FudmFzQml0bWFw
ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmJpdG1hcCgpOwog
ICAgIGNvbnN0IFNrQml0bWFwKiByZWFkYmFja0JpdG1hcCA9IDA7CiAgICAgQVNTRVJUKGNhbnZh
c0JpdG1hcC0+Y29uZmlnKCkgPT0gU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnKTsKLSAgICBp
ZiAoY2FudmFzQml0bWFwLT53aWR0aCgpID09IG1faW1wbC0+d2lkdGgoKSAmJiBjYW52YXNCaXRt
YXAtPmhlaWdodCgpID09IG1faW1wbC0+aGVpZ2h0KCkpIHsKKyAgICBpZiAoY2FudmFzQml0bWFw
LT53aWR0aCgpID09IHdpZHRoICYmIGNhbnZhc0JpdG1hcC0+aGVpZ2h0KCkgPT0gaGVpZ2h0KSB7
CiAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGZhc3Rlc3QgYW5kIG1vc3QgY29tbW9uIGNhc2UuIFdl
IHJlYWQgYmFjawogICAgICAgICAvLyBkaXJlY3RseSBpbnRvIHRoZSBjYW52YXMncyBiYWNraW5n
IHN0b3JlLgogICAgICAgICByZWFkYmFja0JpdG1hcCA9IGNhbnZhc0JpdG1hcDsKQEAgLTIyMywx
MCArMjIzLDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29uCiAgICAgICAgIC8vIFdlIG5lZWQg
dG8gYWxsb2NhdGUgYSB0ZW1wb3JhcnkgYml0bWFwIGZvciByZWFkaW5nIGJhY2sgdGhlCiAgICAg
ICAgIC8vIHBpeGVsIGRhdGEuIFdlIHdpbGwgdGhlbiB1c2UgU2tpYSB0byByZXNjYWxlIHRoaXMg
Yml0bWFwIHRvCiAgICAgICAgIC8vIHRoZSBzaXplIG9mIHRoZSBjYW52YXMncyBiYWNraW5nIHN0
b3JlLgotICAgICAgICBpZiAobV9yZXNpemluZ0JpdG1hcC53aWR0aCgpICE9IG1faW1wbC0+d2lk
dGgoKSB8fCBtX3Jlc2l6aW5nQml0bWFwLmhlaWdodCgpICE9IG1faW1wbC0+aGVpZ2h0KCkpIHsK
KyAgICAgICAgaWYgKG1fcmVzaXppbmdCaXRtYXAud2lkdGgoKSAhPSB3aWR0aCB8fCBtX3Jlc2l6
aW5nQml0bWFwLmhlaWdodCgpICE9IGhlaWdodCkgewogICAgICAgICAgICAgbV9yZXNpemluZ0Jp
dG1hcC5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbXBsLT53aWR0aCgpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbXBsLT5oZWlnaHQoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGhlaWdodCk7CiAgICAgICAgICAgICBpZiAoIW1fcmVzaXppbmdC
aXRtYXAuYWxsb2NQaXhlbHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
QEAgLTI0MywxMCArMjQzLDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29uCiAjZXJyb3IgTXVz
dCBwb3J0IHRvIHlvdXIgcGxhdGZvcm0KICNlbmRpZgogCi0gICAgbV9pbXBsLT5yZWFkQmFja0Zy
YW1lYnVmZmVyKHBpeGVscywgNCAqIG1faW1wbC0+d2lkdGgoKSAqIG1faW1wbC0+aGVpZ2h0KCkp
OworICAgIG1faW1wbC0+cmVhZEJhY2tGcmFtZWJ1ZmZlcihwaXhlbHMsIDQgKiB3aWR0aCAqIGhl
aWdodCwgZnJhbWVidWZmZXIsIHdpZHRoLCBoZWlnaHQpOwogCi0gICAgaWYgKCFtX2ltcGwtPmdl
dENvbnRleHRBdHRyaWJ1dGVzKCkucHJlbXVsdGlwbGllZEFscGhhKSB7Ci0gICAgICAgIHNpemVf
dCBidWZmZXJTaXplID0gNCAqIG1faW1wbC0+d2lkdGgoKSAqIG1faW1wbC0+aGVpZ2h0KCk7Cisg
ICAgaWYgKHByZW11bHRpcGx5QWxwaGEpIHsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSA0
ICogd2lkdGggKiBoZWlnaHQ7CiAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBidWZm
ZXJTaXplOyBpICs9IDQpIHsKICAgICAgICAgICAgIHBpeGVsc1tpICsgMF0gPSBzdGQ6Om1pbigy
NTUsIHBpeGVsc1tpICsgMF0gKiBwaXhlbHNbaSArIDNdIC8gMjU1KTsKQEAgLTI2NywxMyArMjY3
LDI3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnRSZW5kZXJpbmdSZXN1
bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29uCiAjZWxpZiBVU0UoQ0cpCiAgICAgaWYgKG1f
cmVuZGVyT3V0cHV0ICYmIGNvbnRleHQtPmlzM2QoKSkgewogICAgICAgICBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQqIHdlYkdMQ29udGV4dCA9IHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4
dCo+KGNvbnRleHQpOwotICAgICAgICB3ZWJHTENvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCkt
PnBhaW50VG9DYW52YXMobV9yZW5kZXJPdXRwdXQsIG1faW1wbC0+d2lkdGgoKSwgbV9pbXBsLT5o
ZWlnaHQoKSwgY2FudmFzLT53aWR0aCgpLCBjYW52YXMtPmhlaWdodCgpLCBpbWFnZUJ1ZmZlci0+
Y29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgICAgIHdlYkdMQ29udGV4dC0+Z3Jh
cGhpY3NDb250ZXh0M0QoKS0+cGFpbnRUb0NhbnZhcyhtX3JlbmRlck91dHB1dCwgd2lkdGgsIGhl
aWdodCwgY2FudmFzLT53aWR0aCgpLCBjYW52YXMtPmhlaWdodCgpLCBpbWFnZUJ1ZmZlci0+Y29u
dGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgfQogI2Vsc2UKICNlcnJvciBNdXN0IHBv
cnQgdG8geW91ciBwbGF0Zm9ybQogI2VuZGlmCiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dCogY29udGV4dCkKK3sKKyAgICBwYWludEZyYW1lYnVmZmVyVG9DYW52YXMoMCwgbV9pbXBs
LT53aWR0aCgpLCBtX2ltcGwtPmhlaWdodCgpLCAhbV9pbXBsLT5nZXRDb250ZXh0QXR0cmlidXRl
cygpLnByZW11bHRpcGxpZWRBbHBoYSwgY29udGV4dCk7Cit9CisKK2Jvb2wgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRl
cmluZ0NvbnRleHQqIGNvbnRleHQpCit7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQorICAgIGlmIChwbGF0Zm9ybUxheWVyKCkpCisgICAgICAgIHJldHVybiBwbGF0Zm9ybUxheWVy
KCktPnBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoY29udGV4dCk7CisjZW5kaWYKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiB7CiAgICAgaWYg
KG1faW1wbC0+Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEpCkBAIC0y
ODMsNyArMjk3LDcgQEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXQKICAgICB1bnNpZ25lZCBjaGFy
KiBwaXhlbHMgPSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpLT5kYXRhKCk7CiAgICAgc2l6ZV90
IGJ1ZmZlclNpemUgPSA0ICogbV9pbXBsLT53aWR0aCgpICogbV9pbXBsLT5oZWlnaHQoKTsKIAot
ICAgIG1faW1wbC0+cmVhZEJhY2tGcmFtZWJ1ZmZlcihwaXhlbHMsIGJ1ZmZlclNpemUpOworICAg
IG1faW1wbC0+cmVhZEJhY2tGcmFtZWJ1ZmZlcihwaXhlbHMsIGJ1ZmZlclNpemUsIDAsIG1faW1w
bC0+d2lkdGgoKSwgbV9pbXBsLT5oZWlnaHQoKSk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGJ1ZmZlclNpemU7IGkgKz0gNCkKICAgICAgICAgc3RkOjpzd2FwKHBpeGVsc1tpXSwgcGl4
ZWxzW2kgKyAyXSk7CkBAIC0xMTY3LDcgKzExODEsOSBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNE
OjpsYXllckNvbXBvc2l0ZWQoKSBjb25zdAogfQogCiBERUxFR0FURV9UT19JTlRFUk5BTF8xKHBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0KikKK0RF
TEVHQVRFX1RPX0lOVEVSTkFMXzUocGFpbnRGcmFtZWJ1ZmZlclRvQ2FudmFzLCBpbnQsIGludCwg
aW50LCBib29sLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0KikKIERFTEVHQVRFX1RPX0lOVEVSTkFM
X1IocGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEsIFBhc3NSZWZQdHI8SW1hZ2VEYXRh
PikKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzFSKHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZh
cywgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCosIGJvb2wpCiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OnBhaW50c0ludG9DYW52YXNCdWZmZXIoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oCmluZGV4IDE2
YTY5ZDUxMmRmZGVjYWMwNDA0Y2VkZjNhZTRlMzQ2MWMxODhjNGIuLjQxNTRlMzllMDkzZjFmNmVh
ZGI2ZWNmNjllMWI1MDBkZWIwZDQxOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmgKQEAgLTgwLDggKzgwLDEwIEBA
IHB1YmxpYzoKICAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKTsKIAogICAgIHZvaWQgcGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCopOworICAg
IHZvaWQgcGFpbnRGcmFtZWJ1ZmZlclRvQ2FudmFzKGludCBmcmFtZWJ1ZmZlciwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0LCBib29sIHByZW11bHRpcGx5QWxwaGEsIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQqKTsKICAgICBQYXNzUmVmUHRyPEltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9J
bWFnZURhdGEoKTsKICAgICBib29sIHBhaW50c0ludG9DYW52YXNCdWZmZXIoKSBjb25zdDsKKyAg
ICBib29sIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250
ZXh0Kik7CiAKICAgICB2b2lkIHByZXBhcmVUZXh0dXJlKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103417</attachid>
            <date>2011-08-09 16:43:14 -0700</date>
            <delta_ts>2011-08-10 15:44:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65658-20110809164313.patch</filename>
            <type>text/plain</type>
            <size>14930</size>
            <attacher name="John Bauman">jbauman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI2OTMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyYjk0NzE1MGEyYmMxZTg2
ODU2OTcwOGNiNjNjOWVjOGViMzIyZDM4Li43MDllYmNkZjM4YmVmYmZmZDQ0MTYxZDk2NTc5NTJm
ZDQyNmUyMzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDgtMDkgIEpvaG4g
QmF1bWFuICA8amJhdW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVhZGJhY2sgY29tcG9z
aXRlZCB3ZWJnbCByZXN1bHRzIGZvciBwcmludGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcmVhbCBjb21wb3NpdGVkIHJlc3VsdHMgbWF5IGJl
IGxvY2tlZCBpbnNpZGUgdGhlIGNvbXBvc2l0b3IKKyAgICAgICAgY29udGV4dCdzIHZlcnNpb24g
b2YgYSB0ZXh0dXJlIGJlY2F1c2UgdGhlIGRyYXdpbmcgYnVmZmVyIHdhcworICAgICAgICBhdXRv
bWF0aWNhbGx5IGNsZWFyZWQsIHNvIHJlYWQgZnJvbSB0aGVyZSB0byBnZXQgdGhlIGFjdHVhbAor
ICAgICAgICBwcmVzZW50ZWQgdmVyc2lvbiB0byBkcmF3LgorCisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6cGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OnNldENvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpzZXRMYXllclJlbmRlcmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFz
KToKKwogMjAxMS0wOC0wOSAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgSmF2YVN0cmluZyBpcyBub3QgbmVlZGVkIGJ5IFY4CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA4Mjdk
MjAzNTdkNGFmODMxYmJhMzRlZTdiNzA0MGU3Yjc1ZGZkZjJjLi5lZDBjODFiNDAwZTIxNmMyYjhl
NGI2ODdhMjUwM2UyN2I0ODEzYjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTU2Niw5ICs1NjYsMTAgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkK
IHsKICAgICAvLyBVbnRpbCB0aGUgY2FudmFzIGlzIHdyaXR0ZW4gdG8gYnkgdGhlIGFwcGxpY2F0
aW9uLCB0aGUgY2xlYXIgdGhhdAogICAgIC8vIGhhcHBlbmVkIGFmdGVyIGl0IHdhcyBjb21wb3Np
dGVkIHNob3VsZCBiZSBpZ25vcmVkIGJ5IHRoZSBjb21wb3NpdG9yLgotICAgIGlmIChtX2NvbnRl
eHQtPmxheWVyQ29tcG9zaXRlZCgpICYmICFtX2F0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVm
ZmVyKQorICAgIGlmIChtX2NvbnRleHQtPmxheWVyQ29tcG9zaXRlZCgpICYmICFtX2F0dHJpYnV0
ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSB7CisgICAgICAgIG1fY29udGV4dC0+cGFpbnRDb21w
b3NpdGVkUmVzdWx0c1RvQ2FudmFzKHRoaXMpOwogICAgICAgICBjYW52YXMoKS0+bWFrZVByZXNl
bnRhdGlvbkNvcHkoKTsKLSAgICBlbHNlCisgICAgfSBlbHNlCiAgICAgICAgIGNhbnZhcygpLT5j
bGVhclByZXNlbnRhdGlvbkNvcHkoKTsKICAgICBjbGVhcklmQ29tcG9zaXRlZCgpOwogICAgIGlm
ICghbV9tYXJrZWRDYW52YXNEaXJ0eSAmJiAhbV9sYXllckNsZWFyZWQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAppbmRleCA1
ZmM2ZTZiMWUyNmQyNmE0OGVmYmMwMWY5NGEzMjEyNjEzNGJjYjg0Li43MmZmYjAyZmQ0YjM4ZTQx
M2Q3ZGI4NmE5NGJkNDcyMzBmMjI1YjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKQEAgLTc5Miw3ICs3OTIsMTEgQEAg
cHVibGljOgogICAgIGJvb2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3Q7CiAKICAgICB2b2lkIHBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGNvbnRl
eHQpOworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIHZvaWQgcGFpbnRGcmFtZWJ1ZmZlclRv
Q2FudmFzKGludCBmcmFtZWJ1ZmZlciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBib29sIHByZW11
bHRpcGx5QWxwaGEsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqKTsKKyNlbmRpZgogICAgIFBhc3NS
ZWZQdHI8SW1hZ2VEYXRhPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpOworICAg
IGJvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQqKTsKIAogI2lmIFBMQVRGT1JNKFFUKQogICAgIGJvb2wgcGFpbnRzSW50b0NhbnZhc0J1ZmZl
cigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3Bw
CmluZGV4IDc2MjE3YjRiOWU2Yzk1YWYyZDA4YjQyNWQzYWFjYTI3Y2RmNmVmZjQuLmEzMzc5OTgz
NGFiOGU0NzkxNWRkZmJkN2I2YTFlMjg2YjhiNmZjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNo
cm9taXVtLmNwcApAQCAtOTksNiArOTksMjMgQEAgdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKQogICAgIH0KIH0KIAorYm9vbCBXZWJHTExheWVyQ2hy
b21pdW06OnBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4
dCogY29udGV4dCkKK3sKKyAgICBpZiAobV90ZXh0dXJlVXBkYXRlZCB8fCAhbGF5ZXJSZW5kZXJl
cigpIHx8ICFkcmF3c0NvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSW50
U2l6ZSBmcmFtZWJ1ZmZlclNpemUgPSBtX2NvbnRleHQtPmdldEludGVybmFsRnJhbWVidWZmZXJT
aXplKCk7CisgICAgQVNTRVJUKGxheWVyUmVuZGVyZXJDb250ZXh0KCkpOworCisgICAgLy8gVGhp
cyB3b3VsZCBpZGVhbGx5IGJlIGRvbmUgaW4gdGhlIHdlYmdsIGNvbnRleHQsIGJ1dCB0aGF0IGlz
bid0IHBvc3NpYmxlIHlldC4KKyAgICBQbGF0Zm9ybTNET2JqZWN0IGZyYW1lYnVmZmVyID0gbGF5
ZXJSZW5kZXJlckNvbnRleHQoKS0+Y3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBsYXllclJlbmRl
cmVyQ29udGV4dCgpLT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSLCBmcmFtZWJ1ZmZlcik7CisgICAgbGF5ZXJSZW5kZXJlckNvbnRleHQoKS0+ZnJhbWVidWZm
ZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRl
eHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBt
X3RleHR1cmVJZCwgMCk7CisgICAgbGF5ZXJSZW5kZXJlckNvbnRleHQoKS0+cGFpbnRGcmFtZWJ1
ZmZlclRvQ2FudmFzKGZyYW1lYnVmZmVyLCBmcmFtZWJ1ZmZlclNpemUud2lkdGgoKSwgZnJhbWVi
dWZmZXJTaXplLmhlaWdodCgpLCAhbV9jb250ZXh0LT5nZXRDb250ZXh0QXR0cmlidXRlcygpLnBy
ZW11bHRpcGxpZWRBbHBoYSwgY29udGV4dCk7CisgICAgbGF5ZXJSZW5kZXJlckNvbnRleHQoKS0+
ZGVsZXRlRnJhbWVidWZmZXIoZnJhbWVidWZmZXIpOworICAgIHJldHVybiB0cnVlOworfQorCiB2
b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVyZVVwZGF0ZWQoKQogewogICAgIG1fdGV4
dHVyZVVwZGF0ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAppbmRleCBjNDM0
NDBkOTc5NTBkMTdlZmFhNDExY2VhM2MxYThiM2M3NTE2MWNkLi5mNTE4MGYxZDNjNjc0ZDY1NGNj
NjU1MTE5ZjViM2Y4MWJlYjA2NGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaApAQCAt
MzksNiArMzksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQ7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIFdlYkdMTGF5ZXJD
aHJvbWl1bVJhdGVMaW1pdFRhc2s7CiAKQEAgLTUyLDYgKzUzLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcygpOwogICAgIHZvaWQgc2V0VGV4dHVyZVVwZGF0ZWQoKTsKKyAg
ICBib29sIHBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4
dCopOwogCiAgICAgdm9pZCBzZXRDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0KTsKICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4
dDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKaW5kZXggZjdhNzZlMGMw
MWVkNjAxZmQzODE5N2E1YjFlZmVhNmVhMjNjZmE1Mi4uMDkwM2NlZmVkYTRkZDdiMGUyNWE5MWUy
ZjRlODFiMGU1MzNlYjIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3Bw
CkBAIC0xNTEsNiArMTUxLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGNvCiB9CiAjZW5kaWYK
IAorYm9vbCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dCogY29udGV4dCkKK3sKKyAgICAvLyBOb3QgbmVlZGVkIGF0IHRoZSBtb21lbnQsIHNvIHJl
dHVybiB0aGF0IG5vdGhpbmcgd2FzIGRvbmUuCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBQYXNz
UmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvSW1hZ2VEYXRhKCkKIHsKICAgICAvLyBSZWFkaW5nIHByZW11bHRpcGxpZWQgYWxwaGEgd291
bGQgaW52b2x2ZSB1bnByZW11bHRpcGx5aW5nLCB3aGljaCBpcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwppbmRleCBjYThmNzUyMzJlOWIwNDUzMGMxMGNmZDg1NGExMDY0OWFhYjU1YThkLi40MmU5
OWRiNjRmYmQ5ZGZhYTM3NjNiOGZhZTFiZGQ0YzQzYmIzOWNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTA4LTA5ICBKb2huIEJhdW1hbiAgPGpiYXVt
YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlYWRiYWNrIGNvbXBvc2l0ZWQgd2ViZ2wgcmVz
dWx0cyBmb3IgcHJpbnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY1NjU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHJlYWRpbmcgZnJvbSB0aGUgY29tcG9zaXRlZCB2ZXJz
aW9uIG9mIGEgY2FudmFzLgorCisgICAgICAgICogcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNE
Lmg6CisgICAgICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnRGcmFtZWJ1ZmZlclRv
Q2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludFJlbmRlcmluZ1Jl
c3VsdHNUb0ltYWdlRGF0YSk6CisgICAgICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWwuaDoKKwogMjAxMS0wOC0wOSAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbY2hyb21pdW1dIHJlbW92ZSB0ZW1wb3JhcnkgI2RlZmluZSBmcm9tIFdl
YlVSTFJlcXVlc3QuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9ERVBTIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9ERVBTCmluZGV4IGNiMTVlZjE1OTA3MzYxZTg2ZjJlMmM4
NjQ2OTJjYTFmOTBkMDVlZDYuLjUxNjVjOWI2MDdiMjBiNjZlNjMwNjliNzIzMTY4N2E1ZGUzZTVi
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vREVQUworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0RFUFMKQEAgLTMyLDcgKzMyLDcgQEAKIAogdmFycyA9IHsKICAgJ2No
cm9taXVtX3N2bic6ICdodHRwOi8vc3JjLmNocm9taXVtLm9yZy9zdm4vdHJ1bmsvc3JjJywKLSAg
J2Nocm9taXVtX3Jldic6ICc5NTgxMycKKyAgJ2Nocm9taXVtX3Jldic6ICc5NTg5OCcKIH0KIAog
ZGVwcyA9IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdy
YXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFw
aGljc0NvbnRleHQzRC5oCmluZGV4IDgxYThiZDVlYTJjOTIzOTY0YmI4YTY1YjhjMTZkYzVlMGJh
NWQzZjAuLjA3NjJjMmM0YmJmZGFlYmNlNWZiZDVjYTQzYzA1Yjg3ZWNiMGUwYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0Qu
aApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGUgbWVtb3J5IHJlZ2lvbiBw
b2ludGVkIHRvIGJ5ICJwaXhlbHMiIHdpdGggc2l6ZSAiYnVmZmVyU2l6ZSIuIEl0IGlzCiAgICAg
Ly8gZXhwZWN0ZWQgdGhhdCB0aGUgc3RvcmFnZSBmb3IgInBpeGVscyIgY292ZXJzICg0ICogd2lk
dGggKiBoZWlnaHQpIGJ5dGVzLgogICAgIC8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLgotICAg
IHZpcnR1YWwgYm9vbCByZWFkQmFja0ZyYW1lYnVmZmVyKHVuc2lnbmVkIGNoYXIqIHBpeGVscywg
c2l6ZV90IGJ1ZmZlclNpemUpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZEJhY2tGcmFtZWJ1
ZmZlcih1bnNpZ25lZCBjaGFyKiBwaXhlbHMsIHNpemVfdCBidWZmZXJTaXplLCBXZWJHTElkIGZy
YW1lYnVmZmVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpID0gMDsKIAogICAgIC8vIFJldHVybnMg
dGhlIGlkIG9mIHRoZSB0ZXh0dXJlIHdoaWNoIGlzIHVzZWQgZm9yIHN0b3JpbmcgdGhlIGNvbnRl
bnRzIG9mCiAgICAgLy8gdGhlIGZyYW1lYnVmZmVyIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRl
eHQuIFRoaXMgdGV4dHVyZSBpcyBhY2Nlc3NpYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCmluZGV4IGJhNmU3
MDBlOWUyY2QyYTJhMDI2ZWQ4MDIzOTAyMmQ3MmY5NWExNDkuLjRiZWE5OWU2MWQzYzk4MGQ0N2Jh
YWIyNzMyMDA4Y2Y1NjViYTNiNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCkBAIC0yMDUsNyArMjA1LDcg
QEAgYm9vbCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpsYXllckNvbXBvc2l0ZWQoKSBjb25z
dAogICAgIHJldHVybiBtX2xheWVyQ29tcG9zaXRlZDsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJp
bmdDb250ZXh0KiBjb250ZXh0KQordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWlu
dEZyYW1lYnVmZmVyVG9DYW52YXMoaW50IGZyYW1lYnVmZmVyLCBpbnQgd2lkdGgsIGludCBoZWln
aHQsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY29udGV4
dCkKIHsKICAgICBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gY29udGV4dC0+Y2FudmFzKCk7
CiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyID0gY2FudmFzLT5idWZmZXIoKTsKQEAgLTIx
NCw3ICsyMTQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbgogICAgIGNvbnN0IFNrQml0bWFw
KiBjYW52YXNCaXRtYXAgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQo
KS0+Yml0bWFwKCk7CiAgICAgY29uc3QgU2tCaXRtYXAqIHJlYWRiYWNrQml0bWFwID0gMDsKICAg
ICBBU1NFUlQoY2FudmFzQml0bWFwLT5jb25maWcoKSA9PSBTa0JpdG1hcDo6a0FSR0JfODg4OF9D
b25maWcpOwotICAgIGlmIChjYW52YXNCaXRtYXAtPndpZHRoKCkgPT0gbV9pbXBsLT53aWR0aCgp
ICYmIGNhbnZhc0JpdG1hcC0+aGVpZ2h0KCkgPT0gbV9pbXBsLT5oZWlnaHQoKSkgeworICAgIGlm
IChjYW52YXNCaXRtYXAtPndpZHRoKCkgPT0gd2lkdGggJiYgY2FudmFzQml0bWFwLT5oZWlnaHQo
KSA9PSBoZWlnaHQpIHsKICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZmFzdGVzdCBhbmQgbW9zdCBj
b21tb24gY2FzZS4gV2UgcmVhZCBiYWNrCiAgICAgICAgIC8vIGRpcmVjdGx5IGludG8gdGhlIGNh
bnZhcydzIGJhY2tpbmcgc3RvcmUuCiAgICAgICAgIHJlYWRiYWNrQml0bWFwID0gY2FudmFzQml0
bWFwOwpAQCAtMjIzLDEwICsyMjMsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb24KICAgICAg
ICAgLy8gV2UgbmVlZCB0byBhbGxvY2F0ZSBhIHRlbXBvcmFyeSBiaXRtYXAgZm9yIHJlYWRpbmcg
YmFjayB0aGUKICAgICAgICAgLy8gcGl4ZWwgZGF0YS4gV2Ugd2lsbCB0aGVuIHVzZSBTa2lhIHRv
IHJlc2NhbGUgdGhpcyBiaXRtYXAgdG8KICAgICAgICAgLy8gdGhlIHNpemUgb2YgdGhlIGNhbnZh
cydzIGJhY2tpbmcgc3RvcmUuCi0gICAgICAgIGlmIChtX3Jlc2l6aW5nQml0bWFwLndpZHRoKCkg
IT0gbV9pbXBsLT53aWR0aCgpIHx8IG1fcmVzaXppbmdCaXRtYXAuaGVpZ2h0KCkgIT0gbV9pbXBs
LT5oZWlnaHQoKSkgeworICAgICAgICBpZiAobV9yZXNpemluZ0JpdG1hcC53aWR0aCgpICE9IHdp
ZHRoIHx8IG1fcmVzaXppbmdCaXRtYXAuaGVpZ2h0KCkgIT0gaGVpZ2h0KSB7CiAgICAgICAgICAg
ICBtX3Jlc2l6aW5nQml0bWFwLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ltcGwtPndpZHRoKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ltcGwtPmhlaWdodCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KTsKICAgICAgICAgICAgIGlm
ICghbV9yZXNpemluZ0JpdG1hcC5hbGxvY1BpeGVscygpKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMjQzLDEwICsyNDMsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdD
b24KICNlcnJvciBNdXN0IHBvcnQgdG8geW91ciBwbGF0Zm9ybQogI2VuZGlmCiAKLSAgICBtX2lt
cGwtPnJlYWRCYWNrRnJhbWVidWZmZXIocGl4ZWxzLCA0ICogbV9pbXBsLT53aWR0aCgpICogbV9p
bXBsLT5oZWlnaHQoKSk7CisgICAgbV9pbXBsLT5yZWFkQmFja0ZyYW1lYnVmZmVyKHBpeGVscywg
NCAqIHdpZHRoICogaGVpZ2h0LCBmcmFtZWJ1ZmZlciwgd2lkdGgsIGhlaWdodCk7CiAKLSAgICBp
ZiAoIW1faW1wbC0+Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEpIHsK
LSAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSA0ICogbV9pbXBsLT53aWR0aCgpICogbV9pbXBs
LT5oZWlnaHQoKTsKKyAgICBpZiAocHJlbXVsdGlwbHlBbHBoYSkgeworICAgICAgICBzaXplX3Qg
YnVmZmVyU2l6ZSA9IDQgKiB3aWR0aCAqIGhlaWdodDsKIAogICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGJ1ZmZlclNpemU7IGkgKz0gNCkgewogICAgICAgICAgICAgcGl4ZWxzW2kgKyAw
XSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAwXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOwpA
QCAtMjY3LDEzICsyNjcsMjcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWlu
dFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb24KICNlbGlmIFVTRShD
RykKICAgICBpZiAobV9yZW5kZXJPdXRwdXQgJiYgY29udGV4dC0+aXMzZCgpKSB7CiAgICAgICAg
IFdlYkdMUmVuZGVyaW5nQ29udGV4dCogd2ViR0xDb250ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViR0xS
ZW5kZXJpbmdDb250ZXh0Kj4oY29udGV4dCk7Ci0gICAgICAgIHdlYkdMQ29udGV4dC0+Z3JhcGhp
Y3NDb250ZXh0M0QoKS0+cGFpbnRUb0NhbnZhcyhtX3JlbmRlck91dHB1dCwgbV9pbXBsLT53aWR0
aCgpLCBtX2ltcGwtPmhlaWdodCgpLCBjYW52YXMtPndpZHRoKCksIGNhbnZhcy0+aGVpZ2h0KCks
IGltYWdlQnVmZmVyLT5jb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICAgICAgd2Vi
R0xDb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5wYWludFRvQ2FudmFzKG1fcmVuZGVyT3V0
cHV0LCB3aWR0aCwgaGVpZ2h0LCBjYW52YXMtPndpZHRoKCksIGNhbnZhcy0+aGVpZ2h0KCksIGlt
YWdlQnVmZmVyLT5jb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpKTsKICAgICB9CiAjZWxzZQog
I2Vycm9yIE11c3QgcG9ydCB0byB5b3VyIHBsYXRmb3JtCiAjZW5kaWYKIH0KIAordm9pZCBHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52
YXNSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0KQoreworICAgIHBhaW50RnJhbWVidWZmZXJUb0Nh
bnZhcygwLCBtX2ltcGwtPndpZHRoKCksIG1faW1wbC0+aGVpZ2h0KCksICFtX2ltcGwtPmdldENv
bnRleHRBdHRyaWJ1dGVzKCkucHJlbXVsdGlwbGllZEFscGhhLCBjb250ZXh0KTsKK30KKworYm9v
bCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52
YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKK3sKKyNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCisgICAgaWYgKHBsYXRmb3JtTGF5ZXIoKSkKKyAgICAgICAgcmV0dXJu
IHBsYXRmb3JtTGF5ZXIoKS0+cGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyhjb250ZXh0KTsK
KyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKK30KKwogUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRh
KCkKIHsKICAgICBpZiAobV9pbXBsLT5nZXRDb250ZXh0QXR0cmlidXRlcygpLnByZW11bHRpcGxp
ZWRBbHBoYSkKQEAgLTI4Myw3ICsyOTcsNyBAQCBQYXNzUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdAogICAg
IHVuc2lnbmVkIGNoYXIqIHBpeGVscyA9IGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCktPmRhdGEo
KTsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IDQgKiBtX2ltcGwtPndpZHRoKCkgKiBtX2ltcGwt
PmhlaWdodCgpOwogCi0gICAgbV9pbXBsLT5yZWFkQmFja0ZyYW1lYnVmZmVyKHBpeGVscywgYnVm
ZmVyU2l6ZSk7CisgICAgbV9pbXBsLT5yZWFkQmFja0ZyYW1lYnVmZmVyKHBpeGVscywgYnVmZmVy
U2l6ZSwgMCwgbV9pbXBsLT53aWR0aCgpLCBtX2ltcGwtPmhlaWdodCgpKTsKIAogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYnVmZmVyU2l6ZTsgaSArPSA0KQogICAgICAgICBzdGQ6OnN3YXAo
cGl4ZWxzW2ldLCBwaXhlbHNbaSArIDJdKTsKQEAgLTExNjcsNyArMTE4MSw5IEBAIGJvb2wgR3Jh
cGhpY3NDb250ZXh0M0Q6OmxheWVyQ29tcG9zaXRlZCgpIGNvbnN0CiB9CiAKIERFTEVHQVRFX1RP
X0lOVEVSTkFMXzEocGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMsIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQqKQorREVMRUdBVEVfVE9fSU5URVJOQUxfNShwYWludEZyYW1lYnVmZmVyVG9DYW52
YXMsIGludCwgaW50LCBpbnQsIGJvb2wsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqKQogREVMRUdB
VEVfVE9fSU5URVJOQUxfUihwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSwgUGFzc1Jl
ZlB0cjxJbWFnZURhdGE+KQorREVMRUdBVEVfVE9fSU5URVJOQUxfMVIocGFpbnRDb21wb3NpdGVk
UmVzdWx0c1RvQ2FudmFzLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiwgYm9vbCkKIAogYm9vbCBH
cmFwaGljc0NvbnRleHQzRDo6cGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIGNvbnN0CiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzREludGVy
bmFsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzREludGVy
bmFsLmgKaW5kZXggMTZhNjlkNTEyZGZkZWNhYzA0MDRjZWRmM2FlNGUzNDYxYzE4OGM0Yi4uNDE1
NGUzOWUwOTNmMWY2ZWFkYjZlY2Y2OWUxYjUwMGRlYjBkNDE4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaApAQCAt
ODAsOCArODAsMTAgQEAgcHVibGljOgogICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpOwog
CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdD
b250ZXh0Kik7CisgICAgdm9pZCBwYWludEZyYW1lYnVmZmVyVG9DYW52YXMoaW50IGZyYW1lYnVm
ZmVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dCopOwogICAgIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBwYWludFJlbmRl
cmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpOwogICAgIGJvb2wgcGFpbnRzSW50b0NhbnZhc0J1ZmZl
cigpIGNvbnN0OworICAgIGJvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKENhbnZh
c1JlbmRlcmluZ0NvbnRleHQqKTsKIAogICAgIHZvaWQgcHJlcGFyZVRleHR1cmUoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103544</attachid>
            <date>2011-08-10 15:44:23 -0700</date>
            <delta_ts>2011-08-11 18:06:48 -0700</delta_ts>
            <desc>remove now-unnecessary DEPS roll</desc>
            <filename>bug-65658-20110810154421.patch</filename>
            <type>text/plain</type>
            <size>14576</size>
            <attacher name="John Bauman">jbauman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI3NjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZTc0Y2Q2M2QyZWM0MjJj
YTI5MTE2OTQyMGJmZWY3ZGIwYTIzMWJkLi42N2FlZWI3MzI2ZDNkM2NhNWIxMDNlNzE5MDYxN2Ji
MjNmYzJmMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDgtMDkgIEpvaG4g
QmF1bWFuICA8amJhdW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVhZGJhY2sgY29tcG9z
aXRlZCB3ZWJnbCByZXN1bHRzIGZvciBwcmludGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcmVhbCBjb21wb3NpdGVkIHJlc3VsdHMgbWF5IGJl
IGxvY2tlZCBpbnNpZGUgdGhlIGNvbXBvc2l0b3IKKyAgICAgICAgY29udGV4dCdzIHZlcnNpb24g
b2YgYSB0ZXh0dXJlIGJlY2F1c2UgdGhlIGRyYXdpbmcgYnVmZmVyIHdhcworICAgICAgICBhdXRv
bWF0aWNhbGx5IGNsZWFyZWQsIHNvIHJlYWQgZnJvbSB0aGVyZSB0byBnZXQgdGhlIGFjdHVhbAor
ICAgICAgICBwcmVzZW50ZWQgdmVyc2lvbiB0byBkcmF3LgorCisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6cGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OnNldENvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpzZXRMYXllclJlbmRlcmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFz
KToKKwogMjAxMS0wOC0xMCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogYXV0by1jb21wbGV0aW9uIGZvciBzdHJpbmcgbGl0ZXJh
bHMgZG9lc24ndCB3b3JrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA4MjdkMjAzNTdkNGFmODMxYmJhMzRlZTdiNzA0
MGU3Yjc1ZGZkZjJjLi5lZDBjODFiNDAwZTIxNmMyYjhlNGI2ODdhMjUwM2UyN2I0ODEzYjY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAKQEAgLTU2Niw5ICs1NjYsMTAgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkKIHsKICAgICAvLyBVbnRpbCB0aGUgY2Fu
dmFzIGlzIHdyaXR0ZW4gdG8gYnkgdGhlIGFwcGxpY2F0aW9uLCB0aGUgY2xlYXIgdGhhdAogICAg
IC8vIGhhcHBlbmVkIGFmdGVyIGl0IHdhcyBjb21wb3NpdGVkIHNob3VsZCBiZSBpZ25vcmVkIGJ5
IHRoZSBjb21wb3NpdG9yLgotICAgIGlmIChtX2NvbnRleHQtPmxheWVyQ29tcG9zaXRlZCgpICYm
ICFtX2F0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKQorICAgIGlmIChtX2NvbnRleHQt
PmxheWVyQ29tcG9zaXRlZCgpICYmICFtX2F0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVy
KSB7CisgICAgICAgIG1fY29udGV4dC0+cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKHRo
aXMpOwogICAgICAgICBjYW52YXMoKS0+bWFrZVByZXNlbnRhdGlvbkNvcHkoKTsKLSAgICBlbHNl
CisgICAgfSBlbHNlCiAgICAgICAgIGNhbnZhcygpLT5jbGVhclByZXNlbnRhdGlvbkNvcHkoKTsK
ICAgICBjbGVhcklmQ29tcG9zaXRlZCgpOwogICAgIGlmICghbV9tYXJrZWRDYW52YXNEaXJ0eSAm
JiAhbV9sYXllckNsZWFyZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAppbmRleCA1ZmM2ZTZiMWUyNmQyNmE0OGVmYmMwMWY5
NGEzMjEyNjEzNGJjYjg0Li43MmZmYjAyZmQ0YjM4ZTQxM2Q3ZGI4NmE5NGJkNDcyMzBmMjI1YjVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dDNELmgKQEAgLTc5Miw3ICs3OTIsMTEgQEAgcHVibGljOgogICAgIGJvb2wgbGF5ZXJD
b21wb3NpdGVkKCkgY29uc3Q7CiAKICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2Fu
dmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpOworI2lmIFBMQVRGT1JNKENIUk9N
SVVNKQorICAgIHZvaWQgcGFpbnRGcmFtZWJ1ZmZlclRvQ2FudmFzKGludCBmcmFtZWJ1ZmZlciwg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBib29sIHByZW11bHRpcGx5QWxwaGEsIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQqKTsKKyNlbmRpZgogICAgIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpOworICAgIGJvb2wgcGFpbnRDb21wb3NpdGVkUmVz
dWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQqKTsKIAogI2lmIFBMQVRGT1JNKFFU
KQogICAgIGJvb2wgcGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDc2MjE3YjRiOWU2Yzk1YWYy
ZDA4YjQyNWQzYWFjYTI3Y2RmNmVmZjQuLmEzMzc5OTgzNGFiOGU0NzkxNWRkZmJkN2I2YTFlMjg2
YjhiNmZjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcApAQCAtOTksNiArOTks
MjMgQEAgdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
KQogICAgIH0KIH0KIAorYm9vbCBXZWJHTExheWVyQ2hyb21pdW06OnBhaW50UmVuZGVyZWRSZXN1
bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBpZiAo
bV90ZXh0dXJlVXBkYXRlZCB8fCAhbGF5ZXJSZW5kZXJlcigpIHx8ICFkcmF3c0NvbnRlbnQoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSW50U2l6ZSBmcmFtZWJ1ZmZlclNpemUgPSBt
X2NvbnRleHQtPmdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCk7CisgICAgQVNTRVJUKGxheWVy
UmVuZGVyZXJDb250ZXh0KCkpOworCisgICAgLy8gVGhpcyB3b3VsZCBpZGVhbGx5IGJlIGRvbmUg
aW4gdGhlIHdlYmdsIGNvbnRleHQsIGJ1dCB0aGF0IGlzbid0IHBvc3NpYmxlIHlldC4KKyAgICBQ
bGF0Zm9ybTNET2JqZWN0IGZyYW1lYnVmZmVyID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKS0+Y3Jl
YXRlRnJhbWVidWZmZXIoKTsKKyAgICBsYXllclJlbmRlcmVyQ29udGV4dCgpLT5iaW5kRnJhbWVi
dWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBmcmFtZWJ1ZmZlcik7CisgICAg
bGF5ZXJSZW5kZXJlckNvbnRleHQoKS0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAs
IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVJZCwgMCk7CisgICAgbGF5
ZXJSZW5kZXJlckNvbnRleHQoKS0+cGFpbnRGcmFtZWJ1ZmZlclRvQ2FudmFzKGZyYW1lYnVmZmVy
LCBmcmFtZWJ1ZmZlclNpemUud2lkdGgoKSwgZnJhbWVidWZmZXJTaXplLmhlaWdodCgpLCAhbV9j
b250ZXh0LT5nZXRDb250ZXh0QXR0cmlidXRlcygpLnByZW11bHRpcGxpZWRBbHBoYSwgY29udGV4
dCk7CisgICAgbGF5ZXJSZW5kZXJlckNvbnRleHQoKS0+ZGVsZXRlRnJhbWVidWZmZXIoZnJhbWVi
dWZmZXIpOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6
c2V0VGV4dHVyZVVwZGF0ZWQoKQogewogICAgIG1fdGV4dHVyZVVwZGF0ZWQgPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xM
YXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9XZWJHTExheWVyQ2hyb21pdW0uaAppbmRleCBjNDM0NDBkOTc5NTBkMTdlZmFhNDExY2VhM2Mx
YThiM2M3NTE2MWNkLi5mNTE4MGYxZDNjNjc0ZDY1NGNjNjU1MTE5ZjViM2Y4MWJlYjA2NGY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaApAQCAtMzksNiArMzksNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ7CiBjbGFzcyBHcmFw
aGljc0NvbnRleHQzRDsKIGNsYXNzIFdlYkdMTGF5ZXJDaHJvbWl1bVJhdGVMaW1pdFRhc2s7CiAK
QEAgLTUyLDYgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQo
KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpOwog
ICAgIHZvaWQgc2V0VGV4dHVyZVVwZGF0ZWQoKTsKKyAgICBib29sIHBhaW50UmVuZGVyZWRSZXN1
bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCopOwogCiAgICAgdm9pZCBzZXRDb250
ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KTsKICAgICBHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdM
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTC5jcHAKaW5kZXggZjdhNzZlMGMwMWVkNjAxZmQzODE5N2E1YjFlZmVhNmVh
MjNjZmE1Mi4uMDkwM2NlZmVkYTRkZDdiMGUyNWE5MWUyZjRlODFiMGU1MzNlYjIyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dDNET3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCkBAIC0xNTEsNiArMTUxLDEyIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKENhbnZh
c1JlbmRlcmluZ0NvbnRleHQqIGNvCiB9CiAjZW5kaWYKIAorYm9vbCBwYWludENvbXBvc2l0ZWRS
ZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKK3sKKyAgICAv
LyBOb3QgbmVlZGVkIGF0IHRoZSBtb21lbnQsIHNvIHJldHVybiB0aGF0IG5vdGhpbmcgd2FzIGRv
bmUuCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBQYXNzUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhp
Y3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkKIHsKICAgICAv
LyBSZWFkaW5nIHByZW11bHRpcGxpZWQgYWxwaGEgd291bGQgaW52b2x2ZSB1bnByZW11bHRpcGx5
aW5nLCB3aGljaCBpcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA5MjcyODM5YWMwZTdh
ZTYzMGJjNGJjYzhhNDRjMzNiZjk3MWIxZGQxLi5jNmU0MmFjMjkzYjE1ZmUxY2VhZDIxZmFkYzEw
ZDczNWFiYWYzODBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDExLTA4LTA5ICBKb2huIEJhdW1hbiAgPGpiYXVtYW5AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJlYWRiYWNrIGNvbXBvc2l0ZWQgd2ViZ2wgcmVzdWx0cyBmb3IgcHJpbnRpbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NjU4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IHJlYWRpbmcgZnJvbSB0aGUgY29tcG9zaXRlZCB2ZXJzaW9uIG9mIGEgY2FudmFzLgorCisgICAg
ICAgICogcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogc3JjL0dyYXBo
aWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6cGFpbnRGcmFtZWJ1ZmZlclRvQ2FudmFzKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2Fu
dmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50
Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSk6CisgICAg
ICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaDoKKwogMjAxMS0wOC0xMCAgQW5k
cmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQu
IFJvbGxlZCBERVBTIDk1ODEzOjk2MDA5IHRvIHBpY2sgZGF0YSB1cmwgdGltaW5nIGZpeC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4
dDNELmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQz
RC5oCmluZGV4IDgxYThiZDVlYTJjOTIzOTY0YmI4YTY1YjhjMTZkYzVlMGJhNWQzZjAuLjA3NjJj
MmM0YmJmZGFlYmNlNWZiZDVjYTQzYzA1Yjg3ZWNiMGUwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtMTM4LDcg
KzEzOCw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGUgbWVtb3J5IHJlZ2lvbiBwb2ludGVkIHRvIGJ5
ICJwaXhlbHMiIHdpdGggc2l6ZSAiYnVmZmVyU2l6ZSIuIEl0IGlzCiAgICAgLy8gZXhwZWN0ZWQg
dGhhdCB0aGUgc3RvcmFnZSBmb3IgInBpeGVscyIgY292ZXJzICg0ICogd2lkdGggKiBoZWlnaHQp
IGJ5dGVzLgogICAgIC8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLgotICAgIHZpcnR1YWwgYm9v
bCByZWFkQmFja0ZyYW1lYnVmZmVyKHVuc2lnbmVkIGNoYXIqIHBpeGVscywgc2l6ZV90IGJ1ZmZl
clNpemUpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZEJhY2tGcmFtZWJ1ZmZlcih1bnNpZ25l
ZCBjaGFyKiBwaXhlbHMsIHNpemVfdCBidWZmZXJTaXplLCBXZWJHTElkIGZyYW1lYnVmZmVyLCBp
bnQgd2lkdGgsIGludCBoZWlnaHQpID0gMDsKIAogICAgIC8vIFJldHVybnMgdGhlIGlkIG9mIHRo
ZSB0ZXh0dXJlIHdoaWNoIGlzIHVzZWQgZm9yIHN0b3JpbmcgdGhlIGNvbnRlbnRzIG9mCiAgICAg
Ly8gdGhlIGZyYW1lYnVmZmVyIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRleHQuIFRoaXMgdGV4
dHVyZSBpcyBhY2Nlc3NpYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCmluZGV4IGJhNmU3MDBlOWUyY2QyYTJh
MDI2ZWQ4MDIzOTAyMmQ3MmY5NWExNDkuLjRiZWE5OWU2MWQzYzk4MGQ0N2JhYWIyNzMyMDA4Y2Y1
NjViYTNiNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNz
Q29udGV4dDNEQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dy
YXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpsYXllckNvbXBvc2l0ZWQoKSBjb25zdAogICAgIHJldHVy
biBtX2xheWVyQ29tcG9zaXRlZDsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBj
b250ZXh0KQordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludEZyYW1lYnVmZmVy
VG9DYW52YXMoaW50IGZyYW1lYnVmZmVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKIHsKICAgICBI
VE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gY29udGV4dC0+Y2FudmFzKCk7CiAgICAgSW1hZ2VC
dWZmZXIqIGltYWdlQnVmZmVyID0gY2FudmFzLT5idWZmZXIoKTsKQEAgLTIxNCw3ICsyMTQsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbgogICAgIGNvbnN0IFNrQml0bWFwKiBjYW52YXNCaXRt
YXAgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKS0+Yml0bWFwKCk7
CiAgICAgY29uc3QgU2tCaXRtYXAqIHJlYWRiYWNrQml0bWFwID0gMDsKICAgICBBU1NFUlQoY2Fu
dmFzQml0bWFwLT5jb25maWcoKSA9PSBTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcpOwotICAg
IGlmIChjYW52YXNCaXRtYXAtPndpZHRoKCkgPT0gbV9pbXBsLT53aWR0aCgpICYmIGNhbnZhc0Jp
dG1hcC0+aGVpZ2h0KCkgPT0gbV9pbXBsLT5oZWlnaHQoKSkgeworICAgIGlmIChjYW52YXNCaXRt
YXAtPndpZHRoKCkgPT0gd2lkdGggJiYgY2FudmFzQml0bWFwLT5oZWlnaHQoKSA9PSBoZWlnaHQp
IHsKICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZmFzdGVzdCBhbmQgbW9zdCBjb21tb24gY2FzZS4g
V2UgcmVhZCBiYWNrCiAgICAgICAgIC8vIGRpcmVjdGx5IGludG8gdGhlIGNhbnZhcydzIGJhY2tp
bmcgc3RvcmUuCiAgICAgICAgIHJlYWRiYWNrQml0bWFwID0gY2FudmFzQml0bWFwOwpAQCAtMjIz
LDEwICsyMjMsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludFJlbmRl
cmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb24KICAgICAgICAgLy8gV2UgbmVl
ZCB0byBhbGxvY2F0ZSBhIHRlbXBvcmFyeSBiaXRtYXAgZm9yIHJlYWRpbmcgYmFjayB0aGUKICAg
ICAgICAgLy8gcGl4ZWwgZGF0YS4gV2Ugd2lsbCB0aGVuIHVzZSBTa2lhIHRvIHJlc2NhbGUgdGhp
cyBiaXRtYXAgdG8KICAgICAgICAgLy8gdGhlIHNpemUgb2YgdGhlIGNhbnZhcydzIGJhY2tpbmcg
c3RvcmUuCi0gICAgICAgIGlmIChtX3Jlc2l6aW5nQml0bWFwLndpZHRoKCkgIT0gbV9pbXBsLT53
aWR0aCgpIHx8IG1fcmVzaXppbmdCaXRtYXAuaGVpZ2h0KCkgIT0gbV9pbXBsLT5oZWlnaHQoKSkg
eworICAgICAgICBpZiAobV9yZXNpemluZ0JpdG1hcC53aWR0aCgpICE9IHdpZHRoIHx8IG1fcmVz
aXppbmdCaXRtYXAuaGVpZ2h0KCkgIT0gaGVpZ2h0KSB7CiAgICAgICAgICAgICBtX3Jlc2l6aW5n
Qml0bWFwLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ltcGwtPndpZHRoKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ltcGwtPmhlaWdodCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KTsKICAgICAgICAgICAgIGlmICghbV9yZXNpemlu
Z0JpdG1hcC5hbGxvY1BpeGVscygpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtMjQzLDEwICsyNDMsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpw
YWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb24KICNlcnJvciBN
dXN0IHBvcnQgdG8geW91ciBwbGF0Zm9ybQogI2VuZGlmCiAKLSAgICBtX2ltcGwtPnJlYWRCYWNr
RnJhbWVidWZmZXIocGl4ZWxzLCA0ICogbV9pbXBsLT53aWR0aCgpICogbV9pbXBsLT5oZWlnaHQo
KSk7CisgICAgbV9pbXBsLT5yZWFkQmFja0ZyYW1lYnVmZmVyKHBpeGVscywgNCAqIHdpZHRoICog
aGVpZ2h0LCBmcmFtZWJ1ZmZlciwgd2lkdGgsIGhlaWdodCk7CiAKLSAgICBpZiAoIW1faW1wbC0+
Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEpIHsKLSAgICAgICAgc2l6
ZV90IGJ1ZmZlclNpemUgPSA0ICogbV9pbXBsLT53aWR0aCgpICogbV9pbXBsLT5oZWlnaHQoKTsK
KyAgICBpZiAocHJlbXVsdGlwbHlBbHBoYSkgeworICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9
IDQgKiB3aWR0aCAqIGhlaWdodDsKIAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJ1
ZmZlclNpemU7IGkgKz0gNCkgewogICAgICAgICAgICAgcGl4ZWxzW2kgKyAwXSA9IHN0ZDo6bWlu
KDI1NSwgcGl4ZWxzW2kgKyAwXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOwpAQCAtMjY3LDEzICsy
NjcsMjcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludFJlbmRlcmluZ1Jl
c3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb24KICNlbGlmIFVTRShDRykKICAgICBpZiAo
bV9yZW5kZXJPdXRwdXQgJiYgY29udGV4dC0+aXMzZCgpKSB7CiAgICAgICAgIFdlYkdMUmVuZGVy
aW5nQ29udGV4dCogd2ViR0xDb250ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250
ZXh0Kj4oY29udGV4dCk7Ci0gICAgICAgIHdlYkdMQ29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0Qo
KS0+cGFpbnRUb0NhbnZhcyhtX3JlbmRlck91dHB1dCwgbV9pbXBsLT53aWR0aCgpLCBtX2ltcGwt
PmhlaWdodCgpLCBjYW52YXMtPndpZHRoKCksIGNhbnZhcy0+aGVpZ2h0KCksIGltYWdlQnVmZmVy
LT5jb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICAgICAgd2ViR0xDb250ZXh0LT5n
cmFwaGljc0NvbnRleHQzRCgpLT5wYWludFRvQ2FudmFzKG1fcmVuZGVyT3V0cHV0LCB3aWR0aCwg
aGVpZ2h0LCBjYW52YXMtPndpZHRoKCksIGNhbnZhcy0+aGVpZ2h0KCksIGltYWdlQnVmZmVyLT5j
b250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpKTsKICAgICB9CiAjZWxzZQogI2Vycm9yIE11c3Qg
cG9ydCB0byB5b3VyIHBsYXRmb3JtCiAjZW5kaWYKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdD
b250ZXh0KiBjb250ZXh0KQoreworICAgIHBhaW50RnJhbWVidWZmZXJUb0NhbnZhcygwLCBtX2lt
cGwtPndpZHRoKCksIG1faW1wbC0+aGVpZ2h0KCksICFtX2ltcGwtPmdldENvbnRleHRBdHRyaWJ1
dGVzKCkucHJlbXVsdGlwbGllZEFscGhhLCBjb250ZXh0KTsKK30KKworYm9vbCBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dCogY29udGV4dCkKK3sKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCisgICAgaWYgKHBsYXRmb3JtTGF5ZXIoKSkKKyAgICAgICAgcmV0dXJuIHBsYXRmb3JtTGF5
ZXIoKS0+cGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyhjb250ZXh0KTsKKyNlbmRpZgorICAg
IHJldHVybiBmYWxzZTsKK30KKwogUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkKIHsKICAgICBp
ZiAobV9pbXBsLT5nZXRDb250ZXh0QXR0cmlidXRlcygpLnByZW11bHRpcGxpZWRBbHBoYSkKQEAg
LTI4Myw3ICsyOTcsNyBAQCBQYXNzUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdAogICAgIHVuc2lnbmVkIGNo
YXIqIHBpeGVscyA9IGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCktPmRhdGEoKTsKICAgICBzaXpl
X3QgYnVmZmVyU2l6ZSA9IDQgKiBtX2ltcGwtPndpZHRoKCkgKiBtX2ltcGwtPmhlaWdodCgpOwog
Ci0gICAgbV9pbXBsLT5yZWFkQmFja0ZyYW1lYnVmZmVyKHBpeGVscywgYnVmZmVyU2l6ZSk7Cisg
ICAgbV9pbXBsLT5yZWFkQmFja0ZyYW1lYnVmZmVyKHBpeGVscywgYnVmZmVyU2l6ZSwgMCwgbV9p
bXBsLT53aWR0aCgpLCBtX2ltcGwtPmhlaWdodCgpKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgYnVmZmVyU2l6ZTsgaSArPSA0KQogICAgICAgICBzdGQ6OnN3YXAocGl4ZWxzW2ldLCBw
aXhlbHNbaSArIDJdKTsKQEAgLTExNjcsNyArMTE4MSw5IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OmxheWVyQ29tcG9zaXRlZCgpIGNvbnN0CiB9CiAKIERFTEVHQVRFX1RPX0lOVEVSTkFMXzEo
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqKQor
REVMRUdBVEVfVE9fSU5URVJOQUxfNShwYWludEZyYW1lYnVmZmVyVG9DYW52YXMsIGludCwgaW50
LCBpbnQsIGJvb2wsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqKQogREVMRUdBVEVfVE9fSU5URVJO
QUxfUihwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSwgUGFzc1JlZlB0cjxJbWFnZURh
dGE+KQorREVMRUdBVEVfVE9fSU5URVJOQUxfMVIocGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2Fu
dmFzLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiwgYm9vbCkKIAogYm9vbCBHcmFwaGljc0NvbnRl
eHQzRDo6cGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmgKaW5kZXgg
MTZhNjlkNTEyZGZkZWNhYzA0MDRjZWRmM2FlNGUzNDYxYzE4OGM0Yi4uNDE1NGUzOWUwOTNmMWY2
ZWFkYjZlY2Y2OWUxYjUwMGRlYjBkNDE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaApAQCAtODAsOCArODAsMTAg
QEAgcHVibGljOgogICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpOwogCiAgICAgdm9pZCBw
YWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0Kik7Cisg
ICAgdm9pZCBwYWludEZyYW1lYnVmZmVyVG9DYW52YXMoaW50IGZyYW1lYnVmZmVyLCBpbnQgd2lk
dGgsIGludCBoZWlnaHQsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dCopOwogICAgIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNU
b0ltYWdlRGF0YSgpOwogICAgIGJvb2wgcGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIGNvbnN0Owor
ICAgIGJvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQqKTsKIAogICAgIHZvaWQgcHJlcGFyZVRleHR1cmUoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103715</attachid>
            <date>2011-08-11 18:06:52 -0700</date>
            <delta_ts>2011-08-11 18:50:53 -0700</delta_ts>
            <desc>Fix layering issues</desc>
            <filename>bug-65658-20110811180651.patch</filename>
            <type>text/plain</type>
            <size>18999</size>
            <attacher name="John Bauman">jbauman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhZTc0Y2Q2M2QyZWM0MjJjYTI5MTE2OTQyMGJmZWY3ZGIwYTIzMWJkLi41
Zjk1ZjNmYWZhMzAxNWFjNTg0ZTJlMTBjMDY0YjI0MTZjOTIxYzVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjUgQEAKKzIwMTEtMDgtMTEgIEpvaG4gQmF1bWFuICA8amJhdW1hbkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmVhZGJhY2sgY29tcG9zaXRlZCB3ZWJnbCByZXN1bHRzIGZvciBwcmlu
dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2
NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUg
cmVhbCBjb21wb3NpdGVkIHJlc3VsdHMgbWF5IGJlIGxvY2tlZCBpbnNpZGUgdGhlIGNvbXBvc2l0
b3IKKyAgICAgICAgY29udGV4dCdzIHZlcnNpb24gb2YgYSB0ZXh0dXJlIGJlY2F1c2UgdGhlIGRy
YXdpbmcgYnVmZmVyIHdhcworICAgICAgICBhdXRvbWF0aWNhbGx5IGNsZWFyZWQsIHNvIHJlYWQg
ZnJvbSB0aGVyZSB0byBnZXQgdGhlIGFjdHVhbCBwcmVzZW50ZWQKKyAgICAgICAgdmVyc2lvbiB0
byBkcmF3LgorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5z
aW9uczNEQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9X
ZWJHTExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9t
aXVtOjpwYWludFJlbmRlcmVkUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZh
cyk6CisKIDIwMTEtMDgtMTAgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGF1dG8tY29tcGxldGlvbiBmb3Igc3RyaW5nIGxpdGVy
YWxzIGRvZXNuJ3Qgd29yawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggODI3ZDIwMzU3ZDRhZjgzMWJiYTM0ZWU3Yjcw
NDBlN2I3NWRmZGYyYy4uZWQwYzgxYjQwMGUyMTZjMmI4ZTRiNjg3YTI1MDNlMjdiNDgxM2I2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuY3BwCkBAIC01NjYsOSArNTY2LDEwIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpCiB7CiAgICAgLy8gVW50aWwgdGhlIGNh
bnZhcyBpcyB3cml0dGVuIHRvIGJ5IHRoZSBhcHBsaWNhdGlvbiwgdGhlIGNsZWFyIHRoYXQKICAg
ICAvLyBoYXBwZW5lZCBhZnRlciBpdCB3YXMgY29tcG9zaXRlZCBzaG91bGQgYmUgaWdub3JlZCBi
eSB0aGUgY29tcG9zaXRvci4KLSAgICBpZiAobV9jb250ZXh0LT5sYXllckNvbXBvc2l0ZWQoKSAm
JiAhbV9hdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikKKyAgICBpZiAobV9jb250ZXh0
LT5sYXllckNvbXBvc2l0ZWQoKSAmJiAhbV9hdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZl
cikgeworICAgICAgICBtX2NvbnRleHQtPnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyh0
aGlzKTsKICAgICAgICAgY2FudmFzKCktPm1ha2VQcmVzZW50YXRpb25Db3B5KCk7Ci0gICAgZWxz
ZQorICAgIH0gZWxzZQogICAgICAgICBjYW52YXMoKS0+Y2xlYXJQcmVzZW50YXRpb25Db3B5KCk7
CiAgICAgY2xlYXJJZkNvbXBvc2l0ZWQoKTsKICAgICBpZiAoIW1fbWFya2VkQ2FudmFzRGlydHkg
JiYgIW1fbGF5ZXJDbGVhcmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggNWZjNmU2YjFlMjZkMjZhNDhlZmJjMDFm
OTRhMzIxMjYxMzRiY2I4NC4uNjhkNWRkZGY2OTU1NmQzNzkzOGM5NWRiZDBjMzA0MmRhMmIyZTc4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRC5oCkBAIC05Niw2ICs5Niw3IEBAIGNsYXNzIEV4dGVuc2lvbnMzRFF0OwogI2Vu
ZGlmCiBjbGFzcyBIb3N0V2luZG93OwogY2xhc3MgSW1hZ2U7CitjbGFzcyBJbWFnZUJ1ZmZlcjsK
IGNsYXNzIEltYWdlRGF0YTsKICNpZiBVU0UoQ0FJUk8pCiBjbGFzcyBQbGF0Zm9ybUNvbnRleHRD
YWlybzsKQEAgLTc4MCw4ICs3ODEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNoYXBlKGludCB3
aWR0aCwgaW50IGhlaWdodCk7CiAKICNpZiBVU0UoQ0cpCi0gICAgdm9pZCBwYWludFRvQ2FudmFz
KGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBpbnQgaW1hZ2VXaWR0aCwgaW50IGlt
YWdlSGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2FudmFzV2lkdGgsIGludCBj
YW52YXNIZWlnaHQsIENHQ29udGV4dFJlZiBjb250ZXh0KTsKKyAgICBzdGF0aWMgdm9pZCBwYWlu
dFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBpbnQgaW1hZ2VXaWR0
aCwgaW50IGltYWdlSGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNh
bnZhc1dpZHRoLCBpbnQgY2FudmFzSGVpZ2h0LCBDR0NvbnRleHRSZWYpOwogI2VsaWYgUExBVEZP
Uk0oR1RLKQogICAgIHZvaWQgcGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFn
ZVBpeGVscywgaW50IGltYWdlV2lkdGgsIGludCBpbWFnZUhlaWdodCwKICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGNhbnZhc1dpZHRoLCBpbnQgY2FudmFzSGVpZ2h0LCBQbGF0Zm9ybUNvbnRl
eHRDYWlybyogY29udGV4dCk7CkBAIC03OTEsOCArNzkyLDkgQEAgcHVibGljOgogICAgIHZvaWQg
bWFya0xheWVyQ29tcG9zaXRlZCgpOwogICAgIGJvb2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3Q7
CiAKLSAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQqIGNvbnRleHQpOworICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCopOwogICAgIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBw
YWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpOworICAgIGJvb2wgcGFpbnRDb21wb3Np
dGVkUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQqKTsKIAogI2lmIFBMQVRG
T1JNKFFUKQogICAgIGJvb2wgcGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCmluZGV4IDM3NjNmN2I1OTgy
N2EwNWRkMTYwNDYzNmZiYzRhYWM0YzBiZmJlNzQuLjJjZjMzOWY2NTJmZTQ2YjY0Y2U5MjRlYjAx
MjBkNzU4MjkwZmM1MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaApAQCAtMzEs
NiArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQz
REludGVybmFsOworY2xhc3MgSW1hZ2VCdWZmZXI7CiAKIGNsYXNzIEV4dGVuc2lvbnMzRENocm9t
aXVtIDogcHVibGljIEV4dGVuc2lvbnMzRCB7CiBwdWJsaWM6CkBAIC00Miw2ICs0Myw3IEBAIHB1
YmxpYzoKICAgICAvLyAgIEdMX0NIUk9NSVVNX21hcF9zdWIKICAgICAvLyAgIEdMX0NIUk9NSVVN
X3N3YXBidWZmZXJzX2NvbXBsZXRlX2NhbGxiYWNrCiAgICAgLy8gICBHTF9DSFJPTUlVTV9yYXRl
X2xpbWl0X29mZnNjcmVlbl9jb250ZXh0CisgICAgLy8gICBHTF9DSFJPTUlVTV9wYWludF9mcmFt
ZWJ1ZmZlcl9jYW52YXMKIAogICAgIC8vIEV4dGVuc2lvbnMzRCBtZXRob2RzLgogICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcmKTsKQEAgLTc4LDYgKzgwLDkgQEAgcHVibGlj
OgogICAgIC8vIEdMX0NIUk9NSVVNX3JhdGVfbGltaXRfb2Zmc2NyZWVuX2NvbnRleHQKICAgICB2
b2lkIHJhdGVMaW1pdE9mZnNjcmVlbkNvbnRleHRDSFJPTUlVTSgpOwogCisgICAgLy8gR0xfQ0hS
T01JVU1fcGFpbnRfZnJhbWVidWZmZXJfY2FudmFzCisgICAgdm9pZCBwYWludEZyYW1lYnVmZmVy
VG9DYW52YXMoaW50IGZyYW1lYnVmZmVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgSW1hZ2VCdWZmZXIqKTsKKwogcHJpdmF0ZToKICAgICAvLyBJbnN0YW5j
ZXMgb2YgdGhpcyBjbGFzcyBhcmUgc3RyaWN0bHkgb3duZWQgYnkgdGhlIEdyYXBoaWNzQ29udGV4
dDNEIGltcGxlbWVudGF0aW9uIGFuZCBkbyBub3QKICAgICAvLyBuZWVkIHRvIGJlIGluc3RhbnRp
YXRlZCBieSBhbnkgb3RoZXIgY29kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCmlu
ZGV4IDc2MjE3YjRiOWU2Yzk1YWYyZDA4YjQyNWQzYWFjYTI3Y2RmNmVmZjQuLjk1N2E4NmJiOTlj
YzU5MTQ3NjczZWFjMzU3ZjE1Zjc4OTA4ZGU3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9t
aXVtLmNwcApAQCAtOTksNiArOTksMjUgQEAgdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKQogICAgIH0KIH0KIAorYm9vbCBXZWJHTExheWVyQ2hyb21p
dW06OnBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVy
KQoreworICAgIGlmIChtX3RleHR1cmVVcGRhdGVkIHx8ICFsYXllclJlbmRlcmVyKCkgfHwgIWRy
YXdzQ29udGVudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBJbnRTaXplIGZyYW1l
YnVmZmVyU2l6ZSA9IG1fY29udGV4dC0+Z2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKTsKKyAg
ICBBU1NFUlQobGF5ZXJSZW5kZXJlckNvbnRleHQoKSk7CisKKyAgICAvLyBUaGlzIHdvdWxkIGlk
ZWFsbHkgYmUgZG9uZSBpbiB0aGUgd2ViZ2wgY29udGV4dCwgYnV0IHRoYXQgaXNuJ3QgcG9zc2li
bGUgeWV0LgorICAgIFBsYXRmb3JtM0RPYmplY3QgZnJhbWVidWZmZXIgPSBsYXllclJlbmRlcmVy
Q29udGV4dCgpLT5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGxheWVyUmVuZGVyZXJDb250ZXh0
KCktPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIGZyYW1l
YnVmZmVyKTsKKyAgICBsYXllclJlbmRlcmVyQ29udGV4dCgpLT5mcmFtZWJ1ZmZlclRleHR1cmUy
RChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xP
Ul9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZUlk
LCAwKTsKKworICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nh
c3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihsYXllclJlbmRlcmVyQ29udGV4dCgpLT5nZXRFeHRl
bnNpb25zKCkpOworICAgIGV4dGVuc2lvbnMtPnBhaW50RnJhbWVidWZmZXJUb0NhbnZhcyhmcmFt
ZWJ1ZmZlciwgZnJhbWVidWZmZXJTaXplLndpZHRoKCksIGZyYW1lYnVmZmVyU2l6ZS5oZWlnaHQo
KSwgIW1fY29udGV4dC0+Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEs
IGltYWdlQnVmZmVyKTsKKyAgICBsYXllclJlbmRlcmVyQ29udGV4dCgpLT5kZWxldGVGcmFtZWJ1
ZmZlcihmcmFtZWJ1ZmZlcik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgV2ViR0xMYXll
ckNocm9taXVtOjpzZXRUZXh0dXJlVXBkYXRlZCgpCiB7CiAgICAgbV90ZXh0dXJlVXBkYXRlZCA9
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGM0MzQ0MGQ5Nzk1MGQxN2Vm
YWE0MTFjZWEzYzFhOGIzYzc1MTYxY2QuLjI2MzgwNmNlOTYzZmVjOWU1ZTc0YTI5NDNlOWZlNjAx
OTE1YmY0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCkBAIC01Miw2ICs1Miw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKTsKICAgICB2b2lkIHNldFRleHR1
cmVVcGRhdGVkKCk7CisgICAgYm9vbCBwYWludFJlbmRlcmVkUmVzdWx0c1RvQ2FudmFzKEltYWdl
QnVmZmVyKik7CiAKICAgICB2b2lkIHNldENvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQpOwogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCkgeyByZXR1cm4gbV9j
b250ZXh0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAppbmRleCBmN2E3
NmUwYzAxZWQ2MDFmZDM4MTk3YTViMWVmZWE2ZWEyM2NmYTUyLi42OTMyNjhkYjFkOGI3MjEyNjZj
NDdmMDZmZTUyN2VkZjk1YzhkODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5H
TC5jcHAKQEAgLTE1MSw2ICsxNTEsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRS
ZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY28KIH0KICNl
bmRpZgogCitib29sIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9D
YW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCopCit7CisgICAgLy8gTm90IG5lZWRlZCBhdCB0
aGUgbW9tZW50LCBzbyByZXR1cm4gdGhhdCBub3RoaW5nIHdhcyBkb25lLgorICAgIHJldHVybiBm
YWxzZTsKK30KKwogUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dDNEOjpwYWlu
dFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiB7CiAgICAgLy8gUmVhZGluZyBwcmVtdWx0
aXBsaWVkIGFscGhhIHdvdWxkIGludm9sdmUgdW5wcmVtdWx0aXBseWluZywgd2hpY2ggaXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOTI3MjgzOWFjMGU3YWU2MzBiYzRiY2M4YTQ0YzMz
YmY5NzFiMWRkMS4uNmNiZThhN2QxOTIwMGYwZjY4OGFmMzc5NzgwNGU5YmMxMzk3ZTUyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMS0wOC0xMSAgSm9o
biBCYXVtYW4gIDxqYmF1bWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZWFkYmFjayBjb21w
b3NpdGVkIHdlYmdsIHJlc3VsdHMgZm9yIHByaW50aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTY1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciByZWFkaW5nIGZyb20gdGhl
IGNvbXBvc2l0ZWQgdmVyc2lvbiBvZiBhIGNhbnZhcy4KKworICAgICAgICAqIHB1YmxpYy9XZWJH
cmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAqIHNyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RDaHJvbWl1bTo6cGFpbnRGcmFtZWJ1
ZmZlclRvQ2FudmFzKToKKyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGlj
c0NvbnRleHQzREludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OnBhaW50RnJhbWVidWZmZXJUb0NhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludENvbXBv
c2l0ZWRSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cmVzaGFwZSk6CisgICAgICAgICog
c3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaDoKKwogMjAxMS0wOC0xMCAgQW5kcmV5IEtv
c3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFJvbGxl
ZCBERVBTIDk1ODEzOjk2MDA5IHRvIHBpY2sgZGF0YSB1cmwgdGltaW5nIGZpeC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCmlu
ZGV4IDgxYThiZDVlYTJjOTIzOTY0YmI4YTY1YjhjMTZkYzVlMGJhNWQzZjAuLjA3NjJjMmM0YmJm
ZGFlYmNlNWZiZDVjYTQzYzA1Yjg3ZWNiMGUwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtMTM4LDcgKzEzOCw3
IEBAIHB1YmxpYzoKICAgICAvLyB0aGUgbWVtb3J5IHJlZ2lvbiBwb2ludGVkIHRvIGJ5ICJwaXhl
bHMiIHdpdGggc2l6ZSAiYnVmZmVyU2l6ZSIuIEl0IGlzCiAgICAgLy8gZXhwZWN0ZWQgdGhhdCB0
aGUgc3RvcmFnZSBmb3IgInBpeGVscyIgY292ZXJzICg0ICogd2lkdGggKiBoZWlnaHQpIGJ5dGVz
LgogICAgIC8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLgotICAgIHZpcnR1YWwgYm9vbCByZWFk
QmFja0ZyYW1lYnVmZmVyKHVuc2lnbmVkIGNoYXIqIHBpeGVscywgc2l6ZV90IGJ1ZmZlclNpemUp
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZEJhY2tGcmFtZWJ1ZmZlcih1bnNpZ25lZCBjaGFy
KiBwaXhlbHMsIHNpemVfdCBidWZmZXJTaXplLCBXZWJHTElkIGZyYW1lYnVmZmVyLCBpbnQgd2lk
dGgsIGludCBoZWlnaHQpID0gMDsKIAogICAgIC8vIFJldHVybnMgdGhlIGlkIG9mIHRoZSB0ZXh0
dXJlIHdoaWNoIGlzIHVzZWQgZm9yIHN0b3JpbmcgdGhlIGNvbnRlbnRzIG9mCiAgICAgLy8gdGhl
IGZyYW1lYnVmZmVyIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRleHQuIFRoaXMgdGV4dHVyZSBp
cyBhY2Nlc3NpYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRl
bnNpb25zM0RDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlbnNp
b25zM0RDaHJvbWl1bS5jcHAKaW5kZXggMjY4ZjNjNjU2MjMyNDQxNmY5YTFmZjMzYjJkNjljZGE3
OGNhOTZjYy4uYWY4Y2UxMzY5Y2I2NDU3MWE0NjZkN2Q0MWJiY2JiODkyOTExOTZjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVuc2lvbnMzRENocm9taXVtLmNw
cApAQCAtMTI1LDYgKzEyNSwxMSBAQCB2b2lkIEV4dGVuc2lvbnMzRENocm9taXVtOjpyYXRlTGlt
aXRPZmZzY3JlZW5Db250ZXh0Q0hST01JVU0oKQogICAgIG1faW50ZXJuYWwtPnJhdGVMaW1pdE9m
ZnNjcmVlbkNvbnRleHRDSFJPTUlVTSgpOwogfQogCit2b2lkIEV4dGVuc2lvbnMzRENocm9taXVt
OjpwYWludEZyYW1lYnVmZmVyVG9DYW52YXMoaW50IGZyYW1lYnVmZmVyLCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVy
KQoreworICAgIG1faW50ZXJuYWwtPnBhaW50RnJhbWVidWZmZXJUb0NhbnZhcyhmcmFtZWJ1ZmZl
ciwgd2lkdGgsIGhlaWdodCwgcHJlbXVsdGlwbHlBbHBoYSwgaW1hZ2VCdWZmZXIpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21p
dW0uY3BwCmluZGV4IGJhNmU3MDBlOWUyY2QyYTJhMDI2ZWQ4MDIzOTAyMmQ3MmY5NWExNDkuLmZh
YTQyMmIwYzNmOTlkYTIwYzM0MTI4ZjBiYTZjNTEwNWE2NzNiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3Bw
CkBAIC05MSw2ICs5MSw3IEBAIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWwoKQogICAgICwgbV9nckNvbnRleHQoMCkKICNlbGlmIFVTRShDRykKICAg
ICAsIG1fcmVuZGVyT3V0cHV0KDApCisgICAgLCBtX3JlbmRlck91dHB1dFNpemUoMCkKICNlbHNl
CiAjZXJyb3IgTXVzdCBwb3J0IHRvIHlvdXIgcGxhdGZvcm0KICNlbmRpZgpAQCAtMjA1LDE2ICsy
MDYsMTUgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpsYXllckNvbXBvc2l0ZWQo
KSBjb25zdAogICAgIHJldHVybiBtX2xheWVyQ29tcG9zaXRlZDsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNS
ZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0KQordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpwYWludEZyYW1lYnVmZmVyVG9DYW52YXMoaW50IGZyYW1lYnVmZmVyLCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVy
KQogewotICAgIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMgPSBjb250ZXh0LT5jYW52YXMoKTsK
LSAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBjYW52YXMtPmJ1ZmZlcigpOwogICAgIHVu
c2lnbmVkIGNoYXIqIHBpeGVscyA9IDA7CisgICAgdW5zaWduZWQgaW50IGJ1ZmZlclNpemUgPSA0
ICogd2lkdGggKiBoZWlnaHQ7CiAjaWYgVVNFKFNLSUEpCiAgICAgY29uc3QgU2tCaXRtYXAqIGNh
bnZhc0JpdG1hcCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpLT5i
aXRtYXAoKTsKICAgICBjb25zdCBTa0JpdG1hcCogcmVhZGJhY2tCaXRtYXAgPSAwOwogICAgIEFT
U0VSVChjYW52YXNCaXRtYXAtPmNvbmZpZygpID09IFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZp
Zyk7Ci0gICAgaWYgKGNhbnZhc0JpdG1hcC0+d2lkdGgoKSA9PSBtX2ltcGwtPndpZHRoKCkgJiYg
Y2FudmFzQml0bWFwLT5oZWlnaHQoKSA9PSBtX2ltcGwtPmhlaWdodCgpKSB7CisgICAgaWYgKGNh
bnZhc0JpdG1hcC0+d2lkdGgoKSA9PSB3aWR0aCAmJiBjYW52YXNCaXRtYXAtPmhlaWdodCgpID09
IGhlaWdodCkgewogICAgICAgICAvLyBUaGlzIGlzIHRoZSBmYXN0ZXN0IGFuZCBtb3N0IGNvbW1v
biBjYXNlLiBXZSByZWFkIGJhY2sKICAgICAgICAgLy8gZGlyZWN0bHkgaW50byB0aGUgY2FudmFz
J3MgYmFja2luZyBzdG9yZS4KICAgICAgICAgcmVhZGJhY2tCaXRtYXAgPSBjYW52YXNCaXRtYXA7
CkBAIC0yMjMsMTAgKzIyMywxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbgogICAgICAgICAv
LyBXZSBuZWVkIHRvIGFsbG9jYXRlIGEgdGVtcG9yYXJ5IGJpdG1hcCBmb3IgcmVhZGluZyBiYWNr
IHRoZQogICAgICAgICAvLyBwaXhlbCBkYXRhLiBXZSB3aWxsIHRoZW4gdXNlIFNraWEgdG8gcmVz
Y2FsZSB0aGlzIGJpdG1hcCB0bwogICAgICAgICAvLyB0aGUgc2l6ZSBvZiB0aGUgY2FudmFzJ3Mg
YmFja2luZyBzdG9yZS4KLSAgICAgICAgaWYgKG1fcmVzaXppbmdCaXRtYXAud2lkdGgoKSAhPSBt
X2ltcGwtPndpZHRoKCkgfHwgbV9yZXNpemluZ0JpdG1hcC5oZWlnaHQoKSAhPSBtX2ltcGwtPmhl
aWdodCgpKSB7CisgICAgICAgIGlmIChtX3Jlc2l6aW5nQml0bWFwLndpZHRoKCkgIT0gd2lkdGgg
fHwgbV9yZXNpemluZ0JpdG1hcC5oZWlnaHQoKSAhPSBoZWlnaHQpIHsKICAgICAgICAgICAgIG1f
cmVzaXppbmdCaXRtYXAuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW1wbC0+d2lkdGgoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW1wbC0+aGVpZ2h0KCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQpOwogICAgICAgICAgICAgaWYgKCFt
X3Jlc2l6aW5nQml0bWFwLmFsbG9jUGl4ZWxzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CkBAIC0yMzcsMTcgKzIzNywyMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmluZ0Nvbgog
ICAgIFNrQXV0b0xvY2tQaXhlbHMgYml0bWFwTG9jaygqcmVhZGJhY2tCaXRtYXApOwogICAgIHBp
eGVscyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihyZWFkYmFja0JpdG1hcC0+Z2V0UGl4
ZWxzKCkpOwogI2VsaWYgVVNFKENHKQotICAgIGlmIChtX3JlbmRlck91dHB1dCkKLSAgICAgICAg
cGl4ZWxzID0gbV9yZW5kZXJPdXRwdXQ7CisgICAgaWYgKCFtX3JlbmRlck91dHB1dCB8fCBtX3Jl
bmRlck91dHB1dFNpemUgIT0gYnVmZmVyU2l6ZSkgeworICAgICAgICBpZiAobV9yZW5kZXJPdXRw
dXQpIHsKKyAgICAgICAgICAgIGRlbGV0ZVtdIG1fcmVuZGVyT3V0cHV0OworICAgICAgICAgICAg
bV9yZW5kZXJPdXRwdXQgPSAwOworICAgICAgICB9CisgICAgICAgIG1fcmVuZGVyT3V0cHV0ID0g
bmV3IHVuc2lnbmVkIGNoYXJbYnVmZmVyU2l6ZV07CisgICAgICAgIG1fcmVuZGVyT3V0cHV0U2l6
ZSA9IGJ1ZmZlclNpemU7CisgICAgfQorCisgICAgcGl4ZWxzID0gbV9yZW5kZXJPdXRwdXQ7CiAj
ZWxzZQogI2Vycm9yIE11c3QgcG9ydCB0byB5b3VyIHBsYXRmb3JtCiAjZW5kaWYKIAotICAgIG1f
aW1wbC0+cmVhZEJhY2tGcmFtZWJ1ZmZlcihwaXhlbHMsIDQgKiBtX2ltcGwtPndpZHRoKCkgKiBt
X2ltcGwtPmhlaWdodCgpKTsKLQotICAgIGlmICghbV9pbXBsLT5nZXRDb250ZXh0QXR0cmlidXRl
cygpLnByZW11bHRpcGxpZWRBbHBoYSkgewotICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IDQg
KiBtX2ltcGwtPndpZHRoKCkgKiBtX2ltcGwtPmhlaWdodCgpOworICAgIG1faW1wbC0+cmVhZEJh
Y2tGcmFtZWJ1ZmZlcihwaXhlbHMsIDQgKiB3aWR0aCAqIGhlaWdodCwgZnJhbWVidWZmZXIsIHdp
ZHRoLCBoZWlnaHQpOwogCisgICAgaWYgKHByZW11bHRpcGx5QWxwaGEpIHsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBidWZmZXJTaXplOyBpICs9IDQpIHsKICAgICAgICAgICAgIHBp
eGVsc1tpICsgMF0gPSBzdGQ6Om1pbigyNTUsIHBpeGVsc1tpICsgMF0gKiBwaXhlbHNbaSArIDNd
IC8gMjU1KTsKICAgICAgICAgICAgIHBpeGVsc1tpICsgMV0gPSBzdGQ6Om1pbigyNTUsIHBpeGVs
c1tpICsgMV0gKiBwaXhlbHNbaSArIDNdIC8gMjU1KTsKQEAgLTI2NSwxNSArMjcxLDI3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoQ2FudmFzUmVuZGVyaW5nQ29uCiAgICAgICAgIGNhbnZhcy5kcmF3Qml0bWFwUmVjdChtX3Jl
c2l6aW5nQml0bWFwLCAwLCBkc3QpOwogICAgIH0KICNlbGlmIFVTRShDRykKLSAgICBpZiAobV9y
ZW5kZXJPdXRwdXQgJiYgY29udGV4dC0+aXMzZCgpKSB7Ci0gICAgICAgIFdlYkdMUmVuZGVyaW5n
Q29udGV4dCogd2ViR0xDb250ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0
Kj4oY29udGV4dCk7Ci0gICAgICAgIHdlYkdMQ29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+
cGFpbnRUb0NhbnZhcyhtX3JlbmRlck91dHB1dCwgbV9pbXBsLT53aWR0aCgpLCBtX2ltcGwtPmhl
aWdodCgpLCBjYW52YXMtPndpZHRoKCksIGNhbnZhcy0+aGVpZ2h0KCksIGltYWdlQnVmZmVyLT5j
b250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpKTsKLSAgICB9CisgICAgR3JhcGhpY3NDb250ZXh0
M0Q6OnBhaW50VG9DYW52YXMobV9yZW5kZXJPdXRwdXQsIHdpZHRoLCBoZWlnaHQsIGltYWdlQnVm
ZmVyLT53aWR0aCgpLCBpbWFnZUJ1ZmZlci0+aGVpZ2h0KCksIGltYWdlQnVmZmVyLT5jb250ZXh0
KCktPnBsYXRmb3JtQ29udGV4dCgpKTsKICNlbHNlCiAjZXJyb3IgTXVzdCBwb3J0IHRvIHlvdXIg
cGxhdGZvcm0KICNlbmRpZgogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGNvbnRl
eHQpCit7CisgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyID0gY29udGV4dC0+Y2FudmFzKCkt
PmJ1ZmZlcigpOworICAgIHBhaW50RnJhbWVidWZmZXJUb0NhbnZhcygwLCBtX2ltcGwtPndpZHRo
KCksIG1faW1wbC0+aGVpZ2h0KCksICFtX2ltcGwtPmdldENvbnRleHRBdHRyaWJ1dGVzKCkucHJl
bXVsdGlwbGllZEFscGhhLCBpbWFnZUJ1ZmZlcik7Cit9CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQqIGNvbnRleHQpCit7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQor
ICAgIGlmIChwbGF0Zm9ybUxheWVyKCkpCisgICAgICAgIHJldHVybiBwbGF0Zm9ybUxheWVyKCkt
PnBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoY29udGV4dC0+Y2FudmFzKCktPmJ1ZmZlcigp
KTsKKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKK30KKwogUGFzc1JlZlB0cjxJbWFnZURhdGE+
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VE
YXRhKCkKIHsKICAgICBpZiAobV9pbXBsLT5nZXRDb250ZXh0QXR0cmlidXRlcygpLnByZW11bHRp
cGxpZWRBbHBoYSkKQEAgLTI4Myw3ICszMDEsNyBAQCBQYXNzUmVmUHRyPEltYWdlRGF0YT4gR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdAog
ICAgIHVuc2lnbmVkIGNoYXIqIHBpeGVscyA9IGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCktPmRh
dGEoKTsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IDQgKiBtX2ltcGwtPndpZHRoKCkgKiBtX2lt
cGwtPmhlaWdodCgpOwogCi0gICAgbV9pbXBsLT5yZWFkQmFja0ZyYW1lYnVmZmVyKHBpeGVscywg
YnVmZmVyU2l6ZSk7CisgICAgbV9pbXBsLT5yZWFkQmFja0ZyYW1lYnVmZmVyKHBpeGVscywgYnVm
ZmVyU2l6ZSwgMCwgbV9pbXBsLT53aWR0aCgpLCBtX2ltcGwtPmhlaWdodCgpKTsKIAogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgYnVmZmVyU2l6ZTsgaSArPSA0KQogICAgICAgICBzdGQ6OnN3
YXAocGl4ZWxzW2ldLCBwaXhlbHNbaSArIDJdKTsKQEAgLTMwMywxNyArMzIxLDYgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pbXBsLT5yZXNoYXBlKHdpZHRoLCBoZWlnaHQpOwot
Ci0jaWYgVVNFKENHKQotICAgIC8vIE5lZWQgdG8gcmVhbGxvY2F0ZSB0aGUgY2xpZW50LXNpZGUg
YmFja2luZyBzdG9yZS4KLSAgICAvLyBGSVhNRTogbWFrZSB0aGlzIG1vcmUgZWZmaWNpZW50Lgot
ICAgIGlmIChtX3JlbmRlck91dHB1dCkgewotICAgICAgICBkZWxldGVbXSBtX3JlbmRlck91dHB1
dDsKLSAgICAgICAgbV9yZW5kZXJPdXRwdXQgPSAwOwotICAgIH0KLSAgICBpbnQgcm93Qnl0ZXMg
PSB3aWR0aCAqIDQ7Ci0gICAgbV9yZW5kZXJPdXRwdXQgPSBuZXcgdW5zaWduZWQgY2hhcltoZWln
aHQgKiByb3dCeXRlc107Ci0jZW5kaWYgLy8gVVNFKENHKQogfQogCiBJbnRTaXplIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OmdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkgY29uc3QKQEAg
LTExNjgsNiArMTE3NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmxheWVyQ29tcG9zaXRl
ZCgpIGNvbnN0CiAKIERFTEVHQVRFX1RPX0lOVEVSTkFMXzEocGFpbnRSZW5kZXJpbmdSZXN1bHRz
VG9DYW52YXMsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqKQogREVMRUdBVEVfVE9fSU5URVJOQUxf
UihwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSwgUGFzc1JlZlB0cjxJbWFnZURhdGE+
KQorREVMRUdBVEVfVE9fSU5URVJOQUxfMVIocGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFz
LCBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiwgYm9vbCkKIAogYm9vbCBHcmFwaGljc0NvbnRleHQz
RDo6cGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmgKaW5kZXggMTZh
NjlkNTEyZGZkZWNhYzA0MDRjZWRmM2FlNGUzNDYxYzE4OGM0Yi4uMjJjZTdiMWE0YjBlNzcyYzE1
NDAwYTBlODQzZjdhMTVjNjg3M2QxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaApAQCAtODAsOCArODAsMTAgQEAg
cHVibGljOgogICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpOwogCiAgICAgdm9pZCBwYWlu
dFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0Kik7CisgICAg
dm9pZCBwYWludEZyYW1lYnVmZmVyVG9DYW52YXMoaW50IGZyYW1lYnVmZmVyLCBpbnQgd2lkdGgs
IGludCBoZWlnaHQsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgSW1hZ2VCdWZmZXIqKTsKICAgICBQ
YXNzUmVmUHRyPEltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKTsK
ICAgICBib29sIHBhaW50c0ludG9DYW52YXNCdWZmZXIoKSBjb25zdDsKKyAgICBib29sIHBhaW50
Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0Kik7CiAKICAg
ICB2b2lkIHByZXBhcmVUZXh0dXJlKCk7CiAKQEAgLTMxMSw2ICszMTMsNyBAQCBwcml2YXRlOgog
CiAjaWYgVVNFKENHKQogICAgIHVuc2lnbmVkIGNoYXIqIG1fcmVuZGVyT3V0cHV0OworICAgIHVu
c2lnbmVkIGludCBtX3JlbmRlck91dHB1dFNpemU7CiAjZW5kaWYKIAogICAgIHZvaWQgaW5pdGlh
bGl6ZUV4dGVuc2lvbnMoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103722</attachid>
            <date>2011-08-11 18:50:57 -0700</date>
            <delta_ts>2011-08-11 20:32:29 -0700</delta_ts>
            <desc>use OwnArrayPtr</desc>
            <filename>bug-65658-20110811185055.patch</filename>
            <type>text/plain</type>
            <size>19459</size>
            <attacher name="John Bauman">jbauman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhZTc0Y2Q2M2QyZWM0MjJjYTI5MTE2OTQyMGJmZWY3ZGIwYTIzMWJkLi41
Zjk1ZjNmYWZhMzAxNWFjNTg0ZTJlMTBjMDY0YjI0MTZjOTIxYzVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjUgQEAKKzIwMTEtMDgtMTEgIEpvaG4gQmF1bWFuICA8amJhdW1hbkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmVhZGJhY2sgY29tcG9zaXRlZCB3ZWJnbCByZXN1bHRzIGZvciBwcmlu
dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2
NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUg
cmVhbCBjb21wb3NpdGVkIHJlc3VsdHMgbWF5IGJlIGxvY2tlZCBpbnNpZGUgdGhlIGNvbXBvc2l0
b3IKKyAgICAgICAgY29udGV4dCdzIHZlcnNpb24gb2YgYSB0ZXh0dXJlIGJlY2F1c2UgdGhlIGRy
YXdpbmcgYnVmZmVyIHdhcworICAgICAgICBhdXRvbWF0aWNhbGx5IGNsZWFyZWQsIHNvIHJlYWQg
ZnJvbSB0aGVyZSB0byBnZXQgdGhlIGFjdHVhbCBwcmVzZW50ZWQKKyAgICAgICAgdmVyc2lvbiB0
byBkcmF3LgorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5z
aW9uczNEQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9X
ZWJHTExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9t
aXVtOjpwYWludFJlbmRlcmVkUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZh
cyk6CisKIDIwMTEtMDgtMTAgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGF1dG8tY29tcGxldGlvbiBmb3Igc3RyaW5nIGxpdGVy
YWxzIGRvZXNuJ3Qgd29yawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggODI3ZDIwMzU3ZDRhZjgzMWJiYTM0ZWU3Yjcw
NDBlN2I3NWRmZGYyYy4uZWQwYzgxYjQwMGUyMTZjMmI4ZTRiNjg3YTI1MDNlMjdiNDgxM2I2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuY3BwCkBAIC01NjYsOSArNTY2LDEwIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpCiB7CiAgICAgLy8gVW50aWwgdGhlIGNh
bnZhcyBpcyB3cml0dGVuIHRvIGJ5IHRoZSBhcHBsaWNhdGlvbiwgdGhlIGNsZWFyIHRoYXQKICAg
ICAvLyBoYXBwZW5lZCBhZnRlciBpdCB3YXMgY29tcG9zaXRlZCBzaG91bGQgYmUgaWdub3JlZCBi
eSB0aGUgY29tcG9zaXRvci4KLSAgICBpZiAobV9jb250ZXh0LT5sYXllckNvbXBvc2l0ZWQoKSAm
JiAhbV9hdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikKKyAgICBpZiAobV9jb250ZXh0
LT5sYXllckNvbXBvc2l0ZWQoKSAmJiAhbV9hdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZl
cikgeworICAgICAgICBtX2NvbnRleHQtPnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyh0
aGlzKTsKICAgICAgICAgY2FudmFzKCktPm1ha2VQcmVzZW50YXRpb25Db3B5KCk7Ci0gICAgZWxz
ZQorICAgIH0gZWxzZQogICAgICAgICBjYW52YXMoKS0+Y2xlYXJQcmVzZW50YXRpb25Db3B5KCk7
CiAgICAgY2xlYXJJZkNvbXBvc2l0ZWQoKTsKICAgICBpZiAoIW1fbWFya2VkQ2FudmFzRGlydHkg
JiYgIW1fbGF5ZXJDbGVhcmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggNWZjNmU2YjFlMjZkMjZhNDhlZmJjMDFm
OTRhMzIxMjYxMzRiY2I4NC4uNjhkNWRkZGY2OTU1NmQzNzkzOGM5NWRiZDBjMzA0MmRhMmIyZTc4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRC5oCkBAIC05Niw2ICs5Niw3IEBAIGNsYXNzIEV4dGVuc2lvbnMzRFF0OwogI2Vu
ZGlmCiBjbGFzcyBIb3N0V2luZG93OwogY2xhc3MgSW1hZ2U7CitjbGFzcyBJbWFnZUJ1ZmZlcjsK
IGNsYXNzIEltYWdlRGF0YTsKICNpZiBVU0UoQ0FJUk8pCiBjbGFzcyBQbGF0Zm9ybUNvbnRleHRD
YWlybzsKQEAgLTc4MCw4ICs3ODEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNoYXBlKGludCB3
aWR0aCwgaW50IGhlaWdodCk7CiAKICNpZiBVU0UoQ0cpCi0gICAgdm9pZCBwYWludFRvQ2FudmFz
KGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBpbnQgaW1hZ2VXaWR0aCwgaW50IGlt
YWdlSGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2FudmFzV2lkdGgsIGludCBj
YW52YXNIZWlnaHQsIENHQ29udGV4dFJlZiBjb250ZXh0KTsKKyAgICBzdGF0aWMgdm9pZCBwYWlu
dFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBpbnQgaW1hZ2VXaWR0
aCwgaW50IGltYWdlSGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNh
bnZhc1dpZHRoLCBpbnQgY2FudmFzSGVpZ2h0LCBDR0NvbnRleHRSZWYpOwogI2VsaWYgUExBVEZP
Uk0oR1RLKQogICAgIHZvaWQgcGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFn
ZVBpeGVscywgaW50IGltYWdlV2lkdGgsIGludCBpbWFnZUhlaWdodCwKICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGNhbnZhc1dpZHRoLCBpbnQgY2FudmFzSGVpZ2h0LCBQbGF0Zm9ybUNvbnRl
eHRDYWlybyogY29udGV4dCk7CkBAIC03OTEsOCArNzkyLDkgQEAgcHVibGljOgogICAgIHZvaWQg
bWFya0xheWVyQ29tcG9zaXRlZCgpOwogICAgIGJvb2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3Q7
CiAKLSAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQqIGNvbnRleHQpOworICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCopOwogICAgIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBw
YWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpOworICAgIGJvb2wgcGFpbnRDb21wb3Np
dGVkUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQqKTsKIAogI2lmIFBMQVRG
T1JNKFFUKQogICAgIGJvb2wgcGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCmluZGV4IDM3NjNmN2I1OTgy
N2EwNWRkMTYwNDYzNmZiYzRhYWM0YzBiZmJlNzQuLjJjZjMzOWY2NTJmZTQ2YjY0Y2U5MjRlYjAx
MjBkNzU4MjkwZmM1MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaApAQCAtMzEs
NiArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQz
REludGVybmFsOworY2xhc3MgSW1hZ2VCdWZmZXI7CiAKIGNsYXNzIEV4dGVuc2lvbnMzRENocm9t
aXVtIDogcHVibGljIEV4dGVuc2lvbnMzRCB7CiBwdWJsaWM6CkBAIC00Miw2ICs0Myw3IEBAIHB1
YmxpYzoKICAgICAvLyAgIEdMX0NIUk9NSVVNX21hcF9zdWIKICAgICAvLyAgIEdMX0NIUk9NSVVN
X3N3YXBidWZmZXJzX2NvbXBsZXRlX2NhbGxiYWNrCiAgICAgLy8gICBHTF9DSFJPTUlVTV9yYXRl
X2xpbWl0X29mZnNjcmVlbl9jb250ZXh0CisgICAgLy8gICBHTF9DSFJPTUlVTV9wYWludF9mcmFt
ZWJ1ZmZlcl9jYW52YXMKIAogICAgIC8vIEV4dGVuc2lvbnMzRCBtZXRob2RzLgogICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcmKTsKQEAgLTc4LDYgKzgwLDkgQEAgcHVibGlj
OgogICAgIC8vIEdMX0NIUk9NSVVNX3JhdGVfbGltaXRfb2Zmc2NyZWVuX2NvbnRleHQKICAgICB2
b2lkIHJhdGVMaW1pdE9mZnNjcmVlbkNvbnRleHRDSFJPTUlVTSgpOwogCisgICAgLy8gR0xfQ0hS
T01JVU1fcGFpbnRfZnJhbWVidWZmZXJfY2FudmFzCisgICAgdm9pZCBwYWludEZyYW1lYnVmZmVy
VG9DYW52YXMoaW50IGZyYW1lYnVmZmVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgSW1hZ2VCdWZmZXIqKTsKKwogcHJpdmF0ZToKICAgICAvLyBJbnN0YW5j
ZXMgb2YgdGhpcyBjbGFzcyBhcmUgc3RyaWN0bHkgb3duZWQgYnkgdGhlIEdyYXBoaWNzQ29udGV4
dDNEIGltcGxlbWVudGF0aW9uIGFuZCBkbyBub3QKICAgICAvLyBuZWVkIHRvIGJlIGluc3RhbnRp
YXRlZCBieSBhbnkgb3RoZXIgY29kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCmlu
ZGV4IDc2MjE3YjRiOWU2Yzk1YWYyZDA4YjQyNWQzYWFjYTI3Y2RmNmVmZjQuLjk1N2E4NmJiOTlj
YzU5MTQ3NjczZWFjMzU3ZjE1Zjc4OTA4ZGU3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9t
aXVtLmNwcApAQCAtOTksNiArOTksMjUgQEAgdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKQogICAgIH0KIH0KIAorYm9vbCBXZWJHTExheWVyQ2hyb21p
dW06OnBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVy
KQoreworICAgIGlmIChtX3RleHR1cmVVcGRhdGVkIHx8ICFsYXllclJlbmRlcmVyKCkgfHwgIWRy
YXdzQ29udGVudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBJbnRTaXplIGZyYW1l
YnVmZmVyU2l6ZSA9IG1fY29udGV4dC0+Z2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKTsKKyAg
ICBBU1NFUlQobGF5ZXJSZW5kZXJlckNvbnRleHQoKSk7CisKKyAgICAvLyBUaGlzIHdvdWxkIGlk
ZWFsbHkgYmUgZG9uZSBpbiB0aGUgd2ViZ2wgY29udGV4dCwgYnV0IHRoYXQgaXNuJ3QgcG9zc2li
bGUgeWV0LgorICAgIFBsYXRmb3JtM0RPYmplY3QgZnJhbWVidWZmZXIgPSBsYXllclJlbmRlcmVy
Q29udGV4dCgpLT5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGxheWVyUmVuZGVyZXJDb250ZXh0
KCktPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIGZyYW1l
YnVmZmVyKTsKKyAgICBsYXllclJlbmRlcmVyQ29udGV4dCgpLT5mcmFtZWJ1ZmZlclRleHR1cmUy
RChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xP
Ul9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZUlk
LCAwKTsKKworICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nh
c3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihsYXllclJlbmRlcmVyQ29udGV4dCgpLT5nZXRFeHRl
bnNpb25zKCkpOworICAgIGV4dGVuc2lvbnMtPnBhaW50RnJhbWVidWZmZXJUb0NhbnZhcyhmcmFt
ZWJ1ZmZlciwgZnJhbWVidWZmZXJTaXplLndpZHRoKCksIGZyYW1lYnVmZmVyU2l6ZS5oZWlnaHQo
KSwgIW1fY29udGV4dC0+Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEs
IGltYWdlQnVmZmVyKTsKKyAgICBsYXllclJlbmRlcmVyQ29udGV4dCgpLT5kZWxldGVGcmFtZWJ1
ZmZlcihmcmFtZWJ1ZmZlcik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgV2ViR0xMYXll
ckNocm9taXVtOjpzZXRUZXh0dXJlVXBkYXRlZCgpCiB7CiAgICAgbV90ZXh0dXJlVXBkYXRlZCA9
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGM0MzQ0MGQ5Nzk1MGQxN2Vm
YWE0MTFjZWEzYzFhOGIzYzc1MTYxY2QuLjI2MzgwNmNlOTYzZmVjOWU1ZTc0YTI5NDNlOWZlNjAx
OTE1YmY0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCkBAIC01Miw2ICs1Miw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKTsKICAgICB2b2lkIHNldFRleHR1
cmVVcGRhdGVkKCk7CisgICAgYm9vbCBwYWludFJlbmRlcmVkUmVzdWx0c1RvQ2FudmFzKEltYWdl
QnVmZmVyKik7CiAKICAgICB2b2lkIHNldENvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQpOwogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCkgeyByZXR1cm4gbV9j
b250ZXh0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAppbmRleCBmN2E3
NmUwYzAxZWQ2MDFmZDM4MTk3YTViMWVmZWE2ZWEyM2NmYTUyLi42OTMyNjhkYjFkOGI3MjEyNjZj
NDdmMDZmZTUyN2VkZjk1YzhkODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5H
TC5jcHAKQEAgLTE1MSw2ICsxNTEsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRS
ZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY28KIH0KICNl
bmRpZgogCitib29sIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9D
YW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCopCit7CisgICAgLy8gTm90IG5lZWRlZCBhdCB0
aGUgbW9tZW50LCBzbyByZXR1cm4gdGhhdCBub3RoaW5nIHdhcyBkb25lLgorICAgIHJldHVybiBm
YWxzZTsKK30KKwogUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dDNEOjpwYWlu
dFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiB7CiAgICAgLy8gUmVhZGluZyBwcmVtdWx0
aXBsaWVkIGFscGhhIHdvdWxkIGludm9sdmUgdW5wcmVtdWx0aXBseWluZywgd2hpY2ggaXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOTI3MjgzOWFjMGU3YWU2MzBiYzRiY2M4YTQ0YzMz
YmY5NzFiMWRkMS4uNmNiZThhN2QxOTIwMGYwZjY4OGFmMzc5NzgwNGU5YmMxMzk3ZTUyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMS0wOC0xMSAgSm9o
biBCYXVtYW4gIDxqYmF1bWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZWFkYmFjayBjb21w
b3NpdGVkIHdlYmdsIHJlc3VsdHMgZm9yIHByaW50aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTY1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciByZWFkaW5nIGZyb20gdGhl
IGNvbXBvc2l0ZWQgdmVyc2lvbiBvZiBhIGNhbnZhcy4KKworICAgICAgICAqIHB1YmxpYy9XZWJH
cmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAqIHNyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RDaHJvbWl1bTo6cGFpbnRGcmFtZWJ1
ZmZlclRvQ2FudmFzKToKKyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGlj
c0NvbnRleHQzREludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OnBhaW50RnJhbWVidWZmZXJUb0NhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludENvbXBv
c2l0ZWRSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cmVzaGFwZSk6CisgICAgICAgICog
c3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaDoKKwogMjAxMS0wOC0xMCAgQW5kcmV5IEtv
c3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFJvbGxl
ZCBERVBTIDk1ODEzOjk2MDA5IHRvIHBpY2sgZGF0YSB1cmwgdGltaW5nIGZpeC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCmlu
ZGV4IDgxYThiZDVlYTJjOTIzOTY0YmI4YTY1YjhjMTZkYzVlMGJhNWQzZjAuLjA3NjJjMmM0YmJm
ZGFlYmNlNWZiZDVjYTQzYzA1Yjg3ZWNiMGUwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtMTM4LDcgKzEzOCw3
IEBAIHB1YmxpYzoKICAgICAvLyB0aGUgbWVtb3J5IHJlZ2lvbiBwb2ludGVkIHRvIGJ5ICJwaXhl
bHMiIHdpdGggc2l6ZSAiYnVmZmVyU2l6ZSIuIEl0IGlzCiAgICAgLy8gZXhwZWN0ZWQgdGhhdCB0
aGUgc3RvcmFnZSBmb3IgInBpeGVscyIgY292ZXJzICg0ICogd2lkdGggKiBoZWlnaHQpIGJ5dGVz
LgogICAgIC8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLgotICAgIHZpcnR1YWwgYm9vbCByZWFk
QmFja0ZyYW1lYnVmZmVyKHVuc2lnbmVkIGNoYXIqIHBpeGVscywgc2l6ZV90IGJ1ZmZlclNpemUp
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZEJhY2tGcmFtZWJ1ZmZlcih1bnNpZ25lZCBjaGFy
KiBwaXhlbHMsIHNpemVfdCBidWZmZXJTaXplLCBXZWJHTElkIGZyYW1lYnVmZmVyLCBpbnQgd2lk
dGgsIGludCBoZWlnaHQpID0gMDsKIAogICAgIC8vIFJldHVybnMgdGhlIGlkIG9mIHRoZSB0ZXh0
dXJlIHdoaWNoIGlzIHVzZWQgZm9yIHN0b3JpbmcgdGhlIGNvbnRlbnRzIG9mCiAgICAgLy8gdGhl
IGZyYW1lYnVmZmVyIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRleHQuIFRoaXMgdGV4dHVyZSBp
cyBhY2Nlc3NpYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRl
bnNpb25zM0RDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlbnNp
b25zM0RDaHJvbWl1bS5jcHAKaW5kZXggMjY4ZjNjNjU2MjMyNDQxNmY5YTFmZjMzYjJkNjljZGE3
OGNhOTZjYy4uYWY4Y2UxMzY5Y2I2NDU3MWE0NjZkN2Q0MWJiY2JiODkyOTExOTZjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVuc2lvbnMzRENocm9taXVtLmNw
cApAQCAtMTI1LDYgKzEyNSwxMSBAQCB2b2lkIEV4dGVuc2lvbnMzRENocm9taXVtOjpyYXRlTGlt
aXRPZmZzY3JlZW5Db250ZXh0Q0hST01JVU0oKQogICAgIG1faW50ZXJuYWwtPnJhdGVMaW1pdE9m
ZnNjcmVlbkNvbnRleHRDSFJPTUlVTSgpOwogfQogCit2b2lkIEV4dGVuc2lvbnMzRENocm9taXVt
OjpwYWludEZyYW1lYnVmZmVyVG9DYW52YXMoaW50IGZyYW1lYnVmZmVyLCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVy
KQoreworICAgIG1faW50ZXJuYWwtPnBhaW50RnJhbWVidWZmZXJUb0NhbnZhcyhmcmFtZWJ1ZmZl
ciwgd2lkdGgsIGhlaWdodCwgcHJlbXVsdGlwbHlBbHBoYSwgaW1hZ2VCdWZmZXIpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21p
dW0uY3BwCmluZGV4IGJhNmU3MDBlOWUyY2QyYTJhMDI2ZWQ4MDIzOTAyMmQ3MmY5NWExNDkuLjU1
NTEyYjBlNmViNmFlYzA2NGE3NGNiZmYzYTlkODNiM2RkYWRlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3Bw
CkBAIC05MCw3ICs5MCw3IEBAIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWwoKQogI2lmIFVTRShTS0lBKQogICAgICwgbV9nckNvbnRleHQoMCkKICNl
bGlmIFVTRShDRykKLSAgICAsIG1fcmVuZGVyT3V0cHV0KDApCisgICAgLCBtX3JlbmRlck91dHB1
dFNpemUoMCkKICNlbHNlCiAjZXJyb3IgTXVzdCBwb3J0IHRvIHlvdXIgcGxhdGZvcm0KICNlbmRp
ZgpAQCAtOTksMTAgKzk5LDYgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbCgpCiAKIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6On5HcmFwaGlj
c0NvbnRleHQzREludGVybmFsKCkKIHsKLSNpZiBVU0UoQ0cpCi0gICAgaWYgKG1fcmVuZGVyT3V0
cHV0KQotICAgICAgICBkZWxldGVbXSBtX3JlbmRlck91dHB1dDsKLSNlbmRpZgogI2lmIFVTRShT
S0lBKQogICAgIGlmIChtX2dyQ29udGV4dCkgewogICAgICAgICBtX2dyQ29udGV4dC0+Y29udGV4
dERlc3Ryb3llZCgpOwpAQCAtMjA1LDE2ICsyMDEsMTUgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjpsYXllckNvbXBvc2l0ZWQoKSBjb25zdAogICAgIHJldHVybiBtX2xheWVyQ29t
cG9zaXRlZDsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludFJlbmRl
cmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0KQordm9p
ZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludEZyYW1lYnVmZmVyVG9DYW52YXMoaW50
IGZyYW1lYnVmZmVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGJvb2wgcHJlbXVsdGlwbHlBbHBo
YSwgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQogewotICAgIEhUTUxDYW52YXNFbGVtZW50KiBj
YW52YXMgPSBjb250ZXh0LT5jYW52YXMoKTsKLSAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIg
PSBjYW52YXMtPmJ1ZmZlcigpOwogICAgIHVuc2lnbmVkIGNoYXIqIHBpeGVscyA9IDA7CisgICAg
c2l6ZV90IGJ1ZmZlclNpemUgPSA0ICogd2lkdGggKiBoZWlnaHQ7CiAjaWYgVVNFKFNLSUEpCiAg
ICAgY29uc3QgU2tCaXRtYXAqIGNhbnZhc0JpdG1hcCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCkt
PnBsYXRmb3JtQ29udGV4dCgpLT5iaXRtYXAoKTsKICAgICBjb25zdCBTa0JpdG1hcCogcmVhZGJh
Y2tCaXRtYXAgPSAwOwogICAgIEFTU0VSVChjYW52YXNCaXRtYXAtPmNvbmZpZygpID09IFNrQml0
bWFwOjprQVJHQl84ODg4X0NvbmZpZyk7Ci0gICAgaWYgKGNhbnZhc0JpdG1hcC0+d2lkdGgoKSA9
PSBtX2ltcGwtPndpZHRoKCkgJiYgY2FudmFzQml0bWFwLT5oZWlnaHQoKSA9PSBtX2ltcGwtPmhl
aWdodCgpKSB7CisgICAgaWYgKGNhbnZhc0JpdG1hcC0+d2lkdGgoKSA9PSB3aWR0aCAmJiBjYW52
YXNCaXRtYXAtPmhlaWdodCgpID09IGhlaWdodCkgewogICAgICAgICAvLyBUaGlzIGlzIHRoZSBm
YXN0ZXN0IGFuZCBtb3N0IGNvbW1vbiBjYXNlLiBXZSByZWFkIGJhY2sKICAgICAgICAgLy8gZGly
ZWN0bHkgaW50byB0aGUgY2FudmFzJ3MgYmFja2luZyBzdG9yZS4KICAgICAgICAgcmVhZGJhY2tC
aXRtYXAgPSBjYW52YXNCaXRtYXA7CkBAIC0yMjMsMTAgKzIxOCwxMCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKENhbnZhc1Jl
bmRlcmluZ0NvbgogICAgICAgICAvLyBXZSBuZWVkIHRvIGFsbG9jYXRlIGEgdGVtcG9yYXJ5IGJp
dG1hcCBmb3IgcmVhZGluZyBiYWNrIHRoZQogICAgICAgICAvLyBwaXhlbCBkYXRhLiBXZSB3aWxs
IHRoZW4gdXNlIFNraWEgdG8gcmVzY2FsZSB0aGlzIGJpdG1hcCB0bwogICAgICAgICAvLyB0aGUg
c2l6ZSBvZiB0aGUgY2FudmFzJ3MgYmFja2luZyBzdG9yZS4KLSAgICAgICAgaWYgKG1fcmVzaXpp
bmdCaXRtYXAud2lkdGgoKSAhPSBtX2ltcGwtPndpZHRoKCkgfHwgbV9yZXNpemluZ0JpdG1hcC5o
ZWlnaHQoKSAhPSBtX2ltcGwtPmhlaWdodCgpKSB7CisgICAgICAgIGlmIChtX3Jlc2l6aW5nQml0
bWFwLndpZHRoKCkgIT0gd2lkdGggfHwgbV9yZXNpemluZ0JpdG1hcC5oZWlnaHQoKSAhPSBoZWln
aHQpIHsKICAgICAgICAgICAgIG1fcmVzaXppbmdCaXRtYXAuc2V0Q29uZmlnKFNrQml0bWFwOjpr
QVJHQl84ODg4X0NvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1faW1wbC0+d2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1faW1wbC0+aGVpZ2h0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQp
OwogICAgICAgICAgICAgaWYgKCFtX3Jlc2l6aW5nQml0bWFwLmFsbG9jUGl4ZWxzKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMzcsMTcgKzIzMiwxOSBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFz
KENhbnZhc1JlbmRlcmluZ0NvbgogICAgIFNrQXV0b0xvY2tQaXhlbHMgYml0bWFwTG9jaygqcmVh
ZGJhY2tCaXRtYXApOwogICAgIHBpeGVscyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihy
ZWFkYmFja0JpdG1hcC0+Z2V0UGl4ZWxzKCkpOwogI2VsaWYgVVNFKENHKQotICAgIGlmIChtX3Jl
bmRlck91dHB1dCkKLSAgICAgICAgcGl4ZWxzID0gbV9yZW5kZXJPdXRwdXQ7CisgICAgaWYgKCFt
X3JlbmRlck91dHB1dCB8fCBtX3JlbmRlck91dHB1dFNpemUgIT0gYnVmZmVyU2l6ZSkgeworICAg
ICAgICBtX3JlbmRlck91dHB1dCA9IGFkb3B0QXJyYXlQdHIobmV3IHVuc2lnbmVkIGNoYXJbYnVm
ZmVyU2l6ZV0pOworICAgICAgICBtX3JlbmRlck91dHB1dFNpemUgPSBidWZmZXJTaXplOworICAg
IH0KKworICAgIHBpeGVscyA9IG1fcmVuZGVyT3V0cHV0LmdldCgpOwogI2Vsc2UKICNlcnJvciBN
dXN0IHBvcnQgdG8geW91ciBwbGF0Zm9ybQogI2VuZGlmCiAKLSAgICBtX2ltcGwtPnJlYWRCYWNr
RnJhbWVidWZmZXIocGl4ZWxzLCA0ICogbV9pbXBsLT53aWR0aCgpICogbV9pbXBsLT5oZWlnaHQo
KSk7Ci0KLSAgICBpZiAoIW1faW1wbC0+Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBs
aWVkQWxwaGEpIHsKLSAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSA0ICogbV9pbXBsLT53aWR0
aCgpICogbV9pbXBsLT5oZWlnaHQoKTsKKyAgICBtX2ltcGwtPnJlYWRCYWNrRnJhbWVidWZmZXIo
cGl4ZWxzLCA0ICogd2lkdGggKiBoZWlnaHQsIGZyYW1lYnVmZmVyLCB3aWR0aCwgaGVpZ2h0KTsK
IAorICAgIGlmIChwcmVtdWx0aXBseUFscGhhKSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgYnVmZmVyU2l6ZTsgaSArPSA0KSB7CiAgICAgICAgICAgICBwaXhlbHNbaSArIDBdID0g
c3RkOjptaW4oMjU1LCBwaXhlbHNbaSArIDBdICogcGl4ZWxzW2kgKyAzXSAvIDI1NSk7CiAgICAg
ICAgICAgICBwaXhlbHNbaSArIDFdID0gc3RkOjptaW4oMjU1LCBwaXhlbHNbaSArIDFdICogcGl4
ZWxzW2kgKyAzXSAvIDI1NSk7CkBAIC0yNjUsMTUgKzI2MiwyNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRl
cmluZ0NvbgogICAgICAgICBjYW52YXMuZHJhd0JpdG1hcFJlY3QobV9yZXNpemluZ0JpdG1hcCwg
MCwgZHN0KTsKICAgICB9CiAjZWxpZiBVU0UoQ0cpCi0gICAgaWYgKG1fcmVuZGVyT3V0cHV0ICYm
IGNvbnRleHQtPmlzM2QoKSkgewotICAgICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIHdlYkdM
Q29udGV4dCA9IHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KGNvbnRleHQpOwot
ICAgICAgICB3ZWJHTENvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCktPnBhaW50VG9DYW52YXMo
bV9yZW5kZXJPdXRwdXQsIG1faW1wbC0+d2lkdGgoKSwgbV9pbXBsLT5oZWlnaHQoKSwgY2FudmFz
LT53aWR0aCgpLCBjYW52YXMtPmhlaWdodCgpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLT5wbGF0
Zm9ybUNvbnRleHQoKSk7Ci0gICAgfQorICAgIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFRvQ2Fu
dmFzKHBpeGVscywgd2lkdGgsIGhlaWdodCwgaW1hZ2VCdWZmZXItPndpZHRoKCksIGltYWdlQnVm
ZmVyLT5oZWlnaHQoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCkp
OwogI2Vsc2UKICNlcnJvciBNdXN0IHBvcnQgdG8geW91ciBwbGF0Zm9ybQogI2VuZGlmCiB9CiAK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9D
YW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBJbWFnZUJ1ZmZl
ciogaW1hZ2VCdWZmZXIgPSBjb250ZXh0LT5jYW52YXMoKS0+YnVmZmVyKCk7CisgICAgcGFpbnRG
cmFtZWJ1ZmZlclRvQ2FudmFzKDAsIG1faW1wbC0+d2lkdGgoKSwgbV9pbXBsLT5oZWlnaHQoKSwg
IW1faW1wbC0+Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEsIGltYWdl
QnVmZmVyKTsKK30KKworYm9vbCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludENvbXBv
c2l0ZWRSZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKK3sK
KyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgaWYgKHBsYXRmb3JtTGF5ZXIo
KSkKKyAgICAgICAgcmV0dXJuIHBsYXRmb3JtTGF5ZXIoKS0+cGFpbnRSZW5kZXJlZFJlc3VsdHNU
b0NhbnZhcyhjb250ZXh0LT5jYW52YXMoKS0+YnVmZmVyKCkpOworI2VuZGlmCisgICAgcmV0dXJu
IGZhbHNlOworfQorCiBQYXNzUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKQogewogICAgIGlmIChtX2lt
cGwtPmdldENvbnRleHRBdHRyaWJ1dGVzKCkucHJlbXVsdGlwbGllZEFscGhhKQpAQCAtMjgzLDcg
KzI5Miw3IEBAIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0CiAgICAgdW5zaWduZWQgY2hhciogcGl4
ZWxzID0gaW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKS0+ZGF0YSgpOwogICAgIHNpemVfdCBidWZm
ZXJTaXplID0gNCAqIG1faW1wbC0+d2lkdGgoKSAqIG1faW1wbC0+aGVpZ2h0KCk7CiAKLSAgICBt
X2ltcGwtPnJlYWRCYWNrRnJhbWVidWZmZXIocGl4ZWxzLCBidWZmZXJTaXplKTsKKyAgICBtX2lt
cGwtPnJlYWRCYWNrRnJhbWVidWZmZXIocGl4ZWxzLCBidWZmZXJTaXplLCAwLCBtX2ltcGwtPndp
ZHRoKCksIG1faW1wbC0+aGVpZ2h0KCkpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBi
dWZmZXJTaXplOyBpICs9IDQpCiAgICAgICAgIHN0ZDo6c3dhcChwaXhlbHNbaV0sIHBpeGVsc1tp
ICsgMl0pOwpAQCAtMzAzLDE3ICszMTIsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgICAgICByZXR1cm47CiAKICAg
ICBtX2ltcGwtPnJlc2hhcGUod2lkdGgsIGhlaWdodCk7Ci0KLSNpZiBVU0UoQ0cpCi0gICAgLy8g
TmVlZCB0byByZWFsbG9jYXRlIHRoZSBjbGllbnQtc2lkZSBiYWNraW5nIHN0b3JlLgotICAgIC8v
IEZJWE1FOiBtYWtlIHRoaXMgbW9yZSBlZmZpY2llbnQuCi0gICAgaWYgKG1fcmVuZGVyT3V0cHV0
KSB7Ci0gICAgICAgIGRlbGV0ZVtdIG1fcmVuZGVyT3V0cHV0OwotICAgICAgICBtX3JlbmRlck91
dHB1dCA9IDA7Ci0gICAgfQotICAgIGludCByb3dCeXRlcyA9IHdpZHRoICogNDsKLSAgICBtX3Jl
bmRlck91dHB1dCA9IG5ldyB1bnNpZ25lZCBjaGFyW2hlaWdodCAqIHJvd0J5dGVzXTsKLSNlbmRp
ZiAvLyBVU0UoQ0cpCiB9CiAKIEludFNpemUgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0
SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSBjb25zdApAQCAtMTE2OCw2ICsxMTY2LDcgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHQzRDo6bGF5ZXJDb21wb3NpdGVkKCkgY29uc3QKIAogREVMRUdBVEVf
VE9fSU5URVJOQUxfMShwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcywgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dCopCiBERUxFR0FURV9UT19JTlRFUk5BTF9SKHBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvSW1hZ2VEYXRhLCBQYXNzUmVmUHRyPEltYWdlRGF0YT4pCitERUxFR0FURV9UT19JTlRFUk5B
TF8xUihwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMsIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQqLCBib29sKQogCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludHNJbnRvQ2FudmFzQnVm
ZmVyKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaAppbmRleCAxNmE2OWQ1MTJkZmRlY2FjMDQwNGNlZGYz
YWU0ZTM0NjFjMTg4YzRiLi5mZjViYzllZGRjMjc2MzE4YjY5NDczY2JjZDUzMTI1ZTBjNThhZmRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQz
REludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNE
Q2hyb21pdW0uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgogI2lmIFVTRShTS0lBKQogI2luY2x1ZGUgIlNrQml0bWFwLmgiCkBAIC04MCw4
ICs4MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7CiAKICAg
ICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQqKTsKKyAgICB2b2lkIHBhaW50RnJhbWVidWZmZXJUb0NhbnZhcyhpbnQgZnJhbWVidWZmZXIs
IGludCB3aWR0aCwgaW50IGhlaWdodCwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBJbWFnZUJ1ZmZl
ciopOwogICAgIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0lt
YWdlRGF0YSgpOwogICAgIGJvb2wgcGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIGNvbnN0OworICAg
IGJvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQqKTsKIAogICAgIHZvaWQgcHJlcGFyZVRleHR1cmUoKTsKIApAQCAtMzEwLDcgKzMxMyw4IEBA
IHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFVTRShDRykKLSAgICB1bnNpZ25lZCBjaGFyKiBtX3Jl
bmRlck91dHB1dDsKKyAgICBPd25BcnJheVB0cjx1bnNpZ25lZCBjaGFyPiBtX3JlbmRlck91dHB1
dDsKKyAgICBzaXplX3QgbV9yZW5kZXJPdXRwdXRTaXplOwogI2VuZGlmCiAKICAgICB2b2lkIGlu
aXRpYWxpemVFeHRlbnNpb25zKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>