<?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>47501</bug_id>
          
          <creation_ts>2010-10-11 13:10:41 -0700</creation_ts>
          <short_desc>Manage DrawingBuffer lifetime in GraphicsContext3D</short_desc>
          <delta_ts>2010-10-12 17:54:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>47379</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Marrin">cmarrin</reporter>
          <assigned_to name="Chris Marrin">cmarrin</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>292623</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-10-11 13:10:41 -0700</bug_when>
    <thetext>This is part of https://bugs.webkit.org/show_bug.cgi?id=47379. Move creation of DrawingBuffer to GraphicsContext3D, keep a list of DrawingBuffers and manage their lifetime to avoid dangling pointers. DrawingBuffer for Mac is still not completely implemented and GraphicsContext3D still creates its own &quot;drawing buffer&quot; for use by WebGL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292628</commentid>
    <comment_count>1</comment_count>
      <attachid>70462</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-10-11 13:30:49 -0700</bug_when>
    <thetext>Created attachment 70462
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292633</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-11 13:46:19 -0700</bug_when>
    <thetext>Attachment 70462 did not build on chromium:
Build output: http://queues.webkit.org/results/4324027</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292635</commentid>
    <comment_count>3</comment_count>
      <attachid>70464</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-10-11 13:49:02 -0700</bug_when>
    <thetext>Created attachment 70464
Patch fixing Chromium build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292641</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-11 14:03:24 -0700</bug_when>
    <thetext>Attachment 70464 did not build on chromium:
Build output: http://queues.webkit.org/results/4355019</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292646</commentid>
    <comment_count>5</comment_count>
      <attachid>70466</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-10-11 14:14:54 -0700</bug_when>
    <thetext>Created attachment 70466
Patch with more Chromium fixes and added m_context null checks to DrawingBuffer functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292653</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-11 14:27:08 -0700</bug_when>
    <thetext>Attachment 70466 did not build on chromium:
Build output: http://queues.webkit.org/results/4343025</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292660</commentid>
    <comment_count>7</comment_count>
      <attachid>70468</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-10-11 14:32:09 -0700</bug_when>
    <thetext>Created attachment 70468
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292661</commentid>
    <comment_count>8</comment_count>
      <attachid>70469</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-10-11 14:33:13 -0700</bug_when>
    <thetext>Created attachment 70469
Patch adding removeDrawingBuffer calls and fixing more Chromium build problems</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292671</commentid>
    <comment_count>9</comment_count>
      <attachid>70473</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-10-11 14:41:50 -0700</bug_when>
    <thetext>Created attachment 70473
Patch adding protection against null m_context in DrawingBuffer ctors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292677</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-11 14:55:34 -0700</bug_when>
    <thetext>Attachment 70469 did not build on chromium:
Build output: http://queues.webkit.org/results/4369015</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292693</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-11 15:13:55 -0700</bug_when>
    <thetext>Attachment 70473 did not build on chromium:
Build output: http://queues.webkit.org/results/4336025</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292711</commentid>
    <comment_count>12</comment_count>
      <attachid>70480</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-10-11 15:30:06 -0700</bug_when>
    <thetext>Created attachment 70480
Patch fixing another Chromium build issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292717</commentid>
    <comment_count>13</comment_count>
      <attachid>70483</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-10-11 15:37:23 -0700</bug_when>
    <thetext>Created attachment 70483
Patch fixing merge conflicts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292811</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-11 18:27:01 -0700</bug_when>
    <thetext>Attachment 70483 did not build on chromium:
Build output: http://queues.webkit.org/results/4304034</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292977</commentid>
    <comment_count>15</comment_count>
      <attachid>70537</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-10-12 09:54:42 -0700</bug_when>
    <thetext>Created attachment 70537
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292981</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-12 10:05:39 -0700</bug_when>
    <thetext>Attachment 70537 did not build on mac:
Build output: http://queues.webkit.org/results/4286037</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292982</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-12 10:09:25 -0700</bug_when>
    <thetext>Attachment 70537 did not build on chromium:
Build output: http://queues.webkit.org/results/4289034</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292992</commentid>
    <comment_count>18</comment_count>
      <attachid>70542</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-10-12 10:39:06 -0700</bug_when>
    <thetext>Created attachment 70542
Patch gets rid of const on platformLayer() so Chromium builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293167</commentid>
    <comment_count>19</comment_count>
      <attachid>70571</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-10-12 16:16:00 -0700</bug_when>
    <thetext>Created attachment 70571
Patch using ref counting rather than weak pointers (please hold review)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293176</commentid>
    <comment_count>20</comment_count>
      <attachid>70571</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-12 16:30:29 -0700</bug_when>
    <thetext>Comment on attachment 70571
Patch using ref counting rather than weak pointers (please hold review)

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

&gt; WebCore/platform/graphics/GraphicsContext3D.h:442
&gt; +    static PassRefPtr&lt;GraphicsContext3D&gt; create(Attributes attrs, HostWindow* hostWindow, RenderStyle renderStyle = RenderOffscreen);

The argument names here are not helpful and should be omitted.

&gt; WebCore/platform/graphics/gpu/DrawingBuffer.cpp:42
&gt; +    return (drawingBuffer-&gt;m_context) ? drawingBuffer : 0;

Should be drawingBuffer.release() rather than drawingBuffer.

&gt; WebCore/platform/graphics/gpu/DrawingBuffer.cpp:55
&gt; +    m_context = 0;

Should use clear() to clear RefPtr rather than assignment to 0.

&gt; WebCore/platform/graphics/gpu/DrawingBuffer.h:65
&gt; +     // Clear all resources from this object, as well as context. Called when context is destroyed
&gt; +    // to prevent invalid accesses to the resources.
&gt; +    void clear();

The first line of the comment is indented incorrectly.

&gt; WebCore/platform/graphics/gpu/DrawingBuffer.h:88
&gt; +protected:
&gt; +    static PassRefPtr&lt;DrawingBuffer&gt; create(PassRefPtr&lt;GraphicsContext3D&gt;, const IntSize&amp;);

Why protected rather than private?

&gt; WebCore/platform/graphics/gpu/SharedGraphicsContext3D.cpp:64
&gt; -    return adoptRef(new SharedGraphicsContext3D(context.release(), solidFillShader.release(), texShader.release()));
&gt; +    return adoptRef(new SharedGraphicsContext3D(context, solidFillShader.release(), texShader.release()));

This need not be changed: A call to release() here is still a good idea. It will avoid a bit of reference count churn.

&gt; WebCore/platform/graphics/gpu/mac/DrawingBufferMac.mm:63
&gt; +    if (!m_context)
&gt; +        return;
&gt; +        
&gt; +    clear();

Since the clear() function is already safe to call if m_context is 0, I suggest omitting the if statement and early return here.

&gt; WebCore/platform/graphics/mac/GraphicsContext3DMac.mm:86
&gt; -    OwnPtr&lt;GraphicsContext3D&gt; context(new GraphicsContext3D(attrs, hostWindow, false));
&gt; -    return context-&gt;m_contextObj ? context.release() : 0;
&gt; +    RefPtr&lt;GraphicsContext3D&gt; context = adoptRef(new GraphicsContext3D(attrs, hostWindow, false));
&gt; +    return context-&gt;m_contextObj ? context : 0;

No reason to remove the release() call here. Including it reduces the reference count churn a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293183</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-10-12 16:44:48 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; ...
&gt; &gt; WebCore/platform/graphics/gpu/DrawingBuffer.h:88
&gt; &gt; +protected:
&gt; &gt; +    static PassRefPtr&lt;DrawingBuffer&gt; create(PassRefPtr&lt;GraphicsContext3D&gt;, const IntSize&amp;);
&gt; 
&gt; Why protected rather than private?

This create method is used by GraphicsContext3D, which is a friend, so it has to be protected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293199</commentid>
    <comment_count>22</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-10-12 17:01:12 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; ...
&gt; &gt; &gt; WebCore/platform/graphics/gpu/DrawingBuffer.h:88
&gt; &gt; &gt; +protected:
&gt; &gt; &gt; +    static PassRefPtr&lt;DrawingBuffer&gt; create(PassRefPtr&lt;GraphicsContext3D&gt;, const IntSize&amp;);
&gt; &gt; 
&gt; &gt; Why protected rather than private?
&gt; 
&gt; This create method is used by GraphicsContext3D, which is a friend, so it has to be protected.

I realize now that friends can access private members. So I will make this change. I&apos;m not sure where I got the outdated notion that friends could only access protected members.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293210</commentid>
    <comment_count>23</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-10-12 17:18:26 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/69619</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293219</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-12 17:41:18 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/69619 might have broken Chromium Win Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293229</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-12 17:54:09 -0700</bug_when>
    <thetext>Attachment 70571 did not build on chromium:
Build output: http://queues.webkit.org/results/4392002</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70462</attachid>
            <date>2010-10-11 13:30:49 -0700</date>
            <delta_ts>2010-10-11 13:48:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47501-20101011133048.patch</filename>
            <type>text/plain</type>
            <size>13368</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTUyMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMTAtMTAtMTEgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1h
bmFnZSBEcmF3aW5nQnVmZmVyIGxpZmV0aW1lIGluIEdyYXBoaWNzQ29udGV4dDNECisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzUwMQorCisgICAgICAg
ICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRHJhd2luZ0J1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cmVtb3ZlRHJhd2luZ0J1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJEcmF3aW5nQnVm
ZmVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2VuZXJhdGVDb2xvclRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6RHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpEcmF3aW5nQnVmZmVyOjp+RHJhd2luZ0J1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2lu
Z0J1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmNsZWFy
KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmJpbmQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpE
cmF3aW5nQnVmZmVyOjpncmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RHJhd2luZ0J1ZmZlcjo6fkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2lu
Z0J1ZmZlcjo6cGxhdGZvcm1MYXllcik6CisKIDIwMTAtMTAtMTEgIEJyZW50IEZ1bGdoYW0gIDxi
ZnVsZ2hhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgV2luQ2Fpcm8gYnVpbGQg
Zml4ZXMuCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCShyZXZpc2lvbiA2OTMxMykKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDcgKzEzMSw3
IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Q2FudmFzUmVuZGVyaW4KICAgICBtX2NvbnRl
eHQzRCA9IHAtPnNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKCk7CiAgICAgaWYgKG1fY29udGV4dDNE
KSB7CiAgICAgICAgIGlmIChHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpKSB7
Ci0gICAgICAgICAgICBtX2RyYXdpbmdCdWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUobV9j
b250ZXh0M0QuZ2V0KCksIEludFNpemUoY2FudmFzLT53aWR0aCgpLCBjYW52YXMtPmhlaWdodCgp
KSk7CisgICAgICAgICAgICBtX2RyYXdpbmdCdWZmZXIgPSBtX2NvbnRleHQzRC0+Z3JhcGhpY3ND
b250ZXh0M0QoKS0+Y3JlYXRlRHJhd2luZ0J1ZmZlcihJbnRTaXplKGNhbnZhcy0+d2lkdGgoKSwg
Y2FudmFzLT5oZWlnaHQoKSkpOwogICAgICAgICAgICAgYy0+c2V0U2hhcmVkR3JhcGhpY3NDb250
ZXh0M0QobV9jb250ZXh0M0QuZ2V0KCksIG1fZHJhd2luZ0J1ZmZlci5nZXQoKSwgSW50U2l6ZShj
YW52YXMtPndpZHRoKCksIGNhbnZhcy0+aGVpZ2h0KCkpKTsKICAgICAgICAgfQogICAgIH0KSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3Bw
CShyZXZpc2lvbiA2OTMxMykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0M0QuaCIKIAogI2luY2x1ZGUgIkFycmF5QnVmZmVyVmlldy5oIgorI2lu
Y2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIklt
YWdlRGF0YS5oIgogCkBAIC00MSw2ICs0MiwyNiBAQCBzdGF0aWMgdWludDhfdCBjb252ZXJ0Q29s
b3IxNlRvOCh1aW50MTZfCiAgICAgcmV0dXJuIHZhbHVlID4+IDg7CiB9CiAKK1Bhc3NPd25QdHI8
RHJhd2luZ0J1ZmZlcj4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZURyYXdpbmdCdWZmZXIoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBPd25QdHI8RHJhd2luZ0J1ZmZlcj4gZHJhd2luZ0J1
ZmZlciA9IERyYXdpbmdCdWZmZXI6OmNyZWF0ZSh0aGlzLCBzaXplKTsKKyAgICBtX2RyYXdpbmdC
dWZmZXJzLmFkZChkcmF3aW5nQnVmZmVyLmdldCgpKTsKKyAgICByZXR1cm4gZHJhd2luZ0J1ZmZl
ci5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbW92ZURyYXdpbmdC
dWZmZXIoRHJhd2luZ0J1ZmZlciogZHJhd2luZ0J1ZmZlcikKK3sKKyAgICBtX2RyYXdpbmdCdWZm
ZXJzLnJlbW92ZShkcmF3aW5nQnVmZmVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Y2xlYXJEcmF3aW5nQnVmZmVycygpCit7CisgICAgSGFzaFNldDxEcmF3aW5nQnVmZmVyKj46Oml0
ZXJhdG9yIGVuZCA9IG1fZHJhd2luZ0J1ZmZlcnMuZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PERy
YXdpbmdCdWZmZXIqPjo6aXRlcmF0b3IgaXQgPSBtX2RyYXdpbmdCdWZmZXJzLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkKKyAgICAgICAgKCppdCktPmNsZWFyKCk7Cit9CisKKwogYm9vbCBHcmFw
aGljc0NvbnRleHQzRDo6Y29tcHV0ZUZvcm1hdEFuZFR5cGVQYXJhbWV0ZXJzKHVuc2lnbmVkIGlu
dCBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyogY29tcG9uZW50c1BlclBp
eGVsLApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaAkocmV2aXNpb24gNjkzMTMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDYgQEAKICNpZm5kZWYg
R3JhcGhpY3NDb250ZXh0M0RfaAogI2RlZmluZSBHcmFwaGljc0NvbnRleHQzRF9oCiAKLSNpZiBQ
TEFURk9STShNQUMpCi0jaW5jbHVkZSAiQU5HTEVXZWJLaXRCcmlkZ2UuaCIKLSNlbmRpZgogI2lu
Y2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCkBA
IC00Myw2ICs0MCw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlICJB
TkdMRVdlYktpdEJyaWRnZS5oIgogI2luY2x1ZGUgPE9wZW5HTC9PcGVuR0wuaD4KICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTc4LDYgKzc2LDcgQEAgY29uc3QgUGxhdGZvcm0zRE9i
amVjdCBOdWxsUGxhdGZvcm0zRE9iagogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDYW52
YXNSZW5kZXJpbmdDb250ZXh0OworY2xhc3MgRHJhd2luZ0J1ZmZlcjsKIGNsYXNzIEhvc3RXaW5k
b3c7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIEltYWdlRGF0YTsKQEAgLTQ0Miw3ICs0NDEsNyBAQCBw
dWJsaWM6CiAgICAgfTsKIAogICAgIHN0YXRpYyBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiBjcmVhdGUoQXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgUmVuZGVy
U3R5bGUgcmVuZGVyU3R5bGUgPSBSZW5kZXJPZmZzY3JlZW4pOwotICAgIHZpcnR1YWwgfkdyYXBo
aWNzQ29udGV4dDNEKCk7CisgICAgfkdyYXBoaWNzQ29udGV4dDNEKCk7CiAKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUdyYXBoaWNzQ29u
dGV4dDNEKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0T2JqOyB9CkBAIC00NjksNiArNDY4LDkg
QEAgcHVibGljOgogI2VuZGlmCiAgICAgdm9pZCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKIAorICAg
IFBhc3NPd25QdHI8RHJhd2luZ0J1ZmZlcj4gY3JlYXRlRHJhd2luZ0J1ZmZlcihjb25zdCBJbnRT
aXplJiA9IEludFNpemUoKSk7CisgICAgdm9pZCByZW1vdmVEcmF3aW5nQnVmZmVyKERyYXdpbmdC
dWZmZXIqKTsKKyAgICAKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKENIUk9NSVVNKQog
ICAgIC8vIFdpdGggbXVsdGlzYW1wbGluZyBvbiwgYmxpdCBmcm9tIG11bHRpc2FtcGxlRkJPIHRv
IHJlZ3VsYXIgRkJPLgogICAgIHZvaWQgcHJlcGFyZVRleHR1cmUoKTsKQEAgLTc5Nyw2ICs3OTks
OCBAQCBwdWJsaWM6CiAgIHByaXZhdGU6CiAgICAgR3JhcGhpY3NDb250ZXh0M0QoQXR0cmlidXRl
cyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgYm9vbCByZW5kZXJEaXJlY3RseVRvSG9z
dFdpbmRvdyk7CiAKKyAgICB2b2lkIGNsZWFyRHJhd2luZ0J1ZmZlcnMoKTsKKyAgICAKICAgICAv
LyBFYWNoIHBsYXRmb3JtIG11c3QgcHJvdmlkZSBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIG1l
dGhvZC4KICAgICAvLwogICAgIC8vIEdldHMgdGhlIGRhdGEgZm9yIHRoZSBnaXZlbiBJbWFnZSBp
bnRvIG91dHB1dFZlY3RvciBpbiB0aGUKQEAgLTg1Myw2ICs4NTcsOCBAQCBwdWJsaWM6CiAKICAg
ICBpbnQgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodDsKIAorICAgIEhhc2hTZXQ8RHJh
d2luZ0J1ZmZlcio+IG1fZHJhd2luZ0J1ZmZlcnM7CisKICNpZiBQTEFURk9STShNQUMpCiAgICAg
dHlwZWRlZiBzdHJ1Y3QgewogICAgICAgICBTdHJpbmcgc291cmNlOwpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZl
ckNocm9taXVtLmNwcAkocmV2aXNpb24gNjkzMTMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDcgKzQ4LDcgQEAgc3RydWN0IERyYXdpbmdCdWZmZXJJbnRlcm5hbCB7CiAjZW5kaWYKIH07
CiAKLXN0YXRpYyB1bnNpZ25lZCBnZW5lcmF0ZUNvbG9yVGV4dHVyZShTaGFyZWRHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3N0YXRpYyB1bnNpZ25lZCBn
ZW5lcmF0ZUNvbG9yVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50
U2l6ZSYgc2l6ZSkKIHsKICAgICB1bnNpZ25lZCBvZmZzY3JlZW5Db2xvclRleHR1cmUgPSBjb250
ZXh0LT5jcmVhdGVUZXh0dXJlKCk7CiAgICAgaWYgKCFvZmZzY3JlZW5Db2xvclRleHR1cmUpCkBA
IC02NiwxMyArNjYsMTMgQEAgc3RhdGljIHVuc2lnbmVkIGdlbmVyYXRlQ29sb3JUZXh0dXJlKFNo
YQogfQogCiAKLURyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIoU2hhcmVkR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFNpemUmIHNpemUsIHVuc2lnbmVkIGZyYW1lYnVmZmVy
KQorRHJhd2luZ0J1ZmZlcjo6RHJhd2luZ0J1ZmZlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwg
bV9zaXplKHNpemUpCi0gICAgLCBtX2ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKQorICAgICwgbV9m
Ym8oY29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKSkKICAgICAsIG1faW50ZXJuYWwobmV3IERy
YXdpbmdCdWZmZXJJbnRlcm5hbCkKIHsKLSAgICBjb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoZnJh
bWVidWZmZXIpOworICAgIGNvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihtX2Zibyk7CiAgICAgbV9p
bnRlcm5hbC0+b2Zmc2NyZWVuQ29sb3JUZXh0dXJlID0gZ2VuZXJhdGVDb2xvclRleHR1cmUoY29u
dGV4dCwgc2l6ZSk7CiB9CiAKQEAgLTg0LDcgKzg0LDcgQEAgRHJhd2luZ0J1ZmZlcjo6fkRyYXdp
bmdCdWZmZXIoKQogI2VuZGlmCiAgICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIobV9mcmFt
ZWJ1ZmZlcik7CiAgICAgbV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKG1faW50ZXJuYWwtPm9mZnNj
cmVlbkNvbG9yVGV4dHVyZSk7Ci0gICAgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihtX2Zy
YW1lYnVmZmVyKTsKKyAgICBjbGVhcigpOwogfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2lu
Z0J1ZmZlci5jcHAJKHJldmlzaW9uIDY5MzEzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvRHJhd2luZ0J1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDI3ICszMCwzNSBA
QAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FO
VkFTKQorI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpIHx8IFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKIAogI2luY2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKIAotI2luY2x1ZGUg
IlNoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFz
c093blB0cjxEcmF3aW5nQnVmZmVyPiBEcmF3aW5nQnVmZmVyOjpjcmVhdGUoU2hhcmVkR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFNpemUmIHNpemUpCitQYXNzT3duUHRyPERy
YXdpbmdCdWZmZXI+IERyYXdpbmdCdWZmZXI6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBPd25QdHI8RHJhd2luZ0J1ZmZlcj4g
ZHJhd2luZ0J1ZmZlciA9IGFkb3B0UHRyKG5ldyBEcmF3aW5nQnVmZmVyKGNvbnRleHQsIHNpemUp
KTsKKyAgICByZXR1cm4gKGRyYXdpbmdCdWZmZXItPm1fY29udGV4dCkgPyBkcmF3aW5nQnVmZmVy
LnJlbGVhc2UoKSA6IDA7Cit9CisKK3ZvaWQgRHJhd2luZ0J1ZmZlcjo6Y2xlYXIoKQogewotICAg
IHVuc2lnbmVkIGZyYW1lYnVmZmVyID0gY29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKTsKLSAg
ICBBU1NFUlQoZnJhbWVidWZmZXIpOwotICAgIGlmICghZnJhbWVidWZmZXIpCi0gICAgICAgIHJl
dHVybiAwOwotICAgIHJldHVybiBhZG9wdFB0cihuZXcgRHJhd2luZ0J1ZmZlcihjb250ZXh0LCBz
aXplLCBmcmFtZWJ1ZmZlcikpOworICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fY29udGV4dC0+
YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwor
ICAgIG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIobV9mYm8pOworICAgIG1fZmJvID0gMDsK
KworICAgIG1fY29udGV4dCA9IDA7CiB9CiAKIHZvaWQgRHJhd2luZ0J1ZmZlcjo6YmluZCgpCiB7
Ci0gICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIobV9mcmFtZWJ1ZmZlcik7Ci0gICAgbV9j
b250ZXh0LT5zZXRWaWV3cG9ydChtX3NpemUpOworICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVm
ZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOworICAgIG1fY29udGV4
dC0+dmlld3BvcnQoMCwgMCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0RyYXdpbmdCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9EcmF3aW5nQnVmZmVyLmgJKHJldmlzaW9uIDY5MzEzKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw4
ICs0NCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkR3JhcGhpY3ND
b250ZXh0M0Q7Ci0KICNpZiBQTEFURk9STShDSFJPTUlVTSkKIHN0cnVjdCBEcmF3aW5nQnVmZmVy
SW50ZXJuYWw7CiAjZW5kaWYKQEAgLTU0LDE1ICs1MiwyMCBAQCBzdHJ1Y3QgRHJhd2luZ0J1ZmZl
ckludGVybmFsOwogLy8gcmVzdWx0cyB0byBhIFBsYXRmb3JtTGF5ZXIgZm9yIGNvbXBvc2l0aW5n
LgogY2xhc3MgRHJhd2luZ0J1ZmZlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NPd25QdHI8RHJhd2luZ0J1ZmZlcj4gY3JlYXRlKFNoYXJlZEdyYXBoaWNz
Q29udGV4dDNEKiwgY29uc3QgSW50U2l6ZSYpOworICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0Nv
bnRleHQzRDsKKyAgICAKICAgICB+RHJhd2luZ0J1ZmZlcigpOwogCiAgICAgdm9pZCByZXNldChj
b25zdCBJbnRTaXplJik7CiAgICAgdm9pZCBiaW5kKCk7CiAgICAgSW50U2l6ZSBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9zaXplOyB9CiAKKyAgICAgLy8gQ2xlYXIgYWxsIHJlc291cmNlcyBmcm9t
IHRoaXMgb2JqZWN0LCBhcyB3ZWxsIGFzIGNvbnRleHQuIENhbGxlZCB3aGVuIGNvbnRleHQgaXMg
ZGVzdHJveWVkCisgICAgLy8gdG8gcHJldmVudCBpbnZhbGlkIGFjY2Vzc2VzIHRvIHRoZSByZXNv
dXJjZXMuCisgICAgdm9pZCBjbGVhcigpOworICAgIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCk7CisgICAgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwogICAgIHZvaWQgcHVibGlzaFRvUGxhdGZv
cm1MYXllcigpOwogI2VuZGlmCiAKQEAgLTc5LDEyICs4MiwxNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRXaWxsUHVibGlzaENhbGxiYWNrKFBhc3NPd25QdHI8V2lsbFB1Ymxpc2hDYWxsYmFjaz4g
Y2FsbGJhY2spIHsgbV9jYWxsYmFjayA9IGNhbGxiYWNrOyB9CiAjZW5kaWYKIAorICAgIEdyYXBo
aWNzQ29udGV4dDNEKiBncmFwaGljc0NvbnRleHQzRCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4
dDsgfQorCitwcm90ZWN0ZWQ6CisgICAgc3RhdGljIFBhc3NPd25QdHI8RHJhd2luZ0J1ZmZlcj4g
Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50U2l6ZSYpOworICAgIAogcHJpdmF0
ZToKLSAgICBEcmF3aW5nQnVmZmVyKFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50
U2l6ZSYsIHVuc2lnbmVkIGZyYW1lYnVmZmVyKTsKKyAgICBEcmF3aW5nQnVmZmVyKEdyYXBoaWNz
Q29udGV4dDNEKiwgY29uc3QgSW50U2l6ZSYpOwogCi0gICAgU2hhcmVkR3JhcGhpY3NDb250ZXh0
M0QqIG1fY29udGV4dDsKKyAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwogICAgIElu
dFNpemUgbV9zaXplOwotICAgIHVuc2lnbmVkIG1fZnJhbWVidWZmZXI7CisgICAgUGxhdGZvcm0z
RE9iamVjdCBtX2ZibzsKIAogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIE93blB0cjxXaWxs
UHVibGlzaENhbGxiYWNrPiBtX2NhbGxiYWNrOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lv
biA2OTMxMykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNz
Q29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTExOCw2ICsxMTgsOCBAQCBwdWJsaWM6CiAg
ICAgLy8gdGhlIHRleHR1cmUuCiAgICAgUGFzc1JlZlB0cjxUZXh0dXJlPiBjcmVhdGVUZXh0dXJl
KFRleHR1cmU6OkZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKIAorICAgIEdyYXBoaWNz
Q29udGV4dDNEKiBncmFwaGljc0NvbnRleHQzRCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5n
ZXQoKTsgfQorCiBwcml2YXRlOgogICAgIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKFBhc3NPd25Q
dHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBQYXNzT3duUHRyPFNvbGlkRmlsbFNoYWRlcj4sIFBhc3NP
d25QdHI8VGV4U2hhZGVyPik7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L21hYy9EcmF3aW5nQnVmZmVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L21hYy9EcmF3aW5nQnVmZmVyTWFjLm1tCShyZXZpc2lvbiA2OTMxMykKKysr
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L21hYy9EcmF3aW5nQnVmZmVyTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSwzNyArMjUsMzkgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgog
Ci0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyNpZiBFTkFCTEUoQUNDRUxFUkFU
RURfMkRfQ0FOVkFTKSB8fCBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKICNpbmNsdWRl
ICJEcmF3aW5nQnVmZmVyLmgiCiAKLSNpbmNsdWRlICJTaGFyZWRHcmFwaGljc0NvbnRleHQzRC5o
IgogI2luY2x1ZGUgIldlYkdMTGF5ZXIuaCIKIAogI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRHJhd2luZ0J1ZmZlcjo6RHJhd2luZ0J1ZmZlcihT
aGFyZWRHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgdW5z
aWduZWQgZnJhbWVidWZmZXIpCitEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplKQogICAgIDogbV9jb250ZXh0
KGNvbnRleHQpCiAgICAgLCBtX3NpemUoc2l6ZSkKLSAgICAsIG1fZnJhbWVidWZmZXIoZnJhbWVi
dWZmZXIpCisgICAgLCBtX2Zibyhjb250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigpKQogewotICAg
IGNvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7Ci0KKyAgICBBU1NFUlQobV9m
Ym8pOworICAgIGlmICghbV9mYm8pIHsKKyAgICAgICAgY2xlYXIoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICAgICAgCiAgICAgLy8gQ3JlYXRlIHRoZSBXZWJHTExheWVyCiAgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIG1fcGxhdGZvcm1MYXllci5hZG9wdE5T
KFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhHcmFwaGljc0NvbnRleHQzRDowXSk7CisgICAg
ICAgIG1fcGxhdGZvcm1MYXllci5hZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhH
cmFwaGljc0NvbnRleHQzRDpjb250ZXh0XSk7CiAjaWZuZGVmIE5ERUJVRwotICAgICAgICBbbV9w
bGF0Zm9ybUxheWVyLmdldCgpIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOworICAgICAgICBbbV9w
bGF0Zm9ybUxheWVyLmdldCgpIHNldE5hbWU6QCJEcmF3aW5nQnVmZmVyIExheWVyIl07CiAjZW5k
aWYgICAgCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCiBEcmF3aW5nQnVmZmVy
Ojp+RHJhd2luZ0J1ZmZlcigpCiB7Ci0gICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIobV9m
cmFtZWJ1ZmZlcik7Ci0gICAgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihtX2ZyYW1lYnVm
ZmVyKTsKKyAgICBjbGVhcigpOwogfQogCiB2b2lkIERyYXdpbmdCdWZmZXI6OnJlc2V0KGNvbnN0
IEludFNpemUmIG5ld1NpemUpCkBAIC02OCw3ICs3MCw3IEBAIHZvaWQgRHJhd2luZ0J1ZmZlcjo6
cmVzZXQoY29uc3QgSW50U2l6ZSYKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKLVBsYXRmb3JtTGF5ZXIqIERyYXdpbmdCdWZmZXI6OnBsYXRmb3JtTGF5ZXIoKQorUGxhdGZv
cm1MYXllciogRHJhd2luZ0J1ZmZlcjo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fcGxhdGZvcm1MYXllci5nZXQoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70464</attachid>
            <date>2010-10-11 13:49:02 -0700</date>
            <delta_ts>2010-10-11 14:14:51 -0700</delta_ts>
            <desc>Patch fixing Chromium build</desc>
            <filename>bug-47501-20101011134901.patch</filename>
            <type>text/plain</type>
            <size>13400</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTUyMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMTAtMTAtMTEgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1h
