<?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>65767</bug_id>
          
          <creation_ts>2011-08-05 06:05:12 -0700</creation_ts>
          <short_desc>toDataURL() uses stale data after putImageData()</short_desc>
          <delta_ts>2012-02-06 15:10:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Canvas</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter>M8R-1o5lig</reporter>
          <assigned_to name="Matthew Delaney">mdelaney7</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>mitz</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>447169</commentid>
    <comment_count>0</comment_count>
      <attachid>103065</attachid>
    <who name="">M8R-1o5lig</who>
    <bug_when>2011-08-05 06:05:12 -0700</bug_when>
    <thetext>Created attachment 103065
Test case and workaround

toDataURL() appears to be using stale data if the canvas is updated using putImageData(). If the canvas is subsequently updated using ordinary drawing commands, a call to toDataURL() will work as expected.

To reproduce, open the attached sample code to generate an ordered list of:
1. The real canvas.
2. The toDataURL()-image for the uninitialized canvas.
3. The toDataURL()-image for the canvas after it is filled with red pixels using putImageData().
4. The toDataURL()-image for the canvas after a no-op drawing command.

Expected output (OK in Chromium 15.0.845.0 for Mac OS X 10.7.0):
1. A red square.
2. A blank square.
3. A red square.
4. A red square.

Output on Safari 5.1 (7534.48.3) and WebKit Nightly 5.1 (7534.48.3, r92445) for Mac OS X 10.7.0:
1. A red square.
2. A blank square.
3. A blank square (UNEXPECTED).
4. A red square.

By removing the moveTo(), lineTo(), stroke() lines, it can be verified that the canvas is indeed a red square already after putImageData().

Workaround:
As in the sample code, attempt to do some no-ops on the canvas: context.moveTo( 0, 0 ); context.lineTo( 0, 0 ); context.stroke();
(Beware of anti-aliasing ghosting!)

Observation:
If the size of the canvas is reduced (10x10 works) the problem goes away. Perhaps the issue is related to hardware acceleration?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456246</commentid>
    <comment_count>1</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-08-24 11:26:56 -0700</bug_when>
    <thetext>Test comment. Please ignore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456249</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2011-08-24 11:27:57 -0700</bug_when>
    <thetext>&lt;rdar://problem/10016113&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537593</commentid>
    <comment_count>3</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-01-17 20:28:06 -0800</bug_when>
    <thetext>The issue here is largely one of timing and false assumptions about CG behavior. Basically, we had loosely assumed before that modifying the backing store&apos;s bits behind the back of the graphics context would magically always make its way to the screen. However there&apos;s no guarantee of that - how is CG supposed to know that we modified the backing store memory in the case where we do no drawing through its API as your testcase here showcases, is the question.

I&apos;ve tried out a handful of possible solutions, but none of them get it right other than adding in a NoOp draw call type hack similar to the one suggested in the attached testcase. Essentially, CG wasn&apos;t&apos; designed to have the likes of putImageData and getImageData meddling around with its backing store&apos;s data directly, so there&apos;s no easy and nice way to hint to CG that the context&apos;s bits have changed.

I&apos;m uploading a patch now that uses a noop draw call after any putImageData call to trick the context into thinking its been drawn into.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537639</commentid>
    <comment_count>4</comment_count>
      <attachid>122875</attachid>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-01-17 22:44:12 -0800</bug_when>
    <thetext>Created attachment 122875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537950</commentid>
    <comment_count>5</comment_count>
      <attachid>122875</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-01-18 09:55:48 -0800</bug_when>
    <thetext>Comment on attachment 122875
Patch

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

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:301
&gt; +    FloatRect rect(1, 1, 0, 0);
&gt; +    context-&gt;fillRect(rect);

Doesn&apos;t this need to set the fill color to transparent?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538031</commentid>
    <comment_count>6</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-01-18 11:35:00 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 122875 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=122875&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:301
&gt; &gt; +    FloatRect rect(1, 1, 0, 0);
&gt; &gt; +    context-&gt;fillRect(rect);
&gt; 
&gt; Doesn&apos;t this need to set the fill color to transparent?

It&apos;s a fill rect of area=width=height=0, so it shouldn&apos;t matter. I&apos;m still trying to rack my brain to think if there&apos;s some composite operation or something else that might affect the bits still in this case, but I currently can&apos;t think of anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548501</commentid>
    <comment_count>7</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-02-02 23:54:37 -0800</bug_when>
    <thetext>Trying a new approach: wrap the bits in a CGImage and draw them to the ImageBuffer with the CGContext in a state where it&apos;ll copy the bits down just as canvas&apos;s putImageData requires.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548520</commentid>
    <comment_count>8</comment_count>
      <attachid>125277</attachid>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-02-03 00:41:34 -0800</bug_when>
    <thetext>Created attachment 125277
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548548</commentid>
    <comment_count>9</comment_count>
      <attachid>125277</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-03 01:01:38 -0800</bug_when>
    <thetext>Comment on attachment 125277
Patch

Attachment 125277 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11421191</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548550</commentid>
    <comment_count>10</comment_count>
      <attachid>125277</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-02-03 01:04:04 -0800</bug_when>
    <thetext>Comment on attachment 125277
Patch

Attachment 125277 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11416254</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548561</commentid>
    <comment_count>11</comment_count>
      <attachid>125277</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-02-03 01:22:18 -0800</bug_when>
    <thetext>Comment on attachment 125277
Patch

Attachment 125277 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11418250</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548573</commentid>
    <comment_count>12</comment_count>
      <attachid>125277</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-02-03 01:34:01 -0800</bug_when>
    <thetext>Comment on attachment 125277
Patch

Attachment 125277 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11423179</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548884</commentid>
    <comment_count>13</comment_count>
      <attachid>125371</attachid>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-02-03 11:24:16 -0800</bug_when>
    <thetext>Created attachment 125371
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548928</commentid>
    <comment_count>14</comment_count>
      <attachid>125380</attachid>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-02-03 12:11:10 -0800</bug_when>
    <thetext>Created attachment 125380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548929</commentid>
    <comment_count>15</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-02-03 12:11:33 -0800</bug_when>
    <thetext>New patch to fix Skia build error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548965</commentid>
    <comment_count>16</comment_count>
      <attachid>125380</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-03 12:49:54 -0800</bug_when>
    <thetext>Comment on attachment 125380
Patch

Attachment 125380 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11423359</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548996</commentid>
    <comment_count>17</comment_count>
      <attachid>125395</attachid>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-02-03 13:11:43 -0800</bug_when>
    <thetext>Created attachment 125395
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549010</commentid>
    <comment_count>18</comment_count>
      <attachid>125395</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-03 13:28:08 -0800</bug_when>
    <thetext>Comment on attachment 125395
Patch

Attachment 125395 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11416497</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549032</commentid>
    <comment_count>19</comment_count>
      <attachid>125403</attachid>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-02-03 13:47:01 -0800</bug_when>
    <thetext>Created attachment 125403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549271</commentid>
    <comment_count>20</comment_count>
      <attachid>125403</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2012-02-03 17:26:53 -0800</bug_when>
    <thetext>Comment on attachment 125403
Patch

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

I don&apos;t know enough about the new implementation of ImageBuffer::putByteArray() to review this, but I do have a few comments.

&gt; Source/WebCore/ChangeLog:16
&gt; +        TODO: Will add a pixel test for this (since this is only a painting issue) in the next patch

I think it&apos;s worth writing the test as part of this patch instead of putting it off for later.

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:312
&gt;      if (m_context-&gt;isAcceleratedContext()) {

There would be less indentation if you wrote this as:

if (!m_context-&gt;isAcceleratedContext()) {
    m_data.putData(source, sourceSize, sourceRect, destPoint, m_size, m_context-&gt;isAcceleratedContext(), multiplied == Unmultiplied);
    return;
}

// accelerated context case goes here

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:321
&gt; +        if (multiplied == Unmultiplied)
&gt; +            sourceCopy-&gt;m_data.putData(source, sourceSize, sourceRect, IntPoint(-sourceRect.x(), -sourceRect.y()), sourceCopy-&gt;size(), false, true);
&gt; +        else
&gt; +            sourceCopy-&gt;m_data.putData(source, sourceSize, sourceRect, IntPoint(-sourceRect.x(), -sourceRect.y()), sourceCopy-&gt;size(), false, false);

You could write this more concisely as:

sourceCopy-&gt;m_data.putData(source, sourceSize, sourceRect, IntPoint(-sourceRect.x(), -sourceRect.y()), sourceCopy-&gt;size(), false, (multiplied == Unmultiplied));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549276</commentid>
    <comment_count>21</comment_count>
      <attachid>125403</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2012-02-03 17:30:37 -0800</bug_when>
    <thetext>Comment on attachment 125403
Patch

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

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:319
&gt; +            sourceCopy-&gt;m_data.putData(source, sourceSize, sourceRect, IntPoint(-sourceRect.x(), -sourceRect.y()), sourceCopy-&gt;size(), false, true);

Shouldn&apos;t the second-to-last argument here be true? In the !isAcceleratedContext() case you set this argument to the value of m_context-&gt;isAcceleratedContext in your call to m_data.putData(). Why is it false here as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549279</commentid>
    <comment_count>22</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-02-03 17:35:20 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 125403 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=125403&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:319
&gt; &gt; +            sourceCopy-&gt;m_data.putData(source, sourceSize, sourceRect, IntPoint(-sourceRect.x(), -sourceRect.y()), sourceCopy-&gt;size(), false, true);
&gt; 
&gt; Shouldn&apos;t the second-to-last argument here be true? In the !isAcceleratedContext() case you set this argument to the value of m_context-&gt;isAcceleratedContext in your call to m_data.putData(). Why is it false here as well?

Yea, I see how this one looks weird, though it&apos;s actually correct. The false is from the fact that sourceCopy is not accelerated (though, we ourselves are accelerated) since ImageBuffers pass down that knowledge to their ImageBufferData objects for this call. I should replace the false with sourceCopy()-&gt;context()-&gt;isAccelerated() instead to make it clearer. Really, this whole could use a good cleanup...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549281</commentid>
    <comment_count>23</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-02-03 17:38:27 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 125403 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=125403&amp;action=review
&gt; 
&gt; I don&apos;t know enough about the new implementation of ImageBuffer::putByteArray() to review this, but I do have a few comments.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:16
&gt; &gt; +        TODO: Will add a pixel test for this (since this is only a painting issue) in the next patch
&gt; 
&gt; I think it&apos;s worth writing the test as part of this patch instead of putting it off for later.

Oop, yea, meant to do that along with the Skia port fixes. Cooking that up now then.

&gt; &gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:312
&gt; &gt;      if (m_context-&gt;isAcceleratedContext()) {
&gt; 
&gt; There would be less indentation if you wrote this as:
&gt; 
&gt; if (!m_context-&gt;isAcceleratedContext()) {
&gt;     m_data.putData(source, sourceSize, sourceRect, destPoint, m_size, m_context-&gt;isAcceleratedContext(), multiplied == Unmultiplied);
&gt;     return;
&gt; }

Good call.

&gt; 
&gt; You could write this more concisely as:
&gt; 
&gt; sourceCopy-&gt;m_data.putData(source, sourceSize, sourceRect, IntPoint(-sourceRect.x(), -sourceRect.y()), sourceCopy-&gt;size(), false, (multiplied == Unmultiplied));

Good calls!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550167</commentid>
    <comment_count>24</comment_count>
      <attachid>125680</attachid>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-02-06 11:54:43 -0800</bug_when>
    <thetext>Created attachment 125680
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550214</commentid>
    <comment_count>25</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-02-06 12:54:20 -0800</bug_when>
    <thetext>Committed r106836: &lt;http://trac.webkit.org/changeset/106836&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550324</commentid>
    <comment_count>26</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-06 15:03:53 -0800</bug_when>
    <thetext>Build fixes in:
http://trac.webkit.org/changeset/106843
http://trac.webkit.org/changeset/106850
http://trac.webkit.org/changeset/106859</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550329</commentid>
    <comment_count>27</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-02-06 15:10:21 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; Build fixes in:
&gt; http://trac.webkit.org/changeset/106843
&gt; http://trac.webkit.org/changeset/106850
&gt; http://trac.webkit.org/changeset/106859

And this one for windows:
http://trac.webkit.org/changeset/106860</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>103065</attachid>
            <date>2011-08-05 06:05:12 -0700</date>
            <delta_ts>2011-08-05 06:05:12 -0700</delta_ts>
            <desc>Test case and workaround</desc>
            <filename>sample.html</filename>
            <type>text/html</type>
            <size>978</size>
            <attacher>M8R-1o5lig</attacher>
            
              <data encoding="base64">PGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5Pgo8b2w+CjxsaT48Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSIxMDAiIGhlaWdodD0iMTAwIj48L2NhbnZhcz48L2xpPgo8bGk+PGltZyBzcmM9IiIgaWQ9
ImEiPjwvbGk+CjxsaT48aW1nIHNyYz0iIiBpZD0iYiI+PC9saT4KPGxpPjxpbWcgc3JjPSIiIGlk
PSJjIj48L2xpPgo8L29sPgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgp2YXIgY2Fu
dmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoICdjYW52YXMnICk7CnZhciBjb250ZXh0ID0g
Y2FudmFzLmdldENvbnRleHQoICcyZCcgKTsKdmFyIGltZyA9IGNvbnRleHQuZ2V0SW1hZ2VEYXRh
KCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQgKTsKCnZhciBpbWdfYSA9IGNhbnZh
cy50b0RhdGFVUkwoICdpbWFnZS9wbmcnICk7CgovKiBmaWxsIHdpdGggcmVkICovCmZvciAoIHZh
ciBpID0gMDsgaSA8IGltZy5kYXRhLmxlbmd0aDsgaSArPSA0ICkKCWltZy5kYXRhW2ldID0gaW1n
LmRhdGFbaSszXSA9IDI1NTsKCmNvbnRleHQucHV0SW1hZ2VEYXRhKCBpbWcsIDAsIDAgKTsKdmFy
IGltZ19iID0gY2FudmFzLnRvRGF0YVVSTCggJ2ltYWdlL3BuZycgKTsKCmNvbnNvbGUubG9nKCAn
YSA9PSBiPyAnICsgKGltZ19hID09IGltZ19iKSApOwoKY29udGV4dC5tb3ZlVG8oIDAsIDAgKTsg
CmNvbnRleHQubGluZVRvKCAwLCAwICk7CmNvbnRleHQuc3Ryb2tlKCk7Cgp2YXIgaW1nX2MgPSBj
YW52YXMudG9EYXRhVVJMKCAnaW1hZ2UvcG5nJyApOwpjb25zb2xlLmxvZyggJ2EgPT0gYz8gJyAr
IChpbWdfYSA9PSBpbWdfYykgKTsKCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAnYScgKS5zcmMg
PSBpbWdfYTsKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoICdiJyApLnNyYyA9IGltZ19iOwpkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCggJ2MnICkuc3JjID0gaW1nX2M7Cjwvc2NyaXB0PgoKPC9ib2R5
PjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122875</attachid>
            <date>2012-01-17 22:44:12 -0800</date>
            <delta_ts>2012-02-03 00:41:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65767-20120117224410.patch</filename>
            <type>text/plain</type>
            <size>2585</size>
            <attacher name="Matthew Delaney">mdelaney7</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTIzNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAxLTE3ICBNYXR0aGV3
IERlbGFuZXkgIDxtZGVsYW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgdG9EYXRhVVJMKCkgdXNl
cyBzdGFsZSBkYXRhIGFmdGVyIHB1dEltYWdlRGF0YSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTc2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4uLllFVC4gQ29taW5nIGluIHRo
ZSBuZXh0IHBhdGNoLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnZhbGlkYXRlU3RhbGVEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpwdXRVbm11bHRpcGxpZWRJbWFnZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dFByZW11bHRpcGxpZWRJbWFnZURhdGEpOgor
CiAyMDEyLTAxLTE3ICBNYXR0aGV3IERlbGFuZXkgIDxtZGVsYW5leUBhcHBsZS5jb20+CiAKICAg
ICAgICAgT24gcG9zdC1MaW9uIHJlbGVhc2VzLCBwcmVzZXJ2ZSB0aGUgTGlvbiBiZWhhdmlvciB3
aGVyZSBXZWJLaXQgZXhwbGljaXRseSBjYWxscyAtc2V0R2VvbWV0cnlGbGlwcGVkIG9uIHRoZSBo
b3N0aW5nIGxheWVyIGZvciBhcHBsaWNhdGlvbnMgdGhhdCB3ZXJlIGxpbmtlZCBvbiBMaW9uIG9y
IGVhcmxpZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAkocmV2aXNpb24gMTA1MjMzKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI5NCw2ICsyOTQsMTMgQEAgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IEltYWdlQnVmZmVy
OjpnZXRQcgogICAgIHJldHVybiBtX2RhdGEuZ2V0RGF0YShyZWN0LCBtX3NpemUsIG1fY29udGV4
dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSwgZmFsc2UpOwogfQogCisvLyBBIGhhY2sgdG8gaW52
YWxpZGF0ZSBhbnkgc3RhbGUgY2FjaGVkIGRhdGEgdmlhIGEgbm9vcCBkcmF3IGNhbGwKK3N0YXRp
YyB2b2lkIGludmFsaWRhdGVTdGFsZURhdGEoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQorewor
ICAgIEZsb2F0UmVjdCByZWN0KDEsIDEsIDAsIDApOworICAgIGNvbnRleHQtPmZpbGxSZWN0KHJl
Y3QpOworfQorCiB2b2lkIEltYWdlQnVmZmVyOjpwdXRVbm11bHRpcGxpZWRJbWFnZURhdGEoQnl0
ZUFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpCiB7CiAgICAgaWYgKG1fY29u
dGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewpAQCAtMzAxLDYgKzMwOCw5IEBAIHZvaWQg
SW1hZ2VCdWZmZXI6OnB1dFVubXVsdGlwbGllZEltYWdlRGEKICAgICAgICAgbV9kYXRhLm1fbGFz
dEZsdXNoVGltZSA9IGN1cnJlbnRUaW1lTVMoKTsKICAgICB9CiAgICAgbV9kYXRhLnB1dERhdGEo
c291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBkZXN0UG9pbnQsIG1fc2l6ZSwgbV9jb250
ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCB0cnVlKTsKKworICAgIGlmIChtX2NvbnRleHQt
PmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCisgICAgICAgIGludmFsaWRhdGVTdGFsZURhdGEobV9j
b250ZXh0LmdldCgpKTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0UHJlbXVsdGlwbGllZElt
YWdlRGF0YShCeXRlQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkKQEAgLTMx
MCw2ICszMjAsOSBAQCB2b2lkIEltYWdlQnVmZmVyOjpwdXRQcmVtdWx0aXBsaWVkSW1hZ2VECiAg
ICAgICAgIG1fZGF0YS5tX2xhc3RGbHVzaFRpbWUgPSBjdXJyZW50VGltZU1TKCk7CiAgICAgfQog
ICAgIG1fZGF0YS5wdXREYXRhKHNvdXJjZSwgc291cmNlU2l6ZSwgc291cmNlUmVjdCwgZGVzdFBv
aW50LCBtX3NpemUsIG1fY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSwgZmFsc2UpOwor
CisgICAgaWYgKG1fY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkKKyAgICAgICAgaW52
YWxpZGF0ZVN0YWxlRGF0YShtX2NvbnRleHQuZ2V0KCkpOwogfQogCiBzdGF0aWMgaW5saW5lIENG
U3RyaW5nUmVmIGpwZWdVVEkoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125277</attachid>
            <date>2012-02-03 00:41:34 -0800</date>
            <delta_ts>2012-02-03 11:24:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65767-20120203004125.patch</filename>
            <type>text/plain</type>
            <size>28608</size>
            <attacher name="Matthew Delaney">mdelaney7</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAyLTAzICBNYXR0aGV3
IERlbGFuZXkgIDxtZGVsYW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgdG9EYXRhVVJMKCkgdXNl
cyBzdGFsZSBkYXRhIGFmdGVyIHB1dEltYWdlRGF0YSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTc2NworCisgICAgICAgIFRoaXMgcGF0Y2ggZml4
ZXMgdGhlIGlzc3VlIHdlJ3ZlIGVuY291bnRlcmVkIG9mIGdldHRpbmcgYmFjaworICAgICAgICBz
dGFsZSBjb3BpZXMgb2YgdGhlIENHQ29udGV4dCBvZiBhY2NlbGVyYXRlZCBJbWFnZUJ1ZmZlcnMg
d2hvIGhhdmUgc2VlbgorICAgICAgICBwdXRJbWFnZURhdGEgY2FsbHMgYnV0IGhhdmUgbm90IGJl
ZW4gZHJhd24gaW50byB2aWEgdGhlIENHIEFQSS4KKyAgICAgICAgVGhpcyBpc3N1ZSBpcyBmaXhl
ZCBieSBtb2RpZnlpbmcgdGhlIHdheSB3ZSBpbXBsZW1lbnQgcHV0SW1hZ2VEYXRhCisgICAgICAg
IGluIEltYWdlQnVmZmVyQ0cgdG8gZHJhdyB0aGUgYml0cyB3cmFwcGVkIGluIGEgQ0dJbWFnZSB3
aGlsZSB0aGUgQ0dDb250ZXh0CisgICAgICAgIGlzIGluIGEgc3RhdGUgd2hlcmUgdGhlIGRhdGEg
d2lsbCBlZmZlY3RpdmVseSBiZSBjb3BpZWQgKGFzIGlzIG5lZWRlZCBmb3IKKyAgICAgICAgaW1w
bGVtZW50aW5nIHB1dEltYWdlRGF0YSkgaW5zdGVhZCBvZiBkaXJlY3RseSBtb2RpZnlpbmcgdGhl
IGJpdHMgb2YgdGhlIElPU3VyZmFjZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUT0RPOiBXaWxsIGFkZCBhIHBpeGVsIHRlc3QgZm9yIHRoaXMgKHNp
bmNlIHRoaXMgaXMgb25seSBhIHBhaW50aW5nIGlzc3VlKSBpbiB0aGUgbmV4dCBwYXRjaAorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6IEltcGxlbWVu
dCBuZXcgd2F5IG9mIHB1dHRpbmcgaW1hZ2UgZGF0YS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oOiBNZXJnZWQgdHdvIHByZXZpb3VzbHkgc2VwYXJhdGUgcHV0IGRh
dGEgY2FsbHMKKyAgICAgICAgICAgIGludG8gYSBzaW5nbGUgYW5kIG1vcmUgc2Vuc2libHkgbmFt
ZWQgJ3B1dEJ5dGVBcnJheScsIHNpbmNlIHRoYXQncyB3aGF0IGl0IGRvZXMhCisKKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjogQWRkZWQgbmV3IFdLU0kgY2FsbCBmb3IgdXNlIGluIEltYWdlQnVm
ZmVyQ0cuY3BwCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbToKKwor
ICAgICAgICBVc2luZyBuZXcgbWV0aG9kIG5hbWUuCisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5j
cHA6ICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JN
YXRyaXguY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hh
ZG93LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVj
dC5jcHA6CisKKyAgICAgICAgVXBkYXRlZCBvdGhlciBwb3J0cycgSW1hZ2VCdWZmZXJzIHRvIHVz
ZSBuZXcgbWV0aG9kLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm8uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVy
UXQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lh
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldpbkNF
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4LmNwcDoK
KwogMjAxMi0wMi0wMiAgQWxleGVpIEZpbGlwcG92ICA8YWxleGVpZkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogQWx3YXlzIHNob3cgcGVyY2VudHMgdG9nZXRoZXIgd2l0
aCBjb3VudGVycyBpbiBoZWFwIGluc3BlY3Rvci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShy
ZXZpc2lvbiAxMDY0MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ4MSw2ICsxNDgxLDcgQEAgX3N0cmluZ0lzQ2FzZUluc2Vuc2l0aXZlRXF1
YWxUb1N0cmluZwogX3N1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlCiBfd2tBZHZhbmNlRGVm
YXVsdEJ1dHRvblB1bHNlQW5pbWF0aW9uCiBfd2tDR0NvbnRleHRHZXRTaG91bGRTbW9vdGhGb250
cworX3drQ0dDb250ZXh0UmVzZXRDbGlwCiBfd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRU
cmFuc2Zvcm0KIF93a0NvcHlDRkxvY2FsaXphdGlvblByZWZlcnJlZE5hbWUKIF93a0NvcHlDRlVS
TFJlc3BvbnNlU3VnZ2VzdGVkRmlsZW5hbWUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkocmV2aXNpb24g
MTA2NDE1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3OCw3ICsxOTc4LDcgQEAgdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnB1dEltYWdlRAogICAgIEludFJlY3Qgc291cmNlUmVjdChk
ZXN0UmVjdCk7CiAgICAgc291cmNlUmVjdC5tb3ZlKC1kZXN0T2Zmc2V0KTsKIAotICAgIGJ1ZmZl
ci0+cHV0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGRhdGEtPmRhdGEoKS0+ZGF0YSgpLCBJbnRTaXpl
KGRhdGEtPndpZHRoKCksIGRhdGEtPmhlaWdodCgpKSwgc291cmNlUmVjdCwgSW50UG9pbnQoZGVz
dE9mZnNldCkpOworICAgIGJ1ZmZlci0+cHV0Qnl0ZUFycmF5PFVubXVsdGlwbGllZD4oZGF0YS0+
ZGF0YSgpLT5kYXRhKCksIEludFNpemUoZGF0YS0+d2lkdGgoKSwgZGF0YS0+aGVpZ2h0KCkpLCBz
b3VyY2VSZWN0LCBJbnRQb2ludChkZXN0T2Zmc2V0KSk7CiAgICAgZGlkRHJhdyhkZXN0UmVjdCwg
Q2FudmFzRGlkRHJhd0FwcGx5Tm9uZSk7IC8vIGlnbm9yZSB0cmFuc2Zvcm0sIHNoYWRvdyBhbmQg
Y2xpcAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuY3BwCShyZXZpc2lvbiAxMDY0MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2
LDcgQEAgaW5saW5lIHZvaWQgSW1hZ2VCdWZmZXI6OmdlbmVyaWNDb252ZXJ0VAogICAgICAgICBk
b3VibGUgbHVtYSA9IChyICogMC4yMTI1ICsgZyAqIDAuNzE1NCArIGIgKiAwLjA3MjEpICogKChk
b3VibGUpYSAvIDI1NS4wKTsKICAgICAgICAgc3JjUGl4ZWxBcnJheS0+c2V0KHBpeGVsT2Zmc2V0
ICsgMywgbHVtYSk7CiAgICAgfQotICAgIHB1dFVubXVsdGlwbGllZEltYWdlRGF0YShzcmNQaXhl
bEFycmF5LmdldCgpLCBsdW1pbmFuY2VSZWN0LnNpemUoKSwgbHVtaW5hbmNlUmVjdCwgSW50UG9p
bnQoKSk7CisgICAgcHV0Qnl0ZUFycmF5PFVubXVsdGlwbGllZD4oc3JjUGl4ZWxBcnJheS5nZXQo
KSwgbHVtaW5hbmNlUmVjdC5zaXplKCksIGx1bWluYW5jZVJlY3QsIEludFBvaW50KCkpOwogfQog
CiB2b2lkIEltYWdlQnVmZmVyOjpjb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24g
MTA2NDE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtOTYsOCArOTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoY29u
c3QgSW50UmVjdCYpIGNvbnN0OwogICAgICAgICBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gZ2V0UHJl
bXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAKLSAgICAgICAgdm9p
ZCBwdXRVbm11bHRpcGxpZWRJbWFnZURhdGEoQnl0ZUFycmF5KiwgY29uc3QgSW50U2l6ZSYgc291
cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQ
b2ludCk7Ci0gICAgICAgIHZvaWQgcHV0UHJlbXVsdGlwbGllZEltYWdlRGF0YShCeXRlQXJyYXkq
LCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRQb2ludCYgZGVzdFBvaW50KTsKKyAgICAgICAgdGVtcGxhdGUgPE11bHRpcGx5IG11
bHRpcGxpZWQ+IHZvaWQgcHV0Qnl0ZUFycmF5KEJ5dGVBcnJheSosIGNvbnN0IEludFNpemUmIHNv
dXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0
UG9pbnQpOwogICAgICAgICAKICAgICAgICAgdm9pZCBjb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7
CiAgICAgICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93
Qmx1ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U2hhZG93Qmx1ci5jcHAJKHJldmlzaW9uIDEwNjQxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MjgsNyArODI4
LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpibHVyU2hhZG93QnVmZmVyKGNvbnN0IAogICAgIEludFJl
Y3QgYmx1clJlY3QoSW50UG9pbnQoKSwgdGVtcGxhdGVTaXplKTsKICAgICBSZWZQdHI8Qnl0ZUFy
cmF5PiBsYXllckRhdGEgPSBtX2xheWVySW1hZ2UtPmdldFVubXVsdGlwbGllZEltYWdlRGF0YShi
bHVyUmVjdCk7CiAgICAgYmx1ckxheWVySW1hZ2UobGF5ZXJEYXRhLT5kYXRhKCksIGJsdXJSZWN0
LnNpemUoKSwgYmx1clJlY3Qud2lkdGgoKSAqIDQpOwotICAgIG1fbGF5ZXJJbWFnZS0+cHV0VW5t
dWx0aXBsaWVkSW1hZ2VEYXRhKGxheWVyRGF0YS5nZXQoKSwgYmx1clJlY3Quc2l6ZSgpLCBibHVy
UmVjdCwgSW50UG9pbnQoKSk7CisgICAgbV9sYXllckltYWdlLT5wdXRCeXRlQXJyYXk8VW5tdWx0
aXBsaWVkPihsYXllckRhdGEuZ2V0KCksIGJsdXJSZWN0LnNpemUoKSwgYmx1clJlY3QsIEludFBv
aW50KCkpOwogfQogCiB2b2lkIFNoYWRvd0JsdXI6OmJsdXJBbmRDb2xvclNoYWRvd0J1ZmZlcihj
b25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAko
cmV2aXNpb24gMTA2NDE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNSwxMSArMjA1LDEx
IEBAIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHIKIH0KIAogdGVtcGxh
dGUgPE11bHRpcGx5IG11bHRpcGxpZWQ+Ci12b2lkIHB1dEltYWdlRGF0YShCeXRlQXJyYXkqJiBz
b3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEltYWdlQnVmZmVyRGF0YSYgZGF0YSwgY29u
c3QgSW50U2l6ZSYgc2l6ZSkKK3ZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShCeXRlQXJy
YXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkKIHsKLSAgICBBU1NFUlQoY2Fpcm9f
c3VyZmFjZV9nZXRfdHlwZShkYXRhLm1fc3VyZmFjZSkgPT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lN
QUdFKTsKKyAgICBBU1NFUlQoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShtX2RhdGEubV9zdXJmYWNl
KSA9PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpOwogCi0gICAgdW5zaWduZWQgY2hhciogZGF0
YURzdCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoZGF0YS5tX3N1cmZhY2UpOworICAg
IHVuc2lnbmVkIGNoYXIqIGRhdGFEc3QgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKG1f
ZGF0YS5tX3N1cmZhY2UpOwogCiAgICAgQVNTRVJUKHNvdXJjZVJlY3Qud2lkdGgoKSA+IDApOwog
ICAgIEFTU0VSVChzb3VyY2VSZWN0LmhlaWdodCgpID4gMCk7CkBAIC0yMTcsMjggKzIxNywyOCBA
QCB2b2lkIHB1dEltYWdlRGF0YShCeXRlQXJyYXkqJiBzb3VyY2UsIGNvCiAgICAgaW50IG9yaWdp
bnggPSBzb3VyY2VSZWN0LngoKTsKICAgICBpbnQgZGVzdHggPSBkZXN0UG9pbnQueCgpICsgc291
cmNlUmVjdC54KCk7CiAgICAgQVNTRVJUKGRlc3R4ID49IDApOwotICAgIEFTU0VSVChkZXN0eCA8
IHNpemUud2lkdGgoKSk7CisgICAgQVNTRVJUKGRlc3R4IDwgbV9zaXplLndpZHRoKCkpOwogICAg
IEFTU0VSVChvcmlnaW54ID49IDApOwogICAgIEFTU0VSVChvcmlnaW54IDw9IHNvdXJjZVJlY3Qu
bWF4WCgpKTsKIAogICAgIGludCBlbmR4ID0gZGVzdFBvaW50LngoKSArIHNvdXJjZVJlY3QubWF4
WCgpOwotICAgIEFTU0VSVChlbmR4IDw9IHNpemUud2lkdGgoKSk7CisgICAgQVNTRVJUKGVuZHgg
PD0gbV9zaXplLndpZHRoKCkpOwogCiAgICAgaW50IG51bUNvbHVtbnMgPSBlbmR4IC0gZGVzdHg7
CiAKICAgICBpbnQgb3JpZ2lueSA9IHNvdXJjZVJlY3QueSgpOwogICAgIGludCBkZXN0eSA9IGRl
c3RQb2ludC55KCkgKyBzb3VyY2VSZWN0LnkoKTsKICAgICBBU1NFUlQoZGVzdHkgPj0gMCk7Ci0g
ICAgQVNTRVJUKGRlc3R5IDwgc2l6ZS5oZWlnaHQoKSk7CisgICAgQVNTRVJUKGRlc3R5IDwgbV9z
aXplLmhlaWdodCgpKTsKICAgICBBU1NFUlQob3JpZ2lueSA+PSAwKTsKICAgICBBU1NFUlQob3Jp
Z2lueSA8PSBzb3VyY2VSZWN0Lm1heFkoKSk7CiAKICAgICBpbnQgZW5keSA9IGRlc3RQb2ludC55
KCkgKyBzb3VyY2VSZWN0Lm1heFkoKTsKLSAgICBBU1NFUlQoZW5keSA8PSBzaXplLmhlaWdodCgp
KTsKKyAgICBBU1NFUlQoZW5keSA8PSBtX3NpemUuaGVpZ2h0KCkpOwogICAgIGludCBudW1Sb3dz
ID0gZW5keSAtIGRlc3R5OwogCiAgICAgdW5zaWduZWQgc3JjQnl0ZXNQZXJSb3cgPSA0ICogc291
cmNlU2l6ZS53aWR0aCgpOwotICAgIGludCBzdHJpZGUgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF9zdHJpZGUoZGF0YS5tX3N1cmZhY2UpOworICAgIGludCBzdHJpZGUgPSBjYWlyb19pbWFnZV9z
dXJmYWNlX2dldF9zdHJpZGUobV9kYXRhLm1fc3VyZmFjZSk7CiAKICAgICB1bnNpZ25lZCBjaGFy
KiBzcmNSb3dzID0gc291cmNlLT5kYXRhKCkgKyBvcmlnaW55ICogc3JjQnl0ZXNQZXJSb3cgKyBv
cmlnaW54ICogNDsKICAgICBmb3IgKGludCB5ID0gMDsgeSA8IG51bVJvd3M7ICsreSkgewpAQCAt
MjU3LDIxICsyNTcsMTEgQEAgdm9pZCBwdXRJbWFnZURhdGEoQnl0ZUFycmF5KiYgc291cmNlLCBj
bwogICAgICAgICB9CiAgICAgICAgIHNyY1Jvd3MgKz0gc3JjQnl0ZXNQZXJSb3c7CiAgICAgfQot
ICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eV9yZWN0YW5nbGUgKGRhdGEubV9zdXJmYWNlLAor
ICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eV9yZWN0YW5nbGUobV9kYXRhLm1fc3VyZmFjZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0eCwgZGVzdHksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtQ29sdW1ucywgbnVtUm93
cyk7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OnB1dFVubXVsdGlwbGllZEltYWdlRGF0YShCeXRl
QXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkKLXsKLSAgICBwdXRJbWFnZURh
dGE8VW5tdWx0aXBsaWVkPihzb3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3QsIGRlc3RQb2lu
dCwgbV9kYXRhLCBtX3NpemUpOwotfQotCi12b2lkIEltYWdlQnVmZmVyOjpwdXRQcmVtdWx0aXBs
aWVkSW1hZ2VEYXRhKEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXpl
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQot
ewotICAgIHB1dEltYWdlRGF0YTxQcmVtdWx0aXBsaWVkPihzb3VyY2UsIHNvdXJjZVNpemUsIHNv
dXJjZVJlY3QsIGRlc3RQb2ludCwgbV9kYXRhLCBtX3NpemUpOwotfQotCiAjaWYgIVBMQVRGT1JN
KEdUSykKIHN0YXRpYyBjYWlyb19zdGF0dXNfdCB3cml0ZUZ1bmN0aW9uKHZvaWQqIGNsb3N1cmUs
IGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGludCBsZW5ndGgpCiB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHLmNwcAkocmV2aXNpb24gMTA2NDE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNywyNiAr
MzA3LDM5IEBAIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHIKICAgICBy
ZXR1cm4gbV9kYXRhLmdldERhdGEocmVjdCwgbV9zaXplLCBtX2NvbnRleHQtPmlzQWNjZWxlcmF0
ZWRDb250ZXh0KCksIGZhbHNlKTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0VW5tdWx0aXBs
aWVkSW1hZ2VEYXRhKEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXpl
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQor
dGVtcGxhdGUgPE11bHRpcGx5IG11bHRpcGxpZWQ+Cit2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRl
QXJyYXkoQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpCiB7CiAgICAg
aWYgKG1fY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewotICAgICAgICBDR0NvbnRl
eHRGbHVzaChjb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpKTsKLSNpZiBkZWZpbmVkKEJVSUxE
SU5HX09OX0xJT04pCi0gICAgICAgIG1fZGF0YS5tX2xhc3RGbHVzaFRpbWUgPSBjdXJyZW50VGlt
ZU1TKCk7Ci0jZW5kaWYKLSAgICB9Ci0gICAgbV9kYXRhLnB1dERhdGEoc291cmNlLCBzb3VyY2VT
aXplLCBzb3VyY2VSZWN0LCBkZXN0UG9pbnQsIG1fc2l6ZSwgbV9jb250ZXh0LT5pc0FjY2VsZXJh
dGVkQ29udGV4dCgpLCB0cnVlKTsKLX0KKyAgICAgICAgSW50U2l6ZSBzb3VyY2VDb3B5U2l6ZShz
b3VyY2VSZWN0LndpZHRoKCksIHNvdXJjZVJlY3QuaGVpZ2h0KCkpOworICAgICAgICBPd25QdHI8
SW1hZ2VCdWZmZXI+IHNvdXJjZUNvcHkgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNvdXJjZUNvcHlT
aXplLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBVbmFjY2VsZXJhdGVkKTsKKyAgICAgICAgaWYgKCFz
b3VyY2VDb3B5KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChtdWx0aXBsaWVk
ID09IFVubXVsdGlwbGllZCkKKyAgICAgICAgICAgIHNvdXJjZUNvcHktPm1fZGF0YS5wdXREYXRh
KHNvdXJjZSwgc291cmNlU2l6ZSwgc291cmNlUmVjdCwgSW50UG9pbnQoLXNvdXJjZVJlY3QueCgp
LCAtc291cmNlUmVjdC55KCkpLCBzb3VyY2VDb3B5LT5zaXplKCksIGZhbHNlLCB0cnVlKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgc291cmNlQ29weS0+bV9kYXRhLnB1dERhdGEoc291cmNl
LCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBJbnRQb2ludCgtc291cmNlUmVjdC54KCksIC1zb3Vy
Y2VSZWN0LnkoKSksIHNvdXJjZUNvcHktPnNpemUoKSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAg
CisgICAgICAgIC8vIFNldCB1cCBjb250ZXh0IGZvciB1c2luZyBkcmF3SW1hZ2UgYXMgYSBkaXJl
Y3QgYml0IGNvcHkKKyAgICAgICAgQ0dDb250ZXh0UmVmIGRlc3RDb250ZXh0ID0gY29udGV4dCgp
LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShkZXN0Q29u
dGV4dCk7CisgICAgICAgIENHQ29udGV4dENvbmNhdENUTShkZXN0Q29udGV4dCwgQWZmaW5lVHJh
bnNmb3JtKENHQ29udGV4dEdldENUTShkZXN0Q29udGV4dCkpLmludmVyc2UoKSk7CisgICAgICAg
IHdrQ0dDb250ZXh0UmVzZXRDbGlwKGRlc3RDb250ZXh0KTsKKyAgICAgICAgQ0dDb250ZXh0U2V0
SW50ZXJwb2xhdGlvblF1YWxpdHkoZGVzdENvbnRleHQsIGtDR0ludGVycG9sYXRpb25Ob25lKTsK
KyAgICAgICAgQ0dDb250ZXh0U2V0QWxwaGEoZGVzdENvbnRleHQsIDEuMCk7CisgICAgICAgIENH
Q29udGV4dFNldEJsZW5kTW9kZShkZXN0Q29udGV4dCwga0NHQmxlbmRNb2RlQ29weSk7CisgICAg
ICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihkZXN0Q29udGV4dCwgQ0dTaXplWmVybywg
MCwgMCk7CisKKyAgICAgICAgLy8gRHJhdyB0aGUgaW1hZ2UgaW4gQ0cgY29vcmRpbmF0ZSBzcGFj
ZQorICAgICAgICBJbnRQb2ludCBkZXN0UG9pbnRJbkNHQ29vcmRzKGRlc3RQb2ludC54KCkgKyBz
b3VyY2VSZWN0LngoKSwgbV9zaXplLmhlaWdodCgpIC0gKGRlc3RQb2ludC55KCkrc291cmNlUmVj
dC55KCkpIC0gc291cmNlUmVjdC5oZWlnaHQoKSk7CisgICAgICAgIEludFJlY3QgZGVzdFJlY3RJ
bkNHQ29vcmRzKGRlc3RQb2ludEluQ0dDb29yZHMsIHNvdXJjZUNvcHlTaXplKTsKKyAgICAgICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IHNvdXJjZUNvcHlJbWFnZShBZG9wdENGLCBzb3VyY2VDb3B5
LT5jb3B5TmF0aXZlSW1hZ2UoKSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShkZXN0Q29u
dGV4dCwgZGVzdFJlY3RJbkNHQ29vcmRzLCBzb3VyY2VDb3B5SW1hZ2UuZ2V0KCkpOwogCi12b2lk
IEltYWdlQnVmZmVyOjpwdXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKEJ5dGVBcnJheSogc291cmNl
LCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQotewotICAgIGlmIChtX2NvbnRleHQtPmlzQWNjZWxl
cmF0ZWRDb250ZXh0KCkpIHsKLSAgICAgICAgQ0dDb250ZXh0Rmx1c2goY29udGV4dCgpLT5wbGF0
Zm9ybUNvbnRleHQoKSk7Ci0jaWYgZGVmaW5lZChCVUlMRElOR19PTl9MSU9OKQotICAgICAgICBt
X2RhdGEubV9sYXN0Rmx1c2hUaW1lID0gY3VycmVudFRpbWVNUygpOwotI2VuZGlmCi0gICAgfQot
ICAgIG1fZGF0YS5wdXREYXRhKHNvdXJjZSwgc291cmNlU2l6ZSwgc291cmNlUmVjdCwgZGVzdFBv
aW50LCBtX3NpemUsIG1fY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSwgZmFsc2UpOwor
ICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGRlc3RDb250ZXh0KTsKKyAgICB9IGVsc2UK
KyAgICAgICAgbV9kYXRhLnB1dERhdGEoc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBk
ZXN0UG9pbnQsIG1fc2l6ZSwgbV9jb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCBtdWx0
aXBsaWVkID09IFVubXVsdGlwbGllZCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgQ0ZTdHJpbmdSZWYg
anBlZ1VUSSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29sb3JNYXRyaXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAJKHJldmlzaW9uIDEwNjQxNSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIEZFQ29sb3JNYXRyaXg6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHJlc3Vs
dEltYWdlLT5wdXRVbm11bHRpcGxpZWRJbWFnZURhdGEocGl4ZWxBcnJheS5nZXQoKSwgaW1hZ2VS
ZWN0LnNpemUoKSwgaW1hZ2VSZWN0LCBJbnRQb2ludCgpKTsKKyAgICByZXN1bHRJbWFnZS0+cHV0
Qnl0ZUFycmF5PFVubXVsdGlwbGllZD4ocGl4ZWxBcnJheS5nZXQoKSwgaW1hZ2VSZWN0LnNpemUo
KSwgaW1hZ2VSZWN0LCBJbnRQb2ludCgpKTsKIH0KIAogdm9pZCBGRUNvbG9yTWF0cml4OjpkdW1w
KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9w
U2hhZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAJKHJldmlzaW9uIDEwNjQxNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgRkVEcm9wU2hhZG93OjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUKIAogICAgIGNvbnRleHRTaGFkb3cuYmx1ckxheWVySW1hZ2Uoc3JjUGl4ZWxB
cnJheS0+ZGF0YSgpLCBzaGFkb3dBcmVhLnNpemUoKSwgNCAqIHNoYWRvd0FyZWEuc2l6ZSgpLndp
ZHRoKCkpOwogCi0gICAgcmVzdWx0SW1hZ2UtPnB1dFByZW11bHRpcGxpZWRJbWFnZURhdGEoc3Jj
UGl4ZWxBcnJheS5nZXQoKSwgc2hhZG93QXJlYS5zaXplKCksIHNoYWRvd0FyZWEsIEludFBvaW50
KCkpOworICAgIHJlc3VsdEltYWdlLT5wdXRCeXRlQXJyYXk8UHJlbXVsdGlwbGllZD4oc3JjUGl4
ZWxBcnJheS5nZXQoKSwgc2hhZG93QXJlYS5zaXplKCksIHNoYWRvd0FyZWEsIEludFBvaW50KCkp
OwogCiAgICAgcmVzdWx0Q29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNv
dXJjZUluKTsKICAgICByZXN1bHRDb250ZXh0LT5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSksIG1fc2hhZG93Q29sb3IsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAkocmV2aXNpb24gMTA2NDE1KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsOSArMTMwLDkgQEAgSW1hZ2VCdWZmZXIqIEZpbHRl
ckVmZmVjdDo6YXNJbWFnZUJ1ZmZlcgogICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpLCBDb2xvclNwYWNlTGluZWFy
UkdCLCBtX2ZpbHRlci0+cmVuZGVyaW5nTW9kZSgpKTsKICAgICBJbnRSZWN0IGRlc3RpbmF0aW9u
UmVjdChJbnRQb2ludCgpLCBtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7CiAgICAgaWYgKG1f
cHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KQotICAgICAgICBtX2ltYWdlQnVmZmVyUmVzdWx0LT5w
dXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0LmdldCgp
LCBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpLCBkZXN0aW5hdGlvblJlY3QsIEludFBvaW50KCkpOwor
ICAgICAgICBtX2ltYWdlQnVmZmVyUmVzdWx0LT5wdXRCeXRlQXJyYXk8UHJlbXVsdGlwbGllZD4o
bV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQuZ2V0KCksIGRlc3RpbmF0aW9uUmVjdC5zaXplKCks
IGRlc3RpbmF0aW9uUmVjdCwgSW50UG9pbnQoKSk7CiAgICAgZWxzZQotICAgICAgICBtX2ltYWdl
QnVmZmVyUmVzdWx0LT5wdXRVbm11bHRpcGxpZWRJbWFnZURhdGEobV91bm11bHRpcGxpZWRJbWFn
ZVJlc3VsdC5nZXQoKSwgZGVzdGluYXRpb25SZWN0LnNpemUoKSwgZGVzdGluYXRpb25SZWN0LCBJ
bnRQb2ludCgpKTsKKyAgICAgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdC0+cHV0Qnl0ZUFycmF5PFVu
bXVsdGlwbGllZD4obV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdC5nZXQoKSwgZGVzdGluYXRpb25S
ZWN0LnNpemUoKSwgZGVzdGluYXRpb25SZWN0LCBJbnRQb2ludCgpKTsKICAgICByZXR1cm4gbV9p
bWFnZUJ1ZmZlclJlc3VsdC5nZXQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAJKHJldmlzaW9uIDEw
NjQxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVy
UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDAsNyArMzAwLDcgQEAgc3RhdGljIGlubGluZSB1
bnNpZ25lZCBpbnQgcHJlbXVsdGlwbHlBQgogfQogCiB0ZW1wbGF0ZSA8TXVsdGlwbHkgbXVsdGlw
bGllZD4KLXZvaWQgcHV0SW1hZ2VEYXRhKEJ5dGVBcnJheSomIHNvdXJjZSwgY29uc3QgSW50U2l6
ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQm
IGRlc3RQb2ludCwgSW1hZ2VCdWZmZXJEYXRhJiBkYXRhLCBjb25zdCBJbnRTaXplJiBzaXplKQor
dm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJ
bnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQ
b2ludCYgZGVzdFBvaW50KQogewogICAgIEFTU0VSVChzb3VyY2VSZWN0LndpZHRoKCkgPiAwKTsK
ICAgICBBU1NFUlQoc291cmNlUmVjdC5oZWlnaHQoKSA+IDApOwpAQCAtMzA4LDI0ICszMDgsMjQg
QEAgdm9pZCBwdXRJbWFnZURhdGEoQnl0ZUFycmF5KiYgc291cmNlLCBjbwogICAgIGludCBvcmln
aW54ID0gc291cmNlUmVjdC54KCk7CiAgICAgaW50IGRlc3R4ID0gZGVzdFBvaW50LngoKSArIHNv
dXJjZVJlY3QueCgpOwogICAgIEFTU0VSVChkZXN0eCA+PSAwKTsKLSAgICBBU1NFUlQoZGVzdHgg
PCBzaXplLndpZHRoKCkpOworICAgIEFTU0VSVChkZXN0eCA8IG1fc2l6ZS53aWR0aCgpKTsKICAg
ICBBU1NFUlQob3JpZ2lueCA+PSAwKTsKICAgICBBU1NFUlQob3JpZ2lueCA8PSBzb3VyY2VSZWN0
Lm1heFgoKSk7CiAKICAgICBpbnQgZW5keCA9IGRlc3RQb2ludC54KCkgKyBzb3VyY2VSZWN0Lm1h
eFgoKTsKLSAgICBBU1NFUlQoZW5keCA8PSBzaXplLndpZHRoKCkpOworICAgIEFTU0VSVChlbmR4
IDw9IG1fc2l6ZS53aWR0aCgpKTsKIAogICAgIGludCBudW1Db2x1bW5zID0gZW5keCAtIGRlc3R4
OwogCiAgICAgaW50IG9yaWdpbnkgPSBzb3VyY2VSZWN0LnkoKTsKICAgICBpbnQgZGVzdHkgPSBk
ZXN0UG9pbnQueSgpICsgc291cmNlUmVjdC55KCk7CiAgICAgQVNTRVJUKGRlc3R5ID49IDApOwot
ICAgIEFTU0VSVChkZXN0eSA8IHNpemUuaGVpZ2h0KCkpOworICAgIEFTU0VSVChkZXN0eSA8IG1f
c2l6ZS5oZWlnaHQoKSk7CiAgICAgQVNTRVJUKG9yaWdpbnkgPj0gMCk7CiAgICAgQVNTRVJUKG9y
aWdpbnkgPD0gc291cmNlUmVjdC5tYXhZKCkpOwogCiAgICAgaW50IGVuZHkgPSBkZXN0UG9pbnQu
eSgpICsgc291cmNlUmVjdC5tYXhZKCk7Ci0gICAgQVNTRVJUKGVuZHkgPD0gc2l6ZS5oZWlnaHQo
KSk7CisgICAgQVNTRVJUKGVuZHkgPD0gbV9zaXplLmhlaWdodCgpKTsKICAgICBpbnQgbnVtUm93
cyA9IGVuZHkgLSBkZXN0eTsKIAogICAgIHVuc2lnbmVkIHNyY0J5dGVzUGVyUm93ID0gNCAqIHNv
dXJjZVNpemUud2lkdGgoKTsKQEAgLTM1OSwzNSArMzU5LDI1IEBAIHZvaWQgcHV0SW1hZ2VEYXRh
KEJ5dGVBcnJheSomIHNvdXJjZSwgY28KICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgaXNQ
YWludGluZyA9IGRhdGEubV9wYWludGVyLT5pc0FjdGl2ZSgpOworICAgIGJvb2wgaXNQYWludGlu
ZyA9IG1fZGF0YS5tX3BhaW50ZXItPmlzQWN0aXZlKCk7CiAgICAgaWYgKCFpc1BhaW50aW5nKQot
ICAgICAgICBkYXRhLm1fcGFpbnRlci0+YmVnaW4oJmRhdGEubV9waXhtYXApOworICAgICAgICBt
X2RhdGEubV9wYWludGVyLT5iZWdpbigmbV9kYXRhLm1fcGl4bWFwKTsKICAgICBlbHNlIHsKLSAg
ICAgICAgZGF0YS5tX3BhaW50ZXItPnNhdmUoKTsKKyAgICAgICAgbV9kYXRhLm1fcGFpbnRlci0+
c2F2ZSgpOwogCiAgICAgICAgIC8vIHB1dEltYWdlRGF0YSgpIHNob3VsZCBiZSB1bmFmZmVjdGVk
IGJ5IHBhaW50ZXIgc3RhdGUKLSAgICAgICAgZGF0YS5tX3BhaW50ZXItPnJlc2V0VHJhbnNmb3Jt
KCk7Ci0gICAgICAgIGRhdGEubV9wYWludGVyLT5zZXRPcGFjaXR5KDEuMCk7Ci0gICAgICAgIGRh
dGEubV9wYWludGVyLT5zZXRDbGlwcGluZyhmYWxzZSk7CisgICAgICAgIG1fZGF0YS5tX3BhaW50
ZXItPnJlc2V0VHJhbnNmb3JtKCk7CisgICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPnNldE9wYWNp
dHkoMS4wKTsKKyAgICAgICAgbV9kYXRhLm1fcGFpbnRlci0+c2V0Q2xpcHBpbmcoZmFsc2UpOwog
ICAgIH0KIAotICAgIGRhdGEubV9wYWludGVyLT5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6
OkNvbXBvc2l0aW9uTW9kZV9Tb3VyY2UpOwotICAgIGRhdGEubV9wYWludGVyLT5kcmF3SW1hZ2Uo
ZGVzdHgsIGRlc3R5LCBpbWFnZSk7CisgICAgbV9kYXRhLm1fcGFpbnRlci0+c2V0Q29tcG9zaXRp
b25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfU291cmNlKTsKKyAgICBtX2RhdGEubV9w
YWludGVyLT5kcmF3SW1hZ2UoZGVzdHgsIGRlc3R5LCBpbWFnZSk7CiAKICAgICBpZiAoIWlzUGFp
bnRpbmcpCi0gICAgICAgIGRhdGEubV9wYWludGVyLT5lbmQoKTsKKyAgICAgICAgbV9kYXRhLm1f
cGFpbnRlci0+ZW5kKCk7CiAgICAgZWxzZQotICAgICAgICBkYXRhLm1fcGFpbnRlci0+cmVzdG9y
ZSgpOwotfQotCi12b2lkIEltYWdlQnVmZmVyOjpwdXRVbm11bHRpcGxpZWRJbWFnZURhdGEoQnl0
ZUFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpCi17Ci0gICAgcHV0SW1hZ2VE
YXRhPFVubXVsdGlwbGllZD4oc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBkZXN0UG9p
bnQsIG1fZGF0YSwgbV9zaXplKTsKLX0KLQotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0UHJlbXVsdGlw
bGllZEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6
ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkK
LXsKLSAgICBwdXRJbWFnZURhdGE8UHJlbXVsdGlwbGllZD4oc291cmNlLCBzb3VyY2VTaXplLCBz
b3VyY2VSZWN0LCBkZXN0UG9pbnQsIG1fZGF0YSwgbV9zaXplKTsKKyAgICAgICAgbV9kYXRhLm1f
cGFpbnRlci0+cmVzdG9yZSgpOwogfQogCiAvLyBXZSBnZXQgYSBtaW1lVHlwZSBoZXJlIGJ1dCBR
SW1hZ2VXcml0ZXIgZG9lcyBub3Qgc3VwcG9ydCBtaW1ldHlwZXMgYnV0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZl
clNraWEuY3BwCShyZXZpc2lvbiAxMDY0MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5OSwz
MyArMjk5LDMzIEBAIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHIKIH0K
IAogdGVtcGxhdGUgPE11bHRpcGx5IG11bHRpcGxpZWQ+Ci12b2lkIHB1dEltYWdlRGF0YShCeXRl
QXJyYXkqJiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsCi0gICAgICAgICAgICAgICAg
ICBTa0NhbnZhcyogY2FudmFzLCBjb25zdCBJbnRTaXplJiBzaXplKQordm9pZCBJbWFnZUJ1ZmZl
cjo6cHV0Qnl0ZUFycmF5KEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VT
aXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50
KQogeworICAgIFNLQ2FudmFzKiBjYW52YXMgPSBjb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgp
LT5jYW52YXMoKTsKICAgICBBU1NFUlQoc291cmNlUmVjdC53aWR0aCgpID4gMCk7CiAgICAgQVNT
RVJUKHNvdXJjZVJlY3QuaGVpZ2h0KCkgPiAwKTsKIAogICAgIGludCBvcmlnaW5YID0gc291cmNl
UmVjdC54KCk7CiAgICAgaW50IGRlc3RYID0gZGVzdFBvaW50LngoKSArIHNvdXJjZVJlY3QueCgp
OwogICAgIEFTU0VSVChkZXN0WCA+PSAwKTsKLSAgICBBU1NFUlQoZGVzdFggPCBzaXplLndpZHRo
KCkpOworICAgIEFTU0VSVChkZXN0WCA8IG1fc2l6ZS53aWR0aCgpKTsKICAgICBBU1NFUlQob3Jp
Z2luWCA+PSAwKTsKICAgICBBU1NFUlQob3JpZ2luWCA8IHNvdXJjZVJlY3QubWF4WCgpKTsKIAog
ICAgIGludCBlbmRYID0gZGVzdFBvaW50LngoKSArIHNvdXJjZVJlY3QubWF4WCgpOwotICAgIEFT
U0VSVChlbmRYIDw9IHNpemUud2lkdGgoKSk7CisgICAgQVNTRVJUKGVuZFggPD0gbV9zaXplLndp
ZHRoKCkpOwogCiAgICAgaW50IG51bUNvbHVtbnMgPSBlbmRYIC0gZGVzdFg7CiAKICAgICBpbnQg
b3JpZ2luWSA9IHNvdXJjZVJlY3QueSgpOwogICAgIGludCBkZXN0WSA9IGRlc3RQb2ludC55KCkg
KyBzb3VyY2VSZWN0LnkoKTsKICAgICBBU1NFUlQoZGVzdFkgPj0gMCk7Ci0gICAgQVNTRVJUKGRl
c3RZIDwgc2l6ZS5oZWlnaHQoKSk7CisgICAgQVNTRVJUKGRlc3RZIDwgbV9zaXplLmhlaWdodCgp
KTsKICAgICBBU1NFUlQob3JpZ2luWSA+PSAwKTsKICAgICBBU1NFUlQob3JpZ2luWSA8IHNvdXJj
ZVJlY3QubWF4WSgpKTsKIAogICAgIGludCBlbmRZID0gZGVzdFBvaW50LnkoKSArIHNvdXJjZVJl
Y3QubWF4WSgpOwotICAgIEFTU0VSVChlbmRZIDw9IHNpemUuaGVpZ2h0KCkpOworICAgIEFTU0VS
VChlbmRZIDw9IG1fc2l6ZS5oZWlnaHQoKSk7CiAgICAgaW50IG51bVJvd3MgPSBlbmRZIC0gZGVz
dFk7CiAKICAgICB1bnNpZ25lZCBzcmNCeXRlc1BlclJvdyA9IDQgKiBzb3VyY2VTaXplLndpZHRo
KCk7CkBAIC0zNDIsMTYgKzM0Miw2IEBAIHZvaWQgcHV0SW1hZ2VEYXRhKEJ5dGVBcnJheSomIHNv
dXJjZSwgY28KICAgICBjYW52YXMtPndyaXRlUGl4ZWxzKHNyY0JpdG1hcCwgZGVzdFgsIGRlc3RZ
LCBjb25maWc4ODg4KTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0VW5tdWx0aXBsaWVkSW1h
Z2VEYXRhKEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQotewotICAg
IHB1dEltYWdlRGF0YTxVbm11bHRpcGxpZWQ+KHNvdXJjZSwgc291cmNlU2l6ZSwgc291cmNlUmVj
dCwgZGVzdFBvaW50LCBjb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKSwgbV9z
aXplKTsKLX0KLQotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0UHJlbXVsdGlwbGllZEltYWdlRGF0YShC
eXRlQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkKLXsKLSAgICBwdXRJbWFn
ZURhdGE8UHJlbXVsdGlwbGllZD4oc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBkZXN0
UG9pbnQsIGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpLCBtX3NpemUpOwot
fQotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHN0YXRpYyBib29sIGVuY29kZUltYWdlKFQmIHNv
dXJjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFsaXR5LCBWZWN0
b3I8Y2hhcj4qIG91dHB1dCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbmNlL0ltYWdlQnVmZmVyV2luQ0UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyV2luQ0UuY3BwCShyZXZpc2lv
biAxMDY0MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFn
ZUJ1ZmZlcldpbkNFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgzLDkgKzE4MywxMCBAQCBQYXNz
UmVmUHRyPEJ5dGVBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByCiAgICAgcmV0dXJuIGdldEltYWdl
RGF0YTx0cnVlPihyZWN0LCBtX2RhdGEubV9iaXRtYXAuZ2V0KCkpOwogfQogCi10ZW1wbGF0ZSA8
Ym9vbCBwcmVtdWx0aXBsaWVkPgotc3RhdGljIHZvaWQgcHV0SW1hZ2VEYXRhKEJ5dGVBcnJheSog
c291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBTaGFyZWRCaXRtYXAqIGJpdG1hcCkKK3Rl
bXBsYXRlIDxNdWx0aXBseSBtdWx0aXBsaWVkPgordm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFy
cmF5KEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQogeworICAgIFNo
YXJlZEJpdG1hcCogYml0bWFwID0gbV9kYXRhLm1fYml0bWFwLmdldCgpOwogICAgIHVuc2lnbmVk
IGNoYXIqIGRzdCA9ICh1bnNpZ25lZCBjaGFyKiliaXRtYXAtPmJ5dGVzKCk7CiAgICAgaWYgKCFk
c3QpCiAgICAgICAgIHJldHVybjsKQEAgLTIxMSw3ICsyMTIsNyBAQCBzdGF0aWMgdm9pZCBwdXRJ
bWFnZURhdGEoQnl0ZUFycmF5KiBzb3VyCiAgICAgICAgICAgICBpbnQgZ3JlZW4gPSAqc3JjKys7
CiAgICAgICAgICAgICBpbnQgYmx1ZSA9ICpzcmMrKzsKICAgICAgICAgICAgIGludCBhbHBoYSA9
ICpzcmMrKzsKLSAgICAgICAgICAgIGlmIChwcmVtdWx0aXBsaWVkKSB7CisgICAgICAgICAgICBp
ZiAobXVsdGlwbGllZCA9PSBQcmVtdWx0aXBsaWVkKSB7CiAgICAgICAgICAgICAgICAgKmRzdCsr
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYmx1ZSAqIDI1NSAvIGFscGhhKTsKICAgICAg
ICAgICAgICAgICAqZHN0KysgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihncmVlbiAqIDI1
NSAvIGFscGhhKTsKICAgICAgICAgICAgICAgICAqZHN0KysgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyPihyZWQgKiAyNTUgLyBhbHBoYSk7CkBAIC0yMjgsMTYgKzIyOSw2IEBAIHN0YXRpYyB2
b2lkIHB1dEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXIKICAgICB9CiB9CiAKLXZvaWQgSW1hZ2VC
dWZmZXI6OnB1dFVubXVsdGlwbGllZEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXJjZSwgY29uc3Qg
SW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UG9pbnQmIGRlc3RQb2ludCkKLXsKLSAgICBwdXRJbWFnZURhdGE8ZmFsc2U+KHNvdXJjZSwgc291
cmNlU2l6ZSwgc291cmNlUmVjdCwgZGVzdFBvaW50LCBtX2RhdGEubV9iaXRtYXAuZ2V0KCkpOwot
fQotCi12b2lkIEltYWdlQnVmZmVyOjpwdXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKEJ5dGVBcnJh
eSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQotewotICAgIHB1dEltYWdlRGF0YTx0
cnVlPihzb3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3QsIGRlc3RQb2ludCwgbV9kYXRhLm1f
Yml0bWFwLmdldCgpKTsKLX0KLQogdm9pZCBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1UcmFuc2Zvcm1D
b2xvclNwYWNlKGNvbnN0IFZlY3RvcjxpbnQ+JiBsb29rVXBUYWJsZSkKIHsKICAgICBVTlVTRURf
UEFSQU0obG9va1VwVGFibGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd3gvSW1hZ2VCdWZmZXJXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VCdWZmZXJXeC5jcHAJKHJldmlzaW9uIDEwNjQxNSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlQnVmZmVyV3guY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03MiwxMiArNzIsOCBAQCBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1h
Z2VCdWZmZXI6OmdldFByCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OnB1
dFVubXVsdGlwbGllZEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYg
c291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRl
c3RQb2ludCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEltYWdlQnVmZmVy
OjpwdXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRT
aXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2lu
dCYgZGVzdFBvaW50KQordGVtcGxhdGUgPE11bHRpcGx5IG11bHRpcGxpZWQ+Cit2b2lkIEltYWdl
QnVmZmVyOjpwdXRCeXRlQXJyYXkoQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNv
dXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0
UG9pbnQpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAkocmV2aXNp
b24gMTA2NDE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMyw3IEBAIHR5cGVkZWYgZW51
bSB7CiAgICAgd2tQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nCiB9IHdrUGF0dGVyblRpbGlu
ZzsKIGV4dGVybiBDR1BhdHRlcm5SZWYgKCp3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRy
YW5zZm9ybSkoQ0dJbWFnZVJlZiwgQ0dBZmZpbmVUcmFuc2Zvcm0sIGludCk7CitleHRlcm4gdm9p
ZCAoKndrQ0dDb250ZXh0UmVzZXRDbGlwKShDR0NvbnRleHRSZWYpOwogZXh0ZXJuIENGUmVhZFN0
cmVhbVJlZiAoKndrQ3JlYXRlQ3VzdG9tQ0ZSZWFkU3RyZWFtKSh2b2lkICooKmZvcm1DcmVhdGUp
KENGUmVhZFN0cmVhbVJlZiwgdm9pZCAqKSwgCiAgICAgdm9pZCAoKmZvcm1GaW5hbGl6ZSkoQ0ZS
ZWFkU3RyZWFtUmVmLCB2b2lkICopLCAKICAgICBCb29sZWFuICgqZm9ybU9wZW4pKENGUmVhZFN0
cmVhbVJlZiwgQ0ZTdHJlYW1FcnJvciAqLCBCb29sZWFuICosIHZvaWQgKiksIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UubW0JKHJldmlzaW9uIDEwNjQxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNiArMTMyLDcg
QEAgQ1RMaW5lUmVmICgqd2tDcmVhdGVDVExpbmVXaXRoVW5pQ2hhclBybwogI2lmICFkZWZpbmVk
KEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFS
RCkKIENUVHlwZXNldHRlclJlZiAoKndrQ3JlYXRlQ1RUeXBlc2V0dGVyV2l0aFVuaUNoYXJQcm92
aWRlckFuZE9wdGlvbnMpKGNvbnN0IFVuaUNoYXIqICgqcHJvdmlkZSkoQ0ZJbmRleCBzdHJpbmdJ
bmRleCwgQ0ZJbmRleCogY2hhckNvdW50LCBDRkRpY3Rpb25hcnlSZWYqIGF0dHJpYnV0ZXMsIHZv
aWQqKSwgdm9pZCAoKmRpc3Bvc2UpKGNvbnN0IFVuaUNoYXIqIGNoYXJzLCB2b2lkKiksIHZvaWQq
LCBDRkRpY3Rpb25hcnlSZWYgb3B0aW9ucyk7CiAKK3ZvaWQgKCp3a0NHQ29udGV4dFJlc2V0Q2xp
cCkoQ0dDb250ZXh0UmVmKTsKIENHQ29udGV4dFJlZiAoKndrSU9TdXJmYWNlQ29udGV4dENyZWF0
ZSkoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQs
IENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKTsKIENHSW1hZ2VSZWYgKCp3a0lPU3VyZmFjZUNv
bnRleHRDcmVhdGVJbWFnZSkoQ0dDb250ZXh0UmVmIGNvbnRleHQpOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMDY2MzQpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wMi0wMyAgTWF0dGhldyBEZWxhbmV5ICA8bWRl
bGFuZXlAYXBwbGUuY29tPgorCisgICAgICAgIHRvRGF0YVVSTCgpIHVzZXMgc3RhbGUgZGF0YSBh
ZnRlciBwdXRJbWFnZURhdGEoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjU3NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVy
ZmFjZS5tbToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKToKKwogMjAxMi0w
Mi0wMiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEwNjYyMC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJTeXN0ZW1JbnRlcmZhY2UubW0JKHJldmlzaW9uIDEwNjQxNSkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQkod29y
a2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJm
YWNlKHZvaWQpCiAgICAgICAgIElOSVQoQ29weUNGTG9jYWxpemF0aW9uUHJlZmVycmVkTmFtZSk7
CiAgICAgICAgIElOSVQoQ0dDb250ZXh0R2V0U2hvdWxkU21vb3RoRm9udHMpOwogICAgICAgICBJ
TklUKENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSk7CisgICAgICAgIElOSVQo
Q0dDb250ZXh0UmVzZXRDbGlwKTsKICAgICAgICAgSU5JVChDb3B5Q09OTkVDVFByb3h5UmVzcG9u
c2UpOwogICAgICAgICBJTklUKENvcHlOU1VSTFJlc3BvbnNlU3RhdHVzTGluZSk7CiAgICAgICAg
IElOSVQoQ3JlYXRlQ1RMaW5lV2l0aFVuaUNoYXJQcm92aWRlcik7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMDY2MzQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wMi0wMyAgTWF0dGhldyBEZWxhbmV5
ICA8bWRlbGFuZXlAYXBwbGUuY29tPgorCisgICAgICAgIHRvRGF0YVVSTCgpIHVzZXMgc3RhbGUg
ZGF0YSBhZnRlciBwdXRJbWFnZURhdGEoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjU3NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbTog
CisKIDIwMTItMDItMDEgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWJLaXQvbWFjIHBhcnQgb2YgPHJkYXI6Ly9wcm9ibGVtLzEwNDQyNjYzPiBQYWdpbmF0ZWQg
ZGlzcGxheSBkb2VzIG5vdCByZXNwZWN0IHBhZ2UtYnJlYWste2JlZm9yZSxhZnRlcn0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1J
bnRlcmZhY2UubW0JKHJldmlzaW9uIDEwNjQxNSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDUsNiAr
NDUsNyBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgSU5JVChB
ZHZhbmNlRGVmYXVsdEJ1dHRvblB1bHNlQW5pbWF0aW9uKTsKICAgICBJTklUKENHQ29udGV4dEdl
dFNob3VsZFNtb290aEZvbnRzKTsKICAgICBJTklUKENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFu
ZFRyYW5zZm9ybSk7CisgICAgSU5JVChDR0NvbnRleHRSZXNldENsaXApOwogICAgIElOSVQoQ29w
eUNGTG9jYWxpemF0aW9uUHJlZmVycmVkTmFtZSk7CiAgICAgSU5JVChDb3B5Q09OTkVDVFByb3h5
UmVzcG9uc2UpOwogICAgIElOSVQoQ29weU5TVVJMUmVzcG9uc2VTdGF0dXNMaW5lKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125371</attachid>
            <date>2012-02-03 11:24:16 -0800</date>
            <delta_ts>2012-02-03 12:11:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65767-20120203112415.patch</filename>
            <type>text/plain</type>
            <size>28800</size>
            <attacher name="Matthew Delaney">mdelaney7</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAyLTAzICBNYXR0aGV3
IERlbGFuZXkgIDxtZGVsYW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgdG9EYXRhVVJMKCkgdXNl
cyBzdGFsZSBkYXRhIGFmdGVyIHB1dEltYWdlRGF0YSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTc2NworCisgICAgICAgIFRoaXMgcGF0Y2ggZml4
ZXMgdGhlIGlzc3VlIHdlJ3ZlIGVuY291bnRlcmVkIG9mIGdldHRpbmcgYmFjaworICAgICAgICBz
dGFsZSBjb3BpZXMgb2YgdGhlIENHQ29udGV4dCBvZiBhY2NlbGVyYXRlZCBJbWFnZUJ1ZmZlcnMg
d2hvIGhhdmUgc2VlbgorICAgICAgICBwdXRJbWFnZURhdGEgY2FsbHMgYnV0IGhhdmUgbm90IGJl
ZW4gZHJhd24gaW50byB2aWEgdGhlIENHIEFQSS4KKyAgICAgICAgVGhpcyBpc3N1ZSBpcyBmaXhl
ZCBieSBtb2RpZnlpbmcgdGhlIHdheSB3ZSBpbXBsZW1lbnQgcHV0SW1hZ2VEYXRhCisgICAgICAg
IGluIEltYWdlQnVmZmVyQ0cgdG8gZHJhdyB0aGUgYml0cyB3cmFwcGVkIGluIGEgQ0dJbWFnZSB3
aGlsZSB0aGUgQ0dDb250ZXh0CisgICAgICAgIGlzIGluIGEgc3RhdGUgd2hlcmUgdGhlIGRhdGEg
d2lsbCBlZmZlY3RpdmVseSBiZSBjb3BpZWQgKGFzIGlzIG5lZWRlZCBmb3IKKyAgICAgICAgaW1w
bGVtZW50aW5nIHB1dEltYWdlRGF0YSkgaW5zdGVhZCBvZiBkaXJlY3RseSBtb2RpZnlpbmcgdGhl
IGJpdHMgb2YgdGhlIElPU3VyZmFjZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUT0RPOiBXaWxsIGFkZCBhIHBpeGVsIHRlc3QgZm9yIHRoaXMgKHNp
bmNlIHRoaXMgaXMgb25seSBhIHBhaW50aW5nIGlzc3VlKSBpbiB0aGUgbmV4dCBwYXRjaAorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6IEltcGxlbWVu
dCBuZXcgd2F5IG9mIHB1dHRpbmcgaW1hZ2UgZGF0YS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oOiBNZXJnZWQgdHdvIHByZXZpb3VzbHkgc2VwYXJhdGUgcHV0IGRh
dGEgY2FsbHMKKyAgICAgICAgICAgIGludG8gYSBzaW5nbGUgYW5kIG1vcmUgc2Vuc2libHkgbmFt
ZWQgJ3B1dEJ5dGVBcnJheScsIHNpbmNlIHRoYXQncyB3aGF0IGl0IGRvZXMhCisKKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjogQWRkZWQgbmV3IFdLU0kgY2FsbCBmb3IgdXNlIGluIEltYWdlQnVm
ZmVyQ0cuY3BwCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbToKKwor
ICAgICAgICBVc2luZyBuZXcgbWV0aG9kIG5hbWUuCisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5j
cHA6ICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JN
YXRyaXguY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hh
ZG93LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVj
dC5jcHA6CisKKyAgICAgICAgVXBkYXRlZCBvdGhlciBwb3J0cycgSW1hZ2VCdWZmZXJzIHRvIHVz
ZSBuZXcgbWV0aG9kLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm8uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVy
UXQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lh
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldpbkNF
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4LmNwcDoK
KwogMjAxMi0wMi0wMiAgQWxleGVpIEZpbGlwcG92ICA8YWxleGVpZkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogQWx3YXlzIHNob3cgcGVyY2VudHMgdG9nZXRoZXIgd2l0
aCBjb3VudGVycyBpbiBoZWFwIGluc3BlY3Rvci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShy
ZXZpc2lvbiAxMDY0MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ4MSw2ICsxNDgxLDcgQEAgX3N0cmluZ0lzQ2FzZUluc2Vuc2l0aXZlRXF1
YWxUb1N0cmluZwogX3N1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlCiBfd2tBZHZhbmNlRGVm
YXVsdEJ1dHRvblB1bHNlQW5pbWF0aW9uCiBfd2tDR0NvbnRleHRHZXRTaG91bGRTbW9vdGhGb250
cworX3drQ0dDb250ZXh0UmVzZXRDbGlwCiBfd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRU
cmFuc2Zvcm0KIF93a0NvcHlDRkxvY2FsaXphdGlvblByZWZlcnJlZE5hbWUKIF93a0NvcHlDRlVS
TFJlc3BvbnNlU3VnZ2VzdGVkRmlsZW5hbWUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkocmV2aXNpb24g
MTA2NDE1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3OCw3ICsxOTc4LDcgQEAgdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnB1dEltYWdlRAogICAgIEludFJlY3Qgc291cmNlUmVjdChk
ZXN0UmVjdCk7CiAgICAgc291cmNlUmVjdC5tb3ZlKC1kZXN0T2Zmc2V0KTsKIAotICAgIGJ1ZmZl
ci0+cHV0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGRhdGEtPmRhdGEoKS0+ZGF0YSgpLCBJbnRTaXpl
KGRhdGEtPndpZHRoKCksIGRhdGEtPmhlaWdodCgpKSwgc291cmNlUmVjdCwgSW50UG9pbnQoZGVz
dE9mZnNldCkpOworICAgIGJ1ZmZlci0+cHV0Qnl0ZUFycmF5KFVubXVsdGlwbGllZCwgZGF0YS0+
ZGF0YSgpLT5kYXRhKCksIEludFNpemUoZGF0YS0+d2lkdGgoKSwgZGF0YS0+aGVpZ2h0KCkpLCBz
b3VyY2VSZWN0LCBJbnRQb2ludChkZXN0T2Zmc2V0KSk7CiAgICAgZGlkRHJhdyhkZXN0UmVjdCwg
Q2FudmFzRGlkRHJhd0FwcGx5Tm9uZSk7IC8vIGlnbm9yZSB0cmFuc2Zvcm0sIHNoYWRvdyBhbmQg
Y2xpcAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuY3BwCShyZXZpc2lvbiAxMDY0MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2
LDcgQEAgaW5saW5lIHZvaWQgSW1hZ2VCdWZmZXI6OmdlbmVyaWNDb252ZXJ0VAogICAgICAgICBk
b3VibGUgbHVtYSA9IChyICogMC4yMTI1ICsgZyAqIDAuNzE1NCArIGIgKiAwLjA3MjEpICogKChk
b3VibGUpYSAvIDI1NS4wKTsKICAgICAgICAgc3JjUGl4ZWxBcnJheS0+c2V0KHBpeGVsT2Zmc2V0
ICsgMywgbHVtYSk7CiAgICAgfQotICAgIHB1dFVubXVsdGlwbGllZEltYWdlRGF0YShzcmNQaXhl
bEFycmF5LmdldCgpLCBsdW1pbmFuY2VSZWN0LnNpemUoKSwgbHVtaW5hbmNlUmVjdCwgSW50UG9p
bnQoKSk7CisgICAgcHV0Qnl0ZUFycmF5KFVubXVsdGlwbGllZCwgc3JjUGl4ZWxBcnJheS5nZXQo
KSwgbHVtaW5hbmNlUmVjdC5zaXplKCksIGx1bWluYW5jZVJlY3QsIEludFBvaW50KCkpOwogfQog
CiB2b2lkIEltYWdlQnVmZmVyOjpjb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24g
MTA2NDE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtOTYsOCArOTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoY29u
c3QgSW50UmVjdCYpIGNvbnN0OwogICAgICAgICBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gZ2V0UHJl
bXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAKLSAgICAgICAgdm9p
ZCBwdXRVbm11bHRpcGxpZWRJbWFnZURhdGEoQnl0ZUFycmF5KiwgY29uc3QgSW50U2l6ZSYgc291
cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQ
b2ludCk7Ci0gICAgICAgIHZvaWQgcHV0UHJlbXVsdGlwbGllZEltYWdlRGF0YShCeXRlQXJyYXkq
LCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRQb2ludCYgZGVzdFBvaW50KTsKKyAgICAgICAgdm9pZCBwdXRCeXRlQXJyYXkoTXVs
dGlwbHkgbXVsdGlwbGllZCwgQnl0ZUFycmF5KiwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCk7CiAg
ICAgICAgIAogICAgICAgICB2b2lkIGNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKICAgICAgICAg
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmNwcAkocmV2aXNpb24gMTA2NDE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU2hhZG93Qmx1ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyOCw3ICs4MjgsNyBAQCB2b2lk
IFNoYWRvd0JsdXI6OmJsdXJTaGFkb3dCdWZmZXIoY29uc3QgCiAgICAgSW50UmVjdCBibHVyUmVj
dChJbnRQb2ludCgpLCB0ZW1wbGF0ZVNpemUpOwogICAgIFJlZlB0cjxCeXRlQXJyYXk+IGxheWVy
RGF0YSA9IG1fbGF5ZXJJbWFnZS0+Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGJsdXJSZWN0KTsK
ICAgICBibHVyTGF5ZXJJbWFnZShsYXllckRhdGEtPmRhdGEoKSwgYmx1clJlY3Quc2l6ZSgpLCBi
bHVyUmVjdC53aWR0aCgpICogNCk7Ci0gICAgbV9sYXllckltYWdlLT5wdXRVbm11bHRpcGxpZWRJ
bWFnZURhdGEobGF5ZXJEYXRhLmdldCgpLCBibHVyUmVjdC5zaXplKCksIGJsdXJSZWN0LCBJbnRQ
b2ludCgpKTsKKyAgICBtX2xheWVySW1hZ2UtPnB1dEJ5dGVBcnJheShVbm11bHRpcGxpZWQsIGxh
eWVyRGF0YS5nZXQoKSwgYmx1clJlY3Quc2l6ZSgpLCBibHVyUmVjdCwgSW50UG9pbnQoKSk7CiB9
CiAKIHZvaWQgU2hhZG93Qmx1cjo6Ymx1ckFuZENvbG9yU2hhZG93QnVmZmVyKGNvbnN0IEludFNp
emUmIHRlbXBsYXRlU2l6ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCShyZXZpc2lvbiAx
MDY0MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDEyICsyMDQsMTEgQEAgUGFzc1Jl
ZlB0cjxCeXRlQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRQcgogICAgIHJldHVybiBnZXRJbWFnZURh
dGE8UHJlbXVsdGlwbGllZD4ocmVjdCwgbV9kYXRhLCBtX3NpemUpOwogfQogCi10ZW1wbGF0ZSA8
TXVsdGlwbHkgbXVsdGlwbGllZD4KLXZvaWQgcHV0SW1hZ2VEYXRhKEJ5dGVBcnJheSomIHNvdXJj
ZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgSW1hZ2VCdWZmZXJEYXRhJiBkYXRhLCBjb25zdCBJ
bnRTaXplJiBzaXplKQordm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11
bHRpcGxpZWQsIEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQogewot
ICAgIEFTU0VSVChjYWlyb19zdXJmYWNlX2dldF90eXBlKGRhdGEubV9zdXJmYWNlKSA9PSBDQUlS
T19TVVJGQUNFX1RZUEVfSU1BR0UpOworICAgIEFTU0VSVChjYWlyb19zdXJmYWNlX2dldF90eXBl
KG1fZGF0YS5tX3N1cmZhY2UpID09IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSk7CiAKLSAgICB1
bnNpZ25lZCBjaGFyKiBkYXRhRHN0ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShkYXRh
Lm1fc3VyZmFjZSk7CisgICAgdW5zaWduZWQgY2hhciogZGF0YURzdCA9IGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X2RhdGEobV9kYXRhLm1fc3VyZmFjZSk7CiAKICAgICBBU1NFUlQoc291cmNlUmVj
dC53aWR0aCgpID4gMCk7CiAgICAgQVNTRVJUKHNvdXJjZVJlY3QuaGVpZ2h0KCkgPiAwKTsKQEAg
LTIxNywyOCArMjE2LDI4IEBAIHZvaWQgcHV0SW1hZ2VEYXRhKEJ5dGVBcnJheSomIHNvdXJjZSwg
Y28KICAgICBpbnQgb3JpZ2lueCA9IHNvdXJjZVJlY3QueCgpOwogICAgIGludCBkZXN0eCA9IGRl
c3RQb2ludC54KCkgKyBzb3VyY2VSZWN0LngoKTsKICAgICBBU1NFUlQoZGVzdHggPj0gMCk7Ci0g
ICAgQVNTRVJUKGRlc3R4IDwgc2l6ZS53aWR0aCgpKTsKKyAgICBBU1NFUlQoZGVzdHggPCBtX3Np
emUud2lkdGgoKSk7CiAgICAgQVNTRVJUKG9yaWdpbnggPj0gMCk7CiAgICAgQVNTRVJUKG9yaWdp
bnggPD0gc291cmNlUmVjdC5tYXhYKCkpOwogCiAgICAgaW50IGVuZHggPSBkZXN0UG9pbnQueCgp
ICsgc291cmNlUmVjdC5tYXhYKCk7Ci0gICAgQVNTRVJUKGVuZHggPD0gc2l6ZS53aWR0aCgpKTsK
KyAgICBBU1NFUlQoZW5keCA8PSBtX3NpemUud2lkdGgoKSk7CiAKICAgICBpbnQgbnVtQ29sdW1u
cyA9IGVuZHggLSBkZXN0eDsKIAogICAgIGludCBvcmlnaW55ID0gc291cmNlUmVjdC55KCk7CiAg
ICAgaW50IGRlc3R5ID0gZGVzdFBvaW50LnkoKSArIHNvdXJjZVJlY3QueSgpOwogICAgIEFTU0VS
VChkZXN0eSA+PSAwKTsKLSAgICBBU1NFUlQoZGVzdHkgPCBzaXplLmhlaWdodCgpKTsKKyAgICBB
U1NFUlQoZGVzdHkgPCBtX3NpemUuaGVpZ2h0KCkpOwogICAgIEFTU0VSVChvcmlnaW55ID49IDAp
OwogICAgIEFTU0VSVChvcmlnaW55IDw9IHNvdXJjZVJlY3QubWF4WSgpKTsKIAogICAgIGludCBl
bmR5ID0gZGVzdFBvaW50LnkoKSArIHNvdXJjZVJlY3QubWF4WSgpOwotICAgIEFTU0VSVChlbmR5
IDw9IHNpemUuaGVpZ2h0KCkpOworICAgIEFTU0VSVChlbmR5IDw9IG1fc2l6ZS5oZWlnaHQoKSk7
CiAgICAgaW50IG51bVJvd3MgPSBlbmR5IC0gZGVzdHk7CiAKICAgICB1bnNpZ25lZCBzcmNCeXRl
c1BlclJvdyA9IDQgKiBzb3VyY2VTaXplLndpZHRoKCk7Ci0gICAgaW50IHN0cmlkZSA9IGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShkYXRhLm1fc3VyZmFjZSk7CisgICAgaW50IHN0cmlk
ZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShtX2RhdGEubV9zdXJmYWNlKTsKIAog
ICAgIHVuc2lnbmVkIGNoYXIqIHNyY1Jvd3MgPSBzb3VyY2UtPmRhdGEoKSArIG9yaWdpbnkgKiBz
cmNCeXRlc1BlclJvdyArIG9yaWdpbnggKiA0OwogICAgIGZvciAoaW50IHkgPSAwOyB5IDwgbnVt
Um93czsgKyt5KSB7CkBAIC0yNTcsMjEgKzI1NiwxMSBAQCB2b2lkIHB1dEltYWdlRGF0YShCeXRl
QXJyYXkqJiBzb3VyY2UsIGNvCiAgICAgICAgIH0KICAgICAgICAgc3JjUm93cyArPSBzcmNCeXRl
c1BlclJvdzsKICAgICB9Ci0gICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3JlY3RhbmdsZSAo
ZGF0YS5tX3N1cmZhY2UsCisgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3JlY3RhbmdsZSht
X2RhdGEubV9zdXJmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlc3R4LCBkZXN0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dW1Db2x1bW5zLCBudW1Sb3dzKTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0VW5tdWx0aXBs
aWVkSW1hZ2VEYXRhKEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXpl
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQot
ewotICAgIHB1dEltYWdlRGF0YTxVbm11bHRpcGxpZWQ+KHNvdXJjZSwgc291cmNlU2l6ZSwgc291
cmNlUmVjdCwgZGVzdFBvaW50LCBtX2RhdGEsIG1fc2l6ZSk7Ci19Ci0KLXZvaWQgSW1hZ2VCdWZm
ZXI6OnB1dFByZW11bHRpcGxpZWRJbWFnZURhdGEoQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0IElu
dFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBv
aW50JiBkZXN0UG9pbnQpCi17Ci0gICAgcHV0SW1hZ2VEYXRhPFByZW11bHRpcGxpZWQ+KHNvdXJj
ZSwgc291cmNlU2l6ZSwgc291cmNlUmVjdCwgZGVzdFBvaW50LCBtX2RhdGEsIG1fc2l6ZSk7Ci19
Ci0KICNpZiAhUExBVEZPUk0oR1RLKQogc3RhdGljIGNhaXJvX3N0YXR1c190IHdyaXRlRnVuY3Rp
b24odm9pZCogY2xvc3VyZSwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgaW50
IGxlbmd0aCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCShyZXZpc2lvbiAxMDY0MTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzA3LDI2ICszMDcsMzggQEAgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IEltYWdlQnVm
ZmVyOjpnZXRQcgogICAgIHJldHVybiBtX2RhdGEuZ2V0RGF0YShyZWN0LCBtX3NpemUsIG1fY29u
dGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSwgZmFsc2UpOwogfQogCi12b2lkIEltYWdlQnVm
ZmVyOjpwdXRVbm11bHRpcGxpZWRJbWFnZURhdGEoQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0IElu
dFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBv
aW50JiBkZXN0UG9pbnQpCit2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkg
bXVsdGlwbGllZCwgQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUs
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpCiB7
CiAgICAgaWYgKG1fY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewotICAgICAgICBD
R0NvbnRleHRGbHVzaChjb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpKTsKLSNpZiBkZWZpbmVk
KEJVSUxESU5HX09OX0xJT04pCi0gICAgICAgIG1fZGF0YS5tX2xhc3RGbHVzaFRpbWUgPSBjdXJy
ZW50VGltZU1TKCk7Ci0jZW5kaWYKLSAgICB9Ci0gICAgbV9kYXRhLnB1dERhdGEoc291cmNlLCBz
b3VyY2VTaXplLCBzb3VyY2VSZWN0LCBkZXN0UG9pbnQsIG1fc2l6ZSwgbV9jb250ZXh0LT5pc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpLCB0cnVlKTsKLX0KKyAgICAgICAgSW50U2l6ZSBzb3VyY2VDb3B5
U2l6ZShzb3VyY2VSZWN0LndpZHRoKCksIHNvdXJjZVJlY3QuaGVpZ2h0KCkpOworICAgICAgICBP
d25QdHI8SW1hZ2VCdWZmZXI+IHNvdXJjZUNvcHkgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNvdXJj
ZUNvcHlTaXplLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBVbmFjY2VsZXJhdGVkKTsKKyAgICAgICAg
aWYgKCFzb3VyY2VDb3B5KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChtdWx0
aXBsaWVkID09IFVubXVsdGlwbGllZCkKKyAgICAgICAgICAgIHNvdXJjZUNvcHktPm1fZGF0YS5w
dXREYXRhKHNvdXJjZSwgc291cmNlU2l6ZSwgc291cmNlUmVjdCwgSW50UG9pbnQoLXNvdXJjZVJl
Y3QueCgpLCAtc291cmNlUmVjdC55KCkpLCBzb3VyY2VDb3B5LT5zaXplKCksIGZhbHNlLCB0cnVl
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc291cmNlQ29weS0+bV9kYXRhLnB1dERhdGEo
c291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBJbnRQb2ludCgtc291cmNlUmVjdC54KCks
IC1zb3VyY2VSZWN0LnkoKSksIHNvdXJjZUNvcHktPnNpemUoKSwgZmFsc2UsIGZhbHNlKTsKKyAg
ICAgICAgCisgICAgICAgIC8vIFNldCB1cCBjb250ZXh0IGZvciB1c2luZyBkcmF3SW1hZ2UgYXMg
YSBkaXJlY3QgYml0IGNvcHkKKyAgICAgICAgQ0dDb250ZXh0UmVmIGRlc3RDb250ZXh0ID0gY29u
dGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShk
ZXN0Q29udGV4dCk7CisgICAgICAgIENHQ29udGV4dENvbmNhdENUTShkZXN0Q29udGV4dCwgQWZm
aW5lVHJhbnNmb3JtKENHQ29udGV4dEdldENUTShkZXN0Q29udGV4dCkpLmludmVyc2UoKSk7Cisg
ICAgICAgIHdrQ0dDb250ZXh0UmVzZXRDbGlwKGRlc3RDb250ZXh0KTsKKyAgICAgICAgQ0dDb250
ZXh0U2V0SW50ZXJwb2xhdGlvblF1YWxpdHkoZGVzdENvbnRleHQsIGtDR0ludGVycG9sYXRpb25O
b25lKTsKKyAgICAgICAgQ0dDb250ZXh0U2V0QWxwaGEoZGVzdENvbnRleHQsIDEuMCk7CisgICAg
ICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShkZXN0Q29udGV4dCwga0NHQmxlbmRNb2RlQ29weSk7
CisgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihkZXN0Q29udGV4dCwgQ0dTaXpl
WmVybywgMCwgMCk7CisKKyAgICAgICAgLy8gRHJhdyB0aGUgaW1hZ2UgaW4gQ0cgY29vcmRpbmF0
ZSBzcGFjZQorICAgICAgICBJbnRQb2ludCBkZXN0UG9pbnRJbkNHQ29vcmRzKGRlc3RQb2ludC54
KCkgKyBzb3VyY2VSZWN0LngoKSwgbV9zaXplLmhlaWdodCgpIC0gKGRlc3RQb2ludC55KCkrc291
cmNlUmVjdC55KCkpIC0gc291cmNlUmVjdC5oZWlnaHQoKSk7CisgICAgICAgIEludFJlY3QgZGVz
dFJlY3RJbkNHQ29vcmRzKGRlc3RQb2ludEluQ0dDb29yZHMsIHNvdXJjZUNvcHlTaXplKTsKKyAg
ICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHNvdXJjZUNvcHlJbWFnZShBZG9wdENGLCBzb3Vy
Y2VDb3B5LT5jb3B5TmF0aXZlSW1hZ2UoKSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShk
ZXN0Q29udGV4dCwgZGVzdFJlY3RJbkNHQ29vcmRzLCBzb3VyY2VDb3B5SW1hZ2UuZ2V0KCkpOwog
Ci12b2lkIEltYWdlQnVmZmVyOjpwdXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKEJ5dGVBcnJheSog
c291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQotewotICAgIGlmIChtX2NvbnRleHQtPmlz
QWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKLSAgICAgICAgQ0dDb250ZXh0Rmx1c2goY29udGV4dCgp
LT5wbGF0Zm9ybUNvbnRleHQoKSk7Ci0jaWYgZGVmaW5lZChCVUlMRElOR19PTl9MSU9OKQotICAg
ICAgICBtX2RhdGEubV9sYXN0Rmx1c2hUaW1lID0gY3VycmVudFRpbWVNUygpOwotI2VuZGlmCi0g
ICAgfQotICAgIG1fZGF0YS5wdXREYXRhKHNvdXJjZSwgc291cmNlU2l6ZSwgc291cmNlUmVjdCwg
ZGVzdFBvaW50LCBtX3NpemUsIG1fY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSwgZmFs
c2UpOworICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGRlc3RDb250ZXh0KTsKKyAgICB9
IGVsc2UKKyAgICAgICAgbV9kYXRhLnB1dERhdGEoc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VS
ZWN0LCBkZXN0UG9pbnQsIG1fc2l6ZSwgbV9jb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgp
LCBtdWx0aXBsaWVkID09IFVubXVsdGlwbGllZCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgQ0ZTdHJp
bmdSZWYganBlZ1VUSSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAJKHJldmlzaW9uIDEwNjQx
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1h
dHJpeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIEZFQ29sb3JN
YXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAg
IHJlc3VsdEltYWdlLT5wdXRVbm11bHRpcGxpZWRJbWFnZURhdGEocGl4ZWxBcnJheS5nZXQoKSwg
aW1hZ2VSZWN0LnNpemUoKSwgaW1hZ2VSZWN0LCBJbnRQb2ludCgpKTsKKyAgICByZXN1bHRJbWFn
ZS0+cHV0Qnl0ZUFycmF5KFVubXVsdGlwbGllZCwgcGl4ZWxBcnJheS5nZXQoKSwgaW1hZ2VSZWN0
LnNpemUoKSwgaW1hZ2VSZWN0LCBJbnRQb2ludCgpKTsKIH0KIAogdm9pZCBGRUNvbG9yTWF0cml4
OjpkdW1wKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVEcm9wU2hhZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAJKHJldmlzaW9uIDEwNjQxNSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgRkVEcm9wU2hhZG93OjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUKIAogICAgIGNvbnRleHRTaGFkb3cuYmx1ckxheWVySW1hZ2Uoc3Jj
UGl4ZWxBcnJheS0+ZGF0YSgpLCBzaGFkb3dBcmVhLnNpemUoKSwgNCAqIHNoYWRvd0FyZWEuc2l6
ZSgpLndpZHRoKCkpOwogCi0gICAgcmVzdWx0SW1hZ2UtPnB1dFByZW11bHRpcGxpZWRJbWFnZURh
dGEoc3JjUGl4ZWxBcnJheS5nZXQoKSwgc2hhZG93QXJlYS5zaXplKCksIHNoYWRvd0FyZWEsIElu
dFBvaW50KCkpOworICAgIHJlc3VsdEltYWdlLT5wdXRCeXRlQXJyYXkoUHJlbXVsdGlwbGllZCwg
c3JjUGl4ZWxBcnJheS5nZXQoKSwgc2hhZG93QXJlYS5zaXplKCksIHNoYWRvd0FyZWEsIEludFBv
aW50KCkpOwogCiAgICAgcmVzdWx0Q29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBv
c2l0ZVNvdXJjZUluKTsKICAgICByZXN1bHRDb250ZXh0LT5maWxsUmVjdChGbG9hdFJlY3QoRmxv
YXRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSksIG1fc2hhZG93Q29sb3IsIENv
bG9yU3BhY2VEZXZpY2VSR0IpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAkocmV2aXNpb24gMTA2
NDE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJF
ZmZlY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsOSArMTMwLDkgQEAgSW1hZ2VCdWZmZXIq
IEZpbHRlckVmZmVjdDo6YXNJbWFnZUJ1ZmZlcgogICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpLCBDb2xvclNwYWNl
TGluZWFyUkdCLCBtX2ZpbHRlci0+cmVuZGVyaW5nTW9kZSgpKTsKICAgICBJbnRSZWN0IGRlc3Rp
bmF0aW9uUmVjdChJbnRQb2ludCgpLCBtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7CiAgICAg
aWYgKG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KQotICAgICAgICBtX2ltYWdlQnVmZmVyUmVz
dWx0LT5wdXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0
LmdldCgpLCBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpLCBkZXN0aW5hdGlvblJlY3QsIEludFBvaW50
KCkpOworICAgICAgICBtX2ltYWdlQnVmZmVyUmVzdWx0LT5wdXRCeXRlQXJyYXkoUHJlbXVsdGlw
bGllZCwgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQuZ2V0KCksIGRlc3RpbmF0aW9uUmVjdC5z
aXplKCksIGRlc3RpbmF0aW9uUmVjdCwgSW50UG9pbnQoKSk7CiAgICAgZWxzZQotICAgICAgICBt
X2ltYWdlQnVmZmVyUmVzdWx0LT5wdXRVbm11bHRpcGxpZWRJbWFnZURhdGEobV91bm11bHRpcGxp
ZWRJbWFnZVJlc3VsdC5nZXQoKSwgZGVzdGluYXRpb25SZWN0LnNpemUoKSwgZGVzdGluYXRpb25S
ZWN0LCBJbnRQb2ludCgpKTsKKyAgICAgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdC0+cHV0Qnl0ZUFy
cmF5KFVubXVsdGlwbGllZCwgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdC5nZXQoKSwgZGVzdGlu
YXRpb25SZWN0LnNpemUoKSwgZGVzdGluYXRpb25SZWN0LCBJbnRQb2ludCgpKTsKICAgICByZXR1
cm4gbV9pbWFnZUJ1ZmZlclJlc3VsdC5nZXQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAJKHJldmlz
aW9uIDEwNjQxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdl
QnVmZmVyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTksOCArMjk5LDcgQEAgc3RhdGljIGlu
bGluZSB1bnNpZ25lZCBpbnQgcHJlbXVsdGlwbHlBQgogICAgIHJldHVybiB4OwogfQogCi10ZW1w
bGF0ZSA8TXVsdGlwbHkgbXVsdGlwbGllZD4KLXZvaWQgcHV0SW1hZ2VEYXRhKEJ5dGVBcnJheSom
IHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgSW1hZ2VCdWZmZXJEYXRhJiBkYXRhLCBj
b25zdCBJbnRTaXplJiBzaXplKQordm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRp
cGx5IG11bHRpcGxpZWQsIEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VT
aXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50
KQogewogICAgIEFTU0VSVChzb3VyY2VSZWN0LndpZHRoKCkgPiAwKTsKICAgICBBU1NFUlQoc291
cmNlUmVjdC5oZWlnaHQoKSA+IDApOwpAQCAtMzA4LDI0ICszMDcsMjQgQEAgdm9pZCBwdXRJbWFn
ZURhdGEoQnl0ZUFycmF5KiYgc291cmNlLCBjbwogICAgIGludCBvcmlnaW54ID0gc291cmNlUmVj
dC54KCk7CiAgICAgaW50IGRlc3R4ID0gZGVzdFBvaW50LngoKSArIHNvdXJjZVJlY3QueCgpOwog
ICAgIEFTU0VSVChkZXN0eCA+PSAwKTsKLSAgICBBU1NFUlQoZGVzdHggPCBzaXplLndpZHRoKCkp
OworICAgIEFTU0VSVChkZXN0eCA8IG1fc2l6ZS53aWR0aCgpKTsKICAgICBBU1NFUlQob3JpZ2lu
eCA+PSAwKTsKICAgICBBU1NFUlQob3JpZ2lueCA8PSBzb3VyY2VSZWN0Lm1heFgoKSk7CiAKICAg
ICBpbnQgZW5keCA9IGRlc3RQb2ludC54KCkgKyBzb3VyY2VSZWN0Lm1heFgoKTsKLSAgICBBU1NF
UlQoZW5keCA8PSBzaXplLndpZHRoKCkpOworICAgIEFTU0VSVChlbmR4IDw9IG1fc2l6ZS53aWR0
aCgpKTsKIAogICAgIGludCBudW1Db2x1bW5zID0gZW5keCAtIGRlc3R4OwogCiAgICAgaW50IG9y
aWdpbnkgPSBzb3VyY2VSZWN0LnkoKTsKICAgICBpbnQgZGVzdHkgPSBkZXN0UG9pbnQueSgpICsg
c291cmNlUmVjdC55KCk7CiAgICAgQVNTRVJUKGRlc3R5ID49IDApOwotICAgIEFTU0VSVChkZXN0
eSA8IHNpemUuaGVpZ2h0KCkpOworICAgIEFTU0VSVChkZXN0eSA8IG1fc2l6ZS5oZWlnaHQoKSk7
CiAgICAgQVNTRVJUKG9yaWdpbnkgPj0gMCk7CiAgICAgQVNTRVJUKG9yaWdpbnkgPD0gc291cmNl
UmVjdC5tYXhZKCkpOwogCiAgICAgaW50IGVuZHkgPSBkZXN0UG9pbnQueSgpICsgc291cmNlUmVj
dC5tYXhZKCk7Ci0gICAgQVNTRVJUKGVuZHkgPD0gc2l6ZS5oZWlnaHQoKSk7CisgICAgQVNTRVJU
KGVuZHkgPD0gbV9zaXplLmhlaWdodCgpKTsKICAgICBpbnQgbnVtUm93cyA9IGVuZHkgLSBkZXN0
eTsKIAogICAgIHVuc2lnbmVkIHNyY0J5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVNpemUud2lkdGgo
KTsKQEAgLTM1OSwzNSArMzU4LDI1IEBAIHZvaWQgcHV0SW1hZ2VEYXRhKEJ5dGVBcnJheSomIHNv
dXJjZSwgY28KICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgaXNQYWludGluZyA9IGRhdGEu
bV9wYWludGVyLT5pc0FjdGl2ZSgpOworICAgIGJvb2wgaXNQYWludGluZyA9IG1fZGF0YS5tX3Bh
aW50ZXItPmlzQWN0aXZlKCk7CiAgICAgaWYgKCFpc1BhaW50aW5nKQotICAgICAgICBkYXRhLm1f
cGFpbnRlci0+YmVnaW4oJmRhdGEubV9waXhtYXApOworICAgICAgICBtX2RhdGEubV9wYWludGVy
LT5iZWdpbigmbV9kYXRhLm1fcGl4bWFwKTsKICAgICBlbHNlIHsKLSAgICAgICAgZGF0YS5tX3Bh
aW50ZXItPnNhdmUoKTsKKyAgICAgICAgbV9kYXRhLm1fcGFpbnRlci0+c2F2ZSgpOwogCiAgICAg
ICAgIC8vIHB1dEltYWdlRGF0YSgpIHNob3VsZCBiZSB1bmFmZmVjdGVkIGJ5IHBhaW50ZXIgc3Rh
dGUKLSAgICAgICAgZGF0YS5tX3BhaW50ZXItPnJlc2V0VHJhbnNmb3JtKCk7Ci0gICAgICAgIGRh
dGEubV9wYWludGVyLT5zZXRPcGFjaXR5KDEuMCk7Ci0gICAgICAgIGRhdGEubV9wYWludGVyLT5z
ZXRDbGlwcGluZyhmYWxzZSk7CisgICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPnJlc2V0VHJhbnNm
b3JtKCk7CisgICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPnNldE9wYWNpdHkoMS4wKTsKKyAgICAg
ICAgbV9kYXRhLm1fcGFpbnRlci0+c2V0Q2xpcHBpbmcoZmFsc2UpOwogICAgIH0KIAotICAgIGRh
dGEubV9wYWludGVyLT5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9k
ZV9Tb3VyY2UpOwotICAgIGRhdGEubV9wYWludGVyLT5kcmF3SW1hZ2UoZGVzdHgsIGRlc3R5LCBp
bWFnZSk7CisgICAgbV9kYXRhLm1fcGFpbnRlci0+c2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVy
OjpDb21wb3NpdGlvbk1vZGVfU291cmNlKTsKKyAgICBtX2RhdGEubV9wYWludGVyLT5kcmF3SW1h
Z2UoZGVzdHgsIGRlc3R5LCBpbWFnZSk7CiAKICAgICBpZiAoIWlzUGFpbnRpbmcpCi0gICAgICAg
IGRhdGEubV9wYWludGVyLT5lbmQoKTsKKyAgICAgICAgbV9kYXRhLm1fcGFpbnRlci0+ZW5kKCk7
CiAgICAgZWxzZQotICAgICAgICBkYXRhLm1fcGFpbnRlci0+cmVzdG9yZSgpOwotfQotCi12b2lk
IEltYWdlQnVmZmVyOjpwdXRVbm11bHRpcGxpZWRJbWFnZURhdGEoQnl0ZUFycmF5KiBzb3VyY2Us
IGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFBvaW50JiBkZXN0UG9pbnQpCi17Ci0gICAgcHV0SW1hZ2VEYXRhPFVubXVsdGlwbGll
ZD4oc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBkZXN0UG9pbnQsIG1fZGF0YSwgbV9z
aXplKTsKLX0KLQotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0UHJlbXVsdGlwbGllZEltYWdlRGF0YShC
eXRlQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkKLXsKLSAgICBwdXRJbWFn
ZURhdGE8UHJlbXVsdGlwbGllZD4oc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBkZXN0
UG9pbnQsIG1fZGF0YSwgbV9zaXplKTsKKyAgICAgICAgbV9kYXRhLm1fcGFpbnRlci0+cmVzdG9y
ZSgpOwogfQogCiAvLyBXZSBnZXQgYSBtaW1lVHlwZSBoZXJlIGJ1dCBRSW1hZ2VXcml0ZXIgZG9l
cyBub3Qgc3VwcG9ydCBtaW1ldHlwZXMgYnV0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCShyZXZp
c2lvbiAxMDY0MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0lt
YWdlQnVmZmVyU2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5OCwzNCArMjk4LDMzIEBAIFBh
c3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHIKICAgICByZXR1cm4gZ2V0SW1h
Z2VEYXRhPFByZW11bHRpcGxpZWQ+KHJlY3QsIGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCkt
PmNhbnZhcygpLCBtX3NpemUpOwogfQogCi10ZW1wbGF0ZSA8TXVsdGlwbHkgbXVsdGlwbGllZD4K
LXZvaWQgcHV0SW1hZ2VEYXRhKEJ5dGVBcnJheSomIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291
cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQ
b2ludCwKLSAgICAgICAgICAgICAgICAgIFNrQ2FudmFzKiBjYW52YXMsIGNvbnN0IEludFNpemUm
IHNpemUpCit2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGll
ZCwgQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpCiB7CisgICAgU0tD
YW52YXMqIGNhbnZhcyA9IGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwog
ICAgIEFTU0VSVChzb3VyY2VSZWN0LndpZHRoKCkgPiAwKTsKICAgICBBU1NFUlQoc291cmNlUmVj
dC5oZWlnaHQoKSA+IDApOwogCiAgICAgaW50IG9yaWdpblggPSBzb3VyY2VSZWN0LngoKTsKICAg
ICBpbnQgZGVzdFggPSBkZXN0UG9pbnQueCgpICsgc291cmNlUmVjdC54KCk7CiAgICAgQVNTRVJU
KGRlc3RYID49IDApOwotICAgIEFTU0VSVChkZXN0WCA8IHNpemUud2lkdGgoKSk7CisgICAgQVNT
RVJUKGRlc3RYIDwgbV9zaXplLndpZHRoKCkpOwogICAgIEFTU0VSVChvcmlnaW5YID49IDApOwog
ICAgIEFTU0VSVChvcmlnaW5YIDwgc291cmNlUmVjdC5tYXhYKCkpOwogCiAgICAgaW50IGVuZFgg
PSBkZXN0UG9pbnQueCgpICsgc291cmNlUmVjdC5tYXhYKCk7Ci0gICAgQVNTRVJUKGVuZFggPD0g
c2l6ZS53aWR0aCgpKTsKKyAgICBBU1NFUlQoZW5kWCA8PSBtX3NpemUud2lkdGgoKSk7CiAKICAg
ICBpbnQgbnVtQ29sdW1ucyA9IGVuZFggLSBkZXN0WDsKIAogICAgIGludCBvcmlnaW5ZID0gc291
cmNlUmVjdC55KCk7CiAgICAgaW50IGRlc3RZID0gZGVzdFBvaW50LnkoKSArIHNvdXJjZVJlY3Qu
eSgpOwogICAgIEFTU0VSVChkZXN0WSA+PSAwKTsKLSAgICBBU1NFUlQoZGVzdFkgPCBzaXplLmhl
aWdodCgpKTsKKyAgICBBU1NFUlQoZGVzdFkgPCBtX3NpemUuaGVpZ2h0KCkpOwogICAgIEFTU0VS
VChvcmlnaW5ZID49IDApOwogICAgIEFTU0VSVChvcmlnaW5ZIDwgc291cmNlUmVjdC5tYXhZKCkp
OwogCiAgICAgaW50IGVuZFkgPSBkZXN0UG9pbnQueSgpICsgc291cmNlUmVjdC5tYXhZKCk7Ci0g
ICAgQVNTRVJUKGVuZFkgPD0gc2l6ZS5oZWlnaHQoKSk7CisgICAgQVNTRVJUKGVuZFkgPD0gbV9z
aXplLmhlaWdodCgpKTsKICAgICBpbnQgbnVtUm93cyA9IGVuZFkgLSBkZXN0WTsKIAogICAgIHVu
c2lnbmVkIHNyY0J5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVNpemUud2lkdGgoKTsKQEAgLTM0Miwx
NiArMzQxLDYgQEAgdm9pZCBwdXRJbWFnZURhdGEoQnl0ZUFycmF5KiYgc291cmNlLCBjbwogICAg
IGNhbnZhcy0+d3JpdGVQaXhlbHMoc3JjQml0bWFwLCBkZXN0WCwgZGVzdFksIGNvbmZpZzg4ODgp
OwogfQogCi12b2lkIEltYWdlQnVmZmVyOjpwdXRVbm11bHRpcGxpZWRJbWFnZURhdGEoQnl0ZUFy
cmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpCi17Ci0gICAgcHV0SW1hZ2VEYXRh
PFVubXVsdGlwbGllZD4oc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBkZXN0UG9pbnQs
IGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpLCBtX3NpemUpOwotfQotCi12
b2lkIEltYWdlQnVmZmVyOjpwdXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKEJ5dGVBcnJheSogc291
cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQotewotICAgIHB1dEltYWdlRGF0YTxQcmVtdWx0
aXBsaWVkPihzb3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3QsIGRlc3RQb2ludCwgY29udGV4
dCgpLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCksIG1fc2l6ZSk7Ci19Ci0KIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogc3RhdGljIGJvb2wgZW5jb2RlSW1hZ2UoVCYgc291cmNlLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBkb3VibGUqIHF1YWxpdHksIFZlY3RvcjxjaGFyPiogb3V0
cHV0KQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1h
Z2VCdWZmZXJXaW5DRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5DRS5jcHAJKHJldmlzaW9uIDEwNjQxNSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyV2luQ0Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODMsOSArMTgzLDkgQEAgUGFzc1JlZlB0cjxCeXRlQXJy
YXk+IEltYWdlQnVmZmVyOjpnZXRQcgogICAgIHJldHVybiBnZXRJbWFnZURhdGE8dHJ1ZT4ocmVj
dCwgbV9kYXRhLm1fYml0bWFwLmdldCgpKTsKIH0KIAotdGVtcGxhdGUgPGJvb2wgcHJlbXVsdGlw
bGllZD4KLXN0YXRpYyB2b2lkIHB1dEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXJjZSwgY29uc3Qg
SW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UG9pbnQmIGRlc3RQb2ludCwgU2hhcmVkQml0bWFwKiBiaXRtYXApCit2b2lkIEltYWdlQnVmZmVy
OjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgQnl0ZUFycmF5KiBzb3VyY2UsIGNv
bnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFBvaW50JiBkZXN0UG9pbnQpCiB7CisgICAgU2hhcmVkQml0bWFwKiBiaXRtYXAgPSBtX2Rh
dGEubV9iaXRtYXAuZ2V0KCk7CiAgICAgdW5zaWduZWQgY2hhciogZHN0ID0gKHVuc2lnbmVkIGNo
YXIqKWJpdG1hcC0+Ynl0ZXMoKTsKICAgICBpZiAoIWRzdCkKICAgICAgICAgcmV0dXJuOwpAQCAt
MjExLDcgKzIxMSw3IEBAIHN0YXRpYyB2b2lkIHB1dEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXIK
ICAgICAgICAgICAgIGludCBncmVlbiA9ICpzcmMrKzsKICAgICAgICAgICAgIGludCBibHVlID0g
KnNyYysrOwogICAgICAgICAgICAgaW50IGFscGhhID0gKnNyYysrOwotICAgICAgICAgICAgaWYg
KHByZW11bHRpcGxpZWQpIHsKKyAgICAgICAgICAgIGlmIChtdWx0aXBsaWVkID09IFByZW11bHRp
cGxpZWQpIHsKICAgICAgICAgICAgICAgICAqZHN0KysgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPihibHVlICogMjU1IC8gYWxwaGEpOwogICAgICAgICAgICAgICAgICpkc3QrKyA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXI+KGdyZWVuICogMjU1IC8gYWxwaGEpOwogICAgICAgICAgICAg
ICAgICpkc3QrKyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHJlZCAqIDI1NSAvIGFscGhh
KTsKQEAgLTIyOCwxNiArMjI4LDYgQEAgc3RhdGljIHZvaWQgcHV0SW1hZ2VEYXRhKEJ5dGVBcnJh
eSogc291cgogICAgIH0KIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0VW5tdWx0aXBsaWVkSW1h
Z2VEYXRhKEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQotewotICAg
IHB1dEltYWdlRGF0YTxmYWxzZT4oc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBkZXN0
UG9pbnQsIG1fZGF0YS5tX2JpdG1hcC5nZXQoKSk7Ci19Ci0KLXZvaWQgSW1hZ2VCdWZmZXI6OnB1
dFByZW11bHRpcGxpZWRJbWFnZURhdGEoQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUm
IHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBk
ZXN0UG9pbnQpCi17Ci0gICAgcHV0SW1hZ2VEYXRhPHRydWU+KHNvdXJjZSwgc291cmNlU2l6ZSwg
c291cmNlUmVjdCwgZGVzdFBvaW50LCBtX2RhdGEubV9iaXRtYXAuZ2V0KCkpOwotfQotCiB2b2lk
IEltYWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgVmVjdG9yPGlu
dD4mIGxvb2tVcFRhYmxlKQogewogICAgIFVOVVNFRF9QQVJBTShsb29rVXBUYWJsZSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1
ZmZlcld4LmNwcAkocmV2aXNpb24gMTA2NDE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd3gvSW1hZ2VCdWZmZXJXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDEyICs3
Miw3IEBAIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHIKICAgICByZXR1
cm4gMDsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKEJ5
dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KLXZvaWQgSW1hZ2VCdWZmZXI6OnB1dFByZW11bHRpcGxpZWRJbWFnZURh
dGEoQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpCit2b2lkIEltYWdl
QnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgQnl0ZUFycmF5KiBzb3Vy
Y2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UuaAkocmV2aXNpb24gMTA2NDE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYg
KzExMyw3IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgd2tQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFj
aW5nCiB9IHdrUGF0dGVyblRpbGluZzsKIGV4dGVybiBDR1BhdHRlcm5SZWYgKCp3a0NHUGF0dGVy
bkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSkoQ0dJbWFnZVJlZiwgQ0dBZmZpbmVUcmFuc2Zv
cm0sIGludCk7CitleHRlcm4gdm9pZCAoKndrQ0dDb250ZXh0UmVzZXRDbGlwKShDR0NvbnRleHRS
ZWYpOwogZXh0ZXJuIENGUmVhZFN0cmVhbVJlZiAoKndrQ3JlYXRlQ3VzdG9tQ0ZSZWFkU3RyZWFt
KSh2b2lkICooKmZvcm1DcmVhdGUpKENGUmVhZFN0cmVhbVJlZiwgdm9pZCAqKSwgCiAgICAgdm9p
ZCAoKmZvcm1GaW5hbGl6ZSkoQ0ZSZWFkU3RyZWFtUmVmLCB2b2lkICopLCAKICAgICBCb29sZWFu
ICgqZm9ybU9wZW4pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJlYW1FcnJvciAqLCBCb29sZWFuICos
IHZvaWQgKiksIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0JKHJldmlzaW9uIDEwNjQxNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzIsNiArMTMyLDcgQEAgQ1RMaW5lUmVmICgqd2tDcmVhdGVDVExpbmVXaXRoVW5p
Q2hhclBybwogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJV
SUxESU5HX09OX1NOT1dfTEVPUEFSRCkKIENUVHlwZXNldHRlclJlZiAoKndrQ3JlYXRlQ1RUeXBl
c2V0dGVyV2l0aFVuaUNoYXJQcm92aWRlckFuZE9wdGlvbnMpKGNvbnN0IFVuaUNoYXIqICgqcHJv
dmlkZSkoQ0ZJbmRleCBzdHJpbmdJbmRleCwgQ0ZJbmRleCogY2hhckNvdW50LCBDRkRpY3Rpb25h
cnlSZWYqIGF0dHJpYnV0ZXMsIHZvaWQqKSwgdm9pZCAoKmRpc3Bvc2UpKGNvbnN0IFVuaUNoYXIq
IGNoYXJzLCB2b2lkKiksIHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYgb3B0aW9ucyk7CiAKK3ZvaWQg
KCp3a0NHQ29udGV4dFJlc2V0Q2xpcCkoQ0dDb250ZXh0UmVmKTsKIENHQ29udGV4dFJlZiAoKndr
SU9TdXJmYWNlQ29udGV4dENyZWF0ZSkoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIHVuc2lnbmVkIHdp
ZHRoLCB1bnNpZ25lZCBoZWlnaHQsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKTsKIENHSW1h
Z2VSZWYgKCp3a0lPU3VyZmFjZUNvbnRleHRDcmVhdGVJbWFnZSkoQ0dDb250ZXh0UmVmIGNvbnRl
eHQpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDY2MzQpCisrKyBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wMi0wMyAg
TWF0dGhldyBEZWxhbmV5ICA8bWRlbGFuZXlAYXBwbGUuY29tPgorCisgICAgICAgIHRvRGF0YVVS
TCgpIHVzZXMgc3RhbGUgZGF0YSBhZnRlciBwdXRJbWFnZURhdGEoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU3NjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVt
SW50ZXJmYWNlKToKKwogMjAxMi0wMi0wMiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJv
dEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEwNjYyMC4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5
c3RlbUludGVyZmFjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0JKHJldmlzaW9uIDEwNjQx
NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5
c3RlbUludGVyZmFjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCB2b2lkIElu
aXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgICAgIElOSVQoQ29weUNGTG9jYWxp
emF0aW9uUHJlZmVycmVkTmFtZSk7CiAgICAgICAgIElOSVQoQ0dDb250ZXh0R2V0U2hvdWxkU21v
b3RoRm9udHMpOwogICAgICAgICBJTklUKENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5z
Zm9ybSk7CisgICAgICAgIElOSVQoQ0dDb250ZXh0UmVzZXRDbGlwKTsKICAgICAgICAgSU5JVChD
b3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpOwogICAgICAgICBJTklUKENvcHlOU1VSTFJlc3BvbnNl
U3RhdHVzTGluZSk7CiAgICAgICAgIElOSVQoQ3JlYXRlQ1RMaW5lV2l0aFVuaUNoYXJQcm92aWRl
cik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDY2MzQpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0w
Mi0wMyAgTWF0dGhldyBEZWxhbmV5ICA8bWRlbGFuZXlAYXBwbGUuY29tPgorCisgICAgICAgIHRv
RGF0YVVSTCgpIHVzZXMgc3RhbGUgZGF0YSBhZnRlciBwdXRJbWFnZURhdGEoKQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU3NjcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YlN5c3RlbUludGVyZmFjZS5tbTogCisKIDIwMTItMDItMDEgIERhbiBCZXJuc3RlaW4gIDxtaXR6
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQvbWFjIHBhcnQgb2YgPHJkYXI6Ly9wcm9ibGVt
LzEwNDQyNjYzPiBQYWdpbmF0ZWQgZGlzcGxheSBkb2VzIG5vdCByZXNwZWN0IHBhZ2UtYnJlYWst
e2JlZm9yZSxhZnRlcn0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlN5c3RlbUludGVyZmFjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0JKHJldmlzaW9uIDEwNjQxNSkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQkod29y
a2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJm
YWNlKHZvaWQpCiAgICAgSU5JVChBZHZhbmNlRGVmYXVsdEJ1dHRvblB1bHNlQW5pbWF0aW9uKTsK
ICAgICBJTklUKENHQ29udGV4dEdldFNob3VsZFNtb290aEZvbnRzKTsKICAgICBJTklUKENHUGF0
dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSk7CisgICAgSU5JVChDR0NvbnRleHRSZXNl
dENsaXApOwogICAgIElOSVQoQ29weUNGTG9jYWxpemF0aW9uUHJlZmVycmVkTmFtZSk7CiAgICAg
SU5JVChDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpOwogICAgIElOSVQoQ29weU5TVVJMUmVzcG9u
c2VTdGF0dXNMaW5lKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125380</attachid>
            <date>2012-02-03 12:11:10 -0800</date>
            <delta_ts>2012-02-03 13:11:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65767-20120203121109.patch</filename>
            <type>text/plain</type>
            <size>28746</size>
            <attacher name="Matthew Delaney">mdelaney7</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjQxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAyLTAzICBNYXR0aGV3
IERlbGFuZXkgIDxtZGVsYW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgdG9EYXRhVVJMKCkgdXNl
cyBzdGFsZSBkYXRhIGFmdGVyIHB1dEltYWdlRGF0YSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTc2NworCisgICAgICAgIFRoaXMgcGF0Y2ggZml4
ZXMgdGhlIGlzc3VlIHdlJ3ZlIGVuY291bnRlcmVkIG9mIGdldHRpbmcgYmFjaworICAgICAgICBz
dGFsZSBjb3BpZXMgb2YgdGhlIENHQ29udGV4dCBvZiBhY2NlbGVyYXRlZCBJbWFnZUJ1ZmZlcnMg
d2hvIGhhdmUgc2VlbgorICAgICAgICBwdXRJbWFnZURhdGEgY2FsbHMgYnV0IGhhdmUgbm90IGJl
ZW4gZHJhd24gaW50byB2aWEgdGhlIENHIEFQSS4KKyAgICAgICAgVGhpcyBpc3N1ZSBpcyBmaXhl
ZCBieSBtb2RpZnlpbmcgdGhlIHdheSB3ZSBpbXBsZW1lbnQgcHV0SW1hZ2VEYXRhCisgICAgICAg
IGluIEltYWdlQnVmZmVyQ0cgdG8gZHJhdyB0aGUgYml0cyB3cmFwcGVkIGluIGEgQ0dJbWFnZSB3
aGlsZSB0aGUgQ0dDb250ZXh0CisgICAgICAgIGlzIGluIGEgc3RhdGUgd2hlcmUgdGhlIGRhdGEg
d2lsbCBlZmZlY3RpdmVseSBiZSBjb3BpZWQgKGFzIGlzIG5lZWRlZCBmb3IKKyAgICAgICAgaW1w
bGVtZW50aW5nIHB1dEltYWdlRGF0YSkgaW5zdGVhZCBvZiBkaXJlY3RseSBtb2RpZnlpbmcgdGhl
IGJpdHMgb2YgdGhlIElPU3VyZmFjZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUT0RPOiBXaWxsIGFkZCBhIHBpeGVsIHRlc3QgZm9yIHRoaXMgKHNp
bmNlIHRoaXMgaXMgb25seSBhIHBhaW50aW5nIGlzc3VlKSBpbiB0aGUgbmV4dCBwYXRjaAorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6IEltcGxlbWVu
dCBuZXcgd2F5IG9mIHB1dHRpbmcgaW1hZ2UgZGF0YS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oOiBNZXJnZWQgdHdvIHByZXZpb3VzbHkgc2VwYXJhdGUgcHV0IGRh
dGEgY2FsbHMKKyAgICAgICAgICAgIGludG8gYSBzaW5nbGUgYW5kIG1vcmUgc2Vuc2libHkgbmFt
ZWQgJ3B1dEJ5dGVBcnJheScsIHNpbmNlIHRoYXQncyB3aGF0IGl0IGRvZXMhCisKKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjogQWRkZWQgbmV3IFdLU0kgY2FsbCBmb3IgdXNlIGluIEltYWdlQnVm
ZmVyQ0cuY3BwCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbToKKwor
ICAgICAgICBVc2luZyBuZXcgbWV0aG9kIG5hbWUuCisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5j
cHA6ICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JN
YXRyaXguY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hh
ZG93LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVj
dC5jcHA6CisKKyAgICAgICAgVXBkYXRlZCBvdGhlciBwb3J0cycgSW1hZ2VCdWZmZXJzIHRvIHVz
ZSBuZXcgbWV0aG9kLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm8uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVy
UXQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lh
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldpbkNF
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4LmNwcDoK
KwogMjAxMi0wMS0zMSAgTWF0dGhldyBEZWxhbmV5ICA8bWRlbGFuZXlAYXBwbGUuY29tPgogCiAg
ICAgICAgIEZhaWxpbmcgMmQuc2hhZG93LmVuYWJsZS5vZmYuMi5odG1sIG9uIExpb24KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMDY0MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMTQ4MSw2ICsxNDgxLDcgQEAgX3N0cmlu
Z0lzQ2FzZUluc2Vuc2l0aXZlRXF1YWxUb1N0cmluZwogX3N1Z2dlc3RlZEZpbGVuYW1lV2l0aE1J
TUVUeXBlCiBfd2tBZHZhbmNlRGVmYXVsdEJ1dHRvblB1bHNlQW5pbWF0aW9uCiBfd2tDR0NvbnRl
eHRHZXRTaG91bGRTbW9vdGhGb250cworX3drQ0dDb250ZXh0UmVzZXRDbGlwCiBfd2tDR1BhdHRl
cm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0KIF93a0NvcHlDRkxvY2FsaXphdGlvblByZWZl
cnJlZE5hbWUKIF93a0NvcHlDRlVSTFJlc3BvbnNlU3VnZ2VzdGVkRmlsZW5hbWUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcAkocmV2aXNpb24gMTA2NDE1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3OCw3
ICsxOTc4LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnB1dEltYWdlRAogICAg
IEludFJlY3Qgc291cmNlUmVjdChkZXN0UmVjdCk7CiAgICAgc291cmNlUmVjdC5tb3ZlKC1kZXN0
T2Zmc2V0KTsKIAotICAgIGJ1ZmZlci0+cHV0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGRhdGEtPmRh
dGEoKS0+ZGF0YSgpLCBJbnRTaXplKGRhdGEtPndpZHRoKCksIGRhdGEtPmhlaWdodCgpKSwgc291
cmNlUmVjdCwgSW50UG9pbnQoZGVzdE9mZnNldCkpOworICAgIGJ1ZmZlci0+cHV0Qnl0ZUFycmF5
KFVubXVsdGlwbGllZCwgZGF0YS0+ZGF0YSgpLT5kYXRhKCksIEludFNpemUoZGF0YS0+d2lkdGgo
KSwgZGF0YS0+aGVpZ2h0KCkpLCBzb3VyY2VSZWN0LCBJbnRQb2ludChkZXN0T2Zmc2V0KSk7CiAg
ICAgZGlkRHJhdyhkZXN0UmVjdCwgQ2FudmFzRGlkRHJhd0FwcGx5Tm9uZSk7IC8vIGlnbm9yZSB0
cmFuc2Zvcm0sIHNoYWRvdyBhbmQgY2xpcAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCShyZXZpc2lvbiAxMDY0MTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgaW5saW5lIHZvaWQgSW1hZ2VCdWZmZXI6OmdlbmVy
aWNDb252ZXJ0VAogICAgICAgICBkb3VibGUgbHVtYSA9IChyICogMC4yMTI1ICsgZyAqIDAuNzE1
NCArIGIgKiAwLjA3MjEpICogKChkb3VibGUpYSAvIDI1NS4wKTsKICAgICAgICAgc3JjUGl4ZWxB
cnJheS0+c2V0KHBpeGVsT2Zmc2V0ICsgMywgbHVtYSk7CiAgICAgfQotICAgIHB1dFVubXVsdGlw
bGllZEltYWdlRGF0YShzcmNQaXhlbEFycmF5LmdldCgpLCBsdW1pbmFuY2VSZWN0LnNpemUoKSwg
bHVtaW5hbmNlUmVjdCwgSW50UG9pbnQoKSk7CisgICAgcHV0Qnl0ZUFycmF5KFVubXVsdGlwbGll
ZCwgc3JjUGl4ZWxBcnJheS5nZXQoKSwgbHVtaW5hbmNlUmVjdC5zaXplKCksIGx1bWluYW5jZVJl
Y3QsIEludFBvaW50KCkpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpjb252ZXJ0VG9MdW1pbmFu
Y2VNYXNrKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuaAkocmV2aXNpb24gMTA2NDE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsOCArOTYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBnZXRVbm11
bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYpIGNvbnN0OwogICAgICAgICBQYXNzUmVm
UHRyPEJ5dGVBcnJheT4gZ2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0Jikg
Y29uc3Q7CiAKLSAgICAgICAgdm9pZCBwdXRVbm11bHRpcGxpZWRJbWFnZURhdGEoQnl0ZUFycmF5
KiwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCk7Ci0gICAgICAgIHZvaWQgcHV0UHJlbXVsdGlwbGll
ZEltYWdlRGF0YShCeXRlQXJyYXkqLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KTsKKyAgICAgICAg
dm9pZCBwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgQnl0ZUFycmF5KiwgY29uc3Qg
SW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UG9pbnQmIGRlc3RQb2ludCk7CiAgICAgICAgIAogICAgICAgICB2b2lkIGNvbnZlcnRUb0x1bWlu
YW5jZU1hc2soKTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TaGFkb3dCbHVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAkocmV2aXNpb24gMTA2NDE1KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTgyOCw3ICs4MjgsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmJsdXJTaGFkb3dCdWZmZXIoY29uc3Qg
CiAgICAgSW50UmVjdCBibHVyUmVjdChJbnRQb2ludCgpLCB0ZW1wbGF0ZVNpemUpOwogICAgIFJl
ZlB0cjxCeXRlQXJyYXk+IGxheWVyRGF0YSA9IG1fbGF5ZXJJbWFnZS0+Z2V0VW5tdWx0aXBsaWVk
SW1hZ2VEYXRhKGJsdXJSZWN0KTsKICAgICBibHVyTGF5ZXJJbWFnZShsYXllckRhdGEtPmRhdGEo
KSwgYmx1clJlY3Quc2l6ZSgpLCBibHVyUmVjdC53aWR0aCgpICogNCk7Ci0gICAgbV9sYXllcklt
YWdlLT5wdXRVbm11bHRpcGxpZWRJbWFnZURhdGEobGF5ZXJEYXRhLmdldCgpLCBibHVyUmVjdC5z
aXplKCksIGJsdXJSZWN0LCBJbnRQb2ludCgpKTsKKyAgICBtX2xheWVySW1hZ2UtPnB1dEJ5dGVB
cnJheShVbm11bHRpcGxpZWQsIGxheWVyRGF0YS5nZXQoKSwgYmx1clJlY3Quc2l6ZSgpLCBibHVy
UmVjdCwgSW50UG9pbnQoKSk7CiB9CiAKIHZvaWQgU2hhZG93Qmx1cjo6Ymx1ckFuZENvbG9yU2hh
ZG93QnVmZmVyKGNvbnN0IEludFNpemUmIHRlbXBsYXRlU2l6ZSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm8uY3BwCShyZXZpc2lvbiAxMDY0MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA0
LDEyICsyMDQsMTEgQEAgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRQcgog
ICAgIHJldHVybiBnZXRJbWFnZURhdGE8UHJlbXVsdGlwbGllZD4ocmVjdCwgbV9kYXRhLCBtX3Np
emUpOwogfQogCi10ZW1wbGF0ZSA8TXVsdGlwbHkgbXVsdGlwbGllZD4KLXZvaWQgcHV0SW1hZ2VE
YXRhKEJ5dGVBcnJheSomIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgSW1hZ2VCdWZm
ZXJEYXRhJiBkYXRhLCBjb25zdCBJbnRTaXplJiBzaXplKQordm9pZCBJbWFnZUJ1ZmZlcjo6cHV0
Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJ
bnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQ
b2ludCYgZGVzdFBvaW50KQogewotICAgIEFTU0VSVChjYWlyb19zdXJmYWNlX2dldF90eXBlKGRh
dGEubV9zdXJmYWNlKSA9PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpOworICAgIEFTU0VSVChj
YWlyb19zdXJmYWNlX2dldF90eXBlKG1fZGF0YS5tX3N1cmZhY2UpID09IENBSVJPX1NVUkZBQ0Vf
VFlQRV9JTUFHRSk7CiAKLSAgICB1bnNpZ25lZCBjaGFyKiBkYXRhRHN0ID0gY2Fpcm9faW1hZ2Vf
c3VyZmFjZV9nZXRfZGF0YShkYXRhLm1fc3VyZmFjZSk7CisgICAgdW5zaWduZWQgY2hhciogZGF0
YURzdCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9kYXRhLm1fc3VyZmFjZSk7CiAK
ICAgICBBU1NFUlQoc291cmNlUmVjdC53aWR0aCgpID4gMCk7CiAgICAgQVNTRVJUKHNvdXJjZVJl
Y3QuaGVpZ2h0KCkgPiAwKTsKQEAgLTIxNywyOCArMjE2LDI4IEBAIHZvaWQgcHV0SW1hZ2VEYXRh
KEJ5dGVBcnJheSomIHNvdXJjZSwgY28KICAgICBpbnQgb3JpZ2lueCA9IHNvdXJjZVJlY3QueCgp
OwogICAgIGludCBkZXN0eCA9IGRlc3RQb2ludC54KCkgKyBzb3VyY2VSZWN0LngoKTsKICAgICBB
U1NFUlQoZGVzdHggPj0gMCk7Ci0gICAgQVNTRVJUKGRlc3R4IDwgc2l6ZS53aWR0aCgpKTsKKyAg
ICBBU1NFUlQoZGVzdHggPCBtX3NpemUud2lkdGgoKSk7CiAgICAgQVNTRVJUKG9yaWdpbnggPj0g
MCk7CiAgICAgQVNTRVJUKG9yaWdpbnggPD0gc291cmNlUmVjdC5tYXhYKCkpOwogCiAgICAgaW50
IGVuZHggPSBkZXN0UG9pbnQueCgpICsgc291cmNlUmVjdC5tYXhYKCk7Ci0gICAgQVNTRVJUKGVu
ZHggPD0gc2l6ZS53aWR0aCgpKTsKKyAgICBBU1NFUlQoZW5keCA8PSBtX3NpemUud2lkdGgoKSk7
CiAKICAgICBpbnQgbnVtQ29sdW1ucyA9IGVuZHggLSBkZXN0eDsKIAogICAgIGludCBvcmlnaW55
ID0gc291cmNlUmVjdC55KCk7CiAgICAgaW50IGRlc3R5ID0gZGVzdFBvaW50LnkoKSArIHNvdXJj
ZVJlY3QueSgpOwogICAgIEFTU0VSVChkZXN0eSA+PSAwKTsKLSAgICBBU1NFUlQoZGVzdHkgPCBz
aXplLmhlaWdodCgpKTsKKyAgICBBU1NFUlQoZGVzdHkgPCBtX3NpemUuaGVpZ2h0KCkpOwogICAg
IEFTU0VSVChvcmlnaW55ID49IDApOwogICAgIEFTU0VSVChvcmlnaW55IDw9IHNvdXJjZVJlY3Qu
bWF4WSgpKTsKIAogICAgIGludCBlbmR5ID0gZGVzdFBvaW50LnkoKSArIHNvdXJjZVJlY3QubWF4
WSgpOwotICAgIEFTU0VSVChlbmR5IDw9IHNpemUuaGVpZ2h0KCkpOworICAgIEFTU0VSVChlbmR5
IDw9IG1fc2l6ZS5oZWlnaHQoKSk7CiAgICAgaW50IG51bVJvd3MgPSBlbmR5IC0gZGVzdHk7CiAK
ICAgICB1bnNpZ25lZCBzcmNCeXRlc1BlclJvdyA9IDQgKiBzb3VyY2VTaXplLndpZHRoKCk7Ci0g
ICAgaW50IHN0cmlkZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShkYXRhLm1fc3Vy
ZmFjZSk7CisgICAgaW50IHN0cmlkZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZSht
X2RhdGEubV9zdXJmYWNlKTsKIAogICAgIHVuc2lnbmVkIGNoYXIqIHNyY1Jvd3MgPSBzb3VyY2Ut
PmRhdGEoKSArIG9yaWdpbnkgKiBzcmNCeXRlc1BlclJvdyArIG9yaWdpbnggKiA0OwogICAgIGZv
ciAoaW50IHkgPSAwOyB5IDwgbnVtUm93czsgKyt5KSB7CkBAIC0yNTcsMjEgKzI1NiwxMSBAQCB2
b2lkIHB1dEltYWdlRGF0YShCeXRlQXJyYXkqJiBzb3VyY2UsIGNvCiAgICAgICAgIH0KICAgICAg
ICAgc3JjUm93cyArPSBzcmNCeXRlc1BlclJvdzsKICAgICB9Ci0gICAgY2Fpcm9fc3VyZmFjZV9t
YXJrX2RpcnR5X3JlY3RhbmdsZSAoZGF0YS5tX3N1cmZhY2UsCisgICAgY2Fpcm9fc3VyZmFjZV9t
YXJrX2RpcnR5X3JlY3RhbmdsZShtX2RhdGEubV9zdXJmYWNlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlc3R4LCBkZXN0eSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudW1Db2x1bW5zLCBudW1Sb3dzKTsKIH0KIAotdm9pZCBJbWFn
ZUJ1ZmZlcjo6cHV0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKEJ5dGVBcnJheSogc291cmNlLCBjb25z
dCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRQb2ludCYgZGVzdFBvaW50KQotewotICAgIHB1dEltYWdlRGF0YTxVbm11bHRpcGxpZWQ+KHNv
dXJjZSwgc291cmNlU2l6ZSwgc291cmNlUmVjdCwgZGVzdFBvaW50LCBtX2RhdGEsIG1fc2l6ZSk7
Ci19Ci0KLXZvaWQgSW1hZ2VCdWZmZXI6OnB1dFByZW11bHRpcGxpZWRJbWFnZURhdGEoQnl0ZUFy
cmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpCi17Ci0gICAgcHV0SW1hZ2VEYXRh
PFByZW11bHRpcGxpZWQ+KHNvdXJjZSwgc291cmNlU2l6ZSwgc291cmNlUmVjdCwgZGVzdFBvaW50
LCBtX2RhdGEsIG1fc2l6ZSk7Ci19Ci0KICNpZiAhUExBVEZPUk0oR1RLKQogc3RhdGljIGNhaXJv
X3N0YXR1c190IHdyaXRlRnVuY3Rpb24odm9pZCogY2xvc3VyZSwgY29uc3QgdW5zaWduZWQgY2hh
ciogZGF0YSwgdW5zaWduZWQgaW50IGxlbmd0aCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCShyZXZpc2lv
biAxMDY0MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA3LDI2ICszMDcsMzggQEAgUGFzc1JlZlB0
cjxCeXRlQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRQcgogICAgIHJldHVybiBtX2RhdGEuZ2V0RGF0
YShyZWN0LCBtX3NpemUsIG1fY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSwgZmFsc2Up
OwogfQogCi12b2lkIEltYWdlQnVmZmVyOjpwdXRVbm11bHRpcGxpZWRJbWFnZURhdGEoQnl0ZUFy
cmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpCit2b2lkIEltYWdlQnVmZmVyOjpw
dXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0
IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFBvaW50JiBkZXN0UG9pbnQpCiB7CiAgICAgaWYgKG1fY29udGV4dC0+aXNBY2NlbGVyYXRlZENv
bnRleHQoKSkgewotICAgICAgICBDR0NvbnRleHRGbHVzaChjb250ZXh0KCktPnBsYXRmb3JtQ29u
dGV4dCgpKTsKLSNpZiBkZWZpbmVkKEJVSUxESU5HX09OX0xJT04pCi0gICAgICAgIG1fZGF0YS5t
X2xhc3RGbHVzaFRpbWUgPSBjdXJyZW50VGltZU1TKCk7Ci0jZW5kaWYKLSAgICB9Ci0gICAgbV9k
YXRhLnB1dERhdGEoc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBkZXN0UG9pbnQsIG1f
c2l6ZSwgbV9jb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCB0cnVlKTsKLX0KKyAgICAg
ICAgSW50U2l6ZSBzb3VyY2VDb3B5U2l6ZShzb3VyY2VSZWN0LndpZHRoKCksIHNvdXJjZVJlY3Qu
aGVpZ2h0KCkpOworICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IHNvdXJjZUNvcHkgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKHNvdXJjZUNvcHlTaXplLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBVbmFj
Y2VsZXJhdGVkKTsKKyAgICAgICAgaWYgKCFzb3VyY2VDb3B5KQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGlmIChtdWx0aXBsaWVkID09IFVubXVsdGlwbGllZCkKKyAgICAgICAgICAg
IHNvdXJjZUNvcHktPm1fZGF0YS5wdXREYXRhKHNvdXJjZSwgc291cmNlU2l6ZSwgc291cmNlUmVj
dCwgSW50UG9pbnQoLXNvdXJjZVJlY3QueCgpLCAtc291cmNlUmVjdC55KCkpLCBzb3VyY2VDb3B5
LT5zaXplKCksIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc291cmNl
Q29weS0+bV9kYXRhLnB1dERhdGEoc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBJbnRQ
b2ludCgtc291cmNlUmVjdC54KCksIC1zb3VyY2VSZWN0LnkoKSksIHNvdXJjZUNvcHktPnNpemUo
KSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgCisgICAgICAgIC8vIFNldCB1cCBjb250ZXh0IGZv
ciB1c2luZyBkcmF3SW1hZ2UgYXMgYSBkaXJlY3QgYml0IGNvcHkKKyAgICAgICAgQ0dDb250ZXh0
UmVmIGRlc3RDb250ZXh0ID0gY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICAgICAg
Q0dDb250ZXh0U2F2ZUdTdGF0ZShkZXN0Q29udGV4dCk7CisgICAgICAgIENHQ29udGV4dENvbmNh
dENUTShkZXN0Q29udGV4dCwgQWZmaW5lVHJhbnNmb3JtKENHQ29udGV4dEdldENUTShkZXN0Q29u
dGV4dCkpLmludmVyc2UoKSk7CisgICAgICAgIHdrQ0dDb250ZXh0UmVzZXRDbGlwKGRlc3RDb250
ZXh0KTsKKyAgICAgICAgQ0dDb250ZXh0U2V0SW50ZXJwb2xhdGlvblF1YWxpdHkoZGVzdENvbnRl
eHQsIGtDR0ludGVycG9sYXRpb25Ob25lKTsKKyAgICAgICAgQ0dDb250ZXh0U2V0QWxwaGEoZGVz
dENvbnRleHQsIDEuMCk7CisgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShkZXN0Q29udGV4
dCwga0NHQmxlbmRNb2RlQ29weSk7CisgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xv
cihkZXN0Q29udGV4dCwgQ0dTaXplWmVybywgMCwgMCk7CisKKyAgICAgICAgLy8gRHJhdyB0aGUg
aW1hZ2UgaW4gQ0cgY29vcmRpbmF0ZSBzcGFjZQorICAgICAgICBJbnRQb2ludCBkZXN0UG9pbnRJ
bkNHQ29vcmRzKGRlc3RQb2ludC54KCkgKyBzb3VyY2VSZWN0LngoKSwgbV9zaXplLmhlaWdodCgp
IC0gKGRlc3RQb2ludC55KCkrc291cmNlUmVjdC55KCkpIC0gc291cmNlUmVjdC5oZWlnaHQoKSk7
CisgICAgICAgIEludFJlY3QgZGVzdFJlY3RJbkNHQ29vcmRzKGRlc3RQb2ludEluQ0dDb29yZHMs
IHNvdXJjZUNvcHlTaXplKTsKKyAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHNvdXJjZUNv
cHlJbWFnZShBZG9wdENGLCBzb3VyY2VDb3B5LT5jb3B5TmF0aXZlSW1hZ2UoKSk7CisgICAgICAg
IENHQ29udGV4dERyYXdJbWFnZShkZXN0Q29udGV4dCwgZGVzdFJlY3RJbkNHQ29vcmRzLCBzb3Vy
Y2VDb3B5SW1hZ2UuZ2V0KCkpOwogCi12b2lkIEltYWdlQnVmZmVyOjpwdXRQcmVtdWx0aXBsaWVk
SW1hZ2VEYXRhKEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQotewot
ICAgIGlmIChtX2NvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKLSAgICAgICAgQ0dD
b250ZXh0Rmx1c2goY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKSk7Ci0jaWYgZGVmaW5lZChC
VUlMRElOR19PTl9MSU9OKQotICAgICAgICBtX2RhdGEubV9sYXN0Rmx1c2hUaW1lID0gY3VycmVu
dFRpbWVNUygpOwotI2VuZGlmCi0gICAgfQotICAgIG1fZGF0YS5wdXREYXRhKHNvdXJjZSwgc291
cmNlU2l6ZSwgc291cmNlUmVjdCwgZGVzdFBvaW50LCBtX3NpemUsIG1fY29udGV4dC0+aXNBY2Nl
bGVyYXRlZENvbnRleHQoKSwgZmFsc2UpOworICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRl
KGRlc3RDb250ZXh0KTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9kYXRhLnB1dERhdGEoc291cmNl
LCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBkZXN0UG9pbnQsIG1fc2l6ZSwgbV9jb250ZXh0LT5p
c0FjY2VsZXJhdGVkQ29udGV4dCgpLCBtdWx0aXBsaWVkID09IFVubXVsdGlwbGllZCk7CiB9CiAK
IHN0YXRpYyBpbmxpbmUgQ0ZTdHJpbmdSZWYganBlZ1VUSSgpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJp
eC5jcHAJKHJldmlzaW9uIDEwNjQxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw3ICsx
ODcsNyBAQCB2b2lkIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyCiAgICAgICAg
IGJyZWFrOwogICAgIH0KIAotICAgIHJlc3VsdEltYWdlLT5wdXRVbm11bHRpcGxpZWRJbWFnZURh
dGEocGl4ZWxBcnJheS5nZXQoKSwgaW1hZ2VSZWN0LnNpemUoKSwgaW1hZ2VSZWN0LCBJbnRQb2lu
dCgpKTsKKyAgICByZXN1bHRJbWFnZS0+cHV0Qnl0ZUFycmF5KFVubXVsdGlwbGllZCwgcGl4ZWxB
cnJheS5nZXQoKSwgaW1hZ2VSZWN0LnNpemUoKSwgaW1hZ2VSZWN0LCBJbnRQb2ludCgpKTsKIH0K
IAogdm9pZCBGRUNvbG9yTWF0cml4OjpkdW1wKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAJKHJl
dmlzaW9uIDEwNjQxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVEcm9wU2hhZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw3IEBAIHZv
aWQgRkVEcm9wU2hhZG93OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUKIAogICAgIGNvbnRleHRTaGFk
b3cuYmx1ckxheWVySW1hZ2Uoc3JjUGl4ZWxBcnJheS0+ZGF0YSgpLCBzaGFkb3dBcmVhLnNpemUo
KSwgNCAqIHNoYWRvd0FyZWEuc2l6ZSgpLndpZHRoKCkpOwogCi0gICAgcmVzdWx0SW1hZ2UtPnB1
dFByZW11bHRpcGxpZWRJbWFnZURhdGEoc3JjUGl4ZWxBcnJheS5nZXQoKSwgc2hhZG93QXJlYS5z
aXplKCksIHNoYWRvd0FyZWEsIEludFBvaW50KCkpOworICAgIHJlc3VsdEltYWdlLT5wdXRCeXRl
QXJyYXkoUHJlbXVsdGlwbGllZCwgc3JjUGl4ZWxBcnJheS5nZXQoKSwgc2hhZG93QXJlYS5zaXpl
KCksIHNoYWRvd0FyZWEsIEludFBvaW50KCkpOwogCiAgICAgcmVzdWx0Q29udGV4dC0+c2V0Q29t
cG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZUluKTsKICAgICByZXN1bHRDb250ZXh0LT5m
aWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUo
KSksIG1fc2hhZG93Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZm
ZWN0LmNwcAkocmV2aXNpb24gMTA2NDE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsOSAr
MTMwLDkgQEAgSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdDo6YXNJbWFnZUJ1ZmZlcgogICAgIG1f
aW1hZ2VCdWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKG1fYWJzb2x1dGVQYWludFJl
Y3Quc2l6ZSgpLCBDb2xvclNwYWNlTGluZWFyUkdCLCBtX2ZpbHRlci0+cmVuZGVyaW5nTW9kZSgp
KTsKICAgICBJbnRSZWN0IGRlc3RpbmF0aW9uUmVjdChJbnRQb2ludCgpLCBtX2Fic29sdXRlUGFp
bnRSZWN0LnNpemUoKSk7CiAgICAgaWYgKG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KQotICAg
ICAgICBtX2ltYWdlQnVmZmVyUmVzdWx0LT5wdXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKG1fcHJl
bXVsdGlwbGllZEltYWdlUmVzdWx0LmdldCgpLCBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpLCBkZXN0
aW5hdGlvblJlY3QsIEludFBvaW50KCkpOworICAgICAgICBtX2ltYWdlQnVmZmVyUmVzdWx0LT5w
dXRCeXRlQXJyYXkoUHJlbXVsdGlwbGllZCwgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQuZ2V0
KCksIGRlc3RpbmF0aW9uUmVjdC5zaXplKCksIGRlc3RpbmF0aW9uUmVjdCwgSW50UG9pbnQoKSk7
CiAgICAgZWxzZQotICAgICAgICBtX2ltYWdlQnVmZmVyUmVzdWx0LT5wdXRVbm11bHRpcGxpZWRJ
bWFnZURhdGEobV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdC5nZXQoKSwgZGVzdGluYXRpb25SZWN0
LnNpemUoKSwgZGVzdGluYXRpb25SZWN0LCBJbnRQb2ludCgpKTsKKyAgICAgICAgbV9pbWFnZUJ1
ZmZlclJlc3VsdC0+cHV0Qnl0ZUFycmF5KFVubXVsdGlwbGllZCwgbV91bm11bHRpcGxpZWRJbWFn
ZVJlc3VsdC5nZXQoKSwgZGVzdGluYXRpb25SZWN0LnNpemUoKSwgZGVzdGluYXRpb25SZWN0LCBJ
bnRQb2ludCgpKTsKICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlclJlc3VsdC5nZXQoKTsKIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1h
Z2VCdWZmZXJRdC5jcHAJKHJldmlzaW9uIDEwNjQxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTks
OCArMjk5LDcgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgcHJlbXVsdGlwbHlBQgogICAg
IHJldHVybiB4OwogfQogCi10ZW1wbGF0ZSA8TXVsdGlwbHkgbXVsdGlwbGllZD4KLXZvaWQgcHV0
SW1hZ2VEYXRhKEJ5dGVBcnJheSomIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgSW1h
Z2VCdWZmZXJEYXRhJiBkYXRhLCBjb25zdCBJbnRTaXplJiBzaXplKQordm9pZCBJbWFnZUJ1ZmZl
cjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIEJ5dGVBcnJheSogc291cmNlLCBj
b25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRQb2ludCYgZGVzdFBvaW50KQogewogICAgIEFTU0VSVChzb3VyY2VSZWN0LndpZHRoKCkg
PiAwKTsKICAgICBBU1NFUlQoc291cmNlUmVjdC5oZWlnaHQoKSA+IDApOwpAQCAtMzA4LDI0ICsz
MDcsMjQgQEAgdm9pZCBwdXRJbWFnZURhdGEoQnl0ZUFycmF5KiYgc291cmNlLCBjbwogICAgIGlu
dCBvcmlnaW54ID0gc291cmNlUmVjdC54KCk7CiAgICAgaW50IGRlc3R4ID0gZGVzdFBvaW50Lngo
KSArIHNvdXJjZVJlY3QueCgpOwogICAgIEFTU0VSVChkZXN0eCA+PSAwKTsKLSAgICBBU1NFUlQo
ZGVzdHggPCBzaXplLndpZHRoKCkpOworICAgIEFTU0VSVChkZXN0eCA8IG1fc2l6ZS53aWR0aCgp
KTsKICAgICBBU1NFUlQob3JpZ2lueCA+PSAwKTsKICAgICBBU1NFUlQob3JpZ2lueCA8PSBzb3Vy
Y2VSZWN0Lm1heFgoKSk7CiAKICAgICBpbnQgZW5keCA9IGRlc3RQb2ludC54KCkgKyBzb3VyY2VS
ZWN0Lm1heFgoKTsKLSAgICBBU1NFUlQoZW5keCA8PSBzaXplLndpZHRoKCkpOworICAgIEFTU0VS
VChlbmR4IDw9IG1fc2l6ZS53aWR0aCgpKTsKIAogICAgIGludCBudW1Db2x1bW5zID0gZW5keCAt
IGRlc3R4OwogCiAgICAgaW50IG9yaWdpbnkgPSBzb3VyY2VSZWN0LnkoKTsKICAgICBpbnQgZGVz
dHkgPSBkZXN0UG9pbnQueSgpICsgc291cmNlUmVjdC55KCk7CiAgICAgQVNTRVJUKGRlc3R5ID49
IDApOwotICAgIEFTU0VSVChkZXN0eSA8IHNpemUuaGVpZ2h0KCkpOworICAgIEFTU0VSVChkZXN0
eSA8IG1fc2l6ZS5oZWlnaHQoKSk7CiAgICAgQVNTRVJUKG9yaWdpbnkgPj0gMCk7CiAgICAgQVNT
RVJUKG9yaWdpbnkgPD0gc291cmNlUmVjdC5tYXhZKCkpOwogCiAgICAgaW50IGVuZHkgPSBkZXN0
UG9pbnQueSgpICsgc291cmNlUmVjdC5tYXhZKCk7Ci0gICAgQVNTRVJUKGVuZHkgPD0gc2l6ZS5o
ZWlnaHQoKSk7CisgICAgQVNTRVJUKGVuZHkgPD0gbV9zaXplLmhlaWdodCgpKTsKICAgICBpbnQg
bnVtUm93cyA9IGVuZHkgLSBkZXN0eTsKIAogICAgIHVuc2lnbmVkIHNyY0J5dGVzUGVyUm93ID0g
NCAqIHNvdXJjZVNpemUud2lkdGgoKTsKQEAgLTM1OSwzNSArMzU4LDI1IEBAIHZvaWQgcHV0SW1h
Z2VEYXRhKEJ5dGVBcnJheSomIHNvdXJjZSwgY28KICAgICAgICAgfQogICAgIH0KIAotICAgIGJv
b2wgaXNQYWludGluZyA9IGRhdGEubV9wYWludGVyLT5pc0FjdGl2ZSgpOworICAgIGJvb2wgaXNQ
YWludGluZyA9IG1fZGF0YS5tX3BhaW50ZXItPmlzQWN0aXZlKCk7CiAgICAgaWYgKCFpc1BhaW50
aW5nKQotICAgICAgICBkYXRhLm1fcGFpbnRlci0+YmVnaW4oJmRhdGEubV9waXhtYXApOworICAg
ICAgICBtX2RhdGEubV9wYWludGVyLT5iZWdpbigmbV9kYXRhLm1fcGl4bWFwKTsKICAgICBlbHNl
IHsKLSAgICAgICAgZGF0YS5tX3BhaW50ZXItPnNhdmUoKTsKKyAgICAgICAgbV9kYXRhLm1fcGFp
bnRlci0+c2F2ZSgpOwogCiAgICAgICAgIC8vIHB1dEltYWdlRGF0YSgpIHNob3VsZCBiZSB1bmFm
ZmVjdGVkIGJ5IHBhaW50ZXIgc3RhdGUKLSAgICAgICAgZGF0YS5tX3BhaW50ZXItPnJlc2V0VHJh
bnNmb3JtKCk7Ci0gICAgICAgIGRhdGEubV9wYWludGVyLT5zZXRPcGFjaXR5KDEuMCk7Ci0gICAg
ICAgIGRhdGEubV9wYWludGVyLT5zZXRDbGlwcGluZyhmYWxzZSk7CisgICAgICAgIG1fZGF0YS5t
X3BhaW50ZXItPnJlc2V0VHJhbnNmb3JtKCk7CisgICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPnNl
dE9wYWNpdHkoMS4wKTsKKyAgICAgICAgbV9kYXRhLm1fcGFpbnRlci0+c2V0Q2xpcHBpbmcoZmFs
c2UpOwogICAgIH0KIAotICAgIGRhdGEubV9wYWludGVyLT5zZXRDb21wb3NpdGlvbk1vZGUoUVBh
aW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9Tb3VyY2UpOwotICAgIGRhdGEubV9wYWludGVyLT5kcmF3
SW1hZ2UoZGVzdHgsIGRlc3R5LCBpbWFnZSk7CisgICAgbV9kYXRhLm1fcGFpbnRlci0+c2V0Q29t
cG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfU291cmNlKTsKKyAgICBtX2Rh
dGEubV9wYWludGVyLT5kcmF3SW1hZ2UoZGVzdHgsIGRlc3R5LCBpbWFnZSk7CiAKICAgICBpZiAo
IWlzUGFpbnRpbmcpCi0gICAgICAgIGRhdGEubV9wYWludGVyLT5lbmQoKTsKKyAgICAgICAgbV9k
YXRhLm1fcGFpbnRlci0+ZW5kKCk7CiAgICAgZWxzZQotICAgICAgICBkYXRhLm1fcGFpbnRlci0+
cmVzdG9yZSgpOwotfQotCi12b2lkIEltYWdlQnVmZmVyOjpwdXRVbm11bHRpcGxpZWRJbWFnZURh
dGEoQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpCi17Ci0gICAgcHV0
SW1hZ2VEYXRhPFVubXVsdGlwbGllZD4oc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBk
ZXN0UG9pbnQsIG1fZGF0YSwgbV9zaXplKTsKLX0KLQotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0UHJl
bXVsdGlwbGllZEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291
cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQ
b2ludCkKLXsKLSAgICBwdXRJbWFnZURhdGE8UHJlbXVsdGlwbGllZD4oc291cmNlLCBzb3VyY2VT
aXplLCBzb3VyY2VSZWN0LCBkZXN0UG9pbnQsIG1fZGF0YSwgbV9zaXplKTsKKyAgICAgICAgbV9k
YXRhLm1fcGFpbnRlci0+cmVzdG9yZSgpOwogfQogCiAvLyBXZSBnZXQgYSBtaW1lVHlwZSBoZXJl
IGJ1dCBRSW1hZ2VXcml0ZXIgZG9lcyBub3Qgc3VwcG9ydCBtaW1ldHlwZXMgYnV0CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFn
ZUJ1ZmZlclNraWEuY3BwCShyZXZpc2lvbiAxMDY0MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5OCwzNCArMjk4LDMzIEBAIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0
UHIKICAgICByZXR1cm4gZ2V0SW1hZ2VEYXRhPFByZW11bHRpcGxpZWQ+KHJlY3QsIGNvbnRleHQo
KS0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpLCBtX3NpemUpOwogfQogCi10ZW1wbGF0ZSA8
TXVsdGlwbHkgbXVsdGlwbGllZD4KLXZvaWQgcHV0SW1hZ2VEYXRhKEJ5dGVBcnJheSomIHNvdXJj
ZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwKLSAgICAgICAgICAgICAgICAgIFNrQ2FudmFzKiBj
YW52YXMsIGNvbnN0IEludFNpemUmIHNpemUpCit2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJy
YXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUm
IHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBk
ZXN0UG9pbnQpCiB7CisgICAgU2tDYW52YXMqIGNhbnZhcyA9IGNvbnRleHQoKS0+cGxhdGZvcm1D
b250ZXh0KCktPmNhbnZhcygpOwogICAgIEFTU0VSVChzb3VyY2VSZWN0LndpZHRoKCkgPiAwKTsK
ICAgICBBU1NFUlQoc291cmNlUmVjdC5oZWlnaHQoKSA+IDApOwogCiAgICAgaW50IG9yaWdpblgg
PSBzb3VyY2VSZWN0LngoKTsKICAgICBpbnQgZGVzdFggPSBkZXN0UG9pbnQueCgpICsgc291cmNl
UmVjdC54KCk7CiAgICAgQVNTRVJUKGRlc3RYID49IDApOwotICAgIEFTU0VSVChkZXN0WCA8IHNp
emUud2lkdGgoKSk7CisgICAgQVNTRVJUKGRlc3RYIDwgbV9zaXplLndpZHRoKCkpOwogICAgIEFT
U0VSVChvcmlnaW5YID49IDApOwogICAgIEFTU0VSVChvcmlnaW5YIDwgc291cmNlUmVjdC5tYXhY
KCkpOwogCiAgICAgaW50IGVuZFggPSBkZXN0UG9pbnQueCgpICsgc291cmNlUmVjdC5tYXhYKCk7
Ci0gICAgQVNTRVJUKGVuZFggPD0gc2l6ZS53aWR0aCgpKTsKKyAgICBBU1NFUlQoZW5kWCA8PSBt
X3NpemUud2lkdGgoKSk7CiAKICAgICBpbnQgbnVtQ29sdW1ucyA9IGVuZFggLSBkZXN0WDsKIAog
ICAgIGludCBvcmlnaW5ZID0gc291cmNlUmVjdC55KCk7CiAgICAgaW50IGRlc3RZID0gZGVzdFBv
aW50LnkoKSArIHNvdXJjZVJlY3QueSgpOwogICAgIEFTU0VSVChkZXN0WSA+PSAwKTsKLSAgICBB
U1NFUlQoZGVzdFkgPCBzaXplLmhlaWdodCgpKTsKKyAgICBBU1NFUlQoZGVzdFkgPCBtX3NpemUu
aGVpZ2h0KCkpOwogICAgIEFTU0VSVChvcmlnaW5ZID49IDApOwogICAgIEFTU0VSVChvcmlnaW5Z
IDwgc291cmNlUmVjdC5tYXhZKCkpOwogCiAgICAgaW50IGVuZFkgPSBkZXN0UG9pbnQueSgpICsg
c291cmNlUmVjdC5tYXhZKCk7Ci0gICAgQVNTRVJUKGVuZFkgPD0gc2l6ZS5oZWlnaHQoKSk7Cisg
ICAgQVNTRVJUKGVuZFkgPD0gbV9zaXplLmhlaWdodCgpKTsKICAgICBpbnQgbnVtUm93cyA9IGVu
ZFkgLSBkZXN0WTsKIAogICAgIHVuc2lnbmVkIHNyY0J5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVNp
emUud2lkdGgoKTsKQEAgLTM0MiwxNiArMzQxLDYgQEAgdm9pZCBwdXRJbWFnZURhdGEoQnl0ZUFy
cmF5KiYgc291cmNlLCBjbwogICAgIGNhbnZhcy0+d3JpdGVQaXhlbHMoc3JjQml0bWFwLCBkZXN0
WCwgZGVzdFksIGNvbmZpZzg4ODgpOwogfQogCi12b2lkIEltYWdlQnVmZmVyOjpwdXRVbm11bHRp
cGxpZWRJbWFnZURhdGEoQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNp
emUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQp
Ci17Ci0gICAgcHV0SW1hZ2VEYXRhPFVubXVsdGlwbGllZD4oc291cmNlLCBzb3VyY2VTaXplLCBz
b3VyY2VSZWN0LCBkZXN0UG9pbnQsIGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZh
cygpLCBtX3NpemUpOwotfQotCi12b2lkIEltYWdlQnVmZmVyOjpwdXRQcmVtdWx0aXBsaWVkSW1h
Z2VEYXRhKEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQotewotICAg
IHB1dEltYWdlRGF0YTxQcmVtdWx0aXBsaWVkPihzb3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJl
Y3QsIGRlc3RQb2ludCwgY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCksIG1f
c2l6ZSk7Ci19Ci0KIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogc3RhdGljIGJvb2wgZW5jb2RlSW1h
Z2UoVCYgc291cmNlLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBkb3VibGUqIHF1YWxp
dHksIFZlY3RvcjxjaGFyPiogb3V0cHV0KQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5DRS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5DRS5jcHAJ
KHJldmlzaW9uIDEwNjQxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bmNlL0ltYWdlQnVmZmVyV2luQ0UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODMsOSArMTgzLDkg
QEAgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRQcgogICAgIHJldHVybiBn
ZXRJbWFnZURhdGE8dHJ1ZT4ocmVjdCwgbV9kYXRhLm1fYml0bWFwLmdldCgpKTsKIH0KIAotdGVt
cGxhdGUgPGJvb2wgcHJlbXVsdGlwbGllZD4KLXN0YXRpYyB2b2lkIHB1dEltYWdlRGF0YShCeXRl
QXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgU2hhcmVkQml0bWFwKiBiaXRt
YXApCit2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwg
Qnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpCiB7CisgICAgU2hhcmVk
Qml0bWFwKiBiaXRtYXAgPSBtX2RhdGEubV9iaXRtYXAuZ2V0KCk7CiAgICAgdW5zaWduZWQgY2hh
ciogZHN0ID0gKHVuc2lnbmVkIGNoYXIqKWJpdG1hcC0+Ynl0ZXMoKTsKICAgICBpZiAoIWRzdCkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjExLDcgKzIxMSw3IEBAIHN0YXRpYyB2b2lkIHB1dEltYWdl
RGF0YShCeXRlQXJyYXkqIHNvdXIKICAgICAgICAgICAgIGludCBncmVlbiA9ICpzcmMrKzsKICAg
ICAgICAgICAgIGludCBibHVlID0gKnNyYysrOwogICAgICAgICAgICAgaW50IGFscGhhID0gKnNy
YysrOwotICAgICAgICAgICAgaWYgKHByZW11bHRpcGxpZWQpIHsKKyAgICAgICAgICAgIGlmICht
dWx0aXBsaWVkID09IFByZW11bHRpcGxpZWQpIHsKICAgICAgICAgICAgICAgICAqZHN0KysgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihibHVlICogMjU1IC8gYWxwaGEpOwogICAgICAgICAg
ICAgICAgICpkc3QrKyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGdyZWVuICogMjU1IC8g
YWxwaGEpOwogICAgICAgICAgICAgICAgICpkc3QrKyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXI+KHJlZCAqIDI1NSAvIGFscGhhKTsKQEAgLTIyOCwxNiArMjI4LDYgQEAgc3RhdGljIHZvaWQg
cHV0SW1hZ2VEYXRhKEJ5dGVBcnJheSogc291cgogICAgIH0KIH0KIAotdm9pZCBJbWFnZUJ1ZmZl
cjo6cHV0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRT
aXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2lu
dCYgZGVzdFBvaW50KQotewotICAgIHB1dEltYWdlRGF0YTxmYWxzZT4oc291cmNlLCBzb3VyY2VT
aXplLCBzb3VyY2VSZWN0LCBkZXN0UG9pbnQsIG1fZGF0YS5tX2JpdG1hcC5nZXQoKSk7Ci19Ci0K
LXZvaWQgSW1hZ2VCdWZmZXI6OnB1dFByZW11bHRpcGxpZWRJbWFnZURhdGEoQnl0ZUFycmF5KiBz
b3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpCi17Ci0gICAgcHV0SW1hZ2VEYXRhPHRydWU+
KHNvdXJjZSwgc291cmNlU2l6ZSwgc291cmNlUmVjdCwgZGVzdFBvaW50LCBtX2RhdGEubV9iaXRt
YXAuZ2V0KCkpOwotfQotCiB2b2lkIEltYWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9y
U3BhY2UoY29uc3QgVmVjdG9yPGludD4mIGxvb2tVcFRhYmxlKQogewogICAgIFVOVVNFRF9QQVJB
TShsb29rVXBUYWJsZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
eC9JbWFnZUJ1ZmZlcld4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4LmNwcAkocmV2aXNpb24gMTA2NDE1KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VCdWZmZXJXeC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcyLDEyICs3Miw3IEBAIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1
ZmZlcjo6Z2V0UHIKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0VW5t
dWx0aXBsaWVkSW1hZ2VEYXRhKEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3Vy
Y2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBv
aW50KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgSW1hZ2VCdWZmZXI6OnB1
dFByZW11bHRpcGxpZWRJbWFnZURhdGEoQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUm
IHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBk
ZXN0UG9pbnQpCit2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlw
bGllZCwgQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAkocmV2aXNpb24gMTA2NDE1KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMyw3IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgd2tQYXR0
ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nCiB9IHdrUGF0dGVyblRpbGluZzsKIGV4dGVybiBDR1Bh
dHRlcm5SZWYgKCp3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSkoQ0dJbWFn
ZVJlZiwgQ0dBZmZpbmVUcmFuc2Zvcm0sIGludCk7CitleHRlcm4gdm9pZCAoKndrQ0dDb250ZXh0
UmVzZXRDbGlwKShDR0NvbnRleHRSZWYpOwogZXh0ZXJuIENGUmVhZFN0cmVhbVJlZiAoKndrQ3Jl
YXRlQ3VzdG9tQ0ZSZWFkU3RyZWFtKSh2b2lkICooKmZvcm1DcmVhdGUpKENGUmVhZFN0cmVhbVJl
Ziwgdm9pZCAqKSwgCiAgICAgdm9pZCAoKmZvcm1GaW5hbGl6ZSkoQ0ZSZWFkU3RyZWFtUmVmLCB2
b2lkICopLCAKICAgICBCb29sZWFuICgqZm9ybU9wZW4pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJl
YW1FcnJvciAqLCBCb29sZWFuICosIHZvaWQgKiksIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0JKHJldmlzaW9u
IDEwNjQxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNiArMTMyLDcgQEAgQ1RMaW5lUmVmICgq
d2tDcmVhdGVDVExpbmVXaXRoVW5pQ2hhclBybwogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX0xF
T1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKIENUVHlwZXNldHRl
clJlZiAoKndrQ3JlYXRlQ1RUeXBlc2V0dGVyV2l0aFVuaUNoYXJQcm92aWRlckFuZE9wdGlvbnMp
KGNvbnN0IFVuaUNoYXIqICgqcHJvdmlkZSkoQ0ZJbmRleCBzdHJpbmdJbmRleCwgQ0ZJbmRleCog
Y2hhckNvdW50LCBDRkRpY3Rpb25hcnlSZWYqIGF0dHJpYnV0ZXMsIHZvaWQqKSwgdm9pZCAoKmRp
c3Bvc2UpKGNvbnN0IFVuaUNoYXIqIGNoYXJzLCB2b2lkKiksIHZvaWQqLCBDRkRpY3Rpb25hcnlS
ZWYgb3B0aW9ucyk7CiAKK3ZvaWQgKCp3a0NHQ29udGV4dFJlc2V0Q2xpcCkoQ0dDb250ZXh0UmVm
KTsKIENHQ29udGV4dFJlZiAoKndrSU9TdXJmYWNlQ29udGV4dENyZWF0ZSkoSU9TdXJmYWNlUmVm
IHN1cmZhY2UsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIENHQ29sb3JTcGFjZVJl
ZiBjb2xvclNwYWNlKTsKIENHSW1hZ2VSZWYgKCp3a0lPU3VyZmFjZUNvbnRleHRDcmVhdGVJbWFn
ZSkoQ0dDb250ZXh0UmVmIGNvbnRleHQpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDY0
MTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxMyBAQAorMjAxMi0wMi0wMyAgTWF0dGhldyBEZWxhbmV5ICA8bWRlbGFuZXlAYXBwbGUuY29t
PgorCisgICAgICAgIHRvRGF0YVVSTCgpIHVzZXMgc3RhbGUgZGF0YSBhZnRlciBwdXRJbWFnZURh
dGEoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU3
NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbToKKyAgICAg
ICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKToKKwogMjAxMi0wMS0zMSAgQWxleGV5IFBy
b3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBQbHVnaW5Qcm9jZXNzIHNob3Vs
ZCBiZSBhYmxlIHRvIHVzZSByZW1vdGUgb3BlbiBhbmQgc2F2ZSBwYW5lbHMKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFj
ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0JKHJldmlzaW9uIDEwNjQxNSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFj
ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCB2b2lkIEluaXRXZWJDb3JlU3lz
dGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgICAgIElOSVQoQ29weUNGTG9jYWxpemF0aW9uUHJlZmVy
cmVkTmFtZSk7CiAgICAgICAgIElOSVQoQ0dDb250ZXh0R2V0U2hvdWxkU21vb3RoRm9udHMpOwog
ICAgICAgICBJTklUKENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSk7CisgICAg
ICAgIElOSVQoQ0dDb250ZXh0UmVzZXRDbGlwKTsKICAgICAgICAgSU5JVChDb3B5Q09OTkVDVFBy
b3h5UmVzcG9uc2UpOwogICAgICAgICBJTklUKENvcHlOU1VSTFJlc3BvbnNlU3RhdHVzTGluZSk7
CiAgICAgICAgIElOSVQoQ3JlYXRlQ1RMaW5lV2l0aFVuaUNoYXJQcm92aWRlcik7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDY0MTUpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wMi0wMyAgTWF0dGhl
dyBEZWxhbmV5ICA8bWRlbGFuZXlAYXBwbGUuY29tPgorCisgICAgICAgIHRvRGF0YVVSTCgpIHVz
ZXMgc3RhbGUgZGF0YSBhZnRlciBwdXRJbWFnZURhdGEoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU3NjcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVy
ZmFjZS5tbTogCisKIDIwMTItMDEtMjUgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgog
CiAgICAgICAgIEhUTUxJc0luZGV4RWxlbWVudCBzaG91bGQgbm90IGV4cG9zZSBIVE1MSW5wdXRF
bGVtZW50IHByb3BlcnRpZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlN5c3RlbUludGVyZmFjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0JKHJldmlzaW9uIDEwNjQxNSkKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQko
d29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50
ZXJmYWNlKHZvaWQpCiAgICAgSU5JVChBZHZhbmNlRGVmYXVsdEJ1dHRvblB1bHNlQW5pbWF0aW9u
KTsKICAgICBJTklUKENHQ29udGV4dEdldFNob3VsZFNtb290aEZvbnRzKTsKICAgICBJTklUKENH
UGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSk7CisgICAgSU5JVChDR0NvbnRleHRS
ZXNldENsaXApOwogICAgIElOSVQoQ29weUNGTG9jYWxpemF0aW9uUHJlZmVycmVkTmFtZSk7CiAg
ICAgSU5JVChDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpOwogICAgIElOSVQoQ29weU5TVVJMUmVz
cG9uc2VTdGF0dXNMaW5lKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125395</attachid>
            <date>2012-02-03 13:11:43 -0800</date>
            <delta_ts>2012-02-03 13:46:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65767-20120203131142.patch</filename>
            <type>text/plain</type>
            <size>29369</size>
            <attacher name="Matthew Delaney">mdelaney7</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjY4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAyLTAzICBNYXR0aGV3
IERlbGFuZXkgIDxtZGVsYW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgdG9EYXRhVVJMKCkgdXNl
cyBzdGFsZSBkYXRhIGFmdGVyIHB1dEltYWdlRGF0YSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTc2NworCisgICAgICAgIFRoaXMgcGF0Y2ggZml4
ZXMgdGhlIGlzc3VlIHdlJ3ZlIGVuY291bnRlcmVkIG9mIGdldHRpbmcgYmFjaworICAgICAgICBz
dGFsZSBjb3BpZXMgb2YgdGhlIENHQ29udGV4dCBvZiBhY2NlbGVyYXRlZCBJbWFnZUJ1ZmZlcnMg
d2hvIGhhdmUgc2VlbgorICAgICAgICBwdXRJbWFnZURhdGEgY2FsbHMgYnV0IGhhdmUgbm90IGJl
ZW4gZHJhd24gaW50byB2aWEgdGhlIENHIEFQSS4KKyAgICAgICAgVGhpcyBpc3N1ZSBpcyBmaXhl
ZCBieSBtb2RpZnlpbmcgdGhlIHdheSB3ZSBpbXBsZW1lbnQgcHV0SW1hZ2VEYXRhCisgICAgICAg
IGluIEltYWdlQnVmZmVyQ0cgdG8gZHJhdyB0aGUgYml0cyB3cmFwcGVkIGluIGEgQ0dJbWFnZSB3
aGlsZSB0aGUgQ0dDb250ZXh0CisgICAgICAgIGlzIGluIGEgc3RhdGUgd2hlcmUgdGhlIGRhdGEg
d2lsbCBlZmZlY3RpdmVseSBiZSBjb3BpZWQgKGFzIGlzIG5lZWRlZCBmb3IKKyAgICAgICAgaW1w
bGVtZW50aW5nIHB1dEltYWdlRGF0YSkgaW5zdGVhZCBvZiBkaXJlY3RseSBtb2RpZnlpbmcgdGhl
IGJpdHMgb2YgdGhlIElPU3VyZmFjZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUT0RPOiBXaWxsIGFkZCBhIHBpeGVsIHRlc3QgZm9yIHRoaXMgKHNp
bmNlIHRoaXMgaXMgb25seSBhIHBhaW50aW5nIGlzc3VlKSBpbiB0aGUgbmV4dCBwYXRjaAorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6IEltcGxlbWVu
dCBuZXcgd2F5IG9mIHB1dHRpbmcgaW1hZ2UgZGF0YS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oOiBNZXJnZWQgdHdvIHByZXZpb3VzbHkgc2VwYXJhdGUgcHV0IGRh
dGEgY2FsbHMKKyAgICAgICAgICAgIGludG8gYSBzaW5nbGUgYW5kIG1vcmUgc2Vuc2libHkgbmFt
ZWQgJ3B1dEJ5dGVBcnJheScsIHNpbmNlIHRoYXQncyB3aGF0IGl0IGRvZXMhCisKKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjogQWRkZWQgbmV3IFdLU0kgY2FsbCBmb3IgdXNlIGluIEltYWdlQnVm
ZmVyQ0cuY3BwCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbToKKwor
ICAgICAgICBVc2luZyBuZXcgbWV0aG9kIG5hbWUuCisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5j
cHA6ICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JN
YXRyaXguY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hh
ZG93LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVj
dC5jcHA6CisKKyAgICAgICAgVXBkYXRlZCBvdGhlciBwb3J0cycgSW1hZ2VCdWZmZXJzIHRvIHVz
ZSBuZXcgbWV0aG9kLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm8uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVy
UXQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lh
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldpbkNF
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4LmNwcDoK
KwogMjAxMi0wMi0wMyAgQW5kcmVhcyBLbGluZyAgPGF3ZXNvbWVrbGluZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgSFRNTEVsZW1lbnQ6IENsZWFuIHVwIHRhYmluZGV4IGF0dHJpYnV0ZSBwYXJzaW5n
LgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDEwNjY4NikKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNDg3LDYgKzE0ODcsNyBA
QCBfc3RyaW5nSXNDYXNlSW5zZW5zaXRpdmVFcXVhbFRvU3RyaW5nCiBfc3VnZ2VzdGVkRmlsZW5h
bWVXaXRoTUlNRVR5cGUKIF93a0FkdmFuY2VEZWZhdWx0QnV0dG9uUHVsc2VBbmltYXRpb24KIF93
a0NHQ29udGV4dEdldFNob3VsZFNtb290aEZvbnRzCitfd2tDR0NvbnRleHRSZXNldENsaXAKIF93
a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybQogX3drQ29weUNGTG9jYWxpemF0
aW9uUHJlZmVycmVkTmFtZQogX3drQ29weUNGVVJMUmVzcG9uc2VTdWdnZXN0ZWRGaWxlbmFtZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lvbiAxMDY2ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTc4LDcgKzE5NzgsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cHV0SW1h
Z2VECiAgICAgSW50UmVjdCBzb3VyY2VSZWN0KGRlc3RSZWN0KTsKICAgICBzb3VyY2VSZWN0Lm1v
dmUoLWRlc3RPZmZzZXQpOwogCi0gICAgYnVmZmVyLT5wdXRVbm11bHRpcGxpZWRJbWFnZURhdGEo
ZGF0YS0+ZGF0YSgpLT5kYXRhKCksIEludFNpemUoZGF0YS0+d2lkdGgoKSwgZGF0YS0+aGVpZ2h0
KCkpLCBzb3VyY2VSZWN0LCBJbnRQb2ludChkZXN0T2Zmc2V0KSk7CisgICAgYnVmZmVyLT5wdXRC
eXRlQXJyYXkoVW5tdWx0aXBsaWVkLCBkYXRhLT5kYXRhKCktPmRhdGEoKSwgSW50U2l6ZShkYXRh
LT53aWR0aCgpLCBkYXRhLT5oZWlnaHQoKSksIHNvdXJjZVJlY3QsIEludFBvaW50KGRlc3RPZmZz
ZXQpKTsKICAgICBkaWREcmF3KGRlc3RSZWN0LCBDYW52YXNEaWREcmF3QXBwbHlOb25lKTsgLy8g
aWdub3JlIHRyYW5zZm9ybSwgc2hhZG93IGFuZCBjbGlwCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAJKHJldmlzaW9uIDEw
NjY4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBpbmxpbmUgdm9pZCBJbWFnZUJ1ZmZl
cjo6Z2VuZXJpY0NvbnZlcnRUCiAgICAgICAgIGRvdWJsZSBsdW1hID0gKHIgKiAwLjIxMjUgKyBn
ICogMC43MTU0ICsgYiAqIDAuMDcyMSkgKiAoKGRvdWJsZSlhIC8gMjU1LjApOwogICAgICAgICBz
cmNQaXhlbEFycmF5LT5zZXQocGl4ZWxPZmZzZXQgKyAzLCBsdW1hKTsKICAgICB9Ci0gICAgcHV0
VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKHNyY1BpeGVsQXJyYXkuZ2V0KCksIGx1bWluYW5jZVJlY3Qu
c2l6ZSgpLCBsdW1pbmFuY2VSZWN0LCBJbnRQb2ludCgpKTsKKyAgICBwdXRCeXRlQXJyYXkoVW5t
dWx0aXBsaWVkLCBzcmNQaXhlbEFycmF5LmdldCgpLCBsdW1pbmFuY2VSZWN0LnNpemUoKSwgbHVt
aW5hbmNlUmVjdCwgSW50UG9pbnQoKSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmNvbnZlcnRU
b0x1bWluYW5jZU1hc2soKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oCShyZXZpc2lvbiAxMDY2ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsOCAr
MTAxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQYXNzUmVmUHRyPEJ5dGVBcnJh
eT4gZ2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmKSBjb25zdDsKICAgICAg
ICAgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IGdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3Qg
SW50UmVjdCYpIGNvbnN0OwogCi0gICAgICAgIHZvaWQgcHV0VW5tdWx0aXBsaWVkSW1hZ2VEYXRh
KEJ5dGVBcnJheSosIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpOwotICAgICAgICB2b2lkIHB1dFBy
ZW11bHRpcGxpZWRJbWFnZURhdGEoQnl0ZUFycmF5KiwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6
ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCk7
CisgICAgICAgIHZvaWQgcHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIEJ5dGVBcnJh
eSosIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpOwogICAgICAgICAKICAgICAgICAgdm9pZCBjb252
ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7CiAgICAgICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAJKHJldmlzaW9uIDEwNjY4NikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04MjgsNyArODI4LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpibHVyU2hhZG93QnVm
ZmVyKGNvbnN0IAogICAgIEludFJlY3QgYmx1clJlY3QoSW50UG9pbnQoKSwgdGVtcGxhdGVTaXpl
KTsKICAgICBSZWZQdHI8Qnl0ZUFycmF5PiBsYXllckRhdGEgPSBtX2xheWVySW1hZ2UtPmdldFVu
bXVsdGlwbGllZEltYWdlRGF0YShibHVyUmVjdCk7CiAgICAgYmx1ckxheWVySW1hZ2UobGF5ZXJE
YXRhLT5kYXRhKCksIGJsdXJSZWN0LnNpemUoKSwgYmx1clJlY3Qud2lkdGgoKSAqIDQpOwotICAg
IG1fbGF5ZXJJbWFnZS0+cHV0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGxheWVyRGF0YS5nZXQoKSwg
Ymx1clJlY3Quc2l6ZSgpLCBibHVyUmVjdCwgSW50UG9pbnQoKSk7CisgICAgbV9sYXllckltYWdl
LT5wdXRCeXRlQXJyYXkoVW5tdWx0aXBsaWVkLCBsYXllckRhdGEuZ2V0KCksIGJsdXJSZWN0LnNp
emUoKSwgYmx1clJlY3QsIEludFBvaW50KCkpOwogfQogCiB2b2lkIFNoYWRvd0JsdXI6OmJsdXJB
bmRDb2xvclNoYWRvd0J1ZmZlcihjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvLmNwcAkocmV2aXNpb24gMTA2Njg2KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIwNCwxMiArMjA0LDExIEBAIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZl
cjo6Z2V0UHIKICAgICByZXR1cm4gZ2V0SW1hZ2VEYXRhPFByZW11bHRpcGxpZWQ+KHJlY3QsIG1f
ZGF0YSwgbV9zaXplKTsKIH0KIAotdGVtcGxhdGUgPE11bHRpcGx5IG11bHRpcGxpZWQ+Ci12b2lk
IHB1dEltYWdlRGF0YShCeXRlQXJyYXkqJiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNp
emUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQs
IEltYWdlQnVmZmVyRGF0YSYgZGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3ZvaWQgSW1hZ2VC
dWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBCeXRlQXJyYXkqIHNvdXJj
ZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkKIHsKLSAgICBBU1NFUlQoY2Fpcm9fc3VyZmFjZV9n
ZXRfdHlwZShkYXRhLm1fc3VyZmFjZSkgPT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKTsKKyAg
ICBBU1NFUlQoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShtX2RhdGEubV9zdXJmYWNlKSA9PSBDQUlS
T19TVVJGQUNFX1RZUEVfSU1BR0UpOwogCi0gICAgdW5zaWduZWQgY2hhciogZGF0YURzdCA9IGNh
aXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoZGF0YS5tX3N1cmZhY2UpOworICAgIHVuc2lnbmVk
IGNoYXIqIGRhdGFEc3QgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKG1fZGF0YS5tX3N1
cmZhY2UpOwogCiAgICAgQVNTRVJUKHNvdXJjZVJlY3Qud2lkdGgoKSA+IDApOwogICAgIEFTU0VS
VChzb3VyY2VSZWN0LmhlaWdodCgpID4gMCk7CkBAIC0yMTcsMjggKzIxNiwyOCBAQCB2b2lkIHB1
dEltYWdlRGF0YShCeXRlQXJyYXkqJiBzb3VyY2UsIGNvCiAgICAgaW50IG9yaWdpbnggPSBzb3Vy
Y2VSZWN0LngoKTsKICAgICBpbnQgZGVzdHggPSBkZXN0UG9pbnQueCgpICsgc291cmNlUmVjdC54
KCk7CiAgICAgQVNTRVJUKGRlc3R4ID49IDApOwotICAgIEFTU0VSVChkZXN0eCA8IHNpemUud2lk
dGgoKSk7CisgICAgQVNTRVJUKGRlc3R4IDwgbV9zaXplLndpZHRoKCkpOwogICAgIEFTU0VSVChv
cmlnaW54ID49IDApOwogICAgIEFTU0VSVChvcmlnaW54IDw9IHNvdXJjZVJlY3QubWF4WCgpKTsK
IAogICAgIGludCBlbmR4ID0gZGVzdFBvaW50LngoKSArIHNvdXJjZVJlY3QubWF4WCgpOwotICAg
IEFTU0VSVChlbmR4IDw9IHNpemUud2lkdGgoKSk7CisgICAgQVNTRVJUKGVuZHggPD0gbV9zaXpl
LndpZHRoKCkpOwogCiAgICAgaW50IG51bUNvbHVtbnMgPSBlbmR4IC0gZGVzdHg7CiAKICAgICBp
bnQgb3JpZ2lueSA9IHNvdXJjZVJlY3QueSgpOwogICAgIGludCBkZXN0eSA9IGRlc3RQb2ludC55
KCkgKyBzb3VyY2VSZWN0LnkoKTsKICAgICBBU1NFUlQoZGVzdHkgPj0gMCk7Ci0gICAgQVNTRVJU
KGRlc3R5IDwgc2l6ZS5oZWlnaHQoKSk7CisgICAgQVNTRVJUKGRlc3R5IDwgbV9zaXplLmhlaWdo
dCgpKTsKICAgICBBU1NFUlQob3JpZ2lueSA+PSAwKTsKICAgICBBU1NFUlQob3JpZ2lueSA8PSBz
b3VyY2VSZWN0Lm1heFkoKSk7CiAKICAgICBpbnQgZW5keSA9IGRlc3RQb2ludC55KCkgKyBzb3Vy
Y2VSZWN0Lm1heFkoKTsKLSAgICBBU1NFUlQoZW5keSA8PSBzaXplLmhlaWdodCgpKTsKKyAgICBB
U1NFUlQoZW5keSA8PSBtX3NpemUuaGVpZ2h0KCkpOwogICAgIGludCBudW1Sb3dzID0gZW5keSAt
IGRlc3R5OwogCiAgICAgdW5zaWduZWQgc3JjQnl0ZXNQZXJSb3cgPSA0ICogc291cmNlU2l6ZS53
aWR0aCgpOwotICAgIGludCBzdHJpZGUgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUo
ZGF0YS5tX3N1cmZhY2UpOworICAgIGludCBzdHJpZGUgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF9zdHJpZGUobV9kYXRhLm1fc3VyZmFjZSk7CiAKICAgICB1bnNpZ25lZCBjaGFyKiBzcmNSb3dz
ID0gc291cmNlLT5kYXRhKCkgKyBvcmlnaW55ICogc3JjQnl0ZXNQZXJSb3cgKyBvcmlnaW54ICog
NDsKICAgICBmb3IgKGludCB5ID0gMDsgeSA8IG51bVJvd3M7ICsreSkgewpAQCAtMjU3LDIxICsy
NTYsMTEgQEAgdm9pZCBwdXRJbWFnZURhdGEoQnl0ZUFycmF5KiYgc291cmNlLCBjbwogICAgICAg
ICB9CiAgICAgICAgIHNyY1Jvd3MgKz0gc3JjQnl0ZXNQZXJSb3c7CiAgICAgfQotICAgIGNhaXJv
X3N1cmZhY2VfbWFya19kaXJ0eV9yZWN0YW5nbGUgKGRhdGEubV9zdXJmYWNlLAorICAgIGNhaXJv
X3N1cmZhY2VfbWFya19kaXJ0eV9yZWN0YW5nbGUobV9kYXRhLm1fc3VyZmFjZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0eCwgZGVzdHksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtQ29sdW1ucywgbnVtUm93cyk7CiB9CiAK
LXZvaWQgSW1hZ2VCdWZmZXI6OnB1dFVubXVsdGlwbGllZEltYWdlRGF0YShCeXRlQXJyYXkqIHNv
dXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkKLXsKLSAgICBwdXRJbWFnZURhdGE8VW5tdWx0
aXBsaWVkPihzb3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3QsIGRlc3RQb2ludCwgbV9kYXRh
LCBtX3NpemUpOwotfQotCi12b2lkIEltYWdlQnVmZmVyOjpwdXRQcmVtdWx0aXBsaWVkSW1hZ2VE
YXRhKEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQotewotICAgIHB1
dEltYWdlRGF0YTxQcmVtdWx0aXBsaWVkPihzb3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3Qs
IGRlc3RQb2ludCwgbV9kYXRhLCBtX3NpemUpOwotfQotCiAjaWYgIVBMQVRGT1JNKEdUSykKIHN0
YXRpYyBjYWlyb19zdGF0dXNfdCB3cml0ZUZ1bmN0aW9uKHZvaWQqIGNsb3N1cmUsIGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGludCBsZW5ndGgpCiB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNw
cAkocmV2aXNpb24gMTA2Njg2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNywyNiArMzA3LDM4IEBA
IFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHIKICAgICByZXR1cm4gbV9k
YXRhLmdldERhdGEocmVjdCwgbV9zaXplLCBtX2NvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0
KCksIGZhbHNlKTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0VW5tdWx0aXBsaWVkSW1hZ2VE
YXRhKEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQordm9pZCBJbWFn
ZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIEJ5dGVBcnJheSogc291
cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQogewogICAgIGlmIChtX2NvbnRleHQtPmlzQWNj
ZWxlcmF0ZWRDb250ZXh0KCkpIHsKLSAgICAgICAgQ0dDb250ZXh0Rmx1c2goY29udGV4dCgpLT5w
bGF0Zm9ybUNvbnRleHQoKSk7Ci0jaWYgZGVmaW5lZChCVUlMRElOR19PTl9MSU9OKQotICAgICAg
ICBtX2RhdGEubV9sYXN0Rmx1c2hUaW1lID0gY3VycmVudFRpbWVNUygpOwotI2VuZGlmCi0gICAg
fQotICAgIG1fZGF0YS5wdXREYXRhKHNvdXJjZSwgc291cmNlU2l6ZSwgc291cmNlUmVjdCwgZGVz
dFBvaW50LCBtX3NpemUsIG1fY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSwgdHJ1ZSk7
Ci19CisgICAgICAgIEludFNpemUgc291cmNlQ29weVNpemUoc291cmNlUmVjdC53aWR0aCgpLCBz
b3VyY2VSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBzb3VyY2VD
b3B5ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzb3VyY2VDb3B5U2l6ZSwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgVW5hY2NlbGVyYXRlZCk7CisgICAgICAgIGlmICghc291cmNlQ29weSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBpZiAobXVsdGlwbGllZCA9PSBVbm11bHRpcGxpZWQpCisg
ICAgICAgICAgICBzb3VyY2VDb3B5LT5tX2RhdGEucHV0RGF0YShzb3VyY2UsIHNvdXJjZVNpemUs
IHNvdXJjZVJlY3QsIEludFBvaW50KC1zb3VyY2VSZWN0LngoKSwgLXNvdXJjZVJlY3QueSgpKSwg
c291cmNlQ29weS0+c2l6ZSgpLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHNvdXJjZUNvcHktPm1fZGF0YS5wdXREYXRhKHNvdXJjZSwgc291cmNlU2l6ZSwgc291cmNl
UmVjdCwgSW50UG9pbnQoLXNvdXJjZVJlY3QueCgpLCAtc291cmNlUmVjdC55KCkpLCBzb3VyY2VD
b3B5LT5zaXplKCksIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIAorICAgICAgICAvLyBTZXQgdXAg
Y29udGV4dCBmb3IgdXNpbmcgZHJhd0ltYWdlIGFzIGEgZGlyZWN0IGJpdCBjb3B5CisgICAgICAg
IENHQ29udGV4dFJlZiBkZXN0Q29udGV4dCA9IGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCk7
CisgICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUoZGVzdENvbnRleHQpOworICAgICAgICBDR0Nv
bnRleHRDb25jYXRDVE0oZGVzdENvbnRleHQsIEFmZmluZVRyYW5zZm9ybShDR0NvbnRleHRHZXRD
VE0oZGVzdENvbnRleHQpKS5pbnZlcnNlKCkpOworICAgICAgICB3a0NHQ29udGV4dFJlc2V0Q2xp
cChkZXN0Q29udGV4dCk7CisgICAgICAgIENHQ29udGV4dFNldEludGVycG9sYXRpb25RdWFsaXR5
KGRlc3RDb250ZXh0LCBrQ0dJbnRlcnBvbGF0aW9uTm9uZSk7CisgICAgICAgIENHQ29udGV4dFNl
dEFscGhhKGRlc3RDb250ZXh0LCAxLjApOworICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUo
ZGVzdENvbnRleHQsIGtDR0JsZW5kTW9kZUNvcHkpOworICAgICAgICBDR0NvbnRleHRTZXRTaGFk
b3dXaXRoQ29sb3IoZGVzdENvbnRleHQsIENHU2l6ZVplcm8sIDAsIDApOworCisgICAgICAgIC8v
IERyYXcgdGhlIGltYWdlIGluIENHIGNvb3JkaW5hdGUgc3BhY2UKKyAgICAgICAgSW50UG9pbnQg
ZGVzdFBvaW50SW5DR0Nvb3JkcyhkZXN0UG9pbnQueCgpICsgc291cmNlUmVjdC54KCksIG1fc2l6
ZS5oZWlnaHQoKSAtIChkZXN0UG9pbnQueSgpK3NvdXJjZVJlY3QueSgpKSAtIHNvdXJjZVJlY3Qu
aGVpZ2h0KCkpOworICAgICAgICBJbnRSZWN0IGRlc3RSZWN0SW5DR0Nvb3JkcyhkZXN0UG9pbnRJ
bkNHQ29vcmRzLCBzb3VyY2VDb3B5U2l6ZSk7CisgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBzb3VyY2VDb3B5SW1hZ2UoQWRvcHRDRiwgc291cmNlQ29weS0+Y29weU5hdGl2ZUltYWdlKCkp
OworICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoZGVzdENvbnRleHQsIGRlc3RSZWN0SW5DR0Nv
b3Jkcywgc291cmNlQ29weUltYWdlLmdldCgpKTsKIAotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0UHJl
bXVsdGlwbGllZEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291
cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQ
b2ludCkKLXsKLSAgICBpZiAobV9jb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7Ci0g
ICAgICAgIENHQ29udGV4dEZsdXNoKGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCkpOwotI2lm
IGRlZmluZWQoQlVJTERJTkdfT05fTElPTikKLSAgICAgICAgbV9kYXRhLm1fbGFzdEZsdXNoVGlt
ZSA9IGN1cnJlbnRUaW1lTVMoKTsKLSNlbmRpZgotICAgIH0KLSAgICBtX2RhdGEucHV0RGF0YShz
b3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3QsIGRlc3RQb2ludCwgbV9zaXplLCBtX2NvbnRl
eHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCksIGZhbHNlKTsKKyAgICAgICAgQ0dDb250ZXh0UmVz
dG9yZUdTdGF0ZShkZXN0Q29udGV4dCk7CisgICAgfSBlbHNlCisgICAgICAgIG1fZGF0YS5wdXRE
YXRhKHNvdXJjZSwgc291cmNlU2l6ZSwgc291cmNlUmVjdCwgZGVzdFBvaW50LCBtX3NpemUsIG1f
Y29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSwgbXVsdGlwbGllZCA9PSBVbm11bHRpcGxp
ZWQpOwogfQogCiBzdGF0aWMgaW5saW5lIENGU3RyaW5nUmVmIGpwZWdVVEkoKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29sb3JNYXRyaXguY3BwCShyZXZpc2lvbiAxMDY2ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODcsNyArMTg3LDcgQEAgdm9pZCBGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdh
cgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICByZXN1bHRJbWFnZS0+cHV0VW5tdWx0aXBs
aWVkSW1hZ2VEYXRhKHBpeGVsQXJyYXkuZ2V0KCksIGltYWdlUmVjdC5zaXplKCksIGltYWdlUmVj
dCwgSW50UG9pbnQoKSk7CisgICAgcmVzdWx0SW1hZ2UtPnB1dEJ5dGVBcnJheShVbm11bHRpcGxp
ZWQsIHBpeGVsQXJyYXkuZ2V0KCksIGltYWdlUmVjdC5zaXplKCksIGltYWdlUmVjdCwgSW50UG9p
bnQoKSk7CiB9CiAKIHZvaWQgRkVDb2xvck1hdHJpeDo6ZHVtcCgpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFk
b3cuY3BwCShyZXZpc2lvbiAxMDY2ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw3ICsx
MDgsNyBAQCB2b2lkIEZFRHJvcFNoYWRvdzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlCiAKICAgICBj
b250ZXh0U2hhZG93LmJsdXJMYXllckltYWdlKHNyY1BpeGVsQXJyYXktPmRhdGEoKSwgc2hhZG93
QXJlYS5zaXplKCksIDQgKiBzaGFkb3dBcmVhLnNpemUoKS53aWR0aCgpKTsKIAotICAgIHJlc3Vs
dEltYWdlLT5wdXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKHNyY1BpeGVsQXJyYXkuZ2V0KCksIHNo
YWRvd0FyZWEuc2l6ZSgpLCBzaGFkb3dBcmVhLCBJbnRQb2ludCgpKTsKKyAgICByZXN1bHRJbWFn
ZS0+cHV0Qnl0ZUFycmF5KFByZW11bHRpcGxpZWQsIHNyY1BpeGVsQXJyYXkuZ2V0KCksIHNoYWRv
d0FyZWEuc2l6ZSgpLCBzaGFkb3dBcmVhLCBJbnRQb2ludCgpKTsKIAogICAgIHJlc3VsdENvbnRl
eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVTb3VyY2VJbik7CiAgICAgcmVzdWx0
Q29udGV4dC0+ZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJl
Y3QoKS5zaXplKCkpLCBtX3NoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdC5jcHAJKHJldmlzaW9uIDEwNjY4NikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTMwLDkgKzEzMCw5IEBAIEltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmFzSW1hZ2VCdWZm
ZXIKICAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShtX2Fic29s
dXRlUGFpbnRSZWN0LnNpemUoKSwgQ29sb3JTcGFjZUxpbmVhclJHQiwgbV9maWx0ZXItPnJlbmRl
cmluZ01vZGUoKSk7CiAgICAgSW50UmVjdCBkZXN0aW5hdGlvblJlY3QoSW50UG9pbnQoKSwgbV9h
YnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgIGlmIChtX3ByZW11bHRpcGxpZWRJbWFnZVJl
c3VsdCkKLSAgICAgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdC0+cHV0UHJlbXVsdGlwbGllZEltYWdl
RGF0YShtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdC5nZXQoKSwgZGVzdGluYXRpb25SZWN0LnNp
emUoKSwgZGVzdGluYXRpb25SZWN0LCBJbnRQb2ludCgpKTsKKyAgICAgICAgbV9pbWFnZUJ1ZmZl
clJlc3VsdC0+cHV0Qnl0ZUFycmF5KFByZW11bHRpcGxpZWQsIG1fcHJlbXVsdGlwbGllZEltYWdl
UmVzdWx0LmdldCgpLCBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpLCBkZXN0aW5hdGlvblJlY3QsIElu
dFBvaW50KCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdC0+cHV0VW5t
dWx0aXBsaWVkSW1hZ2VEYXRhKG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQuZ2V0KCksIGRlc3Rp
bmF0aW9uUmVjdC5zaXplKCksIGRlc3RpbmF0aW9uUmVjdCwgSW50UG9pbnQoKSk7CisgICAgICAg
IG1faW1hZ2VCdWZmZXJSZXN1bHQtPnB1dEJ5dGVBcnJheShVbm11bHRpcGxpZWQsIG1fdW5tdWx0
aXBsaWVkSW1hZ2VSZXN1bHQuZ2V0KCksIGRlc3RpbmF0aW9uUmVjdC5zaXplKCksIGRlc3RpbmF0
aW9uUmVjdCwgSW50UG9pbnQoKSk7CiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0
KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdl
QnVmZmVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCShyZXZpc2lvbiAxMDY2ODYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjk5LDggKzI5OSw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHByZW11bHRp
cGx5QUIKICAgICByZXR1cm4geDsKIH0KIAotdGVtcGxhdGUgPE11bHRpcGx5IG11bHRpcGxpZWQ+
Ci12b2lkIHB1dEltYWdlRGF0YShCeXRlQXJyYXkqJiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNv
dXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0
UG9pbnQsIEltYWdlQnVmZmVyRGF0YSYgZGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3ZvaWQg
SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBCeXRlQXJyYXkq
IHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkKIHsKICAgICBBU1NFUlQoc291cmNlUmVj
dC53aWR0aCgpID4gMCk7CiAgICAgQVNTRVJUKHNvdXJjZVJlY3QuaGVpZ2h0KCkgPiAwKTsKQEAg
LTMwOCwyNCArMzA3LDI0IEBAIHZvaWQgcHV0SW1hZ2VEYXRhKEJ5dGVBcnJheSomIHNvdXJjZSwg
Y28KICAgICBpbnQgb3JpZ2lueCA9IHNvdXJjZVJlY3QueCgpOwogICAgIGludCBkZXN0eCA9IGRl
c3RQb2ludC54KCkgKyBzb3VyY2VSZWN0LngoKTsKICAgICBBU1NFUlQoZGVzdHggPj0gMCk7Ci0g
ICAgQVNTRVJUKGRlc3R4IDwgc2l6ZS53aWR0aCgpKTsKKyAgICBBU1NFUlQoZGVzdHggPCBtX3Np
emUud2lkdGgoKSk7CiAgICAgQVNTRVJUKG9yaWdpbnggPj0gMCk7CiAgICAgQVNTRVJUKG9yaWdp
bnggPD0gc291cmNlUmVjdC5tYXhYKCkpOwogCiAgICAgaW50IGVuZHggPSBkZXN0UG9pbnQueCgp
ICsgc291cmNlUmVjdC5tYXhYKCk7Ci0gICAgQVNTRVJUKGVuZHggPD0gc2l6ZS53aWR0aCgpKTsK
KyAgICBBU1NFUlQoZW5keCA8PSBtX3NpemUud2lkdGgoKSk7CiAKICAgICBpbnQgbnVtQ29sdW1u
cyA9IGVuZHggLSBkZXN0eDsKIAogICAgIGludCBvcmlnaW55ID0gc291cmNlUmVjdC55KCk7CiAg
ICAgaW50IGRlc3R5ID0gZGVzdFBvaW50LnkoKSArIHNvdXJjZVJlY3QueSgpOwogICAgIEFTU0VS
VChkZXN0eSA+PSAwKTsKLSAgICBBU1NFUlQoZGVzdHkgPCBzaXplLmhlaWdodCgpKTsKKyAgICBB
U1NFUlQoZGVzdHkgPCBtX3NpemUuaGVpZ2h0KCkpOwogICAgIEFTU0VSVChvcmlnaW55ID49IDAp
OwogICAgIEFTU0VSVChvcmlnaW55IDw9IHNvdXJjZVJlY3QubWF4WSgpKTsKIAogICAgIGludCBl
bmR5ID0gZGVzdFBvaW50LnkoKSArIHNvdXJjZVJlY3QubWF4WSgpOwotICAgIEFTU0VSVChlbmR5
IDw9IHNpemUuaGVpZ2h0KCkpOworICAgIEFTU0VSVChlbmR5IDw9IG1fc2l6ZS5oZWlnaHQoKSk7
CiAgICAgaW50IG51bVJvd3MgPSBlbmR5IC0gZGVzdHk7CiAKICAgICB1bnNpZ25lZCBzcmNCeXRl
c1BlclJvdyA9IDQgKiBzb3VyY2VTaXplLndpZHRoKCk7CkBAIC0zNTksMzUgKzM1OCwyNSBAQCB2
b2lkIHB1dEltYWdlRGF0YShCeXRlQXJyYXkqJiBzb3VyY2UsIGNvCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBib29sIGlzUGFpbnRpbmcgPSBkYXRhLm1fcGFpbnRlci0+aXNBY3RpdmUoKTsKKyAg
ICBib29sIGlzUGFpbnRpbmcgPSBtX2RhdGEubV9wYWludGVyLT5pc0FjdGl2ZSgpOwogICAgIGlm
ICghaXNQYWludGluZykKLSAgICAgICAgZGF0YS5tX3BhaW50ZXItPmJlZ2luKCZkYXRhLm1fcGl4
bWFwKTsKKyAgICAgICAgbV9kYXRhLm1fcGFpbnRlci0+YmVnaW4oJm1fZGF0YS5tX3BpeG1hcCk7
CiAgICAgZWxzZSB7Ci0gICAgICAgIGRhdGEubV9wYWludGVyLT5zYXZlKCk7CisgICAgICAgIG1f
ZGF0YS5tX3BhaW50ZXItPnNhdmUoKTsKIAogICAgICAgICAvLyBwdXRJbWFnZURhdGEoKSBzaG91
bGQgYmUgdW5hZmZlY3RlZCBieSBwYWludGVyIHN0YXRlCi0gICAgICAgIGRhdGEubV9wYWludGVy
LT5yZXNldFRyYW5zZm9ybSgpOwotICAgICAgICBkYXRhLm1fcGFpbnRlci0+c2V0T3BhY2l0eSgx
LjApOwotICAgICAgICBkYXRhLm1fcGFpbnRlci0+c2V0Q2xpcHBpbmcoZmFsc2UpOworICAgICAg
ICBtX2RhdGEubV9wYWludGVyLT5yZXNldFRyYW5zZm9ybSgpOworICAgICAgICBtX2RhdGEubV9w
YWludGVyLT5zZXRPcGFjaXR5KDEuMCk7CisgICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPnNldENs
aXBwaW5nKGZhbHNlKTsKICAgICB9CiAKLSAgICBkYXRhLm1fcGFpbnRlci0+c2V0Q29tcG9zaXRp
b25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfU291cmNlKTsKLSAgICBkYXRhLm1fcGFp
bnRlci0+ZHJhd0ltYWdlKGRlc3R4LCBkZXN0eSwgaW1hZ2UpOworICAgIG1fZGF0YS5tX3BhaW50
ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7
CisgICAgbV9kYXRhLm1fcGFpbnRlci0+ZHJhd0ltYWdlKGRlc3R4LCBkZXN0eSwgaW1hZ2UpOwog
CiAgICAgaWYgKCFpc1BhaW50aW5nKQotICAgICAgICBkYXRhLm1fcGFpbnRlci0+ZW5kKCk7Cisg
ICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPmVuZCgpOwogICAgIGVsc2UKLSAgICAgICAgZGF0YS5t
X3BhaW50ZXItPnJlc3RvcmUoKTsKLX0KLQotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0VW5tdWx0aXBs
aWVkSW1hZ2VEYXRhKEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXpl
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQot
ewotICAgIHB1dEltYWdlRGF0YTxVbm11bHRpcGxpZWQ+KHNvdXJjZSwgc291cmNlU2l6ZSwgc291
cmNlUmVjdCwgZGVzdFBvaW50LCBtX2RhdGEsIG1fc2l6ZSk7Ci19Ci0KLXZvaWQgSW1hZ2VCdWZm
ZXI6OnB1dFByZW11bHRpcGxpZWRJbWFnZURhdGEoQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0IElu
dFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBv
aW50JiBkZXN0UG9pbnQpCi17Ci0gICAgcHV0SW1hZ2VEYXRhPFByZW11bHRpcGxpZWQ+KHNvdXJj
ZSwgc291cmNlU2l6ZSwgc291cmNlUmVjdCwgZGVzdFBvaW50LCBtX2RhdGEsIG1fc2l6ZSk7Cisg
ICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPnJlc3RvcmUoKTsKIH0KIAogLy8gV2UgZ2V0IGEgbWlt
ZVR5cGUgaGVyZSBidXQgUUltYWdlV3JpdGVyIGRvZXMgbm90IHN1cHBvcnQgbWltZXR5cGVzIGJ1
dApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZl
clNraWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAkocmV2aXNpb24gMTA2Njg2KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNzUsMzQgKzI3NSwzMyBAQCBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1hZ2VC
dWZmZXI6OmdldFByCiAgICAgcmV0dXJuIGdldEltYWdlRGF0YTxQcmVtdWx0aXBsaWVkPihyZWN0
LCBjb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKSwgbV9zaXplKTsKIH0KIAot
dGVtcGxhdGUgPE11bHRpcGx5IG11bHRpcGxpZWQ+Ci12b2lkIHB1dEltYWdlRGF0YShCeXRlQXJy
YXkqJiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsCi0gICAgICAgICAgICAgICAgICBT
a0NhbnZhcyogY2FudmFzLCBjb25zdCBJbnRTaXplJiBzaXplKQordm9pZCBJbWFnZUJ1ZmZlcjo6
cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIEJ5dGVBcnJheSogc291cmNlLCBjb25z
dCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRQb2ludCYgZGVzdFBvaW50KQogeworICAgIFNrQ2FudmFzKiBjYW52YXMgPSBjb250ZXh0KCkt
PnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKICAgICBBU1NFUlQoc291cmNlUmVjdC53aWR0
aCgpID4gMCk7CiAgICAgQVNTRVJUKHNvdXJjZVJlY3QuaGVpZ2h0KCkgPiAwKTsKIAogICAgIGlu
dCBvcmlnaW5YID0gc291cmNlUmVjdC54KCk7CiAgICAgaW50IGRlc3RYID0gZGVzdFBvaW50Lngo
KSArIHNvdXJjZVJlY3QueCgpOwogICAgIEFTU0VSVChkZXN0WCA+PSAwKTsKLSAgICBBU1NFUlQo
ZGVzdFggPCBzaXplLndpZHRoKCkpOworICAgIEFTU0VSVChkZXN0WCA8IG1fc2l6ZS53aWR0aCgp
KTsKICAgICBBU1NFUlQob3JpZ2luWCA+PSAwKTsKICAgICBBU1NFUlQob3JpZ2luWCA8IHNvdXJj
ZVJlY3QubWF4WCgpKTsKIAogICAgIGludCBlbmRYID0gZGVzdFBvaW50LngoKSArIHNvdXJjZVJl
Y3QubWF4WCgpOwotICAgIEFTU0VSVChlbmRYIDw9IHNpemUud2lkdGgoKSk7CisgICAgQVNTRVJU
KGVuZFggPD0gbV9zaXplLndpZHRoKCkpOwogCiAgICAgaW50IG51bUNvbHVtbnMgPSBlbmRYIC0g
ZGVzdFg7CiAKICAgICBpbnQgb3JpZ2luWSA9IHNvdXJjZVJlY3QueSgpOwogICAgIGludCBkZXN0
WSA9IGRlc3RQb2ludC55KCkgKyBzb3VyY2VSZWN0LnkoKTsKICAgICBBU1NFUlQoZGVzdFkgPj0g
MCk7Ci0gICAgQVNTRVJUKGRlc3RZIDwgc2l6ZS5oZWlnaHQoKSk7CisgICAgQVNTRVJUKGRlc3RZ
IDwgbV9zaXplLmhlaWdodCgpKTsKICAgICBBU1NFUlQob3JpZ2luWSA+PSAwKTsKICAgICBBU1NF
UlQob3JpZ2luWSA8IHNvdXJjZVJlY3QubWF4WSgpKTsKIAogICAgIGludCBlbmRZID0gZGVzdFBv
aW50LnkoKSArIHNvdXJjZVJlY3QubWF4WSgpOwotICAgIEFTU0VSVChlbmRZIDw9IHNpemUuaGVp
Z2h0KCkpOworICAgIEFTU0VSVChlbmRZIDw9IG1fc2l6ZS5oZWlnaHQoKSk7CiAgICAgaW50IG51
bVJvd3MgPSBlbmRZIC0gZGVzdFk7CiAKICAgICB1bnNpZ25lZCBzcmNCeXRlc1BlclJvdyA9IDQg
KiBzb3VyY2VTaXplLndpZHRoKCk7CkBAIC0zMTksMTYgKzMxOCw2IEBAIHZvaWQgcHV0SW1hZ2VE
YXRhKEJ5dGVBcnJheSomIHNvdXJjZSwgY28KICAgICBjYW52YXMtPndyaXRlUGl4ZWxzKHNyY0Jp
dG1hcCwgZGVzdFgsIGRlc3RZLCBjb25maWc4ODg4KTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6
cHV0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXpl
JiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYg
ZGVzdFBvaW50KQotewotICAgIHB1dEltYWdlRGF0YTxVbm11bHRpcGxpZWQ+KHNvdXJjZSwgc291
cmNlU2l6ZSwgc291cmNlUmVjdCwgZGVzdFBvaW50LCBjb250ZXh0KCktPnBsYXRmb3JtQ29udGV4
dCgpLT5jYW52YXMoKSwgbV9zaXplKTsKLX0KLQotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0UHJlbXVs
dGlwbGllZEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNl
U2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2lu
dCkKLXsKLSAgICBwdXRJbWFnZURhdGE8UHJlbXVsdGlwbGllZD4oc291cmNlLCBzb3VyY2VTaXpl
LCBzb3VyY2VSZWN0LCBkZXN0UG9pbnQsIGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmNh
bnZhcygpLCBtX3NpemUpOwotfQotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHN0YXRpYyBib29s
IGVuY29kZUltYWdlKFQmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91
YmxlKiBxdWFsaXR5LCBWZWN0b3I8Y2hhcj4qIG91dHB1dCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyV2luQ0UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVy
V2luQ0UuY3BwCShyZXZpc2lvbiAxMDY2ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldpbkNFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgz
LDkgKzE4Myw5IEBAIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHIKICAg
ICByZXR1cm4gZ2V0SW1hZ2VEYXRhPHRydWU+KHJlY3QsIG1fZGF0YS5tX2JpdG1hcC5nZXQoKSk7
CiB9CiAKLXRlbXBsYXRlIDxib29sIHByZW11bHRpcGxpZWQ+Ci1zdGF0aWMgdm9pZCBwdXRJbWFn
ZURhdGEoQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIFNoYXJlZEJp
dG1hcCogYml0bWFwKQordm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11
bHRpcGxpZWQsIEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQogewor
ICAgIFNoYXJlZEJpdG1hcCogYml0bWFwID0gbV9kYXRhLm1fYml0bWFwLmdldCgpOwogICAgIHVu
c2lnbmVkIGNoYXIqIGRzdCA9ICh1bnNpZ25lZCBjaGFyKiliaXRtYXAtPmJ5dGVzKCk7CiAgICAg
aWYgKCFkc3QpCiAgICAgICAgIHJldHVybjsKQEAgLTIxMSw3ICsyMTEsNyBAQCBzdGF0aWMgdm9p
ZCBwdXRJbWFnZURhdGEoQnl0ZUFycmF5KiBzb3VyCiAgICAgICAgICAgICBpbnQgZ3JlZW4gPSAq
c3JjKys7CiAgICAgICAgICAgICBpbnQgYmx1ZSA9ICpzcmMrKzsKICAgICAgICAgICAgIGludCBh
bHBoYSA9ICpzcmMrKzsKLSAgICAgICAgICAgIGlmIChwcmVtdWx0aXBsaWVkKSB7CisgICAgICAg
ICAgICBpZiAobXVsdGlwbGllZCA9PSBQcmVtdWx0aXBsaWVkKSB7CiAgICAgICAgICAgICAgICAg
KmRzdCsrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYmx1ZSAqIDI1NSAvIGFscGhhKTsK
ICAgICAgICAgICAgICAgICAqZHN0KysgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihncmVl
biAqIDI1NSAvIGFscGhhKTsKICAgICAgICAgICAgICAgICAqZHN0KysgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPihyZWQgKiAyNTUgLyBhbHBoYSk7CkBAIC0yMjgsMTYgKzIyOCw2IEBAIHN0
YXRpYyB2b2lkIHB1dEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXIKICAgICB9CiB9CiAKLXZvaWQg
SW1hZ2VCdWZmZXI6OnB1dFVubXVsdGlwbGllZEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXJjZSwg
Y29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UG9pbnQmIGRlc3RQb2ludCkKLXsKLSAgICBwdXRJbWFnZURhdGE8ZmFsc2U+KHNvdXJj
ZSwgc291cmNlU2l6ZSwgc291cmNlUmVjdCwgZGVzdFBvaW50LCBtX2RhdGEubV9iaXRtYXAuZ2V0
KCkpOwotfQotCi12b2lkIEltYWdlQnVmZmVyOjpwdXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKEJ5
dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQotewotICAgIHB1dEltYWdl
RGF0YTx0cnVlPihzb3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3QsIGRlc3RQb2ludCwgbV9k
YXRhLm1fYml0bWFwLmdldCgpKTsKLX0KLQogdm9pZCBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1UcmFu
c2Zvcm1Db2xvclNwYWNlKGNvbnN0IFZlY3RvcjxpbnQ+JiBsb29rVXBUYWJsZSkKIHsKICAgICBV
TlVTRURfUEFSQU0obG9va1VwVGFibGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd3gvSW1hZ2VCdWZmZXJXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VCdWZmZXJXeC5jcHAJKHJldmlzaW9uIDEwNjY4
NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlQnVmZmVyV3gu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MiwxMiArNzIsNyBAQCBQYXNzUmVmUHRyPEJ5dGVBcnJh
eT4gSW1hZ2VCdWZmZXI6OmdldFByCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgSW1hZ2VCdWZm
ZXI6OnB1dFVubXVsdGlwbGllZEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50
U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9p
bnQmIGRlc3RQb2ludCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEltYWdl
QnVmZmVyOjpwdXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKEJ5dGVBcnJheSogc291cmNlLCBjb25z
dCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRQb2ludCYgZGVzdFBvaW50KQordm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRp
cGx5IG11bHRpcGxpZWQsIEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VT
aXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgJKHJldmlzaW9uIDEw
NjY4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJm
YWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsNyBAQCB0eXBlZGVmIGVudW0gewog
ICAgIHdrUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZwogfSB3a1BhdHRlcm5UaWxpbmc7CiBl
eHRlcm4gQ0dQYXR0ZXJuUmVmICgqd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zv
cm0pKENHSW1hZ2VSZWYsIENHQWZmaW5lVHJhbnNmb3JtLCBpbnQpOworZXh0ZXJuIHZvaWQgKCp3
a0NHQ29udGV4dFJlc2V0Q2xpcCkoQ0dDb250ZXh0UmVmKTsKIGV4dGVybiBDRlJlYWRTdHJlYW1S
ZWYgKCp3a0NyZWF0ZUN1c3RvbUNGUmVhZFN0cmVhbSkodm9pZCAqKCpmb3JtQ3JlYXRlKShDRlJl
YWRTdHJlYW1SZWYsIHZvaWQgKiksIAogICAgIHZvaWQgKCpmb3JtRmluYWxpemUpKENGUmVhZFN0
cmVhbVJlZiwgdm9pZCAqKSwgCiAgICAgQm9vbGVhbiAoKmZvcm1PcGVuKShDRlJlYWRTdHJlYW1S
ZWYsIENGU3RyZWFtRXJyb3IgKiwgQm9vbGVhbiAqLCB2b2lkICopLCAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1t
CShyZXZpc2lvbiAxMDY2ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMyLDYgKzEzMiw3IEBAIENU
TGluZVJlZiAoKndrQ3JlYXRlQ1RMaW5lV2l0aFVuaUNoYXJQcm8KICNpZiAhZGVmaW5lZChCVUlM
RElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCiBD
VFR5cGVzZXR0ZXJSZWYgKCp3a0NyZWF0ZUNUVHlwZXNldHRlcldpdGhVbmlDaGFyUHJvdmlkZXJB
bmRPcHRpb25zKShjb25zdCBVbmlDaGFyKiAoKnByb3ZpZGUpKENGSW5kZXggc3RyaW5nSW5kZXgs
IENGSW5kZXgqIGNoYXJDb3VudCwgQ0ZEaWN0aW9uYXJ5UmVmKiBhdHRyaWJ1dGVzLCB2b2lkKiks
IHZvaWQgKCpkaXNwb3NlKShjb25zdCBVbmlDaGFyKiBjaGFycywgdm9pZCopLCB2b2lkKiwgQ0ZE
aWN0aW9uYXJ5UmVmIG9wdGlvbnMpOwogCit2b2lkICgqd2tDR0NvbnRleHRSZXNldENsaXApKENH
Q29udGV4dFJlZik7CiBDR0NvbnRleHRSZWYgKCp3a0lPU3VyZmFjZUNvbnRleHRDcmVhdGUpKElP
U3VyZmFjZVJlZiBzdXJmYWNlLCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LCBDR0Nv
bG9yU3BhY2VSZWYgY29sb3JTcGFjZSk7CiBDR0ltYWdlUmVmICgqd2tJT1N1cmZhY2VDb250ZXh0
Q3JlYXRlSW1hZ2UpKENHQ29udGV4dFJlZiBjb250ZXh0KTsKIApJbmRleDogU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2
aXNpb24gMTA2Njg2KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDItMDMgIE1hdHRoZXcgRGVsYW5leSAgPG1kZWxhbmV5
QGFwcGxlLmNvbT4KKworICAgICAgICB0b0RhdGFVUkwoKSB1c2VzIHN0YWxlIGRhdGEgYWZ0ZXIg
cHV0SW1hZ2VEYXRhKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY1NzY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2Uu
bW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisKIDIwMTItMDItMDMg
IEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzY5MQpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5
c3RlbUludGVyZmFjZS5tbQkocmV2aXNpb24gMTA2Njg2KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uo
dm9pZCkKICAgICAgICAgSU5JVChDb3B5Q0ZMb2NhbGl6YXRpb25QcmVmZXJyZWROYW1lKTsKICAg
ICAgICAgSU5JVChDR0NvbnRleHRHZXRTaG91bGRTbW9vdGhGb250cyk7CiAgICAgICAgIElOSVQo
Q0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKTsKKyAgICAgICAgSU5JVChDR0Nv
bnRleHRSZXNldENsaXApOwogICAgICAgICBJTklUKENvcHlDT05ORUNUUHJveHlSZXNwb25zZSk7
CiAgICAgICAgIElOSVQoQ29weU5TVVJMUmVzcG9uc2VTdGF0dXNMaW5lKTsKICAgICAgICAgSU5J
VChDcmVhdGVDVExpbmVXaXRoVW5pQ2hhclByb3ZpZGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCShyZXZpc2lvbiAxMDY2ODYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTAyLTAzICBNYXR0
aGV3IERlbGFuZXkgIDxtZGVsYW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgdG9EYXRhVVJMKCkg
dXNlcyBzdGFsZSBkYXRhIGFmdGVyIHB1dEltYWdlRGF0YSgpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTc2NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDogVXBkYXRl
ZCBtZXRob2QgbmFtZS4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRvUGl4ZWxSZWFk
YmFja1RvQ2FudmFzKToKKwogMjAxMi0wMi0wMyAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3
NjkxCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDY2ODYpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0w
Mi0wMyAgTWF0dGhldyBEZWxhbmV5ICA8bWRlbGFuZXlAYXBwbGUuY29tPgorCisgICAgICAgIHRv
RGF0YVVSTCgpIHVzZXMgc3RhbGUgZGF0YSBhZnRlciBwdXRJbWFnZURhdGEoKQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU3NjcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YlN5c3RlbUludGVyZmFjZS5tbTogCisKIDIwMTItMDItMDMgIEFudHRpIEtvaXZpc3RvICA8YW50
dGlAYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03Nzc0MApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
U3lzdGVtSW50ZXJmYWNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQkocmV2aXNpb24gMTA2Njg2KQorKysgU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2Uodm9pZCkKICAgICBJTklUKEFkdmFuY2VEZWZhdWx0QnV0dG9uUHVsc2VBbmltYXRpb24pOwog
ICAgIElOSVQoQ0dDb250ZXh0R2V0U2hvdWxkU21vb3RoRm9udHMpOwogICAgIElOSVQoQ0dQYXR0
ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKTsKKyAgICBJTklUKENHQ29udGV4dFJlc2V0
Q2xpcCk7CiAgICAgSU5JVChDb3B5Q0ZMb2NhbGl6YXRpb25QcmVmZXJyZWROYW1lKTsKICAgICBJ
TklUKENvcHlDT05ORUNUUHJveHlSZXNwb25zZSk7CiAgICAgSU5JVChDb3B5TlNVUkxSZXNwb25z
ZVN0YXR1c0xpbmUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125403</attachid>
            <date>2012-02-03 13:47:01 -0800</date>
            <delta_ts>2012-02-06 11:54:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65767-20120203134700.patch</filename>
            <type>text/plain</type>
            <size>30249</size>
            <attacher name="Matthew Delaney">mdelaney7</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjY4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAyLTAzICBNYXR0aGV3
IERlbGFuZXkgIDxtZGVsYW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgdG9EYXRhVVJMKCkgdXNl
cyBzdGFsZSBkYXRhIGFmdGVyIHB1dEltYWdlRGF0YSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTc2NworCisgICAgICAgIFRoaXMgcGF0Y2ggZml4
ZXMgdGhlIGlzc3VlIHdlJ3ZlIGVuY291bnRlcmVkIG9mIGdldHRpbmcgYmFjaworICAgICAgICBz
dGFsZSBjb3BpZXMgb2YgdGhlIENHQ29udGV4dCBvZiBhY2NlbGVyYXRlZCBJbWFnZUJ1ZmZlcnMg
d2hvIGhhdmUgc2VlbgorICAgICAgICBwdXRJbWFnZURhdGEgY2FsbHMgYnV0IGhhdmUgbm90IGJl
ZW4gZHJhd24gaW50byB2aWEgdGhlIENHIEFQSS4KKyAgICAgICAgVGhpcyBpc3N1ZSBpcyBmaXhl
ZCBieSBtb2RpZnlpbmcgdGhlIHdheSB3ZSBpbXBsZW1lbnQgcHV0SW1hZ2VEYXRhCisgICAgICAg
IGluIEltYWdlQnVmZmVyQ0cgdG8gZHJhdyB0aGUgYml0cyB3cmFwcGVkIGluIGEgQ0dJbWFnZSB3
aGlsZSB0aGUgQ0dDb250ZXh0CisgICAgICAgIGlzIGluIGEgc3RhdGUgd2hlcmUgdGhlIGRhdGEg
d2lsbCBlZmZlY3RpdmVseSBiZSBjb3BpZWQgKGFzIGlzIG5lZWRlZCBmb3IKKyAgICAgICAgaW1w
bGVtZW50aW5nIHB1dEltYWdlRGF0YSkgaW5zdGVhZCBvZiBkaXJlY3RseSBtb2RpZnlpbmcgdGhl
IGJpdHMgb2YgdGhlIElPU3VyZmFjZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUT0RPOiBXaWxsIGFkZCBhIHBpeGVsIHRlc3QgZm9yIHRoaXMgKHNp
bmNlIHRoaXMgaXMgb25seSBhIHBhaW50aW5nIGlzc3VlKSBpbiB0aGUgbmV4dCBwYXRjaAorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6IEltcGxlbWVu
dCBuZXcgd2F5IG9mIHB1dHRpbmcgaW1hZ2UgZGF0YS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oOiBNZXJnZWQgdHdvIHByZXZpb3VzbHkgc2VwYXJhdGUgcHV0IGRh
dGEgY2FsbHMKKyAgICAgICAgICAgIGludG8gYSBzaW5nbGUgYW5kIG1vcmUgc2Vuc2libHkgbmFt
ZWQgJ3B1dEJ5dGVBcnJheScsIHNpbmNlIHRoYXQncyB3aGF0IGl0IGRvZXMhCisKKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjogQWRkZWQgbmV3IFdLU0kgY2FsbCBmb3IgdXNlIGluIEltYWdlQnVm
ZmVyQ0cuY3BwCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbToKKwor
ICAgICAgICBVc2luZyBuZXcgbWV0aG9kIG5hbWUuCisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5j
cHA6ICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JN
YXRyaXguY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hh
ZG93LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVj
dC5jcHA6CisKKyAgICAgICAgVXBkYXRlZCBvdGhlciBwb3J0cycgSW1hZ2VCdWZmZXJzIHRvIHVz
ZSBuZXcgbWV0aG9kLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm8uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVy
UXQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lh
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldpbkNF
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4LmNwcDoK
KwogMjAxMi0wMi0wMyAgQW5kcmVhcyBLbGluZyAgPGF3ZXNvbWVrbGluZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgSFRNTEVsZW1lbnQ6IENsZWFuIHVwIHRhYmluZGV4IGF0dHJpYnV0ZSBwYXJzaW5n
LgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDEwNjY4NikKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNDg3LDYgKzE0ODcsNyBA
QCBfc3RyaW5nSXNDYXNlSW5zZW5zaXRpdmVFcXVhbFRvU3RyaW5nCiBfc3VnZ2VzdGVkRmlsZW5h
bWVXaXRoTUlNRVR5cGUKIF93a0FkdmFuY2VEZWZhdWx0QnV0dG9uUHVsc2VBbmltYXRpb24KIF93
a0NHQ29udGV4dEdldFNob3VsZFNtb290aEZvbnRzCitfd2tDR0NvbnRleHRSZXNldENsaXAKIF93
a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybQogX3drQ29weUNGTG9jYWxpemF0
aW9uUHJlZmVycmVkTmFtZQogX3drQ29weUNGVVJMUmVzcG9uc2VTdWdnZXN0ZWRGaWxlbmFtZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lvbiAxMDY2ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTc4LDcgKzE5NzgsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cHV0SW1h
Z2VECiAgICAgSW50UmVjdCBzb3VyY2VSZWN0KGRlc3RSZWN0KTsKICAgICBzb3VyY2VSZWN0Lm1v
dmUoLWRlc3RPZmZzZXQpOwogCi0gICAgYnVmZmVyLT5wdXRVbm11bHRpcGxpZWRJbWFnZURhdGEo
ZGF0YS0+ZGF0YSgpLT5kYXRhKCksIEludFNpemUoZGF0YS0+d2lkdGgoKSwgZGF0YS0+aGVpZ2h0
KCkpLCBzb3VyY2VSZWN0LCBJbnRQb2ludChkZXN0T2Zmc2V0KSk7CisgICAgYnVmZmVyLT5wdXRC
eXRlQXJyYXkoVW5tdWx0aXBsaWVkLCBkYXRhLT5kYXRhKCktPmRhdGEoKSwgSW50U2l6ZShkYXRh
LT53aWR0aCgpLCBkYXRhLT5oZWlnaHQoKSksIHNvdXJjZVJlY3QsIEludFBvaW50KGRlc3RPZmZz
ZXQpKTsKICAgICBkaWREcmF3KGRlc3RSZWN0LCBDYW52YXNEaWREcmF3QXBwbHlOb25lKTsgLy8g
aWdub3JlIHRyYW5zZm9ybSwgc2hhZG93IGFuZCBjbGlwCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAJKHJldmlzaW9uIDEw
NjY4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBpbmxpbmUgdm9pZCBJbWFnZUJ1ZmZl
cjo6Z2VuZXJpY0NvbnZlcnRUCiAgICAgICAgIGRvdWJsZSBsdW1hID0gKHIgKiAwLjIxMjUgKyBn
ICogMC43MTU0ICsgYiAqIDAuMDcyMSkgKiAoKGRvdWJsZSlhIC8gMjU1LjApOwogICAgICAgICBz
cmNQaXhlbEFycmF5LT5zZXQocGl4ZWxPZmZzZXQgKyAzLCBsdW1hKTsKICAgICB9Ci0gICAgcHV0
VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKHNyY1BpeGVsQXJyYXkuZ2V0KCksIGx1bWluYW5jZVJlY3Qu
c2l6ZSgpLCBsdW1pbmFuY2VSZWN0LCBJbnRQb2ludCgpKTsKKyAgICBwdXRCeXRlQXJyYXkoVW5t
dWx0aXBsaWVkLCBzcmNQaXhlbEFycmF5LmdldCgpLCBsdW1pbmFuY2VSZWN0LnNpemUoKSwgbHVt
aW5hbmNlUmVjdCwgSW50UG9pbnQoKSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmNvbnZlcnRU
b0x1bWluYW5jZU1hc2soKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oCShyZXZpc2lvbiAxMDY2ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsOCAr
MTAxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQYXNzUmVmUHRyPEJ5dGVBcnJh
eT4gZ2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmKSBjb25zdDsKICAgICAg
ICAgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IGdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3Qg
SW50UmVjdCYpIGNvbnN0OwogCi0gICAgICAgIHZvaWQgcHV0VW5tdWx0aXBsaWVkSW1hZ2VEYXRh
KEJ5dGVBcnJheSosIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpOwotICAgICAgICB2b2lkIHB1dFBy
ZW11bHRpcGxpZWRJbWFnZURhdGEoQnl0ZUFycmF5KiwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6
ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCk7
CisgICAgICAgIHZvaWQgcHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIEJ5dGVBcnJh
eSosIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpOwogICAgICAgICAKICAgICAgICAgdm9pZCBjb252
ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7CiAgICAgICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAJKHJldmlzaW9uIDEwNjY4NikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04MjgsNyArODI4LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpibHVyU2hhZG93QnVm
ZmVyKGNvbnN0IAogICAgIEludFJlY3QgYmx1clJlY3QoSW50UG9pbnQoKSwgdGVtcGxhdGVTaXpl
KTsKICAgICBSZWZQdHI8Qnl0ZUFycmF5PiBsYXllckRhdGEgPSBtX2xheWVySW1hZ2UtPmdldFVu
bXVsdGlwbGllZEltYWdlRGF0YShibHVyUmVjdCk7CiAgICAgYmx1ckxheWVySW1hZ2UobGF5ZXJE
YXRhLT5kYXRhKCksIGJsdXJSZWN0LnNpemUoKSwgYmx1clJlY3Qud2lkdGgoKSAqIDQpOwotICAg
IG1fbGF5ZXJJbWFnZS0+cHV0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGxheWVyRGF0YS5nZXQoKSwg
Ymx1clJlY3Quc2l6ZSgpLCBibHVyUmVjdCwgSW50UG9pbnQoKSk7CisgICAgbV9sYXllckltYWdl
LT5wdXRCeXRlQXJyYXkoVW5tdWx0aXBsaWVkLCBsYXllckRhdGEuZ2V0KCksIGJsdXJSZWN0LnNp
emUoKSwgYmx1clJlY3QsIEludFBvaW50KCkpOwogfQogCiB2b2lkIFNoYWRvd0JsdXI6OmJsdXJB
bmRDb2xvclNoYWRvd0J1ZmZlcihjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvLmNwcAkocmV2aXNpb24gMTA2Njg2KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIwNCwxMiArMjA0LDExIEBAIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZl
cjo6Z2V0UHIKICAgICByZXR1cm4gZ2V0SW1hZ2VEYXRhPFByZW11bHRpcGxpZWQ+KHJlY3QsIG1f
ZGF0YSwgbV9zaXplKTsKIH0KIAotdGVtcGxhdGUgPE11bHRpcGx5IG11bHRpcGxpZWQ+Ci12b2lk
IHB1dEltYWdlRGF0YShCeXRlQXJyYXkqJiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNp
emUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQs
IEltYWdlQnVmZmVyRGF0YSYgZGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3ZvaWQgSW1hZ2VC
dWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBCeXRlQXJyYXkqIHNvdXJj
ZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkKIHsKLSAgICBBU1NFUlQoY2Fpcm9fc3VyZmFjZV9n
ZXRfdHlwZShkYXRhLm1fc3VyZmFjZSkgPT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKTsKKyAg
ICBBU1NFUlQoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShtX2RhdGEubV9zdXJmYWNlKSA9PSBDQUlS
T19TVVJGQUNFX1RZUEVfSU1BR0UpOwogCi0gICAgdW5zaWduZWQgY2hhciogZGF0YURzdCA9IGNh
aXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoZGF0YS5tX3N1cmZhY2UpOworICAgIHVuc2lnbmVk
IGNoYXIqIGRhdGFEc3QgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKG1fZGF0YS5tX3N1
cmZhY2UpOwogCiAgICAgQVNTRVJUKHNvdXJjZVJlY3Qud2lkdGgoKSA+IDApOwogICAgIEFTU0VS
VChzb3VyY2VSZWN0LmhlaWdodCgpID4gMCk7CkBAIC0yMTcsMjggKzIxNiwyOCBAQCB2b2lkIHB1
dEltYWdlRGF0YShCeXRlQXJyYXkqJiBzb3VyY2UsIGNvCiAgICAgaW50IG9yaWdpbnggPSBzb3Vy
Y2VSZWN0LngoKTsKICAgICBpbnQgZGVzdHggPSBkZXN0UG9pbnQueCgpICsgc291cmNlUmVjdC54
KCk7CiAgICAgQVNTRVJUKGRlc3R4ID49IDApOwotICAgIEFTU0VSVChkZXN0eCA8IHNpemUud2lk
dGgoKSk7CisgICAgQVNTRVJUKGRlc3R4IDwgbV9zaXplLndpZHRoKCkpOwogICAgIEFTU0VSVChv
cmlnaW54ID49IDApOwogICAgIEFTU0VSVChvcmlnaW54IDw9IHNvdXJjZVJlY3QubWF4WCgpKTsK
IAogICAgIGludCBlbmR4ID0gZGVzdFBvaW50LngoKSArIHNvdXJjZVJlY3QubWF4WCgpOwotICAg
IEFTU0VSVChlbmR4IDw9IHNpemUud2lkdGgoKSk7CisgICAgQVNTRVJUKGVuZHggPD0gbV9zaXpl
LndpZHRoKCkpOwogCiAgICAgaW50IG51bUNvbHVtbnMgPSBlbmR4IC0gZGVzdHg7CiAKICAgICBp
bnQgb3JpZ2lueSA9IHNvdXJjZVJlY3QueSgpOwogICAgIGludCBkZXN0eSA9IGRlc3RQb2ludC55
KCkgKyBzb3VyY2VSZWN0LnkoKTsKICAgICBBU1NFUlQoZGVzdHkgPj0gMCk7Ci0gICAgQVNTRVJU
KGRlc3R5IDwgc2l6ZS5oZWlnaHQoKSk7CisgICAgQVNTRVJUKGRlc3R5IDwgbV9zaXplLmhlaWdo
dCgpKTsKICAgICBBU1NFUlQob3JpZ2lueSA+PSAwKTsKICAgICBBU1NFUlQob3JpZ2lueSA8PSBz
b3VyY2VSZWN0Lm1heFkoKSk7CiAKICAgICBpbnQgZW5keSA9IGRlc3RQb2ludC55KCkgKyBzb3Vy
Y2VSZWN0Lm1heFkoKTsKLSAgICBBU1NFUlQoZW5keSA8PSBzaXplLmhlaWdodCgpKTsKKyAgICBB
U1NFUlQoZW5keSA8PSBtX3NpemUuaGVpZ2h0KCkpOwogICAgIGludCBudW1Sb3dzID0gZW5keSAt
IGRlc3R5OwogCiAgICAgdW5zaWduZWQgc3JjQnl0ZXNQZXJSb3cgPSA0ICogc291cmNlU2l6ZS53
aWR0aCgpOwotICAgIGludCBzdHJpZGUgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUo
ZGF0YS5tX3N1cmZhY2UpOworICAgIGludCBzdHJpZGUgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF9zdHJpZGUobV9kYXRhLm1fc3VyZmFjZSk7CiAKICAgICB1bnNpZ25lZCBjaGFyKiBzcmNSb3dz
ID0gc291cmNlLT5kYXRhKCkgKyBvcmlnaW55ICogc3JjQnl0ZXNQZXJSb3cgKyBvcmlnaW54ICog
NDsKICAgICBmb3IgKGludCB5ID0gMDsgeSA8IG51bVJvd3M7ICsreSkgewpAQCAtMjU3LDIxICsy
NTYsMTEgQEAgdm9pZCBwdXRJbWFnZURhdGEoQnl0ZUFycmF5KiYgc291cmNlLCBjbwogICAgICAg
ICB9CiAgICAgICAgIHNyY1Jvd3MgKz0gc3JjQnl0ZXNQZXJSb3c7CiAgICAgfQotICAgIGNhaXJv
X3N1cmZhY2VfbWFya19kaXJ0eV9yZWN0YW5nbGUgKGRhdGEubV9zdXJmYWNlLAorICAgIGNhaXJv
X3N1cmZhY2VfbWFya19kaXJ0eV9yZWN0YW5nbGUobV9kYXRhLm1fc3VyZmFjZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0eCwgZGVzdHksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtQ29sdW1ucywgbnVtUm93cyk7CiB9CiAK
LXZvaWQgSW1hZ2VCdWZmZXI6OnB1dFVubXVsdGlwbGllZEltYWdlRGF0YShCeXRlQXJyYXkqIHNv
dXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkKLXsKLSAgICBwdXRJbWFnZURhdGE8VW5tdWx0
aXBsaWVkPihzb3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3QsIGRlc3RQb2ludCwgbV9kYXRh
LCBtX3NpemUpOwotfQotCi12b2lkIEltYWdlQnVmZmVyOjpwdXRQcmVtdWx0aXBsaWVkSW1hZ2VE
YXRhKEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQotewotICAgIHB1
dEltYWdlRGF0YTxQcmVtdWx0aXBsaWVkPihzb3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3Qs
IGRlc3RQb2ludCwgbV9kYXRhLCBtX3NpemUpOwotfQotCiAjaWYgIVBMQVRGT1JNKEdUSykKIHN0
YXRpYyBjYWlyb19zdGF0dXNfdCB3cml0ZUZ1bmN0aW9uKHZvaWQqIGNsb3N1cmUsIGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGludCBsZW5ndGgpCiB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNw
cAkocmV2aXNpb24gMTA2Njg2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNywyNiArMzA3LDM4IEBA
IFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHIKICAgICByZXR1cm4gbV9k
YXRhLmdldERhdGEocmVjdCwgbV9zaXplLCBtX2NvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0
KCksIGZhbHNlKTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0VW5tdWx0aXBsaWVkSW1hZ2VE
YXRhKEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQordm9pZCBJbWFn
ZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIEJ5dGVBcnJheSogc291
cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQogewogICAgIGlmIChtX2NvbnRleHQtPmlzQWNj
ZWxlcmF0ZWRDb250ZXh0KCkpIHsKLSAgICAgICAgQ0dDb250ZXh0Rmx1c2goY29udGV4dCgpLT5w
bGF0Zm9ybUNvbnRleHQoKSk7Ci0jaWYgZGVmaW5lZChCVUlMRElOR19PTl9MSU9OKQotICAgICAg
ICBtX2RhdGEubV9sYXN0Rmx1c2hUaW1lID0gY3VycmVudFRpbWVNUygpOwotI2VuZGlmCi0gICAg
fQotICAgIG1fZGF0YS5wdXREYXRhKHNvdXJjZSwgc291cmNlU2l6ZSwgc291cmNlUmVjdCwgZGVz
dFBvaW50LCBtX3NpemUsIG1fY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSwgdHJ1ZSk7
Ci19CisgICAgICAgIEludFNpemUgc291cmNlQ29weVNpemUoc291cmNlUmVjdC53aWR0aCgpLCBz
b3VyY2VSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBzb3VyY2VD
b3B5ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzb3VyY2VDb3B5U2l6ZSwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgVW5hY2NlbGVyYXRlZCk7CisgICAgICAgIGlmICghc291cmNlQ29weSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBpZiAobXVsdGlwbGllZCA9PSBVbm11bHRpcGxpZWQpCisg
ICAgICAgICAgICBzb3VyY2VDb3B5LT5tX2RhdGEucHV0RGF0YShzb3VyY2UsIHNvdXJjZVNpemUs
IHNvdXJjZVJlY3QsIEludFBvaW50KC1zb3VyY2VSZWN0LngoKSwgLXNvdXJjZVJlY3QueSgpKSwg
c291cmNlQ29weS0+c2l6ZSgpLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHNvdXJjZUNvcHktPm1fZGF0YS5wdXREYXRhKHNvdXJjZSwgc291cmNlU2l6ZSwgc291cmNl
UmVjdCwgSW50UG9pbnQoLXNvdXJjZVJlY3QueCgpLCAtc291cmNlUmVjdC55KCkpLCBzb3VyY2VD
b3B5LT5zaXplKCksIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIAorICAgICAgICAvLyBTZXQgdXAg
Y29udGV4dCBmb3IgdXNpbmcgZHJhd0ltYWdlIGFzIGEgZGlyZWN0IGJpdCBjb3B5CisgICAgICAg
IENHQ29udGV4dFJlZiBkZXN0Q29udGV4dCA9IGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCk7
CisgICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUoZGVzdENvbnRleHQpOworICAgICAgICBDR0Nv
bnRleHRDb25jYXRDVE0oZGVzdENvbnRleHQsIEFmZmluZVRyYW5zZm9ybShDR0NvbnRleHRHZXRD
VE0oZGVzdENvbnRleHQpKS5pbnZlcnNlKCkpOworICAgICAgICB3a0NHQ29udGV4dFJlc2V0Q2xp
cChkZXN0Q29udGV4dCk7CisgICAgICAgIENHQ29udGV4dFNldEludGVycG9sYXRpb25RdWFsaXR5
KGRlc3RDb250ZXh0LCBrQ0dJbnRlcnBvbGF0aW9uTm9uZSk7CisgICAgICAgIENHQ29udGV4dFNl
dEFscGhhKGRlc3RDb250ZXh0LCAxLjApOworICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUo
ZGVzdENvbnRleHQsIGtDR0JsZW5kTW9kZUNvcHkpOworICAgICAgICBDR0NvbnRleHRTZXRTaGFk
b3dXaXRoQ29sb3IoZGVzdENvbnRleHQsIENHU2l6ZVplcm8sIDAsIDApOworCisgICAgICAgIC8v
IERyYXcgdGhlIGltYWdlIGluIENHIGNvb3JkaW5hdGUgc3BhY2UKKyAgICAgICAgSW50UG9pbnQg
ZGVzdFBvaW50SW5DR0Nvb3JkcyhkZXN0UG9pbnQueCgpICsgc291cmNlUmVjdC54KCksIG1fc2l6
ZS5oZWlnaHQoKSAtIChkZXN0UG9pbnQueSgpK3NvdXJjZVJlY3QueSgpKSAtIHNvdXJjZVJlY3Qu
aGVpZ2h0KCkpOworICAgICAgICBJbnRSZWN0IGRlc3RSZWN0SW5DR0Nvb3JkcyhkZXN0UG9pbnRJ
bkNHQ29vcmRzLCBzb3VyY2VDb3B5U2l6ZSk7CisgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBzb3VyY2VDb3B5SW1hZ2UoQWRvcHRDRiwgc291cmNlQ29weS0+Y29weU5hdGl2ZUltYWdlKCkp
OworICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoZGVzdENvbnRleHQsIGRlc3RSZWN0SW5DR0Nv
b3Jkcywgc291cmNlQ29weUltYWdlLmdldCgpKTsKIAotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0UHJl
bXVsdGlwbGllZEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291
cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQ
b2ludCkKLXsKLSAgICBpZiAobV9jb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7Ci0g
ICAgICAgIENHQ29udGV4dEZsdXNoKGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCkpOwotI2lm
IGRlZmluZWQoQlVJTERJTkdfT05fTElPTikKLSAgICAgICAgbV9kYXRhLm1fbGFzdEZsdXNoVGlt
ZSA9IGN1cnJlbnRUaW1lTVMoKTsKLSNlbmRpZgotICAgIH0KLSAgICBtX2RhdGEucHV0RGF0YShz
b3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3QsIGRlc3RQb2ludCwgbV9zaXplLCBtX2NvbnRl
eHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCksIGZhbHNlKTsKKyAgICAgICAgQ0dDb250ZXh0UmVz
dG9yZUdTdGF0ZShkZXN0Q29udGV4dCk7CisgICAgfSBlbHNlCisgICAgICAgIG1fZGF0YS5wdXRE
YXRhKHNvdXJjZSwgc291cmNlU2l6ZSwgc291cmNlUmVjdCwgZGVzdFBvaW50LCBtX3NpemUsIG1f
Y29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSwgbXVsdGlwbGllZCA9PSBVbm11bHRpcGxp
ZWQpOwogfQogCiBzdGF0aWMgaW5saW5lIENGU3RyaW5nUmVmIGpwZWdVVEkoKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29sb3JNYXRyaXguY3BwCShyZXZpc2lvbiAxMDY2ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODcsNyArMTg3LDcgQEAgdm9pZCBGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdh
cgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICByZXN1bHRJbWFnZS0+cHV0VW5tdWx0aXBs
aWVkSW1hZ2VEYXRhKHBpeGVsQXJyYXkuZ2V0KCksIGltYWdlUmVjdC5zaXplKCksIGltYWdlUmVj
dCwgSW50UG9pbnQoKSk7CisgICAgcmVzdWx0SW1hZ2UtPnB1dEJ5dGVBcnJheShVbm11bHRpcGxp
ZWQsIHBpeGVsQXJyYXkuZ2V0KCksIGltYWdlUmVjdC5zaXplKCksIGltYWdlUmVjdCwgSW50UG9p
bnQoKSk7CiB9CiAKIHZvaWQgRkVDb2xvck1hdHJpeDo6ZHVtcCgpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFk
b3cuY3BwCShyZXZpc2lvbiAxMDY2ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw3ICsx
MDgsNyBAQCB2b2lkIEZFRHJvcFNoYWRvdzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlCiAKICAgICBj
b250ZXh0U2hhZG93LmJsdXJMYXllckltYWdlKHNyY1BpeGVsQXJyYXktPmRhdGEoKSwgc2hhZG93
QXJlYS5zaXplKCksIDQgKiBzaGFkb3dBcmVhLnNpemUoKS53aWR0aCgpKTsKIAotICAgIHJlc3Vs
dEltYWdlLT5wdXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKHNyY1BpeGVsQXJyYXkuZ2V0KCksIHNo
YWRvd0FyZWEuc2l6ZSgpLCBzaGFkb3dBcmVhLCBJbnRQb2ludCgpKTsKKyAgICByZXN1bHRJbWFn
ZS0+cHV0Qnl0ZUFycmF5KFByZW11bHRpcGxpZWQsIHNyY1BpeGVsQXJyYXkuZ2V0KCksIHNoYWRv
d0FyZWEuc2l6ZSgpLCBzaGFkb3dBcmVhLCBJbnRQb2ludCgpKTsKIAogICAgIHJlc3VsdENvbnRl
eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVTb3VyY2VJbik7CiAgICAgcmVzdWx0
Q29udGV4dC0+ZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJl
Y3QoKS5zaXplKCkpLCBtX3NoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdC5jcHAJKHJldmlzaW9uIDEwNjY4NikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTMwLDkgKzEzMCw5IEBAIEltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmFzSW1hZ2VCdWZm
ZXIKICAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShtX2Fic29s
dXRlUGFpbnRSZWN0LnNpemUoKSwgQ29sb3JTcGFjZUxpbmVhclJHQiwgbV9maWx0ZXItPnJlbmRl
cmluZ01vZGUoKSk7CiAgICAgSW50UmVjdCBkZXN0aW5hdGlvblJlY3QoSW50UG9pbnQoKSwgbV9h
YnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgIGlmIChtX3ByZW11bHRpcGxpZWRJbWFnZVJl
c3VsdCkKLSAgICAgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdC0+cHV0UHJlbXVsdGlwbGllZEltYWdl
RGF0YShtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdC5nZXQoKSwgZGVzdGluYXRpb25SZWN0LnNp
emUoKSwgZGVzdGluYXRpb25SZWN0LCBJbnRQb2ludCgpKTsKKyAgICAgICAgbV9pbWFnZUJ1ZmZl
clJlc3VsdC0+cHV0Qnl0ZUFycmF5KFByZW11bHRpcGxpZWQsIG1fcHJlbXVsdGlwbGllZEltYWdl
UmVzdWx0LmdldCgpLCBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpLCBkZXN0aW5hdGlvblJlY3QsIElu
dFBvaW50KCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdC0+cHV0VW5t
dWx0aXBsaWVkSW1hZ2VEYXRhKG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQuZ2V0KCksIGRlc3Rp
bmF0aW9uUmVjdC5zaXplKCksIGRlc3RpbmF0aW9uUmVjdCwgSW50UG9pbnQoKSk7CisgICAgICAg
IG1faW1hZ2VCdWZmZXJSZXN1bHQtPnB1dEJ5dGVBcnJheShVbm11bHRpcGxpZWQsIG1fdW5tdWx0
aXBsaWVkSW1hZ2VSZXN1bHQuZ2V0KCksIGRlc3RpbmF0aW9uUmVjdC5zaXplKCksIGRlc3RpbmF0
aW9uUmVjdCwgSW50UG9pbnQoKSk7CiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0
KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdl
QnVmZmVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCShyZXZpc2lvbiAxMDY2ODYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjk5LDggKzI5OSw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHByZW11bHRp
cGx5QUIKICAgICByZXR1cm4geDsKIH0KIAotdGVtcGxhdGUgPE11bHRpcGx5IG11bHRpcGxpZWQ+
Ci12b2lkIHB1dEltYWdlRGF0YShCeXRlQXJyYXkqJiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNv
dXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0
UG9pbnQsIEltYWdlQnVmZmVyRGF0YSYgZGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3ZvaWQg
SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBCeXRlQXJyYXkq
IHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkKIHsKICAgICBBU1NFUlQoc291cmNlUmVj
dC53aWR0aCgpID4gMCk7CiAgICAgQVNTRVJUKHNvdXJjZVJlY3QuaGVpZ2h0KCkgPiAwKTsKQEAg
LTMwOCwyNCArMzA3LDI0IEBAIHZvaWQgcHV0SW1hZ2VEYXRhKEJ5dGVBcnJheSomIHNvdXJjZSwg
Y28KICAgICBpbnQgb3JpZ2lueCA9IHNvdXJjZVJlY3QueCgpOwogICAgIGludCBkZXN0eCA9IGRl
c3RQb2ludC54KCkgKyBzb3VyY2VSZWN0LngoKTsKICAgICBBU1NFUlQoZGVzdHggPj0gMCk7Ci0g
ICAgQVNTRVJUKGRlc3R4IDwgc2l6ZS53aWR0aCgpKTsKKyAgICBBU1NFUlQoZGVzdHggPCBtX3Np
emUud2lkdGgoKSk7CiAgICAgQVNTRVJUKG9yaWdpbnggPj0gMCk7CiAgICAgQVNTRVJUKG9yaWdp
bnggPD0gc291cmNlUmVjdC5tYXhYKCkpOwogCiAgICAgaW50IGVuZHggPSBkZXN0UG9pbnQueCgp
ICsgc291cmNlUmVjdC5tYXhYKCk7Ci0gICAgQVNTRVJUKGVuZHggPD0gc2l6ZS53aWR0aCgpKTsK
KyAgICBBU1NFUlQoZW5keCA8PSBtX3NpemUud2lkdGgoKSk7CiAKICAgICBpbnQgbnVtQ29sdW1u
cyA9IGVuZHggLSBkZXN0eDsKIAogICAgIGludCBvcmlnaW55ID0gc291cmNlUmVjdC55KCk7CiAg
ICAgaW50IGRlc3R5ID0gZGVzdFBvaW50LnkoKSArIHNvdXJjZVJlY3QueSgpOwogICAgIEFTU0VS
VChkZXN0eSA+PSAwKTsKLSAgICBBU1NFUlQoZGVzdHkgPCBzaXplLmhlaWdodCgpKTsKKyAgICBB
U1NFUlQoZGVzdHkgPCBtX3NpemUuaGVpZ2h0KCkpOwogICAgIEFTU0VSVChvcmlnaW55ID49IDAp
OwogICAgIEFTU0VSVChvcmlnaW55IDw9IHNvdXJjZVJlY3QubWF4WSgpKTsKIAogICAgIGludCBl
bmR5ID0gZGVzdFBvaW50LnkoKSArIHNvdXJjZVJlY3QubWF4WSgpOwotICAgIEFTU0VSVChlbmR5
IDw9IHNpemUuaGVpZ2h0KCkpOworICAgIEFTU0VSVChlbmR5IDw9IG1fc2l6ZS5oZWlnaHQoKSk7
CiAgICAgaW50IG51bVJvd3MgPSBlbmR5IC0gZGVzdHk7CiAKICAgICB1bnNpZ25lZCBzcmNCeXRl
c1BlclJvdyA9IDQgKiBzb3VyY2VTaXplLndpZHRoKCk7CkBAIC0zNTksMzUgKzM1OCwyNSBAQCB2
b2lkIHB1dEltYWdlRGF0YShCeXRlQXJyYXkqJiBzb3VyY2UsIGNvCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBib29sIGlzUGFpbnRpbmcgPSBkYXRhLm1fcGFpbnRlci0+aXNBY3RpdmUoKTsKKyAg
ICBib29sIGlzUGFpbnRpbmcgPSBtX2RhdGEubV9wYWludGVyLT5pc0FjdGl2ZSgpOwogICAgIGlm
ICghaXNQYWludGluZykKLSAgICAgICAgZGF0YS5tX3BhaW50ZXItPmJlZ2luKCZkYXRhLm1fcGl4
bWFwKTsKKyAgICAgICAgbV9kYXRhLm1fcGFpbnRlci0+YmVnaW4oJm1fZGF0YS5tX3BpeG1hcCk7
CiAgICAgZWxzZSB7Ci0gICAgICAgIGRhdGEubV9wYWludGVyLT5zYXZlKCk7CisgICAgICAgIG1f
ZGF0YS5tX3BhaW50ZXItPnNhdmUoKTsKIAogICAgICAgICAvLyBwdXRJbWFnZURhdGEoKSBzaG91
bGQgYmUgdW5hZmZlY3RlZCBieSBwYWludGVyIHN0YXRlCi0gICAgICAgIGRhdGEubV9wYWludGVy
LT5yZXNldFRyYW5zZm9ybSgpOwotICAgICAgICBkYXRhLm1fcGFpbnRlci0+c2V0T3BhY2l0eSgx
LjApOwotICAgICAgICBkYXRhLm1fcGFpbnRlci0+c2V0Q2xpcHBpbmcoZmFsc2UpOworICAgICAg
ICBtX2RhdGEubV9wYWludGVyLT5yZXNldFRyYW5zZm9ybSgpOworICAgICAgICBtX2RhdGEubV9w
YWludGVyLT5zZXRPcGFjaXR5KDEuMCk7CisgICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPnNldENs
aXBwaW5nKGZhbHNlKTsKICAgICB9CiAKLSAgICBkYXRhLm1fcGFpbnRlci0+c2V0Q29tcG9zaXRp
b25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfU291cmNlKTsKLSAgICBkYXRhLm1fcGFp
bnRlci0+ZHJhd0ltYWdlKGRlc3R4LCBkZXN0eSwgaW1hZ2UpOworICAgIG1fZGF0YS5tX3BhaW50
ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7
CisgICAgbV9kYXRhLm1fcGFpbnRlci0+ZHJhd0ltYWdlKGRlc3R4LCBkZXN0eSwgaW1hZ2UpOwog
CiAgICAgaWYgKCFpc1BhaW50aW5nKQotICAgICAgICBkYXRhLm1fcGFpbnRlci0+ZW5kKCk7Cisg
ICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPmVuZCgpOwogICAgIGVsc2UKLSAgICAgICAgZGF0YS5t
X3BhaW50ZXItPnJlc3RvcmUoKTsKLX0KLQotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0VW5tdWx0aXBs
aWVkSW1hZ2VEYXRhKEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXpl
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQot
ewotICAgIHB1dEltYWdlRGF0YTxVbm11bHRpcGxpZWQ+KHNvdXJjZSwgc291cmNlU2l6ZSwgc291
cmNlUmVjdCwgZGVzdFBvaW50LCBtX2RhdGEsIG1fc2l6ZSk7Ci19Ci0KLXZvaWQgSW1hZ2VCdWZm
ZXI6OnB1dFByZW11bHRpcGxpZWRJbWFnZURhdGEoQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0IElu
dFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBv
aW50JiBkZXN0UG9pbnQpCi17Ci0gICAgcHV0SW1hZ2VEYXRhPFByZW11bHRpcGxpZWQ+KHNvdXJj
ZSwgc291cmNlU2l6ZSwgc291cmNlUmVjdCwgZGVzdFBvaW50LCBtX2RhdGEsIG1fc2l6ZSk7Cisg
ICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPnJlc3RvcmUoKTsKIH0KIAogLy8gV2UgZ2V0IGEgbWlt
ZVR5cGUgaGVyZSBidXQgUUltYWdlV3JpdGVyIGRvZXMgbm90IHN1cHBvcnQgbWltZXR5cGVzIGJ1
dApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZl
clNraWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAkocmV2aXNpb24gMTA2Njg2KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNzUsMzQgKzI3NSwzMyBAQCBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1hZ2VC
dWZmZXI6OmdldFByCiAgICAgcmV0dXJuIGdldEltYWdlRGF0YTxQcmVtdWx0aXBsaWVkPihyZWN0
LCBjb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKSwgbV9zaXplKTsKIH0KIAot
dGVtcGxhdGUgPE11bHRpcGx5IG11bHRpcGxpZWQ+Ci12b2lkIHB1dEltYWdlRGF0YShCeXRlQXJy
YXkqJiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsCi0gICAgICAgICAgICAgICAgICBT
a0NhbnZhcyogY2FudmFzLCBjb25zdCBJbnRTaXplJiBzaXplKQordm9pZCBJbWFnZUJ1ZmZlcjo6
cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIEJ5dGVBcnJheSogc291cmNlLCBjb25z
dCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRQb2ludCYgZGVzdFBvaW50KQogeworICAgIFNrQ2FudmFzKiBjYW52YXMgPSBjb250ZXh0KCkt
PnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKICAgICBBU1NFUlQoc291cmNlUmVjdC53aWR0
aCgpID4gMCk7CiAgICAgQVNTRVJUKHNvdXJjZVJlY3QuaGVpZ2h0KCkgPiAwKTsKIAogICAgIGlu
dCBvcmlnaW5YID0gc291cmNlUmVjdC54KCk7CiAgICAgaW50IGRlc3RYID0gZGVzdFBvaW50Lngo
KSArIHNvdXJjZVJlY3QueCgpOwogICAgIEFTU0VSVChkZXN0WCA+PSAwKTsKLSAgICBBU1NFUlQo
ZGVzdFggPCBzaXplLndpZHRoKCkpOworICAgIEFTU0VSVChkZXN0WCA8IG1fc2l6ZS53aWR0aCgp
KTsKICAgICBBU1NFUlQob3JpZ2luWCA+PSAwKTsKICAgICBBU1NFUlQob3JpZ2luWCA8IHNvdXJj
ZVJlY3QubWF4WCgpKTsKIAogICAgIGludCBlbmRYID0gZGVzdFBvaW50LngoKSArIHNvdXJjZVJl
Y3QubWF4WCgpOwotICAgIEFTU0VSVChlbmRYIDw9IHNpemUud2lkdGgoKSk7CisgICAgQVNTRVJU
KGVuZFggPD0gbV9zaXplLndpZHRoKCkpOwogCiAgICAgaW50IG51bUNvbHVtbnMgPSBlbmRYIC0g
ZGVzdFg7CiAKICAgICBpbnQgb3JpZ2luWSA9IHNvdXJjZVJlY3QueSgpOwogICAgIGludCBkZXN0
WSA9IGRlc3RQb2ludC55KCkgKyBzb3VyY2VSZWN0LnkoKTsKICAgICBBU1NFUlQoZGVzdFkgPj0g
MCk7Ci0gICAgQVNTRVJUKGRlc3RZIDwgc2l6ZS5oZWlnaHQoKSk7CisgICAgQVNTRVJUKGRlc3RZ
IDwgbV9zaXplLmhlaWdodCgpKTsKICAgICBBU1NFUlQob3JpZ2luWSA+PSAwKTsKICAgICBBU1NF
UlQob3JpZ2luWSA8IHNvdXJjZVJlY3QubWF4WSgpKTsKIAogICAgIGludCBlbmRZID0gZGVzdFBv
aW50LnkoKSArIHNvdXJjZVJlY3QubWF4WSgpOwotICAgIEFTU0VSVChlbmRZIDw9IHNpemUuaGVp
Z2h0KCkpOworICAgIEFTU0VSVChlbmRZIDw9IG1fc2l6ZS5oZWlnaHQoKSk7CiAgICAgaW50IG51
bVJvd3MgPSBlbmRZIC0gZGVzdFk7CiAKICAgICB1bnNpZ25lZCBzcmNCeXRlc1BlclJvdyA9IDQg
KiBzb3VyY2VTaXplLndpZHRoKCk7CkBAIC0zMTksMTYgKzMxOCw2IEBAIHZvaWQgcHV0SW1hZ2VE
YXRhKEJ5dGVBcnJheSomIHNvdXJjZSwgY28KICAgICBjYW52YXMtPndyaXRlUGl4ZWxzKHNyY0Jp
dG1hcCwgZGVzdFgsIGRlc3RZLCBjb25maWc4ODg4KTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6
cHV0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXpl
JiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYg
ZGVzdFBvaW50KQotewotICAgIHB1dEltYWdlRGF0YTxVbm11bHRpcGxpZWQ+KHNvdXJjZSwgc291
cmNlU2l6ZSwgc291cmNlUmVjdCwgZGVzdFBvaW50LCBjb250ZXh0KCktPnBsYXRmb3JtQ29udGV4
dCgpLT5jYW52YXMoKSwgbV9zaXplKTsKLX0KLQotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0UHJlbXVs
dGlwbGllZEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNl
U2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2lu
dCkKLXsKLSAgICBwdXRJbWFnZURhdGE8UHJlbXVsdGlwbGllZD4oc291cmNlLCBzb3VyY2VTaXpl
LCBzb3VyY2VSZWN0LCBkZXN0UG9pbnQsIGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmNh
bnZhcygpLCBtX3NpemUpOwotfQotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHN0YXRpYyBib29s
IGVuY29kZUltYWdlKFQmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91
YmxlKiBxdWFsaXR5LCBWZWN0b3I8Y2hhcj4qIG91dHB1dCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyV2luQ0UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVy
V2luQ0UuY3BwCShyZXZpc2lvbiAxMDY2ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldpbkNFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgz
LDkgKzE4Myw5IEBAIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHIKICAg
ICByZXR1cm4gZ2V0SW1hZ2VEYXRhPHRydWU+KHJlY3QsIG1fZGF0YS5tX2JpdG1hcC5nZXQoKSk7
CiB9CiAKLXRlbXBsYXRlIDxib29sIHByZW11bHRpcGxpZWQ+Ci1zdGF0aWMgdm9pZCBwdXRJbWFn
ZURhdGEoQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIFNoYXJlZEJp
dG1hcCogYml0bWFwKQordm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11
bHRpcGxpZWQsIEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQogewor
ICAgIFNoYXJlZEJpdG1hcCogYml0bWFwID0gbV9kYXRhLm1fYml0bWFwLmdldCgpOwogICAgIHVu
c2lnbmVkIGNoYXIqIGRzdCA9ICh1bnNpZ25lZCBjaGFyKiliaXRtYXAtPmJ5dGVzKCk7CiAgICAg
aWYgKCFkc3QpCiAgICAgICAgIHJldHVybjsKQEAgLTIxMSw3ICsyMTEsNyBAQCBzdGF0aWMgdm9p
ZCBwdXRJbWFnZURhdGEoQnl0ZUFycmF5KiBzb3VyCiAgICAgICAgICAgICBpbnQgZ3JlZW4gPSAq
c3JjKys7CiAgICAgICAgICAgICBpbnQgYmx1ZSA9ICpzcmMrKzsKICAgICAgICAgICAgIGludCBh
bHBoYSA9ICpzcmMrKzsKLSAgICAgICAgICAgIGlmIChwcmVtdWx0aXBsaWVkKSB7CisgICAgICAg
ICAgICBpZiAobXVsdGlwbGllZCA9PSBQcmVtdWx0aXBsaWVkKSB7CiAgICAgICAgICAgICAgICAg
KmRzdCsrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYmx1ZSAqIDI1NSAvIGFscGhhKTsK
ICAgICAgICAgICAgICAgICAqZHN0KysgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihncmVl
biAqIDI1NSAvIGFscGhhKTsKICAgICAgICAgICAgICAgICAqZHN0KysgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPihyZWQgKiAyNTUgLyBhbHBoYSk7CkBAIC0yMjgsMTYgKzIyOCw2IEBAIHN0
YXRpYyB2b2lkIHB1dEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXIKICAgICB9CiB9CiAKLXZvaWQg
SW1hZ2VCdWZmZXI6OnB1dFVubXVsdGlwbGllZEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXJjZSwg
Y29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UG9pbnQmIGRlc3RQb2ludCkKLXsKLSAgICBwdXRJbWFnZURhdGE8ZmFsc2U+KHNvdXJj
ZSwgc291cmNlU2l6ZSwgc291cmNlUmVjdCwgZGVzdFBvaW50LCBtX2RhdGEubV9iaXRtYXAuZ2V0
KCkpOwotfQotCi12b2lkIEltYWdlQnVmZmVyOjpwdXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKEJ5
dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQotewotICAgIHB1dEltYWdl
RGF0YTx0cnVlPihzb3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3QsIGRlc3RQb2ludCwgbV9k
YXRhLm1fYml0bWFwLmdldCgpKTsKLX0KLQogdm9pZCBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1UcmFu
c2Zvcm1Db2xvclNwYWNlKGNvbnN0IFZlY3RvcjxpbnQ+JiBsb29rVXBUYWJsZSkKIHsKICAgICBV
TlVTRURfUEFSQU0obG9va1VwVGFibGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd3gvSW1hZ2VCdWZmZXJXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VCdWZmZXJXeC5jcHAJKHJldmlzaW9uIDEwNjY4
NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlQnVmZmVyV3gu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MiwxMiArNzIsNyBAQCBQYXNzUmVmUHRyPEJ5dGVBcnJh
eT4gSW1hZ2VCdWZmZXI6OmdldFByCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgSW1hZ2VCdWZm
ZXI6OnB1dFVubXVsdGlwbGllZEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50
U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9p
bnQmIGRlc3RQb2ludCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEltYWdl
QnVmZmVyOjpwdXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKEJ5dGVBcnJheSogc291cmNlLCBjb25z
dCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRQb2ludCYgZGVzdFBvaW50KQordm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRp
cGx5IG11bHRpcGxpZWQsIEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VT
aXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgJKHJldmlzaW9uIDEw
NjY4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJm
YWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsNyBAQCB0eXBlZGVmIGVudW0gewog
ICAgIHdrUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZwogfSB3a1BhdHRlcm5UaWxpbmc7CiBl
eHRlcm4gQ0dQYXR0ZXJuUmVmICgqd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zv
cm0pKENHSW1hZ2VSZWYsIENHQWZmaW5lVHJhbnNmb3JtLCBpbnQpOworZXh0ZXJuIHZvaWQgKCp3
a0NHQ29udGV4dFJlc2V0Q2xpcCkoQ0dDb250ZXh0UmVmKTsKIGV4dGVybiBDRlJlYWRTdHJlYW1S
ZWYgKCp3a0NyZWF0ZUN1c3RvbUNGUmVhZFN0cmVhbSkodm9pZCAqKCpmb3JtQ3JlYXRlKShDRlJl
YWRTdHJlYW1SZWYsIHZvaWQgKiksIAogICAgIHZvaWQgKCpmb3JtRmluYWxpemUpKENGUmVhZFN0
cmVhbVJlZiwgdm9pZCAqKSwgCiAgICAgQm9vbGVhbiAoKmZvcm1PcGVuKShDRlJlYWRTdHJlYW1S
ZWYsIENGU3RyZWFtRXJyb3IgKiwgQm9vbGVhbiAqLCB2b2lkICopLCAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1t
CShyZXZpc2lvbiAxMDY2ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMyLDYgKzEzMiw3IEBAIENU
TGluZVJlZiAoKndrQ3JlYXRlQ1RMaW5lV2l0aFVuaUNoYXJQcm8KICNpZiAhZGVmaW5lZChCVUlM
RElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCiBD
VFR5cGVzZXR0ZXJSZWYgKCp3a0NyZWF0ZUNUVHlwZXNldHRlcldpdGhVbmlDaGFyUHJvdmlkZXJB
bmRPcHRpb25zKShjb25zdCBVbmlDaGFyKiAoKnByb3ZpZGUpKENGSW5kZXggc3RyaW5nSW5kZXgs
IENGSW5kZXgqIGNoYXJDb3VudCwgQ0ZEaWN0aW9uYXJ5UmVmKiBhdHRyaWJ1dGVzLCB2b2lkKiks
IHZvaWQgKCpkaXNwb3NlKShjb25zdCBVbmlDaGFyKiBjaGFycywgdm9pZCopLCB2b2lkKiwgQ0ZE
aWN0aW9uYXJ5UmVmIG9wdGlvbnMpOwogCit2b2lkICgqd2tDR0NvbnRleHRSZXNldENsaXApKENH
Q29udGV4dFJlZik7CiBDR0NvbnRleHRSZWYgKCp3a0lPU3VyZmFjZUNvbnRleHRDcmVhdGUpKElP
U3VyZmFjZVJlZiBzdXJmYWNlLCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LCBDR0Nv
bG9yU3BhY2VSZWYgY29sb3JTcGFjZSk7CiBDR0ltYWdlUmVmICgqd2tJT1N1cmZhY2VDb250ZXh0
Q3JlYXRlSW1hZ2UpKENHQ29udGV4dFJlZiBjb250ZXh0KTsKIApJbmRleDogU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2
aXNpb24gMTA2Njg2KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDItMDMgIE1hdHRoZXcgRGVsYW5leSAgPG1kZWxhbmV5
QGFwcGxlLmNvbT4KKworICAgICAgICB0b0RhdGFVUkwoKSB1c2VzIHN0YWxlIGRhdGEgYWZ0ZXIg
cHV0SW1hZ2VEYXRhKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY1NzY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2Uu
bW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisKIDIwMTItMDItMDMg
IEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzY5MQpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5
c3RlbUludGVyZmFjZS5tbQkocmV2aXNpb24gMTA2Njg2KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uo
dm9pZCkKICAgICAgICAgSU5JVChDb3B5Q0ZMb2NhbGl6YXRpb25QcmVmZXJyZWROYW1lKTsKICAg
ICAgICAgSU5JVChDR0NvbnRleHRHZXRTaG91bGRTbW9vdGhGb250cyk7CiAgICAgICAgIElOSVQo
Q0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKTsKKyAgICAgICAgSU5JVChDR0Nv
bnRleHRSZXNldENsaXApOwogICAgICAgICBJTklUKENvcHlDT05ORUNUUHJveHlSZXNwb25zZSk7
CiAgICAgICAgIElOSVQoQ29weU5TVVJMUmVzcG9uc2VTdGF0dXNMaW5lKTsKICAgICAgICAgSU5J
VChDcmVhdGVDVExpbmVXaXRoVW5pQ2hhclByb3ZpZGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCShyZXZpc2lvbiAxMDY2ODYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTAyLTAzICBNYXR0
aGV3IERlbGFuZXkgIDxtZGVsYW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgdG9EYXRhVVJMKCkg
dXNlcyBzdGFsZSBkYXRhIGFmdGVyIHB1dEltYWdlRGF0YSgpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTc2NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDogVXBkYXRl
ZCBtZXRob2QgbmFtZS4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRvUGl4ZWxSZWFk
YmFja1RvQ2FudmFzKToKKwogMjAxMi0wMi0wMyAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3
NjkxCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCShy
ZXZpc2lvbiAxMDY2ODYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMDYsNyArMTIwNiw3IEBAIHZvaWQgV2ViVmlld0lt
cGw6OmRvUGl4ZWxSZWFkYmFja1RvQ2FudmEKICAgICBSZWZQdHI8Qnl0ZUFycmF5PiBwaXhlbEFy
cmF5KEJ5dGVBcnJheTo6Y3JlYXRlKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiA0KSk7
CiAgICAgaWYgKGltYWdlQnVmZmVyICYmIHBpeGVsQXJyYXkpIHsKICAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT5jb21wb3NpdGVBbmRSZWFkYmFjayhwaXhlbEFycmF5LT5kYXRhKCksIGludmVydFJl
Y3QpOwotICAgICAgICBpbWFnZUJ1ZmZlci0+cHV0UHJlbXVsdGlwbGllZEltYWdlRGF0YShwaXhl
bEFycmF5LmdldCgpLCByZWN0LnNpemUoKSwgSW50UmVjdChJbnRQb2ludCgpLCByZWN0LnNpemUo
KSksIEludFBvaW50KCkpOworICAgICAgICBpbWFnZUJ1ZmZlci0+cHV0Qnl0ZUFycmF5KFByZW11
bHRpcGxpZWQsIHBpeGVsQXJyYXkuZ2V0KCksIHJlY3Quc2l6ZSgpLCBJbnRSZWN0KEludFBvaW50
KCksIHJlY3Quc2l6ZSgpKSwgSW50UG9pbnQoKSk7CiAgICAgICAgIGdjLnNhdmUoKTsKICAgICAg
ICAgZ2MudHJhbnNsYXRlKEludFNpemUoMCwgYml0bWFwSGVpZ2h0KSk7CiAgICAgICAgIGdjLnNj
YWxlKEZsb2F0U2l6ZSgxLjBmLCAtMS4wZikpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNp
b24gMTA2Njg2KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDItMDMgIE1hdHRoZXcgRGVsYW5leSAgPG1kZWxhbmV5
QGFwcGxlLmNvbT4KKworICAgICAgICB0b0RhdGFVUkwoKSB1c2VzIHN0YWxlIGRhdGEgYWZ0ZXIg
cHV0SW1hZ2VEYXRhKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY1NzY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06IAorCiAyMDEyLTAy
LTAzICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc3NDAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0J
KHJldmlzaW9uIDEwNjY4NikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlN5c3RlbUludGVyZmFjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQCB2b2lk
IEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgSU5JVChBZHZhbmNlRGVmYXVs
dEJ1dHRvblB1bHNlQW5pbWF0aW9uKTsKICAgICBJTklUKENHQ29udGV4dEdldFNob3VsZFNtb290
aEZvbnRzKTsKICAgICBJTklUKENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSk7
CisgICAgSU5JVChDR0NvbnRleHRSZXNldENsaXApOwogICAgIElOSVQoQ29weUNGTG9jYWxpemF0
aW9uUHJlZmVycmVkTmFtZSk7CiAgICAgSU5JVChDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpOwog
ICAgIElOSVQoQ29weU5TVVJMUmVzcG9uc2VTdGF0dXNMaW5lKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125680</attachid>
            <date>2012-02-06 11:54:43 -0800</date>
            <delta_ts>2012-02-06 12:01:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65767-20120206115442.patch</filename>
            <type>text/plain</type>
            <size>45089</size>
            <attacher name="Matthew Delaney">mdelaney7</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjY4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAyLTAzICBNYXR0aGV3
IERlbGFuZXkgIDxtZGVsYW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgdG9EYXRhVVJMKCkgdXNl
cyBzdGFsZSBkYXRhIGFmdGVyIHB1dEltYWdlRGF0YSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTc2NworCisgICAgICAgIFRoaXMgcGF0Y2ggZml4
ZXMgdGhlIGlzc3VlIHdlJ3ZlIGVuY291bnRlcmVkIG9mIGdldHRpbmcgYmFjaworICAgICAgICBz
dGFsZSBjb3BpZXMgb2YgdGhlIENHQ29udGV4dCBvZiBhY2NlbGVyYXRlZCBJbWFnZUJ1ZmZlcnMg
d2hvIGhhdmUgc2VlbgorICAgICAgICBwdXRJbWFnZURhdGEgY2FsbHMgYnV0IGhhdmUgbm90IGJl
ZW4gZHJhd24gaW50byB2aWEgdGhlIENHIEFQSS4KKyAgICAgICAgVGhpcyBpc3N1ZSBpcyBmaXhl
ZCBieSBtb2RpZnlpbmcgdGhlIHdheSB3ZSBpbXBsZW1lbnQgcHV0SW1hZ2VEYXRhCisgICAgICAg
IGluIEltYWdlQnVmZmVyQ0cgdG8gZHJhdyB0aGUgYml0cyB3cmFwcGVkIGluIGEgQ0dJbWFnZSB3
aGlsZSB0aGUgQ0dDb250ZXh0CisgICAgICAgIGlzIGluIGEgc3RhdGUgd2hlcmUgdGhlIGRhdGEg
d2lsbCBlZmZlY3RpdmVseSBiZSBjb3BpZWQgKGFzIGlzIG5lZWRlZCBmb3IKKyAgICAgICAgaW1w
bGVtZW50aW5nIHB1dEltYWdlRGF0YSkgaW5zdGVhZCBvZiBkaXJlY3RseSBtb2RpZnlpbmcgdGhl
IGJpdHMgb2YgdGhlIElPU3VyZmFjZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy9jaGVjay1zdGFsZS1wdXRJbWFnZURh
dGEsIHBpeGVsIHRlc3QgdG8gY2hlY2sgdGhhdCB0aGUgY2FudmFzIGlzIGluIGZhY3QgcGFpbnRl
ZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOiBJ
bXBsZW1lbnQgbmV3IHdheSBvZiBwdXR0aW5nIGltYWdlIGRhdGEuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDogTWVyZ2VkIHR3byBwcmV2aW91c2x5IHNlcGFyYXRl
IHB1dCBkYXRhIGNhbGxzCisgICAgICAgICAgICBpbnRvIGEgc2luZ2xlIGFuZCBtb3JlIHNlbnNp
Ymx5IG5hbWVkICdwdXRCeXRlQXJyYXknLCBzaW5jZSB0aGF0J3Mgd2hhdCBpdCBkb2VzIQorCisg
ICAgICAgICogV2ViQ29yZS5leHAuaW46IEFkZGVkIG5ldyBXS1NJIGNhbGwgZm9yIHVzZSBpbiBJ
bWFnZUJ1ZmZlckNHLmNwcAorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
bW06CisKKyAgICAgICAgVXNpbmcgbmV3IG1ldGhvZCBuYW1lLgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRv
d0JsdXIuY3BwOiAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbG9yTWF0cml4LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RHJvcFNoYWRvdy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuY3BwOgorCisgICAgICAgIFVwZGF0ZWQgb3RoZXIgcG9ydHMnIEltYWdlQnVmZmVy
cyB0byB1c2UgbmV3IG1ldGhvZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFn
ZUJ1ZmZlclF0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVm
ZmVyU2tpYS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZm
ZXJXaW5DRS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VCdWZmZXJX
eC5jcHA6CisKIDIwMTItMDItMDMgIEFuZHJlYXMgS2xpbmcgIDxhd2Vzb21la2xpbmdAYXBwbGUu
Y29tPgogCiAgICAgICAgIEhUTUxFbGVtZW50OiBDbGVhbiB1cCB0YWJpbmRleCBhdHRyaWJ1dGUg
cGFyc2luZy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMDY2ODYpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMTQ4Nyw2ICsx
NDg3LDcgQEAgX3N0cmluZ0lzQ2FzZUluc2Vuc2l0aXZlRXF1YWxUb1N0cmluZwogX3N1Z2dlc3Rl
ZEZpbGVuYW1lV2l0aE1JTUVUeXBlCiBfd2tBZHZhbmNlRGVmYXVsdEJ1dHRvblB1bHNlQW5pbWF0
aW9uCiBfd2tDR0NvbnRleHRHZXRTaG91bGRTbW9vdGhGb250cworX3drQ0dDb250ZXh0UmVzZXRD
bGlwCiBfd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0KIF93a0NvcHlDRkxv
Y2FsaXphdGlvblByZWZlcnJlZE5hbWUKIF93a0NvcHlDRlVSTFJlc3BvbnNlU3VnZ2VzdGVkRmls
ZW5hbWUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkocmV2aXNpb24gMTA2Njg2KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTk3OCw3ICsxOTc4LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnB1dEltYWdlRAogICAgIEludFJlY3Qgc291cmNlUmVjdChkZXN0UmVjdCk7CiAgICAgc291cmNl
UmVjdC5tb3ZlKC1kZXN0T2Zmc2V0KTsKIAotICAgIGJ1ZmZlci0+cHV0VW5tdWx0aXBsaWVkSW1h
Z2VEYXRhKGRhdGEtPmRhdGEoKS0+ZGF0YSgpLCBJbnRTaXplKGRhdGEtPndpZHRoKCksIGRhdGEt
PmhlaWdodCgpKSwgc291cmNlUmVjdCwgSW50UG9pbnQoZGVzdE9mZnNldCkpOworICAgIGJ1ZmZl
ci0+cHV0Qnl0ZUFycmF5KFVubXVsdGlwbGllZCwgZGF0YS0+ZGF0YSgpLT5kYXRhKCksIEludFNp
emUoZGF0YS0+d2lkdGgoKSwgZGF0YS0+aGVpZ2h0KCkpLCBzb3VyY2VSZWN0LCBJbnRQb2ludChk
ZXN0T2Zmc2V0KSk7CiAgICAgZGlkRHJhdyhkZXN0UmVjdCwgQ2FudmFzRGlkRHJhd0FwcGx5Tm9u
ZSk7IC8vIGlnbm9yZSB0cmFuc2Zvcm0sIHNoYWRvdyBhbmQgY2xpcAogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCShyZXZp
c2lvbiAxMDY2ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgaW5saW5lIHZvaWQgSW1h
Z2VCdWZmZXI6OmdlbmVyaWNDb252ZXJ0VAogICAgICAgICBkb3VibGUgbHVtYSA9IChyICogMC4y
MTI1ICsgZyAqIDAuNzE1NCArIGIgKiAwLjA3MjEpICogKChkb3VibGUpYSAvIDI1NS4wKTsKICAg
ICAgICAgc3JjUGl4ZWxBcnJheS0+c2V0KHBpeGVsT2Zmc2V0ICsgMywgbHVtYSk7CiAgICAgfQot
ICAgIHB1dFVubXVsdGlwbGllZEltYWdlRGF0YShzcmNQaXhlbEFycmF5LmdldCgpLCBsdW1pbmFu
Y2VSZWN0LnNpemUoKSwgbHVtaW5hbmNlUmVjdCwgSW50UG9pbnQoKSk7CisgICAgcHV0Qnl0ZUFy
cmF5KFVubXVsdGlwbGllZCwgc3JjUGl4ZWxBcnJheS5nZXQoKSwgbHVtaW5hbmNlUmVjdC5zaXpl
KCksIGx1bWluYW5jZVJlY3QsIEludFBvaW50KCkpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpj
b252ZXJ0VG9MdW1pbmFuY2VNYXNrKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMTA2Njg2KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MTAxLDggKzEwMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUGFzc1JlZlB0cjxC
eXRlQXJyYXk+IGdldFVubXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JikgY29uc3Q7
CiAgICAgICAgIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRh
KGNvbnN0IEludFJlY3QmKSBjb25zdDsKIAotICAgICAgICB2b2lkIHB1dFVubXVsdGlwbGllZElt
YWdlRGF0YShCeXRlQXJyYXkqLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KTsKLSAgICAgICAgdm9p
ZCBwdXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKEJ5dGVBcnJheSosIGNvbnN0IEludFNpemUmIHNv
dXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0
UG9pbnQpOworICAgICAgICB2b2lkIHB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBC
eXRlQXJyYXkqLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KTsKICAgICAgICAgCiAgICAgICAgIHZv
aWQgY29udmVydFRvTHVtaW5hbmNlTWFzaygpOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCShyZXZpc2lvbiAxMDY2
ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODI4LDcgKzgyOCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6Ymx1clNo
YWRvd0J1ZmZlcihjb25zdCAKICAgICBJbnRSZWN0IGJsdXJSZWN0KEludFBvaW50KCksIHRlbXBs
YXRlU2l6ZSk7CiAgICAgUmVmUHRyPEJ5dGVBcnJheT4gbGF5ZXJEYXRhID0gbV9sYXllckltYWdl
LT5nZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoYmx1clJlY3QpOwogICAgIGJsdXJMYXllckltYWdl
KGxheWVyRGF0YS0+ZGF0YSgpLCBibHVyUmVjdC5zaXplKCksIGJsdXJSZWN0LndpZHRoKCkgKiA0
KTsKLSAgICBtX2xheWVySW1hZ2UtPnB1dFVubXVsdGlwbGllZEltYWdlRGF0YShsYXllckRhdGEu
Z2V0KCksIGJsdXJSZWN0LnNpemUoKSwgYmx1clJlY3QsIEludFBvaW50KCkpOworICAgIG1fbGF5
ZXJJbWFnZS0+cHV0Qnl0ZUFycmF5KFVubXVsdGlwbGllZCwgbGF5ZXJEYXRhLmdldCgpLCBibHVy
UmVjdC5zaXplKCksIGJsdXJSZWN0LCBJbnRQb2ludCgpKTsKIH0KIAogdm9pZCBTaGFkb3dCbHVy
OjpibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIoY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAJKHJldmlzaW9uIDEwNjY4NikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMDQsMTIgKzIwNCwxMSBAQCBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1h
Z2VCdWZmZXI6OmdldFByCiAgICAgcmV0dXJuIGdldEltYWdlRGF0YTxQcmVtdWx0aXBsaWVkPihy
ZWN0LCBtX2RhdGEsIG1fc2l6ZSk7CiB9CiAKLXRlbXBsYXRlIDxNdWx0aXBseSBtdWx0aXBsaWVk
Pgotdm9pZCBwdXRJbWFnZURhdGEoQnl0ZUFycmF5KiYgc291cmNlLCBjb25zdCBJbnRTaXplJiBz
b3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVz
dFBvaW50LCBJbWFnZUJ1ZmZlckRhdGEmIGRhdGEsIGNvbnN0IEludFNpemUmIHNpemUpCit2b2lk
IEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgQnl0ZUFycmF5
KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpCiB7Ci0gICAgQVNTRVJUKGNhaXJvX3N1
cmZhY2VfZ2V0X3R5cGUoZGF0YS5tX3N1cmZhY2UpID09IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFH
RSk7CisgICAgQVNTRVJUKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUobV9kYXRhLm1fc3VyZmFjZSkg
PT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKTsKIAotICAgIHVuc2lnbmVkIGNoYXIqIGRhdGFE
c3QgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGRhdGEubV9zdXJmYWNlKTsKKyAgICB1
bnNpZ25lZCBjaGFyKiBkYXRhRHN0ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShtX2Rh
dGEubV9zdXJmYWNlKTsKIAogICAgIEFTU0VSVChzb3VyY2VSZWN0LndpZHRoKCkgPiAwKTsKICAg
ICBBU1NFUlQoc291cmNlUmVjdC5oZWlnaHQoKSA+IDApOwpAQCAtMjE3LDI4ICsyMTYsMjggQEAg
dm9pZCBwdXRJbWFnZURhdGEoQnl0ZUFycmF5KiYgc291cmNlLCBjbwogICAgIGludCBvcmlnaW54
ID0gc291cmNlUmVjdC54KCk7CiAgICAgaW50IGRlc3R4ID0gZGVzdFBvaW50LngoKSArIHNvdXJj
ZVJlY3QueCgpOwogICAgIEFTU0VSVChkZXN0eCA+PSAwKTsKLSAgICBBU1NFUlQoZGVzdHggPCBz
aXplLndpZHRoKCkpOworICAgIEFTU0VSVChkZXN0eCA8IG1fc2l6ZS53aWR0aCgpKTsKICAgICBB
U1NFUlQob3JpZ2lueCA+PSAwKTsKICAgICBBU1NFUlQob3JpZ2lueCA8PSBzb3VyY2VSZWN0Lm1h
eFgoKSk7CiAKICAgICBpbnQgZW5keCA9IGRlc3RQb2ludC54KCkgKyBzb3VyY2VSZWN0Lm1heFgo
KTsKLSAgICBBU1NFUlQoZW5keCA8PSBzaXplLndpZHRoKCkpOworICAgIEFTU0VSVChlbmR4IDw9
IG1fc2l6ZS53aWR0aCgpKTsKIAogICAgIGludCBudW1Db2x1bW5zID0gZW5keCAtIGRlc3R4Owog
CiAgICAgaW50IG9yaWdpbnkgPSBzb3VyY2VSZWN0LnkoKTsKICAgICBpbnQgZGVzdHkgPSBkZXN0
UG9pbnQueSgpICsgc291cmNlUmVjdC55KCk7CiAgICAgQVNTRVJUKGRlc3R5ID49IDApOwotICAg
IEFTU0VSVChkZXN0eSA8IHNpemUuaGVpZ2h0KCkpOworICAgIEFTU0VSVChkZXN0eSA8IG1fc2l6
ZS5oZWlnaHQoKSk7CiAgICAgQVNTRVJUKG9yaWdpbnkgPj0gMCk7CiAgICAgQVNTRVJUKG9yaWdp
bnkgPD0gc291cmNlUmVjdC5tYXhZKCkpOwogCiAgICAgaW50IGVuZHkgPSBkZXN0UG9pbnQueSgp
ICsgc291cmNlUmVjdC5tYXhZKCk7Ci0gICAgQVNTRVJUKGVuZHkgPD0gc2l6ZS5oZWlnaHQoKSk7
CisgICAgQVNTRVJUKGVuZHkgPD0gbV9zaXplLmhlaWdodCgpKTsKICAgICBpbnQgbnVtUm93cyA9
IGVuZHkgLSBkZXN0eTsKIAogICAgIHVuc2lnbmVkIHNyY0J5dGVzUGVyUm93ID0gNCAqIHNvdXJj
ZVNpemUud2lkdGgoKTsKLSAgICBpbnQgc3RyaWRlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRf
c3RyaWRlKGRhdGEubV9zdXJmYWNlKTsKKyAgICBpbnQgc3RyaWRlID0gY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9nZXRfc3RyaWRlKG1fZGF0YS5tX3N1cmZhY2UpOwogCiAgICAgdW5zaWduZWQgY2hhciog
c3JjUm93cyA9IHNvdXJjZS0+ZGF0YSgpICsgb3JpZ2lueSAqIHNyY0J5dGVzUGVyUm93ICsgb3Jp
Z2lueCAqIDQ7CiAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBudW1Sb3dzOyArK3kpIHsKQEAgLTI1
NywyMSArMjU2LDExIEBAIHZvaWQgcHV0SW1hZ2VEYXRhKEJ5dGVBcnJheSomIHNvdXJjZSwgY28K
ICAgICAgICAgfQogICAgICAgICBzcmNSb3dzICs9IHNyY0J5dGVzUGVyUm93OwogICAgIH0KLSAg
ICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlfcmVjdGFuZ2xlIChkYXRhLm1fc3VyZmFjZSwKKyAg
ICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlfcmVjdGFuZ2xlKG1fZGF0YS5tX3N1cmZhY2UsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdHgsIGRlc3R5LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bUNvbHVtbnMsIG51bVJvd3Mp
OwogfQogCi12b2lkIEltYWdlQnVmZmVyOjpwdXRVbm11bHRpcGxpZWRJbWFnZURhdGEoQnl0ZUFy
cmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpCi17Ci0gICAgcHV0SW1hZ2VEYXRh
PFVubXVsdGlwbGllZD4oc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBkZXN0UG9pbnQs
IG1fZGF0YSwgbV9zaXplKTsKLX0KLQotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0UHJlbXVsdGlwbGll
ZEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkKLXsK
LSAgICBwdXRJbWFnZURhdGE8UHJlbXVsdGlwbGllZD4oc291cmNlLCBzb3VyY2VTaXplLCBzb3Vy
Y2VSZWN0LCBkZXN0UG9pbnQsIG1fZGF0YSwgbV9zaXplKTsKLX0KLQogI2lmICFQTEFURk9STShH
VEspCiBzdGF0aWMgY2Fpcm9fc3RhdHVzX3Qgd3JpdGVGdW5jdGlvbih2b2lkKiBjbG9zdXJlLCBj
b25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQogewpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHAJKHJldmlzaW9uIDEwNjY4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDcsMjYgKzMw
NywzNiBAQCBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByCiAgICAgcmV0
dXJuIG1fZGF0YS5nZXREYXRhKHJlY3QsIG1fc2l6ZSwgbV9jb250ZXh0LT5pc0FjY2VsZXJhdGVk
Q29udGV4dCgpLCBmYWxzZSk7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OnB1dFVubXVsdGlwbGll
ZEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkKK3Zv
aWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBCeXRlQXJy
YXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkKIHsKLSAgICBpZiAobV9jb250ZXh0
LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7Ci0gICAgICAgIENHQ29udGV4dEZsdXNoKGNvbnRl
eHQoKS0+cGxhdGZvcm1Db250ZXh0KCkpOwotI2lmIGRlZmluZWQoQlVJTERJTkdfT05fTElPTikK
LSAgICAgICAgbV9kYXRhLm1fbGFzdEZsdXNoVGltZSA9IGN1cnJlbnRUaW1lTVMoKTsKLSNlbmRp
ZgorICAgIGlmICghbV9jb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CisgICAgICAg
IG1fZGF0YS5wdXREYXRhKHNvdXJjZSwgc291cmNlU2l6ZSwgc291cmNlUmVjdCwgZGVzdFBvaW50
LCBtX3NpemUsIG1fY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSwgbXVsdGlwbGllZCA9
PSBVbm11bHRpcGxpZWQpOworICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fZGF0YS5wdXRE
YXRhKHNvdXJjZSwgc291cmNlU2l6ZSwgc291cmNlUmVjdCwgZGVzdFBvaW50LCBtX3NpemUsIG1f
Y29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSwgdHJ1ZSk7Ci19CiAKLXZvaWQgSW1hZ2VC
dWZmZXI6OnB1dFByZW11bHRpcGxpZWRJbWFnZURhdGEoQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0
IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFBvaW50JiBkZXN0UG9pbnQpCi17Ci0gICAgaWYgKG1fY29udGV4dC0+aXNBY2NlbGVyYXRlZENv
bnRleHQoKSkgewotICAgICAgICBDR0NvbnRleHRGbHVzaChjb250ZXh0KCktPnBsYXRmb3JtQ29u
dGV4dCgpKTsKLSNpZiBkZWZpbmVkKEJVSUxESU5HX09OX0xJT04pCi0gICAgICAgIG1fZGF0YS5t
X2xhc3RGbHVzaFRpbWUgPSBjdXJyZW50VGltZU1TKCk7Ci0jZW5kaWYKLSAgICB9Ci0gICAgbV9k
YXRhLnB1dERhdGEoc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBkZXN0UG9pbnQsIG1f
c2l6ZSwgbV9jb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCBmYWxzZSk7CisgICAgLy8g
TWFrZSBhIGNvcHkgb2YgdGhlIHNvdXJjZSB0byBlbnN1cmUgdGhlIGJpdHMgZG9uJ3QgY2hhbmdl
IGJlZm9yZSBiZWluZyBkcmF3bgorICAgIEludFNpemUgc291cmNlQ29weVNpemUoc291cmNlUmVj
dC53aWR0aCgpLCBzb3VyY2VSZWN0LmhlaWdodCgpKTsKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+
IHNvdXJjZUNvcHkgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNvdXJjZUNvcHlTaXplLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBVbmFjY2VsZXJhdGVkKTsKKyAgICBpZiAoIXNvdXJjZUNvcHkpCisgICAg
ICAgIHJldHVybjsKKyAgICBzb3VyY2VDb3B5LT5tX2RhdGEucHV0RGF0YShzb3VyY2UsIHNvdXJj
ZVNpemUsIHNvdXJjZVJlY3QsIEludFBvaW50KC1zb3VyY2VSZWN0LngoKSwgLXNvdXJjZVJlY3Qu
eSgpKSwgc291cmNlQ29weS0+c2l6ZSgpLCBzb3VyY2VDb3B5LT5jb250ZXh0KCktPmlzQWNjZWxl
cmF0ZWRDb250ZXh0KCksIG11bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVkKTsKKworICAgIC8vIFNl
dCB1cCBjb250ZXh0IGZvciB1c2luZyBkcmF3SW1hZ2UgYXMgYSBkaXJlY3QgYml0IGNvcHkKKyAg
ICBDR0NvbnRleHRSZWYgZGVzdENvbnRleHQgPSBjb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgp
OworICAgIENHQ29udGV4dFNhdmVHU3RhdGUoZGVzdENvbnRleHQpOworICAgIENHQ29udGV4dENv
bmNhdENUTShkZXN0Q29udGV4dCwgQWZmaW5lVHJhbnNmb3JtKENHQ29udGV4dEdldENUTShkZXN0
Q29udGV4dCkpLmludmVyc2UoKSk7CisgICAgd2tDR0NvbnRleHRSZXNldENsaXAoZGVzdENvbnRl
eHQpOworICAgIENHQ29udGV4dFNldEludGVycG9sYXRpb25RdWFsaXR5KGRlc3RDb250ZXh0LCBr
Q0dJbnRlcnBvbGF0aW9uTm9uZSk7CisgICAgQ0dDb250ZXh0U2V0QWxwaGEoZGVzdENvbnRleHQs
IDEuMCk7CisgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGRlc3RDb250ZXh0LCBrQ0dCbGVuZE1v
ZGVDb3B5KTsKKyAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IoZGVzdENvbnRleHQsIENH
U2l6ZVplcm8sIDAsIDApOworCisgICAgLy8gRHJhdyB0aGUgaW1hZ2UgaW4gQ0cgY29vcmRpbmF0
ZSBzcGFjZQorICAgIEludFBvaW50IGRlc3RQb2ludEluQ0dDb29yZHMoZGVzdFBvaW50LngoKSAr
IHNvdXJjZVJlY3QueCgpLCBtX3NpemUuaGVpZ2h0KCkgLSAoZGVzdFBvaW50LnkoKStzb3VyY2VS
ZWN0LnkoKSkgLSBzb3VyY2VSZWN0LmhlaWdodCgpKTsKKyAgICBJbnRSZWN0IGRlc3RSZWN0SW5D
R0Nvb3JkcyhkZXN0UG9pbnRJbkNHQ29vcmRzLCBzb3VyY2VDb3B5U2l6ZSk7CisgICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IHNvdXJjZUNvcHlJbWFnZShBZG9wdENGLCBzb3VyY2VDb3B5LT5jb3B5
TmF0aXZlSW1hZ2UoKSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGRlc3RDb250ZXh0LCBkZXN0
UmVjdEluQ0dDb29yZHMsIHNvdXJjZUNvcHlJbWFnZS5nZXQoKSk7CisgICAgQ0dDb250ZXh0UmVz
dG9yZUdTdGF0ZShkZXN0Q29udGV4dCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgQ0ZTdHJpbmdSZWYg
anBlZ1VUSSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29sb3JNYXRyaXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAJKHJldmlzaW9uIDEwNjY4NikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIEZFQ29sb3JNYXRyaXg6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHJlc3Vs
dEltYWdlLT5wdXRVbm11bHRpcGxpZWRJbWFnZURhdGEocGl4ZWxBcnJheS5nZXQoKSwgaW1hZ2VS
ZWN0LnNpemUoKSwgaW1hZ2VSZWN0LCBJbnRQb2ludCgpKTsKKyAgICByZXN1bHRJbWFnZS0+cHV0
Qnl0ZUFycmF5KFVubXVsdGlwbGllZCwgcGl4ZWxBcnJheS5nZXQoKSwgaW1hZ2VSZWN0LnNpemUo
KSwgaW1hZ2VSZWN0LCBJbnRQb2ludCgpKTsKIH0KIAogdm9pZCBGRUNvbG9yTWF0cml4OjpkdW1w
KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9w
U2hhZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAJKHJldmlzaW9uIDEwNjY4NikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgRkVEcm9wU2hhZG93OjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUKIAogICAgIGNvbnRleHRTaGFkb3cuYmx1ckxheWVySW1hZ2Uoc3JjUGl4ZWxB
cnJheS0+ZGF0YSgpLCBzaGFkb3dBcmVhLnNpemUoKSwgNCAqIHNoYWRvd0FyZWEuc2l6ZSgpLndp
ZHRoKCkpOwogCi0gICAgcmVzdWx0SW1hZ2UtPnB1dFByZW11bHRpcGxpZWRJbWFnZURhdGEoc3Jj
UGl4ZWxBcnJheS5nZXQoKSwgc2hhZG93QXJlYS5zaXplKCksIHNoYWRvd0FyZWEsIEludFBvaW50
KCkpOworICAgIHJlc3VsdEltYWdlLT5wdXRCeXRlQXJyYXkoUHJlbXVsdGlwbGllZCwgc3JjUGl4
ZWxBcnJheS5nZXQoKSwgc2hhZG93QXJlYS5zaXplKCksIHNoYWRvd0FyZWEsIEludFBvaW50KCkp
OwogCiAgICAgcmVzdWx0Q29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNv
dXJjZUluKTsKICAgICByZXN1bHRDb250ZXh0LT5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSksIG1fc2hhZG93Q29sb3IsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAkocmV2aXNpb24gMTA2Njg2KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsOSArMTMwLDkgQEAgSW1hZ2VCdWZmZXIqIEZpbHRl
ckVmZmVjdDo6YXNJbWFnZUJ1ZmZlcgogICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpLCBDb2xvclNwYWNlTGluZWFy
UkdCLCBtX2ZpbHRlci0+cmVuZGVyaW5nTW9kZSgpKTsKICAgICBJbnRSZWN0IGRlc3RpbmF0aW9u
UmVjdChJbnRQb2ludCgpLCBtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7CiAgICAgaWYgKG1f
cHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KQotICAgICAgICBtX2ltYWdlQnVmZmVyUmVzdWx0LT5w
dXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0LmdldCgp
LCBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpLCBkZXN0aW5hdGlvblJlY3QsIEludFBvaW50KCkpOwor
ICAgICAgICBtX2ltYWdlQnVmZmVyUmVzdWx0LT5wdXRCeXRlQXJyYXkoUHJlbXVsdGlwbGllZCwg
bV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQuZ2V0KCksIGRlc3RpbmF0aW9uUmVjdC5zaXplKCks
IGRlc3RpbmF0aW9uUmVjdCwgSW50UG9pbnQoKSk7CiAgICAgZWxzZQotICAgICAgICBtX2ltYWdl
QnVmZmVyUmVzdWx0LT5wdXRVbm11bHRpcGxpZWRJbWFnZURhdGEobV91bm11bHRpcGxpZWRJbWFn
ZVJlc3VsdC5nZXQoKSwgZGVzdGluYXRpb25SZWN0LnNpemUoKSwgZGVzdGluYXRpb25SZWN0LCBJ
bnRQb2ludCgpKTsKKyAgICAgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdC0+cHV0Qnl0ZUFycmF5KFVu
bXVsdGlwbGllZCwgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdC5nZXQoKSwgZGVzdGluYXRpb25S
ZWN0LnNpemUoKSwgZGVzdGluYXRpb25SZWN0LCBJbnRQb2ludCgpKTsKICAgICByZXR1cm4gbV9p
bWFnZUJ1ZmZlclJlc3VsdC5nZXQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAJKHJldmlzaW9uIDEw
NjY4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVy
UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTksOCArMjk5LDcgQEAgc3RhdGljIGlubGluZSB1
bnNpZ25lZCBpbnQgcHJlbXVsdGlwbHlBQgogICAgIHJldHVybiB4OwogfQogCi10ZW1wbGF0ZSA8
TXVsdGlwbHkgbXVsdGlwbGllZD4KLXZvaWQgcHV0SW1hZ2VEYXRhKEJ5dGVBcnJheSomIHNvdXJj
ZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgSW1hZ2VCdWZmZXJEYXRhJiBkYXRhLCBjb25zdCBJ
bnRTaXplJiBzaXplKQordm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11
bHRpcGxpZWQsIEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQogewog
ICAgIEFTU0VSVChzb3VyY2VSZWN0LndpZHRoKCkgPiAwKTsKICAgICBBU1NFUlQoc291cmNlUmVj
dC5oZWlnaHQoKSA+IDApOwpAQCAtMzA4LDI0ICszMDcsMjQgQEAgdm9pZCBwdXRJbWFnZURhdGEo
Qnl0ZUFycmF5KiYgc291cmNlLCBjbwogICAgIGludCBvcmlnaW54ID0gc291cmNlUmVjdC54KCk7
CiAgICAgaW50IGRlc3R4ID0gZGVzdFBvaW50LngoKSArIHNvdXJjZVJlY3QueCgpOwogICAgIEFT
U0VSVChkZXN0eCA+PSAwKTsKLSAgICBBU1NFUlQoZGVzdHggPCBzaXplLndpZHRoKCkpOworICAg
IEFTU0VSVChkZXN0eCA8IG1fc2l6ZS53aWR0aCgpKTsKICAgICBBU1NFUlQob3JpZ2lueCA+PSAw
KTsKICAgICBBU1NFUlQob3JpZ2lueCA8PSBzb3VyY2VSZWN0Lm1heFgoKSk7CiAKICAgICBpbnQg
ZW5keCA9IGRlc3RQb2ludC54KCkgKyBzb3VyY2VSZWN0Lm1heFgoKTsKLSAgICBBU1NFUlQoZW5k
eCA8PSBzaXplLndpZHRoKCkpOworICAgIEFTU0VSVChlbmR4IDw9IG1fc2l6ZS53aWR0aCgpKTsK
IAogICAgIGludCBudW1Db2x1bW5zID0gZW5keCAtIGRlc3R4OwogCiAgICAgaW50IG9yaWdpbnkg
PSBzb3VyY2VSZWN0LnkoKTsKICAgICBpbnQgZGVzdHkgPSBkZXN0UG9pbnQueSgpICsgc291cmNl
UmVjdC55KCk7CiAgICAgQVNTRVJUKGRlc3R5ID49IDApOwotICAgIEFTU0VSVChkZXN0eSA8IHNp
emUuaGVpZ2h0KCkpOworICAgIEFTU0VSVChkZXN0eSA8IG1fc2l6ZS5oZWlnaHQoKSk7CiAgICAg
QVNTRVJUKG9yaWdpbnkgPj0gMCk7CiAgICAgQVNTRVJUKG9yaWdpbnkgPD0gc291cmNlUmVjdC5t
YXhZKCkpOwogCiAgICAgaW50IGVuZHkgPSBkZXN0UG9pbnQueSgpICsgc291cmNlUmVjdC5tYXhZ
KCk7Ci0gICAgQVNTRVJUKGVuZHkgPD0gc2l6ZS5oZWlnaHQoKSk7CisgICAgQVNTRVJUKGVuZHkg
PD0gbV9zaXplLmhlaWdodCgpKTsKICAgICBpbnQgbnVtUm93cyA9IGVuZHkgLSBkZXN0eTsKIAog
ICAgIHVuc2lnbmVkIHNyY0J5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVNpemUud2lkdGgoKTsKQEAg
LTM1OSwzNSArMzU4LDI1IEBAIHZvaWQgcHV0SW1hZ2VEYXRhKEJ5dGVBcnJheSomIHNvdXJjZSwg
Y28KICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgaXNQYWludGluZyA9IGRhdGEubV9wYWlu
dGVyLT5pc0FjdGl2ZSgpOworICAgIGJvb2wgaXNQYWludGluZyA9IG1fZGF0YS5tX3BhaW50ZXIt
PmlzQWN0aXZlKCk7CiAgICAgaWYgKCFpc1BhaW50aW5nKQotICAgICAgICBkYXRhLm1fcGFpbnRl
ci0+YmVnaW4oJmRhdGEubV9waXhtYXApOworICAgICAgICBtX2RhdGEubV9wYWludGVyLT5iZWdp
bigmbV9kYXRhLm1fcGl4bWFwKTsKICAgICBlbHNlIHsKLSAgICAgICAgZGF0YS5tX3BhaW50ZXIt
PnNhdmUoKTsKKyAgICAgICAgbV9kYXRhLm1fcGFpbnRlci0+c2F2ZSgpOwogCiAgICAgICAgIC8v
IHB1dEltYWdlRGF0YSgpIHNob3VsZCBiZSB1bmFmZmVjdGVkIGJ5IHBhaW50ZXIgc3RhdGUKLSAg
ICAgICAgZGF0YS5tX3BhaW50ZXItPnJlc2V0VHJhbnNmb3JtKCk7Ci0gICAgICAgIGRhdGEubV9w
YWludGVyLT5zZXRPcGFjaXR5KDEuMCk7Ci0gICAgICAgIGRhdGEubV9wYWludGVyLT5zZXRDbGlw
cGluZyhmYWxzZSk7CisgICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPnJlc2V0VHJhbnNmb3JtKCk7
CisgICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPnNldE9wYWNpdHkoMS4wKTsKKyAgICAgICAgbV9k
YXRhLm1fcGFpbnRlci0+c2V0Q2xpcHBpbmcoZmFsc2UpOwogICAgIH0KIAotICAgIGRhdGEubV9w
YWludGVyLT5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9Tb3Vy
Y2UpOwotICAgIGRhdGEubV9wYWludGVyLT5kcmF3SW1hZ2UoZGVzdHgsIGRlc3R5LCBpbWFnZSk7
CisgICAgbV9kYXRhLm1fcGFpbnRlci0+c2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21w
b3NpdGlvbk1vZGVfU291cmNlKTsKKyAgICBtX2RhdGEubV9wYWludGVyLT5kcmF3SW1hZ2UoZGVz
dHgsIGRlc3R5LCBpbWFnZSk7CiAKICAgICBpZiAoIWlzUGFpbnRpbmcpCi0gICAgICAgIGRhdGEu
bV9wYWludGVyLT5lbmQoKTsKKyAgICAgICAgbV9kYXRhLm1fcGFpbnRlci0+ZW5kKCk7CiAgICAg
ZWxzZQotICAgICAgICBkYXRhLm1fcGFpbnRlci0+cmVzdG9yZSgpOwotfQotCi12b2lkIEltYWdl
QnVmZmVyOjpwdXRVbm11bHRpcGxpZWRJbWFnZURhdGEoQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0
IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFBvaW50JiBkZXN0UG9pbnQpCi17Ci0gICAgcHV0SW1hZ2VEYXRhPFVubXVsdGlwbGllZD4oc291
cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBkZXN0UG9pbnQsIG1fZGF0YSwgbV9zaXplKTsK
LX0KLQotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0UHJlbXVsdGlwbGllZEltYWdlRGF0YShCeXRlQXJy
YXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkKLXsKLSAgICBwdXRJbWFnZURhdGE8
UHJlbXVsdGlwbGllZD4oc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBkZXN0UG9pbnQs
IG1fZGF0YSwgbV9zaXplKTsKKyAgICAgICAgbV9kYXRhLm1fcGFpbnRlci0+cmVzdG9yZSgpOwog
fQogCiAvLyBXZSBnZXQgYSBtaW1lVHlwZSBoZXJlIGJ1dCBRSW1hZ2VXcml0ZXIgZG9lcyBub3Qg
c3VwcG9ydCBtaW1ldHlwZXMgYnV0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCShyZXZpc2lvbiAx
MDY2ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVm
ZmVyU2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3NSwzNCArMjc1LDMzIEBAIFBhc3NSZWZQ
dHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHIKICAgICByZXR1cm4gZ2V0SW1hZ2VEYXRh
PFByZW11bHRpcGxpZWQ+KHJlY3QsIGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZh
cygpLCBtX3NpemUpOwogfQogCi10ZW1wbGF0ZSA8TXVsdGlwbHkgbXVsdGlwbGllZD4KLXZvaWQg
cHV0SW1hZ2VEYXRhKEJ5dGVBcnJheSomIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6
ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwK
LSAgICAgICAgICAgICAgICAgIFNrQ2FudmFzKiBjYW52YXMsIGNvbnN0IEludFNpemUmIHNpemUp
Cit2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgQnl0
ZUFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpCiB7CisgICAgU2tDYW52YXMq
IGNhbnZhcyA9IGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwogICAgIEFT
U0VSVChzb3VyY2VSZWN0LndpZHRoKCkgPiAwKTsKICAgICBBU1NFUlQoc291cmNlUmVjdC5oZWln
aHQoKSA+IDApOwogCiAgICAgaW50IG9yaWdpblggPSBzb3VyY2VSZWN0LngoKTsKICAgICBpbnQg
ZGVzdFggPSBkZXN0UG9pbnQueCgpICsgc291cmNlUmVjdC54KCk7CiAgICAgQVNTRVJUKGRlc3RY
ID49IDApOwotICAgIEFTU0VSVChkZXN0WCA8IHNpemUud2lkdGgoKSk7CisgICAgQVNTRVJUKGRl
c3RYIDwgbV9zaXplLndpZHRoKCkpOwogICAgIEFTU0VSVChvcmlnaW5YID49IDApOwogICAgIEFT
U0VSVChvcmlnaW5YIDwgc291cmNlUmVjdC5tYXhYKCkpOwogCiAgICAgaW50IGVuZFggPSBkZXN0
UG9pbnQueCgpICsgc291cmNlUmVjdC5tYXhYKCk7Ci0gICAgQVNTRVJUKGVuZFggPD0gc2l6ZS53
aWR0aCgpKTsKKyAgICBBU1NFUlQoZW5kWCA8PSBtX3NpemUud2lkdGgoKSk7CiAKICAgICBpbnQg
bnVtQ29sdW1ucyA9IGVuZFggLSBkZXN0WDsKIAogICAgIGludCBvcmlnaW5ZID0gc291cmNlUmVj
dC55KCk7CiAgICAgaW50IGRlc3RZID0gZGVzdFBvaW50LnkoKSArIHNvdXJjZVJlY3QueSgpOwog
ICAgIEFTU0VSVChkZXN0WSA+PSAwKTsKLSAgICBBU1NFUlQoZGVzdFkgPCBzaXplLmhlaWdodCgp
KTsKKyAgICBBU1NFUlQoZGVzdFkgPCBtX3NpemUuaGVpZ2h0KCkpOwogICAgIEFTU0VSVChvcmln
aW5ZID49IDApOwogICAgIEFTU0VSVChvcmlnaW5ZIDwgc291cmNlUmVjdC5tYXhZKCkpOwogCiAg
ICAgaW50IGVuZFkgPSBkZXN0UG9pbnQueSgpICsgc291cmNlUmVjdC5tYXhZKCk7Ci0gICAgQVNT
RVJUKGVuZFkgPD0gc2l6ZS5oZWlnaHQoKSk7CisgICAgQVNTRVJUKGVuZFkgPD0gbV9zaXplLmhl
aWdodCgpKTsKICAgICBpbnQgbnVtUm93cyA9IGVuZFkgLSBkZXN0WTsKIAogICAgIHVuc2lnbmVk
IHNyY0J5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVNpemUud2lkdGgoKTsKQEAgLTMxOSwxNiArMzE4
LDYgQEAgdm9pZCBwdXRJbWFnZURhdGEoQnl0ZUFycmF5KiYgc291cmNlLCBjbwogICAgIGNhbnZh
cy0+d3JpdGVQaXhlbHMoc3JjQml0bWFwLCBkZXN0WCwgZGVzdFksIGNvbmZpZzg4ODgpOwogfQog
Ci12b2lkIEltYWdlQnVmZmVyOjpwdXRVbm11bHRpcGxpZWRJbWFnZURhdGEoQnl0ZUFycmF5KiBz
b3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpCi17Ci0gICAgcHV0SW1hZ2VEYXRhPFVubXVs
dGlwbGllZD4oc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBkZXN0UG9pbnQsIGNvbnRl
eHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpLCBtX3NpemUpOwotfQotCi12b2lkIElt
YWdlQnVmZmVyOjpwdXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKEJ5dGVBcnJheSogc291cmNlLCBj
b25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRQb2ludCYgZGVzdFBvaW50KQotewotICAgIHB1dEltYWdlRGF0YTxQcmVtdWx0aXBsaWVk
Pihzb3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3QsIGRlc3RQb2ludCwgY29udGV4dCgpLT5w
bGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCksIG1fc2l6ZSk7Ci19Ci0KIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgogc3RhdGljIGJvb2wgZW5jb2RlSW1hZ2UoVCYgc291cmNlLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBkb3VibGUqIHF1YWxpdHksIFZlY3RvcjxjaGFyPiogb3V0cHV0KQog
ewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZm
ZXJXaW5DRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5DRS5jcHAJKHJldmlzaW9uIDEwNjY4NikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyV2luQ0UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODMsOSArMTgzLDkgQEAgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IElt
YWdlQnVmZmVyOjpnZXRQcgogICAgIHJldHVybiBnZXRJbWFnZURhdGE8dHJ1ZT4ocmVjdCwgbV9k
YXRhLm1fYml0bWFwLmdldCgpKTsKIH0KIAotdGVtcGxhdGUgPGJvb2wgcHJlbXVsdGlwbGllZD4K
LXN0YXRpYyB2b2lkIHB1dEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6
ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQm
IGRlc3RQb2ludCwgU2hhcmVkQml0bWFwKiBiaXRtYXApCit2b2lkIEltYWdlQnVmZmVyOjpwdXRC
eXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0IElu
dFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBv
aW50JiBkZXN0UG9pbnQpCiB7CisgICAgU2hhcmVkQml0bWFwKiBiaXRtYXAgPSBtX2RhdGEubV9i
aXRtYXAuZ2V0KCk7CiAgICAgdW5zaWduZWQgY2hhciogZHN0ID0gKHVuc2lnbmVkIGNoYXIqKWJp
dG1hcC0+Ynl0ZXMoKTsKICAgICBpZiAoIWRzdCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjExLDcg
KzIxMSw3IEBAIHN0YXRpYyB2b2lkIHB1dEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXIKICAgICAg
ICAgICAgIGludCBncmVlbiA9ICpzcmMrKzsKICAgICAgICAgICAgIGludCBibHVlID0gKnNyYysr
OwogICAgICAgICAgICAgaW50IGFscGhhID0gKnNyYysrOwotICAgICAgICAgICAgaWYgKHByZW11
bHRpcGxpZWQpIHsKKyAgICAgICAgICAgIGlmIChtdWx0aXBsaWVkID09IFByZW11bHRpcGxpZWQp
IHsKICAgICAgICAgICAgICAgICAqZHN0KysgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihi
bHVlICogMjU1IC8gYWxwaGEpOwogICAgICAgICAgICAgICAgICpkc3QrKyA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXI+KGdyZWVuICogMjU1IC8gYWxwaGEpOwogICAgICAgICAgICAgICAgICpk
c3QrKyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHJlZCAqIDI1NSAvIGFscGhhKTsKQEAg
LTIyOCwxNiArMjI4LDYgQEAgc3RhdGljIHZvaWQgcHV0SW1hZ2VEYXRhKEJ5dGVBcnJheSogc291
cgogICAgIH0KIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0VW5tdWx0aXBsaWVkSW1hZ2VEYXRh
KEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQotewotICAgIHB1dElt
YWdlRGF0YTxmYWxzZT4oc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBkZXN0UG9pbnQs
IG1fZGF0YS5tX2JpdG1hcC5nZXQoKSk7Ci19Ci0KLXZvaWQgSW1hZ2VCdWZmZXI6OnB1dFByZW11
bHRpcGxpZWRJbWFnZURhdGEoQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJj
ZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9p
bnQpCi17Ci0gICAgcHV0SW1hZ2VEYXRhPHRydWU+KHNvdXJjZSwgc291cmNlU2l6ZSwgc291cmNl
UmVjdCwgZGVzdFBvaW50LCBtX2RhdGEubV9iaXRtYXAuZ2V0KCkpOwotfQotCiB2b2lkIEltYWdl
QnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgVmVjdG9yPGludD4mIGxv
b2tVcFRhYmxlKQogewogICAgIFVOVVNFRF9QQVJBTShsb29rVXBUYWJsZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4
LmNwcAkocmV2aXNpb24gMTA2Njg2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd3gvSW1hZ2VCdWZmZXJXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDEyICs3Miw3IEBA
IFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHIKICAgICByZXR1cm4gMDsK
IH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKEJ5dGVBcnJh
eSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLXZvaWQgSW1hZ2VCdWZmZXI6OnB1dFByZW11bHRpcGxpZWRJbWFnZURhdGEoQnl0
ZUFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpCit2b2lkIEltYWdlQnVmZmVy
OjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgQnl0ZUFycmF5KiBzb3VyY2UsIGNv
bnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFBvaW50JiBkZXN0UG9pbnQpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UuaAkocmV2aXNpb24gMTA2Njg2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMyw3
IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgd2tQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nCiB9
IHdrUGF0dGVyblRpbGluZzsKIGV4dGVybiBDR1BhdHRlcm5SZWYgKCp3a0NHUGF0dGVybkNyZWF0
ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSkoQ0dJbWFnZVJlZiwgQ0dBZmZpbmVUcmFuc2Zvcm0sIGlu
dCk7CitleHRlcm4gdm9pZCAoKndrQ0dDb250ZXh0UmVzZXRDbGlwKShDR0NvbnRleHRSZWYpOwog
ZXh0ZXJuIENGUmVhZFN0cmVhbVJlZiAoKndrQ3JlYXRlQ3VzdG9tQ0ZSZWFkU3RyZWFtKSh2b2lk
ICooKmZvcm1DcmVhdGUpKENGUmVhZFN0cmVhbVJlZiwgdm9pZCAqKSwgCiAgICAgdm9pZCAoKmZv
cm1GaW5hbGl6ZSkoQ0ZSZWFkU3RyZWFtUmVmLCB2b2lkICopLCAKICAgICBCb29sZWFuICgqZm9y
bU9wZW4pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJlYW1FcnJvciAqLCBCb29sZWFuICosIHZvaWQg
KiksIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UubW0JKHJldmlzaW9uIDEwNjY4NikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzIsNiArMTMyLDcgQEAgQ1RMaW5lUmVmICgqd2tDcmVhdGVDVExpbmVXaXRoVW5pQ2hhclBy
bwogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX1NOT1dfTEVPUEFSRCkKIENUVHlwZXNldHRlclJlZiAoKndrQ3JlYXRlQ1RUeXBlc2V0dGVy
V2l0aFVuaUNoYXJQcm92aWRlckFuZE9wdGlvbnMpKGNvbnN0IFVuaUNoYXIqICgqcHJvdmlkZSko
Q0ZJbmRleCBzdHJpbmdJbmRleCwgQ0ZJbmRleCogY2hhckNvdW50LCBDRkRpY3Rpb25hcnlSZWYq
IGF0dHJpYnV0ZXMsIHZvaWQqKSwgdm9pZCAoKmRpc3Bvc2UpKGNvbnN0IFVuaUNoYXIqIGNoYXJz
LCB2b2lkKiksIHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYgb3B0aW9ucyk7CiAKK3ZvaWQgKCp3a0NH
Q29udGV4dFJlc2V0Q2xpcCkoQ0dDb250ZXh0UmVmKTsKIENHQ29udGV4dFJlZiAoKndrSU9TdXJm
YWNlQ29udGV4dENyZWF0ZSkoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIHVuc2lnbmVkIHdpZHRoLCB1
bnNpZ25lZCBoZWlnaHQsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKTsKIENHSW1hZ2VSZWYg
KCp3a0lPU3VyZmFjZUNvbnRleHRDcmVhdGVJbWFnZSkoQ0dDb250ZXh0UmVmIGNvbnRleHQpOwog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDY2ODYpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wMi0wMyAgTWF0dGhl
dyBEZWxhbmV5ICA8bWRlbGFuZXlAYXBwbGUuY29tPgorCisgICAgICAgIHRvRGF0YVVSTCgpIHVz
ZXMgc3RhbGUgZGF0YSBhZnRlciBwdXRJbWFnZURhdGEoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU3NjcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYlN5c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJm
YWNlKToKKwogMjAxMi0wMi0wMyAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NjkxCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1J
bnRlcmZhY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCShyZXZpc2lvbiAxMDY2ODYpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1J
bnRlcmZhY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgdm9pZCBJbml0V2Vi
Q29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgICAgICBJTklUKENvcHlDRkxvY2FsaXphdGlv
blByZWZlcnJlZE5hbWUpOwogICAgICAgICBJTklUKENHQ29udGV4dEdldFNob3VsZFNtb290aEZv
bnRzKTsKICAgICAgICAgSU5JVChDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0p
OworICAgICAgICBJTklUKENHQ29udGV4dFJlc2V0Q2xpcCk7CiAgICAgICAgIElOSVQoQ29weUNP
Tk5FQ1RQcm94eVJlc3BvbnNlKTsKICAgICAgICAgSU5JVChDb3B5TlNVUkxSZXNwb25zZVN0YXR1
c0xpbmUpOwogICAgICAgICBJTklUKENyZWF0ZUNUTGluZVdpdGhVbmlDaGFyUHJvdmlkZXIpOwpJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjY4NikKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTItMDItMDMgIE1hdHRoZXcgRGVsYW5leSAgPG1kZWxhbmV5QGFwcGxlLmNvbT4KKwor
ICAgICAgICB0b0RhdGFVUkwoKSB1c2VzIHN0YWxlIGRhdGEgYWZ0ZXIgcHV0SW1hZ2VEYXRhKCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NzY3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvV2Vi
Vmlld0ltcGwuY3BwOiBVcGRhdGVkIG1ldGhvZCBuYW1lLgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6ZG9QaXhlbFJlYWRiYWNrVG9DYW52YXMpOgorCiAyMDEyLTAyLTAzICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Nzc2OTEKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDEwNjY4NikKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwNiw3ICsxMjA2
LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZG9QaXhlbFJlYWRiYWNrVG9DYW52YQogICAgIFJlZlB0
cjxCeXRlQXJyYXk+IHBpeGVsQXJyYXkoQnl0ZUFycmF5OjpjcmVhdGUocmVjdC53aWR0aCgpICog
cmVjdC5oZWlnaHQoKSAqIDQpKTsKICAgICBpZiAoaW1hZ2VCdWZmZXIgJiYgcGl4ZWxBcnJheSkg
ewogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbXBvc2l0ZUFuZFJlYWRiYWNrKHBpeGVsQXJy
YXktPmRhdGEoKSwgaW52ZXJ0UmVjdCk7Ci0gICAgICAgIGltYWdlQnVmZmVyLT5wdXRQcmVtdWx0
aXBsaWVkSW1hZ2VEYXRhKHBpeGVsQXJyYXkuZ2V0KCksIHJlY3Quc2l6ZSgpLCBJbnRSZWN0KElu
dFBvaW50KCksIHJlY3Quc2l6ZSgpKSwgSW50UG9pbnQoKSk7CisgICAgICAgIGltYWdlQnVmZmVy
LT5wdXRCeXRlQXJyYXkoUHJlbXVsdGlwbGllZCwgcGl4ZWxBcnJheS5nZXQoKSwgcmVjdC5zaXpl
KCksIEludFJlY3QoSW50UG9pbnQoKSwgcmVjdC5zaXplKCkpLCBJbnRQb2ludCgpKTsKICAgICAg
ICAgZ2Muc2F2ZSgpOwogICAgICAgICBnYy50cmFuc2xhdGUoSW50U2l6ZSgwLCBiaXRtYXBIZWln
aHQpKTsKICAgICAgICAgZ2Muc2NhbGUoRmxvYXRTaXplKDEuMGYsIC0xLjBmKSk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDY2ODYpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wMi0wMyAgTWF0dGhl
dyBEZWxhbmV5ICA8bWRlbGFuZXlAYXBwbGUuY29tPgorCisgICAgICAgIHRvRGF0YVVSTCgpIHVz
ZXMgc3RhbGUgZGF0YSBhZnRlciBwdXRJbWFnZURhdGEoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU3NjcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVy
ZmFjZS5tbTogCisKIDIwMTItMDItMDMgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzc0
MApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJm
YWNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlN5c3RlbUludGVyZmFjZS5tbQkocmV2aXNpb24gMTA2Njg2KQorKysgU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC00NSw2ICs0NSw3IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAg
ICBJTklUKEFkdmFuY2VEZWZhdWx0QnV0dG9uUHVsc2VBbmltYXRpb24pOwogICAgIElOSVQoQ0dD
b250ZXh0R2V0U2hvdWxkU21vb3RoRm9udHMpOwogICAgIElOSVQoQ0dQYXR0ZXJuQ3JlYXRlV2l0
aEltYWdlQW5kVHJhbnNmb3JtKTsKKyAgICBJTklUKENHQ29udGV4dFJlc2V0Q2xpcCk7CiAgICAg
SU5JVChDb3B5Q0ZMb2NhbGl6YXRpb25QcmVmZXJyZWROYW1lKTsKICAgICBJTklUKENvcHlDT05O
RUNUUHJveHlSZXNwb25zZSk7CiAgICAgSU5JVChDb3B5TlNVUkxSZXNwb25zZVN0YXR1c0xpbmUp
OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2hlY2stc3RhbGUtcHV0SW1hZ2VEYXRh
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jaGVj
ay1zdGFsZS1wdXRJbWFnZURhdGEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvY2hlY2stc3RhbGUtcHV0SW1hZ2VEYXRhLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjg6IGEg
PT0gYj8gZmFsc2UKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAzNTogYSA9PSBjPyBmYWxzZQorMSwg
MywgYW5kIDQgc2hvdWxkIGFsbCBzaG93IHRoZSBzYW1lIHJlZCBzcXVhcmUuIDIgc2hvdWxkIHNo
b3cgbm90aGluZy4KKworCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NoZWNrLXN0
YWxlLXB1dEltYWdlRGF0YS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL2NoZWNrLXN0YWxlLXB1dEltYWdlRGF0YS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvY2hlY2stc3RhbGUtcHV0SW1hZ2VEYXRhLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPjxoZWFkPjwvaGVhZD48Ym9keT4KKyAgICAxLCAz
LCBhbmQgNCBzaG91bGQgYWxsIHNob3cgdGhlIHNhbWUgcmVkIHNxdWFyZS4gMiBzaG91bGQgc2hv
dyBub3RoaW5nLgorPG9sPgorPGxpPjxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjEwMCIgaGVp
Z2h0PSIxMDAiPjwvY2FudmFzPjwvbGk+Cis8bGk+PGltZyBzcmM9IiIgaWQ9ImEiPjwvbGk+Cis8
bGk+PGltZyBzcmM9IiIgaWQ9ImIiPjwvbGk+Cis8bGk+PGltZyBzcmM9IiIgaWQ9ImMiPjwvbGk+
Cis8L29sPgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
dHJ1ZSk7CisKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggJ2NhbnZhcycg
KTsKK3ZhciBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoICcyZCcgKTsKK3ZhciBpbWcgPSBj
b250ZXh0LmdldEltYWdlRGF0YSggMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0ICk7
CisKK3ZhciBpbWdfYSA9IGNhbnZhcy50b0RhdGFVUkwoICdpbWFnZS9wbmcnICk7CisKKy8qIGZp
bGwgd2l0aCByZWQgKi8KK2ZvciAoIHZhciBpID0gMDsgaSA8IGltZy5kYXRhLmxlbmd0aDsgaSAr
PSA0ICkKKwlpbWcuZGF0YVtpXSA9IGltZy5kYXRhW2krM10gPSAyNTU7CisKK2NvbnRleHQucHV0
SW1hZ2VEYXRhKCBpbWcsIDAsIDAgKTsKK3ZhciBpbWdfYiA9IGNhbnZhcy50b0RhdGFVUkwoICdp
bWFnZS9wbmcnICk7CisKK2NvbnNvbGUubG9nKCAnYSA9PSBiPyAnICsgKGltZ19hID09IGltZ19i
KSApOworCitjb250ZXh0Lm1vdmVUbyggMCwgMCApOyAKK2NvbnRleHQubGluZVRvKCAwLCAwICk7
Citjb250ZXh0LnN0cm9rZSgpOworCit2YXIgaW1nX2MgPSBjYW52YXMudG9EYXRhVVJMKCAnaW1h
Z2UvcG5nJyApOworY29uc29sZS5sb2coICdhID09IGM/ICcgKyAoaW1nX2EgPT0gaW1nX2MpICk7
CisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAnYScgKS5zcmMgPSBpbWdfYTsKK2RvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCAnYicgKS5zcmMgPSBpbWdfYjsKK2RvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCAnYycgKS5zcmMgPSBpbWdfYzsKKzwvc2NyaXB0PgorCis8L2JvZHk+PC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2hlY2stc3RhbGUtcHV0SW1hZ2VEYXRhLWV4cGVj
dGVkLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFy
eSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jaGVjay1zdGFsZS1wdXRJbWFn
ZURhdGEtZXhwZWN0ZWQucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKICAgKyBh
cHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KCgppVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBeUFBQUFK
WUNBWUFBQUNhZG9Kd0FBQUFLWFJGV0hSamFHVmphM04xYlFBek1XRmtaak5rCk5EWTJOVEE1Tmpa
bU5EUTRaR0U0WkdSaVlqVTRZV1JtTWZ6cGtJc0FBQ0FBU1VSQlZIaWM3ZDE3a0pYMWZmanh6d0pl
SUJnaWx3QUIKOFJLTkVrMHBHR1BWMUlreFFhY0dUUkVMMm5naFRrWWx6a1JSbXpRYW5TcWFhR0RL
YU0xWTAxb2pGcXV4Q1ZGeUFSVXlta1F4aXNaWQpiUUNSZ0VnVlFTNExMT3d1Mzk4ZkR1Y0h5bDRP
bDg5WjlQV2FZY2F6NXp6UDgvMStmWjVkM3V5NTFKVlNTZ0FBQUNUb1ZPc0JBQUFBCkh4d0NCQUFB
U0NOQUFBQ0FOQUlFQUFCSUkwQUFBSUEwQWdRQUFFZ2pRQUFBZ0RRQ0JBQUFTQ05BQUFDQU5GVUh5
SVlORzNiNFlFdVgKTG8zNit2b2QzbjVYYUc1dWp2LzkzLzl0OStOZmUrMjFIVHBPZlgxOUxGbXla
SWUyYlkrTkd6Zkc3MzczdXhidnIzYWVyZTI3cldPMQpaSGV2UWJVNjJuZzZrcDA1WC9ZMGI3MzFW
alExTmUzdzludnF0ZjErTy8vYm1zK0tGU3RpL3Z6NWlTTUNvTDNhSFNBTEZ5Nk1peSsrCk9FNDc3
YlNxRC9MU1N5L0Y2YWVmSGlOSGpveisvZnZIcFpkZVd2VStkb1hubm5zdWpqNzY2TGpvb292YTlm
aVpNMmZHc0dIRHFqN08KZ3c4K0dQMzc5NDhwVTZaVXZXMTdQUFBNTTNIY2NjZkZ5SkVqdDN0L3Rm
TnNiZDl0SGFzbHUzc05xdFhSeHRPUjdNejVzaWVaTTJkTwpuSHp5eVhIQUFRZkVnQUVENHZMTEw0
LzE2OWRYdFk4OTlkcCt2NTMvN1puUGRkZGRWL1gzTFFCeXRDdEE2dXZyWSszYXRiRjQ4ZUpvCmFH
aW82Z0JOVFUweFo4NmN1UC8rKzJQT25Ebng0SU1QeHUyMzN4NXo1ODdkb1FIdmpLRkRoOGFKSjU0
WVhicDBhZk94SzFhc2lBa1QKSnNUbXpadXJQczZvVWFOaTBLQkJPekxFZHZuMHB6OGQ1NTU3Ym92
M1Z6UFB0dmJkMXJGYXNydlhvRDNXclZzWFAvLzV6enZNZURxcQpuVGxmOWhTclZxMktTWk1teFEw
MzNCRExseStQYjMvNzJ6RjU4dVNZTUdGQ1ZmdlpVNi90OThQNVgrMzFmTXN0dDhTamp6NmFNVFFB
CnF0U3VBT25ldlhzTUdUSWtEanp3d0tpcnE2dnFBQTBORFhIZWVlZEYxNjVkSXlMaXVPT09pdzkv
K01OeHdBRUhWRDNZeHNiR3FyZloKWWt0SWRPN2NPVHAxYW52YWt5Wk5pZ3N2dkxEZDh5MmxiSE83
UzVjdVZhOVZOVnJhZjdYejNONmF2bnZmN1oxTDlocTBadE9tVFRGbQp6Smg0OXRsbmQrdDQzajNu
TFhibVhNMVU3Zm5TMG54MzF1NWVyNmVmZmpwdXYvMzJPUDc0NDZONzkrN3hqVzk4STQ0NDRvaDQ1
cGxuCjJ0eDJUNzIyTzlMMXVMTjI1SHJ1MXExYjlPM2J0K3BqN2E1ekhJRC9iN2UvQ0wxNzkrN1J1
WFBueXUxLy9kZC9qWC81bDMrSlBuMzYKdEhzZmp6enlTTng4ODgweGVmTGtPT0dFRStJUGYvaERS
RVE4OXRoak1YcjA2TGp5eWl2anpqdnZqSTkvL09OeCtPR0h4OEtGQ3l2YgoxdGZYeHlXWFhCSTMz
WFJUZlAzclg0L2YvLzczYlI1dnlwUXBjY1laWjBTM2J0M2FmT3g5OTkwWGQ5eHhSMHljT0RHT1Av
NzRiZTVyCmJtNk9xNisrT2dZTkdoUkhIbmxrdlBMS0s1WDcxcXhaRTVkZWVtbjh3ei84UTV4NTVw
bHg2YVdYeHJwMTZ5SWk0c2MvL25FTUdEQWcKYnJ2dHRvaUl1UC8rKytQd3d3K1BpeSsrdU1WeFZE
dlBsdFowUit5T05aZzJiVnIwN3QwN1JvNGNHYXRXcllwNzdya24rdlRwRThPSApENi9zNDUvLyta
L2p4Qk5QakkwYk43NW5UTGZkZGxzODhzZ2o4Yk9mL1N3dXZQREN5bjViRzgreVpjdmlpaXV1aU05
Ly92TXhiTml3ClZwK0gzOUtjVzFyWGVmUG14WlZYWGhtWFgzNTUvT3huUDR0aHc0YkYwVWNmSGIv
OTdXL2pEMy80UTR3YU5TcjY5KysvemIvSXQzYzgKVHovOWRIenRhMStMYTY2NUptNjQ0WWJvM2J0
M3pKa3pwOVh0cXoxZldwcnYrdlhyWS96NDhYSExMYmZFcUZHajRtdGYrMXFNSGowNgpJdHAzSHJl
MFhqc3lwOVlNSHo3OFBkOXpQdkdKVDhTaGh4NWE5WndqT3ZhMTNSR3Z4L1o4cjI3dCtOVmV6MHVY
TG8zdmZ2ZTc4VmQvCjlWZnRQdjY2ZGV2aXZQUE9pOHN1dXl4T09lV1VHRDE2ZE54MDAwM3grT09Q
dDdyZUFPeUFVb1dMTDc2NEhILzg4ZFZzVXJGNDhlSXkKWnN5WVVsZFhWNzc2MWErV0RSczJ0R3U3
aG9hRzByOS8veko3OXV4U1Npbi85RS8vVkVhT0hGbEtLZVd0dDk0cVJ4eHhSRG5paUNQSwpqQmt6
eXRLbFM4dmd3WVBMaFJkZVdObitsRk5PS1E4KytHQXBwWlRObXplWGdRTUhsaTkrOFlzdEh1K1ZW
MTRwMy92ZTkwb3BwVHp3CndBT2xkKy9lTFQ1MjA2Wk5aZGl3WVpYYlYxNTVaV2x1Ymk2bGxQSVhm
L0VYNVMvLzhpL0w0NDgvWHBZdFcxWSsrY2xQVnNhMWVmUG0KY3Z6eHg1ZXBVNmVXVWtwcGJHd3N4
eDEzWERubGxGTXEreG80Y0dDNThjWWJ0NW5IV1dlZFZibDk2NjIzbG43OSt1M1FQRnRiMCszdAor
OTIzczliZ21HT09LUmRjY0VIbDlza25uMXpPUC8vOHl1MkhIMzY0M0hQUFBkc2RWeW1sSEhUUVFl
V21tMjZxM0c1dFBJMk5qZVhVClUwOHQ5ZlgxWmZQbXplWHJYLzk2NmRXclYxbXhZa1c3NTl6YXVp
NWF0S2g4K3RPZkxvY2Nja2g1NktHSHlzYU5HOHZaWjU5ZERqNzQKNERKeDRzU3lhdFdxY3VPTk41
YUlLQ3RXcktocVBNOCsrMnpwMWF0WEdUSmtTSG5vb1lmS043N3hqZktuUC8ycDFlMnJPVjlhKzM4
OApmUGp3OHNBREQxVHVPLzMwMDhzeHh4eFR1ZDNhZWR6YWV1M0luS3JSM054Y0JnMGFWSjUvL3Zt
cTU5eVJyKzJPZWoyMjliMjZQY2V2CjVucGV1WEpsdWZUU1N5dmZ2OXZ6czJMeTVNbmxzc3N1SzZX
VTh0SkxMNVdJS0JNblRpeExsaXpaN3B3QTJIRnBiOFBicFV1WCtNcFgKdmhKanhveUp1KzY2cTkz
UHZkNTc3NzFqN05peE1YVG8wSWlJNk5HalI3ejg4c3NSRWRHclY2ODQrT0NENDFPZitsUU1IejQ4
UHZheApqOFZKSjUwVTgrYk5pNGlJMy96bU4vSElJNC9FRjcvNHhZaUlxS3VyaTcvNW03OXA4VmpO
emMweGFkS2tHRDkrZkx2R3RuYnQybmpoCmhSZml4ei8rY1VSRVhIVFJSZHY4K3Y2MDAwNkx2Lzdy
djQ1Ky9mckZTU2VkVkhubm1wLy8vT2N4Wjg2Y09PdXNzeXByODlXdmZqVm0KekpnUlR6enhSRVJF
N0x2dnZ0czh2YUJyMTY0dFB0Mmcybm0ydHFiVjJwMXJNSGJzMlBqVnIzNFZ6YzNORVJIeHVjOTlM
aDU2NktIWQp0R2xUUkx6ekpnRm5ubmxtcStONzk1cTFOSjZwVTZkR1UxTlRQUHp3dzNILy9mZEg5
KzdkWThXS0ZkdjkxOCtXNXR6YXVoNTQ0SUh4CnFVOTlLZ1lQSGh3alJveUl2ZmZlTzBhTUdCR3Z2
ZlphWEhIRkZkR2pSNC9LbXpNc1dyU29xdkVNR3pZc0RqLzg4RGpxcUtOaXhJZ1IKTVhueTVIanFx
YWRhM0w3YTg2V2wrYzZlUFRzZWUreXhPUFhVVXl1UFBmamdnN2ZadHJYenVMWDFxblpPMWJydnZ2
dGkxS2hSTVdUSQprS3JtdkVWSHZiWTc2dlhZMXZmcTloeC95L3kzMXRKODl0OS8veGc4ZUhCbDdt
MGRQeUxpM252dmpkNjllMGRFeE9EQmc2TnYzNzdSCjNOd2NBd2NPYkhHOUFkZ3hhUUhTdjMvL09P
MjAwMkxxMUtreFlzU0ltRFp0V3J1MnE2dXJpeHR2dkRGZWZmWFYrTjczdmhkejVzeloKNXExODYr
cnF0dm1oMUwxNzk4cFRBQjUvL1BFWVBIaHdmUGpESDY3YzM2MWJ0eFovMkUrY09ESEdqaDBicFpU
WXRHbFRORFkyVnY1Nwp5dy9kcmZYczJUUE9QLy84K0x1Lys3czQ1NXh6b25mdjN0czgzV3pyNC9U
bzBhUHl0SUhmLy83MzBhZFBuMjFlU0hyc3NjZEdSTVR6Cnp6L2ZyblhaV3JYemJHdE5xN0U3MTJE
TW1ESHg5dHR2eDZ4WnN5SWk0bzkvL0dOczJyUXBac3lZVWRsUFcwK1RlL2NhdERTZU9YUG0KeEtC
QmcrS3d3dzZMd3c0N0xNNDY2Nng0NXBsbjRvUVRUbWozbkhma1hOM2FsdHNyVnF5b2Fqd1I3L3ls
dGxldlhwWGJyVzFmN2ZuUwowbnlmZU9LSkdEeDRjT3kzMzM0dHpyRTFiYTFYTlhPcXh2TGx5MlA2
OU9seDg4MDN0L2lZUGZYYTdzalhZMnZmcTl1N2J1MjlucmQzCnZOYU9IeEhSdTNmditPMXZmMXU1
M2F0WHJ6anh4Qk5ibkE4QU82NG1iM3Z6NVM5L09TWk5tdFR1eDk5NDQ0MnhkT25TdVAzMjIrT08K
Tys3WTVvZEVhMTUvL2ZWNC9mWFhvNVR5bmg5RTJ6TjE2dFQ0MXJlKzlaNnY3N1BQUGpGKy9QanRq
dm5mL3UzZjR0QkRENDNycnJzdQpubi8rK1hqODhjY3IvNHJXa3NiR3huampqVGRpMWFwVjhaR1Bm
Q1FpSWo3NXlVOUdseTVkZHVqRnVOWE9NMkxIMTNSN2R0Y2E3TC8vCi9qRml4SWlZTW1WSzdMZmZm
dkhaejM0MnVuYnRHbE9uVG8yMzMzNjd6ZDkrUkxTK0JsdGJ2WHAxbEZMaTZLT1BidGZqVzVwek5l
dmEKcVZPbkZ2OS9WVHVlYXVhekkrZkw5dWI3NXB0dnhySmx5M1pvZkZ0VXMxNDd1eVlSNzd5USs5
cHJyNDFiYjcyMXpYZVMybE92N1k1OApQZTdNOGR1YTk4NzZ4My84eHhnOWVuUTg5dGhqc2UrKys4
YWdRWU1xcnlFQllOZXF5U2VoMTlmWHQvdGZMZWZPblZ0NUlXcTFQM3dPClBQREFlUHZ0dCtQRkYx
OXMxK05uenB3WlM1WXNxZnk1ODg0N1kvLzk5NDhsUzViRXRkZGUrNTdITDFteUpCWXRXaFRmK3Rh
MzRxbW4Kbm9vMzMzd3pwazZkMnVaeGpqcnFxQ2lseE5OUFAxMzUydEtsUzZPcHFTbU9PdXFveXRm
YSsyRnAxYzV6WjliMDNYYjNHbHh3d1FYeAprNS84Skg3d2d4L0VCUmRjRU9lZmYzNDg5TkJEOGF0
Zi9hcGQvenBaMnZtT05vY2VlbWo4OHBlL2pEVnIxbFMrMXRUVUZMLzR4Uy9lCjg5aVc1cndyMTdX
YThWUzdmYlhuUzB2ekhUQmdRS3hZc1NJV0xGaFFlZXoyMXJ1bDg3amE5ZHJaTlltSXVQbm1tK095
eXk3YjVnWHAKVzc4UWVZczk5ZHJ1Nk5manpoNi92ZGZ6ampqdXVPUGlra3N1aVdYTGxrVkRRME5N
bno1OXR4MEw0SU91cWdCWnYzNzlkbjl3cmx5NQpNaTY0NElLWVBYdjJlKzVidlhwMS9QU25QNjM4
SzFZcEpXYk5taFhYWDM5OXU3WmZ2SGh4UkVUODduZS9pdzBiTnNRdmZ2R0xXTGR1ClhUUTJOc2Jt
elp1am9hRmhtNmRIclYyN3RuS3NzODgrTy9iWlo1L0tieTZhbTV0ajd0eTU4ZnJycjIvM0E4ajY5
dTBiQXdjT3JQeloKOHZTRmdRTUhSbzhlUGQ3eitEVnIxc1IvL2RkL1JjUTc3ODkvNnFtblZ0NWVl
TXRucDJ4UlgxOWZlWHJKbVdlZUdZY2Nja2psUGUwagozdmtBc2lGRGhzUVh2dkNGaUhqbjh3Qisv
ZXRmeDlxMWErUGxsMStPZWZQbWJmT3Z6UnMyYktnOGZhRGFlYmExcGx2dis5M0h5bHlECmlJaFRU
amtsdW5mdkhyMTY5WXI5OXRzdlB2ZTV6MFdmUG4zaXNNTU9hL012clQxNzlvd0ZDeFpFS1NXV0xW
dlc2bmpPUGZmY1dMMTYKZFp4OTl0bXhhTkdpbURkdlhseHh4UlZ4ekRISHRIdk9iYTNyeG8wYnQ3
bCtHaG9hb3FtcHFiSzJXNTVMMzlUVVZOVjR0bXk3OWRPWApXdHUrMnZPbHBmbU9HREVpNnVycTR2
dmYvMzQwTlRYRnFsV3JZczZjT2R2OEpiRzE4N2l0OWFwbVRoSHZmSDhhTjI1Y2k1OSsvY01mCi9q
QldyRmdSOCtiTmk0Y2ZmamltVFpzV1YxOTk5WFlEWkUrOXRqdnk5ZGphOStyMkhMK2E2M25ML3Rl
dFcxZDUrK0xXamg4UmNkVlYKVjBYUG5qM2pDMS80UWh4NzdMSHZlYXZqdHM0dkFLclFubGVxTnpR
MGxCLzk2RWVsWDc5K1phKzk5aXBUcGt6WjVwMW5ubnZ1dWRLcApVNmR5OU5GSHYyZmJWMTk5dFh6
MG94OHQvZnYzTDlkY2MwMlpQSGx5ZWZYVlY3ZDVUR3ZicjErL3Znd2RPclRzdSsrKzVaeHp6aW1Q
ClB2cG82ZGF0V3pucnJMUEtJNDg4VW5yMDZGSDY5Kzlmbm56eXlmTGNjOCtWUXc0NXBPeTk5OTVs
eG93WnBaUlMvdnUvLzd2MDZOR2oKREJvMHFJd1lNYUw4N2QvK2JUbisrT1BMdmZmZTIrYThmL0tU
bjdUNkxsZ3Z2dmhpT2VpZ2c4b1BmdkNETW0zYXRESnUzTGpTMU5SVQo3ci8vL3RLcFU2ZHl4QkZI
bExsejU1Wm5uMzIySEg3NDRhVno1ODVsMnJScHBaUlMvdWQvL3FjY2RkUlI1YWFiYmlyVHAwOHZv
MGVQCkxxKzg4a3BsMzdObXpTcTlldlVxSC92WXg4cFZWMTFWTHJua2tuTHl5U2VYR1RObWxLZWVl
cW9NSFRxMFJFUzU3YmJieXNhTkc2dWEKWjJ0citwdmYvR2FiZlQveHhCUHZPVmJXR214eDFWVlhs
UVVMRmxSdWYrYzczOW51NDk3dE85LzVUb21JY3M0NTU1Ui8vL2QvYjNNOApkOTk5ZCtuYXRXdUpp
TktuVDU4eWZmcjBxdjYvdDdhdVR6enhST25YcjEvNTZFYy9XbWJObWxVV0xseFlUajMxMUJJUjVa
cHJyaW1yClZxMHExMTkvZlltSWN1YVpaNWJYWG51dDNlT1pNbVZLNmRhdFcrbmJ0Mis1Nzc3N0ts
OXZiZnRxenBlVzVsdEtLYmZjY2t2cDNMbHoKK2NoSFBsTEdqQmxUempubm5QS1p6M3ltc20xcjUz
RnI2L1VmLy9FZlZjL3BwWmRlS25WMWRlVkhQL3JSZStZd2E5YXMwcVZMbHhJUgoyL3daTUdCQTVW
MmkyalBuam41dGQ5VHJjZmJzMlcxK3IyN3IrTlZjejA4OTlWUTU5dGhqSys5a05YUG16RGFQUDM3
OCtHM09qUTk5CjZFTmw3Tml4bGU5NXJaMWZBRlNucnBSZDh6dnQxYXRYeCtUSmsrTzY2NjdiN3Yw
clY2Nk1uajE3N3ZEMkd6WnNxSHlZWVdOalkreTEKMTE3dEh0dm16WnRqNWNxVjBidDM3MmhvYUlo
OTk5MjMzZHUydGQ5T25UckZxbFdyWXErOTlvb1BmZWhEVmU5andZSUYwYmx6NS9lOAplMUJFVkY3
ODNyVnIxM2JOdWRwNTdzeWFibjNNM2JrR0VSRWJOMjZNZmZiWnA4WGJyWG5ycmJmYWZQNzcxaG9i
RzJQSmtpVng0SUVICmJ2UGkzYTIxTmVkZHNhN1ZqR2RIdDIvditkTFdmTmVzV1JPZE9uV0s3dDI3
eHlXWFhCSno1ODZOT1hQbVZPNXY2enl1ZHIxYW05UHkKNWN1citveWhsdXlwMTNaSHZ4NTM5dmpW
WHMvVitPNTN2eHVqUm8yS2hvYUdXTHQyYmF4YXRTb2VlT0NCK1B1Ly8vdkt1NUR0cXZNTAo0SU51
bHdYSVhYZmRGWi81ekdlMmViNXU1dlpBN1cwdlFLQ2p1L1BPTytPQkJ4NklSeDk5ZEp1dno1Z3hJ
ejcrOFkrMytvR1ZBRlJ2Cmx3WEkyMisvSGZ2dnYzL050Z2RxNzdPZi9XeTgrZWFiOGFjLy9XbTN2
bU1SN0VwLy9PTWY0NWhqam9rUkkwYkUwVWNmSFJzMmJJZzMKM25nanZ2U2xMOFdYdnZTbFdnOFA0
SDFubHdVSThNSDJuLy81bjdGbzBhS0llT2RkamM0NDQ0emFEZ2lxc0hyMTZuajg4Y2ZqLy83dgov
K0trazA3eVd3K0EzVWlBQUFBQWFXcnlPU0FBQU1BSGt3QUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVB
QUFJSTBBQVFBQTBnZ1FBQUFnCmpRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBn
Z1FBQUFnalFBQkFBRFNDQkFBQUNCTmwxb1BZS2ZWMWRWNkJHeXQKbEZxUEFBQ0FEc3h2UUFBQWdE
UUNCQUFBU0NOQUFBQ0FOQUlFQUFCSUkwQUFBSUEwQWdRQUFFZ2pRQUFBZ0RRQ0JBQUFTQ05BQUFD
QQpOQUlFQUFCSUkwQUFBSUEwQWdRQUFFZ2pRQUFBZ0RRQ0JBQUFTQ05BQUFDQU5BSUVBQUJJSTBB
QUFJQTBBZ1FBQUVnalFBQUFnRFFDCkJBQUFTQ05BQUFDQU5BSUVBQUJJSTBBQUFJQTBBZ1FBQUVn
alFBQUFnRFFDQkFBQVNDTkFBQUNBTkFJRUFBQklJMEFBQUlBMEFnUUEKQUVnalFBQUFnRFFDQkFB
QVNDTkFBQUNBTkFJRUFBQklJMEFBQUlBMEFnUUFBRWdqUUFBQWdEUUNCQUFBU0NOQUFBQ0FOQUlF
QUFCSQpJMEFBQUlBMEFnUUFBRWdqUUFBQWdEUUNCQUFBU0NOQUFBQ0FOQUlFQUFCSUkwQUFBSUEw
QWdRQUFFZ2pRQUFBZ0RRQ0JBQUFTQ05BCkFBQ0FOQUlFQUFCSUkwQUFBSUEwQWdRQUFFZ2pRQUFB
Z0RRQ0JBQUFTQ05BQUFDQU5BSUVBQUJJSTBBQUFJQTBBZ1FBQUVnalFBQUEKZ0RRQ0JBQUFTQ05B
QUFDQU5BSUVBQUJJSTBBQUFJQTBBZ1FBQUVnalFBQUFnRFFDQkFBQVNDTkFBQUNBTkFJRUFBQklJ
MEFBQUlBMApBZ1FBQUVnalFBQUFnRFFDQkFBQVNDTkFBQUNBTkFJRUFBQklJMEFBQUlBMEFnUUFB
RWdqUUFBQWdEUUNCQUFBU0NOQUFBQ0FOQUlFCkFBQklJMEFBQUlBMEFnUUFBRWdqUUFBQWdEUUNC
QUFBU0NOQUFBQ0FORFVQa0EwYk50UjZDQUFBUUpLYUJjakNoUXZqNG9zdmp0Tk8KTzYxV1F3QUFB
SkxWSkVEcTYrdGo3ZHExc1hqeDRtaG9hS2pGRUFBQWdCcW9TWUIwNzk0OWhnd1pFZ2NlZUdEVTFk
WFZZZ2dBQUVBTgoxUHcxSUFBQXdBZUhBQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFB
RFMxRFJBMXE5ZkgwMU5UZHY5K3JoeDQyTCsvUGsxCkdCVUFBTEM3MUNSQU5tN2NHUGZjYzAvTW5E
a3pubnZ1dWJqMzNudGo1Y3FWbGZ2Ly9PYy94eDEzM0JGUFB2bGtMWVlIQUFEc0puV2wKbEZMclFX
elA4dVhMbzArZlByVWVCZ0FBc0F0MTJBQUJBQURlZjd3SUhRQUFTQ05BQUFDQU5BSUVBQUJJSTBB
QUFJQTBBZ1FBQUVnagpRQUFBZ0RRQ0JBQUFTQ05BQUFDQU5BSUVBQUJJSTBBQUFJQTBBZ1FBQUVn
alFBQUFnRFFDQkFBQVNDTkFBQUNBTkFJRUFBQklJMEFBCkFJQTBBZ1FBQUVnalFBQUFnRFFDQkFB
QVNDTkFBQUNBTkFJRUFBQklJMEFBQUlBMEFnUUFBRWdqUUFBQWdEUUNCQUFBU0NOQUFBQ0EKTkFJ
RUFBQklJMEFBQUlBMEFnUUFBRWdqUUFBQWdEUUNCQUFBU0NOQUFBQ0FOQUlFQUFCSUkwQUFBSUEw
QWdRQUFFZ2pRQUFBZ0RRQwpCQUFBU0NOQUFBQ0FOQUlFQUFCSUkwQUFBSUEwQWdRQUFFZ2pRQUFB
Z0RRQ0JBQUFTQ05BQUFDQU5BSUVBQUJJSTBBQUFJQTBBZ1FBCkFFZ2pRQUFBZ0RRQ0JBQUFTQ05B
QUFDQU5BSUVBQUJJSTBBQUFJQTBBZ1FBQUVnalFBQUFnRFFDQkFBQVNDTkFBQUNBTkFJRUFBQkkK
STBBQUFJQTBBZ1FBQUVnalFBQUFnRFFDQkFBQVNDTkFBQUNBTkFJRUFBQklJMEFBQUlBMEFnUUFB
RWdqUUFBQWdEUUNCQUFBU0NOQQpBQUNBTkFJRUFBQklJMEFBQUlBMEFnUUFBRWdqUUFBQWdEUUNC
QUFBU0NOQUFBQ0FOQUlFQUFCSUkwQUFBSUEwQWdRQUFFZ2pRQUFBCmdEUUNCQUFBU0NOQUFBQ0FO
QUlFQUFCSUkwQUFBSUEwQWdRQUFFZ2pRQUFBZ0RRQ0JBQUFTQ05BQUFDQU5BSUVBQUJJSTBBQUFJ
QTAKQWdRQUFFZ2pRQUFBZ0RRMURaQzMzbm9ybXBxYWFqa0VBQUFnVVUwQ1pNNmNPWEh5eVNmSEFR
Y2NFQU1HRElqTEw3ODgxcTlmWDR1aApBQUFBaWRJRFpOV3FWVEZwMHFTNDRZWWJZdm55NWZIdGIz
ODdKaytlSEJNbVRNZ2VDZ0FBa0t5dWxGSXlEemh6NXN3WU9uUm85T25UCnAvSzF3WU1IeHdFSEhC
QXpaODdNSEFvQUFKQ3NTL1lCaHc4Zi9wNnZmZUlUbjRnQkF3WmtEd1VBQUVoVzgzZkIycng1Y3p6
Ly9QTngKMFVVWDFYb29BQURBYmxiekFMbnZ2dnRpMUtoUk1XVElrRm9QQlFBQTJNM1NuNEsxdGVY
TGw4ZjA2ZE5qeXBRcHRSd0dBQUNRcEdhLwpBZG04ZVhOY2UrMjFjZXV0dDBhWExqWHRJQUFBSUVu
TkF1VG1tMitPeXk2N2JKdDN3MXE0Y0dHdGhnTUFBQ1NvU1lEODhJYy9qQlVyClZzUzhlZlBpNFlj
ZmptblRwc1hWVjE5ZENaRDE2OWZIdUhIall2NzgrYlVZSGdBQXNKdWtmdzdJN05telkvanc0ZEhV
MUxUTjF3Y00KR0JDTEZ5K09UcDA2eGNzdnZ4eEhIbmxrM0gzMzNYSGVlZWRsRGc4QUFOaU4wZ09r
dlpZdlg3N04wN01BQUlBOVg0Y05FQUFBNFAybgo1cDhEQWdBQWZIQUlFQUFBSU0yZS93RWNkWFcx
SGdGYjg0dytBQUJhNFRjZ0FBQkFHZ0VDQUFDa0VTQUFBRUFhQVFJQUFLUVJJQUFBClFCb0JBZ0FB
cEJFZ0FBQkFHZ0VDQUFDa0VTQUFBRUFhQVFJQUFLUVJJQUFBUUJvQkFnQUFwQkVnQUFCQUdnRUNB
QUNrRVNBQUFFQWEKQVFJQUFLUVJJQUFBUUJvQkFnQUFwQkVnQUFCQUdnRUNBQUNrRVNBQUFFQWFB
UUlBQUtRUklBQUFRQm9CQWdBQXBCRWdBQUJBR2dFQwpBQUNrRVNBQUFFQWFBUUlBQUtRUklBQUFR
Qm9CQWdBQXBCRWdBQUJBR2dFQ0FBQ2tFU0FBQUVBYUFRSUFBS1FSSUFBQVFCb0JBZ0FBCnBCRWdB
QUJBR2dFQ0FBQ2tFU0FBQUVBYUFRSUFBS1FSSUFBQVFCb0JBZ0FBcEJFZ0FBQkFHZ0VDQUFDa0VT
QUFBRUFhQVFJQUFLUVIKSUFBQVFCb0JBZ0FBcEJFZ0FBQkFHZ0VDQUFDa0VTQUFBRUFhQVFJQUFL
UVJJQUFBUUJvQkFnQUFwQkVnQUFCQUdnRUNBQUNrRVNBQQpBRUFhQVFJQUFLUVJJQUFBUUJvQkFn
QUFwQkVnQUFCQUdnRUNBQUNrRVNBQUFFQWFBUUlBQUtRUklBQUFRQm9CQWdBQXBCRWdBQUJBCkdn
RUNBQUNrRVNBQUFFQWFBUUlBQUtRUklBQUFRQm9CQWdBQXBCRWdBQUJBR2dFQ0FBQ2tFU0FBQUVB
YUFRSUFBS1FSSUFBQVFCb0IKQWdBQXBCRWdBQUJBR2dFQ0FBQ2tFU0FBQUVBYUFRSUFBS1FSSUFB
QVFCb0JBZ0FBcEJFZ0FBQkFHZ0VDQUFDa0VTQUFBRUNhbWdiSQowcVZMbzc2K3ZwWkRBQUFBRXRV
a1FGNTY2YVU0L2ZUVFkrVElrZEcvZi8rNDlOSkxhekVNQUFBZ1dWMHBwV1Flc0ttcEthWk1tUkpq
CnhveUpybDI3eG93Wk0rTFVVMCtOWjU5OU5vWU5HMWI5RHV2cWR2MGcyWEc1cHhNQUFIdVk5QUNw
cjYrUHJsMjdSdWZPblNNaVlzMmEKTlhIQUFRZkVnZ1VMb2srZlB0WHZVSUIwTEFJRUFJQldwQWZJ
dTMzLys5K1BmdjM2eGJubm5ydGpPeEFnSFlzQUFRQ2dGVFY3RWZxUwpKVXZpN0xQUGptOSs4NXZ4
NjEvL09ob2FHbW8xRkFBQUlFbVhtaDI0UzVmNHlsZStFblYxZFhIWFhYZEYvLzc5WThLRUNiVWFE
Z0FBCmtLRG1UOEdLaURqOTlOTmo0Y0tGOGVLTEwxYS9zYWRnZFN5MVA1MEFBT2pBT3NRSEVYNzV5
MStPRHRCQkFBREFidFloQXFTK3ZqNU8KT09HRVdnOERBQURZemRJRFpQWHExZkhUbi80MEdoc2JJ
eUtpbEJLelpzMks2NisvdnZLWTlldlh4N2h4NDJMKy9Qblp3d01BQUhhago5TmVBTEZxMEtJNDk5
dGpvM0xselhIamhoZEc3ZCs4NDQ0d3o0cUNERHFvODV1V1hYNDRqanp3eTdyNzc3amp2dlBOYTM2
SFhnSFFzCm5rb0hBRUFyYXZZaTlKVXJWMGJQbmoxYnZILzU4dVU3OXNHRUFBQkFoOVVoM2dVTEFB
RDRZT2dRTDBJSEFBQStHQVFJQUFDUXBtYWYKaEw3TGVCRjZ4K0laZlFBQXRNSnZRQUFBZ0RRQ0JB
QUFTQ05BQUFDQU5BSUVBQUJJSTBBQUFJQTBBZ1FBQUVnalFBQUFnRFFDQkFBQQpTQ05BQUFDQU5B
SUVBQUJJSTBBQUFJQTBBZ1FBQUVnalFBQUFnRFFDQkFBQVNDTkFBQUNBTkFJRUFBQklJMEFBQUlB
MEFnUUFBRWdqClFBQUFnRFFDQkFBQVNDTkFBQUNBTkFJRUFBQklJMEFBQUlBMEFnUUFBRWdqUUFB
QWdEUUNCQUFBU0NOQUFBQ0FOQUlFQUFCSUkwQUEKQUlBMEFnUUFBRWdqUUFBQWdEUUNCQUFBU0NO
QUFBQ0FOQUlFQUFCSUkwQUFBSUEwQWdRQUFFZ2pRQUFBZ0RRQ0JBQUFTQ05BQUFDQQpOQUlFQUFC
SUkwQUFBSUEwQWdRQUFFZ2pRQUFBZ0RRQ0JBQUFTQ05BQUFDQU5BSUVBQUJJSTBBQUFJQTBBZ1FB
QUVnalFBQUFnRFFDCkJBQUFTQ05BQUFDQU5BSUVBQUJJSTBBQUFJQTBBZ1FBQUVnalFBQUFnRFFD
QkFBQVNDTkFBQUNBTkFJRUFBQklJMEFBQUlBMEFnUUEKQUVnalFBQUFnRFFDQkFBQVNDTkFBQUNB
TkFJRUFBQklJMEFBQUlBMEFnUUFBRWdqUUFBQWdEUUNCQUFBU0NOQUFBQ0FOQUlFQUFCSQpJMEFB
QUlBMEFnUUFBRWdqUUFBQWdEUUNCQUFBU0NOQUFBQ0FOQUlFQUFCSUkwQUFBSUEwQWdRQUFFZ2pR
QUFBZ0RRQ0JBQUFTQ05BCkFBQ0FOQUlFQUFCSUkwQUFBSUEwQWdRQUFFZ2pRQUFBZ0RRQ0JBQUFT
Q05BQUFDQU5CMGlRRjU3N2JWYUR3RUFBRWhROHdDWk9YTm0KREJzMnJOYkRBQUFBRXRRMFFGYXNX
QkVUSmt5SXpaczMxM0lZQUFCQWtwb0d5S1JKaytMQ0N5K011cnE2V2c0REFBQklVck1BbVRKbApT
cHh4eGhuUnJWdTNXZzBCQUFCSVZwTUFXYmh3WWJ6Kyt1dHg3TEhIMXVMd0FBQkFqWFRKUG1CemMz
Tk1talFwSmsrZW5IMW9BQUNnCnh0Si9Bekp4NHNRWU8zWnNsRkppMDZaTjBkall1MlF5NHdBQUE5
OUpSRUZVV1BudjV1Ym03T0VBQUFDSjZrb3BKZk9BUTRZTWlSZGUKZUdHNzk0MGZQejRtVFpwVTNR
NjlnTDFqeVQyZEFBRFl3NlFIeUJ0dnZCR05qWTJWMjcvODVTL2ptOS84WnJ6d3dndXgzMzc3Ulk4
ZQpQYXJib1FEcFdBUUlBQUN0U0g4S1Z0KytmV1Bnd0lHVlA3MTc5NDdPblR2SHdJRURLL0d4ZnYz
NkdEZHVYTXlmUHo5N2VBQUF3RzVVCjgwOUMzNTQvLy9uUGNjY2RkOFNUVHo1WjY2RUFBQUM3VVBw
VHNOcHIrZkxsMGFkUG4xb1BBd0FBMklVNmJJQUFBQUR2UHgzeUtWZ0EKQU1EN2t3QUJBQURTQ0JB
QUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJ
RUFBQQpJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFB
MGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOCkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFC
QUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUIKQUFEU0NCQUFBQ0NO
QUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJ
STBBQVFBQQowZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FB
QUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJCkVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFND
QkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUEKQUNDTkFBRUFB
TklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFR
QUEwZ2dRQUFBZwpqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pR
QUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBCkFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFD
Q05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUEKQU5JSUVB
QUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdn
UUFBQWdqUUFCQUFEUwpDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFE
U0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRCkFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFF
QUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUEKSUkw
QUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFn
alFBQkFBRFNDQkFBQUNDTgpBQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFB
QUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMHZ3LzBJZkVWTGtlCjZRQUFBQUFBU1VWT1JLNUNZSUk9
Cgo=
</data>
<flag name="review"
          id="127241"
          type_id="1"
          status="+"
          setter="cmarrin"
    />
          </attachment>
      

    </bug>

</bugzilla>