bmFnZSBEcmF3aW5nQnVmZmVyIGxpZmV0aW1lIGluIEdyYXBoaWNzQ29udGV4dDNECisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzUwMQorCisgICAgICAg
ICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRHJhd2luZ0J1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cmVtb3ZlRHJhd2luZ0J1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJEcmF3aW5nQnVm
ZmVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2VuZXJhdGVDb2xvclRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6RHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpEcmF3aW5nQnVmZmVyOjp+RHJhd2luZ0J1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2lu
Z0J1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmNsZWFy
KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmJpbmQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpE
cmF3aW5nQnVmZmVyOjpncmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RHJhd2luZ0J1ZmZlcjo6fkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2lu
Z0J1ZmZlcjo6cGxhdGZvcm1MYXllcik6CisKIDIwMTAtMTAtMTEgIEJyZW50IEZ1bGdoYW0gIDxi
ZnVsZ2hhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgV2luQ2Fpcm8gYnVpbGQg
Zml4ZXMuCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCShyZXZpc2lvbiA2OTMxMykKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDcgKzEzMSw3
IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Q2FudmFzUmVuZGVyaW4KICAgICBtX2NvbnRl
eHQzRCA9IHAtPnNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKCk7CiAgICAgaWYgKG1fY29udGV4dDNE
KSB7CiAgICAgICAgIGlmIChHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpKSB7
Ci0gICAgICAgICAgICBtX2RyYXdpbmdCdWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUobV9j
b250ZXh0M0QuZ2V0KCksIEludFNpemUoY2FudmFzLT53aWR0aCgpLCBjYW52YXMtPmhlaWdodCgp
KSk7CisgICAgICAgICAgICBtX2RyYXdpbmdCdWZmZXIgPSBtX2NvbnRleHQzRC0+Z3JhcGhpY3ND
b250ZXh0M0QoKS0+Y3JlYXRlRHJhd2luZ0J1ZmZlcihJbnRTaXplKGNhbnZhcy0+d2lkdGgoKSwg
Y2FudmFzLT5oZWlnaHQoKSkpOwogICAgICAgICAgICAgYy0+c2V0U2hhcmVkR3JhcGhpY3NDb250
ZXh0M0QobV9jb250ZXh0M0QuZ2V0KCksIG1fZHJhd2luZ0J1ZmZlci5nZXQoKSwgSW50U2l6ZShj
YW52YXMtPndpZHRoKCksIGNhbnZhcy0+aGVpZ2h0KCkpKTsKICAgICAgICAgfQogICAgIH0KSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3Bw
CShyZXZpc2lvbiA2OTMxMykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0M0QuaCIKIAogI2luY2x1ZGUgIkFycmF5QnVmZmVyVmlldy5oIgorI2lu
Y2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIklt
YWdlRGF0YS5oIgogCkBAIC00MSw2ICs0MiwyNiBAQCBzdGF0aWMgdWludDhfdCBjb252ZXJ0Q29s
b3IxNlRvOCh1aW50MTZfCiAgICAgcmV0dXJuIHZhbHVlID4+IDg7CiB9CiAKK1Bhc3NPd25QdHI8
RHJhd2luZ0J1ZmZlcj4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZURyYXdpbmdCdWZmZXIoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBPd25QdHI8RHJhd2luZ0J1ZmZlcj4gZHJhd2luZ0J1
ZmZlciA9IERyYXdpbmdCdWZmZXI6OmNyZWF0ZSh0aGlzLCBzaXplKTsKKyAgICBtX2RyYXdpbmdC
dWZmZXJzLmFkZChkcmF3aW5nQnVmZmVyLmdldCgpKTsKKyAgICByZXR1cm4gZHJhd2luZ0J1ZmZl
ci5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbW92ZURyYXdpbmdC
dWZmZXIoRHJhd2luZ0J1ZmZlciogZHJhd2luZ0J1ZmZlcikKK3sKKyAgICBtX2RyYXdpbmdCdWZm
ZXJzLnJlbW92ZShkcmF3aW5nQnVmZmVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Y2xlYXJEcmF3aW5nQnVmZmVycygpCit7CisgICAgSGFzaFNldDxEcmF3aW5nQnVmZmVyKj46Oml0
ZXJhdG9yIGVuZCA9IG1fZHJhd2luZ0J1ZmZlcnMuZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PERy
YXdpbmdCdWZmZXIqPjo6aXRlcmF0b3IgaXQgPSBtX2RyYXdpbmdCdWZmZXJzLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkKKyAgICAgICAgKCppdCktPmNsZWFyKCk7Cit9CisKKwogYm9vbCBHcmFw
aGljc0NvbnRleHQzRDo6Y29tcHV0ZUZvcm1hdEFuZFR5cGVQYXJhbWV0ZXJzKHVuc2lnbmVkIGlu
dCBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyogY29tcG9uZW50c1BlclBp
eGVsLApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaAkocmV2aXNpb24gNjkzMTMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDYgQEAKICNpZm5kZWYg
R3JhcGhpY3NDb250ZXh0M0RfaAogI2RlZmluZSBHcmFwaGljc0NvbnRleHQzRF9oCiAKLSNpZiBQ
TEFURk9STShNQUMpCi0jaW5jbHVkZSAiQU5HTEVXZWJLaXRCcmlkZ2UuaCIKLSNlbmRpZgogI2lu
Y2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCkBA
IC00Myw2ICs0MCw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlICJB
TkdMRVdlYktpdEJyaWRnZS5oIgogI2luY2x1ZGUgPE9wZW5HTC9PcGVuR0wuaD4KICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTc4LDYgKzc2LDcgQEAgY29uc3QgUGxhdGZvcm0zRE9i
amVjdCBOdWxsUGxhdGZvcm0zRE9iagogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDYW52
YXNSZW5kZXJpbmdDb250ZXh0OworY2xhc3MgRHJhd2luZ0J1ZmZlcjsKIGNsYXNzIEhvc3RXaW5k
b3c7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIEltYWdlRGF0YTsKQEAgLTQ0Miw3ICs0NDEsNyBAQCBw
dWJsaWM6CiAgICAgfTsKIAogICAgIHN0YXRpYyBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiBjcmVhdGUoQXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgUmVuZGVy
U3R5bGUgcmVuZGVyU3R5bGUgPSBSZW5kZXJPZmZzY3JlZW4pOwotICAgIHZpcnR1YWwgfkdyYXBo
aWNzQ29udGV4dDNEKCk7CisgICAgfkdyYXBoaWNzQ29udGV4dDNEKCk7CiAKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUdyYXBoaWNzQ29u
dGV4dDNEKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0T2JqOyB9CkBAIC00NjksNiArNDY4LDkg
QEAgcHVibGljOgogI2VuZGlmCiAgICAgdm9pZCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKIAorICAg
IFBhc3NPd25QdHI8RHJhd2luZ0J1ZmZlcj4gY3JlYXRlRHJhd2luZ0J1ZmZlcihjb25zdCBJbnRT
aXplJiA9IEludFNpemUoKSk7CisgICAgdm9pZCByZW1vdmVEcmF3aW5nQnVmZmVyKERyYXdpbmdC
dWZmZXIqKTsKKyAgICAKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKENIUk9NSVVNKQog
ICAgIC8vIFdpdGggbXVsdGlzYW1wbGluZyBvbiwgYmxpdCBmcm9tIG11bHRpc2FtcGxlRkJPIHRv
IHJlZ3VsYXIgRkJPLgogICAgIHZvaWQgcHJlcGFyZVRleHR1cmUoKTsKQEAgLTc5Nyw2ICs3OTks
OCBAQCBwdWJsaWM6CiAgIHByaXZhdGU6CiAgICAgR3JhcGhpY3NDb250ZXh0M0QoQXR0cmlidXRl
cyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgYm9vbCByZW5kZXJEaXJlY3RseVRvSG9z
dFdpbmRvdyk7CiAKKyAgICB2b2lkIGNsZWFyRHJhd2luZ0J1ZmZlcnMoKTsKKyAgICAKICAgICAv
LyBFYWNoIHBsYXRmb3JtIG11c3QgcHJvdmlkZSBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIG1l
dGhvZC4KICAgICAvLwogICAgIC8vIEdldHMgdGhlIGRhdGEgZm9yIHRoZSBnaXZlbiBJbWFnZSBp
bnRvIG91dHB1dFZlY3RvciBpbiB0aGUKQEAgLTg1Myw2ICs4NTcsOCBAQCBwdWJsaWM6CiAKICAg
ICBpbnQgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodDsKIAorICAgIEhhc2hTZXQ8RHJh
d2luZ0J1ZmZlcio+IG1fZHJhd2luZ0J1ZmZlcnM7CisKICNpZiBQTEFURk9STShNQUMpCiAgICAg
dHlwZWRlZiBzdHJ1Y3QgewogICAgICAgICBTdHJpbmcgc291cmNlOwpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZl
ckNocm9taXVtLmNwcAkocmV2aXNpb24gNjkzMTMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDcgKzQ4LDcgQEAgc3RydWN0IERyYXdpbmdCdWZmZXJJbnRlcm5hbCB7CiAjZW5kaWYKIH07
CiAKLXN0YXRpYyB1bnNpZ25lZCBnZW5lcmF0ZUNvbG9yVGV4dHVyZShTaGFyZWRHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3N0YXRpYyB1bnNpZ25lZCBn
ZW5lcmF0ZUNvbG9yVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50
U2l6ZSYgc2l6ZSkKIHsKICAgICB1bnNpZ25lZCBvZmZzY3JlZW5Db2xvclRleHR1cmUgPSBjb250
ZXh0LT5jcmVhdGVUZXh0dXJlKCk7CiAgICAgaWYgKCFvZmZzY3JlZW5Db2xvclRleHR1cmUpCkBA
IC02NiwxMyArNjYsMTMgQEAgc3RhdGljIHVuc2lnbmVkIGdlbmVyYXRlQ29sb3JUZXh0dXJlKFNo
YQogfQogCiAKLURyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIoU2hhcmVkR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFNpemUmIHNpemUsIHVuc2lnbmVkIGZyYW1lYnVmZmVy
KQorRHJhd2luZ0J1ZmZlcjo6RHJhd2luZ0J1ZmZlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwg
bV9zaXplKHNpemUpCi0gICAgLCBtX2ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKQorICAgICwgbV9m
Ym8oY29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKSkKICAgICAsIG1faW50ZXJuYWwobmV3IERy
YXdpbmdCdWZmZXJJbnRlcm5hbCkKIHsKLSAgICBjb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoZnJh
bWVidWZmZXIpOworICAgIGNvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKICAgICBtX2ludGVybmFsLT5vZmZzY3JlZW5Db2xvclRl
eHR1cmUgPSBnZW5lcmF0ZUNvbG9yVGV4dHVyZShjb250ZXh0LCBzaXplKTsKIH0KIApAQCAtODQs
NyArODQsNyBAQCBEcmF3aW5nQnVmZmVyOjp+RHJhd2luZ0J1ZmZlcigpCiAjZW5kaWYKICAgICBt
X2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihtX2ZyYW1lYnVmZmVyKTsKICAgICBtX2NvbnRleHQt
PmRlbGV0ZVRleHR1cmUobV9pbnRlcm5hbC0+b2Zmc2NyZWVuQ29sb3JUZXh0dXJlKTsKLSAgICBt
X2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKG1fZnJhbWVidWZmZXIpOworICAgIGNsZWFyKCk7
CiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcAkocmV2aXNpb24gNjkz
MTMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzAsMjcgKzMwLDM1IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIK
IAotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisjaWYgRU5BQkxFKEFDQ0VMRVJB
VEVEXzJEX0NBTlZBUykgfHwgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiAjaW5jbHVk
ZSAiRHJhd2luZ0J1ZmZlci5oIgogCi0jaW5jbHVkZSAiU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Qu
aCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPERyYXdpbmdCdWZmZXI+IERy
YXdpbmdCdWZmZXI6OmNyZWF0ZShTaGFyZWRHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29u
c3QgSW50U2l6ZSYgc2l6ZSkKK1Bhc3NPd25QdHI8RHJhd2luZ0J1ZmZlcj4gRHJhd2luZ0J1ZmZl
cjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXpl
KQoreworICAgIE93blB0cjxEcmF3aW5nQnVmZmVyPiBkcmF3aW5nQnVmZmVyID0gYWRvcHRQdHIo
bmV3IERyYXdpbmdCdWZmZXIoY29udGV4dCwgc2l6ZSkpOworICAgIHJldHVybiAoZHJhd2luZ0J1
ZmZlci0+bV9jb250ZXh0KSA/IGRyYXdpbmdCdWZmZXIucmVsZWFzZSgpIDogMDsKK30KKwordm9p
ZCBEcmF3aW5nQnVmZmVyOjpjbGVhcigpCiB7Ci0gICAgdW5zaWduZWQgZnJhbWVidWZmZXIgPSBj
b250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigpOwotICAgIEFTU0VSVChmcmFtZWJ1ZmZlcik7Ci0g
ICAgaWYgKCFmcmFtZWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBEcmF3aW5nQnVmZmVyKGNvbnRleHQsIHNpemUsIGZyYW1lYnVmZmVyKSk7CisgICAg
aWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3ND
b250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CisgICAgbV9jb250ZXh0LT5kZWxldGVGcmFt
ZWJ1ZmZlcihtX2Zibyk7CisgICAgbV9mYm8gPSAwOworCisgICAgbV9jb250ZXh0ID0gMDsKIH0K
IAogdm9pZCBEcmF3aW5nQnVmZmVyOjpiaW5kKCkKIHsKLSAgICBtX2NvbnRleHQtPmJpbmRGcmFt
ZWJ1ZmZlcihtX2ZyYW1lYnVmZmVyKTsKLSAgICBtX2NvbnRleHQtPnNldFZpZXdwb3J0KG1fc2l6
ZSk7CisgICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSLCBtX2Zibyk7CisgICAgbV9jb250ZXh0LT52aWV3cG9ydCgwLCAwLCBtX3NpemUu
d2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaAko
cmV2aXNpb24gNjkzMTMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5n
QnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDggKzQ0LDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDsKLQogI2lmIFBMQVRGT1JN
KENIUk9NSVVNKQogc3RydWN0IERyYXdpbmdCdWZmZXJJbnRlcm5hbDsKICNlbmRpZgpAQCAtNTQs
MTUgKzUyLDIwIEBAIHN0cnVjdCBEcmF3aW5nQnVmZmVySW50ZXJuYWw7CiAvLyByZXN1bHRzIHRv
IGEgUGxhdGZvcm1MYXllciBmb3IgY29tcG9zaXRpbmcuCiBjbGFzcyBEcmF3aW5nQnVmZmVyIDog
cHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxEcmF3
aW5nQnVmZmVyPiBjcmVhdGUoU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRTaXpl
Jik7CisgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOworICAgIAogICAgIH5EcmF3
aW5nQnVmZmVyKCk7CiAKICAgICB2b2lkIHJlc2V0KGNvbnN0IEludFNpemUmKTsKICAgICB2b2lk
IGJpbmQoKTsKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIAor
ICAgICAvLyBDbGVhciBhbGwgcmVzb3VyY2VzIGZyb20gdGhpcyBvYmplY3QsIGFzIHdlbGwgYXMg
Y29udGV4dC4gQ2FsbGVkIHdoZW4gY29udGV4dCBpcyBkZXN0cm95ZWQKKyAgICAvLyB0byBwcmV2
ZW50IGludmFsaWQgYWNjZXNzZXMgdG8gdGhlIHJlc291cmNlcy4KKyAgICB2b2lkIGNsZWFyKCk7
CisgICAgCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIFBsYXRmb3JtTGF5
ZXIqIHBsYXRmb3JtTGF5ZXIoKTsKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkg
Y29uc3Q7CiAgICAgdm9pZCBwdWJsaXNoVG9QbGF0Zm9ybUxheWVyKCk7CiAjZW5kaWYKIApAQCAt
NzksMTIgKzgyLDE3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdpbGxQdWJsaXNoQ2FsbGJhY2so
UGFzc093blB0cjxXaWxsUHVibGlzaENhbGxiYWNrPiBjYWxsYmFjaykgeyBtX2NhbGxiYWNrID0g
Y2FsbGJhY2s7IH0KICNlbmRpZgogCisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGdyYXBoaWNzQ29u
dGV4dDNEKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0OyB9CisKK3Byb3RlY3RlZDoKKyAgICBz
dGF0aWMgUGFzc093blB0cjxEcmF3aW5nQnVmZmVyPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0Qq
LCBjb25zdCBJbnRTaXplJik7CisgICAgCiBwcml2YXRlOgotICAgIERyYXdpbmdCdWZmZXIoU2hh
cmVkR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRTaXplJiwgdW5zaWduZWQgZnJhbWVidWZm
ZXIpOworICAgIERyYXdpbmdCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRTaXpl
Jik7CiAKLSAgICBTaGFyZWRHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OworICAgIEdyYXBo
aWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CiAgICAgSW50U2l6ZSBtX3NpemU7Ci0gICAgdW5zaWdu
ZWQgbV9mcmFtZWJ1ZmZlcjsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IG1fZmJvOwogCiAjaWYgUExB
VEZPUk0oQ0hST01JVU0pCiAgICAgT3duUHRyPFdpbGxQdWJsaXNoQ2FsbGJhY2s+IG1fY2FsbGJh
Y2s7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0Nv
bnRleHQzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1No
YXJlZEdyYXBoaWNzQ29udGV4dDNELmgJKHJldmlzaW9uIDY5MzEzKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5
KQpAQCAtMTE4LDYgKzExOCw4IEBAIHB1YmxpYzoKICAgICAvLyB0aGUgdGV4dHVyZS4KICAgICBQ
YXNzUmVmUHRyPFRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZTo6Rm9ybWF0LCBpbnQgd2lk
dGgsIGludCBoZWlnaHQpOwogCisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGdyYXBoaWNzQ29udGV4
dDNEKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAg
U2hhcmVkR3JhcGhpY3NDb250ZXh0M0QoUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRD4sIFBh
c3NPd25QdHI8U29saWRGaWxsU2hhZGVyPiwgUGFzc093blB0cjxUZXhTaGFkZXI+KTsKIApJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbWFjL0RyYXdpbmdCdWZmZXJNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbWFjL0RyYXdpbmdC
dWZmZXJNYWMubW0JKHJldmlzaW9uIDY5MzEzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvbWFjL0RyYXdpbmdCdWZmZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDM3ICsy
NSwzOSBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURf
MkRfQ0FOVkFTKQorI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpIHx8IFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKIAogI2luY2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKIAotI2lu
Y2x1ZGUgIlNoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiV2ViR0xMYXllci5o
IgogCiAjaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1EcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplLCB1bnNpZ25lZCBmcmFtZWJ1ZmZlcikKK0RyYXdp
bmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0
IEludFNpemUmIHNpemUpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fc2l6ZShz
aXplKQotICAgICwgbV9mcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcikKKyAgICAsIG1fZmJvKGNvbnRl
eHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCkpCiB7Ci0gICAgY29udGV4dC0+YmluZEZyYW1lYnVmZmVy
KGZyYW1lYnVmZmVyKTsKLQorICAgIEFTU0VSVChtX2Zibyk7CisgICAgaWYgKCFtX2Zibykgewor
ICAgICAgICBjbGVhcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKICAgICAv
LyBDcmVhdGUgdGhlIFdlYkdMTGF5ZXIKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LSAgICAgICAgbV9wbGF0Zm9ybUxheWVyLmFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0
V2l0aEdyYXBoaWNzQ29udGV4dDNEOjBdKTsKKyAgICAgICAgbV9wbGF0Zm9ybUxheWVyLmFkb3B0
TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aEdyYXBoaWNzQ29udGV4dDNEOmNvbnRleHRd
KTsKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgIFttX3BsYXRmb3JtTGF5ZXIuZ2V0KCkgc2V0TmFt
ZTpAIldlYkdMIExheWVyIl07CisgICAgICAgIFttX3BsYXRmb3JtTGF5ZXIuZ2V0KCkgc2V0TmFt
ZTpAIkRyYXdpbmdCdWZmZXIgTGF5ZXIiXTsKICNlbmRpZiAgICAKICAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TCiB9CiAKIERyYXdpbmdCdWZmZXI6On5EcmF3aW5nQnVmZmVyKCkKIHsKLSAg
ICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihtX2ZyYW1lYnVmZmVyKTsKLSAgICBtX2NvbnRl
eHQtPmRlbGV0ZUZyYW1lYnVmZmVyKG1fZnJhbWVidWZmZXIpOworICAgIGNsZWFyKCk7CiB9CiAK
IHZvaWQgRHJhd2luZ0J1ZmZlcjo6cmVzZXQoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKQEAgLTY4
LDcgKzcwLDcgQEAgdm9pZCBEcmF3aW5nQnVmZmVyOjpyZXNldChjb25zdCBJbnRTaXplJgogfQog
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotUGxhdGZvcm1MYXllciogRHJhd2lu
Z0J1ZmZlcjo6cGxhdGZvcm1MYXllcigpCitQbGF0Zm9ybUxheWVyKiBEcmF3aW5nQnVmZmVyOjpw
bGF0Zm9ybUxheWVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgp
OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70466</attachid>
            <date>2010-10-11 14:14:54 -0700</date>
            <delta_ts>2010-10-11 14:32:05 -0700</delta_ts>
            <desc>Patch with more Chromium fixes and added m_context null checks to DrawingBuffer functions</desc>
            <filename>bug-47501-20101011141453.patch</filename>
            <type>text/plain</type>
            <size>14359</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTUyNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMTAtMTAtMTEgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1h
bmFnZSBEcmF3aW5nQnVmZmVyIGxpZmV0aW1lIGluIEdyYXBoaWNzQ29udGV4dDNECisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzUwMQorCisgICAgICAg
IE5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5IG9mIGV4aXN0aW5nIGNvZGUsIHNvIG5vIG5ldyB0
ZXN0cy4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0
ZURyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJl
bW92ZURyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmNsZWFyRHJhd2luZ0J1ZmZlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJh
d2luZ0J1ZmZlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlQ29sb3JU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6fkRyYXdpbmdCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1MYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpyZXNldCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJh
d2luZ0J1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmNs
ZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmJpbmQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3aW5nQnVmZmVyOjpncmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhd2luZ0J1ZmZlcjo6fkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RHJh
d2luZ0J1ZmZlcjo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6cGxh
dGZvcm1MYXllcik6CisKIDIwMTAtMTAtMTEgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEJ1aWxkIGZpeC4KSW5kZXg6IFdlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9uIDY5NTIy
KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzEsNyArMTMxLDcgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpDYW52YXNSZW5kZXJpbgogICAgIG1fY29udGV4dDNEID0gcC0+c2hhcmVkR3JhcGhpY3NDb250
ZXh0M0QoKTsKICAgICBpZiAobV9jb250ZXh0M0QpIHsKICAgICAgICAgaWYgKEdyYXBoaWNzQ29u
dGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCkpIHsKLSAgICAgICAgICAgIG1fZHJhd2luZ0J1ZmZl
ciA9IERyYXdpbmdCdWZmZXI6OmNyZWF0ZShtX2NvbnRleHQzRC5nZXQoKSwgSW50U2l6ZShjYW52
YXMtPndpZHRoKCksIGNhbnZhcy0+aGVpZ2h0KCkpKTsKKyAgICAgICAgICAgIG1fZHJhd2luZ0J1
ZmZlciA9IG1fY29udGV4dDNELT5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVEcmF3aW5nQnVm
ZmVyKEludFNpemUoY2FudmFzLT53aWR0aCgpLCBjYW52YXMtPmhlaWdodCgpKSk7CiAgICAgICAg
ICAgICBjLT5zZXRTaGFyZWRHcmFwaGljc0NvbnRleHQzRChtX2NvbnRleHQzRC5nZXQoKSwgbV9k
cmF3aW5nQnVmZmVyLmdldCgpLCBJbnRTaXplKGNhbnZhcy0+d2lkdGgoKSwgY2FudmFzLT5oZWln
aHQoKSkpOwogICAgICAgICB9CiAgICAgfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHJldmlzaW9uIDY5NTIyKQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogCiAjaW5j
bHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCisjaW5jbHVkZSAiRHJhd2luZ0J1ZmZlci5oIgogI2lu
Y2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAKQEAgLTQxLDYgKzQyLDI2
IEBAIHN0YXRpYyB1aW50OF90IGNvbnZlcnRDb2xvcjE2VG84KHVpbnQxNl8KICAgICByZXR1cm4g
dmFsdWUgPj4gODsKIH0KIAorUGFzc093blB0cjxEcmF3aW5nQnVmZmVyPiBHcmFwaGljc0NvbnRl
eHQzRDo6Y3JlYXRlRHJhd2luZ0J1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIE93
blB0cjxEcmF3aW5nQnVmZmVyPiBkcmF3aW5nQnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRl
KHRoaXMsIHNpemUpOworICAgIG1fZHJhd2luZ0J1ZmZlcnMuYWRkKGRyYXdpbmdCdWZmZXIuZ2V0
KCkpOworICAgIHJldHVybiBkcmF3aW5nQnVmZmVyLnJlbGVhc2UoKTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6cmVtb3ZlRHJhd2luZ0J1ZmZlcihEcmF3aW5nQnVmZmVyKiBkcmF3aW5n
QnVmZmVyKQoreworICAgIG1fZHJhd2luZ0J1ZmZlcnMucmVtb3ZlKGRyYXdpbmdCdWZmZXIpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckRyYXdpbmdCdWZmZXJzKCkKK3sKKyAg
ICBIYXNoU2V0PERyYXdpbmdCdWZmZXIqPjo6aXRlcmF0b3IgZW5kID0gbV9kcmF3aW5nQnVmZmVy
cy5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8RHJhd2luZ0J1ZmZlcio+OjppdGVyYXRvciBpdCA9
IG1fZHJhd2luZ0J1ZmZlcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAoKml0
KS0+Y2xlYXIoKTsKK30KKworCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpjb21wdXRlRm9ybWF0
QW5kVHlwZVBhcmFtZXRlcnModW5zaWduZWQgaW50IGZvcm1hdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdHlwZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBsb25nKiBjb21wb25lbnRzUGVyUGl4ZWwsCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiA2OTUyMikKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsOSArMjYsNiBAQAogI2lmbmRlZiBHcmFwaGljc0NvbnRleHQzRF9oCiAjZGVmaW5l
IEdyYXBoaWNzQ29udGV4dDNEX2gKIAotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJBTkdM
RVdlYktpdEJyaWRnZS5oIgotI2VuZGlmCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKQEAgLTQzLDYgKzQwLDcgQEAKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIkFOR0xFV2ViS2l0QnJpZGdlLmgiCiAjaW5jbHVk
ZSA8T3BlbkdML09wZW5HTC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtNzgs
NiArNzYsNyBAQCBjb25zdCBQbGF0Zm9ybTNET2JqZWN0IE51bGxQbGF0Zm9ybTNET2JqCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ7CitjbGFzcyBE
cmF3aW5nQnVmZmVyOwogY2xhc3MgSG9zdFdpbmRvdzsKIGNsYXNzIEltYWdlOwogY2xhc3MgSW1h
Z2VEYXRhOwpAQCAtNDQyLDcgKzQ0MSw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgc3RhdGlj
IFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZShBdHRyaWJ1dGVzIGF0dHJzLCBI
b3N0V2luZG93KiBob3N0V2luZG93LCBSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSA9IFJlbmRlck9m
ZnNjcmVlbik7Ci0gICAgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0M0QoKTsKKyAgICB+R3JhcGhp
Y3NDb250ZXh0M0QoKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dDNEIHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdCB7IHJldHVybiBtX2Nv
bnRleHRPYmo7IH0KQEAgLTQ2OSw2ICs0NjgsOSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB2b2lk
IG1ha2VDb250ZXh0Q3VycmVudCgpOwogCisgICAgUGFzc093blB0cjxEcmF3aW5nQnVmZmVyPiBj
cmVhdGVEcmF3aW5nQnVmZmVyKGNvbnN0IEludFNpemUmID0gSW50U2l6ZSgpKTsKKyAgICB2b2lk
IHJlbW92ZURyYXdpbmdCdWZmZXIoRHJhd2luZ0J1ZmZlciopOworICAgIAogI2lmIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgLy8gV2l0aCBtdWx0aXNhbXBsaW5nIG9u
LCBibGl0IGZyb20gbXVsdGlzYW1wbGVGQk8gdG8gcmVndWxhciBGQk8uCiAgICAgdm9pZCBwcmVw
YXJlVGV4dHVyZSgpOwpAQCAtNzk3LDYgKzc5OSw4IEBAIHB1YmxpYzoKICAgcHJpdmF0ZToKICAg
ICBHcmFwaGljc0NvbnRleHQzRChBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2lu
ZG93LCBib29sIHJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKIAorICAgIHZvaWQgY2xlYXJE
cmF3aW5nQnVmZmVycygpOworICAgIAogICAgIC8vIEVhY2ggcGxhdGZvcm0gbXVzdCBwcm92aWRl
IGFuIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgbWV0aG9kLgogICAgIC8vCiAgICAgLy8gR2V0cyB0
aGUgZGF0YSBmb3IgdGhlIGdpdmVuIEltYWdlIGludG8gb3V0cHV0VmVjdG9yIGluIHRoZQpAQCAt
ODUzLDYgKzg1Nyw4IEBAIHB1YmxpYzoKIAogICAgIGludCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJy
ZW50SGVpZ2h0OwogCisgICAgSGFzaFNldDxEcmF3aW5nQnVmZmVyKj4gbV9kcmF3aW5nQnVmZmVy
czsKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgIFN0
cmluZyBzb3VyY2U7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Ry
YXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA2OTUy
MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNo
cm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBzdHJ1Y3QgRHJhd2lu
Z0J1ZmZlckludGVybmFsIHsKICNlbmRpZgogfTsKIAotc3RhdGljIHVuc2lnbmVkIGdlbmVyYXRl
Q29sb3JUZXh0dXJlKFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRT
aXplJiBzaXplKQorc3RhdGljIHVuc2lnbmVkIGdlbmVyYXRlQ29sb3JUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIHVuc2lnbmVk
IG9mZnNjcmVlbkNvbG9yVGV4dHVyZSA9IGNvbnRleHQtPmNyZWF0ZVRleHR1cmUoKTsKICAgICBp
ZiAoIW9mZnNjcmVlbkNvbG9yVGV4dHVyZSkKQEAgLTY2LDEzICs2NiwxMyBAQCBzdGF0aWMgdW5z
aWduZWQgZ2VuZXJhdGVDb2xvclRleHR1cmUoU2hhCiB9CiAKIAotRHJhd2luZ0J1ZmZlcjo6RHJh
d2luZ0J1ZmZlcihTaGFyZWRHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50U2l6
ZSYgc2l6ZSwgdW5zaWduZWQgZnJhbWVidWZmZXIpCitEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVm
ZmVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplKQogICAg
IDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3NpemUoc2l6ZSkKLSAgICAsIG1fZnJhbWVi
dWZmZXIoZnJhbWVidWZmZXIpCisgICAgLCBtX2Zibyhjb250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZl
cigpKQogICAgICwgbV9pbnRlcm5hbChuZXcgRHJhd2luZ0J1ZmZlckludGVybmFsKQogewotICAg
IGNvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7CisgICAgY29udGV4dC0+Ymlu
ZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwogICAg
IG1faW50ZXJuYWwtPm9mZnNjcmVlbkNvbG9yVGV4dHVyZSA9IGdlbmVyYXRlQ29sb3JUZXh0dXJl
KGNvbnRleHQsIHNpemUpOwogfQogCkBAIC04MiwxNCArODIsMTcgQEAgRHJhd2luZ0J1ZmZlcjo6
fkRyYXdpbmdCdWZmZXIoKQogICAgIGlmIChtX2ludGVybmFsLT5wbGF0Zm9ybUxheWVyKQogICAg
ICAgICBtX2ludGVybmFsLT5wbGF0Zm9ybUxheWVyLT5zZXREcmF3aW5nQnVmZmVyKDApOwogI2Vu
ZGlmCi0gICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIobV9mcmFtZWJ1ZmZlcik7CisgICAg
bV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIobV9mYm8pOwogICAgIG1fY29udGV4dC0+ZGVsZXRl
VGV4dHVyZShtX2ludGVybmFsLT5vZmZzY3JlZW5Db2xvclRleHR1cmUpOwotICAgIG1fY29udGV4
dC0+ZGVsZXRlRnJhbWVidWZmZXIobV9mcmFtZWJ1ZmZlcik7CisgICAgY2xlYXIoKTsKIH0KIAog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIHZvaWQgRHJhd2luZ0J1ZmZlcjo6cHVi
bGlzaFRvUGxhdGZvcm1MYXllcigpCiB7CisgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJl
dHVybjsKKyAgICAgICAgCiAgICAgaWYgKG1fY2FsbGJhY2spCiAgICAgICAgIG1fY2FsbGJhY2st
PndpbGxQdWJsaXNoKCk7CiAgICAgdW5zaWduZWQgcGFyZW50VGV4dHVyZSA9IG1faW50ZXJuYWwt
PnBsYXRmb3JtTGF5ZXItPnRleHR1cmVJZCgpOwpAQCAtMTA2LDYgKzEwOSw5IEBAIHZvaWQgRHJh
d2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1MYXkKIAogdm9pZCBEcmF3aW5nQnVmZmVyOjpy
ZXNldChjb25zdCBJbnRTaXplJiBuZXdTaXplKQogeworICAgIGlmICghbV9jb250ZXh0KQorICAg
ICAgICByZXR1cm47CisgICAgICAgIAogICAgIGlmIChtX3NpemUgPT0gbmV3U2l6ZSkKICAgICAg
ICAgcmV0dXJuOwogICAgIG1fc2l6ZSA9IG5ld1NpemU7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcAkocmV2aXNpb24gNjk1MjIpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsMjcgKzMwLDM4IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lm
IEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJE
X0NBTlZBUykgfHwgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiAjaW5jbHVkZSAiRHJh
d2luZ0J1ZmZlci5oIgogCi0jaW5jbHVkZSAiU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaCIKLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPERyYXdpbmdCdWZmZXI+IERyYXdpbmdC
dWZmZXI6OmNyZWF0ZShTaGFyZWRHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50
U2l6ZSYgc2l6ZSkKK1Bhc3NPd25QdHI8RHJhd2luZ0J1ZmZlcj4gRHJhd2luZ0J1ZmZlcjo6Y3Jl
YXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplKQorewor
ICAgIE93blB0cjxEcmF3aW5nQnVmZmVyPiBkcmF3aW5nQnVmZmVyID0gYWRvcHRQdHIobmV3IERy
YXdpbmdCdWZmZXIoY29udGV4dCwgc2l6ZSkpOworICAgIHJldHVybiAoZHJhd2luZ0J1ZmZlci0+
bV9jb250ZXh0KSA/IGRyYXdpbmdCdWZmZXIucmVsZWFzZSgpIDogMDsKK30KKwordm9pZCBEcmF3
aW5nQnVmZmVyOjpjbGVhcigpCiB7Ci0gICAgdW5zaWduZWQgZnJhbWVidWZmZXIgPSBjb250ZXh0
LT5jcmVhdGVGcmFtZWJ1ZmZlcigpOwotICAgIEFTU0VSVChmcmFtZWJ1ZmZlcik7Ci0gICAgaWYg
KCFmcmFtZWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBEcmF3aW5nQnVmZmVyKGNvbnRleHQsIHNpemUsIGZyYW1lYnVmZmVyKSk7CisgICAgaWYgKCFt
X2NvbnRleHQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0
M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CisgICAgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZl
cihtX2Zibyk7CisgICAgbV9mYm8gPSAwOworCisgICAgbV9jb250ZXh0ID0gMDsKIH0KIAogdm9p
ZCBEcmF3aW5nQnVmZmVyOjpiaW5kKCkKIHsKLSAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZl
cihtX2ZyYW1lYnVmZmVyKTsKLSAgICBtX2NvbnRleHQtPnNldFZpZXdwb3J0KG1fc2l6ZSk7Cisg
ICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgbV9jb250
ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zi
byk7CisgICAgbV9jb250ZXh0LT52aWV3cG9ydCgwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXpl
LmhlaWdodCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaAkocmV2aXNpb24gNjk1MjIp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ0LDggKzQ0LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDsKLQogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogc3Ry
dWN0IERyYXdpbmdCdWZmZXJJbnRlcm5hbDsKICNlbmRpZgpAQCAtNTQsMTUgKzUyLDIwIEBAIHN0
cnVjdCBEcmF3aW5nQnVmZmVySW50ZXJuYWw7CiAvLyByZXN1bHRzIHRvIGEgUGxhdGZvcm1MYXll
ciBmb3IgY29tcG9zaXRpbmcuCiBjbGFzcyBEcmF3aW5nQnVmZmVyIDogcHVibGljIE5vbmNvcHlh
YmxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxEcmF3aW5nQnVmZmVyPiBjcmVh
dGUoU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRTaXplJik7CisgICAgZnJpZW5k
IGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOworICAgIAogICAgIH5EcmF3aW5nQnVmZmVyKCk7CiAK
ICAgICB2b2lkIHJlc2V0KGNvbnN0IEludFNpemUmKTsKICAgICB2b2lkIGJpbmQoKTsKICAgICBJ
bnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIAorICAgICAvLyBDbGVhciBh
bGwgcmVzb3VyY2VzIGZyb20gdGhpcyBvYmplY3QsIGFzIHdlbGwgYXMgY29udGV4dC4gQ2FsbGVk
IHdoZW4gY29udGV4dCBpcyBkZXN0cm95ZWQKKyAgICAvLyB0byBwcmV2ZW50IGludmFsaWQgYWNj
ZXNzZXMgdG8gdGhlIHJlc291cmNlcy4KKyAgICB2b2lkIGNsZWFyKCk7CisgICAgCiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIoKTsKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAgICAgdm9p
ZCBwdWJsaXNoVG9QbGF0Zm9ybUxheWVyKCk7CiAjZW5kaWYKIApAQCAtNzksMTIgKzgyLDE3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFdpbGxQdWJsaXNoQ2FsbGJhY2soUGFzc093blB0cjxXaWxs
UHVibGlzaENhbGxiYWNrPiBjYWxsYmFjaykgeyBtX2NhbGxiYWNrID0gY2FsbGJhY2s7IH0KICNl
bmRpZgogCisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGdyYXBoaWNzQ29udGV4dDNEKCkgY29uc3Qg
eyByZXR1cm4gbV9jb250ZXh0OyB9CisKK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgUGFzc093blB0
cjxEcmF3aW5nQnVmZmVyPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRTaXpl
Jik7CisgICAgCiBwcml2YXRlOgotICAgIERyYXdpbmdCdWZmZXIoU2hhcmVkR3JhcGhpY3NDb250
ZXh0M0QqLCBjb25zdCBJbnRTaXplJiwgdW5zaWduZWQgZnJhbWVidWZmZXIpOworICAgIERyYXdp
bmdCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRTaXplJik7CiAKLSAgICBTaGFy
ZWRHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBt
X2NvbnRleHQ7CiAgICAgSW50U2l6ZSBtX3NpemU7Ci0gICAgdW5zaWduZWQgbV9mcmFtZWJ1ZmZl
cjsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IG1fZmJvOwogCiAjaWYgUExBVEZPUk0oQ0hST01JVU0p
CiAgICAgT3duUHRyPFdpbGxQdWJsaXNoQ2FsbGJhY2s+IG1fY2FsbGJhY2s7CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29u
dGV4dDNELmgJKHJldmlzaW9uIDY5NTIyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDYgKzEx
OCw4IEBAIHB1YmxpYzoKICAgICAvLyB0aGUgdGV4dHVyZS4KICAgICBQYXNzUmVmUHRyPFRleHR1
cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZTo6Rm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQp
OwogCisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGdyYXBoaWNzQ29udGV4dDNEKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAgU2hhcmVkR3JhcGhpY3ND
b250ZXh0M0QoUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRD4sIFBhc3NPd25QdHI8U29saWRG
aWxsU2hhZGVyPiwgUGFzc093blB0cjxUZXhTaGFkZXI+KTsKIApJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvbWFjL0RyYXdpbmdCdWZmZXJNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbWFjL0RyYXdpbmdCdWZmZXJNYWMubW0JKHJl
dmlzaW9uIDY5NTIyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbWFjL0RyYXdp
bmdCdWZmZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDQxICsyNSw0NiBAQAogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorI2lm
IEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpIHx8IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKIAogI2luY2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKIAotI2luY2x1ZGUgIlNoYXJlZEdy
YXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiV2ViR0xMYXllci5oIgogCiAjaW1wb3J0ICJC
bG9ja0V4Y2VwdGlvbnMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EcmF3aW5nQnVmZmVy
OjpEcmF3aW5nQnVmZmVyKFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJ
bnRTaXplJiBzaXplLCB1bnNpZ25lZCBmcmFtZWJ1ZmZlcikKK0RyYXdpbmdCdWZmZXI6OkRyYXdp
bmdCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFNpemUmIHNpemUp
CiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fc2l6ZShzaXplKQotICAgICwgbV9m
cmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcikKKyAgICAsIG1fZmJvKGNvbnRleHQtPmNyZWF0ZUZyYW1l
YnVmZmVyKCkpCiB7Ci0gICAgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsK
LQorICAgIEFTU0VSVChtX2Zibyk7CisgICAgaWYgKCFtX2ZibykgeworICAgICAgICBjbGVhcigp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKICAgICAvLyBDcmVhdGUgdGhlIFdl
YkdMTGF5ZXIKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgbV9wbGF0
Zm9ybUxheWVyLmFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aEdyYXBoaWNzQ29u
dGV4dDNEOjBdKTsKKyAgICAgICAgbV9wbGF0Zm9ybUxheWVyLmFkb3B0TlMoW1tXZWJHTExheWVy
IGFsbG9jXSBpbml0V2l0aEdyYXBoaWNzQ29udGV4dDNEOmNvbnRleHRdKTsKICNpZm5kZWYgTkRF
QlVHCi0gICAgICAgIFttX3BsYXRmb3JtTGF5ZXIuZ2V0KCkgc2V0TmFtZTpAIldlYkdMIExheWVy
Il07CisgICAgICAgIFttX3BsYXRmb3JtTGF5ZXIuZ2V0KCkgc2V0TmFtZTpAIkRyYXdpbmdCdWZm
ZXIgTGF5ZXIiXTsKICNlbmRpZiAgICAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9
CiAKIERyYXdpbmdCdWZmZXI6On5EcmF3aW5nQnVmZmVyKCkKIHsKLSAgICBtX2NvbnRleHQtPmJp
bmRGcmFtZWJ1ZmZlcihtX2ZyYW1lYnVmZmVyKTsKLSAgICBtX2NvbnRleHQtPmRlbGV0ZUZyYW1l
YnVmZmVyKG1fZnJhbWVidWZmZXIpOworICAgIGNsZWFyKCk7CiB9CiAKIHZvaWQgRHJhd2luZ0J1
ZmZlcjo6cmVzZXQoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKIHsKKyAgICBpZiAoIW1fY29udGV4
dCkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKICAgICBpZiAobV9zaXplID09IG5ld1NpemUp
CiAgICAgICAgIHJldHVybjsKICAgICBtX3NpemUgPSBuZXdTaXplOwpAQCAtNjgsNyArNzMsNyBA
QCB2b2lkIERyYXdpbmdCdWZmZXI6OnJlc2V0KGNvbnN0IEludFNpemUmCiB9CiAKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi1QbGF0Zm9ybUxheWVyKiBEcmF3aW5nQnVmZmVyOjpw
bGF0Zm9ybUxheWVyKCkKK1BsYXRmb3JtTGF5ZXIqIERyYXdpbmdCdWZmZXI6OnBsYXRmb3JtTGF5
ZXIoKSBjb25zdAogewogICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0KCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70468</attachid>
            <date>2010-10-11 14:32:09 -0700</date>
            <delta_ts>2010-10-11 14:33:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47501-20101011143208.patch</filename>
            <type>text/plain</type>
            <size>14447</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTUyNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMTAtMTAtMTEgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1h
bmFnZSBEcmF3aW5nQnVmZmVyIGxpZmV0aW1lIGluIEdyYXBoaWNzQ29udGV4dDNECisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzUwMQorCisgICAgICAg
IE5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5IG9mIGV4aXN0aW5nIGNvZGUsIHNvIG5vIG5ldyB0
ZXN0cy4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0
ZURyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJl
bW92ZURyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmNsZWFyRHJhd2luZ0J1ZmZlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJh
d2luZ0J1ZmZlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlQ29sb3JU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6fkRyYXdpbmdCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1MYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpyZXNldCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJh
d2luZ0J1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmNs
ZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmJpbmQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3aW5nQnVmZmVyOjpncmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhd2luZ0J1ZmZlcjo6fkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RHJh
d2luZ0J1ZmZlcjo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6cGxh
dGZvcm1MYXllcik6CisKIDIwMTAtMTAtMTEgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEJ1aWxkIGZpeC4KSW5kZXg6IFdlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9uIDY5NTIy
KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzEsNyArMTMxLDcgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpDYW52YXNSZW5kZXJpbgogICAgIG1fY29udGV4dDNEID0gcC0+c2hhcmVkR3JhcGhpY3NDb250
ZXh0M0QoKTsKICAgICBpZiAobV9jb250ZXh0M0QpIHsKICAgICAgICAgaWYgKEdyYXBoaWNzQ29u
dGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCkpIHsKLSAgICAgICAgICAgIG1fZHJhd2luZ0J1ZmZl
ciA9IERyYXdpbmdCdWZmZXI6OmNyZWF0ZShtX2NvbnRleHQzRC5nZXQoKSwgSW50U2l6ZShjYW52
YXMtPndpZHRoKCksIGNhbnZhcy0+aGVpZ2h0KCkpKTsKKyAgICAgICAgICAgIG1fZHJhd2luZ0J1
ZmZlciA9IG1fY29udGV4dDNELT5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVEcmF3aW5nQnVm
ZmVyKEludFNpemUoY2FudmFzLT53aWR0aCgpLCBjYW52YXMtPmhlaWdodCgpKSk7CiAgICAgICAg
ICAgICBjLT5zZXRTaGFyZWRHcmFwaGljc0NvbnRleHQzRChtX2NvbnRleHQzRC5nZXQoKSwgbV9k
cmF3aW5nQnVmZmVyLmdldCgpLCBJbnRTaXplKGNhbnZhcy0+d2lkdGgoKSwgY2FudmFzLT5oZWln
aHQoKSkpOwogICAgICAgICB9CiAgICAgfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHJldmlzaW9uIDY5NTIyKQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogCiAjaW5j
bHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCisjaW5jbHVkZSAiRHJhd2luZ0J1ZmZlci5oIgogI2lu
Y2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAKQEAgLTQxLDYgKzQyLDI2
IEBAIHN0YXRpYyB1aW50OF90IGNvbnZlcnRDb2xvcjE2VG84KHVpbnQxNl8KICAgICByZXR1cm4g
dmFsdWUgPj4gODsKIH0KIAorUGFzc093blB0cjxEcmF3aW5nQnVmZmVyPiBHcmFwaGljc0NvbnRl
eHQzRDo6Y3JlYXRlRHJhd2luZ0J1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIE93
blB0cjxEcmF3aW5nQnVmZmVyPiBkcmF3aW5nQnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRl
KHRoaXMsIHNpemUpOworICAgIG1fZHJhd2luZ0J1ZmZlcnMuYWRkKGRyYXdpbmdCdWZmZXIuZ2V0
KCkpOworICAgIHJldHVybiBkcmF3aW5nQnVmZmVyLnJlbGVhc2UoKTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6cmVtb3ZlRHJhd2luZ0J1ZmZlcihEcmF3aW5nQnVmZmVyKiBkcmF3aW5n
QnVmZmVyKQoreworICAgIG1fZHJhd2luZ0J1ZmZlcnMucmVtb3ZlKGRyYXdpbmdCdWZmZXIpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckRyYXdpbmdCdWZmZXJzKCkKK3sKKyAg
ICBIYXNoU2V0PERyYXdpbmdCdWZmZXIqPjo6aXRlcmF0b3IgZW5kID0gbV9kcmF3aW5nQnVmZmVy
cy5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8RHJhd2luZ0J1ZmZlcio+OjppdGVyYXRvciBpdCA9
IG1fZHJhd2luZ0J1ZmZlcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAoKml0
KS0+Y2xlYXIoKTsKK30KKworCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpjb21wdXRlRm9ybWF0
QW5kVHlwZVBhcmFtZXRlcnModW5zaWduZWQgaW50IGZvcm1hdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdHlwZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBsb25nKiBjb21wb25lbnRzUGVyUGl4ZWwsCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiA2OTUyMikKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsOSArMjYsNiBAQAogI2lmbmRlZiBHcmFwaGljc0NvbnRleHQzRF9oCiAjZGVmaW5l
IEdyYXBoaWNzQ29udGV4dDNEX2gKIAotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJBTkdM
RVdlYktpdEJyaWRnZS5oIgotI2VuZGlmCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKQEAgLTQzLDYgKzQwLDcgQEAKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIkFOR0xFV2ViS2l0QnJpZGdlLmgiCiAjaW5jbHVk
ZSA8T3BlbkdML09wZW5HTC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtNzgs
NiArNzYsNyBAQCBjb25zdCBQbGF0Zm9ybTNET2JqZWN0IE51bGxQbGF0Zm9ybTNET2JqCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ7CitjbGFzcyBE
cmF3aW5nQnVmZmVyOwogY2xhc3MgSG9zdFdpbmRvdzsKIGNsYXNzIEltYWdlOwogY2xhc3MgSW1h
Z2VEYXRhOwpAQCAtNDQyLDcgKzQ0MSw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgc3RhdGlj
IFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZShBdHRyaWJ1dGVzIGF0dHJzLCBI
b3N0V2luZG93KiBob3N0V2luZG93LCBSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSA9IFJlbmRlck9m
ZnNjcmVlbik7Ci0gICAgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0M0QoKTsKKyAgICB+R3JhcGhp
Y3NDb250ZXh0M0QoKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dDNEIHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdCB7IHJldHVybiBtX2Nv
bnRleHRPYmo7IH0KQEAgLTQ2OSw2ICs0NjgsOSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB2b2lk
IG1ha2VDb250ZXh0Q3VycmVudCgpOwogCisgICAgUGFzc093blB0cjxEcmF3aW5nQnVmZmVyPiBj
cmVhdGVEcmF3aW5nQnVmZmVyKGNvbnN0IEludFNpemUmID0gSW50U2l6ZSgpKTsKKyAgICB2b2lk
IHJlbW92ZURyYXdpbmdCdWZmZXIoRHJhd2luZ0J1ZmZlciopOworICAgIAogI2lmIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgLy8gV2l0aCBtdWx0aXNhbXBsaW5nIG9u
LCBibGl0IGZyb20gbXVsdGlzYW1wbGVGQk8gdG8gcmVndWxhciBGQk8uCiAgICAgdm9pZCBwcmVw
YXJlVGV4dHVyZSgpOwpAQCAtNzk3LDYgKzc5OSw4IEBAIHB1YmxpYzoKICAgcHJpdmF0ZToKICAg
ICBHcmFwaGljc0NvbnRleHQzRChBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2lu
ZG93LCBib29sIHJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKIAorICAgIHZvaWQgY2xlYXJE
cmF3aW5nQnVmZmVycygpOworICAgIAogICAgIC8vIEVhY2ggcGxhdGZvcm0gbXVzdCBwcm92aWRl
IGFuIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgbWV0aG9kLgogICAgIC8vCiAgICAgLy8gR2V0cyB0
aGUgZGF0YSBmb3IgdGhlIGdpdmVuIEltYWdlIGludG8gb3V0cHV0VmVjdG9yIGluIHRoZQpAQCAt
ODUzLDYgKzg1Nyw4IEBAIHB1YmxpYzoKIAogICAgIGludCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJy
ZW50SGVpZ2h0OwogCisgICAgSGFzaFNldDxEcmF3aW5nQnVmZmVyKj4gbV9kcmF3aW5nQnVmZmVy
czsKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgIFN0
cmluZyBzb3VyY2U7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Ry
YXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA2OTUy
MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNo
cm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBzdHJ1Y3QgRHJhd2lu
Z0J1ZmZlckludGVybmFsIHsKICNlbmRpZgogfTsKIAotc3RhdGljIHVuc2lnbmVkIGdlbmVyYXRl
Q29sb3JUZXh0dXJlKFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRT
aXplJiBzaXplKQorc3RhdGljIHVuc2lnbmVkIGdlbmVyYXRlQ29sb3JUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIHVuc2lnbmVk
IG9mZnNjcmVlbkNvbG9yVGV4dHVyZSA9IGNvbnRleHQtPmNyZWF0ZVRleHR1cmUoKTsKICAgICBp
ZiAoIW9mZnNjcmVlbkNvbG9yVGV4dHVyZSkKQEAgLTY2LDEzICs2NiwxMyBAQCBzdGF0aWMgdW5z
aWduZWQgZ2VuZXJhdGVDb2xvclRleHR1cmUoU2hhCiB9CiAKIAotRHJhd2luZ0J1ZmZlcjo6RHJh
d2luZ0J1ZmZlcihTaGFyZWRHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50U2l6
ZSYgc2l6ZSwgdW5zaWduZWQgZnJhbWVidWZmZXIpCitEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVm
ZmVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplKQogICAg
IDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3NpemUoc2l6ZSkKLSAgICAsIG1fZnJhbWVi
dWZmZXIoZnJhbWVidWZmZXIpCisgICAgLCBtX2Zibyhjb250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZl
cigpKQogICAgICwgbV9pbnRlcm5hbChuZXcgRHJhd2luZ0J1ZmZlckludGVybmFsKQogewotICAg
IGNvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7CisgICAgY29udGV4dC0+Ymlu
ZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwogICAg
IG1faW50ZXJuYWwtPm9mZnNjcmVlbkNvbG9yVGV4dHVyZSA9IGdlbmVyYXRlQ29sb3JUZXh0dXJl
KGNvbnRleHQsIHNpemUpOwogfQogCkBAIC04MiwxNCArODIsMTkgQEAgRHJhd2luZ0J1ZmZlcjo6
fkRyYXdpbmdCdWZmZXIoKQogICAgIGlmIChtX2ludGVybmFsLT5wbGF0Zm9ybUxheWVyKQogICAg
ICAgICBtX2ludGVybmFsLT5wbGF0Zm9ybUxheWVyLT5zZXREcmF3aW5nQnVmZmVyKDApOwogI2Vu
ZGlmCi0gICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIobV9mcmFtZWJ1ZmZlcik7CisgICAg
bV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIobV9mYm8pOwogICAgIG1fY29udGV4dC0+ZGVsZXRl
VGV4dHVyZShtX2ludGVybmFsLT5vZmZzY3JlZW5Db2xvclRleHR1cmUpOwotICAgIG1fY29udGV4
dC0+ZGVsZXRlRnJhbWVidWZmZXIobV9mcmFtZWJ1ZmZlcik7CisKKyAgICBtX2NvbnRleHQtPnJl
bW92ZURyYXdpbmdCdWZmZXIodGhpcyk7CisgICAgY2xlYXIoKTsKIH0KIAogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKIHZvaWQgRHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZv
cm1MYXllcigpCiB7CisgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICAg
ICAgCiAgICAgaWYgKG1fY2FsbGJhY2spCiAgICAgICAgIG1fY2FsbGJhY2stPndpbGxQdWJsaXNo
KCk7CiAgICAgdW5zaWduZWQgcGFyZW50VGV4dHVyZSA9IG1faW50ZXJuYWwtPnBsYXRmb3JtTGF5
ZXItPnRleHR1cmVJZCgpOwpAQCAtMTA2LDYgKzExMSw5IEBAIHZvaWQgRHJhd2luZ0J1ZmZlcjo6
cHVibGlzaFRvUGxhdGZvcm1MYXkKIAogdm9pZCBEcmF3aW5nQnVmZmVyOjpyZXNldChjb25zdCBJ
bnRTaXplJiBuZXdTaXplKQogeworICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICByZXR1cm47
CisgICAgICAgIAogICAgIGlmIChtX3NpemUgPT0gbmV3U2l6ZSkKICAgICAgICAgcmV0dXJuOwog
ICAgIG1fc2l6ZSA9IG5ld1NpemU7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9EcmF3aW5nQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcAkocmV2aXNpb24gNjk1MjIpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzAsMjcgKzMwLDM4IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIEVOQUJMRShBQ0NF
TEVSQVRFRF8yRF9DQU5WQVMpCisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykgfHwg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiAjaW5jbHVkZSAiRHJhd2luZ0J1ZmZlci5o
IgogCi0jaW5jbHVkZSAiU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaCIKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1QYXNzT3duUHRyPERyYXdpbmdCdWZmZXI+IERyYXdpbmdCdWZmZXI6OmNyZWF0
ZShTaGFyZWRHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkK
K1Bhc3NPd25QdHI8RHJhd2luZ0J1ZmZlcj4gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIE93blB0cjxE
cmF3aW5nQnVmZmVyPiBkcmF3aW5nQnVmZmVyID0gYWRvcHRQdHIobmV3IERyYXdpbmdCdWZmZXIo
Y29udGV4dCwgc2l6ZSkpOworICAgIHJldHVybiAoZHJhd2luZ0J1ZmZlci0+bV9jb250ZXh0KSA/
IGRyYXdpbmdCdWZmZXIucmVsZWFzZSgpIDogMDsKK30KKwordm9pZCBEcmF3aW5nQnVmZmVyOjpj
bGVhcigpCiB7Ci0gICAgdW5zaWduZWQgZnJhbWVidWZmZXIgPSBjb250ZXh0LT5jcmVhdGVGcmFt
ZWJ1ZmZlcigpOwotICAgIEFTU0VSVChmcmFtZWJ1ZmZlcik7Ci0gICAgaWYgKCFmcmFtZWJ1ZmZl
cikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEcmF3aW5nQnVm
ZmVyKGNvbnRleHQsIHNpemUsIGZyYW1lYnVmZmVyKSk7CisgICAgaWYgKCFtX2NvbnRleHQpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Cisg
ICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSLCBtX2Zibyk7CisgICAgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihtX2Zibyk7Cisg
ICAgbV9mYm8gPSAwOworCisgICAgbV9jb250ZXh0ID0gMDsKIH0KIAogdm9pZCBEcmF3aW5nQnVm
ZmVyOjpiaW5kKCkKIHsKLSAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihtX2ZyYW1lYnVm
ZmVyKTsKLSAgICBtX2NvbnRleHQtPnNldFZpZXdwb3J0KG1fc2l6ZSk7CisgICAgaWYgKCFtX2Nv
bnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgbV9jb250ZXh0LT5iaW5kRnJh
bWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CisgICAgbV9j
b250ZXh0LT52aWV3cG9ydCgwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaAkocmV2aXNpb24gNjk1MjIpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDggKzQ0LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRHcmFw
aGljc0NvbnRleHQzRDsKLQogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogc3RydWN0IERyYXdpbmdC
dWZmZXJJbnRlcm5hbDsKICNlbmRpZgpAQCAtNTQsMTUgKzUyLDIwIEBAIHN0cnVjdCBEcmF3aW5n
QnVmZmVySW50ZXJuYWw7CiAvLyByZXN1bHRzIHRvIGEgUGxhdGZvcm1MYXllciBmb3IgY29tcG9z
aXRpbmcuCiBjbGFzcyBEcmF3aW5nQnVmZmVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxEcmF3aW5nQnVmZmVyPiBjcmVhdGUoU2hhcmVkR3Jh
cGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRTaXplJik7CisgICAgZnJpZW5kIGNsYXNzIEdyYXBo
aWNzQ29udGV4dDNEOworICAgIAogICAgIH5EcmF3aW5nQnVmZmVyKCk7CiAKICAgICB2b2lkIHJl
c2V0KGNvbnN0IEludFNpemUmKTsKICAgICB2b2lkIGJpbmQoKTsKICAgICBJbnRTaXplIHNpemUo
KSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIAorICAgICAvLyBDbGVhciBhbGwgcmVzb3VyY2Vz
IGZyb20gdGhpcyBvYmplY3QsIGFzIHdlbGwgYXMgY29udGV4dC4gQ2FsbGVkIHdoZW4gY29udGV4
dCBpcyBkZXN0cm95ZWQKKyAgICAvLyB0byBwcmV2ZW50IGludmFsaWQgYWNjZXNzZXMgdG8gdGhl
IHJlc291cmNlcy4KKyAgICB2b2lkIGNsZWFyKCk7CisgICAgCiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKTsKKyAgICBQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAgICAgdm9pZCBwdWJsaXNoVG9Q
bGF0Zm9ybUxheWVyKCk7CiAjZW5kaWYKIApAQCAtNzksMTIgKzgyLDE3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFdpbGxQdWJsaXNoQ2FsbGJhY2soUGFzc093blB0cjxXaWxsUHVibGlzaENhbGxi
YWNrPiBjYWxsYmFjaykgeyBtX2NhbGxiYWNrID0gY2FsbGJhY2s7IH0KICNlbmRpZgogCisgICAg
R3JhcGhpY3NDb250ZXh0M0QqIGdyYXBoaWNzQ29udGV4dDNEKCkgY29uc3QgeyByZXR1cm4gbV9j
b250ZXh0OyB9CisKK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgUGFzc093blB0cjxEcmF3aW5nQnVm
ZmVyPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRTaXplJik7CisgICAgCiBw
cml2YXRlOgotICAgIERyYXdpbmdCdWZmZXIoU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QqLCBjb25z
dCBJbnRTaXplJiwgdW5zaWduZWQgZnJhbWVidWZmZXIpOworICAgIERyYXdpbmdCdWZmZXIoR3Jh
cGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRTaXplJik7CiAKLSAgICBTaGFyZWRHcmFwaGljc0Nv
bnRleHQzRCogbV9jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CiAg
ICAgSW50U2l6ZSBtX3NpemU7Ci0gICAgdW5zaWduZWQgbV9mcmFtZWJ1ZmZlcjsKKyAgICBQbGF0
Zm9ybTNET2JqZWN0IG1fZmJvOwogCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgT3duUHRy
PFdpbGxQdWJsaXNoQ2FsbGJhY2s+IG1fY2FsbGJhY2s7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgJKHJl
dmlzaW9uIDY5NTIyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3Jh
cGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDYgKzExOCw4IEBAIHB1Ymxp
YzoKICAgICAvLyB0aGUgdGV4dHVyZS4KICAgICBQYXNzUmVmUHRyPFRleHR1cmU+IGNyZWF0ZVRl
eHR1cmUoVGV4dHVyZTo6Rm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogCisgICAgR3Jh
cGhpY3NDb250ZXh0M0QqIGdyYXBoaWNzQ29udGV4dDNEKCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZXh0LmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QoUGFz
c093blB0cjxHcmFwaGljc0NvbnRleHQzRD4sIFBhc3NPd25QdHI8U29saWRGaWxsU2hhZGVyPiwg
UGFzc093blB0cjxUZXhTaGFkZXI+KTsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvbWFjL0RyYXdpbmdCdWZmZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvbWFjL0RyYXdpbmdCdWZmZXJNYWMubW0JKHJldmlzaW9uIDY5NTIy
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbWFjL0RyYXdpbmdCdWZmZXJNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDQxICsyNSw0NyBAQAogCiAjaW5jbHVkZSAiY29uZmln
LmgiCiAKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorI2lmIEVOQUJMRShBQ0NF
TEVSQVRFRF8yRF9DQU5WQVMpIHx8IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogI2lu
Y2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKIAotI2luY2x1ZGUgIlNoYXJlZEdyYXBoaWNzQ29udGV4
dDNELmgiCiAjaW5jbHVkZSAiV2ViR0xMYXllci5oIgogCiAjaW1wb3J0ICJCbG9ja0V4Y2VwdGlv
bnMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVm
ZmVyKFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXpl
LCB1bnNpZ25lZCBmcmFtZWJ1ZmZlcikKK0RyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgOiBtX2Nv
bnRleHQoY29udGV4dCkKICAgICAsIG1fc2l6ZShzaXplKQotICAgICwgbV9mcmFtZWJ1ZmZlcihm
cmFtZWJ1ZmZlcikKKyAgICAsIG1fZmJvKGNvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCkpCiB7
Ci0gICAgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKLQorICAgIEFTU0VS
VChtX2Zibyk7CisgICAgaWYgKCFtX2ZibykgeworICAgICAgICBjbGVhcigpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgICAgICAKICAgICAvLyBDcmVhdGUgdGhlIFdlYkdMTGF5ZXIKICAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgbV9wbGF0Zm9ybUxheWVyLmFk
b3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aEdyYXBoaWNzQ29udGV4dDNEOjBdKTsK
KyAgICAgICAgbV9wbGF0Zm9ybUxheWVyLmFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0
V2l0aEdyYXBoaWNzQ29udGV4dDNEOmNvbnRleHRdKTsKICNpZm5kZWYgTkRFQlVHCi0gICAgICAg
IFttX3BsYXRmb3JtTGF5ZXIuZ2V0KCkgc2V0TmFtZTpAIldlYkdMIExheWVyIl07CisgICAgICAg
IFttX3BsYXRmb3JtTGF5ZXIuZ2V0KCkgc2V0TmFtZTpAIkRyYXdpbmdCdWZmZXIgTGF5ZXIiXTsK
ICNlbmRpZiAgICAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKIERyYXdpbmdC
dWZmZXI6On5EcmF3aW5nQnVmZmVyKCkKIHsKLSAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZl
cihtX2ZyYW1lYnVmZmVyKTsKLSAgICBtX2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKG1fZnJh
bWVidWZmZXIpOworICAgIG1fY29udGV4dC0+cmVtb3ZlRHJhd2luZ0J1ZmZlcih0aGlzKTsKKyAg
ICBjbGVhcigpOwogfQogCiB2b2lkIERyYXdpbmdCdWZmZXI6OnJlc2V0KGNvbnN0IEludFNpemUm
IG5ld1NpemUpCiB7CisgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICAg
ICAgCiAgICAgaWYgKG1fc2l6ZSA9PSBuZXdTaXplKQogICAgICAgICByZXR1cm47CiAgICAgbV9z
aXplID0gbmV3U2l6ZTsKQEAgLTY4LDcgKzc0LDcgQEAgdm9pZCBEcmF3aW5nQnVmZmVyOjpyZXNl
dChjb25zdCBJbnRTaXplJgogfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQot
UGxhdGZvcm1MYXllciogRHJhd2luZ0J1ZmZlcjo6cGxhdGZvcm1MYXllcigpCitQbGF0Zm9ybUxh
eWVyKiBEcmF3aW5nQnVmZmVyOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9wbGF0Zm9ybUxheWVyLmdldCgpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70469</attachid>
            <date>2010-10-11 14:33:13 -0700</date>
            <delta_ts>2010-10-11 14:41:46 -0700</delta_ts>
            <desc>Patch adding removeDrawingBuffer calls and fixing more Chromium build problems</desc>
            <filename>bug-47501-20101011143312.patch</filename>
            <type>text/plain</type>
            <size>14479</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTUyNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMTAtMTAtMTEgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1h
bmFnZSBEcmF3aW5nQnVmZmVyIGxpZmV0aW1lIGluIEdyYXBoaWNzQ29udGV4dDNECisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzUwMQorCisgICAgICAg
IE5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5IG9mIGV4aXN0aW5nIGNvZGUsIHNvIG5vIG5ldyB0
ZXN0cy4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0
ZURyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJl
bW92ZURyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmNsZWFyRHJhd2luZ0J1ZmZlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJh
d2luZ0J1ZmZlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlQ29sb3JU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6fkRyYXdpbmdCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1MYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpyZXNldCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJh
d2luZ0J1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmNs
ZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmJpbmQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3aW5nQnVmZmVyOjpncmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhd2luZ0J1ZmZlcjo6fkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RHJh
d2luZ0J1ZmZlcjo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6cGxh
dGZvcm1MYXllcik6CisKIDIwMTAtMTAtMTEgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEJ1aWxkIGZpeC4KSW5kZXg6IFdlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9uIDY5NTIy
KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzEsNyArMTMxLDcgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpDYW52YXNSZW5kZXJpbgogICAgIG1fY29udGV4dDNEID0gcC0+c2hhcmVkR3JhcGhpY3NDb250
ZXh0M0QoKTsKICAgICBpZiAobV9jb250ZXh0M0QpIHsKICAgICAgICAgaWYgKEdyYXBoaWNzQ29u
dGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCkpIHsKLSAgICAgICAgICAgIG1fZHJhd2luZ0J1ZmZl
ciA9IERyYXdpbmdCdWZmZXI6OmNyZWF0ZShtX2NvbnRleHQzRC5nZXQoKSwgSW50U2l6ZShjYW52
YXMtPndpZHRoKCksIGNhbnZhcy0+aGVpZ2h0KCkpKTsKKyAgICAgICAgICAgIG1fZHJhd2luZ0J1
ZmZlciA9IG1fY29udGV4dDNELT5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVEcmF3aW5nQnVm
ZmVyKEludFNpemUoY2FudmFzLT53aWR0aCgpLCBjYW52YXMtPmhlaWdodCgpKSk7CiAgICAgICAg
ICAgICBjLT5zZXRTaGFyZWRHcmFwaGljc0NvbnRleHQzRChtX2NvbnRleHQzRC5nZXQoKSwgbV9k
cmF3aW5nQnVmZmVyLmdldCgpLCBJbnRTaXplKGNhbnZhcy0+d2lkdGgoKSwgY2FudmFzLT5oZWln
aHQoKSkpOwogICAgICAgICB9CiAgICAgfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHJldmlzaW9uIDY5NTIyKQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogCiAjaW5j
bHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCisjaW5jbHVkZSAiRHJhd2luZ0J1ZmZlci5oIgogI2lu
Y2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAKQEAgLTQxLDYgKzQyLDI2
IEBAIHN0YXRpYyB1aW50OF90IGNvbnZlcnRDb2xvcjE2VG84KHVpbnQxNl8KICAgICByZXR1cm4g
dmFsdWUgPj4gODsKIH0KIAorUGFzc093blB0cjxEcmF3aW5nQnVmZmVyPiBHcmFwaGljc0NvbnRl
eHQzRDo6Y3JlYXRlRHJhd2luZ0J1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIE93
blB0cjxEcmF3aW5nQnVmZmVyPiBkcmF3aW5nQnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRl
KHRoaXMsIHNpemUpOworICAgIG1fZHJhd2luZ0J1ZmZlcnMuYWRkKGRyYXdpbmdCdWZmZXIuZ2V0
KCkpOworICAgIHJldHVybiBkcmF3aW5nQnVmZmVyLnJlbGVhc2UoKTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6cmVtb3ZlRHJhd2luZ0J1ZmZlcihEcmF3aW5nQnVmZmVyKiBkcmF3aW5n
QnVmZmVyKQoreworICAgIG1fZHJhd2luZ0J1ZmZlcnMucmVtb3ZlKGRyYXdpbmdCdWZmZXIpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckRyYXdpbmdCdWZmZXJzKCkKK3sKKyAg
ICBIYXNoU2V0PERyYXdpbmdCdWZmZXIqPjo6aXRlcmF0b3IgZW5kID0gbV9kcmF3aW5nQnVmZmVy
cy5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8RHJhd2luZ0J1ZmZlcio+OjppdGVyYXRvciBpdCA9
IG1fZHJhd2luZ0J1ZmZlcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAoKml0
KS0+Y2xlYXIoKTsKK30KKworCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpjb21wdXRlRm9ybWF0
QW5kVHlwZVBhcmFtZXRlcnModW5zaWduZWQgaW50IGZvcm1hdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdHlwZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBsb25nKiBjb21wb25lbnRzUGVyUGl4ZWwsCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiA2OTUyMikKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsOSArMjYsNiBAQAogI2lmbmRlZiBHcmFwaGljc0NvbnRleHQzRF9oCiAjZGVmaW5l
IEdyYXBoaWNzQ29udGV4dDNEX2gKIAotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJBTkdM
RVdlYktpdEJyaWRnZS5oIgotI2VuZGlmCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKQEAgLTQzLDYgKzQwLDcgQEAKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIkFOR0xFV2ViS2l0QnJpZGdlLmgiCiAjaW5jbHVk
ZSA8T3BlbkdML09wZW5HTC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtNzgs
NiArNzYsNyBAQCBjb25zdCBQbGF0Zm9ybTNET2JqZWN0IE51bGxQbGF0Zm9ybTNET2JqCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ7CitjbGFzcyBE
cmF3aW5nQnVmZmVyOwogY2xhc3MgSG9zdFdpbmRvdzsKIGNsYXNzIEltYWdlOwogY2xhc3MgSW1h
Z2VEYXRhOwpAQCAtNDQyLDcgKzQ0MSw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgc3RhdGlj
IFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZShBdHRyaWJ1dGVzIGF0dHJzLCBI
b3N0V2luZG93KiBob3N0V2luZG93LCBSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSA9IFJlbmRlck9m
ZnNjcmVlbik7Ci0gICAgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0M0QoKTsKKyAgICB+R3JhcGhp
Y3NDb250ZXh0M0QoKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dDNEIHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdCB7IHJldHVybiBtX2Nv
bnRleHRPYmo7IH0KQEAgLTQ2OSw2ICs0NjgsOSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB2b2lk
IG1ha2VDb250ZXh0Q3VycmVudCgpOwogCisgICAgUGFzc093blB0cjxEcmF3aW5nQnVmZmVyPiBj
cmVhdGVEcmF3aW5nQnVmZmVyKGNvbnN0IEludFNpemUmID0gSW50U2l6ZSgpKTsKKyAgICB2b2lk
IHJlbW92ZURyYXdpbmdCdWZmZXIoRHJhd2luZ0J1ZmZlciopOworICAgIAogI2lmIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgLy8gV2l0aCBtdWx0aXNhbXBsaW5nIG9u
LCBibGl0IGZyb20gbXVsdGlzYW1wbGVGQk8gdG8gcmVndWxhciBGQk8uCiAgICAgdm9pZCBwcmVw
YXJlVGV4dHVyZSgpOwpAQCAtNzk3LDYgKzc5OSw4IEBAIHB1YmxpYzoKICAgcHJpdmF0ZToKICAg
ICBHcmFwaGljc0NvbnRleHQzRChBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2lu
ZG93LCBib29sIHJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKIAorICAgIHZvaWQgY2xlYXJE
cmF3aW5nQnVmZmVycygpOworICAgIAogICAgIC8vIEVhY2ggcGxhdGZvcm0gbXVzdCBwcm92aWRl
IGFuIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgbWV0aG9kLgogICAgIC8vCiAgICAgLy8gR2V0cyB0
aGUgZGF0YSBmb3IgdGhlIGdpdmVuIEltYWdlIGludG8gb3V0cHV0VmVjdG9yIGluIHRoZQpAQCAt
ODUzLDYgKzg1Nyw4IEBAIHB1YmxpYzoKIAogICAgIGludCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJy
ZW50SGVpZ2h0OwogCisgICAgSGFzaFNldDxEcmF3aW5nQnVmZmVyKj4gbV9kcmF3aW5nQnVmZmVy
czsKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgIFN0
cmluZyBzb3VyY2U7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Ry
YXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA2OTUy
MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNo
cm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBzdHJ1Y3QgRHJhd2lu
Z0J1ZmZlckludGVybmFsIHsKICNlbmRpZgogfTsKIAotc3RhdGljIHVuc2lnbmVkIGdlbmVyYXRl
Q29sb3JUZXh0dXJlKFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRT
aXplJiBzaXplKQorc3RhdGljIHVuc2lnbmVkIGdlbmVyYXRlQ29sb3JUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIHVuc2lnbmVk
IG9mZnNjcmVlbkNvbG9yVGV4dHVyZSA9IGNvbnRleHQtPmNyZWF0ZVRleHR1cmUoKTsKICAgICBp
ZiAoIW9mZnNjcmVlbkNvbG9yVGV4dHVyZSkKQEAgLTY2LDEzICs2NiwxMyBAQCBzdGF0aWMgdW5z
aWduZWQgZ2VuZXJhdGVDb2xvclRleHR1cmUoU2hhCiB9CiAKIAotRHJhd2luZ0J1ZmZlcjo6RHJh
d2luZ0J1ZmZlcihTaGFyZWRHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50U2l6
ZSYgc2l6ZSwgdW5zaWduZWQgZnJhbWVidWZmZXIpCitEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVm
ZmVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplKQogICAg
IDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3NpemUoc2l6ZSkKLSAgICAsIG1fZnJhbWVi
dWZmZXIoZnJhbWVidWZmZXIpCisgICAgLCBtX2Zibyhjb250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZl
cigpKQogICAgICwgbV9pbnRlcm5hbChuZXcgRHJhd2luZ0J1ZmZlckludGVybmFsKQogewotICAg
IGNvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7CisgICAgY29udGV4dC0+Ymlu
ZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwogICAg
IG1faW50ZXJuYWwtPm9mZnNjcmVlbkNvbG9yVGV4dHVyZSA9IGdlbmVyYXRlQ29sb3JUZXh0dXJl
KGNvbnRleHQsIHNpemUpOwogfQogCkBAIC04MiwxNCArODIsMTkgQEAgRHJhd2luZ0J1ZmZlcjo6
fkRyYXdpbmdCdWZmZXIoKQogICAgIGlmIChtX2ludGVybmFsLT5wbGF0Zm9ybUxheWVyKQogICAg
ICAgICBtX2ludGVybmFsLT5wbGF0Zm9ybUxheWVyLT5zZXREcmF3aW5nQnVmZmVyKDApOwogI2Vu
ZGlmCi0gICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIobV9mcmFtZWJ1ZmZlcik7CisgICAg
bV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCBtX2Zibyk7CiAgICAgbV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKG1faW50ZXJuYWwtPm9mZnNj
cmVlbkNvbG9yVGV4dHVyZSk7Ci0gICAgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihtX2Zy
YW1lYnVmZmVyKTsKKworICAgIG1fY29udGV4dC0+cmVtb3ZlRHJhd2luZ0J1ZmZlcih0aGlzKTsK
KyAgICBjbGVhcigpOwogfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogdm9p
ZCBEcmF3aW5nQnVmZmVyOjpwdWJsaXNoVG9QbGF0Zm9ybUxheWVyKCkKIHsKKyAgICBpZiAoIW1f
Y29udGV4dCkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKICAgICBpZiAobV9jYWxsYmFjaykK
ICAgICAgICAgbV9jYWxsYmFjay0+d2lsbFB1Ymxpc2goKTsKICAgICB1bnNpZ25lZCBwYXJlbnRU
ZXh0dXJlID0gbV9pbnRlcm5hbC0+cGxhdGZvcm1MYXllci0+dGV4dHVyZUlkKCk7CkBAIC0xMDYs
NiArMTExLDkgQEAgdm9pZCBEcmF3aW5nQnVmZmVyOjpwdWJsaXNoVG9QbGF0Zm9ybUxheQogCiB2
b2lkIERyYXdpbmdCdWZmZXI6OnJlc2V0KGNvbnN0IEludFNpemUmIG5ld1NpemUpCiB7CisgICAg
aWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCiAgICAgaWYgKG1fc2l6
ZSA9PSBuZXdTaXplKQogICAgICAgICByZXR1cm47CiAgICAgbV9zaXplID0gbmV3U2l6ZTsKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3Bw
CShyZXZpc2lvbiA2OTUyMikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdp
bmdCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwyNyArMzAsMzggQEAKIAogI2luY2x1
ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyNpZiBF
TkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSB8fCBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCiAKICNpbmNsdWRlICJEcmF3aW5nQnVmZmVyLmgiCiAKLSNpbmNsdWRlICJTaGFyZWRHcmFw
aGljc0NvbnRleHQzRC5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NPd25QdHI8RHJh
d2luZ0J1ZmZlcj4gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKFNoYXJlZEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplKQorUGFzc093blB0cjxEcmF3aW5nQnVmZmVy
PiBEcmF3aW5nQnVmZmVyOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0
IEludFNpemUmIHNpemUpCit7CisgICAgT3duUHRyPERyYXdpbmdCdWZmZXI+IGRyYXdpbmdCdWZm
ZXIgPSBhZG9wdFB0cihuZXcgRHJhd2luZ0J1ZmZlcihjb250ZXh0LCBzaXplKSk7CisgICAgcmV0
dXJuIChkcmF3aW5nQnVmZmVyLT5tX2NvbnRleHQpID8gZHJhd2luZ0J1ZmZlci5yZWxlYXNlKCkg
OiAwOworfQorCit2b2lkIERyYXdpbmdCdWZmZXI6OmNsZWFyKCkKIHsKLSAgICB1bnNpZ25lZCBm
cmFtZWJ1ZmZlciA9IGNvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCk7Ci0gICAgQVNTRVJUKGZy
YW1lYnVmZmVyKTsKLSAgICBpZiAoIWZyYW1lYnVmZmVyKQotICAgICAgICByZXR1cm4gMDsKLSAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IERyYXdpbmdCdWZmZXIoY29udGV4dCwgc2l6ZSwgZnJhbWVi
dWZmZXIpKTsKKyAgICBpZiAoIW1fY29udGV4dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1
ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKKyAgICBtX2NvbnRl
eHQtPmRlbGV0ZUZyYW1lYnVmZmVyKG1fZmJvKTsKKyAgICBtX2ZibyA9IDA7CisKKyAgICBtX2Nv
bnRleHQgPSAwOwogfQogCiB2b2lkIERyYXdpbmdCdWZmZXI6OmJpbmQoKQogewotICAgIG1fY29u
dGV4dC0+YmluZEZyYW1lYnVmZmVyKG1fZnJhbWVidWZmZXIpOwotICAgIG1fY29udGV4dC0+c2V0
Vmlld3BvcnQobV9zaXplKTsKKyAgICBpZiAoIW1fY29udGV4dCkKKyAgICAgICAgcmV0dXJuOwor
ICAgICAgICAKKyAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKKyAgICBtX2NvbnRleHQtPnZpZXdwb3J0KDAsIDAsIG1f
c2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZl
ci5oCShyZXZpc2lvbiA2OTUyMikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0Ry
YXdpbmdCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsOCArNDQsNiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOwotCiAjaWYgUExB
VEZPUk0oQ0hST01JVU0pCiBzdHJ1Y3QgRHJhd2luZ0J1ZmZlckludGVybmFsOwogI2VuZGlmCkBA
IC01NCwxNSArNTIsMjAgQEAgc3RydWN0IERyYXdpbmdCdWZmZXJJbnRlcm5hbDsKIC8vIHJlc3Vs
dHMgdG8gYSBQbGF0Zm9ybUxheWVyIGZvciBjb21wb3NpdGluZy4KIGNsYXNzIERyYXdpbmdCdWZm
ZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PERyYXdpbmdCdWZmZXI+IGNyZWF0ZShTaGFyZWRHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IElu
dFNpemUmKTsKKyAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CisgICAgCiAgICAg
fkRyYXdpbmdCdWZmZXIoKTsKIAogICAgIHZvaWQgcmVzZXQoY29uc3QgSW50U2l6ZSYpOwogICAg
IHZvaWQgYmluZCgpOwogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsg
fQogCisgICAgIC8vIENsZWFyIGFsbCByZXNvdXJjZXMgZnJvbSB0aGlzIG9iamVjdCwgYXMgd2Vs
bCBhcyBjb250ZXh0LiBDYWxsZWQgd2hlbiBjb250ZXh0IGlzIGRlc3Ryb3llZAorICAgIC8vIHRv
IHByZXZlbnQgaW52YWxpZCBhY2Nlc3NlcyB0byB0aGUgcmVzb3VyY2VzLgorICAgIHZvaWQgY2xl
YXIoKTsKKyAgICAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpOworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIoKSBjb25zdDsKICAgICB2b2lkIHB1Ymxpc2hUb1BsYXRmb3JtTGF5ZXIoKTsKICNlbmRpZgog
CkBAIC03OSwxMiArODIsMTcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2lsbFB1Ymxpc2hDYWxs
YmFjayhQYXNzT3duUHRyPFdpbGxQdWJsaXNoQ2FsbGJhY2s+IGNhbGxiYWNrKSB7IG1fY2FsbGJh
Y2sgPSBjYWxsYmFjazsgfQogI2VuZGlmCiAKKyAgICBHcmFwaGljc0NvbnRleHQzRCogZ3JhcGhp
Y3NDb250ZXh0M0QoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQ7IH0KKworcHJvdGVjdGVkOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPERyYXdpbmdCdWZmZXI+IGNyZWF0ZShHcmFwaGljc0NvbnRl
eHQzRCosIGNvbnN0IEludFNpemUmKTsKKyAgICAKIHByaXZhdGU6Ci0gICAgRHJhd2luZ0J1ZmZl
cihTaGFyZWRHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFNpemUmLCB1bnNpZ25lZCBmcmFt
ZWJ1ZmZlcik7CisgICAgRHJhd2luZ0J1ZmZlcihHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IElu
dFNpemUmKTsKIAotICAgIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CisgICAg
R3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKICAgICBJbnRTaXplIG1fc2l6ZTsKLSAgICB1
bnNpZ25lZCBtX2ZyYW1lYnVmZmVyOworICAgIFBsYXRmb3JtM0RPYmplY3QgbV9mYm87CiAKICNp
ZiBQTEFURk9STShDSFJPTUlVTSkKICAgICBPd25QdHI8V2lsbFB1Ymxpc2hDYWxsYmFjaz4gbV9j
YWxsYmFjazsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBo
aWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24gNjk1MjIpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTgsNiArMTE4LDggQEAgcHVibGljOgogICAgIC8vIHRoZSB0ZXh0dXJlLgog
ICAgIFBhc3NSZWZQdHI8VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlOjpGb3JtYXQsIGlu
dCB3aWR0aCwgaW50IGhlaWdodCk7CiAKKyAgICBHcmFwaGljc0NvbnRleHQzRCogZ3JhcGhpY3ND
b250ZXh0M0QoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KKwogcHJpdmF0ZToK
ICAgICBTaGFyZWRHcmFwaGljc0NvbnRleHQzRChQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiwgUGFzc093blB0cjxTb2xpZEZpbGxTaGFkZXI+LCBQYXNzT3duUHRyPFRleFNoYWRlcj4pOwog
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJh
d2luZ0J1ZmZlck1hYy5tbQkocmV2aXNpb24gNjk1MjIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUs
NDEgKzI1LDQ3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIEVOQUJMRShBQ0NFTEVS
QVRFRF8yRF9DQU5WQVMpCisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykgfHwgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiAjaW5jbHVkZSAiRHJhd2luZ0J1ZmZlci5oIgog
Ci0jaW5jbHVkZSAiU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJXZWJHTExh
eWVyLmgiCiAKICNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLURyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIoU2hhcmVkR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIGNvbnN0IEludFNpemUmIHNpemUsIHVuc2lnbmVkIGZyYW1lYnVmZmVyKQor
RHJhd2luZ0J1ZmZlcjo6RHJhd2luZ0J1ZmZlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9z
aXplKHNpemUpCi0gICAgLCBtX2ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKQorICAgICwgbV9mYm8o
Y29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKSkKIHsKLSAgICBjb250ZXh0LT5iaW5kRnJhbWVi
dWZmZXIoZnJhbWVidWZmZXIpOwotCisgICAgQVNTRVJUKG1fZmJvKTsKKyAgICBpZiAoIW1fZmJv
KSB7CisgICAgICAgIGNsZWFyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAog
ICAgIC8vIENyZWF0ZSB0aGUgV2ViR0xMYXllcgogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotICAgICAgICBtX3BsYXRmb3JtTGF5ZXIuYWRvcHROUyhbW1dlYkdMTGF5ZXIgYWxsb2Nd
IGluaXRXaXRoR3JhcGhpY3NDb250ZXh0M0Q6MF0pOworICAgICAgICBtX3BsYXRmb3JtTGF5ZXIu
YWRvcHROUyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRoR3JhcGhpY3NDb250ZXh0M0Q6Y29u
dGV4dF0pOwogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgW21fcGxhdGZvcm1MYXllci5nZXQoKSBz
ZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKKyAgICAgICAgW21fcGxhdGZvcm1MYXllci5nZXQoKSBz
ZXROYW1lOkAiRHJhd2luZ0J1ZmZlciBMYXllciJdOwogI2VuZGlmICAgIAogICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKIH0KIAogRHJhd2luZ0J1ZmZlcjo6fkRyYXdpbmdCdWZmZXIoKQog
ewotICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKG1fZnJhbWVidWZmZXIpOwotICAgIG1f
Y29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIobV9mcmFtZWJ1ZmZlcik7CisgICAgbV9jb250ZXh0
LT5yZW1vdmVEcmF3aW5nQnVmZmVyKHRoaXMpOworICAgIGNsZWFyKCk7CiB9CiAKIHZvaWQgRHJh
d2luZ0J1ZmZlcjo6cmVzZXQoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKIHsKKyAgICBpZiAoIW1f
Y29udGV4dCkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKICAgICBpZiAobV9zaXplID09IG5l
d1NpemUpCiAgICAgICAgIHJldHVybjsKICAgICBtX3NpemUgPSBuZXdTaXplOwpAQCAtNjgsNyAr
NzQsNyBAQCB2b2lkIERyYXdpbmdCdWZmZXI6OnJlc2V0KGNvbnN0IEludFNpemUmCiB9CiAKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi1QbGF0Zm9ybUxheWVyKiBEcmF3aW5nQnVm
ZmVyOjpwbGF0Zm9ybUxheWVyKCkKK1BsYXRmb3JtTGF5ZXIqIERyYXdpbmdCdWZmZXI6OnBsYXRm
b3JtTGF5ZXIoKSBjb25zdAogewogICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0KCk7CiB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70473</attachid>
            <date>2010-10-11 14:41:50 -0700</date>
            <delta_ts>2010-10-11 15:31:17 -0700</delta_ts>
            <desc>Patch adding protection against null m_context in DrawingBuffer ctors</desc>
            <filename>bug-47501-20101011144148.patch</filename>
            <type>text/plain</type>
            <size>14577</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTUyNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMTAtMTAtMTEgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1h
bmFnZSBEcmF3aW5nQnVmZmVyIGxpZmV0aW1lIGluIEdyYXBoaWNzQ29udGV4dDNECisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzUwMQorCisgICAgICAg
IE5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5IG9mIGV4aXN0aW5nIGNvZGUsIHNvIG5vIG5ldyB0
ZXN0cy4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0
ZURyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJl
bW92ZURyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmNsZWFyRHJhd2luZ0J1ZmZlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJh
d2luZ0J1ZmZlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlQ29sb3JU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6fkRyYXdpbmdCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1MYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpyZXNldCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJh
d2luZ0J1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmNs
ZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmJpbmQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3aW5nQnVmZmVyOjpncmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhd2luZ0J1ZmZlcjo6fkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RHJh
d2luZ0J1ZmZlcjo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6cGxh
dGZvcm1MYXllcik6CisKIDIwMTAtMTAtMTEgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEJ1aWxkIGZpeC4KSW5kZXg6IFdlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9uIDY5NTIy
KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzEsNyArMTMxLDcgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpDYW52YXNSZW5kZXJpbgogICAgIG1fY29udGV4dDNEID0gcC0+c2hhcmVkR3JhcGhpY3NDb250
ZXh0M0QoKTsKICAgICBpZiAobV9jb250ZXh0M0QpIHsKICAgICAgICAgaWYgKEdyYXBoaWNzQ29u
dGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCkpIHsKLSAgICAgICAgICAgIG1fZHJhd2luZ0J1ZmZl
ciA9IERyYXdpbmdCdWZmZXI6OmNyZWF0ZShtX2NvbnRleHQzRC5nZXQoKSwgSW50U2l6ZShjYW52
YXMtPndpZHRoKCksIGNhbnZhcy0+aGVpZ2h0KCkpKTsKKyAgICAgICAgICAgIG1fZHJhd2luZ0J1
ZmZlciA9IG1fY29udGV4dDNELT5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVEcmF3aW5nQnVm
ZmVyKEludFNpemUoY2FudmFzLT53aWR0aCgpLCBjYW52YXMtPmhlaWdodCgpKSk7CiAgICAgICAg
ICAgICBjLT5zZXRTaGFyZWRHcmFwaGljc0NvbnRleHQzRChtX2NvbnRleHQzRC5nZXQoKSwgbV9k
cmF3aW5nQnVmZmVyLmdldCgpLCBJbnRTaXplKGNhbnZhcy0+d2lkdGgoKSwgY2FudmFzLT5oZWln
aHQoKSkpOwogICAgICAgICB9CiAgICAgfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHJldmlzaW9uIDY5NTIyKQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogCiAjaW5j
bHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCisjaW5jbHVkZSAiRHJhd2luZ0J1ZmZlci5oIgogI2lu
Y2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAKQEAgLTQxLDYgKzQyLDI2
IEBAIHN0YXRpYyB1aW50OF90IGNvbnZlcnRDb2xvcjE2VG84KHVpbnQxNl8KICAgICByZXR1cm4g
dmFsdWUgPj4gODsKIH0KIAorUGFzc093blB0cjxEcmF3aW5nQnVmZmVyPiBHcmFwaGljc0NvbnRl
eHQzRDo6Y3JlYXRlRHJhd2luZ0J1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIE93
blB0cjxEcmF3aW5nQnVmZmVyPiBkcmF3aW5nQnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRl
KHRoaXMsIHNpemUpOworICAgIG1fZHJhd2luZ0J1ZmZlcnMuYWRkKGRyYXdpbmdCdWZmZXIuZ2V0
KCkpOworICAgIHJldHVybiBkcmF3aW5nQnVmZmVyLnJlbGVhc2UoKTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6cmVtb3ZlRHJhd2luZ0J1ZmZlcihEcmF3aW5nQnVmZmVyKiBkcmF3aW5n
QnVmZmVyKQoreworICAgIG1fZHJhd2luZ0J1ZmZlcnMucmVtb3ZlKGRyYXdpbmdCdWZmZXIpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckRyYXdpbmdCdWZmZXJzKCkKK3sKKyAg
ICBIYXNoU2V0PERyYXdpbmdCdWZmZXIqPjo6aXRlcmF0b3IgZW5kID0gbV9kcmF3aW5nQnVmZmVy
cy5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8RHJhd2luZ0J1ZmZlcio+OjppdGVyYXRvciBpdCA9
IG1fZHJhd2luZ0J1ZmZlcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAoKml0
KS0+Y2xlYXIoKTsKK30KKworCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpjb21wdXRlRm9ybWF0
QW5kVHlwZVBhcmFtZXRlcnModW5zaWduZWQgaW50IGZvcm1hdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdHlwZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBsb25nKiBjb21wb25lbnRzUGVyUGl4ZWwsCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiA2OTUyMikKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsOSArMjYsNiBAQAogI2lmbmRlZiBHcmFwaGljc0NvbnRleHQzRF9oCiAjZGVmaW5l
IEdyYXBoaWNzQ29udGV4dDNEX2gKIAotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJBTkdM
RVdlYktpdEJyaWRnZS5oIgotI2VuZGlmCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKQEAgLTQzLDYgKzQwLDcgQEAKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIkFOR0xFV2ViS2l0QnJpZGdlLmgiCiAjaW5jbHVk
ZSA8T3BlbkdML09wZW5HTC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtNzgs
NiArNzYsNyBAQCBjb25zdCBQbGF0Zm9ybTNET2JqZWN0IE51bGxQbGF0Zm9ybTNET2JqCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ7CitjbGFzcyBE
cmF3aW5nQnVmZmVyOwogY2xhc3MgSG9zdFdpbmRvdzsKIGNsYXNzIEltYWdlOwogY2xhc3MgSW1h
Z2VEYXRhOwpAQCAtNDQyLDcgKzQ0MSw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgc3RhdGlj
IFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZShBdHRyaWJ1dGVzIGF0dHJzLCBI
b3N0V2luZG93KiBob3N0V2luZG93LCBSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSA9IFJlbmRlck9m
ZnNjcmVlbik7Ci0gICAgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0M0QoKTsKKyAgICB+R3JhcGhp
Y3NDb250ZXh0M0QoKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dDNEIHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdCB7IHJldHVybiBtX2Nv
bnRleHRPYmo7IH0KQEAgLTQ2OSw2ICs0NjgsOSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB2b2lk
IG1ha2VDb250ZXh0Q3VycmVudCgpOwogCisgICAgUGFzc093blB0cjxEcmF3aW5nQnVmZmVyPiBj
cmVhdGVEcmF3aW5nQnVmZmVyKGNvbnN0IEludFNpemUmID0gSW50U2l6ZSgpKTsKKyAgICB2b2lk
IHJlbW92ZURyYXdpbmdCdWZmZXIoRHJhd2luZ0J1ZmZlciopOworICAgIAogI2lmIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgLy8gV2l0aCBtdWx0aXNhbXBsaW5nIG9u
LCBibGl0IGZyb20gbXVsdGlzYW1wbGVGQk8gdG8gcmVndWxhciBGQk8uCiAgICAgdm9pZCBwcmVw
YXJlVGV4dHVyZSgpOwpAQCAtNzk3LDYgKzc5OSw4IEBAIHB1YmxpYzoKICAgcHJpdmF0ZToKICAg
ICBHcmFwaGljc0NvbnRleHQzRChBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2lu
ZG93LCBib29sIHJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKIAorICAgIHZvaWQgY2xlYXJE
cmF3aW5nQnVmZmVycygpOworICAgIAogICAgIC8vIEVhY2ggcGxhdGZvcm0gbXVzdCBwcm92aWRl
IGFuIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgbWV0aG9kLgogICAgIC8vCiAgICAgLy8gR2V0cyB0
aGUgZGF0YSBmb3IgdGhlIGdpdmVuIEltYWdlIGludG8gb3V0cHV0VmVjdG9yIGluIHRoZQpAQCAt
ODUzLDYgKzg1Nyw4IEBAIHB1YmxpYzoKIAogICAgIGludCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJy
ZW50SGVpZ2h0OwogCisgICAgSGFzaFNldDxEcmF3aW5nQnVmZmVyKj4gbV9kcmF3aW5nQnVmZmVy
czsKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgIFN0
cmluZyBzb3VyY2U7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Ry
YXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA2OTUy
MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNo
cm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBzdHJ1Y3QgRHJhd2lu
Z0J1ZmZlckludGVybmFsIHsKICNlbmRpZgogfTsKIAotc3RhdGljIHVuc2lnbmVkIGdlbmVyYXRl
Q29sb3JUZXh0dXJlKFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRT
aXplJiBzaXplKQorc3RhdGljIHVuc2lnbmVkIGdlbmVyYXRlQ29sb3JUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIHVuc2lnbmVk
IG9mZnNjcmVlbkNvbG9yVGV4dHVyZSA9IGNvbnRleHQtPmNyZWF0ZVRleHR1cmUoKTsKICAgICBp
ZiAoIW9mZnNjcmVlbkNvbG9yVGV4dHVyZSkKQEAgLTY2LDEzICs2NiwxMyBAQCBzdGF0aWMgdW5z
aWduZWQgZ2VuZXJhdGVDb2xvclRleHR1cmUoU2hhCiB9CiAKIAotRHJhd2luZ0J1ZmZlcjo6RHJh
d2luZ0J1ZmZlcihTaGFyZWRHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50U2l6
ZSYgc2l6ZSwgdW5zaWduZWQgZnJhbWVidWZmZXIpCitEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVm
ZmVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplKQogICAg
IDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3NpemUoc2l6ZSkKLSAgICAsIG1fZnJhbWVi
dWZmZXIoZnJhbWVidWZmZXIpCisgICAgLCBtX2Zibyhjb250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZl
cigpKQogICAgICwgbV9pbnRlcm5hbChuZXcgRHJhd2luZ0J1ZmZlckludGVybmFsKQogewotICAg
IGNvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7CisgICAgY29udGV4dC0+Ymlu
ZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwogICAg
IG1faW50ZXJuYWwtPm9mZnNjcmVlbkNvbG9yVGV4dHVyZSA9IGdlbmVyYXRlQ29sb3JUZXh0dXJl
KGNvbnRleHQsIHNpemUpOwogfQogCkBAIC04MiwxNCArODIsMjMgQEAgRHJhd2luZ0J1ZmZlcjo6
fkRyYXdpbmdCdWZmZXIoKQogICAgIGlmIChtX2ludGVybmFsLT5wbGF0Zm9ybUxheWVyKQogICAg
ICAgICBtX2ludGVybmFsLT5wbGF0Zm9ybUxheWVyLT5zZXREcmF3aW5nQnVmZmVyKDApOwogI2Vu
ZGlmCi0gICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIobV9mcmFtZWJ1ZmZlcik7CisKKyAg
ICBpZiAoIW1fY29udGV4dCkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBtX2NvbnRl
eHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJv
KTsKICAgICBtX2NvbnRleHQtPmRlbGV0ZVRleHR1cmUobV9pbnRlcm5hbC0+b2Zmc2NyZWVuQ29s
b3JUZXh0dXJlKTsKLSAgICBtX2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKG1fZnJhbWVidWZm
ZXIpOworCisgICAgbV9jb250ZXh0LT5yZW1vdmVEcmF3aW5nQnVmZmVyKHRoaXMpOworICAgIGNs
ZWFyKCk7CiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiB2b2lkIERyYXdp
bmdCdWZmZXI6OnB1Ymxpc2hUb1BsYXRmb3JtTGF5ZXIoKQogeworICAgIGlmICghbV9jb250ZXh0
KQorICAgICAgICByZXR1cm47CisgICAgICAgIAogICAgIGlmIChtX2NhbGxiYWNrKQogICAgICAg
ICBtX2NhbGxiYWNrLT53aWxsUHVibGlzaCgpOwogICAgIHVuc2lnbmVkIHBhcmVudFRleHR1cmUg
PSBtX2ludGVybmFsLT5wbGF0Zm9ybUxheWVyLT50ZXh0dXJlSWQoKTsKQEAgLTEwNiw2ICsxMTUs
OSBAQCB2b2lkIERyYXdpbmdCdWZmZXI6OnB1Ymxpc2hUb1BsYXRmb3JtTGF5CiAKIHZvaWQgRHJh
d2luZ0J1ZmZlcjo6cmVzZXQoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKIHsKKyAgICBpZiAoIW1f
Y29udGV4dCkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKICAgICBpZiAobV9zaXplID09IG5l
d1NpemUpCiAgICAgICAgIHJldHVybjsKICAgICBtX3NpemUgPSBuZXdTaXplOwpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5jcHAJKHJldmlz
aW9uIDY5NTIyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDI3ICszMCwzOCBAQAogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorI2lmIEVOQUJMRShB
Q0NFTEVSQVRFRF8yRF9DQU5WQVMpIHx8IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAog
I2luY2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKIAotI2luY2x1ZGUgIlNoYXJlZEdyYXBoaWNzQ29u
dGV4dDNELmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxEcmF3aW5nQnVm
ZmVyPiBEcmF3aW5nQnVmZmVyOjpjcmVhdGUoU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIGNvbnN0IEludFNpemUmIHNpemUpCitQYXNzT3duUHRyPERyYXdpbmdCdWZmZXI+IERyYXdp
bmdCdWZmZXI6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50U2l6
ZSYgc2l6ZSkKK3sKKyAgICBPd25QdHI8RHJhd2luZ0J1ZmZlcj4gZHJhd2luZ0J1ZmZlciA9IGFk
b3B0UHRyKG5ldyBEcmF3aW5nQnVmZmVyKGNvbnRleHQsIHNpemUpKTsKKyAgICByZXR1cm4gKGRy
YXdpbmdCdWZmZXItPm1fY29udGV4dCkgPyBkcmF3aW5nQnVmZmVyLnJlbGVhc2UoKSA6IDA7Cit9
CisKK3ZvaWQgRHJhd2luZ0J1ZmZlcjo6Y2xlYXIoKQogewotICAgIHVuc2lnbmVkIGZyYW1lYnVm
ZmVyID0gY29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKTsKLSAgICBBU1NFUlQoZnJhbWVidWZm
ZXIpOwotICAgIGlmICghZnJhbWVidWZmZXIpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVy
biBhZG9wdFB0cihuZXcgRHJhd2luZ0J1ZmZlcihjb250ZXh0LCBzaXplLCBmcmFtZWJ1ZmZlcikp
OworICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOworICAgIG1fY29udGV4dC0+ZGVs
ZXRlRnJhbWVidWZmZXIobV9mYm8pOworICAgIG1fZmJvID0gMDsKKworICAgIG1fY29udGV4dCA9
IDA7CiB9CiAKIHZvaWQgRHJhd2luZ0J1ZmZlcjo6YmluZCgpCiB7Ci0gICAgbV9jb250ZXh0LT5i
aW5kRnJhbWVidWZmZXIobV9mcmFtZWJ1ZmZlcik7Ci0gICAgbV9jb250ZXh0LT5zZXRWaWV3cG9y
dChtX3NpemUpOworICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgICAg
IAorICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgbV9mYm8pOworICAgIG1fY29udGV4dC0+dmlld3BvcnQoMCwgMCwgbV9zaXplLndp
ZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmgJKHJl
dmlzaW9uIDY5NTIyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1
ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw4ICs0NCw2IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q7Ci0KICNpZiBQTEFURk9STShD
SFJPTUlVTSkKIHN0cnVjdCBEcmF3aW5nQnVmZmVySW50ZXJuYWw7CiAjZW5kaWYKQEAgLTU0LDE1
ICs1MiwyMCBAQCBzdHJ1Y3QgRHJhd2luZ0J1ZmZlckludGVybmFsOwogLy8gcmVzdWx0cyB0byBh
IFBsYXRmb3JtTGF5ZXIgZm9yIGNvbXBvc2l0aW5nLgogY2xhc3MgRHJhd2luZ0J1ZmZlciA6IHB1
YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8RHJhd2lu
Z0J1ZmZlcj4gY3JlYXRlKFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50U2l6ZSYp
OworICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKKyAgICAKICAgICB+RHJhd2lu
Z0J1ZmZlcigpOwogCiAgICAgdm9pZCByZXNldChjb25zdCBJbnRTaXplJik7CiAgICAgdm9pZCBi
aW5kKCk7CiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAKKyAg
ICAgLy8gQ2xlYXIgYWxsIHJlc291cmNlcyBmcm9tIHRoaXMgb2JqZWN0LCBhcyB3ZWxsIGFzIGNv
bnRleHQuIENhbGxlZCB3aGVuIGNvbnRleHQgaXMgZGVzdHJveWVkCisgICAgLy8gdG8gcHJldmVu
dCBpbnZhbGlkIGFjY2Vzc2VzIHRvIHRoZSByZXNvdXJjZXMuCisgICAgdm9pZCBjbGVhcigpOwor
ICAgIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCk7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNv
bnN0OwogICAgIHZvaWQgcHVibGlzaFRvUGxhdGZvcm1MYXllcigpOwogI2VuZGlmCiAKQEAgLTc5
LDEyICs4MiwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXaWxsUHVibGlzaENhbGxiYWNrKFBh
c3NPd25QdHI8V2lsbFB1Ymxpc2hDYWxsYmFjaz4gY2FsbGJhY2spIHsgbV9jYWxsYmFjayA9IGNh
bGxiYWNrOyB9CiAjZW5kaWYKIAorICAgIEdyYXBoaWNzQ29udGV4dDNEKiBncmFwaGljc0NvbnRl
eHQzRCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dDsgfQorCitwcm90ZWN0ZWQ6CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8RHJhd2luZ0J1ZmZlcj4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiwg
Y29uc3QgSW50U2l6ZSYpOworICAgIAogcHJpdmF0ZToKLSAgICBEcmF3aW5nQnVmZmVyKFNoYXJl
ZEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50U2l6ZSYsIHVuc2lnbmVkIGZyYW1lYnVmZmVy
KTsKKyAgICBEcmF3aW5nQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50U2l6ZSYp
OwogCi0gICAgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKKyAgICBHcmFwaGlj
c0NvbnRleHQzRCogbV9jb250ZXh0OwogICAgIEludFNpemUgbV9zaXplOwotICAgIHVuc2lnbmVk
IG1fZnJhbWVidWZmZXI7CisgICAgUGxhdGZvcm0zRE9iamVjdCBtX2ZibzsKIAogI2lmIFBMQVRG
T1JNKENIUk9NSVVNKQogICAgIE93blB0cjxXaWxsUHVibGlzaENhbGxiYWNrPiBtX2NhbGxiYWNr
OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250
ZXh0M0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFy
ZWRHcmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiA2OTUyMikKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29weSkK
QEAgLTExOCw2ICsxMTgsOCBAQCBwdWJsaWM6CiAgICAgLy8gdGhlIHRleHR1cmUuCiAgICAgUGFz
c1JlZlB0cjxUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmU6OkZvcm1hdCwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KTsKIAorICAgIEdyYXBoaWNzQ29udGV4dDNEKiBncmFwaGljc0NvbnRleHQz
RCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQorCiBwcml2YXRlOgogICAgIFNo
YXJlZEdyYXBoaWNzQ29udGV4dDNEKFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBQYXNz
T3duUHRyPFNvbGlkRmlsbFNoYWRlcj4sIFBhc3NPd25QdHI8VGV4U2hhZGVyPik7CiAKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L21hYy9EcmF3aW5nQnVmZmVyTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L21hYy9EcmF3aW5nQnVm
ZmVyTWFjLm1tCShyZXZpc2lvbiA2OTUyMikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L21hYy9EcmF3aW5nQnVmZmVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw0MSArMjUs
NTAgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJE
X0NBTlZBUykKKyNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSB8fCBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCiAKICNpbmNsdWRlICJEcmF3aW5nQnVmZmVyLmgiCiAKLSNpbmNs
dWRlICJTaGFyZWRHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIldlYkdMTGF5ZXIuaCIK
IAogI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
RHJhd2luZ0J1ZmZlcjo6RHJhd2luZ0J1ZmZlcihTaGFyZWRHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgdW5zaWduZWQgZnJhbWVidWZmZXIpCitEcmF3aW5n
QnVmZmVyOjpEcmF3aW5nQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJ
bnRTaXplJiBzaXplKQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3NpemUoc2l6
ZSkKLSAgICAsIG1fZnJhbWVidWZmZXIoZnJhbWVidWZmZXIpCisgICAgLCBtX2Zibyhjb250ZXh0
LT5jcmVhdGVGcmFtZWJ1ZmZlcigpKQogewotICAgIGNvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihm
cmFtZWJ1ZmZlcik7Ci0KKyAgICBBU1NFUlQobV9mYm8pOworICAgIGlmICghbV9mYm8pIHsKKyAg
ICAgICAgY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCiAgICAgLy8g
Q3JlYXRlIHRoZSBXZWJHTExheWVyCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0g
ICAgICAgIG1fcGxhdGZvcm1MYXllci5hZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdp
dGhHcmFwaGljc0NvbnRleHQzRDowXSk7CisgICAgICAgIG1fcGxhdGZvcm1MYXllci5hZG9wdE5T
KFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhHcmFwaGljc0NvbnRleHQzRDpjb250ZXh0XSk7
CiAjaWZuZGVmIE5ERUJVRwotICAgICAgICBbbV9wbGF0Zm9ybUxheWVyLmdldCgpIHNldE5hbWU6
QCJXZWJHTCBMYXllciJdOworICAgICAgICBbbV9wbGF0Zm9ybUxheWVyLmdldCgpIHNldE5hbWU6
QCJEcmF3aW5nQnVmZmVyIExheWVyIl07CiAjZW5kaWYgICAgCiAgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwogfQogCiBEcmF3aW5nQnVmZmVyOjp+RHJhd2luZ0J1ZmZlcigpCiB7Ci0gICAg
bV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIobV9mcmFtZWJ1ZmZlcik7Ci0gICAgbV9jb250ZXh0
LT5kZWxldGVGcmFtZWJ1ZmZlcihtX2ZyYW1lYnVmZmVyKTsKKyAgICBpZiAoIW1fY29udGV4dCkK
KyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBtX2NvbnRleHQtPnJlbW92ZURyYXdpbmdC
dWZmZXIodGhpcyk7CisgICAgY2xlYXIoKTsKIH0KIAogdm9pZCBEcmF3aW5nQnVmZmVyOjpyZXNl
dChjb25zdCBJbnRTaXplJiBuZXdTaXplKQogeworICAgIGlmICghbV9jb250ZXh0KQorICAgICAg
ICByZXR1cm47CisgICAgICAgIAogICAgIGlmIChtX3NpemUgPT0gbmV3U2l6ZSkKICAgICAgICAg
cmV0dXJuOwogICAgIG1fc2l6ZSA9IG5ld1NpemU7CkBAIC02OCw3ICs3Nyw3IEBAIHZvaWQgRHJh
d2luZ0J1ZmZlcjo6cmVzZXQoY29uc3QgSW50U2l6ZSYKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKLVBsYXRmb3JtTGF5ZXIqIERyYXdpbmdCdWZmZXI6OnBsYXRmb3JtTGF5
ZXIoKQorUGxhdGZvcm1MYXllciogRHJhd2luZ0J1ZmZlcjo6cGxhdGZvcm1MYXllcigpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllci5nZXQoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70480</attachid>
            <date>2010-10-11 15:30:06 -0700</date>
            <delta_ts>2010-10-11 15:37:18 -0700</delta_ts>
            <desc>Patch fixing another Chromium build issue</desc>
            <filename>bug-47501-20101011153005.patch</filename>
            <type>text/plain</type>
            <size>14894</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTUyNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMTAtMTAtMTEgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1h
bmFnZSBEcmF3aW5nQnVmZmVyIGxpZmV0aW1lIGluIEdyYXBoaWNzQ29udGV4dDNECisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzUwMQorCisgICAgICAg
IE5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5IG9mIGV4aXN0aW5nIGNvZGUsIHNvIG5vIG5ldyB0
ZXN0cy4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0
ZURyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJl
bW92ZURyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmNsZWFyRHJhd2luZ0J1ZmZlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJh
d2luZ0J1ZmZlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlQ29sb3JU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6fkRyYXdpbmdCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1MYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpyZXNldCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJh
d2luZ0J1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmNs
ZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmJpbmQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3aW5nQnVmZmVyOjpncmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhd2luZ0J1ZmZlcjo6fkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RHJh
d2luZ0J1ZmZlcjo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6cGxh
dGZvcm1MYXllcik6CisKIDIwMTAtMTAtMTEgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEJ1aWxkIGZpeC4KSW5kZXg6IFdlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9uIDY5NTIy
KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzEsNyArMTMxLDcgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpDYW52YXNSZW5kZXJpbgogICAgIG1fY29udGV4dDNEID0gcC0+c2hhcmVkR3JhcGhpY3NDb250
ZXh0M0QoKTsKICAgICBpZiAobV9jb250ZXh0M0QpIHsKICAgICAgICAgaWYgKEdyYXBoaWNzQ29u
dGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCkpIHsKLSAgICAgICAgICAgIG1fZHJhd2luZ0J1ZmZl
ciA9IERyYXdpbmdCdWZmZXI6OmNyZWF0ZShtX2NvbnRleHQzRC5nZXQoKSwgSW50U2l6ZShjYW52
YXMtPndpZHRoKCksIGNhbnZhcy0+aGVpZ2h0KCkpKTsKKyAgICAgICAgICAgIG1fZHJhd2luZ0J1
ZmZlciA9IG1fY29udGV4dDNELT5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVEcmF3aW5nQnVm
ZmVyKEludFNpemUoY2FudmFzLT53aWR0aCgpLCBjYW52YXMtPmhlaWdodCgpKSk7CiAgICAgICAg
ICAgICBjLT5zZXRTaGFyZWRHcmFwaGljc0NvbnRleHQzRChtX2NvbnRleHQzRC5nZXQoKSwgbV9k
cmF3aW5nQnVmZmVyLmdldCgpLCBJbnRTaXplKGNhbnZhcy0+d2lkdGgoKSwgY2FudmFzLT5oZWln
aHQoKSkpOwogICAgICAgICB9CiAgICAgfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHJldmlzaW9uIDY5NTIyKQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogCiAjaW5j
bHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCisjaW5jbHVkZSAiRHJhd2luZ0J1ZmZlci5oIgogI2lu
Y2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAKQEAgLTQxLDYgKzQyLDI2
IEBAIHN0YXRpYyB1aW50OF90IGNvbnZlcnRDb2xvcjE2VG84KHVpbnQxNl8KICAgICByZXR1cm4g
dmFsdWUgPj4gODsKIH0KIAorUGFzc093blB0cjxEcmF3aW5nQnVmZmVyPiBHcmFwaGljc0NvbnRl
eHQzRDo6Y3JlYXRlRHJhd2luZ0J1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIE93
blB0cjxEcmF3aW5nQnVmZmVyPiBkcmF3aW5nQnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRl
KHRoaXMsIHNpemUpOworICAgIG1fZHJhd2luZ0J1ZmZlcnMuYWRkKGRyYXdpbmdCdWZmZXIuZ2V0
KCkpOworICAgIHJldHVybiBkcmF3aW5nQnVmZmVyLnJlbGVhc2UoKTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6cmVtb3ZlRHJhd2luZ0J1ZmZlcihEcmF3aW5nQnVmZmVyKiBkcmF3aW5n
QnVmZmVyKQoreworICAgIG1fZHJhd2luZ0J1ZmZlcnMucmVtb3ZlKGRyYXdpbmdCdWZmZXIpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckRyYXdpbmdCdWZmZXJzKCkKK3sKKyAg
ICBIYXNoU2V0PERyYXdpbmdCdWZmZXIqPjo6aXRlcmF0b3IgZW5kID0gbV9kcmF3aW5nQnVmZmVy
cy5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8RHJhd2luZ0J1ZmZlcio+OjppdGVyYXRvciBpdCA9
IG1fZHJhd2luZ0J1ZmZlcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAoKml0
KS0+Y2xlYXIoKTsKK30KKworCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpjb21wdXRlRm9ybWF0
QW5kVHlwZVBhcmFtZXRlcnModW5zaWduZWQgaW50IGZvcm1hdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdHlwZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBsb25nKiBjb21wb25lbnRzUGVyUGl4ZWwsCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiA2OTUyMikKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsOSArMjYsNiBAQAogI2lmbmRlZiBHcmFwaGljc0NvbnRleHQzRF9oCiAjZGVmaW5l
IEdyYXBoaWNzQ29udGV4dDNEX2gKIAotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJBTkdM
RVdlYktpdEJyaWRnZS5oIgotI2VuZGlmCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKQEAgLTQzLDYgKzQwLDcgQEAKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIkFOR0xFV2ViS2l0QnJpZGdlLmgiCiAjaW5jbHVk
ZSA8T3BlbkdML09wZW5HTC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtNzgs
NiArNzYsNyBAQCBjb25zdCBQbGF0Zm9ybTNET2JqZWN0IE51bGxQbGF0Zm9ybTNET2JqCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ7CitjbGFzcyBE
cmF3aW5nQnVmZmVyOwogY2xhc3MgSG9zdFdpbmRvdzsKIGNsYXNzIEltYWdlOwogY2xhc3MgSW1h
Z2VEYXRhOwpAQCAtNDQyLDcgKzQ0MSw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgc3RhdGlj
IFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZShBdHRyaWJ1dGVzIGF0dHJzLCBI
b3N0V2luZG93KiBob3N0V2luZG93LCBSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSA9IFJlbmRlck9m
ZnNjcmVlbik7Ci0gICAgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0M0QoKTsKKyAgICB+R3JhcGhp
Y3NDb250ZXh0M0QoKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dDNEIHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdCB7IHJldHVybiBtX2Nv
bnRleHRPYmo7IH0KQEAgLTQ2OSw2ICs0NjgsOSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB2b2lk
IG1ha2VDb250ZXh0Q3VycmVudCgpOwogCisgICAgUGFzc093blB0cjxEcmF3aW5nQnVmZmVyPiBj
cmVhdGVEcmF3aW5nQnVmZmVyKGNvbnN0IEludFNpemUmID0gSW50U2l6ZSgpKTsKKyAgICB2b2lk
IHJlbW92ZURyYXdpbmdCdWZmZXIoRHJhd2luZ0J1ZmZlciopOworICAgIAogI2lmIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgLy8gV2l0aCBtdWx0aXNhbXBsaW5nIG9u
LCBibGl0IGZyb20gbXVsdGlzYW1wbGVGQk8gdG8gcmVndWxhciBGQk8uCiAgICAgdm9pZCBwcmVw
YXJlVGV4dHVyZSgpOwpAQCAtNzk3LDYgKzc5OSw4IEBAIHB1YmxpYzoKICAgcHJpdmF0ZToKICAg
ICBHcmFwaGljc0NvbnRleHQzRChBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2lu
ZG93LCBib29sIHJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKIAorICAgIHZvaWQgY2xlYXJE
cmF3aW5nQnVmZmVycygpOworICAgIAogICAgIC8vIEVhY2ggcGxhdGZvcm0gbXVzdCBwcm92aWRl
IGFuIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgbWV0aG9kLgogICAgIC8vCiAgICAgLy8gR2V0cyB0
aGUgZGF0YSBmb3IgdGhlIGdpdmVuIEltYWdlIGludG8gb3V0cHV0VmVjdG9yIGluIHRoZQpAQCAt
ODUzLDYgKzg1Nyw4IEBAIHB1YmxpYzoKIAogICAgIGludCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJy
ZW50SGVpZ2h0OwogCisgICAgSGFzaFNldDxEcmF3aW5nQnVmZmVyKj4gbV9kcmF3aW5nQnVmZmVy
czsKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgIFN0
cmluZyBzb3VyY2U7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Ry
YXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA2OTUy
MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNo
cm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBzdHJ1Y3QgRHJhd2lu
Z0J1ZmZlckludGVybmFsIHsKICNlbmRpZgogfTsKIAotc3RhdGljIHVuc2lnbmVkIGdlbmVyYXRl
Q29sb3JUZXh0dXJlKFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRT
aXplJiBzaXplKQorc3RhdGljIHVuc2lnbmVkIGdlbmVyYXRlQ29sb3JUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIHVuc2lnbmVk
IG9mZnNjcmVlbkNvbG9yVGV4dHVyZSA9IGNvbnRleHQtPmNyZWF0ZVRleHR1cmUoKTsKICAgICBp
ZiAoIW9mZnNjcmVlbkNvbG9yVGV4dHVyZSkKQEAgLTY2LDEzICs2NiwxMyBAQCBzdGF0aWMgdW5z
aWduZWQgZ2VuZXJhdGVDb2xvclRleHR1cmUoU2hhCiB9CiAKIAotRHJhd2luZ0J1ZmZlcjo6RHJh
d2luZ0J1ZmZlcihTaGFyZWRHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50U2l6
ZSYgc2l6ZSwgdW5zaWduZWQgZnJhbWVidWZmZXIpCitEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVm
ZmVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplKQogICAg
IDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3NpemUoc2l6ZSkKLSAgICAsIG1fZnJhbWVi
dWZmZXIoZnJhbWVidWZmZXIpCisgICAgLCBtX2Zibyhjb250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZl
cigpKQogICAgICwgbV9pbnRlcm5hbChuZXcgRHJhd2luZ0J1ZmZlckludGVybmFsKQogewotICAg
IGNvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7CisgICAgY29udGV4dC0+Ymlu
ZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwogICAg
IG1faW50ZXJuYWwtPm9mZnNjcmVlbkNvbG9yVGV4dHVyZSA9IGdlbmVyYXRlQ29sb3JUZXh0dXJl
KGNvbnRleHQsIHNpemUpOwogfQogCkBAIC04MiwxNCArODIsMjMgQEAgRHJhd2luZ0J1ZmZlcjo6
fkRyYXdpbmdCdWZmZXIoKQogICAgIGlmIChtX2ludGVybmFsLT5wbGF0Zm9ybUxheWVyKQogICAg
ICAgICBtX2ludGVybmFsLT5wbGF0Zm9ybUxheWVyLT5zZXREcmF3aW5nQnVmZmVyKDApOwogI2Vu
ZGlmCi0gICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIobV9mcmFtZWJ1ZmZlcik7CisKKyAg
ICBpZiAoIW1fY29udGV4dCkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBtX2NvbnRl
eHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJv
KTsKICAgICBtX2NvbnRleHQtPmRlbGV0ZVRleHR1cmUobV9pbnRlcm5hbC0+b2Zmc2NyZWVuQ29s
b3JUZXh0dXJlKTsKLSAgICBtX2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKG1fZnJhbWVidWZm
ZXIpOworCisgICAgbV9jb250ZXh0LT5yZW1vdmVEcmF3aW5nQnVmZmVyKHRoaXMpOworICAgIGNs
ZWFyKCk7CiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiB2b2lkIERyYXdp
bmdCdWZmZXI6OnB1Ymxpc2hUb1BsYXRmb3JtTGF5ZXIoKQogeworICAgIGlmICghbV9jb250ZXh0
KQorICAgICAgICByZXR1cm47CisgICAgICAgIAogICAgIGlmIChtX2NhbGxiYWNrKQogICAgICAg
ICBtX2NhbGxiYWNrLT53aWxsUHVibGlzaCgpOwogICAgIHVuc2lnbmVkIHBhcmVudFRleHR1cmUg
PSBtX2ludGVybmFsLT5wbGF0Zm9ybUxheWVyLT50ZXh0dXJlSWQoKTsKQEAgLTEwNiw2ICsxMTUs
OSBAQCB2b2lkIERyYXdpbmdCdWZmZXI6OnB1Ymxpc2hUb1BsYXRmb3JtTGF5CiAKIHZvaWQgRHJh
d2luZ0J1ZmZlcjo6cmVzZXQoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKIHsKKyAgICBpZiAoIW1f
Y29udGV4dCkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKICAgICBpZiAobV9zaXplID09IG5l
d1NpemUpCiAgICAgICAgIHJldHVybjsKICAgICBtX3NpemUgPSBuZXdTaXplOwpAQCAtMTIwLDcg
KzEzMiw3IEBAIHZvaWQgRHJhd2luZ0J1ZmZlcjo6cmVzZXQoY29uc3QgSW50U2l6ZSYKIH0KIAog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLVBsYXRmb3JtTGF5ZXIqIERyYXdpbmdC
dWZmZXI6OnBsYXRmb3JtTGF5ZXIoKQorUGxhdGZvcm1MYXllciogRHJhd2luZ0J1ZmZlcjo6cGxh
dGZvcm1MYXllcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ludGVybmFsLT5wbGF0Zm9ybUxheWVy
KQogICAgICAgICBtX2ludGVybmFsLT5wbGF0Zm9ybUxheWVyID0gQ2FudmFzMkRMYXllckNocm9t
aXVtOjpjcmVhdGUodGhpcywgMCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9EcmF3aW5nQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcAkocmV2aXNpb24gNjk1MjIpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzAsMjcgKzMwLDM4IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIEVOQUJMRShBQ0NF
TEVSQVRFRF8yRF9DQU5WQVMpCisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykgfHwg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiAjaW5jbHVkZSAiRHJhd2luZ0J1ZmZlci5o
IgogCi0jaW5jbHVkZSAiU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaCIKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1QYXNzT3duUHRyPERyYXdpbmdCdWZmZXI+IERyYXdpbmdCdWZmZXI6OmNyZWF0
ZShTaGFyZWRHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkK
K1Bhc3NPd25QdHI8RHJhd2luZ0J1ZmZlcj4gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIE93blB0cjxE
cmF3aW5nQnVmZmVyPiBkcmF3aW5nQnVmZmVyID0gYWRvcHRQdHIobmV3IERyYXdpbmdCdWZmZXIo
Y29udGV4dCwgc2l6ZSkpOworICAgIHJldHVybiAoZHJhd2luZ0J1ZmZlci0+bV9jb250ZXh0KSA/
IGRyYXdpbmdCdWZmZXIucmVsZWFzZSgpIDogMDsKK30KKwordm9pZCBEcmF3aW5nQnVmZmVyOjpj
bGVhcigpCiB7Ci0gICAgdW5zaWduZWQgZnJhbWVidWZmZXIgPSBjb250ZXh0LT5jcmVhdGVGcmFt
ZWJ1ZmZlcigpOwotICAgIEFTU0VSVChmcmFtZWJ1ZmZlcik7Ci0gICAgaWYgKCFmcmFtZWJ1ZmZl
cikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEcmF3aW5nQnVm
ZmVyKGNvbnRleHQsIHNpemUsIGZyYW1lYnVmZmVyKSk7CisgICAgaWYgKCFtX2NvbnRleHQpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Cisg
ICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSLCBtX2Zibyk7CisgICAgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihtX2Zibyk7Cisg
ICAgbV9mYm8gPSAwOworCisgICAgbV9jb250ZXh0ID0gMDsKIH0KIAogdm9pZCBEcmF3aW5nQnVm
ZmVyOjpiaW5kKCkKIHsKLSAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihtX2ZyYW1lYnVm
ZmVyKTsKLSAgICBtX2NvbnRleHQtPnNldFZpZXdwb3J0KG1fc2l6ZSk7CisgICAgaWYgKCFtX2Nv
bnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgbV9jb250ZXh0LT5iaW5kRnJh
bWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CisgICAgbV9j
b250ZXh0LT52aWV3cG9ydCgwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaAkocmV2aXNpb24gNjk1MjIpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDggKzQ0LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRHcmFw
aGljc0NvbnRleHQzRDsKLQogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogc3RydWN0IERyYXdpbmdC
dWZmZXJJbnRlcm5hbDsKICNlbmRpZgpAQCAtNTQsMTUgKzUyLDIwIEBAIHN0cnVjdCBEcmF3aW5n
QnVmZmVySW50ZXJuYWw7CiAvLyByZXN1bHRzIHRvIGEgUGxhdGZvcm1MYXllciBmb3IgY29tcG9z
aXRpbmcuCiBjbGFzcyBEcmF3aW5nQnVmZmVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxEcmF3aW5nQnVmZmVyPiBjcmVhdGUoU2hhcmVkR3Jh
cGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRTaXplJik7CisgICAgZnJpZW5kIGNsYXNzIEdyYXBo
aWNzQ29udGV4dDNEOworICAgIAogICAgIH5EcmF3aW5nQnVmZmVyKCk7CiAKICAgICB2b2lkIHJl
c2V0KGNvbnN0IEludFNpemUmKTsKICAgICB2b2lkIGJpbmQoKTsKICAgICBJbnRTaXplIHNpemUo
KSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIAorICAgICAvLyBDbGVhciBhbGwgcmVzb3VyY2Vz
IGZyb20gdGhpcyBvYmplY3QsIGFzIHdlbGwgYXMgY29udGV4dC4gQ2FsbGVkIHdoZW4gY29udGV4
dCBpcyBkZXN0cm95ZWQKKyAgICAvLyB0byBwcmV2ZW50IGludmFsaWQgYWNjZXNzZXMgdG8gdGhl
IHJlc291cmNlcy4KKyAgICB2b2lkIGNsZWFyKCk7CisgICAgCiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKTsKKyAgICBQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAgICAgdm9pZCBwdWJsaXNoVG9Q
bGF0Zm9ybUxheWVyKCk7CiAjZW5kaWYKIApAQCAtNzksMTIgKzgyLDE3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFdpbGxQdWJsaXNoQ2FsbGJhY2soUGFzc093blB0cjxXaWxsUHVibGlzaENhbGxi
YWNrPiBjYWxsYmFjaykgeyBtX2NhbGxiYWNrID0gY2FsbGJhY2s7IH0KICNlbmRpZgogCisgICAg
R3JhcGhpY3NDb250ZXh0M0QqIGdyYXBoaWNzQ29udGV4dDNEKCkgY29uc3QgeyByZXR1cm4gbV9j
b250ZXh0OyB9CisKK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgUGFzc093blB0cjxEcmF3aW5nQnVm
ZmVyPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRTaXplJik7CisgICAgCiBw
cml2YXRlOgotICAgIERyYXdpbmdCdWZmZXIoU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QqLCBjb25z
dCBJbnRTaXplJiwgdW5zaWduZWQgZnJhbWVidWZmZXIpOworICAgIERyYXdpbmdCdWZmZXIoR3Jh
cGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRTaXplJik7CiAKLSAgICBTaGFyZWRHcmFwaGljc0Nv
bnRleHQzRCogbV9jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CiAg
ICAgSW50U2l6ZSBtX3NpemU7Ci0gICAgdW5zaWduZWQgbV9mcmFtZWJ1ZmZlcjsKKyAgICBQbGF0
Zm9ybTNET2JqZWN0IG1fZmJvOwogCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgT3duUHRy
PFdpbGxQdWJsaXNoQ2FsbGJhY2s+IG1fY2FsbGJhY2s7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgJKHJl
dmlzaW9uIDY5NTIyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3Jh
cGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDYgKzExOCw4IEBAIHB1Ymxp
YzoKICAgICAvLyB0aGUgdGV4dHVyZS4KICAgICBQYXNzUmVmUHRyPFRleHR1cmU+IGNyZWF0ZVRl
eHR1cmUoVGV4dHVyZTo6Rm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogCisgICAgR3Jh
cGhpY3NDb250ZXh0M0QqIGdyYXBoaWNzQ29udGV4dDNEKCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZXh0LmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QoUGFz
c093blB0cjxHcmFwaGljc0NvbnRleHQzRD4sIFBhc3NPd25QdHI8U29saWRGaWxsU2hhZGVyPiwg
UGFzc093blB0cjxUZXhTaGFkZXI+KTsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvbWFjL0RyYXdpbmdCdWZmZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvbWFjL0RyYXdpbmdCdWZmZXJNYWMubW0JKHJldmlzaW9uIDY5NTIy
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbWFjL0RyYXdpbmdCdWZmZXJNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDQxICsyNSw1MCBAQAogCiAjaW5jbHVkZSAiY29uZmln
LmgiCiAKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorI2lmIEVOQUJMRShBQ0NF
TEVSQVRFRF8yRF9DQU5WQVMpIHx8IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogI2lu
Y2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKIAotI2luY2x1ZGUgIlNoYXJlZEdyYXBoaWNzQ29udGV4
dDNELmgiCiAjaW5jbHVkZSAiV2ViR0xMYXllci5oIgogCiAjaW1wb3J0ICJCbG9ja0V4Y2VwdGlv
bnMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVm
ZmVyKFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXpl
LCB1bnNpZ25lZCBmcmFtZWJ1ZmZlcikKK0RyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgOiBtX2Nv
bnRleHQoY29udGV4dCkKICAgICAsIG1fc2l6ZShzaXplKQotICAgICwgbV9mcmFtZWJ1ZmZlcihm
cmFtZWJ1ZmZlcikKKyAgICAsIG1fZmJvKGNvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCkpCiB7
Ci0gICAgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKLQorICAgIEFTU0VS
VChtX2Zibyk7CisgICAgaWYgKCFtX2ZibykgeworICAgICAgICBjbGVhcigpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgICAgICAKICAgICAvLyBDcmVhdGUgdGhlIFdlYkdMTGF5ZXIKICAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgbV9wbGF0Zm9ybUxheWVyLmFk
b3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aEdyYXBoaWNzQ29udGV4dDNEOjBdKTsK
KyAgICAgICAgbV9wbGF0Zm9ybUxheWVyLmFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0
V2l0aEdyYXBoaWNzQ29udGV4dDNEOmNvbnRleHRdKTsKICNpZm5kZWYgTkRFQlVHCi0gICAgICAg
IFttX3BsYXRmb3JtTGF5ZXIuZ2V0KCkgc2V0TmFtZTpAIldlYkdMIExheWVyIl07CisgICAgICAg
IFttX3BsYXRmb3JtTGF5ZXIuZ2V0KCkgc2V0TmFtZTpAIkRyYXdpbmdCdWZmZXIgTGF5ZXIiXTsK
ICNlbmRpZiAgICAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKIERyYXdpbmdC
dWZmZXI6On5EcmF3aW5nQnVmZmVyKCkKIHsKLSAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZl
cihtX2ZyYW1lYnVmZmVyKTsKLSAgICBtX2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKG1fZnJh
bWVidWZmZXIpOworICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgICAg
IAorICAgIG1fY29udGV4dC0+cmVtb3ZlRHJhd2luZ0J1ZmZlcih0aGlzKTsKKyAgICBjbGVhcigp
OwogfQogCiB2b2lkIERyYXdpbmdCdWZmZXI6OnJlc2V0KGNvbnN0IEludFNpemUmIG5ld1NpemUp
CiB7CisgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCiAgICAg
aWYgKG1fc2l6ZSA9PSBuZXdTaXplKQogICAgICAgICByZXR1cm47CiAgICAgbV9zaXplID0gbmV3
U2l6ZTsKQEAgLTY4LDcgKzc3LDcgQEAgdm9pZCBEcmF3aW5nQnVmZmVyOjpyZXNldChjb25zdCBJ
bnRTaXplJgogfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotUGxhdGZvcm1M
YXllciogRHJhd2luZ0J1ZmZlcjo6cGxhdGZvcm1MYXllcigpCitQbGF0Zm9ybUxheWVyKiBEcmF3
aW5nQnVmZmVyOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wbGF0Zm9y
bUxheWVyLmdldCgpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70483</attachid>
            <date>2010-10-11 15:37:23 -0700</date>
            <delta_ts>2010-10-12 09:54:38 -0700</delta_ts>
            <desc>Patch fixing merge conflicts</desc>
            <filename>bug-47501-20101011153722.patch</filename>
            <type>text/plain</type>
            <size>14908</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTUzMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMTAtMTAtMTEgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1h
bmFnZSBEcmF3aW5nQnVmZmVyIGxpZmV0aW1lIGluIEdyYXBoaWNzQ29udGV4dDNECisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzUwMQorCisgICAgICAg
IE5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5IG9mIGV4aXN0aW5nIGNvZGUsIHNvIG5vIG5ldyB0
ZXN0cy4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0
ZURyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJl
bW92ZURyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmNsZWFyRHJhd2luZ0J1ZmZlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJh
d2luZ0J1ZmZlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlQ29sb3JU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6fkRyYXdpbmdCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1MYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpyZXNldCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJh
d2luZ0J1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmNs
ZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmJpbmQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3aW5nQnVmZmVyOjpncmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhd2luZ0J1ZmZlcjo6fkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RHJh
d2luZ0J1ZmZlcjo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6cGxh
dGZvcm1MYXllcik6CisKIDIwMTAtMTAtMTEgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCkluZGV4OiBXZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZp
c2lvbiA2OTUzMykKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDcgKzEzMSw3IEBAIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6Q2FudmFzUmVuZGVyaW4KICAgICBpZiAoR3JhcGhpY3NDb250ZXh0KiBjID0g
ZHJhd2luZ0NvbnRleHQoKSkgewogICAgICAgICBtX2NvbnRleHQzRCA9IHAtPnNoYXJlZEdyYXBo
aWNzQ29udGV4dDNEKCk7CiAgICAgICAgIGlmIChtX2NvbnRleHQzRCkgewotICAgICAgICAgICAg
bV9kcmF3aW5nQnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKG1fY29udGV4dDNELmdldCgp
LCBJbnRTaXplKGNhbnZhcy0+d2lkdGgoKSwgY2FudmFzLT5oZWlnaHQoKSkpOworICAgICAgICAg
ICAgbV9kcmF3aW5nQnVmZmVyID0gbV9jb250ZXh0M0QtPmdyYXBoaWNzQ29udGV4dDNEKCktPmNy
ZWF0ZURyYXdpbmdCdWZmZXIoSW50U2l6ZShjYW52YXMtPndpZHRoKCksIGNhbnZhcy0+aGVpZ2h0
KCkpKTsKICAgICAgICAgICAgIGMtPnNldFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKG1fY29udGV4
dDNELmdldCgpLCBtX2RyYXdpbmdCdWZmZXIuZ2V0KCksIEludFNpemUoY2FudmFzLT53aWR0aCgp
LCBjYW52YXMtPmhlaWdodCgpKSk7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAkocmV2aXNpb24gNjk1
MzMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dDNELmgiCiAKICNpbmNsdWRlICJBcnJheUJ1ZmZlclZpZXcuaCIKKyNpbmNsdWRlICJEcmF3aW5n
QnVmZmVyLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKIApA
QCAtNDEsNiArNDIsMjYgQEAgc3RhdGljIHVpbnQ4X3QgY29udmVydENvbG9yMTZUbzgodWludDE2
XwogICAgIHJldHVybiB2YWx1ZSA+PiA4OwogfQogCitQYXNzT3duUHRyPERyYXdpbmdCdWZmZXI+
IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVEcmF3aW5nQnVmZmVyKGNvbnN0IEludFNpemUmIHNp
emUpCit7CisgICAgT3duUHRyPERyYXdpbmdCdWZmZXI+IGRyYXdpbmdCdWZmZXIgPSBEcmF3aW5n
QnVmZmVyOjpjcmVhdGUodGhpcywgc2l6ZSk7CisgICAgbV9kcmF3aW5nQnVmZmVycy5hZGQoZHJh
d2luZ0J1ZmZlci5nZXQoKSk7CisgICAgcmV0dXJuIGRyYXdpbmdCdWZmZXIucmVsZWFzZSgpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZW1vdmVEcmF3aW5nQnVmZmVyKERyYXdpbmdC
dWZmZXIqIGRyYXdpbmdCdWZmZXIpCit7CisgICAgbV9kcmF3aW5nQnVmZmVycy5yZW1vdmUoZHJh
d2luZ0J1ZmZlcik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyRHJhd2luZ0J1
ZmZlcnMoKQoreworICAgIEhhc2hTZXQ8RHJhd2luZ0J1ZmZlcio+OjppdGVyYXRvciBlbmQgPSBt
X2RyYXdpbmdCdWZmZXJzLmVuZCgpOworICAgIGZvciAoSGFzaFNldDxEcmF3aW5nQnVmZmVyKj46
Oml0ZXJhdG9yIGl0ID0gbV9kcmF3aW5nQnVmZmVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
CisgICAgICAgICgqaXQpLT5jbGVhcigpOworfQorCisKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6
OmNvbXB1dGVGb3JtYXRBbmRUeXBlUGFyYW1ldGVycyh1bnNpZ25lZCBpbnQgZm9ybWF0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcqIGNvbXBvbmVudHNQZXJQaXhlbCwKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHJldmlzaW9u
IDY5NTMzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw5ICsyNiw2IEBACiAjaWZuZGVmIEdyYXBoaWNzQ29udGV4
dDNEX2gKICNkZWZpbmUgR3JhcGhpY3NDb250ZXh0M0RfaAogCi0jaWYgUExBVEZPUk0oTUFDKQot
I2luY2x1ZGUgIkFOR0xFV2ViS2l0QnJpZGdlLmgiCi0jZW5kaWYKICNpbmNsdWRlICJHcmFwaGlj
c0xheWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIApAQCAtNDMsNiArNDAsNyBA
QAogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiQU5HTEVXZWJLaXRCcmlk
Z2UuaCIKICNpbmNsdWRlIDxPcGVuR0wvT3BlbkdMLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgogCkBAIC03OCw2ICs3Niw3IEBAIGNvbnN0IFBsYXRmb3JtM0RPYmplY3QgTnVsbFBsYXRm
b3JtM0RPYmoKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDsKK2NsYXNzIERyYXdpbmdCdWZmZXI7CiBjbGFzcyBIb3N0V2luZG93OwogY2xhc3MgSW1h
Z2U7CiBjbGFzcyBJbWFnZURhdGE7CkBAIC00NDIsNyArNDQxLDcgQEAgcHVibGljOgogICAgIH07
CiAKICAgICBzdGF0aWMgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlKEF0dHJp
YnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIFJlbmRlclN0eWxlIHJlbmRlclN0
eWxlID0gUmVuZGVyT2Zmc2NyZWVuKTsKLSAgICB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHQzRCgp
OworICAgIH5HcmFwaGljc0NvbnRleHQzRCgpOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGV4dE9iajsgfQpAQCAtNDY5LDYgKzQ2OCw5IEBAIHB1YmxpYzoKICNl
bmRpZgogICAgIHZvaWQgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAKKyAgICBQYXNzT3duUHRyPERy
YXdpbmdCdWZmZXI+IGNyZWF0ZURyYXdpbmdCdWZmZXIoY29uc3QgSW50U2l6ZSYgPSBJbnRTaXpl
KCkpOworICAgIHZvaWQgcmVtb3ZlRHJhd2luZ0J1ZmZlcihEcmF3aW5nQnVmZmVyKik7CisgICAg
CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShDSFJPTUlVTSkKICAgICAvLyBXaXRoIG11
bHRpc2FtcGxpbmcgb24sIGJsaXQgZnJvbSBtdWx0aXNhbXBsZUZCTyB0byByZWd1bGFyIEZCTy4K
ICAgICB2b2lkIHByZXBhcmVUZXh0dXJlKCk7CkBAIC03OTcsNiArNzk5LDggQEAgcHVibGljOgog
ICBwcml2YXRlOgogICAgIEdyYXBoaWNzQ29udGV4dDNEKEF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RX
aW5kb3cqIGhvc3RXaW5kb3csIGJvb2wgcmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOwogCisg
ICAgdm9pZCBjbGVhckRyYXdpbmdCdWZmZXJzKCk7CisgICAgCiAgICAgLy8gRWFjaCBwbGF0Zm9y
bSBtdXN0IHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhpcyBtZXRob2QuCiAgICAgLy8K
ICAgICAvLyBHZXRzIHRoZSBkYXRhIGZvciB0aGUgZ2l2ZW4gSW1hZ2UgaW50byBvdXRwdXRWZWN0
b3IgaW4gdGhlCkBAIC04NTMsNiArODU3LDggQEAgcHVibGljOgogCiAgICAgaW50IG1fY3VycmVu
dFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQ7CiAKKyAgICBIYXNoU2V0PERyYXdpbmdCdWZmZXIqPiBt
X2RyYXdpbmdCdWZmZXJzOworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHR5cGVkZWYgc3RydWN0
IHsKICAgICAgICAgU3RyaW5nIHNvdXJjZTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAJ
KHJldmlzaW9uIDY5NTMzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9E
cmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBA
IHN0cnVjdCBEcmF3aW5nQnVmZmVySW50ZXJuYWwgewogI2VuZGlmCiB9OwogCi1zdGF0aWMgdW5z
aWduZWQgZ2VuZXJhdGVDb2xvclRleHR1cmUoU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIGNvbnN0IEludFNpemUmIHNpemUpCitzdGF0aWMgdW5zaWduZWQgZ2VuZXJhdGVDb2xvclRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFNpemUmIHNpemUpCiB7
CiAgICAgdW5zaWduZWQgb2Zmc2NyZWVuQ29sb3JUZXh0dXJlID0gY29udGV4dC0+Y3JlYXRlVGV4
dHVyZSgpOwogICAgIGlmICghb2Zmc2NyZWVuQ29sb3JUZXh0dXJlKQpAQCAtNjYsMTMgKzY2LDEz
IEBAIHN0YXRpYyB1bnNpZ25lZCBnZW5lcmF0ZUNvbG9yVGV4dHVyZShTaGEKIH0KIAogCi1EcmF3
aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBjb25zdCBJbnRTaXplJiBzaXplLCB1bnNpZ25lZCBmcmFtZWJ1ZmZlcikKK0RyYXdpbmdCdWZm
ZXI6OkRyYXdpbmdCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFNp
emUmIHNpemUpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fc2l6ZShzaXplKQot
ICAgICwgbV9mcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcikKKyAgICAsIG1fZmJvKGNvbnRleHQtPmNy
ZWF0ZUZyYW1lYnVmZmVyKCkpCiAgICAgLCBtX2ludGVybmFsKG5ldyBEcmF3aW5nQnVmZmVySW50
ZXJuYWwpCiB7Ci0gICAgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKKyAg
ICBjb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCBtX2Zibyk7CiAgICAgbV9pbnRlcm5hbC0+b2Zmc2NyZWVuQ29sb3JUZXh0dXJlID0gZ2VuZXJh
dGVDb2xvclRleHR1cmUoY29udGV4dCwgc2l6ZSk7CiB9CiAKQEAgLTgyLDE0ICs4MiwyMyBAQCBE
cmF3aW5nQnVmZmVyOjp+RHJhd2luZ0J1ZmZlcigpCiAgICAgaWYgKG1faW50ZXJuYWwtPnBsYXRm
b3JtTGF5ZXIpCiAgICAgICAgIG1faW50ZXJuYWwtPnBsYXRmb3JtTGF5ZXItPnNldERyYXdpbmdC
dWZmZXIoMCk7CiAjZW5kaWYKLSAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihtX2ZyYW1l
YnVmZmVyKTsKKworICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgICAg
IAorICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgbV9mYm8pOwogICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZShtX2ludGVybmFs
LT5vZmZzY3JlZW5Db2xvclRleHR1cmUpOwotICAgIG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZm
ZXIobV9mcmFtZWJ1ZmZlcik7CisKKyAgICBtX2NvbnRleHQtPnJlbW92ZURyYXdpbmdCdWZmZXIo
dGhpcyk7CisgICAgY2xlYXIoKTsKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKIHZvaWQgRHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1MYXllcigpCiB7CisgICAg
aWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCiAgICAgaWYgKG1fY2Fs
bGJhY2spCiAgICAgICAgIG1fY2FsbGJhY2stPndpbGxQdWJsaXNoKCk7CiAgICAgdW5zaWduZWQg
cGFyZW50VGV4dHVyZSA9IG1faW50ZXJuYWwtPnBsYXRmb3JtTGF5ZXItPnRleHR1cmVJZCgpOwpA
QCAtMTA2LDYgKzExNSw5IEBAIHZvaWQgRHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1M
YXkKIAogdm9pZCBEcmF3aW5nQnVmZmVyOjpyZXNldChjb25zdCBJbnRTaXplJiBuZXdTaXplKQog
eworICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgICAgIAogICAgIGlm
IChtX3NpemUgPT0gbmV3U2l6ZSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fc2l6ZSA9IG5ld1Np
emU7CkBAIC0xMjAsNyArMTMyLDcgQEAgdm9pZCBEcmF3aW5nQnVmZmVyOjpyZXNldChjb25zdCBJ
bnRTaXplJgogfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotUGxhdGZvcm1M
YXllciogRHJhd2luZ0J1ZmZlcjo6cGxhdGZvcm1MYXllcigpCitQbGF0Zm9ybUxheWVyKiBEcmF3
aW5nQnVmZmVyOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHsKICAgICBpZiAoIW1faW50ZXJuYWwt
PnBsYXRmb3JtTGF5ZXIpCiAgICAgICAgIG1faW50ZXJuYWwtPnBsYXRmb3JtTGF5ZXIgPSBDYW52
YXMyRExheWVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzLCAwKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwCShyZXZpc2lvbiA2OTUzMykK
KysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCwyNyArMzAsMzggQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0j
aWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyNpZiBFTkFCTEUoQUNDRUxFUkFURURf
MkRfQ0FOVkFTKSB8fCBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKICNpbmNsdWRlICJE
cmF3aW5nQnVmZmVyLmgiCiAKLSNpbmNsdWRlICJTaGFyZWRHcmFwaGljc0NvbnRleHQzRC5oIgot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NPd25QdHI8RHJhd2luZ0J1ZmZlcj4gRHJhd2lu
Z0J1ZmZlcjo6Y3JlYXRlKFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJ
bnRTaXplJiBzaXplKQorUGFzc093blB0cjxEcmF3aW5nQnVmZmVyPiBEcmF3aW5nQnVmZmVyOjpj
cmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFNpemUmIHNpemUpCit7
CisgICAgT3duUHRyPERyYXdpbmdCdWZmZXI+IGRyYXdpbmdCdWZmZXIgPSBhZG9wdFB0cihuZXcg
RHJhd2luZ0J1ZmZlcihjb250ZXh0LCBzaXplKSk7CisgICAgcmV0dXJuIChkcmF3aW5nQnVmZmVy
LT5tX2NvbnRleHQpID8gZHJhd2luZ0J1ZmZlci5yZWxlYXNlKCkgOiAwOworfQorCit2b2lkIERy
YXdpbmdCdWZmZXI6OmNsZWFyKCkKIHsKLSAgICB1bnNpZ25lZCBmcmFtZWJ1ZmZlciA9IGNvbnRl
eHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCk7Ci0gICAgQVNTRVJUKGZyYW1lYnVmZmVyKTsKLSAgICBp
ZiAoIWZyYW1lYnVmZmVyKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IERyYXdpbmdCdWZmZXIoY29udGV4dCwgc2l6ZSwgZnJhbWVidWZmZXIpKTsKKyAgICBpZiAo
IW1fY29udGV4dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKTsKKyAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKKyAgICBtX2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVm
ZmVyKG1fZmJvKTsKKyAgICBtX2ZibyA9IDA7CisKKyAgICBtX2NvbnRleHQgPSAwOwogfQogCiB2
b2lkIERyYXdpbmdCdWZmZXI6OmJpbmQoKQogewotICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVm
ZmVyKG1fZnJhbWVidWZmZXIpOwotICAgIG1fY29udGV4dC0+c2V0Vmlld3BvcnQobV9zaXplKTsK
KyAgICBpZiAoIW1fY29udGV4dCkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBtX2Nv
bnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1f
ZmJvKTsKKyAgICBtX2NvbnRleHQtPnZpZXdwb3J0KDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3Np
emUuaGVpZ2h0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oCShyZXZpc2lvbiA2OTUz
MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNDQsOCArNDQsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOwotCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCiBz
dHJ1Y3QgRHJhd2luZ0J1ZmZlckludGVybmFsOwogI2VuZGlmCkBAIC01NCwxNSArNTIsMjAgQEAg
c3RydWN0IERyYXdpbmdCdWZmZXJJbnRlcm5hbDsKIC8vIHJlc3VsdHMgdG8gYSBQbGF0Zm9ybUxh
eWVyIGZvciBjb21wb3NpdGluZy4KIGNsYXNzIERyYXdpbmdCdWZmZXIgOiBwdWJsaWMgTm9uY29w
eWFibGUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPERyYXdpbmdCdWZmZXI+IGNy
ZWF0ZShTaGFyZWRHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFNpemUmKTsKKyAgICBmcmll
bmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CisgICAgCiAgICAgfkRyYXdpbmdCdWZmZXIoKTsK
IAogICAgIHZvaWQgcmVzZXQoY29uc3QgSW50U2l6ZSYpOwogICAgIHZvaWQgYmluZCgpOwogICAg
IEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogCisgICAgIC8vIENsZWFy
IGFsbCByZXNvdXJjZXMgZnJvbSB0aGlzIG9iamVjdCwgYXMgd2VsbCBhcyBjb250ZXh0LiBDYWxs
ZWQgd2hlbiBjb250ZXh0IGlzIGRlc3Ryb3llZAorICAgIC8vIHRvIHByZXZlbnQgaW52YWxpZCBh
Y2Nlc3NlcyB0byB0aGUgcmVzb3VyY2VzLgorICAgIHZvaWQgY2xlYXIoKTsKKyAgICAKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcigpOworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKICAgICB2
b2lkIHB1Ymxpc2hUb1BsYXRmb3JtTGF5ZXIoKTsKICNlbmRpZgogCkBAIC03OSwxMiArODIsMTcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0V2lsbFB1Ymxpc2hDYWxsYmFjayhQYXNzT3duUHRyPFdp
bGxQdWJsaXNoQ2FsbGJhY2s+IGNhbGxiYWNrKSB7IG1fY2FsbGJhY2sgPSBjYWxsYmFjazsgfQog
I2VuZGlmCiAKKyAgICBHcmFwaGljc0NvbnRleHQzRCogZ3JhcGhpY3NDb250ZXh0M0QoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRleHQ7IH0KKworcHJvdGVjdGVkOgorICAgIHN0YXRpYyBQYXNzT3du
UHRyPERyYXdpbmdCdWZmZXI+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFNp
emUmKTsKKyAgICAKIHByaXZhdGU6Ci0gICAgRHJhd2luZ0J1ZmZlcihTaGFyZWRHcmFwaGljc0Nv
bnRleHQzRCosIGNvbnN0IEludFNpemUmLCB1bnNpZ25lZCBmcmFtZWJ1ZmZlcik7CisgICAgRHJh
d2luZ0J1ZmZlcihHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFNpemUmKTsKIAotICAgIFNo
YXJlZEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0M0Qq
IG1fY29udGV4dDsKICAgICBJbnRTaXplIG1fc2l6ZTsKLSAgICB1bnNpZ25lZCBtX2ZyYW1lYnVm
ZmVyOworICAgIFBsYXRmb3JtM0RPYmplY3QgbV9mYm87CiAKICNpZiBQTEFURk9STShDSFJPTUlV
TSkKICAgICBPd25QdHI8V2lsbFB1Ymxpc2hDYWxsYmFjaz4gbV9jYWxsYmFjazsKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3JhcGhpY3ND
b250ZXh0M0QuaAkocmV2aXNpb24gNjk1MzMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNiAr
MTE4LDggQEAgcHVibGljOgogICAgIC8vIHRoZSB0ZXh0dXJlLgogICAgIFBhc3NSZWZQdHI8VGV4
dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlOjpGb3JtYXQsIGludCB3aWR0aCwgaW50IGhlaWdo
dCk7CiAKKyAgICBHcmFwaGljc0NvbnRleHQzRCogZ3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdCB7
IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KKwogcHJpdmF0ZToKICAgICBTaGFyZWRHcmFwaGlj
c0NvbnRleHQzRChQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgUGFzc093blB0cjxTb2xp
ZEZpbGxTaGFkZXI+LCBQYXNzT3duUHRyPFRleFNoYWRlcj4pOwogCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbQko
cmV2aXNpb24gNjk1MzMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJh
d2luZ0J1ZmZlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNDEgKzI1LDUwIEBACiAKICNp
bmNsdWRlICJjb25maWcuaCIKIAotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisj
aWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykgfHwgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQogCiAjaW5jbHVkZSAiRHJhd2luZ0J1ZmZlci5oIgogCi0jaW5jbHVkZSAiU2hhcmVk
R3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJXZWJHTExheWVyLmgiCiAKICNpbXBvcnQg
IkJsb2NrRXhjZXB0aW9ucy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURyYXdpbmdCdWZm
ZXI6OkRyYXdpbmdCdWZmZXIoU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0
IEludFNpemUmIHNpemUsIHVuc2lnbmVkIGZyYW1lYnVmZmVyKQorRHJhd2luZ0J1ZmZlcjo6RHJh
d2luZ0J1ZmZlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50U2l6ZSYgc2l6
ZSkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9zaXplKHNpemUpCi0gICAgLCBt
X2ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKQorICAgICwgbV9mYm8oY29udGV4dC0+Y3JlYXRlRnJh
bWVidWZmZXIoKSkKIHsKLSAgICBjb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXIp
OwotCisgICAgQVNTRVJUKG1fZmJvKTsKKyAgICBpZiAoIW1fZmJvKSB7CisgICAgICAgIGNsZWFy
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAogICAgIC8vIENyZWF0ZSB0aGUg
V2ViR0xMYXllcgogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgICAgICBtX3Bs
YXRmb3JtTGF5ZXIuYWRvcHROUyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRoR3JhcGhpY3ND
b250ZXh0M0Q6MF0pOworICAgICAgICBtX3BsYXRmb3JtTGF5ZXIuYWRvcHROUyhbW1dlYkdMTGF5
ZXIgYWxsb2NdIGluaXRXaXRoR3JhcGhpY3NDb250ZXh0M0Q6Y29udGV4dF0pOwogI2lmbmRlZiBO
REVCVUcKLSAgICAgICAgW21fcGxhdGZvcm1MYXllci5nZXQoKSBzZXROYW1lOkAiV2ViR0wgTGF5
ZXIiXTsKKyAgICAgICAgW21fcGxhdGZvcm1MYXllci5nZXQoKSBzZXROYW1lOkAiRHJhd2luZ0J1
ZmZlciBMYXllciJdOwogI2VuZGlmICAgIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
IH0KIAogRHJhd2luZ0J1ZmZlcjo6fkRyYXdpbmdCdWZmZXIoKQogewotICAgIG1fY29udGV4dC0+
YmluZEZyYW1lYnVmZmVyKG1fZnJhbWVidWZmZXIpOwotICAgIG1fY29udGV4dC0+ZGVsZXRlRnJh
bWVidWZmZXIobV9mcmFtZWJ1ZmZlcik7CisgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJl
dHVybjsKKyAgICAgICAgCisgICAgbV9jb250ZXh0LT5yZW1vdmVEcmF3aW5nQnVmZmVyKHRoaXMp
OworICAgIGNsZWFyKCk7CiB9CiAKIHZvaWQgRHJhd2luZ0J1ZmZlcjo6cmVzZXQoY29uc3QgSW50
U2l6ZSYgbmV3U2l6ZSkKIHsKKyAgICBpZiAoIW1fY29udGV4dCkKKyAgICAgICAgcmV0dXJuOwor
ICAgICAgICAKICAgICBpZiAobV9zaXplID09IG5ld1NpemUpCiAgICAgICAgIHJldHVybjsKICAg
ICBtX3NpemUgPSBuZXdTaXplOwpAQCAtNjgsNyArNzcsNyBAQCB2b2lkIERyYXdpbmdCdWZmZXI6
OnJlc2V0KGNvbnN0IEludFNpemUmCiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCi1QbGF0Zm9ybUxheWVyKiBEcmF3aW5nQnVmZmVyOjpwbGF0Zm9ybUxheWVyKCkKK1BsYXRm
b3JtTGF5ZXIqIERyYXdpbmdCdWZmZXI6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewogICAgIHJl
dHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0KCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70537</attachid>
            <date>2010-10-12 09:54:42 -0700</date>
            <delta_ts>2010-10-12 10:39:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47501-20101012095441.patch</filename>
            <type>text/plain</type>
            <size>15111</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTUzMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMTAtMTAtMTEgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1h
bmFnZSBEcmF3aW5nQnVmZmVyIGxpZmV0aW1lIGluIEdyYXBoaWNzQ29udGV4dDNECisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzUwMQorCisgICAgICAg
IE5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5IG9mIGV4aXN0aW5nIGNvZGUsIHNvIG5vIG5ldyB0
ZXN0cy4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0
ZURyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJl
bW92ZURyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmNsZWFyRHJhd2luZ0J1ZmZlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJh
d2luZ0J1ZmZlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlQ29sb3JU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6fkRyYXdpbmdCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1MYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpyZXNldCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJh
d2luZ0J1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmNs
ZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmJpbmQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3aW5nQnVmZmVyOjpncmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhd2luZ0J1ZmZlcjo6fkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RHJh
d2luZ0J1ZmZlcjo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6cGxh
dGZvcm1MYXllcik6CisKIDIwMTAtMTAtMTEgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCkluZGV4OiBXZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZp
c2lvbiA2OTUzMykKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDcgKzEzMSw3IEBAIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6Q2FudmFzUmVuZGVyaW4KICAgICBpZiAoR3JhcGhpY3NDb250ZXh0KiBjID0g
ZHJhd2luZ0NvbnRleHQoKSkgewogICAgICAgICBtX2NvbnRleHQzRCA9IHAtPnNoYXJlZEdyYXBo
aWNzQ29udGV4dDNEKCk7CiAgICAgICAgIGlmIChtX2NvbnRleHQzRCkgewotICAgICAgICAgICAg
bV9kcmF3aW5nQnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKG1fY29udGV4dDNELmdldCgp
LCBJbnRTaXplKGNhbnZhcy0+d2lkdGgoKSwgY2FudmFzLT5oZWlnaHQoKSkpOworICAgICAgICAg
ICAgbV9kcmF3aW5nQnVmZmVyID0gbV9jb250ZXh0M0QtPmdyYXBoaWNzQ29udGV4dDNEKCktPmNy
ZWF0ZURyYXdpbmdCdWZmZXIoSW50U2l6ZShjYW52YXMtPndpZHRoKCksIGNhbnZhcy0+aGVpZ2h0
KCkpKTsKICAgICAgICAgICAgIGMtPnNldFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKG1fY29udGV4
dDNELmdldCgpLCBtX2RyYXdpbmdCdWZmZXIuZ2V0KCksIEludFNpemUoY2FudmFzLT53aWR0aCgp
LCBjYW52YXMtPmhlaWdodCgpKSk7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAkocmV2aXNpb24gNjk1
MzMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dDNELmgiCiAKICNpbmNsdWRlICJBcnJheUJ1ZmZlclZpZXcuaCIKKyNpbmNsdWRlICJEcmF3aW5n
QnVmZmVyLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKIApA
QCAtNDEsNiArNDIsMjYgQEAgc3RhdGljIHVpbnQ4X3QgY29udmVydENvbG9yMTZUbzgodWludDE2
XwogICAgIHJldHVybiB2YWx1ZSA+PiA4OwogfQogCitQYXNzT3duUHRyPERyYXdpbmdCdWZmZXI+
IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVEcmF3aW5nQnVmZmVyKGNvbnN0IEludFNpemUmIHNp
emUpCit7CisgICAgT3duUHRyPERyYXdpbmdCdWZmZXI+IGRyYXdpbmdCdWZmZXIgPSBEcmF3aW5n
QnVmZmVyOjpjcmVhdGUodGhpcywgc2l6ZSk7CisgICAgbV9kcmF3aW5nQnVmZmVycy5hZGQoZHJh
d2luZ0J1ZmZlci5nZXQoKSk7CisgICAgcmV0dXJuIGRyYXdpbmdCdWZmZXIucmVsZWFzZSgpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZW1vdmVEcmF3aW5nQnVmZmVyKERyYXdpbmdC
dWZmZXIqIGRyYXdpbmdCdWZmZXIpCit7CisgICAgbV9kcmF3aW5nQnVmZmVycy5yZW1vdmUoZHJh
d2luZ0J1ZmZlcik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyRHJhd2luZ0J1
ZmZlcnMoKQoreworICAgIEhhc2hTZXQ8RHJhd2luZ0J1ZmZlcio+OjppdGVyYXRvciBlbmQgPSBt
X2RyYXdpbmdCdWZmZXJzLmVuZCgpOworICAgIGZvciAoSGFzaFNldDxEcmF3aW5nQnVmZmVyKj46
Oml0ZXJhdG9yIGl0ID0gbV9kcmF3aW5nQnVmZmVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
CisgICAgICAgICgqaXQpLT5jbGVhcigpOworfQorCisKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6
OmNvbXB1dGVGb3JtYXRBbmRUeXBlUGFyYW1ldGVycyh1bnNpZ25lZCBpbnQgZm9ybWF0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcqIGNvbXBvbmVudHNQZXJQaXhlbCwKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHJldmlzaW9u
IDY5NTMzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw5ICsyNiw2IEBACiAjaWZuZGVmIEdyYXBoaWNzQ29udGV4
dDNEX2gKICNkZWZpbmUgR3JhcGhpY3NDb250ZXh0M0RfaAogCi0jaWYgUExBVEZPUk0oTUFDKQot
I2luY2x1ZGUgIkFOR0xFV2ViS2l0QnJpZGdlLmgiCi0jZW5kaWYKICNpbmNsdWRlICJHcmFwaGlj
c0xheWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIApAQCAtNDMsNiArNDAsNyBA
QAogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiQU5HTEVXZWJLaXRCcmlk
Z2UuaCIKICNpbmNsdWRlIDxPcGVuR0wvT3BlbkdMLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgogCkBAIC03OCw2ICs3Niw3IEBAIGNvbnN0IFBsYXRmb3JtM0RPYmplY3QgTnVsbFBsYXRm
b3JtM0RPYmoKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDsKK2NsYXNzIERyYXdpbmdCdWZmZXI7CiBjbGFzcyBIb3N0V2luZG93OwogY2xhc3MgSW1h
Z2U7CiBjbGFzcyBJbWFnZURhdGE7CkBAIC00NDIsNyArNDQxLDcgQEAgcHVibGljOgogICAgIH07
CiAKICAgICBzdGF0aWMgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlKEF0dHJp
YnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIFJlbmRlclN0eWxlIHJlbmRlclN0
eWxlID0gUmVuZGVyT2Zmc2NyZWVuKTsKLSAgICB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHQzRCgp
OworICAgIH5HcmFwaGljc0NvbnRleHQzRCgpOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGV4dE9iajsgfQpAQCAtNDY5LDYgKzQ2OCw5IEBAIHB1YmxpYzoKICNl
bmRpZgogICAgIHZvaWQgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAKKyAgICBQYXNzT3duUHRyPERy
YXdpbmdCdWZmZXI+IGNyZWF0ZURyYXdpbmdCdWZmZXIoY29uc3QgSW50U2l6ZSYgPSBJbnRTaXpl
KCkpOworICAgIHZvaWQgcmVtb3ZlRHJhd2luZ0J1ZmZlcihEcmF3aW5nQnVmZmVyKik7CisgICAg
CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShDSFJPTUlVTSkKICAgICAvLyBXaXRoIG11
bHRpc2FtcGxpbmcgb24sIGJsaXQgZnJvbSBtdWx0aXNhbXBsZUZCTyB0byByZWd1bGFyIEZCTy4K
ICAgICB2b2lkIHByZXBhcmVUZXh0dXJlKCk7CkBAIC03OTcsNiArNzk5LDggQEAgcHVibGljOgog
ICBwcml2YXRlOgogICAgIEdyYXBoaWNzQ29udGV4dDNEKEF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RX
aW5kb3cqIGhvc3RXaW5kb3csIGJvb2wgcmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOwogCisg
ICAgdm9pZCBjbGVhckRyYXdpbmdCdWZmZXJzKCk7CisgICAgCiAgICAgLy8gRWFjaCBwbGF0Zm9y
bSBtdXN0IHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhpcyBtZXRob2QuCiAgICAgLy8K
ICAgICAvLyBHZXRzIHRoZSBkYXRhIGZvciB0aGUgZ2l2ZW4gSW1hZ2UgaW50byBvdXRwdXRWZWN0
b3IgaW4gdGhlCkBAIC04NTMsNiArODU3LDggQEAgcHVibGljOgogCiAgICAgaW50IG1fY3VycmVu
dFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQ7CiAKKyAgICBIYXNoU2V0PERyYXdpbmdCdWZmZXIqPiBt
X2RyYXdpbmdCdWZmZXJzOworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHR5cGVkZWYgc3RydWN0
IHsKICAgICAgICAgU3RyaW5nIHNvdXJjZTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAJ
KHJldmlzaW9uIDY5NTMzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9E
cmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBA
IHN0cnVjdCBEcmF3aW5nQnVmZmVySW50ZXJuYWwgewogI2VuZGlmCiB9OwogCi1zdGF0aWMgdW5z
aWduZWQgZ2VuZXJhdGVDb2xvclRleHR1cmUoU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIGNvbnN0IEludFNpemUmIHNpemUpCitzdGF0aWMgdW5zaWduZWQgZ2VuZXJhdGVDb2xvclRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFNpemUmIHNpemUpCiB7
CiAgICAgdW5zaWduZWQgb2Zmc2NyZWVuQ29sb3JUZXh0dXJlID0gY29udGV4dC0+Y3JlYXRlVGV4
dHVyZSgpOwogICAgIGlmICghb2Zmc2NyZWVuQ29sb3JUZXh0dXJlKQpAQCAtNjYsMTMgKzY2LDEz
IEBAIHN0YXRpYyB1bnNpZ25lZCBnZW5lcmF0ZUNvbG9yVGV4dHVyZShTaGEKIH0KIAogCi1EcmF3
aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBjb25zdCBJbnRTaXplJiBzaXplLCB1bnNpZ25lZCBmcmFtZWJ1ZmZlcikKK0RyYXdpbmdCdWZm
ZXI6OkRyYXdpbmdCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFNp
emUmIHNpemUpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fc2l6ZShzaXplKQot
ICAgICwgbV9mcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcikKKyAgICAsIG1fZmJvKGNvbnRleHQtPmNy
ZWF0ZUZyYW1lYnVmZmVyKCkpCiAgICAgLCBtX2ludGVybmFsKG5ldyBEcmF3aW5nQnVmZmVySW50
ZXJuYWwpCiB7Ci0gICAgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKKyAg
ICBjb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCBtX2Zibyk7CiAgICAgbV9pbnRlcm5hbC0+b2Zmc2NyZWVuQ29sb3JUZXh0dXJlID0gZ2VuZXJh
dGVDb2xvclRleHR1cmUoY29udGV4dCwgc2l6ZSk7CiB9CiAKQEAgLTgyLDE0ICs4MiwyMyBAQCBE
cmF3aW5nQnVmZmVyOjp+RHJhd2luZ0J1ZmZlcigpCiAgICAgaWYgKG1faW50ZXJuYWwtPnBsYXRm
b3JtTGF5ZXIpCiAgICAgICAgIG1faW50ZXJuYWwtPnBsYXRmb3JtTGF5ZXItPnNldERyYXdpbmdC
dWZmZXIoMCk7CiAjZW5kaWYKLSAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihtX2ZyYW1l
YnVmZmVyKTsKKworICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgICAg
IAorICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgbV9mYm8pOwogICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZShtX2ludGVybmFs
LT5vZmZzY3JlZW5Db2xvclRleHR1cmUpOwotICAgIG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZm
ZXIobV9mcmFtZWJ1ZmZlcik7CisKKyAgICBtX2NvbnRleHQtPnJlbW92ZURyYXdpbmdCdWZmZXIo
dGhpcyk7CisgICAgY2xlYXIoKTsKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKIHZvaWQgRHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1MYXllcigpCiB7CisgICAg
aWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCiAgICAgaWYgKG1fY2Fs
bGJhY2spCiAgICAgICAgIG1fY2FsbGJhY2stPndpbGxQdWJsaXNoKCk7CiAgICAgdW5zaWduZWQg
cGFyZW50VGV4dHVyZSA9IG1faW50ZXJuYWwtPnBsYXRmb3JtTGF5ZXItPnRleHR1cmVJZCgpOwpA
QCAtMTA2LDYgKzExNSw5IEBAIHZvaWQgRHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1M
YXkKIAogdm9pZCBEcmF3aW5nQnVmZmVyOjpyZXNldChjb25zdCBJbnRTaXplJiBuZXdTaXplKQog
eworICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgICAgIAogICAgIGlm
IChtX3NpemUgPT0gbmV3U2l6ZSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fc2l6ZSA9IG5ld1Np
emU7CkBAIC0xMjAsMTAgKzEzMiwxMCBAQCB2b2lkIERyYXdpbmdCdWZmZXI6OnJlc2V0KGNvbnN0
IEludFNpemUmCiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi1QbGF0Zm9y
bUxheWVyKiBEcmF3aW5nQnVmZmVyOjpwbGF0Zm9ybUxheWVyKCkKK1BsYXRmb3JtTGF5ZXIqIERy
YXdpbmdCdWZmZXI6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewogICAgIGlmICghbV9pbnRlcm5h
bC0+cGxhdGZvcm1MYXllcikKLSAgICAgICAgbV9pbnRlcm5hbC0+cGxhdGZvcm1MYXllciA9IENh
bnZhczJETGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKHRoaXMsIDApOworICAgICAgICBjb25zdF9jYXN0
PERyYXdpbmdCdWZmZXIqPih0aGlzKS0+bV9pbnRlcm5hbC0+cGxhdGZvcm1MYXllciA9IENhbnZh
czJETGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKHRoaXMsIDApOwogICAgIHJldHVybiBtX2ludGVybmFs
LT5wbGF0Zm9ybUxheWVyLmdldCgpOwogfQogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcAkocmV2aXNpb24gNjk1MzMpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsMjcgKzMwLDM4IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lm
IEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJE
X0NBTlZBUykgfHwgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiAjaW5jbHVkZSAiRHJh
d2luZ0J1ZmZlci5oIgogCi0jaW5jbHVkZSAiU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaCIKLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPERyYXdpbmdCdWZmZXI+IERyYXdpbmdC
dWZmZXI6OmNyZWF0ZShTaGFyZWRHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50
U2l6ZSYgc2l6ZSkKK1Bhc3NPd25QdHI8RHJhd2luZ0J1ZmZlcj4gRHJhd2luZ0J1ZmZlcjo6Y3Jl
YXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplKQorewor
ICAgIE93blB0cjxEcmF3aW5nQnVmZmVyPiBkcmF3aW5nQnVmZmVyID0gYWRvcHRQdHIobmV3IERy
YXdpbmdCdWZmZXIoY29udGV4dCwgc2l6ZSkpOworICAgIHJldHVybiAoZHJhd2luZ0J1ZmZlci0+
bV9jb250ZXh0KSA/IGRyYXdpbmdCdWZmZXIucmVsZWFzZSgpIDogMDsKK30KKwordm9pZCBEcmF3
aW5nQnVmZmVyOjpjbGVhcigpCiB7Ci0gICAgdW5zaWduZWQgZnJhbWVidWZmZXIgPSBjb250ZXh0
LT5jcmVhdGVGcmFtZWJ1ZmZlcigpOwotICAgIEFTU0VSVChmcmFtZWJ1ZmZlcik7Ci0gICAgaWYg
KCFmcmFtZWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBEcmF3aW5nQnVmZmVyKGNvbnRleHQsIHNpemUsIGZyYW1lYnVmZmVyKSk7CisgICAgaWYgKCFt
X2NvbnRleHQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0
M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CisgICAgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZl
cihtX2Zibyk7CisgICAgbV9mYm8gPSAwOworCisgICAgbV9jb250ZXh0ID0gMDsKIH0KIAogdm9p
ZCBEcmF3aW5nQnVmZmVyOjpiaW5kKCkKIHsKLSAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZl
cihtX2ZyYW1lYnVmZmVyKTsKLSAgICBtX2NvbnRleHQtPnNldFZpZXdwb3J0KG1fc2l6ZSk7Cisg
ICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgbV9jb250
ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zi
byk7CisgICAgbV9jb250ZXh0LT52aWV3cG9ydCgwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXpl
LmhlaWdodCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaAkocmV2aXNpb24gNjk1MzMp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ0LDggKzQ0LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDsKLQogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogc3Ry
dWN0IERyYXdpbmdCdWZmZXJJbnRlcm5hbDsKICNlbmRpZgpAQCAtNTQsMTUgKzUyLDIwIEBAIHN0
cnVjdCBEcmF3aW5nQnVmZmVySW50ZXJuYWw7CiAvLyByZXN1bHRzIHRvIGEgUGxhdGZvcm1MYXll
ciBmb3IgY29tcG9zaXRpbmcuCiBjbGFzcyBEcmF3aW5nQnVmZmVyIDogcHVibGljIE5vbmNvcHlh
YmxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxEcmF3aW5nQnVmZmVyPiBjcmVh
dGUoU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRTaXplJik7CisgICAgZnJpZW5k
IGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOworICAgIAogICAgIH5EcmF3aW5nQnVmZmVyKCk7CiAK
ICAgICB2b2lkIHJlc2V0KGNvbnN0IEludFNpemUmKTsKICAgICB2b2lkIGJpbmQoKTsKICAgICBJ
bnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIAorICAgICAvLyBDbGVhciBh
bGwgcmVzb3VyY2VzIGZyb20gdGhpcyBvYmplY3QsIGFzIHdlbGwgYXMgY29udGV4dC4gQ2FsbGVk
IHdoZW4gY29udGV4dCBpcyBkZXN0cm95ZWQKKyAgICAvLyB0byBwcmV2ZW50IGludmFsaWQgYWNj
ZXNzZXMgdG8gdGhlIHJlc291cmNlcy4KKyAgICB2b2lkIGNsZWFyKCk7CisgICAgCiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIoKTsKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAgICAgdm9p
ZCBwdWJsaXNoVG9QbGF0Zm9ybUxheWVyKCk7CiAjZW5kaWYKIApAQCAtNzksMTIgKzgyLDE3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFdpbGxQdWJsaXNoQ2FsbGJhY2soUGFzc093blB0cjxXaWxs
UHVibGlzaENhbGxiYWNrPiBjYWxsYmFjaykgeyBtX2NhbGxiYWNrID0gY2FsbGJhY2s7IH0KICNl
bmRpZgogCisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGdyYXBoaWNzQ29udGV4dDNEKCkgY29uc3Qg
eyByZXR1cm4gbV9jb250ZXh0OyB9CisKK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgUGFzc093blB0
cjxEcmF3aW5nQnVmZmVyPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRTaXpl
Jik7CisgICAgCiBwcml2YXRlOgotICAgIERyYXdpbmdCdWZmZXIoU2hhcmVkR3JhcGhpY3NDb250
ZXh0M0QqLCBjb25zdCBJbnRTaXplJiwgdW5zaWduZWQgZnJhbWVidWZmZXIpOworICAgIERyYXdp
bmdCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRTaXplJik7CiAKLSAgICBTaGFy
ZWRHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBt
X2NvbnRleHQ7CiAgICAgSW50U2l6ZSBtX3NpemU7Ci0gICAgdW5zaWduZWQgbV9mcmFtZWJ1ZmZl
cjsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IG1fZmJvOwogCiAjaWYgUExBVEZPUk0oQ0hST01JVU0p
CiAgICAgT3duUHRyPFdpbGxQdWJsaXNoQ2FsbGJhY2s+IG1fY2FsbGJhY2s7CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29u
dGV4dDNELmgJKHJldmlzaW9uIDY5NTMzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDYgKzEx
OCw4IEBAIHB1YmxpYzoKICAgICAvLyB0aGUgdGV4dHVyZS4KICAgICBQYXNzUmVmUHRyPFRleHR1
cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZTo6Rm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQp
OwogCisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGdyYXBoaWNzQ29udGV4dDNEKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAgU2hhcmVkR3JhcGhpY3ND
b250ZXh0M0QoUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRD4sIFBhc3NPd25QdHI8U29saWRG
aWxsU2hhZGVyPiwgUGFzc093blB0cjxUZXhTaGFkZXI+KTsKIApJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvbWFjL0RyYXdpbmdCdWZmZXJNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbWFjL0RyYXdpbmdCdWZmZXJNYWMubW0JKHJl
dmlzaW9uIDY5NTMzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbWFjL0RyYXdp
bmdCdWZmZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDQxICsyNSw1MCBAQAogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorI2lm
IEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpIHx8IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKIAogI2luY2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKIAotI2luY2x1ZGUgIlNoYXJlZEdy
YXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiV2ViR0xMYXllci5oIgogCiAjaW1wb3J0ICJC
bG9ja0V4Y2VwdGlvbnMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EcmF3aW5nQnVmZmVy
OjpEcmF3aW5nQnVmZmVyKFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJ
bnRTaXplJiBzaXplLCB1bnNpZ25lZCBmcmFtZWJ1ZmZlcikKK0RyYXdpbmdCdWZmZXI6OkRyYXdp
bmdCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFNpemUmIHNpemUp
CiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fc2l6ZShzaXplKQotICAgICwgbV9m
cmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcikKKyAgICAsIG1fZmJvKGNvbnRleHQtPmNyZWF0ZUZyYW1l
YnVmZmVyKCkpCiB7Ci0gICAgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsK
LQorICAgIEFTU0VSVChtX2Zibyk7CisgICAgaWYgKCFtX2ZibykgeworICAgICAgICBjbGVhcigp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKICAgICAvLyBDcmVhdGUgdGhlIFdl
YkdMTGF5ZXIKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgbV9wbGF0
Zm9ybUxheWVyLmFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aEdyYXBoaWNzQ29u
dGV4dDNEOjBdKTsKKyAgICAgICAgbV9wbGF0Zm9ybUxheWVyLmFkb3B0TlMoW1tXZWJHTExheWVy
IGFsbG9jXSBpbml0V2l0aEdyYXBoaWNzQ29udGV4dDNEOmNvbnRleHRdKTsKICNpZm5kZWYgTkRF
QlVHCi0gICAgICAgIFttX3BsYXRmb3JtTGF5ZXIuZ2V0KCkgc2V0TmFtZTpAIldlYkdMIExheWVy
Il07CisgICAgICAgIFttX3BsYXRmb3JtTGF5ZXIuZ2V0KCkgc2V0TmFtZTpAIkRyYXdpbmdCdWZm
ZXIgTGF5ZXIiXTsKICNlbmRpZiAgICAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9
CiAKIERyYXdpbmdCdWZmZXI6On5EcmF3aW5nQnVmZmVyKCkKIHsKLSAgICBtX2NvbnRleHQtPmJp
bmRGcmFtZWJ1ZmZlcihtX2ZyYW1lYnVmZmVyKTsKLSAgICBtX2NvbnRleHQtPmRlbGV0ZUZyYW1l
YnVmZmVyKG1fZnJhbWVidWZmZXIpOworICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICByZXR1
cm47CisgICAgICAgIAorICAgIG1fY29udGV4dC0+cmVtb3ZlRHJhd2luZ0J1ZmZlcih0aGlzKTsK
KyAgICBjbGVhcigpOwogfQogCiB2b2lkIERyYXdpbmdCdWZmZXI6OnJlc2V0KGNvbnN0IEludFNp
emUmIG5ld1NpemUpCiB7CisgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAg
ICAgICAgCiAgICAgaWYgKG1fc2l6ZSA9PSBuZXdTaXplKQogICAgICAgICByZXR1cm47CiAgICAg
bV9zaXplID0gbmV3U2l6ZTsKQEAgLTY4LDggKzc3LDkgQEAgdm9pZCBEcmF3aW5nQnVmZmVyOjpy
ZXNldChjb25zdCBJbnRTaXplJgogfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQotUGxhdGZvcm1MYXllciogRHJhd2luZ0J1ZmZlcjo6cGxhdGZvcm1MYXllcigpCitQbGF0Zm9y
bUxheWVyKiBEcmF3aW5nQnVmZmVyOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHsKKyAgICBtX3Bs
YXRmb3JtTGF5ZXIgPSAwOwogICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0KCk7CiB9CiAj
ZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70542</attachid>
            <date>2010-10-12 10:39:06 -0700</date>
            <delta_ts>2010-10-12 16:15:55 -0700</delta_ts>
            <desc>Patch gets rid of const on platformLayer() so Chromium builds</desc>
            <filename>bug-47501-20101012103905.patch</filename>
            <type>text/plain</type>
            <size>14299</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTUzMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMTAtMTAtMTEgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1h
bmFnZSBEcmF3aW5nQnVmZmVyIGxpZmV0aW1lIGluIEdyYXBoaWNzQ29udGV4dDNECisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzUwMQorCisgICAgICAg
IE5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5IG9mIGV4aXN0aW5nIGNvZGUsIHNvIG5vIG5ldyB0
ZXN0cy4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0
ZURyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJl
bW92ZURyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmNsZWFyRHJhd2luZ0J1ZmZlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJh
d2luZ0J1ZmZlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlQ29sb3JU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6fkRyYXdpbmdCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1MYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpyZXNldCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJh
d2luZ0J1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmNs
ZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmJpbmQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3aW5nQnVmZmVyOjpncmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhd2luZ0J1ZmZlcjo6fkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RHJh
d2luZ0J1ZmZlcjo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6cGxh
dGZvcm1MYXllcik6CisKIDIwMTAtMTAtMTEgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCkluZGV4OiBXZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZp
c2lvbiA2OTUzMykKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDcgKzEzMSw3IEBAIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6Q2FudmFzUmVuZGVyaW4KICAgICBpZiAoR3JhcGhpY3NDb250ZXh0KiBjID0g
ZHJhd2luZ0NvbnRleHQoKSkgewogICAgICAgICBtX2NvbnRleHQzRCA9IHAtPnNoYXJlZEdyYXBo
aWNzQ29udGV4dDNEKCk7CiAgICAgICAgIGlmIChtX2NvbnRleHQzRCkgewotICAgICAgICAgICAg
bV9kcmF3aW5nQnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKG1fY29udGV4dDNELmdldCgp
LCBJbnRTaXplKGNhbnZhcy0+d2lkdGgoKSwgY2FudmFzLT5oZWlnaHQoKSkpOworICAgICAgICAg
ICAgbV9kcmF3aW5nQnVmZmVyID0gbV9jb250ZXh0M0QtPmdyYXBoaWNzQ29udGV4dDNEKCktPmNy
ZWF0ZURyYXdpbmdCdWZmZXIoSW50U2l6ZShjYW52YXMtPndpZHRoKCksIGNhbnZhcy0+aGVpZ2h0
KCkpKTsKICAgICAgICAgICAgIGMtPnNldFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKG1fY29udGV4
dDNELmdldCgpLCBtX2RyYXdpbmdCdWZmZXIuZ2V0KCksIEludFNpemUoY2FudmFzLT53aWR0aCgp
LCBjYW52YXMtPmhlaWdodCgpKSk7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAkocmV2aXNpb24gNjk1
MzMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dDNELmgiCiAKICNpbmNsdWRlICJBcnJheUJ1ZmZlclZpZXcuaCIKKyNpbmNsdWRlICJEcmF3aW5n
QnVmZmVyLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKIApA
QCAtNDEsNiArNDIsMjYgQEAgc3RhdGljIHVpbnQ4X3QgY29udmVydENvbG9yMTZUbzgodWludDE2
XwogICAgIHJldHVybiB2YWx1ZSA+PiA4OwogfQogCitQYXNzT3duUHRyPERyYXdpbmdCdWZmZXI+
IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVEcmF3aW5nQnVmZmVyKGNvbnN0IEludFNpemUmIHNp
emUpCit7CisgICAgT3duUHRyPERyYXdpbmdCdWZmZXI+IGRyYXdpbmdCdWZmZXIgPSBEcmF3aW5n
QnVmZmVyOjpjcmVhdGUodGhpcywgc2l6ZSk7CisgICAgbV9kcmF3aW5nQnVmZmVycy5hZGQoZHJh
d2luZ0J1ZmZlci5nZXQoKSk7CisgICAgcmV0dXJuIGRyYXdpbmdCdWZmZXIucmVsZWFzZSgpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZW1vdmVEcmF3aW5nQnVmZmVyKERyYXdpbmdC
dWZmZXIqIGRyYXdpbmdCdWZmZXIpCit7CisgICAgbV9kcmF3aW5nQnVmZmVycy5yZW1vdmUoZHJh
d2luZ0J1ZmZlcik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyRHJhd2luZ0J1
ZmZlcnMoKQoreworICAgIEhhc2hTZXQ8RHJhd2luZ0J1ZmZlcio+OjppdGVyYXRvciBlbmQgPSBt
X2RyYXdpbmdCdWZmZXJzLmVuZCgpOworICAgIGZvciAoSGFzaFNldDxEcmF3aW5nQnVmZmVyKj46
Oml0ZXJhdG9yIGl0ID0gbV9kcmF3aW5nQnVmZmVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
CisgICAgICAgICgqaXQpLT5jbGVhcigpOworfQorCisKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6
OmNvbXB1dGVGb3JtYXRBbmRUeXBlUGFyYW1ldGVycyh1bnNpZ25lZCBpbnQgZm9ybWF0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcqIGNvbXBvbmVudHNQZXJQaXhlbCwKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHJldmlzaW9u
IDY5NTMzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw5ICsyNiw2IEBACiAjaWZuZGVmIEdyYXBoaWNzQ29udGV4
dDNEX2gKICNkZWZpbmUgR3JhcGhpY3NDb250ZXh0M0RfaAogCi0jaWYgUExBVEZPUk0oTUFDKQot
I2luY2x1ZGUgIkFOR0xFV2ViS2l0QnJpZGdlLmgiCi0jZW5kaWYKICNpbmNsdWRlICJHcmFwaGlj
c0xheWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIApAQCAtNDMsNiArNDAsNyBA
QAogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiQU5HTEVXZWJLaXRCcmlk
Z2UuaCIKICNpbmNsdWRlIDxPcGVuR0wvT3BlbkdMLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgogCkBAIC03OCw2ICs3Niw3IEBAIGNvbnN0IFBsYXRmb3JtM0RPYmplY3QgTnVsbFBsYXRm
b3JtM0RPYmoKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDsKK2NsYXNzIERyYXdpbmdCdWZmZXI7CiBjbGFzcyBIb3N0V2luZG93OwogY2xhc3MgSW1h
Z2U7CiBjbGFzcyBJbWFnZURhdGE7CkBAIC00NDIsNyArNDQxLDcgQEAgcHVibGljOgogICAgIH07
CiAKICAgICBzdGF0aWMgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlKEF0dHJp
YnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIFJlbmRlclN0eWxlIHJlbmRlclN0
eWxlID0gUmVuZGVyT2Zmc2NyZWVuKTsKLSAgICB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHQzRCgp
OworICAgIH5HcmFwaGljc0NvbnRleHQzRCgpOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGV4dE9iajsgfQpAQCAtNDY5LDYgKzQ2OCw5IEBAIHB1YmxpYzoKICNl
bmRpZgogICAgIHZvaWQgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAKKyAgICBQYXNzT3duUHRyPERy
YXdpbmdCdWZmZXI+IGNyZWF0ZURyYXdpbmdCdWZmZXIoY29uc3QgSW50U2l6ZSYgPSBJbnRTaXpl
KCkpOworICAgIHZvaWQgcmVtb3ZlRHJhd2luZ0J1ZmZlcihEcmF3aW5nQnVmZmVyKik7CisgICAg
CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShDSFJPTUlVTSkKICAgICAvLyBXaXRoIG11
bHRpc2FtcGxpbmcgb24sIGJsaXQgZnJvbSBtdWx0aXNhbXBsZUZCTyB0byByZWd1bGFyIEZCTy4K
ICAgICB2b2lkIHByZXBhcmVUZXh0dXJlKCk7CkBAIC03OTcsNiArNzk5LDggQEAgcHVibGljOgog
ICBwcml2YXRlOgogICAgIEdyYXBoaWNzQ29udGV4dDNEKEF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RX
aW5kb3cqIGhvc3RXaW5kb3csIGJvb2wgcmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOwogCisg
ICAgdm9pZCBjbGVhckRyYXdpbmdCdWZmZXJzKCk7CisgICAgCiAgICAgLy8gRWFjaCBwbGF0Zm9y
bSBtdXN0IHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhpcyBtZXRob2QuCiAgICAgLy8K
ICAgICAvLyBHZXRzIHRoZSBkYXRhIGZvciB0aGUgZ2l2ZW4gSW1hZ2UgaW50byBvdXRwdXRWZWN0
b3IgaW4gdGhlCkBAIC04NTMsNiArODU3LDggQEAgcHVibGljOgogCiAgICAgaW50IG1fY3VycmVu
dFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQ7CiAKKyAgICBIYXNoU2V0PERyYXdpbmdCdWZmZXIqPiBt
X2RyYXdpbmdCdWZmZXJzOworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHR5cGVkZWYgc3RydWN0
IHsKICAgICAgICAgU3RyaW5nIHNvdXJjZTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAJ
KHJldmlzaW9uIDY5NTMzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9E
cmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBA
IHN0cnVjdCBEcmF3aW5nQnVmZmVySW50ZXJuYWwgewogI2VuZGlmCiB9OwogCi1zdGF0aWMgdW5z
aWduZWQgZ2VuZXJhdGVDb2xvclRleHR1cmUoU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIGNvbnN0IEludFNpemUmIHNpemUpCitzdGF0aWMgdW5zaWduZWQgZ2VuZXJhdGVDb2xvclRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFNpemUmIHNpemUpCiB7
CiAgICAgdW5zaWduZWQgb2Zmc2NyZWVuQ29sb3JUZXh0dXJlID0gY29udGV4dC0+Y3JlYXRlVGV4
dHVyZSgpOwogICAgIGlmICghb2Zmc2NyZWVuQ29sb3JUZXh0dXJlKQpAQCAtNjYsMTMgKzY2LDEz
IEBAIHN0YXRpYyB1bnNpZ25lZCBnZW5lcmF0ZUNvbG9yVGV4dHVyZShTaGEKIH0KIAogCi1EcmF3
aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBjb25zdCBJbnRTaXplJiBzaXplLCB1bnNpZ25lZCBmcmFtZWJ1ZmZlcikKK0RyYXdpbmdCdWZm
ZXI6OkRyYXdpbmdCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFNp
emUmIHNpemUpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fc2l6ZShzaXplKQot
ICAgICwgbV9mcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcikKKyAgICAsIG1fZmJvKGNvbnRleHQtPmNy
ZWF0ZUZyYW1lYnVmZmVyKCkpCiAgICAgLCBtX2ludGVybmFsKG5ldyBEcmF3aW5nQnVmZmVySW50
ZXJuYWwpCiB7Ci0gICAgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKKyAg
ICBjb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCBtX2Zibyk7CiAgICAgbV9pbnRlcm5hbC0+b2Zmc2NyZWVuQ29sb3JUZXh0dXJlID0gZ2VuZXJh
dGVDb2xvclRleHR1cmUoY29udGV4dCwgc2l6ZSk7CiB9CiAKQEAgLTgyLDE0ICs4MiwyMyBAQCBE
cmF3aW5nQnVmZmVyOjp+RHJhd2luZ0J1ZmZlcigpCiAgICAgaWYgKG1faW50ZXJuYWwtPnBsYXRm
b3JtTGF5ZXIpCiAgICAgICAgIG1faW50ZXJuYWwtPnBsYXRmb3JtTGF5ZXItPnNldERyYXdpbmdC
dWZmZXIoMCk7CiAjZW5kaWYKLSAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihtX2ZyYW1l
YnVmZmVyKTsKKworICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgICAg
IAorICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgbV9mYm8pOwogICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZShtX2ludGVybmFs
LT5vZmZzY3JlZW5Db2xvclRleHR1cmUpOwotICAgIG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZm
ZXIobV9mcmFtZWJ1ZmZlcik7CisKKyAgICBtX2NvbnRleHQtPnJlbW92ZURyYXdpbmdCdWZmZXIo
dGhpcyk7CisgICAgY2xlYXIoKTsKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKIHZvaWQgRHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1MYXllcigpCiB7CisgICAg
aWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCiAgICAgaWYgKG1fY2Fs
bGJhY2spCiAgICAgICAgIG1fY2FsbGJhY2stPndpbGxQdWJsaXNoKCk7CiAgICAgdW5zaWduZWQg
cGFyZW50VGV4dHVyZSA9IG1faW50ZXJuYWwtPnBsYXRmb3JtTGF5ZXItPnRleHR1cmVJZCgpOwpA
QCAtMTA2LDYgKzExNSw5IEBAIHZvaWQgRHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1M
YXkKIAogdm9pZCBEcmF3aW5nQnVmZmVyOjpyZXNldChjb25zdCBJbnRTaXplJiBuZXdTaXplKQog
eworICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgICAgIAogICAgIGlm
IChtX3NpemUgPT0gbmV3U2l6ZSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fc2l6ZSA9IG5ld1Np
emU7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVm
ZmVyLmNwcAkocmV2aXNpb24gNjk1MzMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9EcmF3aW5nQnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMjcgKzMwLDM4IEBACiAK
ICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
CisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykgfHwgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQogCiAjaW5jbHVkZSAiRHJhd2luZ0J1ZmZlci5oIgogCi0jaW5jbHVkZSAiU2hh
cmVkR3JhcGhpY3NDb250ZXh0M0QuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3du
UHRyPERyYXdpbmdCdWZmZXI+IERyYXdpbmdCdWZmZXI6OmNyZWF0ZShTaGFyZWRHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK1Bhc3NPd25QdHI8RHJhd2lu
Z0J1ZmZlcj4gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIE93blB0cjxEcmF3aW5nQnVmZmVyPiBkcmF3
aW5nQnVmZmVyID0gYWRvcHRQdHIobmV3IERyYXdpbmdCdWZmZXIoY29udGV4dCwgc2l6ZSkpOwor
ICAgIHJldHVybiAoZHJhd2luZ0J1ZmZlci0+bV9jb250ZXh0KSA/IGRyYXdpbmdCdWZmZXIucmVs
ZWFzZSgpIDogMDsKK30KKwordm9pZCBEcmF3aW5nQnVmZmVyOjpjbGVhcigpCiB7Ci0gICAgdW5z
aWduZWQgZnJhbWVidWZmZXIgPSBjb250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigpOwotICAgIEFT
U0VSVChmcmFtZWJ1ZmZlcik7Ci0gICAgaWYgKCFmcmFtZWJ1ZmZlcikKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEcmF3aW5nQnVmZmVyKGNvbnRleHQsIHNpemUs
IGZyYW1lYnVmZmVyKSk7CisgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9jb250ZXh0LT5iaW5k
RnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CisgICAg
bV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihtX2Zibyk7CisgICAgbV9mYm8gPSAwOworCisg
ICAgbV9jb250ZXh0ID0gMDsKIH0KIAogdm9pZCBEcmF3aW5nQnVmZmVyOjpiaW5kKCkKIHsKLSAg
ICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihtX2ZyYW1lYnVmZmVyKTsKLSAgICBtX2NvbnRl
eHQtPnNldFZpZXdwb3J0KG1fc2l6ZSk7CisgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJl
dHVybjsKKyAgICAgICAgCisgICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3ND
b250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CisgICAgbV9jb250ZXh0LT52aWV3cG9ydCgw
LCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1
ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdp
bmdCdWZmZXIuaAkocmV2aXNpb24gNjk1MzMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9EcmF3aW5nQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDggKzQ0LDYgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDsKLQog
I2lmIFBMQVRGT1JNKENIUk9NSVVNKQogc3RydWN0IERyYXdpbmdCdWZmZXJJbnRlcm5hbDsKICNl
bmRpZgpAQCAtNTQsMTMgKzUyLDE4IEBAIHN0cnVjdCBEcmF3aW5nQnVmZmVySW50ZXJuYWw7CiAv
LyByZXN1bHRzIHRvIGEgUGxhdGZvcm1MYXllciBmb3IgY29tcG9zaXRpbmcuCiBjbGFzcyBEcmF3
aW5nQnVmZmVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c093blB0cjxEcmF3aW5nQnVmZmVyPiBjcmVhdGUoU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QqLCBj
b25zdCBJbnRTaXplJik7CisgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOworICAg
IAogICAgIH5EcmF3aW5nQnVmZmVyKCk7CiAKICAgICB2b2lkIHJlc2V0KGNvbnN0IEludFNpemUm
KTsKICAgICB2b2lkIGJpbmQoKTsKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBt
X3NpemU7IH0KIAorICAgICAvLyBDbGVhciBhbGwgcmVzb3VyY2VzIGZyb20gdGhpcyBvYmplY3Qs
IGFzIHdlbGwgYXMgY29udGV4dC4gQ2FsbGVkIHdoZW4gY29udGV4dCBpcyBkZXN0cm95ZWQKKyAg
ICAvLyB0byBwcmV2ZW50IGludmFsaWQgYWNjZXNzZXMgdG8gdGhlIHJlc291cmNlcy4KKyAgICB2
b2lkIGNsZWFyKCk7CisgICAgCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAg
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKTsKICAgICB2b2lkIHB1Ymxpc2hUb1BsYXRm
b3JtTGF5ZXIoKTsKQEAgLTc5LDEyICs4MiwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXaWxs
UHVibGlzaENhbGxiYWNrKFBhc3NPd25QdHI8V2lsbFB1Ymxpc2hDYWxsYmFjaz4gY2FsbGJhY2sp
IHsgbV9jYWxsYmFjayA9IGNhbGxiYWNrOyB9CiAjZW5kaWYKIAorICAgIEdyYXBoaWNzQ29udGV4
dDNEKiBncmFwaGljc0NvbnRleHQzRCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dDsgfQorCitw
cm90ZWN0ZWQ6CisgICAgc3RhdGljIFBhc3NPd25QdHI8RHJhd2luZ0J1ZmZlcj4gY3JlYXRlKEdy
YXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50U2l6ZSYpOworICAgIAogcHJpdmF0ZToKLSAgICBE
cmF3aW5nQnVmZmVyKFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50U2l6ZSYsIHVu
c2lnbmVkIGZyYW1lYnVmZmVyKTsKKyAgICBEcmF3aW5nQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNE
KiwgY29uc3QgSW50U2l6ZSYpOwogCi0gICAgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QqIG1fY29u
dGV4dDsKKyAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwogICAgIEludFNpemUgbV9z
aXplOwotICAgIHVuc2lnbmVkIG1fZnJhbWVidWZmZXI7CisgICAgUGxhdGZvcm0zRE9iamVjdCBt
X2ZibzsKIAogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIE93blB0cjxXaWxsUHVibGlzaENh
bGxiYWNrPiBtX2NhbGxiYWNrOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
U2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiA2OTUzMykK
KysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNE
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExOCw2ICsxMTgsOCBAQCBwdWJsaWM6CiAgICAgLy8gdGhl
IHRleHR1cmUuCiAgICAgUGFzc1JlZlB0cjxUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmU6
OkZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKIAorICAgIEdyYXBoaWNzQ29udGV4dDNE
KiBncmFwaGljc0NvbnRleHQzRCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQor
CiBwcml2YXRlOgogICAgIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKFBhc3NPd25QdHI8R3JhcGhp
Y3NDb250ZXh0M0Q+LCBQYXNzT3duUHRyPFNvbGlkRmlsbFNoYWRlcj4sIFBhc3NPd25QdHI8VGV4
U2hhZGVyPik7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L21hYy9EcmF3
aW5nQnVmZmVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L21hYy9EcmF3aW5nQnVmZmVyTWFjLm1tCShyZXZpc2lvbiA2OTUzMykKKysrIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L21hYy9EcmF3aW5nQnVmZmVyTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw0MSArMjUsNTAgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5B
QkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FO
VkFTKSB8fCBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKICNpbmNsdWRlICJEcmF3aW5n
QnVmZmVyLmgiCiAKLSNpbmNsdWRlICJTaGFyZWRHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1
ZGUgIldlYkdMTGF5ZXIuaCIKIAogI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotRHJhd2luZ0J1ZmZlcjo6RHJhd2luZ0J1ZmZlcihTaGFyZWRHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgdW5zaWduZWQgZnJh
bWVidWZmZXIpCitEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplKQogICAgIDogbV9jb250ZXh0KGNvbnRleHQp
CiAgICAgLCBtX3NpemUoc2l6ZSkKLSAgICAsIG1fZnJhbWVidWZmZXIoZnJhbWVidWZmZXIpCisg
ICAgLCBtX2Zibyhjb250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigpKQogewotICAgIGNvbnRleHQt
PmJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7Ci0KKyAgICBBU1NFUlQobV9mYm8pOworICAg
IGlmICghbV9mYm8pIHsKKyAgICAgICAgY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAgICAgCiAgICAgLy8gQ3JlYXRlIHRoZSBXZWJHTExheWVyCiAgICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TCi0gICAgICAgIG1fcGxhdGZvcm1MYXllci5hZG9wdE5TKFtbV2ViR0xM
YXllciBhbGxvY10gaW5pdFdpdGhHcmFwaGljc0NvbnRleHQzRDowXSk7CisgICAgICAgIG1fcGxh
dGZvcm1MYXllci5hZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhHcmFwaGljc0Nv
bnRleHQzRDpjb250ZXh0XSk7CiAjaWZuZGVmIE5ERUJVRwotICAgICAgICBbbV9wbGF0Zm9ybUxh
eWVyLmdldCgpIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOworICAgICAgICBbbV9wbGF0Zm9ybUxh
eWVyLmdldCgpIHNldE5hbWU6QCJEcmF3aW5nQnVmZmVyIExheWVyIl07CiAjZW5kaWYgICAgCiAg
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCiBEcmF3aW5nQnVmZmVyOjp+RHJhd2lu
Z0J1ZmZlcigpCiB7Ci0gICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIobV9mcmFtZWJ1ZmZl
cik7Ci0gICAgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihtX2ZyYW1lYnVmZmVyKTsKKyAg
ICBpZiAoIW1fY29udGV4dCkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBtX2NvbnRl
eHQtPnJlbW92ZURyYXdpbmdCdWZmZXIodGhpcyk7CisgICAgY2xlYXIoKTsKIH0KIAogdm9pZCBE
cmF3aW5nQnVmZmVyOjpyZXNldChjb25zdCBJbnRTaXplJiBuZXdTaXplKQogeworICAgIGlmICgh
bV9jb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgICAgIAogICAgIGlmIChtX3NpemUgPT0g
bmV3U2l6ZSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fc2l6ZSA9IG5ld1NpemU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70571</attachid>
            <date>2010-10-12 16:16:00 -0700</date>
            <delta_ts>2010-10-12 17:45:22 -0700</delta_ts>
            <desc>Patch using ref counting rather than weak pointers (please hold review)</desc>
            <filename>bug-47501-20101012161559.patch</filename>
            <type>text/plain</type>
            <size>20541</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTYxNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDkgQEAKKzIwMTAtMTAtMTIgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1h
bmFnZSBEcmF3aW5nQnVmZmVyIGxpZmV0aW1lIGluIEdyYXBoaWNzQ29udGV4dDNECisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzUwMQorCisgICAgICAg
IEdyYXBoaWNzQ29udGV4dDNEIGFuZCBEcmF3aW5nQnVmZmVyIGFyZSBub3cgUmVmY291bnRlZC4g
RHJhd2luZ0J1ZmZlcgorICAgICAgICBoYXMgYSBSZWZQdHIgdG8gR3JhcGhpY3NDb250ZXh0M0Qg
dG8gZW5zdXJlIHRoZSBwcm9wZXIgbGlmZXRpbWUuIAorICAgICAgICBEcmF3aW5nQnVmZmVyIGlz
IG5vdyBjcmVhdGVkIGJ5IEdyYXBoaWNzQ29udGV4dDNELiBBbHNvIERyYXdpbmdCdWZmZXIKKyAg
ICAgICAgcmVmZXJzIHRvIEdyYXBoaWNzQ29udGV4dDNEIHJhdGhlciB0aGFuIFNoYXJlZEdyYXBo
aWNzQ29udGV4dDNELgorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpXZWJHTFJl
bmRlcmluZ0NvbnRleHQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVEcmF3aW5nQnVm
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZW5lcmF0ZUNvbG9yVGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYXdpbmdCdWZmZXI6On5EcmF3aW5nQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRy
YXdpbmdCdWZmZXI6OnB1Ymxpc2hUb1BsYXRmb3JtTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RHJhd2luZ0J1ZmZlcjo6cmVzZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9E
cmF3aW5nQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpjbGVhcik6CisgICAgICAgIChX
ZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpiaW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvRHJhd2luZ0J1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6
Z3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFy
ZWRHcmFwaGljc0NvbnRleHQzRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRHcmFwaGlj
c0NvbnRleHQzRDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEdyYXBoaWNzQ29u
dGV4dDNEOjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RHJhd2luZ0J1ZmZlcjo6fkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2lu
Z0J1ZmZlcjo6cmVzZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGlj
c0NvbnRleHQzRE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpj
cmVhdGUpOgorCiAyMDEwLTEwLTEyICBKaWFuIExpICA8amlhbmxpQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9uIDY5NTMzKQor
KysgV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzEsNyArMTMxLDcgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpD
YW52YXNSZW5kZXJpbgogICAgIGlmIChHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4
dCgpKSB7CiAgICAgICAgIG1fY29udGV4dDNEID0gcC0+c2hhcmVkR3JhcGhpY3NDb250ZXh0M0Qo
KTsKICAgICAgICAgaWYgKG1fY29udGV4dDNEKSB7Ci0gICAgICAgICAgICBtX2RyYXdpbmdCdWZm
ZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUobV9jb250ZXh0M0QuZ2V0KCksIEludFNpemUoY2Fu
dmFzLT53aWR0aCgpLCBjYW52YXMtPmhlaWdodCgpKSk7CisgICAgICAgICAgICBtX2RyYXdpbmdC
dWZmZXIgPSBtX2NvbnRleHQzRC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlRHJhd2luZ0J1
ZmZlcihJbnRTaXplKGNhbnZhcy0+d2lkdGgoKSwgY2FudmFzLT5oZWlnaHQoKSkpOwogICAgICAg
ICAgICAgYy0+c2V0U2hhcmVkR3JhcGhpY3NDb250ZXh0M0QobV9jb250ZXh0M0QuZ2V0KCksIG1f
ZHJhd2luZ0J1ZmZlci5nZXQoKSwgSW50U2l6ZShjYW52YXMtPndpZHRoKCksIGNhbnZhcy0+aGVp
Z2h0KCkpKTsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAkocmV2aXNpb24gNjk1MzMpCisrKyBXZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOTQsNyArMjk0LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFDQ0VMRVJB
VEVEXzJEX0NBTlZBUykKLSAgICBPd25QdHI8RHJhd2luZ0J1ZmZlcj4gbV9kcmF3aW5nQnVmZmVy
OworICAgIFJlZlB0cjxEcmF3aW5nQnVmZmVyPiBtX2RyYXdpbmdCdWZmZXI7CiAgICAgUmVmUHRy
PFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQzRDsKICNlbmRpZgogfTsKSW5kZXg6
IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlz
aW9uIDY5NTMzKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCwxNSArODgsMTUgQEAgUGFzc093blB0cjxXZWJHTFJl
bmRlcmluZ0NvbnRleHQ+IFdlYkdMUgogewogICAgIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cgPSBj
YW52YXMtPmRvY3VtZW50KCktPnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCk7CiAgICAgR3Jh
cGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgZW1wdHlBdHRyaWJ1dGVzOwotICAgIE93blB0cjxH
cmFwaGljc0NvbnRleHQzRD4gY29udGV4dChHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKGF0dHJz
ID8gYXR0cnMtPmF0dHJpYnV0ZXMoKSA6IGVtcHR5QXR0cmlidXRlcywgaG9zdFdpbmRvdykpOwor
ICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dChHcmFwaGljc0NvbnRleHQzRDo6
Y3JlYXRlKGF0dHJzID8gYXR0cnMtPmF0dHJpYnV0ZXMoKSA6IGVtcHR5QXR0cmlidXRlcywgaG9z
dFdpbmRvdykpOwogCiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gMDsKICAgICAg
ICAgCi0gICAgcmV0dXJuIG5ldyBXZWJHTFJlbmRlcmluZ0NvbnRleHQoY2FudmFzLCBjb250ZXh0
LnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIG5ldyBXZWJHTFJlbmRlcmluZ0NvbnRleHQoY2FudmFz
LCBjb250ZXh0KTsKIH0KIAotV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQoSFRNTENhbnZhc0VsZW1lbnQqIHBhc3NlZENhbnZhcywgUGFzc093blB0cjxHcmFwaGlj
c0NvbnRleHQzRD4gY29udGV4dCkKK1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0KEhUTUxDYW52YXNFbGVtZW50KiBwYXNzZWRDYW52YXMsIFBhc3NSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCiAgICAgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0KHBh
c3NlZENhbnZhcykKICAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9uZWVkc1VwZGF0
ZSh0cnVlKQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5oCShyZXZpc2lvbiA2OTUzMykKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5MSw3ICsyOTEsNyBAQCBwdWJsaWM6CiAg
IHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdlYkdMT2JqZWN0OwogCi0gICAgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0KEhUTUxDYW52YXNFbGVtZW50KiwgUGFzc093blB0cjxHcmFwaGljc0NvbnRl
eHQzRD4pOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dChIVE1MQ2FudmFzRWxlbWVudCosIFBh
c3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+KTsKIAogICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdM
T2JqZWN0Kik7CiAgICAgdm9pZCBkZXRhY2hBbmRSZW1vdmVBbGxPYmplY3RzKCk7CkBAIC0zMjks
NyArMzI5LDcgQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxJbWFnZT4gdmlkZW9GcmFtZVRv
SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCogdmlkZW8pOwogCi0gICAgT3duUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiBtX2NvbnRleHQ7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRl
eHQ7CiAgICAgYm9vbCBtX25lZWRzVXBkYXRlOwogICAgIGJvb2wgbV9tYXJrZWRDYW52YXNEaXJ0
eTsKICAgICAvLyBGSVhNRTogSSB0aGluayB0aGlzIGlzIGJyb2tlbiAtLSBpdCBkb2VzIG5vdCBp
bmNyZW1lbnQgYW55CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmNwcAkocmV2aXNpb24gNjk1MzMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAKICNpbmNsdWRlICJBcnJheUJ1
ZmZlclZpZXcuaCIKKyNpbmNsdWRlICJEcmF3aW5nQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW1hZ2Uu
aCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKIApAQCAtNDEsNiArNDIsMTEgQEAgc3RhdGljIHVp
bnQ4X3QgY29udmVydENvbG9yMTZUbzgodWludDE2XwogICAgIHJldHVybiB2YWx1ZSA+PiA4Owog
fQogCitQYXNzUmVmUHRyPERyYXdpbmdCdWZmZXI+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVE
cmF3aW5nQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgcmV0dXJuIERyYXdpbmdC
dWZmZXI6OmNyZWF0ZSh0aGlzLCBzaXplKTsKK30KKwogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6
Y29tcHV0ZUZvcm1hdEFuZFR5cGVQYXJhbWV0ZXJzKHVuc2lnbmVkIGludCBmb3JtYXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyogY29tcG9uZW50c1BlclBpeGVsLApJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24g
Njk1MzMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDE2ICsyNiwxMiBAQAogI2lmbmRlZiBHcmFwaGljc0NvbnRl
eHQzRF9oCiAjZGVmaW5lIEdyYXBoaWNzQ29udGV4dDNEX2gKIAotI2lmIFBMQVRGT1JNKE1BQykK
LSNpbmNsdWRlICJBTkdMRVdlYktpdEJyaWRnZS5oIgotI2VuZGlmCiAjaW5jbHVkZSAiR3JhcGhp
Y3NMYXllci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIC8vIEZJWE1FOiBG
aW5kIGEgYmV0dGVyIHdheSB0byBhdm9pZCB0aGUgbmFtZSBjb25mbGljdGlvbiBmb3IgTk9fRVJS
T1IuCiAjaWYgKChQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoV0lORE9XUykpIHx8IFBMQVRGT1JN
KFdJTikgfHwgKFBMQVRGT1JNKFFUKSAmJiBPUyhXSU5ET1dTKSkpCkBAIC00Myw2ICszOSw3IEBA
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlICJBTkdMRVdlYktpdEJyaWRn
ZS5oIgogI2luY2x1ZGUgPE9wZW5HTC9PcGVuR0wuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CiAKQEAgLTc4LDYgKzc1LDcgQEAgY29uc3QgUGxhdGZvcm0zRE9iamVjdCBOdWxsUGxhdGZv
cm0zRE9iagogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250
ZXh0OworY2xhc3MgRHJhd2luZ0J1ZmZlcjsKIGNsYXNzIEhvc3RXaW5kb3c7CiBjbGFzcyBJbWFn
ZTsKIGNsYXNzIEltYWdlRGF0YTsKQEAgLTk0LDcgKzkyLDcgQEAgc3RydWN0IEFjdGl2ZUluZm8g
ewogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDsKICNlbmRpZgogCi1jbGFzcyBHcmFw
aGljc0NvbnRleHQzRCA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitjbGFzcyBHcmFwaGljc0NvbnRl
eHQzRCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzQ29udGV4dDNEPiB7CiBwdWJsaWM6CiAg
ICAgZW51bSBXZWJHTEVudW1UeXBlIHsKICAgICAgICAgREVQVEhfQlVGRkVSX0JJVCA9IDB4MDAw
MDAxMDAsCkBAIC00NDEsOCArNDM5LDggQEAgcHVibGljOgogICAgICAgICBSZW5kZXJEaXJlY3Rs
eVRvSG9zdFdpbmRvdwogICAgIH07CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gY3JlYXRlKEF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cs
IFJlbmRlclN0eWxlIHJlbmRlclN0eWxlID0gUmVuZGVyT2Zmc2NyZWVuKTsKLSAgICB2aXJ0dWFs
IH5HcmFwaGljc0NvbnRleHQzRCgpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiBjcmVhdGUoQXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywg
UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUgPSBSZW5kZXJPZmZzY3JlZW4pOworICAgIH5HcmFwaGlj
c0NvbnRleHQzRCgpOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0M0QgcGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGV4dE9iajsgfQpAQCAtNDY5LDYgKzQ2Nyw4IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHZvaWQg
bWFrZUNvbnRleHRDdXJyZW50KCk7CiAKKyAgICBQYXNzUmVmUHRyPERyYXdpbmdCdWZmZXI+IGNy
ZWF0ZURyYXdpbmdCdWZmZXIoY29uc3QgSW50U2l6ZSYgPSBJbnRTaXplKCkpOworICAgIAogI2lm
IFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgLy8gV2l0aCBtdWx0aXNh
bXBsaW5nIG9uLCBibGl0IGZyb20gbXVsdGlzYW1wbGVGQk8gdG8gcmVndWxhciBGQk8uCiAgICAg
dm9pZCBwcmVwYXJlVGV4dHVyZSgpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcAkocmV2
aXNpb24gNjk1MzMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdp
bmdCdWZmZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgc3Ry
dWN0IERyYXdpbmdCdWZmZXJJbnRlcm5hbCB7CiAjZW5kaWYKIH07CiAKLXN0YXRpYyB1bnNpZ25l
ZCBnZW5lcmF0ZUNvbG9yVGV4dHVyZShTaGFyZWRHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKK3N0YXRpYyB1bnNpZ25lZCBnZW5lcmF0ZUNvbG9yVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAg
ICB1bnNpZ25lZCBvZmZzY3JlZW5Db2xvclRleHR1cmUgPSBjb250ZXh0LT5jcmVhdGVUZXh0dXJl
KCk7CiAgICAgaWYgKCFvZmZzY3JlZW5Db2xvclRleHR1cmUpCkBAIC02NiwxMyArNjYsMTMgQEAg
c3RhdGljIHVuc2lnbmVkIGdlbmVyYXRlQ29sb3JUZXh0dXJlKFNoYQogfQogCiAKLURyYXdpbmdC
dWZmZXI6OkRyYXdpbmdCdWZmZXIoU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNv
bnN0IEludFNpemUmIHNpemUsIHVuc2lnbmVkIGZyYW1lYnVmZmVyKQorRHJhd2luZ0J1ZmZlcjo6
RHJhd2luZ0J1ZmZlcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0LCBjb25z
dCBJbnRTaXplJiBzaXplKQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3NpemUo
c2l6ZSkKLSAgICAsIG1fZnJhbWVidWZmZXIoZnJhbWVidWZmZXIpCisgICAgLCBtX2Zibyhjb250
ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigpKQogICAgICwgbV9pbnRlcm5hbChuZXcgRHJhd2luZ0J1
ZmZlckludGVybmFsKQogewotICAgIGNvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZl
cik7CisgICAgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgbV9mYm8pOwogICAgIG1faW50ZXJuYWwtPm9mZnNjcmVlbkNvbG9yVGV4dHVyZSA9
IGdlbmVyYXRlQ29sb3JUZXh0dXJlKGNvbnRleHQsIHNpemUpOwogfQogCkBAIC04MiwxNCArODIs
MjIgQEAgRHJhd2luZ0J1ZmZlcjo6fkRyYXdpbmdCdWZmZXIoKQogICAgIGlmIChtX2ludGVybmFs
LT5wbGF0Zm9ybUxheWVyKQogICAgICAgICBtX2ludGVybmFsLT5wbGF0Zm9ybUxheWVyLT5zZXRE
cmF3aW5nQnVmZmVyKDApOwogI2VuZGlmCi0gICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIo
bV9mcmFtZWJ1ZmZlcik7CisKKyAgICBpZiAoIW1fY29udGV4dCkKKyAgICAgICAgcmV0dXJuOwor
ICAgICAgICAKKyAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKICAgICBtX2NvbnRleHQtPmRlbGV0ZVRleHR1cmUobV9p
bnRlcm5hbC0+b2Zmc2NyZWVuQ29sb3JUZXh0dXJlKTsKLSAgICBtX2NvbnRleHQtPmRlbGV0ZUZy
YW1lYnVmZmVyKG1fZnJhbWVidWZmZXIpOworCisgICAgY2xlYXIoKTsKIH0KIAogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKIHZvaWQgRHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxh
dGZvcm1MYXllcigpCiB7CisgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAg
ICAgICAgCiAgICAgaWYgKG1fY2FsbGJhY2spCiAgICAgICAgIG1fY2FsbGJhY2stPndpbGxQdWJs
aXNoKCk7CiAgICAgdW5zaWduZWQgcGFyZW50VGV4dHVyZSA9IG1faW50ZXJuYWwtPnBsYXRmb3Jt
TGF5ZXItPnRleHR1cmVJZCgpOwpAQCAtMTA2LDYgKzExNCw5IEBAIHZvaWQgRHJhd2luZ0J1ZmZl
cjo6cHVibGlzaFRvUGxhdGZvcm1MYXkKIAogdm9pZCBEcmF3aW5nQnVmZmVyOjpyZXNldChjb25z
dCBJbnRTaXplJiBuZXdTaXplKQogeworICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICByZXR1
cm47CisgICAgICAgIAogICAgIGlmIChtX3NpemUgPT0gbmV3U2l6ZSkKICAgICAgICAgcmV0dXJu
OwogICAgIG1fc2l6ZSA9IG5ld1NpemU7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9EcmF3aW5nQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcAkocmV2aXNpb24gNjk1MzMpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzAsMjcgKzMwLDM4IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIEVOQUJMRShB
Q0NFTEVSQVRFRF8yRF9DQU5WQVMpCisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykg
fHwgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiAjaW5jbHVkZSAiRHJhd2luZ0J1ZmZl
ci5oIgogCi0jaW5jbHVkZSAiU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaCIKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1QYXNzT3duUHRyPERyYXdpbmdCdWZmZXI+IERyYXdpbmdCdWZmZXI6OmNy
ZWF0ZShTaGFyZWRHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50U2l6ZSYgc2l6
ZSkKK1Bhc3NSZWZQdHI8RHJhd2luZ0J1ZmZlcj4gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKFBhc3NS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsIGNvbnN0IEludFNpemUmIHNpemUpCit7
CisgICAgUmVmUHRyPERyYXdpbmdCdWZmZXI+IGRyYXdpbmdCdWZmZXIgPSBhZG9wdFJlZihuZXcg
RHJhd2luZ0J1ZmZlcihjb250ZXh0LCBzaXplKSk7CisgICAgcmV0dXJuIChkcmF3aW5nQnVmZmVy
LT5tX2NvbnRleHQpID8gZHJhd2luZ0J1ZmZlciA6IDA7Cit9CisKK3ZvaWQgRHJhd2luZ0J1ZmZl
cjo6Y2xlYXIoKQogewotICAgIHVuc2lnbmVkIGZyYW1lYnVmZmVyID0gY29udGV4dC0+Y3JlYXRl
RnJhbWVidWZmZXIoKTsKLSAgICBBU1NFUlQoZnJhbWVidWZmZXIpOwotICAgIGlmICghZnJhbWVi
dWZmZXIpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBhZG9wdFB0cihuZXcgRHJhd2lu
Z0J1ZmZlcihjb250ZXh0LCBzaXplLCBmcmFtZWJ1ZmZlcikpOworICAgIGlmICghbV9jb250ZXh0
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
OworICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgbV9mYm8pOworICAgIG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIobV9mYm8p
OworICAgIG1fZmJvID0gMDsKKworICAgIG1fY29udGV4dCA9IDA7CiB9CiAKIHZvaWQgRHJhd2lu
Z0J1ZmZlcjo6YmluZCgpCiB7Ci0gICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIobV9mcmFt
ZWJ1ZmZlcik7Ci0gICAgbV9jb250ZXh0LT5zZXRWaWV3cG9ydChtX3NpemUpOworICAgIGlmICgh
bV9jb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIG1fY29udGV4dC0+Ymlu
ZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOworICAg
IG1fY29udGV4dC0+dmlld3BvcnQoMCwgMCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQo
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmgJKHJldmlzaW9uIDY5NTMzKQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NCwyMyArNDQsMjYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFy
ZWRHcmFwaGljc0NvbnRleHQzRDsKLQogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogc3RydWN0IERy
YXdpbmdCdWZmZXJJbnRlcm5hbDsKICNlbmRpZgogCiAvLyBNYW5hZ2VzIGEgcmVuZGVyaW5nIHRh
cmdldCAoZnJhbWVidWZmZXIgKyBhdHRhY2htZW50KSBmb3IgYSBjYW52YXMuICBDYW4gcHVibGlz
aCBpdHMgcmVuZGVyaW5nCiAvLyByZXN1bHRzIHRvIGEgUGxhdGZvcm1MYXllciBmb3IgY29tcG9z
aXRpbmcuCi1jbGFzcyBEcmF3aW5nQnVmZmVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKK2NsYXNz
IERyYXdpbmdCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxEcmF3aW5nQnVmZmVyPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8RHJhd2luZ0J1ZmZlcj4gY3JlYXRlKFNoYXJlZEdy
YXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50U2l6ZSYpOworICAgIGZyaWVuZCBjbGFzcyBHcmFw
aGljc0NvbnRleHQzRDsKKyAgICAKICAgICB+RHJhd2luZ0J1ZmZlcigpOwogCiAgICAgdm9pZCBy
ZXNldChjb25zdCBJbnRTaXplJik7CiAgICAgdm9pZCBiaW5kKCk7CiAgICAgSW50U2l6ZSBzaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAKKyAgICAgLy8gQ2xlYXIgYWxsIHJlc291cmNl
cyBmcm9tIHRoaXMgb2JqZWN0LCBhcyB3ZWxsIGFzIGNvbnRleHQuIENhbGxlZCB3aGVuIGNvbnRl
eHQgaXMgZGVzdHJveWVkCisgICAgLy8gdG8gcHJldmVudCBpbnZhbGlkIGFjY2Vzc2VzIHRvIHRo
ZSByZXNvdXJjZXMuCisgICAgdm9pZCBjbGVhcigpOworICAgIAogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCk7CiAgICAg
dm9pZCBwdWJsaXNoVG9QbGF0Zm9ybUxheWVyKCk7CkBAIC03OSwxMiArODIsMTcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0V2lsbFB1Ymxpc2hDYWxsYmFjayhQYXNzT3duUHRyPFdpbGxQdWJsaXNo
Q2FsbGJhY2s+IGNhbGxiYWNrKSB7IG1fY2FsbGJhY2sgPSBjYWxsYmFjazsgfQogI2VuZGlmCiAK
KyAgICBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBncmFwaGljc0NvbnRleHQzRCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGV4dDsgfQorCitwcm90ZWN0ZWQ6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8RHJhd2luZ0J1ZmZlcj4gY3JlYXRlKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
LCBjb25zdCBJbnRTaXplJik7CisgICAgCiBwcml2YXRlOgotICAgIERyYXdpbmdCdWZmZXIoU2hh
cmVkR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRTaXplJiwgdW5zaWduZWQgZnJhbWVidWZm
ZXIpOworICAgIERyYXdpbmdCdWZmZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIGNv
bnN0IEludFNpemUmKTsKIAotICAgIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7
CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7CiAgICAgSW50U2l6ZSBt
X3NpemU7Ci0gICAgdW5zaWduZWQgbV9mcmFtZWJ1ZmZlcjsKKyAgICBQbGF0Zm9ybTNET2JqZWN0
IG1fZmJvOwogCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgT3duUHRyPFdpbGxQdWJsaXNo
Q2FsbGJhY2s+IG1fY2FsbGJhY2s7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuY3BwCShyZXZpc2lvbiA2
OTUzMykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29u
dGV4dDNELmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBQYXNzUmVmUHRyPFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEPiBTaGFyZWRHcmFwaGlj
c0NvbnRleHQzRDo6Y3JlYXRlKEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7CiAgICAgR3JhcGhp
Y3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cjsKLSAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKGF0dHIsIGhvc3RXaW5kb3cp
OworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4
dDNEOjpjcmVhdGUoYXR0ciwgaG9zdFdpbmRvdyk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAg
ICByZXR1cm4gMDsKICAgICBPd25QdHI8U29saWRGaWxsU2hhZGVyPiBzb2xpZEZpbGxTaGFkZXIg
PSBTb2xpZEZpbGxTaGFkZXI6OmNyZWF0ZShjb250ZXh0LmdldCgpKTsKQEAgLTYxLDEwICs2MSwx
MCBAQCBQYXNzUmVmUHRyPFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEPiBTaGFyCiAgICAgT3duUHRy
PFRleFNoYWRlcj4gdGV4U2hhZGVyID0gVGV4U2hhZGVyOjpjcmVhdGUoY29udGV4dC5nZXQoKSk7
CiAgICAgaWYgKCF0ZXhTaGFkZXIpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBhZG9w
dFJlZihuZXcgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QoY29udGV4dC5yZWxlYXNlKCksIHNvbGlk
RmlsbFNoYWRlci5yZWxlYXNlKCksIHRleFNoYWRlci5yZWxlYXNlKCkpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKGNvbnRleHQsIHNvbGlkRmlsbFNo
YWRlci5yZWxlYXNlKCksIHRleFNoYWRlci5yZWxlYXNlKCkpKTsKIH0KIAotU2hhcmVkR3JhcGhp
Y3NDb250ZXh0M0Q6OlNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKFBhc3NPd25QdHI8R3JhcGhpY3ND
b250ZXh0M0Q+IGNvbnRleHQsIFBhc3NPd25QdHI8U29saWRGaWxsU2hhZGVyPiBzb2xpZEZpbGxT
aGFkZXIsIFBhc3NPd25QdHI8VGV4U2hhZGVyPiB0ZXhTaGFkZXIpCitTaGFyZWRHcmFwaGljc0Nv
bnRleHQzRDo6U2hhcmVkR3JhcGhpY3NDb250ZXh0M0QoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRl
eHQzRD4gY29udGV4dCwgUGFzc093blB0cjxTb2xpZEZpbGxTaGFkZXI+IHNvbGlkRmlsbFNoYWRl
ciwgUGFzc093blB0cjxUZXhTaGFkZXI+IHRleFNoYWRlcikKICAgICA6IG1fY29udGV4dChjb250
ZXh0KQogICAgICwgbV9xdWFkVmVydGljZXMoMCkKICAgICAsIG1fc29saWRGaWxsU2hhZGVyKHNv
bGlkRmlsbFNoYWRlcikKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJl
ZEdyYXBoaWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24gNjk1MzMpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTgsMTQgKzExOCwxNiBAQCBwdWJsaWM6CiAgICAgLy8gdGhlIHRl
eHR1cmUuCiAgICAgUGFzc1JlZlB0cjxUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmU6OkZv
cm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKIAorICAgIEdyYXBoaWNzQ29udGV4dDNEKiBn
cmFwaGljc0NvbnRleHQzRCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQorCiBw
cml2YXRlOgotICAgIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKFBhc3NPd25QdHI8R3JhcGhpY3ND
b250ZXh0M0Q+LCBQYXNzT3duUHRyPFNvbGlkRmlsbFNoYWRlcj4sIFBhc3NPd25QdHI8VGV4U2hh
ZGVyPik7CisgICAgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QoUGFzc1JlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4sIFBhc3NPd25QdHI8U29saWRGaWxsU2hhZGVyPiwgUGFzc093blB0cjxUZXhTaGFk
ZXI+KTsKIAogICAgIC8vIFVzZWQgdG8gaW1wbGVtZW50IHJlbW92ZVRleHR1cmVzRm9yKCksIHNl
ZSB0aGUgY29tbWVudCBhYm92ZS4KICAgICBzdGF0aWMgSGFzaFNldDxTaGFyZWRHcmFwaGljc0Nv
bnRleHQzRCo+KiBhbGxDb250ZXh0cygpOwogICAgIHZvaWQgcmVtb3ZlVGV4dHVyZUZvcihOYXRp
dmVJbWFnZVB0cik7CiAKLSAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsK
KyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsKIAogICAgIHVuc2lnbmVk
IG1fcXVhZFZlcnRpY2VzOwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9t
YWMvRHJhd2luZ0J1ZmZlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbQkocmV2aXNpb24gNjk1MzMpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjUsNDEgKzI1LDQ5IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAot
I2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVE
XzJEX0NBTlZBUykgfHwgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiAjaW5jbHVkZSAi
RHJhd2luZ0J1ZmZlci5oIgogCi0jaW5jbHVkZSAiU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaCIK
ICNpbmNsdWRlICJXZWJHTExheWVyLmgiCiAKICNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIoU2hh
cmVkR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFNpemUmIHNpemUsIHVuc2ln
bmVkIGZyYW1lYnVmZmVyKQorRHJhd2luZ0J1ZmZlcjo6RHJhd2luZ0J1ZmZlcihQYXNzUmVmUHRy
PEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplKQogICAgIDog
bV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3NpemUoc2l6ZSkKLSAgICAsIG1fZnJhbWVidWZm
ZXIoZnJhbWVidWZmZXIpCisgICAgLCBtX2Zibyhjb250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigp
KQogewotICAgIGNvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7Ci0KKyAgICBB
U1NFUlQobV9mYm8pOworICAgIGlmICghbV9mYm8pIHsKKyAgICAgICAgY2xlYXIoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCiAgICAgLy8gQ3JlYXRlIHRoZSBXZWJHTExheWVy
CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIG1fcGxhdGZvcm1MYXll
ci5hZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhHcmFwaGljc0NvbnRleHQzRDow
XSk7CisgICAgICAgIG1fcGxhdGZvcm1MYXllci5hZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10g
aW5pdFdpdGhHcmFwaGljc0NvbnRleHQzRDpjb250ZXh0LmdldCgpXSk7CiAjaWZuZGVmIE5ERUJV
RwotICAgICAgICBbbV9wbGF0Zm9ybUxheWVyLmdldCgpIHNldE5hbWU6QCJXZWJHTCBMYXllciJd
OworICAgICAgICBbbV9wbGF0Zm9ybUxheWVyLmdldCgpIHNldE5hbWU6QCJEcmF3aW5nQnVmZmVy
IExheWVyIl07CiAjZW5kaWYgICAgCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQog
CiBEcmF3aW5nQnVmZmVyOjp+RHJhd2luZ0J1ZmZlcigpCiB7Ci0gICAgbV9jb250ZXh0LT5iaW5k
RnJhbWVidWZmZXIobV9mcmFtZWJ1ZmZlcik7Ci0gICAgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1
ZmZlcihtX2ZyYW1lYnVmZmVyKTsKKyAgICBpZiAoIW1fY29udGV4dCkKKyAgICAgICAgcmV0dXJu
OworICAgICAgICAKKyAgICBjbGVhcigpOwogfQogCiB2b2lkIERyYXdpbmdCdWZmZXI6OnJlc2V0
KGNvbnN0IEludFNpemUmIG5ld1NpemUpCiB7CisgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAg
IHJldHVybjsKKyAgICAgICAgCiAgICAgaWYgKG1fc2l6ZSA9PSBuZXdTaXplKQogICAgICAgICBy
ZXR1cm47CiAgICAgbV9zaXplID0gbmV3U2l6ZTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLm1tCShyZXZpc2lvbiA2
OTUzMykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNE
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03NywxMyArNzcsMTMgQEAgc3RhdGljIHZvaWQgc2V0
UGl4ZWxGb3JtYXQoVmVjdG9yPENHTFBpeAogICAgIGF0dHJpYnMuYXBwZW5kKHN0YXRpY19jYXN0
PENHTFBpeGVsRm9ybWF0QXR0cmlidXRlPigwKSk7CiB9CiAKLVBhc3NPd25QdHI8R3JhcGhpY3ND
b250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0
dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dDNE
OjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSkKK1Bhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMg
YXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJT
dHlsZSByZW5kZXJTdHlsZSkKIHsKICAgICAvLyBUaGlzIGltcGxlbWVudGF0aW9uIGRvZXNuJ3Qg
Y3VycmVudGx5IHN1cHBvcnQgcmVuZGVyaW5nIGRpcmVjdGx5IHRvIHRoZSBIb3N0V2luZG93Lgog
ICAgIGlmIChyZW5kZXJTdHlsZSA9PSBSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykKICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KG5ldyBH
cmFwaGljc0NvbnRleHQzRChhdHRycywgaG9zdFdpbmRvdywgZmFsc2UpKTsKLSAgICByZXR1cm4g
Y29udGV4dC0+bV9jb250ZXh0T2JqID8gY29udGV4dC5yZWxlYXNlKCkgOiAwOworICAgIFJlZlB0
cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IGFkb3B0UmVmKG5ldyBHcmFwaGljc0NvbnRl
eHQzRChhdHRycywgaG9zdFdpbmRvdywgZmFsc2UpKTsKKyAgICByZXR1cm4gY29udGV4dC0+bV9j
b250ZXh0T2JqID8gY29udGV4dCA6IDA7CiB9CiAKIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGlj
c0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRv
dyogaG9zdFdpbmRvdywgYm9vbCkK
</data>
<flag name="review"
          id="60432"
          type_id="1"
          status="+"
          setter="cmarrin"
    />
          </attachment>
      

    </bug>

</bugzilla>