<?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>123310</bug_id>
          
          <creation_ts>2013-10-24 18:37:22 -0700</creation_ts>
          <short_desc>Underline bounds cannot be queried before underline itself is drawn</short_desc>
          <delta_ts>2013-10-31 14:12:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>123520</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jonlee</cc>
    
    <cc>rego+ews</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>943394</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-10-24 18:37:22 -0700</bug_when>
    <thetext>Underline bounds cannot be queried before underline itself is drawn</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943404</commentid>
    <comment_count>1</comment_count>
      <attachid>215134</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-10-24 18:49:19 -0700</bug_when>
    <thetext>Created attachment 215134
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943405</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-10-24 18:50:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/15316301&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943407</commentid>
    <comment_count>3</comment_count>
      <attachid>215134</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-24 18:56:21 -0700</bug_when>
    <thetext>Comment on attachment 215134
Patch

Attachment 215134 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/10348238</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943416</commentid>
    <comment_count>4</comment_count>
      <attachid>215134</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-10-24 19:34:00 -0700</bug_when>
    <thetext>Comment on attachment 215134
Patch

Attachment 215134 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/10348245</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943419</commentid>
    <comment_count>5</comment_count>
      <attachid>215134</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-24 19:49:16 -0700</bug_when>
    <thetext>Comment on attachment 215134
Patch

Attachment 215134 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/10288251</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943426</commentid>
    <comment_count>6</comment_count>
      <attachid>215134</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-10-24 20:57:21 -0700</bug_when>
    <thetext>Comment on attachment 215134
Patch

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

&gt; Source/WebCore/rendering/InlineTextBox.cpp:69
&gt; +static FloatRect computeBoundsForUnderline(GraphicsContext &amp;context, const FloatPoint&amp; point, float width, bool printing, bool &amp;shouldAntialias)

The &amp; in &quot;GraphicsContext &amp;context&quot; and &quot;bool &amp;shouldAntialias&quot; are on the wrong sides.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:71
&gt; +    // This function should be side-effect free

This comment doesn&apos;t really add anything.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:78
&gt; +    float thickness = max(context.strokeThickness(), 0.5f);

We have started using an explicit std::max.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:84
&gt; +        float adjustedThickness = max(thickness, 1.0f);

Again, std::max please.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:103
&gt; +static void drawLineForText(GraphicsContext &amp;context, const FloatPoint&amp; point, float width, bool printing)

The &amp; in &quot;GraphicsContext &amp;context&quot; is on the wrong sides.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:105
&gt; +    bool shouldAntialias;

This can move down to after the if-statement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943494</commentid>
    <comment_count>7</comment_count>
      <attachid>215134</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-25 02:08:27 -0700</bug_when>
    <thetext>Comment on attachment 215134
Patch

Attachment 215134 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/11918060</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943638</commentid>
    <comment_count>8</comment_count>
      <attachid>215134</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-10-25 10:08:09 -0700</bug_when>
    <thetext>Comment on attachment 215134
Patch

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

&gt;&gt; Source/WebCore/rendering/InlineTextBox.cpp:69
&gt;&gt; +static FloatRect computeBoundsForUnderline(GraphicsContext &amp;context, const FloatPoint&amp; point, float width, bool printing, bool &amp;shouldAntialias)
&gt; 
&gt; The &amp; in &quot;GraphicsContext &amp;context&quot; and &quot;bool &amp;shouldAntialias&quot; are on the wrong sides.

Done.

&gt;&gt; Source/WebCore/rendering/InlineTextBox.cpp:71
&gt;&gt; +    // This function should be side-effect free
&gt; 
&gt; This comment doesn&apos;t really add anything.

Done.

&gt;&gt; Source/WebCore/rendering/InlineTextBox.cpp:78
&gt;&gt; +    float thickness = max(context.strokeThickness(), 0.5f);
&gt; 
&gt; We have started using an explicit std::max.

Done.

&gt;&gt; Source/WebCore/rendering/InlineTextBox.cpp:84
&gt;&gt; +        float adjustedThickness = max(thickness, 1.0f);
&gt; 
&gt; Again, std::max please.

Done.

&gt;&gt; Source/WebCore/rendering/InlineTextBox.cpp:103
&gt;&gt; +static void drawLineForText(GraphicsContext &amp;context, const FloatPoint&amp; point, float width, bool printing)
&gt; 
&gt; The &amp; in &quot;GraphicsContext &amp;context&quot; is on the wrong sides.

Done.

&gt;&gt; Source/WebCore/rendering/InlineTextBox.cpp:105
&gt;&gt; +    bool shouldAntialias;
&gt; 
&gt; This can move down to after the if-statement.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943652</commentid>
    <comment_count>9</comment_count>
      <attachid>215189</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-10-25 10:44:20 -0700</bug_when>
    <thetext>Created attachment 215189
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943654</commentid>
    <comment_count>10</comment_count>
      <attachid>215189</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-10-25 10:50:59 -0700</bug_when>
    <thetext>Comment on attachment 215189
Patch

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

&gt; Source/WebCore/rendering/InlineTextBox.cpp:69
&gt; +static FloatRect computeBoundsForUnderline(GraphicsContext&amp; context, const FloatPoint&amp; point, float width, bool printing, bool&amp; shouldAntialias)

I think &quot;point&quot; should be called &quot;start&quot; or &quot;origin&quot;. &quot;width&quot; should be &quot;length&quot;. Is it up or down from the origin?

&gt; Source/WebCore/rendering/InlineTextBox.cpp:73
&gt; +    float thickness = std::max(context.strokeThickness(), 0.5f);

But that bug added a 0.5 thickness only when printing. I think the comment has bitrotted.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:79
&gt; +    if (!printing &amp;&amp; !context.paintingDisabled() &amp;&amp; context.getCTM(GraphicsContext::DefinitelyIncludeDeviceScale).preservesAxisAlignment()) {

It would be better to early return here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943668</commentid>
    <comment_count>11</comment_count>
      <attachid>215189</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-25 11:12:06 -0700</bug_when>
    <thetext>Comment on attachment 215189
Patch

Attachment 215189 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/10828022</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943677</commentid>
    <comment_count>12</comment_count>
      <attachid>215189</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-10-25 11:38:24 -0700</bug_when>
    <thetext>Comment on attachment 215189
Patch

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

&gt;&gt; Source/WebCore/rendering/InlineTextBox.cpp:69
&gt;&gt; +static FloatRect computeBoundsForUnderline(GraphicsContext&amp; context, const FloatPoint&amp; point, float width, bool printing, bool&amp; shouldAntialias)
&gt; 
&gt; I think &quot;point&quot; should be called &quot;start&quot; or &quot;origin&quot;. &quot;width&quot; should be &quot;length&quot;. Is it up or down from the origin?

Done.

&gt;&gt; Source/WebCore/rendering/InlineTextBox.cpp:73
&gt;&gt; +    float thickness = std::max(context.strokeThickness(), 0.5f);
&gt; 
&gt; But that bug added a 0.5 thickness only when printing. I think the comment has bitrotted.

I&apos;ve traced this back to r14112 (from 2006), entitled &quot;Move WebTextRenderer into WebCore&quot; but can&apos;t seem to figure out where WebTextRenderer came from. My guess is that, when printing, the 0.5 comes from that bug, and when not printing, setting the minimum to 0.5 makes sure that when we round to pixel boundaries, the underline disappear (assuming an identity CTM). I think the best thing to do is to just delete the comment. Thoughts?

&gt;&gt; Source/WebCore/rendering/InlineTextBox.cpp:79
&gt;&gt; +    if (!printing &amp;&amp; !context.paintingDisabled() &amp;&amp; context.getCTM(GraphicsContext::DefinitelyIncludeDeviceScale).preservesAxisAlignment()) {
&gt; 
&gt; It would be better to early return here.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943678</commentid>
    <comment_count>13</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-10-25 11:38:59 -0700</bug_when>
    <thetext>**the underline doesn&apos;t disappear

(In reply to comment #12)
&gt; (From update of attachment 215189 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=215189&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/rendering/InlineTextBox.cpp:69
&gt; &gt;&gt; +static FloatRect computeBoundsForUnderline(GraphicsContext&amp; context, const FloatPoint&amp; point, float width, bool printing, bool&amp; shouldAntialias)
&gt; &gt; 
&gt; &gt; I think &quot;point&quot; should be called &quot;start&quot; or &quot;origin&quot;. &quot;width&quot; should be &quot;length&quot;. Is it up or down from the origin?
&gt; 
&gt; Done.
&gt; 
&gt; &gt;&gt; Source/WebCore/rendering/InlineTextBox.cpp:73
&gt; &gt;&gt; +    float thickness = std::max(context.strokeThickness(), 0.5f);
&gt; &gt; 
&gt; &gt; But that bug added a 0.5 thickness only when printing. I think the comment has bitrotted.
&gt; 
&gt; I&apos;ve traced this back to r14112 (from 2006), entitled &quot;Move WebTextRenderer into WebCore&quot; but can&apos;t seem to figure out where WebTextRenderer came from. My guess is that, when printing, the 0.5 comes from that bug, and when not printing, setting the minimum to 0.5 makes sure that when we round to pixel boundaries, the underline disappear (assuming an identity CTM). I think the best thing to do is to just delete the comment. Thoughts?
&gt; 
&gt; &gt;&gt; Source/WebCore/rendering/InlineTextBox.cpp:79
&gt; &gt;&gt; +    if (!printing &amp;&amp; !context.paintingDisabled() &amp;&amp; context.getCTM(GraphicsContext::DefinitelyIncludeDeviceScale).preservesAxisAlignment()) {
&gt; &gt; 
&gt; &gt; It would be better to early return here.
&gt; 
&gt; Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943720</commentid>
    <comment_count>14</comment_count>
      <attachid>215203</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-10-25 13:18:25 -0700</bug_when>
    <thetext>Created attachment 215203
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943724</commentid>
    <comment_count>15</comment_count>
      <attachid>215205</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-10-25 13:31:58 -0700</bug_when>
    <thetext>Created attachment 215205
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943797</commentid>
    <comment_count>16</comment_count>
      <attachid>215223</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-10-25 15:46:53 -0700</bug_when>
    <thetext>Created attachment 215223
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943813</commentid>
    <comment_count>17</comment_count>
      <attachid>215223</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-25 16:29:22 -0700</bug_when>
    <thetext>Comment on attachment 215223
Patch

Attachment 215223 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/11948047</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943814</commentid>
    <comment_count>18</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-10-25 16:31:43 -0700</bug_when>
    <thetext>The win port is failing to build the Netscape plugin, which is completely irrelevant to this patch. Is there something I can do about this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944633</commentid>
    <comment_count>19</comment_count>
      <attachid>215433</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-10-29 15:01:25 -0700</bug_when>
    <thetext>Created attachment 215433
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944658</commentid>
    <comment_count>20</comment_count>
      <attachid>215433</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-29 16:02:12 -0700</bug_when>
    <thetext>Comment on attachment 215433
Patch

Attachment 215433 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/17068179</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944667</commentid>
    <comment_count>21</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-10-29 16:17:10 -0700</bug_when>
    <thetext>Nevermind; I misread it. The Windows build calls drawLineForText in a place I didn&apos;t expect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944709</commentid>
    <comment_count>22</comment_count>
      <attachid>215457</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-10-29 17:56:22 -0700</bug_when>
    <thetext>Created attachment 215457
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944719</commentid>
    <comment_count>23</comment_count>
      <attachid>215457</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-29 18:49:31 -0700</bug_when>
    <thetext>Comment on attachment 215457
Patch

Clearing flags on attachment: 215457

Committed r158243: &lt;http://trac.webkit.org/changeset/158243&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944720</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-29 18:49:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944919</commentid>
    <comment_count>25</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-30 09:04:15 -0700</bug_when>
    <thetext>This patch moved code that was specific to CG into cross-platform code. Do we know that all the other platforms want this code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945077</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-30 11:44:54 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 123520</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945174</commentid>
    <comment_count>27</comment_count>
      <attachid>215561</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-10-30 13:58:22 -0700</bug_when>
    <thetext>Created attachment 215561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945254</commentid>
    <comment_count>28</comment_count>
      <attachid>215561</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-10-30 17:17:55 -0700</bug_when>
    <thetext>Comment on attachment 215561
Patch

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

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:1261
&gt; +    if (lineRect.height() &lt; initialBounds.height() * 2.0) {

We tend not to use f or .0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945649</commentid>
    <comment_count>29</comment_count>
      <attachid>215668</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-10-31 13:15:30 -0700</bug_when>
    <thetext>Created attachment 215668
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945670</commentid>
    <comment_count>30</comment_count>
      <attachid>215668</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-10-31 13:48:33 -0700</bug_when>
    <thetext>Comment on attachment 215668
Patch

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

&gt; Source/WebCore/ChangeLog:32
&gt; +        * platform/graphics/GraphicsContext.h: Signature of new computeLineBoundsForText
&gt; +        function
&gt; +        * platform/graphics/blackberry/PathBlackBerry.cpp:
&gt; +        (WebCore::GraphicsContext::computeLineBoundsForText): Implement new function
&gt; +        * platform/graphics/cairo/GraphicsContextCairo.cpp:
&gt; +        (WebCore::GraphicsContext::computeLineBoundsForText): Ditto
&gt; +        (WebCore::GraphicsContext::drawLineForText): Use computeLineBoundsForText
&gt; +        * platform/graphics/cg/GraphicsContextCG.cpp:
&gt; +        (WebCore::computeLineBoundsAndAntialiasingModeForText): Static function that
&gt; +        performs the actual bounds computation
&gt; +        (WebCore::GraphicsContext::computeLineBoundsForText): Calls
&gt; +        computeLineBoundsAndAntialiasingModeForText
&gt; +        (WebCore::GraphicsContext::drawLineForText): Use new function
&gt; +        * platform/graphics/wince/GraphicsContextWinCE.cpp:
&gt; +        (WebCore::GraphicsContext::computeLineBoundsForText): Implement new function

Super nit: end comments with periods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945688</commentid>
    <comment_count>31</comment_count>
      <attachid>215668</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-31 14:12:38 -0700</bug_when>
    <thetext>Comment on attachment 215668
Patch

Clearing flags on attachment: 215668

Committed r158392: &lt;http://trac.webkit.org/changeset/158392&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945689</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-31 14:12:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215134</attachid>
            <date>2013-10-24 18:49:19 -0700</date>
            <delta_ts>2013-10-25 10:44:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123310-20131024184918.patch</filename>
            <type>text/plain</type>
            <size>16293</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3OTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYzOTRlMzgyMjI1ZDYz
OGNlNTFiMGQzYzZhZmMzNGJiNWM3YmUxYS4uZTAwZDdkYzQ1NTgxNTk3NDlmODdjMDkyZjZjODBm
NzYzMzJjYjU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEzLTEwLTI0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgVW5kZXJsaW5l
IGJvdW5kcyBjYW5ub3QgYmUgcXVlcmllZCBiZWZvcmUgdW5kZXJsaW5lIGl0c2VsZiBpcyBkcmF3
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMzEw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR3JhcGhp
Y3NDb250ZXh0J3MgZHJhd0xpbmVGb3JUZXh0IGZ1bmN0aW9uIGlzIHVzZWQgdG8gZHJhdyB1bmRl
cmxpbmVzLAorICAgICAgICBzdHJpa2V0aHJvdWdocywgYW5kIG92ZXJsaW5lcy4gQmVmb3JlIGRy
YXdpbmcgdGhlIGxpbmUsIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgbW9kaWZpZXMgdGhlIGJvdW5k
cyBnaXZlbiB0byBpdCBpbiBvcmRlciB0byBtYWtlIHVuZGVybGluZXMgY3Jpc3AuIEhvd2V2ZXIs
ICAKKyAgICAgICAgdGhpcyBtZWFucyB0aGF0IGl0IGlzIGltcG9zc2libGUgdG8ga25vdyB3aGVy
ZSBhbiB1bmRlcmxpbmUgd2lsbCBiZSBkcmF3bgorICAgICAgICBiZWZvcmUgZHJhd2luZyBpdC4g
VGhpcyBwYXRjaCBwdWxscyBvdXQgdGhpcyBhZGp1c3RtZW50IGNvbXB1dGF0aW9uIGludG8KKyAg
ICAgICAgSW5saW5lVGV4dEJveCwgdGhlbiBwYXNzZXMgdGhlIHJlc3VsdCB0byBkcmF3TGluZUZv
clRleHQuCisKKyAgICAgICAgQmVjYXVzZSB0aGVyZSBzaG91bGQgYmUgbm8gb2JzZXJ2YWJsZSBk
aWZmZXJlbmNlLCBubyB0ZXN0cyBuZWVkIHRvIGJlIHVwZGF0ZWQuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDogQ2hhbmdpbmcgdGhlIHNpZ25hdHVyZSBv
ZiBkcmF3TGluZUZvclRleHQKKyAgICAgICAgc28gaXQgY2FuIGFjY2VwdCBib3VuZHMgZnJvbSBv
dXIgaGVscGVyIGZ1bmN0aW9uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9QYXRoQmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmRyYXdMaW5lRm9yVGV4dCk6IFVwZGF0ZSB0byB3b3JrIHdpdGggbmV3CisgICAgICAgIHNpZ25h
dHVyZSBvZiBkcmF3TGluZUZvclRleHQKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmRyYXdMaW5lRm9yVGV4dCk6IFVwZGF0ZSB0byB3b3JrIHdpdGggbmV3CisgICAgICAg
IHNpZ25hdHVyZSBvZiBkcmF3TGluZUZvclRleHQKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmRyYXdMaW5lRm9yVGV4dCk6IFVwZGF0ZSB0byB3b3JrIHdpdGggbmV3CisgICAgICAg
IHNpZ25hdHVyZSBvZiBkcmF3TGluZUZvclRleHQKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dCk6IFVwZGF0ZSB0byB3b3JrIHdpdGggbmV3Cisg
ICAgICAgIHNpZ25hdHVyZSBvZiBkcmF3TGluZUZvclRleHQKKyAgICAgICAgKiByZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlQm91bmRzRm9yVW5k
ZXJsaW5lKTogUHVyZSBmdW5jdGlvbiB0aGF0IGNvbXB1dGVzIHRoZSBhZGp1c3RlZAorICAgICAg
ICBib3VuZHMgb2YgdGhlIHVuZGVybGluZSBhYm91dCB0byBiZSBkcmF3bgorICAgICAgICAoV2Vi
Q29yZTo6ZHJhd0xpbmVGb3JUZXh0KTogY2FsbHMgY29tcHV0ZUJvdW5kc0ZvclVuZGVybGluZSBh
bmQgdGhlbgorICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dAorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKTogVXNlIG5ldyBkcmF3
TGluZUZvclRleHQgZnVuY3Rpb24KKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBh
aW50Q29tcG9zaXRpb25VbmRlcmxpbmUpOiBVc2UgbmV3IGRyYXdMaW5lRm9yVGV4dAorICAgICAg
ICBmdW5jdGlvbgorCiAyMDEzLTEwLTI0ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbmNvbXBsaWNhdGUgc29tZSBvZiBTVkdUZXh0UnVuUmVuZGVyaW5nQ29u
dGV4dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgKaW5kZXggYzMwOGNiZDBiN2Q4NTRmM2Q4ZWIwYmVmZDNhOWYzZjRkNGE3OTdhOC4u
MDM5ZWVmZjE3MTY1MjdkMzY0YzlkZWRjYTgxMzVhMzYwYzRjNmM3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTMzMCw3
ICszMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH07CiAgICAgICAgIEZsb2F0
UmVjdCByb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYsIFJvdW5kaW5nTW9kZSA9
IFJvdW5kQWxsU2lkZXMpOwogCi0gICAgICAgIHZvaWQgZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZs
b2F0UG9pbnQmLCBmbG9hdCB3aWR0aCwgYm9vbCBwcmludGluZyk7CisgICAgICAgIHZvaWQgZHJh
d0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYgYm91bmRzLCBib29sIHByaW50aW5nKTsKICAg
ICAgICAgZW51bSBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSB7CiAgICAgICAgICAgICBEb2N1bWVu
dE1hcmtlclNwZWxsaW5nTGluZVN0eWxlLAogICAgICAgICAgICAgRG9jdW1lbnRNYXJrZXJHcmFt
bWFyTGluZVN0eWxlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9QYXRoQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L1BhdGhCbGFja0JlcnJ5LmNwcAppbmRleCAxOTg2YjNmZTA2
MWFiOGMzZWQyNTZkZTc1ODU0NDY2OGMxYWQ4YzliLi45ZjY5OTE3NmI1YjY3NmYyMTVhNjlkOWU1
MGI4NWQ2NjU4YzUzZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L1BhdGhCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1BhdGhCbGFja0JlcnJ5LmNwcApAQCAtMjU1LDkg
KzI1NSw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvckRvY3VtZW50TWFya2Vy
KGNvbnN0IEZsb2F0UG9pbnQmIHB0LCBmbG9hdCB3aWR0CiAgICAgcGxhdGZvcm1Db250ZXh0KCkt
PmFkZERyYXdMaW5lRm9yRG9jdW1lbnRNYXJrZXIocHQsIHdpZHRoLCAoQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkdyYXBoaWNzOjpEb2N1bWVudE1hcmtlckxpbmVTdHlsZSlzdHlsZSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcHQs
IGZsb2F0IHdpZHRoLCBib29sIHByaW50aW5nKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdM
aW5lRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmIGJvdW5kcywgYm9vbCBwcmludGluZykKIHsKLSAg
ICBwbGF0Zm9ybUNvbnRleHQoKS0+YWRkRHJhd0xpbmVGb3JUZXh0KHB0LCB3aWR0aCwgcHJpbnRp
bmcpOworICAgIHBsYXRmb3JtQ29udGV4dCgpLT5hZGREcmF3TGluZUZvclRleHQoYm91bmRzLmxv
Y2F0aW9uLCBib3VuZHMud2lkdGgoKSwgcHJpbnRpbmcpOwogfQogCiAvLyBGSVhNRTogZG9uJ3Qg
aWdub3JlIHRoZSB3aW5kaW5nIHJ1bGUuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDcwNjQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCA3MDM2MGVk
N2VjODc1MmU2MDQyZWZiYzRmMzg4NzE5ZjRmMjFjMTBhLi5hNzFiMTQ1YjQzY2RhNWFkNzI2MTJm
MjQ4MWViMTc5NGM5ZWUyYmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC02
MTQsNyArNjE0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29uc3Qg
VmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50IHdpZHRoLCBpbnQKICAgICBjYWlyb19yZXN0b3Jl
KGNyKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dChjb25zdCBG
bG9hdFBvaW50JiBvcmlnaW4sIGZsb2F0IHdpZHRoLCBib29sKQordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdMaW5lRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmIGJvdW5kcywgYm9vbCkKIHsKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC02MjMsMTYgKzYy
MywxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0
UG9pbnQmIG9yaWdpbiwgZmxvYXQgd2lkdGgsIGJvbwogICAgIGNhaXJvX3NhdmUoY2Fpcm9Db250
ZXh0KTsKIAogICAgIC8vIFRoaXMgYnVtcGluZyBvZiA8MSBzdHJva2UgdGhpY2tuZXNzZXMgbWF0
Y2hlcyB0aGUgb25lIGluIGRyYXdMaW5lT25DYWlyb0NvbnRleHQuCi0gICAgRmxvYXRQb2ludCBl
bmRQb2ludChvcmlnaW4gKyBJbnRTaXplKHdpZHRoLCAwKSk7Ci0gICAgRmxvYXRSZWN0IGxpbmVF
eHRlbnRzKG9yaWdpbiwgRmxvYXRTaXplKHdpZHRoLCBzdHJva2VUaGlja25lc3MoKSkpOworICAg
IEZsb2F0UG9pbnQgZW5kUG9pbnQoYm91bmRzLmxvY2F0aW9uKCkgKyBJbnRTaXplKGJvdW5kcy53
aWR0aCgpLCAwKSk7CisgICAgRmxvYXRSZWN0IGxpbmVFeHRlbnRzKGJvdW5kcy5sb2NhdGlvbigp
LCBGbG9hdFNpemUoYm91bmRzLndpZHRoKCksIHN0cm9rZVRoaWNrbmVzcygpKSk7CiAKICAgICBT
aGFkb3dCbHVyJiBzaGFkb3cgPSBwbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpOwogICAg
IGlmIChHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3cuYmVnaW5TaGFkb3dM
YXllcih0aGlzLCBsaW5lRXh0ZW50cykpIHsKLSAgICAgICAgZHJhd0xpbmVPbkNhaXJvQ29udGV4
dCh0aGlzLCBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgb3JpZ2luLCBl
bmRQb2ludCk7CisgICAgICAgIGRyYXdMaW5lT25DYWlyb0NvbnRleHQodGhpcywgc2hhZG93Q29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGJvdW5kcy5sb2NhdGlvbigpLCBlbmRQb2lu
dCk7CiAgICAgICAgIHNoYWRvdy5lbmRTaGFkb3dMYXllcih0aGlzKTsKICAgICB9CiAKLSAgICBk
cmF3TGluZU9uQ2Fpcm9Db250ZXh0KHRoaXMsIGNhaXJvQ29udGV4dCwgb3JpZ2luLCBlbmRQb2lu
dCk7CisgICAgZHJhd0xpbmVPbkNhaXJvQ29udGV4dCh0aGlzLCBjYWlyb0NvbnRleHQsIGJvdW5k
cy5sb2NhdGlvbigpLCBlbmRQb2ludCk7CiAgICAgY2Fpcm9fcmVzdG9yZShjYWlyb0NvbnRleHQp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggMWE5YzkwNTVlNmM5MjAzZmI1NDAzOTkxYmVi
Yjc0Y2U5ODNlZDU1Yy4uZTc1MjkzZDM3ZDg1MzhjYTBjOWI2MmY0ZWRkZWM4M2RjMTE3MDBiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcApAQCAtMTIzNSw1MyArMTIzNSwxNiBAQCBGbG9hdFJlY3QgR3Jh
cGhpY3NDb250ZXh0Ojpyb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Um91bmRpbmdNbwogICAgIHJldHVybiBGbG9hdFJlY3Qocm91bmRlZE9yaWdpbiwgcm91bmRlZExv
d2VyUmlnaHQgLSByb3VuZGVkT3JpZ2luKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdMaW5lRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgZmxvYXQgd2lkdGgsIGJvb2wg
cHJpbnRpbmcpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZs
b2F0UmVjdCYgYm91bmRzLCBib29sKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmICh3aWR0aCA8PSAwKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBmbG9hdCB4ID0gcG9pbnQueCgpOwotICAgIGZsb2F0IHkgPSBwb2ludC55KCk7Ci0gICAg
ZmxvYXQgbGluZUxlbmd0aCA9IHdpZHRoOwotCi0gICAgLy8gVXNlIGEgbWluaW11bSB0aGlja25l
c3Mgb2YgMC41IGluIHVzZXIgc3BhY2UuCi0gICAgLy8gU2VlIGh0dHA6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQyNTUgZm9yIGRldGFpbHMgb2Ygd2h5IDAuNSBpcyB0aGUgcmln
aHQgbWluaW11bSB0aGlja25lc3MgdG8gdXNlLgotICAgIGZsb2F0IHRoaWNrbmVzcyA9IG1heChz
dHJva2VUaGlja25lc3MoKSwgMC41Zik7Ci0KLSAgICBib29sIHJlc3RvcmVBbnRpYWxpYXNNb2Rl
ID0gZmFsc2U7Ci0KLSAgICBpZiAoIXByaW50aW5nICYmIGdldENUTShHcmFwaGljc0NvbnRleHQ6
OkRlZmluaXRlbHlJbmNsdWRlRGV2aWNlU2NhbGUpLnByZXNlcnZlc0F4aXNBbGlnbm1lbnQoKSkg
ewotICAgICAgICAvLyBPbiBzY3JlZW4sIHVzZSBhIG1pbmltdW0gdGhpY2tuZXNzIG9mIDEuMCBp
biB1c2VyIHNwYWNlIChsYXRlciByb3VuZGVkIHRvIGFuIGludGVncmFsIG51bWJlciBpbiBkZXZp
Y2Ugc3BhY2UpLgotICAgICAgICBmbG9hdCBhZGp1c3RlZFRoaWNrbmVzcyA9IG1heCh0aGlja25l
c3MsIDEuMGYpOwotCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBkb25lIGEgYmV0
dGVyIHdheS4KLSAgICAgICAgLy8gV2UgdHJ5IHRvIHJvdW5kIGFsbCBwYXJhbWV0ZXJzIHRvIGlu
dGVnZXIgYm91bmRhcmllcyBpbiBkZXZpY2Ugc3BhY2UuIElmIHJvdW5kaW5nIHBpeGVscyBpbiBk
ZXZpY2Ugc3BhY2UKLSAgICAgICAgLy8gbWFrZXMgb3VyIHRoaWNrbmVzcyBtb3JlIHRoYW4gZG91
YmxlLCB0aGVuIHRoZXJlIG11c3QgYmUgYSBzaHJpbmtpbmctc2NhbGUgZmFjdG9yIGFuZCByb3Vu
ZGluZyB0byBwaXhlbHMKLSAgICAgICAgLy8gaW4gZGV2aWNlIHNwYWNlIHdpbGwgbWFrZSB0aGUg
dW5kZXJsaW5lcyB0b28gdGhpY2suCi0gICAgICAgIENHUmVjdCBsaW5lUmVjdCA9IHJvdW5kVG9E
ZXZpY2VQaXhlbHMoRmxvYXRSZWN0KHgsIHksIGxpbmVMZW5ndGgsIGFkanVzdGVkVGhpY2tuZXNz
KSwgUm91bmRBbGxTaWRlcyk7Ci0gICAgICAgIGlmIChsaW5lUmVjdC5zaXplLmhlaWdodCA8IHRo
aWNrbmVzcyAqIDIuMCkgewotICAgICAgICAgICAgeCA9IGxpbmVSZWN0Lm9yaWdpbi54OwotICAg
ICAgICAgICAgeSA9IGxpbmVSZWN0Lm9yaWdpbi55OwotICAgICAgICAgICAgbGluZUxlbmd0aCA9
IGxpbmVSZWN0LnNpemUud2lkdGg7Ci0gICAgICAgICAgICB0aGlja25lc3MgPSBsaW5lUmVjdC5z
aXplLmhlaWdodDsKLSAgICAgICAgICAgIGlmIChzaG91bGRBbnRpYWxpYXMoKSkgewotICAgICAg
ICAgICAgICAgIENHQ29udGV4dFNldFNob3VsZEFudGlhbGlhcyhwbGF0Zm9ybUNvbnRleHQoKSwg
ZmFsc2UpOwotICAgICAgICAgICAgICAgIHJlc3RvcmVBbnRpYWxpYXNNb2RlID0gdHJ1ZTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQogICAgIGlmIChmaWxsQ29sb3IoKSAhPSBz
dHJva2VDb2xvcigpKQogICAgICAgICBzZXRDR0ZpbGxDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwg
c3Ryb2tlQ29sb3IoKSwgc3Ryb2tlQ29sb3JTcGFjZSgpKTsKLSAgICBDR0NvbnRleHRGaWxsUmVj
dChwbGF0Zm9ybUNvbnRleHQoKSwgQ0dSZWN0TWFrZSh4LCB5LCBsaW5lTGVuZ3RoLCB0aGlja25l
c3MpKTsKKyAgICBDR0NvbnRleHRGaWxsUmVjdChwbGF0Zm9ybUNvbnRleHQoKSwgQ0dSZWN0TWFr
ZShib3VuZHMubG9jYXRpb24oKS54KCksIGJvdW5kcy5sb2NhdGlvbigpLnkoKSwgYm91bmRzLndp
ZHRoKCksIGJvdW5kcy5oZWlnaHQoKSkpOwogICAgIGlmIChmaWxsQ29sb3IoKSAhPSBzdHJva2VD
b2xvcigpKQogICAgICAgICBzZXRDR0ZpbGxDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgZmlsbENv
bG9yKCksIGZpbGxDb2xvclNwYWNlKCkpOwotCi0gICAgaWYgKHJlc3RvcmVBbnRpYWxpYXNNb2Rl
KQotICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRBbnRpYWxpYXMocGxhdGZvcm1Db250ZXh0KCks
IHRydWUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0VVJMRm9yUmVjdChjb25zdCBV
UkwmIGxpbmssIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2lu
Q0UuY3BwCmluZGV4IDFmZjNmYWUxYWQ5MzI1MDUwNGRhZWFiNTc3NDBhZjFmNzhhNjgxY2YuLjE1
N2ZhZTQ4YTc5ZGQzM2IwZTI3ODYxYzIzODkzYWE0ZGY4YjFmOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0Nv
bnRleHRXaW5DRS5jcHAKQEAgLTk1MCwxNCArOTUwLDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCB3aWR0aCwg
aW50CiAgICAgRHJhd0ZvY3VzUmVjdChkYywgJnJlY3QpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIG9yaWdpbiwgZmxvYXQgd2lk
dGgsIGJvb2wgcHJpbnRpbmcpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0
KGNvbnN0IEZsb2F0UmVjdCYgYm91bmRzLCBib29sKQogewogICAgIGlmIChwYWludGluZ0Rpc2Fi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cm9rZVN0eWxlIG9sZFN0eWxlID0gc3Ry
b2tlU3R5bGUoKTsKICAgICBzZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgZHJhd0xp
bmUocm91bmRlZEludFBvaW50KG9yaWdpbiksIHJvdW5kZWRJbnRQb2ludChvcmlnaW4gKyBGbG9h
dFNpemUod2lkdGgsIDApKSk7CisgICAgZHJhd0xpbmUocm91bmRlZEludFBvaW50KGJvdW5kcy5s
b2NhdGlvbigpKSwgcm91bmRlZEludFBvaW50KGJvdW5kcy5sb2NhdGlvbigpICsgRmxvYXRTaXpl
KGJvdW5kcy53aWR0aCgpLCAwKSkpOwogICAgIHNldFN0cm9rZVN0eWxlKG9sZFN0eWxlKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IDM0NzAz
NmQ2ZDc3NWMxZDcwYmJhN2EwNzg4Nzg2OGM1NzEyZDdhNzguLmNkMDRiZDEzZDllYTA5ZDAwNmU2
YzZkMDI2MDJhZTFiYTI5MWQ3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
VGV4dEJveC5jcHAKQEAgLTY2LDYgKzY2LDU1IEBAIENPTVBJTEVfQVNTRVJUKHNpemVvZihJbmxp
bmVUZXh0Qm94KSA9PSBzaXplb2YoU2FtZVNpemVBc0lubGluZVRleHRCb3gpLCBJbmxpbmVUCiB0
eXBlZGVmIFdURjo6SGFzaE1hcDxjb25zdCBJbmxpbmVUZXh0Qm94KiwgTGF5b3V0UmVjdD4gSW5s
aW5lVGV4dEJveE92ZXJmbG93TWFwOwogc3RhdGljIElubGluZVRleHRCb3hPdmVyZmxvd01hcCog
Z1RleHRCb3hlc1dpdGhPdmVyZmxvdzsKIAorc3RhdGljIEZsb2F0UmVjdCBjb21wdXRlQm91bmRz
Rm9yVW5kZXJsaW5lKEdyYXBoaWNzQ29udGV4dCAmY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYg
cG9pbnQsIGZsb2F0IHdpZHRoLCBib29sIHByaW50aW5nLCBib29sICZzaG91bGRBbnRpYWxpYXMp
Cit7CisgICAgLy8gVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgc2lkZS1lZmZlY3QgZnJlZQorICAg
IGZsb2F0IHggPSBwb2ludC54KCk7CisgICAgZmxvYXQgeSA9IHBvaW50LnkoKTsKKyAgICBmbG9h
dCBsaW5lTGVuZ3RoID0gd2lkdGg7CisKKyAgICAvLyBVc2UgYSBtaW5pbXVtIHRoaWNrbmVzcyBv
ZiAwLjUgaW4gdXNlciBzcGFjZS4KKyAgICAvLyBTZWUgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDI1NSBmb3IgZGV0YWlscyBvZiB3aHkgMC41IGlzIHRoZSByaWdodCBt
aW5pbXVtIHRoaWNrbmVzcyB0byB1c2UuCisgICAgZmxvYXQgdGhpY2tuZXNzID0gbWF4KGNvbnRl
eHQuc3Ryb2tlVGhpY2tuZXNzKCksIDAuNWYpOworCisgICAgc2hvdWxkQW50aWFsaWFzID0gdHJ1
ZTsKKworICAgIGlmICghcHJpbnRpbmcgJiYgIWNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpICYm
IGNvbnRleHQuZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VT
Y2FsZSkucHJlc2VydmVzQXhpc0FsaWdubWVudCgpKSB7CisgICAgICAgIC8vIE9uIHNjcmVlbiwg
dXNlIGEgbWluaW11bSB0aGlja25lc3Mgb2YgMS4wIGluIHVzZXIgc3BhY2UgKGxhdGVyIHJvdW5k
ZWQgdG8gYW4gaW50ZWdyYWwgbnVtYmVyIGluIGRldmljZSBzcGFjZSkuCisgICAgICAgIGZsb2F0
IGFkanVzdGVkVGhpY2tuZXNzID0gbWF4KHRoaWNrbmVzcywgMS4wZik7CisKKyAgICAgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIGJlIGRvbmUgYSBiZXR0ZXIgd2F5LgorICAgICAgICAvLyBXZSB0
cnkgdG8gcm91bmQgYWxsIHBhcmFtZXRlcnMgdG8gaW50ZWdlciBib3VuZGFyaWVzIGluIGRldmlj
ZSBzcGFjZS4gSWYgcm91bmRpbmcgcGl4ZWxzIGluIGRldmljZSBzcGFjZQorICAgICAgICAvLyBt
YWtlcyBvdXIgdGhpY2tuZXNzIG1vcmUgdGhhbiBkb3VibGUsIHRoZW4gdGhlcmUgbXVzdCBiZSBh
IHNocmlua2luZy1zY2FsZSBmYWN0b3IgYW5kIHJvdW5kaW5nIHRvIHBpeGVscworICAgICAgICAv
LyBpbiBkZXZpY2Ugc3BhY2Ugd2lsbCBtYWtlIHRoZSB1bmRlcmxpbmVzIHRvbyB0aGljay4KKyAg
ICAgICAgQ0dSZWN0IGxpbmVSZWN0ID0gY29udGV4dC5yb3VuZFRvRGV2aWNlUGl4ZWxzKEZsb2F0
UmVjdCh4LCB5LCBsaW5lTGVuZ3RoLCBhZGp1c3RlZFRoaWNrbmVzcyksIEdyYXBoaWNzQ29udGV4
dDo6Um91bmRBbGxTaWRlcyk7CisgICAgICAgIGlmIChsaW5lUmVjdC5zaXplLmhlaWdodCA8IHRo
aWNrbmVzcyAqIDIuMCkgeworICAgICAgICAgICAgeCA9IGxpbmVSZWN0Lm9yaWdpbi54OworICAg
ICAgICAgICAgeSA9IGxpbmVSZWN0Lm9yaWdpbi55OworICAgICAgICAgICAgbGluZUxlbmd0aCA9
IGxpbmVSZWN0LnNpemUud2lkdGg7CisgICAgICAgICAgICB0aGlja25lc3MgPSBsaW5lUmVjdC5z
aXplLmhlaWdodDsKKyAgICAgICAgICAgIHNob3VsZEFudGlhbGlhcyA9IGZhbHNlOworICAgICAg
ICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBGbG9hdFJlY3QoeCwgeSwgbGluZUxlbmd0aCwg
dGhpY2tuZXNzKTsKK30KKworc3RhdGljIHZvaWQgZHJhd0xpbmVGb3JUZXh0KEdyYXBoaWNzQ29u
dGV4dCAmY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHdpZHRoLCBib29s
IHByaW50aW5nKQoreworICAgIGJvb2wgc2hvdWxkQW50aWFsaWFzOworICAgIAorICAgIGlmICh3
aWR0aCA8PSAwKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgRmxvYXRSZWN0IHVuZGVybGlu
ZUJvdW5kcyA9IGNvbXB1dGVCb3VuZHNGb3JVbmRlcmxpbmUoY29udGV4dCwgcG9pbnQsIHdpZHRo
LCBwcmludGluZywgc2hvdWxkQW50aWFsaWFzKTsKKyAgICAKKyAgICBib29sIHdhc0FudGlhbGlh
c2luZyA9IGNvbnRleHQuc2hvdWxkQW50aWFsaWFzKCk7CisgICAgY29udGV4dC5zZXRTaG91bGRB
bnRpYWxpYXMoc2hvdWxkQW50aWFsaWFzKTsKKyAgICBjb250ZXh0LmRyYXdMaW5lRm9yVGV4dCh1
bmRlcmxpbmVCb3VuZHMsIHByaW50aW5nKTsKKyAgICBjb250ZXh0LnNldFNob3VsZEFudGlhbGlh
cyh3YXNBbnRpYWxpYXNpbmcpOworfQorCiB2b2lkIElubGluZVRleHRCb3g6OmRlc3Ryb3koUmVu
ZGVyQXJlbmEmIGFyZW5hKQogewogICAgIGlmICgha25vd25Ub0hhdmVOb092ZXJmbG93KCkgJiYg
Z1RleHRCb3hlc1dpdGhPdmVyZmxvdykKQEAgLTExMTAsMTQgKzExNTksMTQgQEAgdm9pZCBJbmxp
bmVUZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBGbG9hdFBvaW50JgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3TGluZUZvclRl
eHQoRmxvYXRQb2ludChsb2NhbE9yaWdpbi54KCksIGxvY2FsT3JpZ2luLnkoKSArIHVuZGVybGlu
ZU9mZnNldCksIHdpZHRoLCBpc1ByaW50aW5nKTsKKyAgICAgICAgICAgICAgICBkcmF3TGluZUZv
clRleHQoKmNvbnRleHQsIEZsb2F0UG9pbnQobG9jYWxPcmlnaW4ueCgpLCBsb2NhbE9yaWdpbi55
KCkgKyB1bmRlcmxpbmVPZmZzZXQpLCB3aWR0aCwgaXNQcmludGluZyk7CiAKICAgICAgICAgICAg
ICAgICBpZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGUpCi0g
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdMaW5lRm9yVGV4dChGbG9hdFBvaW50KGxv
Y2FsT3JpZ2luLngoKSwgbG9jYWxPcmlnaW4ueSgpICsgdW5kZXJsaW5lT2Zmc2V0ICsgZG91Ymxl
T2Zmc2V0KSwgd2lkdGgsIGlzUHJpbnRpbmcpOworICAgICAgICAgICAgICAgICAgICBkcmF3TGlu
ZUZvclRleHQoKmNvbnRleHQsIEZsb2F0UG9pbnQobG9jYWxPcmlnaW4ueCgpLCBsb2NhbE9yaWdp
bi55KCkgKyB1bmRlcmxpbmVPZmZzZXQgKyBkb3VibGVPZmZzZXQpLCB3aWR0aCwgaXNQcmludGlu
Zyk7CiAgICAgICAgICAgICB9CiAjZWxzZQogICAgICAgICAgICAgLy8gTGVhdmUgb25lIHBpeGVs
IG9mIHdoaXRlIGJldHdlZW4gdGhlIGJhc2VsaW5lIGFuZCB0aGUgdW5kZXJsaW5lLgotICAgICAg
ICAgICAgY29udGV4dC0+ZHJhd0xpbmVGb3JUZXh0KEZsb2F0UG9pbnQobG9jYWxPcmlnaW4ueCgp
LCBsb2NhbE9yaWdpbi55KCkgKyBiYXNlbGluZSArIDEpLCB3aWR0aCwgaXNQcmludGluZyk7Cisg
ICAgICAgICAgICBkcmF3TGluZUZvclRleHQoKmNvbnRleHQsIEZsb2F0UG9pbnQobG9jYWxPcmln
aW4ueCgpLCBsb2NhbE9yaWdpbi55KCkgKyBiYXNlbGluZSArIDEpLCB3aWR0aCwgaXNQcmludGlu
Zyk7CiAjZW5kaWYgLy8gQ1NTM19URVhUCiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlY28gJiBU
ZXh0RGVjb3JhdGlvbk92ZXJsaW5lKSB7CkBAIC0xMTMyLDEwICsxMTgxLDEwIEBAIHZvaWQgSW5s
aW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRQb2ludCYKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRlZmF1bHQ6CiAjZW5k
aWYgLy8gQ1NTM19URVhUCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0xpbmVGb3JUZXh0
KGxvY2FsT3JpZ2luLCB3aWR0aCwgaXNQcmludGluZyk7CisgICAgICAgICAgICAgICAgZHJhd0xp
bmVGb3JUZXh0KCpjb250ZXh0LCBsb2NhbE9yaWdpbiwgd2lkdGgsIGlzUHJpbnRpbmcpOwogI2lm
IEVOQUJMRShDU1MzX1RFWFQpCiAgICAgICAgICAgICAgICAgaWYgKGRlY29yYXRpb25TdHlsZSA9
PSBUZXh0RGVjb3JhdGlvblN0eWxlRG91YmxlKQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5kcmF3TGluZUZvclRleHQoRmxvYXRQb2ludChsb2NhbE9yaWdpbi54KCksIGxvY2FsT3JpZ2lu
LnkoKSAtIGRvdWJsZU9mZnNldCksIHdpZHRoLCBpc1ByaW50aW5nKTsKKyAgICAgICAgICAgICAg
ICAgICAgZHJhd0xpbmVGb3JUZXh0KCpjb250ZXh0LCBGbG9hdFBvaW50KGxvY2FsT3JpZ2luLngo
KSwgbG9jYWxPcmlnaW4ueSgpIC0gZG91YmxlT2Zmc2V0KSwgd2lkdGgsIGlzUHJpbnRpbmcpOwog
ICAgICAgICAgICAgfQogI2VuZGlmIC8vIENTUzNfVEVYVAogICAgICAgICB9CkBAIC0xMTUxLDEw
ICsxMjAwLDEwIEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGRlZmF1bHQ6CiAjZW5kaWYgLy8gQ1NTM19URVhUCi0gICAgICAgICAgICAgICAgY29u
dGV4dC0+ZHJhd0xpbmVGb3JUZXh0KEZsb2F0UG9pbnQobG9jYWxPcmlnaW4ueCgpLCBsb2NhbE9y
aWdpbi55KCkgKyAyICogYmFzZWxpbmUgLyAzKSwgd2lkdGgsIGlzUHJpbnRpbmcpOworICAgICAg
ICAgICAgICAgIGRyYXdMaW5lRm9yVGV4dCgqY29udGV4dCwgRmxvYXRQb2ludChsb2NhbE9yaWdp
bi54KCksIGxvY2FsT3JpZ2luLnkoKSArIDIgKiBiYXNlbGluZSAvIDMpLCB3aWR0aCwgaXNQcmlu
dGluZyk7CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICAgICAgICAgICAgICBpZiAoZGVjb3Jh
dGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGUpCi0gICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmRyYXdMaW5lRm9yVGV4dChGbG9hdFBvaW50KGxvY2FsT3JpZ2luLngoKSwg
bG9jYWxPcmlnaW4ueSgpICsgZG91YmxlT2Zmc2V0ICsgMiAqIGJhc2VsaW5lIC8gMyksIHdpZHRo
LCBpc1ByaW50aW5nKTsKKyAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JUZXh0KCpjb250
ZXh0LCBGbG9hdFBvaW50KGxvY2FsT3JpZ2luLngoKSwgbG9jYWxPcmlnaW4ueSgpICsgZG91Ymxl
T2Zmc2V0ICsgMiAqIGJhc2VsaW5lIC8gMyksIHdpZHRoLCBpc1ByaW50aW5nKTsKICAgICAgICAg
ICAgIH0KICNlbmRpZiAvLyBDU1MzX1RFWFQKICAgICAgICAgfQpAQCAtMTQwMiw3ICsxNDUxLDcg
QEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uVW5kZXJsaW5lKEdyYXBoaWNz
Q29udGV4dCogY3R4LCBjb25zdCBGbG9hdFAKIAogICAgIGN0eC0+c2V0U3Ryb2tlQ29sb3IodW5k
ZXJsaW5lLmNvbG9yLCByZW5kZXJlcigpLnN0eWxlKCktPmNvbG9yU3BhY2UoKSk7CiAgICAgY3R4
LT5zZXRTdHJva2VUaGlja25lc3MobGluZVRoaWNrbmVzcyk7Ci0gICAgY3R4LT5kcmF3TGluZUZv
clRleHQoRmxvYXRQb2ludChib3hPcmlnaW4ueCgpICsgc3RhcnQsIGJveE9yaWdpbi55KCkgKyBs
b2dpY2FsSGVpZ2h0KCkgLSBsaW5lVGhpY2tuZXNzKSwgd2lkdGgsIHJlbmRlcmVyKCkuZG9jdW1l
bnQoKS5wcmludGluZygpKTsKKyAgICBkcmF3TGluZUZvclRleHQoKmN0eCwgRmxvYXRQb2ludChi
b3hPcmlnaW4ueCgpICsgc3RhcnQsIGJveE9yaWdpbi55KCkgKyBsb2dpY2FsSGVpZ2h0KCkgLSBs
aW5lVGhpY2tuZXNzKSwgd2lkdGgsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5wcmludGluZygpKTsK
IH0KIAogaW50IElubGluZVRleHRCb3g6OmNhcmV0TWluT2Zmc2V0KCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215189</attachid>
            <date>2013-10-25 10:44:20 -0700</date>
            <delta_ts>2013-10-25 13:18:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123310-20131025104419.patch</filename>
            <type>text/plain</type>
            <size>16080</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3OTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYzOTRlMzgyMjI1ZDYz
OGNlNTFiMGQzYzZhZmMzNGJiNWM3YmUxYS4uZTAwZDdkYzQ1NTgxNTk3NDlmODdjMDkyZjZjODBm
NzYzMzJjYjU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEzLTEwLTI0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgVW5kZXJsaW5l
IGJvdW5kcyBjYW5ub3QgYmUgcXVlcmllZCBiZWZvcmUgdW5kZXJsaW5lIGl0c2VsZiBpcyBkcmF3
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMzEw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR3JhcGhp
Y3NDb250ZXh0J3MgZHJhd0xpbmVGb3JUZXh0IGZ1bmN0aW9uIGlzIHVzZWQgdG8gZHJhdyB1bmRl
cmxpbmVzLAorICAgICAgICBzdHJpa2V0aHJvdWdocywgYW5kIG92ZXJsaW5lcy4gQmVmb3JlIGRy
YXdpbmcgdGhlIGxpbmUsIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgbW9kaWZpZXMgdGhlIGJvdW5k
cyBnaXZlbiB0byBpdCBpbiBvcmRlciB0byBtYWtlIHVuZGVybGluZXMgY3Jpc3AuIEhvd2V2ZXIs
ICAKKyAgICAgICAgdGhpcyBtZWFucyB0aGF0IGl0IGlzIGltcG9zc2libGUgdG8ga25vdyB3aGVy
ZSBhbiB1bmRlcmxpbmUgd2lsbCBiZSBkcmF3bgorICAgICAgICBiZWZvcmUgZHJhd2luZyBpdC4g
VGhpcyBwYXRjaCBwdWxscyBvdXQgdGhpcyBhZGp1c3RtZW50IGNvbXB1dGF0aW9uIGludG8KKyAg
ICAgICAgSW5saW5lVGV4dEJveCwgdGhlbiBwYXNzZXMgdGhlIHJlc3VsdCB0byBkcmF3TGluZUZv
clRleHQuCisKKyAgICAgICAgQmVjYXVzZSB0aGVyZSBzaG91bGQgYmUgbm8gb2JzZXJ2YWJsZSBk
aWZmZXJlbmNlLCBubyB0ZXN0cyBuZWVkIHRvIGJlIHVwZGF0ZWQuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDogQ2hhbmdpbmcgdGhlIHNpZ25hdHVyZSBv
ZiBkcmF3TGluZUZvclRleHQKKyAgICAgICAgc28gaXQgY2FuIGFjY2VwdCBib3VuZHMgZnJvbSBv
dXIgaGVscGVyIGZ1bmN0aW9uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9QYXRoQmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmRyYXdMaW5lRm9yVGV4dCk6IFVwZGF0ZSB0byB3b3JrIHdpdGggbmV3CisgICAgICAgIHNpZ25h
dHVyZSBvZiBkcmF3TGluZUZvclRleHQKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmRyYXdMaW5lRm9yVGV4dCk6IFVwZGF0ZSB0byB3b3JrIHdpdGggbmV3CisgICAgICAg
IHNpZ25hdHVyZSBvZiBkcmF3TGluZUZvclRleHQKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmRyYXdMaW5lRm9yVGV4dCk6IFVwZGF0ZSB0byB3b3JrIHdpdGggbmV3CisgICAgICAg
IHNpZ25hdHVyZSBvZiBkcmF3TGluZUZvclRleHQKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dCk6IFVwZGF0ZSB0byB3b3JrIHdpdGggbmV3Cisg
ICAgICAgIHNpZ25hdHVyZSBvZiBkcmF3TGluZUZvclRleHQKKyAgICAgICAgKiByZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlQm91bmRzRm9yVW5k
ZXJsaW5lKTogUHVyZSBmdW5jdGlvbiB0aGF0IGNvbXB1dGVzIHRoZSBhZGp1c3RlZAorICAgICAg
ICBib3VuZHMgb2YgdGhlIHVuZGVybGluZSBhYm91dCB0byBiZSBkcmF3bgorICAgICAgICAoV2Vi
Q29yZTo6ZHJhd0xpbmVGb3JUZXh0KTogY2FsbHMgY29tcHV0ZUJvdW5kc0ZvclVuZGVybGluZSBh
bmQgdGhlbgorICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dAorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKTogVXNlIG5ldyBkcmF3
TGluZUZvclRleHQgZnVuY3Rpb24KKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBh
aW50Q29tcG9zaXRpb25VbmRlcmxpbmUpOiBVc2UgbmV3IGRyYXdMaW5lRm9yVGV4dAorICAgICAg
ICBmdW5jdGlvbgorCiAyMDEzLTEwLTI0ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbmNvbXBsaWNhdGUgc29tZSBvZiBTVkdUZXh0UnVuUmVuZGVyaW5nQ29u
dGV4dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgKaW5kZXggYzMwOGNiZDBiN2Q4NTRmM2Q4ZWIwYmVmZDNhOWYzZjRkNGE3OTdhOC4u
MDM5ZWVmZjE3MTY1MjdkMzY0YzlkZWRjYTgxMzVhMzYwYzRjNmM3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTMzMCw3
ICszMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH07CiAgICAgICAgIEZsb2F0
UmVjdCByb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYsIFJvdW5kaW5nTW9kZSA9
IFJvdW5kQWxsU2lkZXMpOwogCi0gICAgICAgIHZvaWQgZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZs
b2F0UG9pbnQmLCBmbG9hdCB3aWR0aCwgYm9vbCBwcmludGluZyk7CisgICAgICAgIHZvaWQgZHJh
d0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYgYm91bmRzLCBib29sIHByaW50aW5nKTsKICAg
ICAgICAgZW51bSBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSB7CiAgICAgICAgICAgICBEb2N1bWVu
dE1hcmtlclNwZWxsaW5nTGluZVN0eWxlLAogICAgICAgICAgICAgRG9jdW1lbnRNYXJrZXJHcmFt
bWFyTGluZVN0eWxlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9QYXRoQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L1BhdGhCbGFja0JlcnJ5LmNwcAppbmRleCAxOTg2YjNmZTA2
MWFiOGMzZWQyNTZkZTc1ODU0NDY2OGMxYWQ4YzliLi45ZjY5OTE3NmI1YjY3NmYyMTVhNjlkOWU1
MGI4NWQ2NjU4YzUzZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L1BhdGhCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1BhdGhCbGFja0JlcnJ5LmNwcApAQCAtMjU1LDkg
KzI1NSw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvckRvY3VtZW50TWFya2Vy
KGNvbnN0IEZsb2F0UG9pbnQmIHB0LCBmbG9hdCB3aWR0CiAgICAgcGxhdGZvcm1Db250ZXh0KCkt
PmFkZERyYXdMaW5lRm9yRG9jdW1lbnRNYXJrZXIocHQsIHdpZHRoLCAoQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkdyYXBoaWNzOjpEb2N1bWVudE1hcmtlckxpbmVTdHlsZSlzdHlsZSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcHQs
IGZsb2F0IHdpZHRoLCBib29sIHByaW50aW5nKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdM
aW5lRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmIGJvdW5kcywgYm9vbCBwcmludGluZykKIHsKLSAg
ICBwbGF0Zm9ybUNvbnRleHQoKS0+YWRkRHJhd0xpbmVGb3JUZXh0KHB0LCB3aWR0aCwgcHJpbnRp
bmcpOworICAgIHBsYXRmb3JtQ29udGV4dCgpLT5hZGREcmF3TGluZUZvclRleHQoYm91bmRzLmxv
Y2F0aW9uLCBib3VuZHMud2lkdGgoKSwgcHJpbnRpbmcpOwogfQogCiAvLyBGSVhNRTogZG9uJ3Qg
aWdub3JlIHRoZSB3aW5kaW5nIHJ1bGUuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDcwNjQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCA3MDM2MGVk
N2VjODc1MmU2MDQyZWZiYzRmMzg4NzE5ZjRmMjFjMTBhLi5hNzFiMTQ1YjQzY2RhNWFkNzI2MTJm
MjQ4MWViMTc5NGM5ZWUyYmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC02
MTQsNyArNjE0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29uc3Qg
VmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50IHdpZHRoLCBpbnQKICAgICBjYWlyb19yZXN0b3Jl
KGNyKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dChjb25zdCBG
bG9hdFBvaW50JiBvcmlnaW4sIGZsb2F0IHdpZHRoLCBib29sKQordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdMaW5lRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmIGJvdW5kcywgYm9vbCkKIHsKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC02MjMsMTYgKzYy
MywxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0
UG9pbnQmIG9yaWdpbiwgZmxvYXQgd2lkdGgsIGJvbwogICAgIGNhaXJvX3NhdmUoY2Fpcm9Db250
ZXh0KTsKIAogICAgIC8vIFRoaXMgYnVtcGluZyBvZiA8MSBzdHJva2UgdGhpY2tuZXNzZXMgbWF0
Y2hlcyB0aGUgb25lIGluIGRyYXdMaW5lT25DYWlyb0NvbnRleHQuCi0gICAgRmxvYXRQb2ludCBl
bmRQb2ludChvcmlnaW4gKyBJbnRTaXplKHdpZHRoLCAwKSk7Ci0gICAgRmxvYXRSZWN0IGxpbmVF
eHRlbnRzKG9yaWdpbiwgRmxvYXRTaXplKHdpZHRoLCBzdHJva2VUaGlja25lc3MoKSkpOworICAg
IEZsb2F0UG9pbnQgZW5kUG9pbnQoYm91bmRzLmxvY2F0aW9uKCkgKyBJbnRTaXplKGJvdW5kcy53
aWR0aCgpLCAwKSk7CisgICAgRmxvYXRSZWN0IGxpbmVFeHRlbnRzKGJvdW5kcy5sb2NhdGlvbigp
LCBGbG9hdFNpemUoYm91bmRzLndpZHRoKCksIHN0cm9rZVRoaWNrbmVzcygpKSk7CiAKICAgICBT
aGFkb3dCbHVyJiBzaGFkb3cgPSBwbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpOwogICAg
IGlmIChHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3cuYmVnaW5TaGFkb3dM
YXllcih0aGlzLCBsaW5lRXh0ZW50cykpIHsKLSAgICAgICAgZHJhd0xpbmVPbkNhaXJvQ29udGV4
dCh0aGlzLCBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgb3JpZ2luLCBl
bmRQb2ludCk7CisgICAgICAgIGRyYXdMaW5lT25DYWlyb0NvbnRleHQodGhpcywgc2hhZG93Q29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGJvdW5kcy5sb2NhdGlvbigpLCBlbmRQb2lu
dCk7CiAgICAgICAgIHNoYWRvdy5lbmRTaGFkb3dMYXllcih0aGlzKTsKICAgICB9CiAKLSAgICBk
cmF3TGluZU9uQ2Fpcm9Db250ZXh0KHRoaXMsIGNhaXJvQ29udGV4dCwgb3JpZ2luLCBlbmRQb2lu
dCk7CisgICAgZHJhd0xpbmVPbkNhaXJvQ29udGV4dCh0aGlzLCBjYWlyb0NvbnRleHQsIGJvdW5k
cy5sb2NhdGlvbigpLCBlbmRQb2ludCk7CiAgICAgY2Fpcm9fcmVzdG9yZShjYWlyb0NvbnRleHQp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggMWE5YzkwNTVlNmM5MjAzZmI1NDAzOTkxYmVi
Yjc0Y2U5ODNlZDU1Yy4uZTc1MjkzZDM3ZDg1MzhjYTBjOWI2MmY0ZWRkZWM4M2RjMTE3MDBiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcApAQCAtMTIzNSw1MyArMTIzNSwxNiBAQCBGbG9hdFJlY3QgR3Jh
cGhpY3NDb250ZXh0Ojpyb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Um91bmRpbmdNbwogICAgIHJldHVybiBGbG9hdFJlY3Qocm91bmRlZE9yaWdpbiwgcm91bmRlZExv
d2VyUmlnaHQgLSByb3VuZGVkT3JpZ2luKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdMaW5lRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgZmxvYXQgd2lkdGgsIGJvb2wg
cHJpbnRpbmcpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZs
b2F0UmVjdCYgYm91bmRzLCBib29sKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmICh3aWR0aCA8PSAwKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBmbG9hdCB4ID0gcG9pbnQueCgpOwotICAgIGZsb2F0IHkgPSBwb2ludC55KCk7Ci0gICAg
ZmxvYXQgbGluZUxlbmd0aCA9IHdpZHRoOwotCi0gICAgLy8gVXNlIGEgbWluaW11bSB0aGlja25l
c3Mgb2YgMC41IGluIHVzZXIgc3BhY2UuCi0gICAgLy8gU2VlIGh0dHA6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQyNTUgZm9yIGRldGFpbHMgb2Ygd2h5IDAuNSBpcyB0aGUgcmln
aHQgbWluaW11bSB0aGlja25lc3MgdG8gdXNlLgotICAgIGZsb2F0IHRoaWNrbmVzcyA9IG1heChz
dHJva2VUaGlja25lc3MoKSwgMC41Zik7Ci0KLSAgICBib29sIHJlc3RvcmVBbnRpYWxpYXNNb2Rl
ID0gZmFsc2U7Ci0KLSAgICBpZiAoIXByaW50aW5nICYmIGdldENUTShHcmFwaGljc0NvbnRleHQ6
OkRlZmluaXRlbHlJbmNsdWRlRGV2aWNlU2NhbGUpLnByZXNlcnZlc0F4aXNBbGlnbm1lbnQoKSkg
ewotICAgICAgICAvLyBPbiBzY3JlZW4sIHVzZSBhIG1pbmltdW0gdGhpY2tuZXNzIG9mIDEuMCBp
biB1c2VyIHNwYWNlIChsYXRlciByb3VuZGVkIHRvIGFuIGludGVncmFsIG51bWJlciBpbiBkZXZp
Y2Ugc3BhY2UpLgotICAgICAgICBmbG9hdCBhZGp1c3RlZFRoaWNrbmVzcyA9IG1heCh0aGlja25l
c3MsIDEuMGYpOwotCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBkb25lIGEgYmV0
dGVyIHdheS4KLSAgICAgICAgLy8gV2UgdHJ5IHRvIHJvdW5kIGFsbCBwYXJhbWV0ZXJzIHRvIGlu
dGVnZXIgYm91bmRhcmllcyBpbiBkZXZpY2Ugc3BhY2UuIElmIHJvdW5kaW5nIHBpeGVscyBpbiBk
ZXZpY2Ugc3BhY2UKLSAgICAgICAgLy8gbWFrZXMgb3VyIHRoaWNrbmVzcyBtb3JlIHRoYW4gZG91
YmxlLCB0aGVuIHRoZXJlIG11c3QgYmUgYSBzaHJpbmtpbmctc2NhbGUgZmFjdG9yIGFuZCByb3Vu
ZGluZyB0byBwaXhlbHMKLSAgICAgICAgLy8gaW4gZGV2aWNlIHNwYWNlIHdpbGwgbWFrZSB0aGUg
dW5kZXJsaW5lcyB0b28gdGhpY2suCi0gICAgICAgIENHUmVjdCBsaW5lUmVjdCA9IHJvdW5kVG9E
ZXZpY2VQaXhlbHMoRmxvYXRSZWN0KHgsIHksIGxpbmVMZW5ndGgsIGFkanVzdGVkVGhpY2tuZXNz
KSwgUm91bmRBbGxTaWRlcyk7Ci0gICAgICAgIGlmIChsaW5lUmVjdC5zaXplLmhlaWdodCA8IHRo
aWNrbmVzcyAqIDIuMCkgewotICAgICAgICAgICAgeCA9IGxpbmVSZWN0Lm9yaWdpbi54OwotICAg
ICAgICAgICAgeSA9IGxpbmVSZWN0Lm9yaWdpbi55OwotICAgICAgICAgICAgbGluZUxlbmd0aCA9
IGxpbmVSZWN0LnNpemUud2lkdGg7Ci0gICAgICAgICAgICB0aGlja25lc3MgPSBsaW5lUmVjdC5z
aXplLmhlaWdodDsKLSAgICAgICAgICAgIGlmIChzaG91bGRBbnRpYWxpYXMoKSkgewotICAgICAg
ICAgICAgICAgIENHQ29udGV4dFNldFNob3VsZEFudGlhbGlhcyhwbGF0Zm9ybUNvbnRleHQoKSwg
ZmFsc2UpOwotICAgICAgICAgICAgICAgIHJlc3RvcmVBbnRpYWxpYXNNb2RlID0gdHJ1ZTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQogICAgIGlmIChmaWxsQ29sb3IoKSAhPSBz
dHJva2VDb2xvcigpKQogICAgICAgICBzZXRDR0ZpbGxDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwg
c3Ryb2tlQ29sb3IoKSwgc3Ryb2tlQ29sb3JTcGFjZSgpKTsKLSAgICBDR0NvbnRleHRGaWxsUmVj
dChwbGF0Zm9ybUNvbnRleHQoKSwgQ0dSZWN0TWFrZSh4LCB5LCBsaW5lTGVuZ3RoLCB0aGlja25l
c3MpKTsKKyAgICBDR0NvbnRleHRGaWxsUmVjdChwbGF0Zm9ybUNvbnRleHQoKSwgQ0dSZWN0TWFr
ZShib3VuZHMubG9jYXRpb24oKS54KCksIGJvdW5kcy5sb2NhdGlvbigpLnkoKSwgYm91bmRzLndp
ZHRoKCksIGJvdW5kcy5oZWlnaHQoKSkpOwogICAgIGlmIChmaWxsQ29sb3IoKSAhPSBzdHJva2VD
b2xvcigpKQogICAgICAgICBzZXRDR0ZpbGxDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgZmlsbENv
bG9yKCksIGZpbGxDb2xvclNwYWNlKCkpOwotCi0gICAgaWYgKHJlc3RvcmVBbnRpYWxpYXNNb2Rl
KQotICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRBbnRpYWxpYXMocGxhdGZvcm1Db250ZXh0KCks
IHRydWUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0VVJMRm9yUmVjdChjb25zdCBV
UkwmIGxpbmssIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2lu
Q0UuY3BwCmluZGV4IDFmZjNmYWUxYWQ5MzI1MDUwNGRhZWFiNTc3NDBhZjFmNzhhNjgxY2YuLjE1
N2ZhZTQ4YTc5ZGQzM2IwZTI3ODYxYzIzODkzYWE0ZGY4YjFmOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0Nv
bnRleHRXaW5DRS5jcHAKQEAgLTk1MCwxNCArOTUwLDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCB3aWR0aCwg
aW50CiAgICAgRHJhd0ZvY3VzUmVjdChkYywgJnJlY3QpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIG9yaWdpbiwgZmxvYXQgd2lk
dGgsIGJvb2wgcHJpbnRpbmcpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0
KGNvbnN0IEZsb2F0UmVjdCYgYm91bmRzLCBib29sKQogewogICAgIGlmIChwYWludGluZ0Rpc2Fi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cm9rZVN0eWxlIG9sZFN0eWxlID0gc3Ry
b2tlU3R5bGUoKTsKICAgICBzZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgZHJhd0xp
bmUocm91bmRlZEludFBvaW50KG9yaWdpbiksIHJvdW5kZWRJbnRQb2ludChvcmlnaW4gKyBGbG9h
dFNpemUod2lkdGgsIDApKSk7CisgICAgZHJhd0xpbmUocm91bmRlZEludFBvaW50KGJvdW5kcy5s
b2NhdGlvbigpKSwgcm91bmRlZEludFBvaW50KGJvdW5kcy5sb2NhdGlvbigpICsgRmxvYXRTaXpl
KGJvdW5kcy53aWR0aCgpLCAwKSkpOwogICAgIHNldFN0cm9rZVN0eWxlKG9sZFN0eWxlKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IDM0NzAz
NmQ2ZDc3NWMxZDcwYmJhN2EwNzg4Nzg2OGM1NzEyZDdhNzguLmMwM2E2NWI2OGUxOWMwMjUzZDJh
OTk4NWViMTkwM2FjYmFjNTVkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
VGV4dEJveC5jcHAKQEAgLTY2LDYgKzY2LDUwIEBAIENPTVBJTEVfQVNTRVJUKHNpemVvZihJbmxp
bmVUZXh0Qm94KSA9PSBzaXplb2YoU2FtZVNpemVBc0lubGluZVRleHRCb3gpLCBJbmxpbmVUCiB0
eXBlZGVmIFdURjo6SGFzaE1hcDxjb25zdCBJbmxpbmVUZXh0Qm94KiwgTGF5b3V0UmVjdD4gSW5s
aW5lVGV4dEJveE92ZXJmbG93TWFwOwogc3RhdGljIElubGluZVRleHRCb3hPdmVyZmxvd01hcCog
Z1RleHRCb3hlc1dpdGhPdmVyZmxvdzsKIAorc3RhdGljIEZsb2F0UmVjdCBjb21wdXRlQm91bmRz
Rm9yVW5kZXJsaW5lKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYg
cG9pbnQsIGZsb2F0IHdpZHRoLCBib29sIHByaW50aW5nLCBib29sJiBzaG91bGRBbnRpYWxpYXMp
Cit7CisgICAgLy8gVXNlIGEgbWluaW11bSB0aGlja25lc3Mgb2YgMC41IGluIHVzZXIgc3BhY2Uu
CisgICAgLy8gU2VlIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyNTUg
Zm9yIGRldGFpbHMgb2Ygd2h5IDAuNSBpcyB0aGUgcmlnaHQgbWluaW11bSB0aGlja25lc3MgdG8g
dXNlLgorICAgIGZsb2F0IHRoaWNrbmVzcyA9IHN0ZDo6bWF4KGNvbnRleHQuc3Ryb2tlVGhpY2tu
ZXNzKCksIDAuNWYpOworICAgIAorICAgIEZsb2F0UmVjdCBib3VuZHMocG9pbnQsIEZsb2F0U2l6
ZSh3aWR0aCwgdGhpY2tuZXNzKSk7CisKKyAgICBzaG91bGRBbnRpYWxpYXMgPSB0cnVlOworCisg
ICAgaWYgKCFwcmludGluZyAmJiAhY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkgJiYgY29udGV4
dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKS5w
cmVzZXJ2ZXNBeGlzQWxpZ25tZW50KCkpIHsKKyAgICAgICAgLy8gT24gc2NyZWVuLCB1c2UgYSBt
aW5pbXVtIHRoaWNrbmVzcyBvZiAxLjAgaW4gdXNlciBzcGFjZSAobGF0ZXIgcm91bmRlZCB0byBh
biBpbnRlZ3JhbCBudW1iZXIgaW4gZGV2aWNlIHNwYWNlKS4KKyAgICAgICAgRmxvYXRSZWN0IGFk
anVzdGVkQm91bmRzID0gYm91bmRzOworICAgICAgICBhZGp1c3RlZEJvdW5kcy5zZXRIZWlnaHQo
c3RkOjptYXgodGhpY2tuZXNzLCAxLjBmKSk7CisKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGJlIGRvbmUgYSBiZXR0ZXIgd2F5LgorICAgICAgICAvLyBXZSB0cnkgdG8gcm91bmQgYWxs
IHBhcmFtZXRlcnMgdG8gaW50ZWdlciBib3VuZGFyaWVzIGluIGRldmljZSBzcGFjZS4gSWYgcm91
bmRpbmcgcGl4ZWxzIGluIGRldmljZSBzcGFjZQorICAgICAgICAvLyBtYWtlcyBvdXIgdGhpY2tu
ZXNzIG1vcmUgdGhhbiBkb3VibGUsIHRoZW4gdGhlcmUgbXVzdCBiZSBhIHNocmlua2luZy1zY2Fs
ZSBmYWN0b3IgYW5kIHJvdW5kaW5nIHRvIHBpeGVscworICAgICAgICAvLyBpbiBkZXZpY2Ugc3Bh
Y2Ugd2lsbCBtYWtlIHRoZSB1bmRlcmxpbmVzIHRvbyB0aGljay4KKyAgICAgICAgRmxvYXRSZWN0
IGxpbmVSZWN0ID0gY29udGV4dC5yb3VuZFRvRGV2aWNlUGl4ZWxzKGFkanVzdGVkQm91bmRzLCBH
cmFwaGljc0NvbnRleHQ6OlJvdW5kQWxsU2lkZXMpOworICAgICAgICBpZiAobGluZVJlY3QuaGVp
Z2h0KCkgPCB0aGlja25lc3MgKiAyLjApIHsKKyAgICAgICAgICAgIGJvdW5kcyA9IGxpbmVSZWN0
OworICAgICAgICAgICAgc2hvdWxkQW50aWFsaWFzID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9
CisgICAgCisgICAgcmV0dXJuIGJvdW5kczsKK30KKworc3RhdGljIHZvaWQgZHJhd0xpbmVGb3JU
ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZs
b2F0IHdpZHRoLCBib29sIHByaW50aW5nKQoreworICAgIGlmICh3aWR0aCA8PSAwKQorICAgICAg
ICByZXR1cm47CisgICAgCisgICAgYm9vbCBzaG91bGRBbnRpYWxpYXM7CisgICAgCisgICAgRmxv
YXRSZWN0IHVuZGVybGluZUJvdW5kcyA9IGNvbXB1dGVCb3VuZHNGb3JVbmRlcmxpbmUoY29udGV4
dCwgcG9pbnQsIHdpZHRoLCBwcmludGluZywgc2hvdWxkQW50aWFsaWFzKTsKKyAgICAKKyAgICBi
b29sIHdhc0FudGlhbGlhc2luZyA9IGNvbnRleHQuc2hvdWxkQW50aWFsaWFzKCk7CisgICAgY29u
dGV4dC5zZXRTaG91bGRBbnRpYWxpYXMoc2hvdWxkQW50aWFsaWFzKTsKKyAgICBjb250ZXh0LmRy
YXdMaW5lRm9yVGV4dCh1bmRlcmxpbmVCb3VuZHMsIHByaW50aW5nKTsKKyAgICBjb250ZXh0LnNl
dFNob3VsZEFudGlhbGlhcyh3YXNBbnRpYWxpYXNpbmcpOworfQorCiB2b2lkIElubGluZVRleHRC
b3g6OmRlc3Ryb3koUmVuZGVyQXJlbmEmIGFyZW5hKQogewogICAgIGlmICgha25vd25Ub0hhdmVO
b092ZXJmbG93KCkgJiYgZ1RleHRCb3hlc1dpdGhPdmVyZmxvdykKQEAgLTExMTAsMTQgKzExNTQs
MTQgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBjb250ZXh0
LT5kcmF3TGluZUZvclRleHQoRmxvYXRQb2ludChsb2NhbE9yaWdpbi54KCksIGxvY2FsT3JpZ2lu
LnkoKSArIHVuZGVybGluZU9mZnNldCksIHdpZHRoLCBpc1ByaW50aW5nKTsKKyAgICAgICAgICAg
ICAgICBkcmF3TGluZUZvclRleHQoKmNvbnRleHQsIEZsb2F0UG9pbnQobG9jYWxPcmlnaW4ueCgp
LCBsb2NhbE9yaWdpbi55KCkgKyB1bmRlcmxpbmVPZmZzZXQpLCB3aWR0aCwgaXNQcmludGluZyk7
CiAKICAgICAgICAgICAgICAgICBpZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9u
U3R5bGVEb3VibGUpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdMaW5lRm9yVGV4
dChGbG9hdFBvaW50KGxvY2FsT3JpZ2luLngoKSwgbG9jYWxPcmlnaW4ueSgpICsgdW5kZXJsaW5l
T2Zmc2V0ICsgZG91YmxlT2Zmc2V0KSwgd2lkdGgsIGlzUHJpbnRpbmcpOworICAgICAgICAgICAg
ICAgICAgICBkcmF3TGluZUZvclRleHQoKmNvbnRleHQsIEZsb2F0UG9pbnQobG9jYWxPcmlnaW4u
eCgpLCBsb2NhbE9yaWdpbi55KCkgKyB1bmRlcmxpbmVPZmZzZXQgKyBkb3VibGVPZmZzZXQpLCB3
aWR0aCwgaXNQcmludGluZyk7CiAgICAgICAgICAgICB9CiAjZWxzZQogICAgICAgICAgICAgLy8g
TGVhdmUgb25lIHBpeGVsIG9mIHdoaXRlIGJldHdlZW4gdGhlIGJhc2VsaW5lIGFuZCB0aGUgdW5k
ZXJsaW5lLgotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0xpbmVGb3JUZXh0KEZsb2F0UG9pbnQo
bG9jYWxPcmlnaW4ueCgpLCBsb2NhbE9yaWdpbi55KCkgKyBiYXNlbGluZSArIDEpLCB3aWR0aCwg
aXNQcmludGluZyk7CisgICAgICAgICAgICBkcmF3TGluZUZvclRleHQoKmNvbnRleHQsIEZsb2F0
UG9pbnQobG9jYWxPcmlnaW4ueCgpLCBsb2NhbE9yaWdpbi55KCkgKyBiYXNlbGluZSArIDEpLCB3
aWR0aCwgaXNQcmludGluZyk7CiAjZW5kaWYgLy8gQ1NTM19URVhUCiAgICAgICAgIH0KICAgICAg
ICAgaWYgKGRlY28gJiBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lKSB7CkBAIC0xMTMyLDEwICsxMTc2
LDEwIEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGRlZmF1bHQ6CiAjZW5kaWYgLy8gQ1NTM19URVhUCi0gICAgICAgICAgICAgICAgY29udGV4dC0+
ZHJhd0xpbmVGb3JUZXh0KGxvY2FsT3JpZ2luLCB3aWR0aCwgaXNQcmludGluZyk7CisgICAgICAg
ICAgICAgICAgZHJhd0xpbmVGb3JUZXh0KCpjb250ZXh0LCBsb2NhbE9yaWdpbiwgd2lkdGgsIGlz
UHJpbnRpbmcpOwogI2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAgICAgICAgICAgICAgaWYgKGRl
Y29yYXRpb25TdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlRG91YmxlKQotICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5kcmF3TGluZUZvclRleHQoRmxvYXRQb2ludChsb2NhbE9yaWdpbi54
KCksIGxvY2FsT3JpZ2luLnkoKSAtIGRvdWJsZU9mZnNldCksIHdpZHRoLCBpc1ByaW50aW5nKTsK
KyAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JUZXh0KCpjb250ZXh0LCBGbG9hdFBvaW50
KGxvY2FsT3JpZ2luLngoKSwgbG9jYWxPcmlnaW4ueSgpIC0gZG91YmxlT2Zmc2V0KSwgd2lkdGgs
IGlzUHJpbnRpbmcpOwogICAgICAgICAgICAgfQogI2VuZGlmIC8vIENTUzNfVEVYVAogICAgICAg
ICB9CkBAIC0xMTUxLDEwICsxMTk1LDEwIEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREZWNv
cmF0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGRlZmF1bHQ6CiAjZW5kaWYgLy8gQ1NTM19URVhUCi0gICAg
ICAgICAgICAgICAgY29udGV4dC0+ZHJhd0xpbmVGb3JUZXh0KEZsb2F0UG9pbnQobG9jYWxPcmln
aW4ueCgpLCBsb2NhbE9yaWdpbi55KCkgKyAyICogYmFzZWxpbmUgLyAzKSwgd2lkdGgsIGlzUHJp
bnRpbmcpOworICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yVGV4dCgqY29udGV4dCwgRmxvYXRQ
b2ludChsb2NhbE9yaWdpbi54KCksIGxvY2FsT3JpZ2luLnkoKSArIDIgKiBiYXNlbGluZSAvIDMp
LCB3aWR0aCwgaXNQcmludGluZyk7CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICAgICAgICAg
ICAgICBpZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGUpCi0g
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdMaW5lRm9yVGV4dChGbG9hdFBvaW50KGxv
Y2FsT3JpZ2luLngoKSwgbG9jYWxPcmlnaW4ueSgpICsgZG91YmxlT2Zmc2V0ICsgMiAqIGJhc2Vs
aW5lIC8gMyksIHdpZHRoLCBpc1ByaW50aW5nKTsKKyAgICAgICAgICAgICAgICAgICAgZHJhd0xp
bmVGb3JUZXh0KCpjb250ZXh0LCBGbG9hdFBvaW50KGxvY2FsT3JpZ2luLngoKSwgbG9jYWxPcmln
aW4ueSgpICsgZG91YmxlT2Zmc2V0ICsgMiAqIGJhc2VsaW5lIC8gMyksIHdpZHRoLCBpc1ByaW50
aW5nKTsKICAgICAgICAgICAgIH0KICNlbmRpZiAvLyBDU1MzX1RFWFQKICAgICAgICAgfQpAQCAt
MTQwMiw3ICsxNDQ2LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uVW5k
ZXJsaW5lKEdyYXBoaWNzQ29udGV4dCogY3R4LCBjb25zdCBGbG9hdFAKIAogICAgIGN0eC0+c2V0
U3Ryb2tlQ29sb3IodW5kZXJsaW5lLmNvbG9yLCByZW5kZXJlcigpLnN0eWxlKCktPmNvbG9yU3Bh
Y2UoKSk7CiAgICAgY3R4LT5zZXRTdHJva2VUaGlja25lc3MobGluZVRoaWNrbmVzcyk7Ci0gICAg
Y3R4LT5kcmF3TGluZUZvclRleHQoRmxvYXRQb2ludChib3hPcmlnaW4ueCgpICsgc3RhcnQsIGJv
eE9yaWdpbi55KCkgKyBsb2dpY2FsSGVpZ2h0KCkgLSBsaW5lVGhpY2tuZXNzKSwgd2lkdGgsIHJl
bmRlcmVyKCkuZG9jdW1lbnQoKS5wcmludGluZygpKTsKKyAgICBkcmF3TGluZUZvclRleHQoKmN0
eCwgRmxvYXRQb2ludChib3hPcmlnaW4ueCgpICsgc3RhcnQsIGJveE9yaWdpbi55KCkgKyBsb2dp
Y2FsSGVpZ2h0KCkgLSBsaW5lVGhpY2tuZXNzKSwgd2lkdGgsIHJlbmRlcmVyKCkuZG9jdW1lbnQo
KS5wcmludGluZygpKTsKIH0KIAogaW50IElubGluZVRleHRCb3g6OmNhcmV0TWluT2Zmc2V0KCkg
Y29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215203</attachid>
            <date>2013-10-25 13:18:25 -0700</date>
            <delta_ts>2013-10-25 13:31:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123310-20131025131825.patch</filename>
            <type>text/plain</type>
            <size>15914</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3OTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYzOTRlMzgyMjI1ZDYz
OGNlNTFiMGQzYzZhZmMzNGJiNWM3YmUxYS4uYWY5NzE4MWQ3ZTQ2NDU4OTlkNTdjOWJmMmQxZDcy
ZmUyMTlhY2QzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEzLTEwLTI0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgVW5kZXJsaW5l
IGJvdW5kcyBjYW5ub3QgYmUgcXVlcmllZCBiZWZvcmUgdW5kZXJsaW5lIGl0c2VsZiBpcyBkcmF3
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMzEw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIEdyYXBoaWNz
Q29udGV4dCdzIGRyYXdMaW5lRm9yVGV4dCBmdW5jdGlvbiBpcyB1c2VkIHRvIGRyYXcgdW5kZXJs
aW5lcywKKyAgICAgICAgc3RyaWtldGhyb3VnaHMsIGFuZCBvdmVybGluZXMuIEJlZm9yZSBkcmF3
aW5nIHRoZSBsaW5lLCB0aGlzIGZ1bmN0aW9uCisgICAgICAgIG1vZGlmaWVzIHRoZSBib3VuZHMg
Z2l2ZW4gdG8gaXQgaW4gb3JkZXIgdG8gbWFrZSB1bmRlcmxpbmVzIGNyaXNwLiBIb3dldmVyLCAg
CisgICAgICAgIHRoaXMgbWVhbnMgdGhhdCBpdCBpcyBpbXBvc3NpYmxlIHRvIGtub3cgd2hlcmUg
YW4gdW5kZXJsaW5lIHdpbGwgYmUgZHJhd24KKyAgICAgICAgYmVmb3JlIGRyYXdpbmcgaXQuIFRo
aXMgcGF0Y2ggcHVsbHMgb3V0IHRoaXMgYWRqdXN0bWVudCBjb21wdXRhdGlvbiBpbnRvCisgICAg
ICAgIElubGluZVRleHRCb3gsIHRoZW4gcGFzc2VzIHRoZSByZXN1bHQgdG8gZHJhd0xpbmVGb3JU
ZXh0LgorCisgICAgICAgIEJlY2F1c2UgdGhlcmUgc2hvdWxkIGJlIG5vIG9ic2VydmFibGUgZGlm
ZmVyZW5jZSwgbm8gdGVzdHMgbmVlZCB0byBiZSB1cGRhdGVkLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6IENoYW5naW5nIHRoZSBzaWduYXR1cmUgb2Yg
ZHJhd0xpbmVGb3JUZXh0CisgICAgICAgIHNvIGl0IGNhbiBhY2NlcHQgYm91bmRzIGZyb20gb3Vy
IGhlbHBlciBmdW5jdGlvbgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
UGF0aEJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpk
cmF3TGluZUZvclRleHQpOiBVcGRhdGUgdG8gd29yayB3aXRoIG5ldworICAgICAgICBzaWduYXR1
cmUgb2YgZHJhd0xpbmVGb3JUZXh0CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3TGluZUZvclRleHQpOiBVcGRhdGUgdG8gd29yayB3aXRoIG5ldworICAgICAgICBz
aWduYXR1cmUgb2YgZHJhd0xpbmVGb3JUZXh0CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3TGluZUZvclRleHQpOiBVcGRhdGUgdG8gd29yayB3aXRoIG5ldworICAgICAgICBz
aWduYXR1cmUgb2YgZHJhd0xpbmVGb3JUZXh0CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQpOiBVcGRhdGUgdG8gd29yayB3aXRoIG5ldworICAg
ICAgICBzaWduYXR1cmUgb2YgZHJhd0xpbmVGb3JUZXh0CisgICAgICAgICogcmVuZGVyaW5nL0lu
bGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUJvdW5kc0ZvclVuZGVy
bGluZSk6IFB1cmUgZnVuY3Rpb24gdGhhdCBjb21wdXRlcyB0aGUgYWRqdXN0ZWQKKyAgICAgICAg
Ym91bmRzIG9mIHRoZSB1bmRlcmxpbmUgYWJvdXQgdG8gYmUgZHJhd24KKyAgICAgICAgKFdlYkNv
cmU6OmRyYXdMaW5lRm9yVGV4dCk6IGNhbGxzIGNvbXB1dGVCb3VuZHNGb3JVbmRlcmxpbmUgYW5k
IHRoZW4KKyAgICAgICAgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbik6IFVzZSBuZXcgZHJhd0xp
bmVGb3JUZXh0IGZ1bmN0aW9uCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWlu
dENvbXBvc2l0aW9uVW5kZXJsaW5lKTogVXNlIG5ldyBkcmF3TGluZUZvclRleHQKKyAgICAgICAg
ZnVuY3Rpb24KKwogMjAxMy0xMC0yNCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgVW5jb21wbGljYXRlIHNvbWUgb2YgU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRl
eHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCmluZGV4IGMzMDhjYmQwYjdkODU0ZjNkOGViMGJlZmQzYTlmM2Y0ZDRhNzk3YTguLjAz
OWVlZmYxNzE2NTI3ZDM2NGM5ZGVkY2E4MTM1YTM2MGM0YzZjNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0zMzAsNyAr
MzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9OwogICAgICAgICBGbG9hdFJl
Y3Qgcm91bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3QmLCBSb3VuZGluZ01vZGUgPSBS
b3VuZEFsbFNpZGVzKTsKIAotICAgICAgICB2b2lkIGRyYXdMaW5lRm9yVGV4dChjb25zdCBGbG9h
dFBvaW50JiwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcpOworICAgICAgICB2b2lkIGRyYXdM
aW5lRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmIGJvdW5kcywgYm9vbCBwcmludGluZyk7CiAgICAg
ICAgIGVudW0gRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUgewogICAgICAgICAgICAgRG9jdW1lbnRN
YXJrZXJTcGVsbGluZ0xpbmVTdHlsZSwKICAgICAgICAgICAgIERvY3VtZW50TWFya2VyR3JhbW1h
ckxpbmVTdHlsZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvUGF0aEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9QYXRoQmxhY2tCZXJyeS5jcHAKaW5kZXggMTk4NmIzZmUwNjFh
YjhjM2VkMjU2ZGU3NTg1NDQ2NjhjMWFkOGM5Yi4uOWY2OTkxNzZiNWI2NzZmMjE1YTY5ZDllNTBi
ODVkNjY1OGM1M2ViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9QYXRoQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9QYXRoQmxhY2tCZXJyeS5jcHAKQEAgLTI1NSw5ICsy
NTUsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JEb2N1bWVudE1hcmtlcihj
b25zdCBGbG9hdFBvaW50JiBwdCwgZmxvYXQgd2lkdAogICAgIHBsYXRmb3JtQ29udGV4dCgpLT5h
ZGREcmF3TGluZUZvckRvY3VtZW50TWFya2VyKHB0LCB3aWR0aCwgKEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpHcmFwaGljczo6RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUpc3R5bGUpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHB0LCBm
bG9hdCB3aWR0aCwgYm9vbCBwcmludGluZykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGlu
ZUZvclRleHQoY29uc3QgRmxvYXRSZWN0JiBib3VuZHMsIGJvb2wgcHJpbnRpbmcpCiB7Ci0gICAg
cGxhdGZvcm1Db250ZXh0KCktPmFkZERyYXdMaW5lRm9yVGV4dChwdCwgd2lkdGgsIHByaW50aW5n
KTsKKyAgICBwbGF0Zm9ybUNvbnRleHQoKS0+YWRkRHJhd0xpbmVGb3JUZXh0KGJvdW5kcy5sb2Nh
dGlvbiwgYm91bmRzLndpZHRoKCksIHByaW50aW5nKTsKIH0KIAogLy8gRklYTUU6IGRvbid0IGln
bm9yZSB0aGUgd2luZGluZyBydWxlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA3MDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggNzAzNjBlZDdl
Yzg3NTJlNjA0MmVmYmM0ZjM4ODcxOWY0ZjIxYzEwYS4uYTcxYjE0NWI0M2NkYTVhZDcyNjEyZjI0
ODFlYjE3OTRjOWVlMmJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtNjE0
LDcgKzYxNCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFZl
Y3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCB3aWR0aCwgaW50CiAgICAgY2Fpcm9fcmVzdG9yZShj
cik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQoY29uc3QgRmxv
YXRQb2ludCYgb3JpZ2luLCBmbG9hdCB3aWR0aCwgYm9vbCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3TGluZUZvclRleHQoY29uc3QgRmxvYXRSZWN0JiBib3VuZHMsIGJvb2wpCiB7CiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjIzLDE2ICs2MjMs
MTYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dChjb25zdCBGbG9hdFBv
aW50JiBvcmlnaW4sIGZsb2F0IHdpZHRoLCBib28KICAgICBjYWlyb19zYXZlKGNhaXJvQ29udGV4
dCk7CiAKICAgICAvLyBUaGlzIGJ1bXBpbmcgb2YgPDEgc3Ryb2tlIHRoaWNrbmVzc2VzIG1hdGNo
ZXMgdGhlIG9uZSBpbiBkcmF3TGluZU9uQ2Fpcm9Db250ZXh0LgotICAgIEZsb2F0UG9pbnQgZW5k
UG9pbnQob3JpZ2luICsgSW50U2l6ZSh3aWR0aCwgMCkpOwotICAgIEZsb2F0UmVjdCBsaW5lRXh0
ZW50cyhvcmlnaW4sIEZsb2F0U2l6ZSh3aWR0aCwgc3Ryb2tlVGhpY2tuZXNzKCkpKTsKKyAgICBG
bG9hdFBvaW50IGVuZFBvaW50KGJvdW5kcy5sb2NhdGlvbigpICsgSW50U2l6ZShib3VuZHMud2lk
dGgoKSwgMCkpOworICAgIEZsb2F0UmVjdCBsaW5lRXh0ZW50cyhib3VuZHMubG9jYXRpb24oKSwg
RmxvYXRTaXplKGJvdW5kcy53aWR0aCgpLCBzdHJva2VUaGlja25lc3MoKSkpOwogCiAgICAgU2hh
ZG93Qmx1ciYgc2hhZG93ID0gcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKTsKICAgICBp
ZiAoR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93LmJlZ2luU2hhZG93TGF5
ZXIodGhpcywgbGluZUV4dGVudHMpKSB7Ci0gICAgICAgIGRyYXdMaW5lT25DYWlyb0NvbnRleHQo
dGhpcywgc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIG9yaWdpbiwgZW5k
UG9pbnQpOworICAgICAgICBkcmF3TGluZU9uQ2Fpcm9Db250ZXh0KHRoaXMsIHNoYWRvd0NvbnRl
eHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBib3VuZHMubG9jYXRpb24oKSwgZW5kUG9pbnQp
OwogICAgICAgICBzaGFkb3cuZW5kU2hhZG93TGF5ZXIodGhpcyk7CiAgICAgfQogCi0gICAgZHJh
d0xpbmVPbkNhaXJvQ29udGV4dCh0aGlzLCBjYWlyb0NvbnRleHQsIG9yaWdpbiwgZW5kUG9pbnQp
OworICAgIGRyYXdMaW5lT25DYWlyb0NvbnRleHQodGhpcywgY2Fpcm9Db250ZXh0LCBib3VuZHMu
bG9jYXRpb24oKSwgZW5kUG9pbnQpOwogICAgIGNhaXJvX3Jlc3RvcmUoY2Fpcm9Db250ZXh0KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDFhOWM5MDU1ZTZjOTIwM2ZiNTQwMzk5MWJlYmI3
NGNlOTgzZWQ1NWMuLmU3NTI5M2QzN2Q4NTM4Y2EwYzliNjJmNGVkZGVjODNkYzExNzAwYjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAKQEAgLTEyMzUsNTMgKzEyMzUsMTYgQEAgRmxvYXRSZWN0IEdyYXBo
aWNzQ29udGV4dDo6cm91bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3QmIHJlY3QsIFJv
dW5kaW5nTW8KICAgICByZXR1cm4gRmxvYXRSZWN0KHJvdW5kZWRPcmlnaW4sIHJvdW5kZWRMb3dl
clJpZ2h0IC0gcm91bmRlZE9yaWdpbik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
TGluZUZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHdpZHRoLCBib29sIHBy
aW50aW5nKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dChjb25zdCBGbG9h
dFJlY3QmIGJvdW5kcywgYm9vbCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAod2lkdGggPD0gMCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZmxvYXQgeCA9IHBvaW50LngoKTsKLSAgICBmbG9hdCB5ID0gcG9pbnQueSgpOwotICAgIGZs
b2F0IGxpbmVMZW5ndGggPSB3aWR0aDsKLQotICAgIC8vIFVzZSBhIG1pbmltdW0gdGhpY2tuZXNz
IG9mIDAuNSBpbiB1c2VyIHNwYWNlLgotICAgIC8vIFNlZSBodHRwOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00MjU1IGZvciBkZXRhaWxzIG9mIHdoeSAwLjUgaXMgdGhlIHJpZ2h0
IG1pbmltdW0gdGhpY2tuZXNzIHRvIHVzZS4KLSAgICBmbG9hdCB0aGlja25lc3MgPSBtYXgoc3Ry
b2tlVGhpY2tuZXNzKCksIDAuNWYpOwotCi0gICAgYm9vbCByZXN0b3JlQW50aWFsaWFzTW9kZSA9
IGZhbHNlOwotCi0gICAgaWYgKCFwcmludGluZyAmJiBnZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpE
ZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKS5wcmVzZXJ2ZXNBeGlzQWxpZ25tZW50KCkpIHsK
LSAgICAgICAgLy8gT24gc2NyZWVuLCB1c2UgYSBtaW5pbXVtIHRoaWNrbmVzcyBvZiAxLjAgaW4g
dXNlciBzcGFjZSAobGF0ZXIgcm91bmRlZCB0byBhbiBpbnRlZ3JhbCBudW1iZXIgaW4gZGV2aWNl
IHNwYWNlKS4KLSAgICAgICAgZmxvYXQgYWRqdXN0ZWRUaGlja25lc3MgPSBtYXgodGhpY2tuZXNz
LCAxLjBmKTsKLQotICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZG9uZSBhIGJldHRl
ciB3YXkuCi0gICAgICAgIC8vIFdlIHRyeSB0byByb3VuZCBhbGwgcGFyYW1ldGVycyB0byBpbnRl
Z2VyIGJvdW5kYXJpZXMgaW4gZGV2aWNlIHNwYWNlLiBJZiByb3VuZGluZyBwaXhlbHMgaW4gZGV2
aWNlIHNwYWNlCi0gICAgICAgIC8vIG1ha2VzIG91ciB0aGlja25lc3MgbW9yZSB0aGFuIGRvdWJs
ZSwgdGhlbiB0aGVyZSBtdXN0IGJlIGEgc2hyaW5raW5nLXNjYWxlIGZhY3RvciBhbmQgcm91bmRp
bmcgdG8gcGl4ZWxzCi0gICAgICAgIC8vIGluIGRldmljZSBzcGFjZSB3aWxsIG1ha2UgdGhlIHVu
ZGVybGluZXMgdG9vIHRoaWNrLgotICAgICAgICBDR1JlY3QgbGluZVJlY3QgPSByb3VuZFRvRGV2
aWNlUGl4ZWxzKEZsb2F0UmVjdCh4LCB5LCBsaW5lTGVuZ3RoLCBhZGp1c3RlZFRoaWNrbmVzcyks
IFJvdW5kQWxsU2lkZXMpOwotICAgICAgICBpZiAobGluZVJlY3Quc2l6ZS5oZWlnaHQgPCB0aGlj
a25lc3MgKiAyLjApIHsKLSAgICAgICAgICAgIHggPSBsaW5lUmVjdC5vcmlnaW4ueDsKLSAgICAg
ICAgICAgIHkgPSBsaW5lUmVjdC5vcmlnaW4ueTsKLSAgICAgICAgICAgIGxpbmVMZW5ndGggPSBs
aW5lUmVjdC5zaXplLndpZHRoOwotICAgICAgICAgICAgdGhpY2tuZXNzID0gbGluZVJlY3Quc2l6
ZS5oZWlnaHQ7Ci0gICAgICAgICAgICBpZiAoc2hvdWxkQW50aWFsaWFzKCkpIHsKLSAgICAgICAg
ICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRBbnRpYWxpYXMocGxhdGZvcm1Db250ZXh0KCksIGZh
bHNlKTsKLSAgICAgICAgICAgICAgICByZXN0b3JlQW50aWFsaWFzTW9kZSA9IHRydWU7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBpZiAoZmlsbENvbG9yKCkgIT0gc3Ry
b2tlQ29sb3IoKSkKICAgICAgICAgc2V0Q0dGaWxsQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIHN0
cm9rZUNvbG9yKCksIHN0cm9rZUNvbG9yU3BhY2UoKSk7Ci0gICAgQ0dDb250ZXh0RmlsbFJlY3Qo
cGxhdGZvcm1Db250ZXh0KCksIENHUmVjdE1ha2UoeCwgeSwgbGluZUxlbmd0aCwgdGhpY2tuZXNz
KSk7CisgICAgQ0dDb250ZXh0RmlsbFJlY3QocGxhdGZvcm1Db250ZXh0KCksIENHUmVjdE1ha2Uo
Ym91bmRzLmxvY2F0aW9uKCkueCgpLCBib3VuZHMubG9jYXRpb24oKS55KCksIGJvdW5kcy53aWR0
aCgpLCBib3VuZHMuaGVpZ2h0KCkpKTsKICAgICBpZiAoZmlsbENvbG9yKCkgIT0gc3Ryb2tlQ29s
b3IoKSkKICAgICAgICAgc2V0Q0dGaWxsQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIGZpbGxDb2xv
cigpLCBmaWxsQ29sb3JTcGFjZSgpKTsKLQotICAgIGlmIChyZXN0b3JlQW50aWFsaWFzTW9kZSkK
LSAgICAgICAgQ0dDb250ZXh0U2V0U2hvdWxkQW50aWFsaWFzKHBsYXRmb3JtQ29udGV4dCgpLCB0
cnVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QoY29uc3QgVVJM
JiBsaW5rLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNF
LmNwcAppbmRleCAxZmYzZmFlMWFkOTMyNTA1MDRkYWVhYjU3NzQwYWYxZjc4YTY4MWNmLi4xNTdm
YWU0OGE3OWRkMzNiMGUyNzg2MWMyMzg5M2FhNGRmOGIxZjk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250
ZXh0V2luQ0UuY3BwCkBAIC05NTAsMTQgKzk1MCwxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQgd2lkdGgsIGlu
dAogICAgIERyYXdGb2N1c1JlY3QoZGMsICZyZWN0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdMaW5lRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBvcmlnaW4sIGZsb2F0IHdpZHRo
LCBib29sIHByaW50aW5nKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dChj
b25zdCBGbG9hdFJlY3QmIGJvdW5kcywgYm9vbCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJva2VTdHlsZSBvbGRTdHlsZSA9IHN0cm9r
ZVN0eWxlKCk7CiAgICAgc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIGRyYXdMaW5l
KHJvdW5kZWRJbnRQb2ludChvcmlnaW4pLCByb3VuZGVkSW50UG9pbnQob3JpZ2luICsgRmxvYXRT
aXplKHdpZHRoLCAwKSkpOworICAgIGRyYXdMaW5lKHJvdW5kZWRJbnRQb2ludChib3VuZHMubG9j
YXRpb24oKSksIHJvdW5kZWRJbnRQb2ludChib3VuZHMubG9jYXRpb24oKSArIEZsb2F0U2l6ZShi
b3VuZHMud2lkdGgoKSwgMCkpKTsKICAgICBzZXRTdHJva2VTdHlsZShvbGRTdHlsZSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCAzNDcwMzZk
NmQ3NzVjMWQ3MGJiYTdhMDc4ODc4NjhjNTcxMmQ3YTc4Li5iZWNkNzVmNzdjZTM0YTA1ZjI1YjE3
MzFhMzg2ZTA3YTdmMDE4ZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guY3BwCkBAIC02Niw2ICs2Niw0OCBAQCBDT01QSUxFX0FTU0VSVChzaXplb2YoSW5saW5l
VGV4dEJveCkgPT0gc2l6ZW9mKFNhbWVTaXplQXNJbmxpbmVUZXh0Qm94KSwgSW5saW5lVAogdHlw
ZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3QgSW5saW5lVGV4dEJveCosIExheW91dFJlY3Q+IElubGlu
ZVRleHRCb3hPdmVyZmxvd01hcDsKIHN0YXRpYyBJbmxpbmVUZXh0Qm94T3ZlcmZsb3dNYXAqIGdU
ZXh0Qm94ZXNXaXRoT3ZlcmZsb3c7CiAKK3N0YXRpYyBGbG9hdFJlY3QgY29tcHV0ZUJvdW5kc0Zv
clVuZGVybGluZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIHRv
cGxlZnQsIGZsb2F0IGxlbmd0aCwgYm9vbCBwcmludGluZywgYm9vbCYgc2hvdWxkQW50aWFsaWFz
KQoreworICAgIGZsb2F0IHRoaWNrbmVzcyA9IHN0ZDo6bWF4KGNvbnRleHQuc3Ryb2tlVGhpY2tu
ZXNzKCksIDAuNWYpOworICAgIAorICAgIEZsb2F0UmVjdCBib3VuZHModG9wbGVmdCwgRmxvYXRT
aXplKGxlbmd0aCwgdGhpY2tuZXNzKSk7CisKKyAgICBzaG91bGRBbnRpYWxpYXMgPSB0cnVlOwor
CisgICAgaWYgKCFwcmludGluZyAmJiAhY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkgJiYgY29u
dGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxl
KS5wcmVzZXJ2ZXNBeGlzQWxpZ25tZW50KCkpIHsKKyAgICAgICAgLy8gT24gc2NyZWVuLCB1c2Ug
YSBtaW5pbXVtIHRoaWNrbmVzcyBvZiAxLjAgaW4gdXNlciBzcGFjZSAobGF0ZXIgcm91bmRlZCB0
byBhbiBpbnRlZ3JhbCBudW1iZXIgaW4gZGV2aWNlIHNwYWNlKS4KKyAgICAgICAgRmxvYXRSZWN0
IGFkanVzdGVkQm91bmRzID0gYm91bmRzOworICAgICAgICBhZGp1c3RlZEJvdW5kcy5zZXRIZWln
aHQoc3RkOjptYXgodGhpY2tuZXNzLCAxLjBmKSk7CisKKyAgICAgICAgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIGJlIGRvbmUgYSBiZXR0ZXIgd2F5LgorICAgICAgICAvLyBXZSB0cnkgdG8gcm91bmQg
YWxsIHBhcmFtZXRlcnMgdG8gaW50ZWdlciBib3VuZGFyaWVzIGluIGRldmljZSBzcGFjZS4gSWYg
cm91bmRpbmcgcGl4ZWxzIGluIGRldmljZSBzcGFjZQorICAgICAgICAvLyBtYWtlcyBvdXIgdGhp
Y2tuZXNzIG1vcmUgdGhhbiBkb3VibGUsIHRoZW4gdGhlcmUgbXVzdCBiZSBhIHNocmlua2luZy1z
Y2FsZSBmYWN0b3IgYW5kIHJvdW5kaW5nIHRvIHBpeGVscworICAgICAgICAvLyBpbiBkZXZpY2Ug
c3BhY2Ugd2lsbCBtYWtlIHRoZSB1bmRlcmxpbmVzIHRvbyB0aGljay4KKyAgICAgICAgRmxvYXRS
ZWN0IGxpbmVSZWN0ID0gY29udGV4dC5yb3VuZFRvRGV2aWNlUGl4ZWxzKGFkanVzdGVkQm91bmRz
LCBHcmFwaGljc0NvbnRleHQ6OlJvdW5kQWxsU2lkZXMpOworICAgICAgICBpZiAobGluZVJlY3Qu
aGVpZ2h0KCkgPCB0aGlja25lc3MgKiAyLjApIHsKKyAgICAgICAgICAgIHNob3VsZEFudGlhbGlh
cyA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIGxpbmVSZWN0OworICAgICAgICB9CisgICAg
fQorICAgIAorICAgIHJldHVybiBib3VuZHM7Cit9CisKK3N0YXRpYyB2b2lkIGRyYXdMaW5lRm9y
VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIHRvcGxlZnQs
IGZsb2F0IHdpZHRoLCBib29sIHByaW50aW5nKQoreworICAgIGlmICh3aWR0aCA8PSAwKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgYm9vbCBzaG91bGRBbnRpYWxpYXM7CisgICAgCisgICAg
RmxvYXRSZWN0IHVuZGVybGluZUJvdW5kcyA9IGNvbXB1dGVCb3VuZHNGb3JVbmRlcmxpbmUoY29u
dGV4dCwgdG9wbGVmdCwgd2lkdGgsIHByaW50aW5nLCBzaG91bGRBbnRpYWxpYXMpOworICAgIAor
ICAgIGJvb2wgd2FzQW50aWFsaWFzaW5nID0gY29udGV4dC5zaG91bGRBbnRpYWxpYXMoKTsKKyAg
ICBjb250ZXh0LnNldFNob3VsZEFudGlhbGlhcyhzaG91bGRBbnRpYWxpYXMpOworICAgIGNvbnRl
eHQuZHJhd0xpbmVGb3JUZXh0KHVuZGVybGluZUJvdW5kcywgcHJpbnRpbmcpOworICAgIGNvbnRl
eHQuc2V0U2hvdWxkQW50aWFsaWFzKHdhc0FudGlhbGlhc2luZyk7Cit9CisKIHZvaWQgSW5saW5l
VGV4dEJveDo6ZGVzdHJveShSZW5kZXJBcmVuYSYgYXJlbmEpCiB7CiAgICAgaWYgKCFrbm93blRv
SGF2ZU5vT3ZlcmZsb3coKSAmJiBnVGV4dEJveGVzV2l0aE92ZXJmbG93KQpAQCAtMTExMCwxNCAr
MTE1MiwxNCBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmCiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGNv
bnRleHQtPmRyYXdMaW5lRm9yVGV4dChGbG9hdFBvaW50KGxvY2FsT3JpZ2luLngoKSwgbG9jYWxP
cmlnaW4ueSgpICsgdW5kZXJsaW5lT2Zmc2V0KSwgd2lkdGgsIGlzUHJpbnRpbmcpOworICAgICAg
ICAgICAgICAgIGRyYXdMaW5lRm9yVGV4dCgqY29udGV4dCwgRmxvYXRQb2ludChsb2NhbE9yaWdp
bi54KCksIGxvY2FsT3JpZ2luLnkoKSArIHVuZGVybGluZU9mZnNldCksIHdpZHRoLCBpc1ByaW50
aW5nKTsKIAogICAgICAgICAgICAgICAgIGlmIChkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29y
YXRpb25TdHlsZURvdWJsZSkKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0xpbmVG
b3JUZXh0KEZsb2F0UG9pbnQobG9jYWxPcmlnaW4ueCgpLCBsb2NhbE9yaWdpbi55KCkgKyB1bmRl
cmxpbmVPZmZzZXQgKyBkb3VibGVPZmZzZXQpLCB3aWR0aCwgaXNQcmludGluZyk7CisgICAgICAg
ICAgICAgICAgICAgIGRyYXdMaW5lRm9yVGV4dCgqY29udGV4dCwgRmxvYXRQb2ludChsb2NhbE9y
aWdpbi54KCksIGxvY2FsT3JpZ2luLnkoKSArIHVuZGVybGluZU9mZnNldCArIGRvdWJsZU9mZnNl
dCksIHdpZHRoLCBpc1ByaW50aW5nKTsKICAgICAgICAgICAgIH0KICNlbHNlCiAgICAgICAgICAg
ICAvLyBMZWF2ZSBvbmUgcGl4ZWwgb2Ygd2hpdGUgYmV0d2VlbiB0aGUgYmFzZWxpbmUgYW5kIHRo
ZSB1bmRlcmxpbmUuCi0gICAgICAgICAgICBjb250ZXh0LT5kcmF3TGluZUZvclRleHQoRmxvYXRQ
b2ludChsb2NhbE9yaWdpbi54KCksIGxvY2FsT3JpZ2luLnkoKSArIGJhc2VsaW5lICsgMSksIHdp
ZHRoLCBpc1ByaW50aW5nKTsKKyAgICAgICAgICAgIGRyYXdMaW5lRm9yVGV4dCgqY29udGV4dCwg
RmxvYXRQb2ludChsb2NhbE9yaWdpbi54KCksIGxvY2FsT3JpZ2luLnkoKSArIGJhc2VsaW5lICsg
MSksIHdpZHRoLCBpc1ByaW50aW5nKTsKICNlbmRpZiAvLyBDU1MzX1RFWFQKICAgICAgICAgfQog
ICAgICAgICBpZiAoZGVjbyAmIFRleHREZWNvcmF0aW9uT3ZlcmxpbmUpIHsKQEAgLTExMzIsMTAg
KzExNzQsMTAgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JgogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgZGVmYXVsdDoKICNlbmRpZiAvLyBDU1MzX1RFWFQKLSAgICAgICAgICAgICAgICBjb250
ZXh0LT5kcmF3TGluZUZvclRleHQobG9jYWxPcmlnaW4sIHdpZHRoLCBpc1ByaW50aW5nKTsKKyAg
ICAgICAgICAgICAgICBkcmF3TGluZUZvclRleHQoKmNvbnRleHQsIGxvY2FsT3JpZ2luLCB3aWR0
aCwgaXNQcmludGluZyk7CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICAgICAgICAgICAgICBp
ZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGUpCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdMaW5lRm9yVGV4dChGbG9hdFBvaW50KGxvY2FsT3Jp
Z2luLngoKSwgbG9jYWxPcmlnaW4ueSgpIC0gZG91YmxlT2Zmc2V0KSwgd2lkdGgsIGlzUHJpbnRp
bmcpOworICAgICAgICAgICAgICAgICAgICBkcmF3TGluZUZvclRleHQoKmNvbnRleHQsIEZsb2F0
UG9pbnQobG9jYWxPcmlnaW4ueCgpLCBsb2NhbE9yaWdpbi55KCkgLSBkb3VibGVPZmZzZXQpLCB3
aWR0aCwgaXNQcmludGluZyk7CiAgICAgICAgICAgICB9CiAjZW5kaWYgLy8gQ1NTM19URVhUCiAg
ICAgICAgIH0KQEAgLTExNTEsMTAgKzExOTMsMTAgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWlu
dERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50Jgog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgZGVmYXVsdDoKICNlbmRpZiAvLyBDU1MzX1RFWFQK
LSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3TGluZUZvclRleHQoRmxvYXRQb2ludChsb2Nh
bE9yaWdpbi54KCksIGxvY2FsT3JpZ2luLnkoKSArIDIgKiBiYXNlbGluZSAvIDMpLCB3aWR0aCwg
aXNQcmludGluZyk7CisgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JUZXh0KCpjb250ZXh0LCBG
bG9hdFBvaW50KGxvY2FsT3JpZ2luLngoKSwgbG9jYWxPcmlnaW4ueSgpICsgMiAqIGJhc2VsaW5l
IC8gMyksIHdpZHRoLCBpc1ByaW50aW5nKTsKICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgICAg
ICAgICAgICAgIGlmIChkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZURvdWJs
ZSkKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0xpbmVGb3JUZXh0KEZsb2F0UG9p
bnQobG9jYWxPcmlnaW4ueCgpLCBsb2NhbE9yaWdpbi55KCkgKyBkb3VibGVPZmZzZXQgKyAyICog
YmFzZWxpbmUgLyAzKSwgd2lkdGgsIGlzUHJpbnRpbmcpOworICAgICAgICAgICAgICAgICAgICBk
cmF3TGluZUZvclRleHQoKmNvbnRleHQsIEZsb2F0UG9pbnQobG9jYWxPcmlnaW4ueCgpLCBsb2Nh
bE9yaWdpbi55KCkgKyBkb3VibGVPZmZzZXQgKyAyICogYmFzZWxpbmUgLyAzKSwgd2lkdGgsIGlz
UHJpbnRpbmcpOwogICAgICAgICAgICAgfQogI2VuZGlmIC8vIENTUzNfVEVYVAogICAgICAgICB9
CkBAIC0xNDAyLDcgKzE0NDQsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRp
b25VbmRlcmxpbmUoR3JhcGhpY3NDb250ZXh0KiBjdHgsIGNvbnN0IEZsb2F0UAogCiAgICAgY3R4
LT5zZXRTdHJva2VDb2xvcih1bmRlcmxpbmUuY29sb3IsIHJlbmRlcmVyKCkuc3R5bGUoKS0+Y29s
b3JTcGFjZSgpKTsKICAgICBjdHgtPnNldFN0cm9rZVRoaWNrbmVzcyhsaW5lVGhpY2tuZXNzKTsK
LSAgICBjdHgtPmRyYXdMaW5lRm9yVGV4dChGbG9hdFBvaW50KGJveE9yaWdpbi54KCkgKyBzdGFy
dCwgYm94T3JpZ2luLnkoKSArIGxvZ2ljYWxIZWlnaHQoKSAtIGxpbmVUaGlja25lc3MpLCB3aWR0
aCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLnByaW50aW5nKCkpOworICAgIGRyYXdMaW5lRm9yVGV4
dCgqY3R4LCBGbG9hdFBvaW50KGJveE9yaWdpbi54KCkgKyBzdGFydCwgYm94T3JpZ2luLnkoKSAr
IGxvZ2ljYWxIZWlnaHQoKSAtIGxpbmVUaGlja25lc3MpLCB3aWR0aCwgcmVuZGVyZXIoKS5kb2N1
bWVudCgpLnByaW50aW5nKCkpOwogfQogCiBpbnQgSW5saW5lVGV4dEJveDo6Y2FyZXRNaW5PZmZz
ZXQoKSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215205</attachid>
            <date>2013-10-25 13:31:58 -0700</date>
            <delta_ts>2013-10-25 15:46:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123310-20131025133158.patch</filename>
            <type>text/plain</type>
            <size>15882</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3OTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYzOTRlMzgyMjI1ZDYz
OGNlNTFiMGQzYzZhZmMzNGJiNWM3YmUxYS4uYWY5NzE4MWQ3ZTQ2NDU4OTlkNTdjOWJmMmQxZDcy
ZmUyMTlhY2QzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEzLTEwLTI0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgVW5kZXJsaW5l
IGJvdW5kcyBjYW5ub3QgYmUgcXVlcmllZCBiZWZvcmUgdW5kZXJsaW5lIGl0c2VsZiBpcyBkcmF3
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMzEw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIEdyYXBoaWNz
Q29udGV4dCdzIGRyYXdMaW5lRm9yVGV4dCBmdW5jdGlvbiBpcyB1c2VkIHRvIGRyYXcgdW5kZXJs
aW5lcywKKyAgICAgICAgc3RyaWtldGhyb3VnaHMsIGFuZCBvdmVybGluZXMuIEJlZm9yZSBkcmF3
aW5nIHRoZSBsaW5lLCB0aGlzIGZ1bmN0aW9uCisgICAgICAgIG1vZGlmaWVzIHRoZSBib3VuZHMg
Z2l2ZW4gdG8gaXQgaW4gb3JkZXIgdG8gbWFrZSB1bmRlcmxpbmVzIGNyaXNwLiBIb3dldmVyLCAg
CisgICAgICAgIHRoaXMgbWVhbnMgdGhhdCBpdCBpcyBpbXBvc3NpYmxlIHRvIGtub3cgd2hlcmUg
YW4gdW5kZXJsaW5lIHdpbGwgYmUgZHJhd24KKyAgICAgICAgYmVmb3JlIGRyYXdpbmcgaXQuIFRo
aXMgcGF0Y2ggcHVsbHMgb3V0IHRoaXMgYWRqdXN0bWVudCBjb21wdXRhdGlvbiBpbnRvCisgICAg
ICAgIElubGluZVRleHRCb3gsIHRoZW4gcGFzc2VzIHRoZSByZXN1bHQgdG8gZHJhd0xpbmVGb3JU
ZXh0LgorCisgICAgICAgIEJlY2F1c2UgdGhlcmUgc2hvdWxkIGJlIG5vIG9ic2VydmFibGUgZGlm
ZmVyZW5jZSwgbm8gdGVzdHMgbmVlZCB0byBiZSB1cGRhdGVkLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6IENoYW5naW5nIHRoZSBzaWduYXR1cmUgb2Yg
ZHJhd0xpbmVGb3JUZXh0CisgICAgICAgIHNvIGl0IGNhbiBhY2NlcHQgYm91bmRzIGZyb20gb3Vy
IGhlbHBlciBmdW5jdGlvbgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
UGF0aEJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpk
cmF3TGluZUZvclRleHQpOiBVcGRhdGUgdG8gd29yayB3aXRoIG5ldworICAgICAgICBzaWduYXR1
cmUgb2YgZHJhd0xpbmVGb3JUZXh0CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3TGluZUZvclRleHQpOiBVcGRhdGUgdG8gd29yayB3aXRoIG5ldworICAgICAgICBz
aWduYXR1cmUgb2YgZHJhd0xpbmVGb3JUZXh0CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3TGluZUZvclRleHQpOiBVcGRhdGUgdG8gd29yayB3aXRoIG5ldworICAgICAgICBz
aWduYXR1cmUgb2YgZHJhd0xpbmVGb3JUZXh0CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQpOiBVcGRhdGUgdG8gd29yayB3aXRoIG5ldworICAg
ICAgICBzaWduYXR1cmUgb2YgZHJhd0xpbmVGb3JUZXh0CisgICAgICAgICogcmVuZGVyaW5nL0lu
bGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUJvdW5kc0ZvclVuZGVy
bGluZSk6IFB1cmUgZnVuY3Rpb24gdGhhdCBjb21wdXRlcyB0aGUgYWRqdXN0ZWQKKyAgICAgICAg
Ym91bmRzIG9mIHRoZSB1bmRlcmxpbmUgYWJvdXQgdG8gYmUgZHJhd24KKyAgICAgICAgKFdlYkNv
cmU6OmRyYXdMaW5lRm9yVGV4dCk6IGNhbGxzIGNvbXB1dGVCb3VuZHNGb3JVbmRlcmxpbmUgYW5k
IHRoZW4KKyAgICAgICAgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbik6IFVzZSBuZXcgZHJhd0xp
bmVGb3JUZXh0IGZ1bmN0aW9uCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWlu
dENvbXBvc2l0aW9uVW5kZXJsaW5lKTogVXNlIG5ldyBkcmF3TGluZUZvclRleHQKKyAgICAgICAg
ZnVuY3Rpb24KKwogMjAxMy0xMC0yNCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgVW5jb21wbGljYXRlIHNvbWUgb2YgU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRl
eHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCmluZGV4IGMzMDhjYmQwYjdkODU0ZjNkOGViMGJlZmQzYTlmM2Y0ZDRhNzk3YTguLjAz
OWVlZmYxNzE2NTI3ZDM2NGM5ZGVkY2E4MTM1YTM2MGM0YzZjNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0zMzAsNyAr
MzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9OwogICAgICAgICBGbG9hdFJl
Y3Qgcm91bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3QmLCBSb3VuZGluZ01vZGUgPSBS
b3VuZEFsbFNpZGVzKTsKIAotICAgICAgICB2b2lkIGRyYXdMaW5lRm9yVGV4dChjb25zdCBGbG9h
dFBvaW50JiwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcpOworICAgICAgICB2b2lkIGRyYXdM
aW5lRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmIGJvdW5kcywgYm9vbCBwcmludGluZyk7CiAgICAg
ICAgIGVudW0gRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUgewogICAgICAgICAgICAgRG9jdW1lbnRN
YXJrZXJTcGVsbGluZ0xpbmVTdHlsZSwKICAgICAgICAgICAgIERvY3VtZW50TWFya2VyR3JhbW1h
ckxpbmVTdHlsZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvUGF0aEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9QYXRoQmxhY2tCZXJyeS5jcHAKaW5kZXggMTk4NmIzZmUwNjFh
YjhjM2VkMjU2ZGU3NTg1NDQ2NjhjMWFkOGM5Yi4uOWY2OTkxNzZiNWI2NzZmMjE1YTY5ZDllNTBi
ODVkNjY1OGM1M2ViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9QYXRoQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9QYXRoQmxhY2tCZXJyeS5jcHAKQEAgLTI1NSw5ICsy
NTUsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JEb2N1bWVudE1hcmtlcihj
b25zdCBGbG9hdFBvaW50JiBwdCwgZmxvYXQgd2lkdAogICAgIHBsYXRmb3JtQ29udGV4dCgpLT5h
ZGREcmF3TGluZUZvckRvY3VtZW50TWFya2VyKHB0LCB3aWR0aCwgKEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpHcmFwaGljczo6RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUpc3R5bGUpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHB0LCBm
bG9hdCB3aWR0aCwgYm9vbCBwcmludGluZykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGlu
ZUZvclRleHQoY29uc3QgRmxvYXRSZWN0JiBib3VuZHMsIGJvb2wgcHJpbnRpbmcpCiB7Ci0gICAg
cGxhdGZvcm1Db250ZXh0KCktPmFkZERyYXdMaW5lRm9yVGV4dChwdCwgd2lkdGgsIHByaW50aW5n
KTsKKyAgICBwbGF0Zm9ybUNvbnRleHQoKS0+YWRkRHJhd0xpbmVGb3JUZXh0KGJvdW5kcy5sb2Nh
dGlvbiwgYm91bmRzLndpZHRoKCksIHByaW50aW5nKTsKIH0KIAogLy8gRklYTUU6IGRvbid0IGln
bm9yZSB0aGUgd2luZGluZyBydWxlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA3MDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggNzAzNjBlZDdl
Yzg3NTJlNjA0MmVmYmM0ZjM4ODcxOWY0ZjIxYzEwYS4uYTcxYjE0NWI0M2NkYTVhZDcyNjEyZjI0
ODFlYjE3OTRjOWVlMmJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtNjE0
LDcgKzYxNCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFZl
Y3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCB3aWR0aCwgaW50CiAgICAgY2Fpcm9fcmVzdG9yZShj
cik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQoY29uc3QgRmxv
YXRQb2ludCYgb3JpZ2luLCBmbG9hdCB3aWR0aCwgYm9vbCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3TGluZUZvclRleHQoY29uc3QgRmxvYXRSZWN0JiBib3VuZHMsIGJvb2wpCiB7CiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjIzLDE2ICs2MjMs
MTYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dChjb25zdCBGbG9hdFBv
aW50JiBvcmlnaW4sIGZsb2F0IHdpZHRoLCBib28KICAgICBjYWlyb19zYXZlKGNhaXJvQ29udGV4
dCk7CiAKICAgICAvLyBUaGlzIGJ1bXBpbmcgb2YgPDEgc3Ryb2tlIHRoaWNrbmVzc2VzIG1hdGNo
ZXMgdGhlIG9uZSBpbiBkcmF3TGluZU9uQ2Fpcm9Db250ZXh0LgotICAgIEZsb2F0UG9pbnQgZW5k
UG9pbnQob3JpZ2luICsgSW50U2l6ZSh3aWR0aCwgMCkpOwotICAgIEZsb2F0UmVjdCBsaW5lRXh0
ZW50cyhvcmlnaW4sIEZsb2F0U2l6ZSh3aWR0aCwgc3Ryb2tlVGhpY2tuZXNzKCkpKTsKKyAgICBG
bG9hdFBvaW50IGVuZFBvaW50KGJvdW5kcy5sb2NhdGlvbigpICsgSW50U2l6ZShib3VuZHMud2lk
dGgoKSwgMCkpOworICAgIEZsb2F0UmVjdCBsaW5lRXh0ZW50cyhib3VuZHMubG9jYXRpb24oKSwg
RmxvYXRTaXplKGJvdW5kcy53aWR0aCgpLCBzdHJva2VUaGlja25lc3MoKSkpOwogCiAgICAgU2hh
ZG93Qmx1ciYgc2hhZG93ID0gcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKTsKICAgICBp
ZiAoR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93LmJlZ2luU2hhZG93TGF5
ZXIodGhpcywgbGluZUV4dGVudHMpKSB7Ci0gICAgICAgIGRyYXdMaW5lT25DYWlyb0NvbnRleHQo
dGhpcywgc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIG9yaWdpbiwgZW5k
UG9pbnQpOworICAgICAgICBkcmF3TGluZU9uQ2Fpcm9Db250ZXh0KHRoaXMsIHNoYWRvd0NvbnRl
eHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBib3VuZHMubG9jYXRpb24oKSwgZW5kUG9pbnQp
OwogICAgICAgICBzaGFkb3cuZW5kU2hhZG93TGF5ZXIodGhpcyk7CiAgICAgfQogCi0gICAgZHJh
d0xpbmVPbkNhaXJvQ29udGV4dCh0aGlzLCBjYWlyb0NvbnRleHQsIG9yaWdpbiwgZW5kUG9pbnQp
OworICAgIGRyYXdMaW5lT25DYWlyb0NvbnRleHQodGhpcywgY2Fpcm9Db250ZXh0LCBib3VuZHMu
bG9jYXRpb24oKSwgZW5kUG9pbnQpOwogICAgIGNhaXJvX3Jlc3RvcmUoY2Fpcm9Db250ZXh0KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDFhOWM5MDU1ZTZjOTIwM2ZiNTQwMzk5MWJlYmI3
NGNlOTgzZWQ1NWMuLmU3NTI5M2QzN2Q4NTM4Y2EwYzliNjJmNGVkZGVjODNkYzExNzAwYjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAKQEAgLTEyMzUsNTMgKzEyMzUsMTYgQEAgRmxvYXRSZWN0IEdyYXBo
aWNzQ29udGV4dDo6cm91bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3QmIHJlY3QsIFJv
dW5kaW5nTW8KICAgICByZXR1cm4gRmxvYXRSZWN0KHJvdW5kZWRPcmlnaW4sIHJvdW5kZWRMb3dl
clJpZ2h0IC0gcm91bmRlZE9yaWdpbik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
TGluZUZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHdpZHRoLCBib29sIHBy
aW50aW5nKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dChjb25zdCBGbG9h
dFJlY3QmIGJvdW5kcywgYm9vbCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAod2lkdGggPD0gMCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZmxvYXQgeCA9IHBvaW50LngoKTsKLSAgICBmbG9hdCB5ID0gcG9pbnQueSgpOwotICAgIGZs
b2F0IGxpbmVMZW5ndGggPSB3aWR0aDsKLQotICAgIC8vIFVzZSBhIG1pbmltdW0gdGhpY2tuZXNz
IG9mIDAuNSBpbiB1c2VyIHNwYWNlLgotICAgIC8vIFNlZSBodHRwOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00MjU1IGZvciBkZXRhaWxzIG9mIHdoeSAwLjUgaXMgdGhlIHJpZ2h0
IG1pbmltdW0gdGhpY2tuZXNzIHRvIHVzZS4KLSAgICBmbG9hdCB0aGlja25lc3MgPSBtYXgoc3Ry
b2tlVGhpY2tuZXNzKCksIDAuNWYpOwotCi0gICAgYm9vbCByZXN0b3JlQW50aWFsaWFzTW9kZSA9
IGZhbHNlOwotCi0gICAgaWYgKCFwcmludGluZyAmJiBnZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpE
ZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKS5wcmVzZXJ2ZXNBeGlzQWxpZ25tZW50KCkpIHsK
LSAgICAgICAgLy8gT24gc2NyZWVuLCB1c2UgYSBtaW5pbXVtIHRoaWNrbmVzcyBvZiAxLjAgaW4g
dXNlciBzcGFjZSAobGF0ZXIgcm91bmRlZCB0byBhbiBpbnRlZ3JhbCBudW1iZXIgaW4gZGV2aWNl
IHNwYWNlKS4KLSAgICAgICAgZmxvYXQgYWRqdXN0ZWRUaGlja25lc3MgPSBtYXgodGhpY2tuZXNz
LCAxLjBmKTsKLQotICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZG9uZSBhIGJldHRl
ciB3YXkuCi0gICAgICAgIC8vIFdlIHRyeSB0byByb3VuZCBhbGwgcGFyYW1ldGVycyB0byBpbnRl
Z2VyIGJvdW5kYXJpZXMgaW4gZGV2aWNlIHNwYWNlLiBJZiByb3VuZGluZyBwaXhlbHMgaW4gZGV2
aWNlIHNwYWNlCi0gICAgICAgIC8vIG1ha2VzIG91ciB0aGlja25lc3MgbW9yZSB0aGFuIGRvdWJs
ZSwgdGhlbiB0aGVyZSBtdXN0IGJlIGEgc2hyaW5raW5nLXNjYWxlIGZhY3RvciBhbmQgcm91bmRp
bmcgdG8gcGl4ZWxzCi0gICAgICAgIC8vIGluIGRldmljZSBzcGFjZSB3aWxsIG1ha2UgdGhlIHVu
ZGVybGluZXMgdG9vIHRoaWNrLgotICAgICAgICBDR1JlY3QgbGluZVJlY3QgPSByb3VuZFRvRGV2
aWNlUGl4ZWxzKEZsb2F0UmVjdCh4LCB5LCBsaW5lTGVuZ3RoLCBhZGp1c3RlZFRoaWNrbmVzcyks
IFJvdW5kQWxsU2lkZXMpOwotICAgICAgICBpZiAobGluZVJlY3Quc2l6ZS5oZWlnaHQgPCB0aGlj
a25lc3MgKiAyLjApIHsKLSAgICAgICAgICAgIHggPSBsaW5lUmVjdC5vcmlnaW4ueDsKLSAgICAg
ICAgICAgIHkgPSBsaW5lUmVjdC5vcmlnaW4ueTsKLSAgICAgICAgICAgIGxpbmVMZW5ndGggPSBs
aW5lUmVjdC5zaXplLndpZHRoOwotICAgICAgICAgICAgdGhpY2tuZXNzID0gbGluZVJlY3Quc2l6
ZS5oZWlnaHQ7Ci0gICAgICAgICAgICBpZiAoc2hvdWxkQW50aWFsaWFzKCkpIHsKLSAgICAgICAg
ICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRBbnRpYWxpYXMocGxhdGZvcm1Db250ZXh0KCksIGZh
bHNlKTsKLSAgICAgICAgICAgICAgICByZXN0b3JlQW50aWFsaWFzTW9kZSA9IHRydWU7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBpZiAoZmlsbENvbG9yKCkgIT0gc3Ry
b2tlQ29sb3IoKSkKICAgICAgICAgc2V0Q0dGaWxsQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIHN0
cm9rZUNvbG9yKCksIHN0cm9rZUNvbG9yU3BhY2UoKSk7Ci0gICAgQ0dDb250ZXh0RmlsbFJlY3Qo
cGxhdGZvcm1Db250ZXh0KCksIENHUmVjdE1ha2UoeCwgeSwgbGluZUxlbmd0aCwgdGhpY2tuZXNz
KSk7CisgICAgQ0dDb250ZXh0RmlsbFJlY3QocGxhdGZvcm1Db250ZXh0KCksIENHUmVjdE1ha2Uo
Ym91bmRzLmxvY2F0aW9uKCkueCgpLCBib3VuZHMubG9jYXRpb24oKS55KCksIGJvdW5kcy53aWR0
aCgpLCBib3VuZHMuaGVpZ2h0KCkpKTsKICAgICBpZiAoZmlsbENvbG9yKCkgIT0gc3Ryb2tlQ29s
b3IoKSkKICAgICAgICAgc2V0Q0dGaWxsQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIGZpbGxDb2xv
cigpLCBmaWxsQ29sb3JTcGFjZSgpKTsKLQotICAgIGlmIChyZXN0b3JlQW50aWFsaWFzTW9kZSkK
LSAgICAgICAgQ0dDb250ZXh0U2V0U2hvdWxkQW50aWFsaWFzKHBsYXRmb3JtQ29udGV4dCgpLCB0
cnVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QoY29uc3QgVVJM
JiBsaW5rLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNF
LmNwcAppbmRleCAxZmYzZmFlMWFkOTMyNTA1MDRkYWVhYjU3NzQwYWYxZjc4YTY4MWNmLi4xNTdm
YWU0OGE3OWRkMzNiMGUyNzg2MWMyMzg5M2FhNGRmOGIxZjk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250
ZXh0V2luQ0UuY3BwCkBAIC05NTAsMTQgKzk1MCwxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQgd2lkdGgsIGlu
dAogICAgIERyYXdGb2N1c1JlY3QoZGMsICZyZWN0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdMaW5lRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBvcmlnaW4sIGZsb2F0IHdpZHRo
LCBib29sIHByaW50aW5nKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dChj
b25zdCBGbG9hdFJlY3QmIGJvdW5kcywgYm9vbCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJva2VTdHlsZSBvbGRTdHlsZSA9IHN0cm9r
ZVN0eWxlKCk7CiAgICAgc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIGRyYXdMaW5l
KHJvdW5kZWRJbnRQb2ludChvcmlnaW4pLCByb3VuZGVkSW50UG9pbnQob3JpZ2luICsgRmxvYXRT
aXplKHdpZHRoLCAwKSkpOworICAgIGRyYXdMaW5lKHJvdW5kZWRJbnRQb2ludChib3VuZHMubG9j
YXRpb24oKSksIHJvdW5kZWRJbnRQb2ludChib3VuZHMubG9jYXRpb24oKSArIEZsb2F0U2l6ZShi
b3VuZHMud2lkdGgoKSwgMCkpKTsKICAgICBzZXRTdHJva2VTdHlsZShvbGRTdHlsZSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCAzNDcwMzZk
NmQ3NzVjMWQ3MGJiYTdhMDc4ODc4NjhjNTcxMmQ3YTc4Li5kNzY5NDc0NzNmM2MzZWE0MGViMTA3
Y2UxYmZjMDZjOTJiYjlmZmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guY3BwCkBAIC02Niw2ICs2Niw0OSBAQCBDT01QSUxFX0FTU0VSVChzaXplb2YoSW5saW5l
VGV4dEJveCkgPT0gc2l6ZW9mKFNhbWVTaXplQXNJbmxpbmVUZXh0Qm94KSwgSW5saW5lVAogdHlw
ZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3QgSW5saW5lVGV4dEJveCosIExheW91dFJlY3Q+IElubGlu
ZVRleHRCb3hPdmVyZmxvd01hcDsKIHN0YXRpYyBJbmxpbmVUZXh0Qm94T3ZlcmZsb3dNYXAqIGdU
ZXh0Qm94ZXNXaXRoT3ZlcmZsb3c7CiAKK3N0YXRpYyBGbG9hdFJlY3QgY29tcHV0ZUJvdW5kc0Zv
clVuZGVybGluZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIHRv
cGxlZnQsIGZsb2F0IGxlbmd0aCwgYm9vbCBwcmludGluZywgYm9vbCYgc2hvdWxkQW50aWFsaWFz
KQoreworICAgIGZsb2F0IHRoaWNrbmVzcyA9IHN0ZDo6bWF4KGNvbnRleHQuc3Ryb2tlVGhpY2tu
ZXNzKCksIDAuNWYpOworICAgIAorICAgIEZsb2F0UmVjdCBib3VuZHModG9wbGVmdCwgRmxvYXRT
aXplKGxlbmd0aCwgdGhpY2tuZXNzKSk7CisKKyAgICBzaG91bGRBbnRpYWxpYXMgPSB0cnVlOwor
ICAgIAorICAgIGlmIChwcmludGluZyB8fCBjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSB8fCAh
Y29udGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNj
YWxlKS5wcmVzZXJ2ZXNBeGlzQWxpZ25tZW50KCkpCisgICAgICAgIHJldHVybiBib3VuZHM7CisK
KyAgICAvLyBPbiBzY3JlZW4sIHVzZSBhIG1pbmltdW0gdGhpY2tuZXNzIG9mIDEuMCBpbiB1c2Vy
IHNwYWNlIChsYXRlciByb3VuZGVkIHRvIGFuIGludGVncmFsIG51bWJlciBpbiBkZXZpY2Ugc3Bh
Y2UpLgorICAgIEZsb2F0UmVjdCBhZGp1c3RlZEJvdW5kcyA9IGJvdW5kczsKKyAgICBhZGp1c3Rl
ZEJvdW5kcy5zZXRIZWlnaHQoc3RkOjptYXgodGhpY2tuZXNzLCAxLjBmKSk7CisKKyAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgYmUgZG9uZSBhIGJldHRlciB3YXkuCisgICAgLy8gV2UgdHJ5IHRv
IHJvdW5kIGFsbCBwYXJhbWV0ZXJzIHRvIGludGVnZXIgYm91bmRhcmllcyBpbiBkZXZpY2Ugc3Bh
Y2UuIElmIHJvdW5kaW5nIHBpeGVscyBpbiBkZXZpY2Ugc3BhY2UKKyAgICAvLyBtYWtlcyBvdXIg
dGhpY2tuZXNzIG1vcmUgdGhhbiBkb3VibGUsIHRoZW4gdGhlcmUgbXVzdCBiZSBhIHNocmlua2lu
Zy1zY2FsZSBmYWN0b3IgYW5kIHJvdW5kaW5nIHRvIHBpeGVscworICAgIC8vIGluIGRldmljZSBz
cGFjZSB3aWxsIG1ha2UgdGhlIHVuZGVybGluZXMgdG9vIHRoaWNrLgorICAgIEZsb2F0UmVjdCBs
aW5lUmVjdCA9IGNvbnRleHQucm91bmRUb0RldmljZVBpeGVscyhhZGp1c3RlZEJvdW5kcywgR3Jh
cGhpY3NDb250ZXh0OjpSb3VuZEFsbFNpZGVzKTsKKyAgICBpZiAobGluZVJlY3QuaGVpZ2h0KCkg
PCB0aGlja25lc3MgKiAyLjApIHsKKyAgICAgICAgc2hvdWxkQW50aWFsaWFzID0gZmFsc2U7Cisg
ICAgICAgIHJldHVybiBsaW5lUmVjdDsKKyAgICB9CisKKyAgICByZXR1cm4gYm91bmRzOworfQor
CitzdGF0aWMgdm9pZCBkcmF3TGluZUZvclRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFBvaW50JiB0b3BsZWZ0LCBmbG9hdCB3aWR0aCwgYm9vbCBwcmludGluZykKK3sK
KyAgICBpZiAod2lkdGggPD0gMCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGJvb2wgc2hv
dWxkQW50aWFsaWFzOworICAgIAorICAgIEZsb2F0UmVjdCB1bmRlcmxpbmVCb3VuZHMgPSBjb21w
dXRlQm91bmRzRm9yVW5kZXJsaW5lKGNvbnRleHQsIHRvcGxlZnQsIHdpZHRoLCBwcmludGluZywg
c2hvdWxkQW50aWFsaWFzKTsKKyAgICAKKyAgICBib29sIHdhc0FudGlhbGlhc2luZyA9IGNvbnRl
eHQuc2hvdWxkQW50aWFsaWFzKCk7CisgICAgY29udGV4dC5zZXRTaG91bGRBbnRpYWxpYXMoc2hv
dWxkQW50aWFsaWFzKTsKKyAgICBjb250ZXh0LmRyYXdMaW5lRm9yVGV4dCh1bmRlcmxpbmVCb3Vu
ZHMsIHByaW50aW5nKTsKKyAgICBjb250ZXh0LnNldFNob3VsZEFudGlhbGlhcyh3YXNBbnRpYWxp
YXNpbmcpOworfQorCiB2b2lkIElubGluZVRleHRCb3g6OmRlc3Ryb3koUmVuZGVyQXJlbmEmIGFy
ZW5hKQogewogICAgIGlmICgha25vd25Ub0hhdmVOb092ZXJmbG93KCkgJiYgZ1RleHRCb3hlc1dp
dGhPdmVyZmxvdykKQEAgLTExMTAsMTQgKzExNTMsMTQgQEAgdm9pZCBJbmxpbmVUZXh0Qm94Ojpw
YWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50
JgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3TGluZUZvclRleHQoRmxvYXRQb2lu
dChsb2NhbE9yaWdpbi54KCksIGxvY2FsT3JpZ2luLnkoKSArIHVuZGVybGluZU9mZnNldCksIHdp
ZHRoLCBpc1ByaW50aW5nKTsKKyAgICAgICAgICAgICAgICBkcmF3TGluZUZvclRleHQoKmNvbnRl
eHQsIEZsb2F0UG9pbnQobG9jYWxPcmlnaW4ueCgpLCBsb2NhbE9yaWdpbi55KCkgKyB1bmRlcmxp
bmVPZmZzZXQpLCB3aWR0aCwgaXNQcmludGluZyk7CiAKICAgICAgICAgICAgICAgICBpZiAoZGVj
b3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGUpCi0gICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmRyYXdMaW5lRm9yVGV4dChGbG9hdFBvaW50KGxvY2FsT3JpZ2luLngo
KSwgbG9jYWxPcmlnaW4ueSgpICsgdW5kZXJsaW5lT2Zmc2V0ICsgZG91YmxlT2Zmc2V0KSwgd2lk
dGgsIGlzUHJpbnRpbmcpOworICAgICAgICAgICAgICAgICAgICBkcmF3TGluZUZvclRleHQoKmNv
bnRleHQsIEZsb2F0UG9pbnQobG9jYWxPcmlnaW4ueCgpLCBsb2NhbE9yaWdpbi55KCkgKyB1bmRl
cmxpbmVPZmZzZXQgKyBkb3VibGVPZmZzZXQpLCB3aWR0aCwgaXNQcmludGluZyk7CiAgICAgICAg
ICAgICB9CiAjZWxzZQogICAgICAgICAgICAgLy8gTGVhdmUgb25lIHBpeGVsIG9mIHdoaXRlIGJl
dHdlZW4gdGhlIGJhc2VsaW5lIGFuZCB0aGUgdW5kZXJsaW5lLgotICAgICAgICAgICAgY29udGV4
dC0+ZHJhd0xpbmVGb3JUZXh0KEZsb2F0UG9pbnQobG9jYWxPcmlnaW4ueCgpLCBsb2NhbE9yaWdp
bi55KCkgKyBiYXNlbGluZSArIDEpLCB3aWR0aCwgaXNQcmludGluZyk7CisgICAgICAgICAgICBk
cmF3TGluZUZvclRleHQoKmNvbnRleHQsIEZsb2F0UG9pbnQobG9jYWxPcmlnaW4ueCgpLCBsb2Nh
bE9yaWdpbi55KCkgKyBiYXNlbGluZSArIDEpLCB3aWR0aCwgaXNQcmludGluZyk7CiAjZW5kaWYg
Ly8gQ1NTM19URVhUCiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlY28gJiBUZXh0RGVjb3JhdGlv
bk92ZXJsaW5lKSB7CkBAIC0xMTMyLDEwICsxMTc1LDEwIEBAIHZvaWQgSW5saW5lVGV4dEJveDo6
cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRQb2lu
dCYKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRlZmF1bHQ6CiAjZW5kaWYgLy8gQ1NTM19U
RVhUCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0xpbmVGb3JUZXh0KGxvY2FsT3JpZ2lu
LCB3aWR0aCwgaXNQcmludGluZyk7CisgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JUZXh0KCpj
b250ZXh0LCBsb2NhbE9yaWdpbiwgd2lkdGgsIGlzUHJpbnRpbmcpOwogI2lmIEVOQUJMRShDU1Mz
X1RFWFQpCiAgICAgICAgICAgICAgICAgaWYgKGRlY29yYXRpb25TdHlsZSA9PSBUZXh0RGVjb3Jh
dGlvblN0eWxlRG91YmxlKQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3TGluZUZv
clRleHQoRmxvYXRQb2ludChsb2NhbE9yaWdpbi54KCksIGxvY2FsT3JpZ2luLnkoKSAtIGRvdWJs
ZU9mZnNldCksIHdpZHRoLCBpc1ByaW50aW5nKTsKKyAgICAgICAgICAgICAgICAgICAgZHJhd0xp
bmVGb3JUZXh0KCpjb250ZXh0LCBGbG9hdFBvaW50KGxvY2FsT3JpZ2luLngoKSwgbG9jYWxPcmln
aW4ueSgpIC0gZG91YmxlT2Zmc2V0KSwgd2lkdGgsIGlzUHJpbnRpbmcpOwogICAgICAgICAgICAg
fQogI2VuZGlmIC8vIENTUzNfVEVYVAogICAgICAgICB9CkBAIC0xMTUxLDEwICsxMTk0LDEwIEBA
IHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRQb2ludCYKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRlZmF1
bHQ6CiAjZW5kaWYgLy8gQ1NTM19URVhUCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0xp
bmVGb3JUZXh0KEZsb2F0UG9pbnQobG9jYWxPcmlnaW4ueCgpLCBsb2NhbE9yaWdpbi55KCkgKyAy
ICogYmFzZWxpbmUgLyAzKSwgd2lkdGgsIGlzUHJpbnRpbmcpOworICAgICAgICAgICAgICAgIGRy
YXdMaW5lRm9yVGV4dCgqY29udGV4dCwgRmxvYXRQb2ludChsb2NhbE9yaWdpbi54KCksIGxvY2Fs
T3JpZ2luLnkoKSArIDIgKiBiYXNlbGluZSAvIDMpLCB3aWR0aCwgaXNQcmludGluZyk7CiAjaWYg
RU5BQkxFKENTUzNfVEVYVCkKICAgICAgICAgICAgICAgICBpZiAoZGVjb3JhdGlvblN0eWxlID09
IFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGUpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PmRyYXdMaW5lRm9yVGV4dChGbG9hdFBvaW50KGxvY2FsT3JpZ2luLngoKSwgbG9jYWxPcmlnaW4u
eSgpICsgZG91YmxlT2Zmc2V0ICsgMiAqIGJhc2VsaW5lIC8gMyksIHdpZHRoLCBpc1ByaW50aW5n
KTsKKyAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JUZXh0KCpjb250ZXh0LCBGbG9hdFBv
aW50KGxvY2FsT3JpZ2luLngoKSwgbG9jYWxPcmlnaW4ueSgpICsgZG91YmxlT2Zmc2V0ICsgMiAq
IGJhc2VsaW5lIC8gMyksIHdpZHRoLCBpc1ByaW50aW5nKTsKICAgICAgICAgICAgIH0KICNlbmRp
ZiAvLyBDU1MzX1RFWFQKICAgICAgICAgfQpAQCAtMTQwMiw3ICsxNDQ1LDcgQEAgdm9pZCBJbmxp
bmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uVW5kZXJsaW5lKEdyYXBoaWNzQ29udGV4dCogY3R4
LCBjb25zdCBGbG9hdFAKIAogICAgIGN0eC0+c2V0U3Ryb2tlQ29sb3IodW5kZXJsaW5lLmNvbG9y
LCByZW5kZXJlcigpLnN0eWxlKCktPmNvbG9yU3BhY2UoKSk7CiAgICAgY3R4LT5zZXRTdHJva2VU
aGlja25lc3MobGluZVRoaWNrbmVzcyk7Ci0gICAgY3R4LT5kcmF3TGluZUZvclRleHQoRmxvYXRQ
b2ludChib3hPcmlnaW4ueCgpICsgc3RhcnQsIGJveE9yaWdpbi55KCkgKyBsb2dpY2FsSGVpZ2h0
KCkgLSBsaW5lVGhpY2tuZXNzKSwgd2lkdGgsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5wcmludGlu
ZygpKTsKKyAgICBkcmF3TGluZUZvclRleHQoKmN0eCwgRmxvYXRQb2ludChib3hPcmlnaW4ueCgp
ICsgc3RhcnQsIGJveE9yaWdpbi55KCkgKyBsb2dpY2FsSGVpZ2h0KCkgLSBsaW5lVGhpY2tuZXNz
KSwgd2lkdGgsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5wcmludGluZygpKTsKIH0KIAogaW50IElu
bGluZVRleHRCb3g6OmNhcmV0TWluT2Zmc2V0KCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215223</attachid>
            <date>2013-10-25 15:46:53 -0700</date>
            <delta_ts>2013-10-29 15:01:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123310-20131025154652.patch</filename>
            <type>text/plain</type>
            <size>15940</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4MDYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTI4YjQ2ZjJlZDJlYTk3
ZWU1ZDBmZmY1ZjQ1ODE4NTA4MTdhN2I4Mi4uODI2NThjZjQ2ODIyYjBiY2NkN2E4MTJhZDI1MWUy
M2IyMDcxZmUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEzLTEwLTI0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgVW5kZXJsaW5l
IGJvdW5kcyBjYW5ub3QgYmUgcXVlcmllZCBiZWZvcmUgdW5kZXJsaW5lIGl0c2VsZiBpcyBkcmF3
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMzEw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIEdyYXBoaWNz
Q29udGV4dCdzIGRyYXdMaW5lRm9yVGV4dCBmdW5jdGlvbiBpcyB1c2VkIHRvIGRyYXcgdW5kZXJs
aW5lcywKKyAgICAgICAgc3RyaWtldGhyb3VnaHMsIGFuZCBvdmVybGluZXMuIEJlZm9yZSBkcmF3
aW5nIHRoZSBsaW5lLCB0aGlzIGZ1bmN0aW9uCisgICAgICAgIG1vZGlmaWVzIHRoZSBib3VuZHMg
Z2l2ZW4gdG8gaXQgaW4gb3JkZXIgdG8gbWFrZSB1bmRlcmxpbmVzIGNyaXNwLiBIb3dldmVyLCAg
CisgICAgICAgIHRoaXMgbWVhbnMgdGhhdCBpdCBpcyBpbXBvc3NpYmxlIHRvIGtub3cgd2hlcmUg
YW4gdW5kZXJsaW5lIHdpbGwgYmUgZHJhd24KKyAgICAgICAgYmVmb3JlIGRyYXdpbmcgaXQuIFRo
aXMgcGF0Y2ggcHVsbHMgb3V0IHRoaXMgYWRqdXN0bWVudCBjb21wdXRhdGlvbiBpbnRvCisgICAg
ICAgIElubGluZVRleHRCb3gsIHRoZW4gcGFzc2VzIHRoZSByZXN1bHQgdG8gZHJhd0xpbmVGb3JU
ZXh0LgorCisgICAgICAgIEJlY2F1c2UgdGhlcmUgc2hvdWxkIGJlIG5vIG9ic2VydmFibGUgZGlm
ZmVyZW5jZSwgbm8gdGVzdHMgbmVlZCB0byBiZSB1cGRhdGVkLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6IENoYW5naW5nIHRoZSBzaWduYXR1cmUgb2Yg
ZHJhd0xpbmVGb3JUZXh0CisgICAgICAgIHNvIGl0IGNhbiBhY2NlcHQgYm91bmRzIGZyb20gb3Vy
IGhlbHBlciBmdW5jdGlvbgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
UGF0aEJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpk
cmF3TGluZUZvclRleHQpOiBVcGRhdGUgdG8gd29yayB3aXRoIG5ldworICAgICAgICBzaWduYXR1
cmUgb2YgZHJhd0xpbmVGb3JUZXh0CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3TGluZUZvclRleHQpOiBVcGRhdGUgdG8gd29yayB3aXRoIG5ldworICAgICAgICBz
aWduYXR1cmUgb2YgZHJhd0xpbmVGb3JUZXh0CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3TGluZUZvclRleHQpOiBVcGRhdGUgdG8gd29yayB3aXRoIG5ldworICAgICAgICBz
aWduYXR1cmUgb2YgZHJhd0xpbmVGb3JUZXh0CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQpOiBVcGRhdGUgdG8gd29yayB3aXRoIG5ldworICAg
ICAgICBzaWduYXR1cmUgb2YgZHJhd0xpbmVGb3JUZXh0CisgICAgICAgICogcmVuZGVyaW5nL0lu
bGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUJvdW5kc0ZvclVuZGVy
bGluZSk6IFB1cmUgZnVuY3Rpb24gdGhhdCBjb21wdXRlcyB0aGUgYWRqdXN0ZWQKKyAgICAgICAg
Ym91bmRzIG9mIHRoZSB1bmRlcmxpbmUgYWJvdXQgdG8gYmUgZHJhd24KKyAgICAgICAgKFdlYkNv
cmU6OmRyYXdMaW5lRm9yVGV4dCk6IGNhbGxzIGNvbXB1dGVCb3VuZHNGb3JVbmRlcmxpbmUgYW5k
IHRoZW4KKyAgICAgICAgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbik6IFVzZSBuZXcgZHJhd0xp
bmVGb3JUZXh0IGZ1bmN0aW9uCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWlu
dENvbXBvc2l0aW9uVW5kZXJsaW5lKTogVXNlIG5ldyBkcmF3TGluZUZvclRleHQKKyAgICAgICAg
ZnVuY3Rpb24KKwogMjAxMy0xMC0yNSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgRGF0YWJhc2VNYW5hZ2VyJ3MgUHJvcG9zZWREYXRhYmFzZXMgbmVlZCB0byBiZSB0
aHJlYWQtc2FmZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKaW5kZXggYzMwOGNiZDBiN2Q4NTRmM2Q4ZWIwYmVmZDNhOWYzZjRkNGE3
OTdhOC4uMDM5ZWVmZjE3MTY1MjdkMzY0YzlkZWRjYTgxMzVhMzYwYzRjNmM3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAg
LTMzMCw3ICszMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH07CiAgICAgICAg
IEZsb2F0UmVjdCByb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYsIFJvdW5kaW5n
TW9kZSA9IFJvdW5kQWxsU2lkZXMpOwogCi0gICAgICAgIHZvaWQgZHJhd0xpbmVGb3JUZXh0KGNv
bnN0IEZsb2F0UG9pbnQmLCBmbG9hdCB3aWR0aCwgYm9vbCBwcmludGluZyk7CisgICAgICAgIHZv
aWQgZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYgYm91bmRzLCBib29sIHByaW50aW5n
KTsKICAgICAgICAgZW51bSBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSB7CiAgICAgICAgICAgICBE
b2N1bWVudE1hcmtlclNwZWxsaW5nTGluZVN0eWxlLAogICAgICAgICAgICAgRG9jdW1lbnRNYXJr
ZXJHcmFtbWFyTGluZVN0eWxlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9QYXRoQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1BhdGhCbGFja0JlcnJ5LmNwcAppbmRleCBhYzZk
NmJhNjRkZmZjYTBhMTU2ZmFmODAwYjk3Y2RkZGQ4OWQ1NGU2Li5mYWVjNjhiZGU1Y2M2NmZmMjEx
ZmZlYTcxNThiNDM0ZTQ0NmY5NzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L1BhdGhCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1BhdGhCbGFja0JlcnJ5LmNwcApAQCAt
MjYzLDEyICsyNjMsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yRG9jdW1l
bnRNYXJrZXIoY29uc3QgRmxvYXRQb2ludCYgcHQsIGZsb2F0IHdpZHQKICAgICBwbGF0Zm9ybUNv
bnRleHQoKS0+YWRkRHJhd0xpbmVGb3JEb2N1bWVudE1hcmtlcihwdCwgd2lkdGgsIChCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkRvY3VtZW50TWFya2VyTGluZVN0eWxlKXN0eWxlKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dChjb25zdCBGbG9hdFBv
aW50JiBwdCwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYgYm91bmRzLCBib29sIHByaW50aW5n
KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHBsYXRmb3JtQ29udGV4dCgpLT5hZGREcmF3TGluZUZvclRleHQocHQsIHdpZHRoLCBwcmludGlu
Zyk7CisgICAgcGxhdGZvcm1Db250ZXh0KCktPmFkZERyYXdMaW5lRm9yVGV4dChib3VuZHMubG9j
YXRpb24sIGJvdW5kcy53aWR0aCgpLCBwcmludGluZyk7CiB9CiAKIC8vIEZJWE1FOiBkb24ndCBp
Z25vcmUgdGhlIHdpbmRpbmcgcnVsZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwNzA2NApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IDcwMzYwZWQ3
ZWM4NzUyZTYwNDJlZmJjNGYzODg3MTlmNGYyMWMxMGEuLmE3MWIxNDViNDNjZGE1YWQ3MjYxMmYy
NDgxZWIxNzk0YzllZTJiYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTYx
NCw3ICs2MTQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBW
ZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQgd2lkdGgsIGludAogICAgIGNhaXJvX3Jlc3RvcmUo
Y3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZs
b2F0UG9pbnQmIG9yaWdpbiwgZmxvYXQgd2lkdGgsIGJvb2wpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYgYm91bmRzLCBib29sKQogewogICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTYyMywxNiArNjIz
LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQoY29uc3QgRmxvYXRQ
b2ludCYgb3JpZ2luLCBmbG9hdCB3aWR0aCwgYm9vCiAgICAgY2Fpcm9fc2F2ZShjYWlyb0NvbnRl
eHQpOwogCiAgICAgLy8gVGhpcyBidW1waW5nIG9mIDwxIHN0cm9rZSB0aGlja25lc3NlcyBtYXRj
aGVzIHRoZSBvbmUgaW4gZHJhd0xpbmVPbkNhaXJvQ29udGV4dC4KLSAgICBGbG9hdFBvaW50IGVu
ZFBvaW50KG9yaWdpbiArIEludFNpemUod2lkdGgsIDApKTsKLSAgICBGbG9hdFJlY3QgbGluZUV4
dGVudHMob3JpZ2luLCBGbG9hdFNpemUod2lkdGgsIHN0cm9rZVRoaWNrbmVzcygpKSk7CisgICAg
RmxvYXRQb2ludCBlbmRQb2ludChib3VuZHMubG9jYXRpb24oKSArIEludFNpemUoYm91bmRzLndp
ZHRoKCksIDApKTsKKyAgICBGbG9hdFJlY3QgbGluZUV4dGVudHMoYm91bmRzLmxvY2F0aW9uKCks
IEZsb2F0U2l6ZShib3VuZHMud2lkdGgoKSwgc3Ryb2tlVGhpY2tuZXNzKCkpKTsKIAogICAgIFNo
YWRvd0JsdXImIHNoYWRvdyA9IHBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVyKCk7CiAgICAg
aWYgKEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy5iZWdpblNoYWRvd0xh
eWVyKHRoaXMsIGxpbmVFeHRlbnRzKSkgewotICAgICAgICBkcmF3TGluZU9uQ2Fpcm9Db250ZXh0
KHRoaXMsIHNoYWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBvcmlnaW4sIGVu
ZFBvaW50KTsKKyAgICAgICAgZHJhd0xpbmVPbkNhaXJvQ29udGV4dCh0aGlzLCBzaGFkb3dDb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgYm91bmRzLmxvY2F0aW9uKCksIGVuZFBvaW50
KTsKICAgICAgICAgc2hhZG93LmVuZFNoYWRvd0xheWVyKHRoaXMpOwogICAgIH0KIAotICAgIGRy
YXdMaW5lT25DYWlyb0NvbnRleHQodGhpcywgY2Fpcm9Db250ZXh0LCBvcmlnaW4sIGVuZFBvaW50
KTsKKyAgICBkcmF3TGluZU9uQ2Fpcm9Db250ZXh0KHRoaXMsIGNhaXJvQ29udGV4dCwgYm91bmRz
LmxvY2F0aW9uKCksIGVuZFBvaW50KTsKICAgICBjYWlyb19yZXN0b3JlKGNhaXJvQ29udGV4dCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCAxYTljOTA1NWU2YzkyMDNmYjU0MDM5OTFiZWJi
NzRjZTk4M2VkNTVjLi5lNzUyOTNkMzdkODUzOGNhMGM5YjYyZjRlZGRlYzgzZGMxMTcwMGI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0xMjM1LDUzICsxMjM1LDE2IEBAIEZsb2F0UmVjdCBHcmFw
aGljc0NvbnRleHQ6OnJvdW5kVG9EZXZpY2VQaXhlbHMoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBS
b3VuZGluZ01vCiAgICAgcmV0dXJuIEZsb2F0UmVjdChyb3VuZGVkT3JpZ2luLCByb3VuZGVkTG93
ZXJSaWdodCAtIHJvdW5kZWRPcmlnaW4pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCB3aWR0aCwgYm9vbCBw
cmludGluZykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQoY29uc3QgRmxv
YXRSZWN0JiBib3VuZHMsIGJvb2wpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHdpZHRoIDw9IDApCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGZsb2F0IHggPSBwb2ludC54KCk7Ci0gICAgZmxvYXQgeSA9IHBvaW50LnkoKTsKLSAgICBm
bG9hdCBsaW5lTGVuZ3RoID0gd2lkdGg7Ci0KLSAgICAvLyBVc2UgYSBtaW5pbXVtIHRoaWNrbmVz
cyBvZiAwLjUgaW4gdXNlciBzcGFjZS4KLSAgICAvLyBTZWUgaHR0cDovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDI1NSBmb3IgZGV0YWlscyBvZiB3aHkgMC41IGlzIHRoZSByaWdo
dCBtaW5pbXVtIHRoaWNrbmVzcyB0byB1c2UuCi0gICAgZmxvYXQgdGhpY2tuZXNzID0gbWF4KHN0
cm9rZVRoaWNrbmVzcygpLCAwLjVmKTsKLQotICAgIGJvb2wgcmVzdG9yZUFudGlhbGlhc01vZGUg
PSBmYWxzZTsKLQotICAgIGlmICghcHJpbnRpbmcgJiYgZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6
RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSkucHJlc2VydmVzQXhpc0FsaWdubWVudCgpKSB7
Ci0gICAgICAgIC8vIE9uIHNjcmVlbiwgdXNlIGEgbWluaW11bSB0aGlja25lc3Mgb2YgMS4wIGlu
IHVzZXIgc3BhY2UgKGxhdGVyIHJvdW5kZWQgdG8gYW4gaW50ZWdyYWwgbnVtYmVyIGluIGRldmlj
ZSBzcGFjZSkuCi0gICAgICAgIGZsb2F0IGFkanVzdGVkVGhpY2tuZXNzID0gbWF4KHRoaWNrbmVz
cywgMS4wZik7Ci0KLSAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRvbmUgYSBiZXR0
ZXIgd2F5LgotICAgICAgICAvLyBXZSB0cnkgdG8gcm91bmQgYWxsIHBhcmFtZXRlcnMgdG8gaW50
ZWdlciBib3VuZGFyaWVzIGluIGRldmljZSBzcGFjZS4gSWYgcm91bmRpbmcgcGl4ZWxzIGluIGRl
dmljZSBzcGFjZQotICAgICAgICAvLyBtYWtlcyBvdXIgdGhpY2tuZXNzIG1vcmUgdGhhbiBkb3Vi
bGUsIHRoZW4gdGhlcmUgbXVzdCBiZSBhIHNocmlua2luZy1zY2FsZSBmYWN0b3IgYW5kIHJvdW5k
aW5nIHRvIHBpeGVscwotICAgICAgICAvLyBpbiBkZXZpY2Ugc3BhY2Ugd2lsbCBtYWtlIHRoZSB1
bmRlcmxpbmVzIHRvbyB0aGljay4KLSAgICAgICAgQ0dSZWN0IGxpbmVSZWN0ID0gcm91bmRUb0Rl
dmljZVBpeGVscyhGbG9hdFJlY3QoeCwgeSwgbGluZUxlbmd0aCwgYWRqdXN0ZWRUaGlja25lc3Mp
LCBSb3VuZEFsbFNpZGVzKTsKLSAgICAgICAgaWYgKGxpbmVSZWN0LnNpemUuaGVpZ2h0IDwgdGhp
Y2tuZXNzICogMi4wKSB7Ci0gICAgICAgICAgICB4ID0gbGluZVJlY3Qub3JpZ2luLng7Ci0gICAg
ICAgICAgICB5ID0gbGluZVJlY3Qub3JpZ2luLnk7Ci0gICAgICAgICAgICBsaW5lTGVuZ3RoID0g
bGluZVJlY3Quc2l6ZS53aWR0aDsKLSAgICAgICAgICAgIHRoaWNrbmVzcyA9IGxpbmVSZWN0LnNp
emUuaGVpZ2h0OwotICAgICAgICAgICAgaWYgKHNob3VsZEFudGlhbGlhcygpKSB7Ci0gICAgICAg
ICAgICAgICAgQ0dDb250ZXh0U2V0U2hvdWxkQW50aWFsaWFzKHBsYXRmb3JtQ29udGV4dCgpLCBm
YWxzZSk7Ci0gICAgICAgICAgICAgICAgcmVzdG9yZUFudGlhbGlhc01vZGUgPSB0cnVlOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCiAgICAgaWYgKGZpbGxDb2xvcigpICE9IHN0
cm9rZUNvbG9yKCkpCiAgICAgICAgIHNldENHRmlsbENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBz
dHJva2VDb2xvcigpLCBzdHJva2VDb2xvclNwYWNlKCkpOwotICAgIENHQ29udGV4dEZpbGxSZWN0
KHBsYXRmb3JtQ29udGV4dCgpLCBDR1JlY3RNYWtlKHgsIHksIGxpbmVMZW5ndGgsIHRoaWNrbmVz
cykpOworICAgIENHQ29udGV4dEZpbGxSZWN0KHBsYXRmb3JtQ29udGV4dCgpLCBDR1JlY3RNYWtl
KGJvdW5kcy5sb2NhdGlvbigpLngoKSwgYm91bmRzLmxvY2F0aW9uKCkueSgpLCBib3VuZHMud2lk
dGgoKSwgYm91bmRzLmhlaWdodCgpKSk7CiAgICAgaWYgKGZpbGxDb2xvcigpICE9IHN0cm9rZUNv
bG9yKCkpCiAgICAgICAgIHNldENHRmlsbENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBmaWxsQ29s
b3IoKSwgZmlsbENvbG9yU3BhY2UoKSk7Ci0KLSAgICBpZiAocmVzdG9yZUFudGlhbGlhc01vZGUp
Ci0gICAgICAgIENHQ29udGV4dFNldFNob3VsZEFudGlhbGlhcyhwbGF0Zm9ybUNvbnRleHQoKSwg
dHJ1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNvbnN0IFVS
TCYgbGluaywgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5D
RS5jcHAKaW5kZXggMWZmM2ZhZTFhZDkzMjUwNTA0ZGFlYWI1Nzc0MGFmMWY3OGE2ODFjZi4uMTU3
ZmFlNDhhNzlkZDMzYjBlMjc4NjFjMjM4OTNhYTRkZjhiMWY5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29u
dGV4dFdpbkNFLmNwcApAQCAtOTUwLDE0ICs5NTAsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50IHdpZHRoLCBp
bnQKICAgICBEcmF3Rm9jdXNSZWN0KGRjLCAmcmVjdCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3TGluZUZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgb3JpZ2luLCBmbG9hdCB3aWR0
aCwgYm9vbCBwcmludGluZykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQo
Y29uc3QgRmxvYXRSZWN0JiBib3VuZHMsIGJvb2wpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3Ryb2tlU3R5bGUgb2xkU3R5bGUgPSBzdHJv
a2VTdHlsZSgpOwogICAgIHNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKLSAgICBkcmF3TGlu
ZShyb3VuZGVkSW50UG9pbnQob3JpZ2luKSwgcm91bmRlZEludFBvaW50KG9yaWdpbiArIEZsb2F0
U2l6ZSh3aWR0aCwgMCkpKTsKKyAgICBkcmF3TGluZShyb3VuZGVkSW50UG9pbnQoYm91bmRzLmxv
Y2F0aW9uKCkpLCByb3VuZGVkSW50UG9pbnQoYm91bmRzLmxvY2F0aW9uKCkgKyBGbG9hdFNpemUo
Ym91bmRzLndpZHRoKCksIDApKSk7CiAgICAgc2V0U3Ryb2tlU3R5bGUob2xkU3R5bGUpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5kZXggMzQ3MDM2
ZDZkNzc1YzFkNzBiYmE3YTA3ODg3ODY4YzU3MTJkN2E3OC4uZDc2OTQ3NDczZjNjM2VhNDBlYjEw
N2NlMWJmYzA2YzkyYmI5ZmZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmNwcApAQCAtNjYsNiArNjYsNDkgQEAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKElubGlu
ZVRleHRCb3gpID09IHNpemVvZihTYW1lU2l6ZUFzSW5saW5lVGV4dEJveCksIElubGluZVQKIHR5
cGVkZWYgV1RGOjpIYXNoTWFwPGNvbnN0IElubGluZVRleHRCb3gqLCBMYXlvdXRSZWN0PiBJbmxp
bmVUZXh0Qm94T3ZlcmZsb3dNYXA7CiBzdGF0aWMgSW5saW5lVGV4dEJveE92ZXJmbG93TWFwKiBn
VGV4dEJveGVzV2l0aE92ZXJmbG93OwogCitzdGF0aWMgRmxvYXRSZWN0IGNvbXB1dGVCb3VuZHNG
b3JVbmRlcmxpbmUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiB0
b3BsZWZ0LCBmbG9hdCBsZW5ndGgsIGJvb2wgcHJpbnRpbmcsIGJvb2wmIHNob3VsZEFudGlhbGlh
cykKK3sKKyAgICBmbG9hdCB0aGlja25lc3MgPSBzdGQ6Om1heChjb250ZXh0LnN0cm9rZVRoaWNr
bmVzcygpLCAwLjVmKTsKKyAgICAKKyAgICBGbG9hdFJlY3QgYm91bmRzKHRvcGxlZnQsIEZsb2F0
U2l6ZShsZW5ndGgsIHRoaWNrbmVzcykpOworCisgICAgc2hvdWxkQW50aWFsaWFzID0gdHJ1ZTsK
KyAgICAKKyAgICBpZiAocHJpbnRpbmcgfHwgY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkgfHwg
IWNvbnRleHQuZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VT
Y2FsZSkucHJlc2VydmVzQXhpc0FsaWdubWVudCgpKQorICAgICAgICByZXR1cm4gYm91bmRzOwor
CisgICAgLy8gT24gc2NyZWVuLCB1c2UgYSBtaW5pbXVtIHRoaWNrbmVzcyBvZiAxLjAgaW4gdXNl
ciBzcGFjZSAobGF0ZXIgcm91bmRlZCB0byBhbiBpbnRlZ3JhbCBudW1iZXIgaW4gZGV2aWNlIHNw
YWNlKS4KKyAgICBGbG9hdFJlY3QgYWRqdXN0ZWRCb3VuZHMgPSBib3VuZHM7CisgICAgYWRqdXN0
ZWRCb3VuZHMuc2V0SGVpZ2h0KHN0ZDo6bWF4KHRoaWNrbmVzcywgMS4wZikpOworCisgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIGJlIGRvbmUgYSBiZXR0ZXIgd2F5LgorICAgIC8vIFdlIHRyeSB0
byByb3VuZCBhbGwgcGFyYW1ldGVycyB0byBpbnRlZ2VyIGJvdW5kYXJpZXMgaW4gZGV2aWNlIHNw
YWNlLiBJZiByb3VuZGluZyBwaXhlbHMgaW4gZGV2aWNlIHNwYWNlCisgICAgLy8gbWFrZXMgb3Vy
IHRoaWNrbmVzcyBtb3JlIHRoYW4gZG91YmxlLCB0aGVuIHRoZXJlIG11c3QgYmUgYSBzaHJpbmtp
bmctc2NhbGUgZmFjdG9yIGFuZCByb3VuZGluZyB0byBwaXhlbHMKKyAgICAvLyBpbiBkZXZpY2Ug
c3BhY2Ugd2lsbCBtYWtlIHRoZSB1bmRlcmxpbmVzIHRvbyB0aGljay4KKyAgICBGbG9hdFJlY3Qg
bGluZVJlY3QgPSBjb250ZXh0LnJvdW5kVG9EZXZpY2VQaXhlbHMoYWRqdXN0ZWRCb3VuZHMsIEdy
YXBoaWNzQ29udGV4dDo6Um91bmRBbGxTaWRlcyk7CisgICAgaWYgKGxpbmVSZWN0LmhlaWdodCgp
IDwgdGhpY2tuZXNzICogMi4wKSB7CisgICAgICAgIHNob3VsZEFudGlhbGlhcyA9IGZhbHNlOwor
ICAgICAgICByZXR1cm4gbGluZVJlY3Q7CisgICAgfQorCisgICAgcmV0dXJuIGJvdW5kczsKK30K
Kworc3RhdGljIHZvaWQgZHJhd0xpbmVGb3JUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRQb2ludCYgdG9wbGVmdCwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcpCit7
CisgICAgaWYgKHdpZHRoIDw9IDApCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBib29sIHNo
b3VsZEFudGlhbGlhczsKKyAgICAKKyAgICBGbG9hdFJlY3QgdW5kZXJsaW5lQm91bmRzID0gY29t
cHV0ZUJvdW5kc0ZvclVuZGVybGluZShjb250ZXh0LCB0b3BsZWZ0LCB3aWR0aCwgcHJpbnRpbmcs
IHNob3VsZEFudGlhbGlhcyk7CisgICAgCisgICAgYm9vbCB3YXNBbnRpYWxpYXNpbmcgPSBjb250
ZXh0LnNob3VsZEFudGlhbGlhcygpOworICAgIGNvbnRleHQuc2V0U2hvdWxkQW50aWFsaWFzKHNo
b3VsZEFudGlhbGlhcyk7CisgICAgY29udGV4dC5kcmF3TGluZUZvclRleHQodW5kZXJsaW5lQm91
bmRzLCBwcmludGluZyk7CisgICAgY29udGV4dC5zZXRTaG91bGRBbnRpYWxpYXMod2FzQW50aWFs
aWFzaW5nKTsKK30KKwogdm9pZCBJbmxpbmVUZXh0Qm94OjpkZXN0cm95KFJlbmRlckFyZW5hJiBh
cmVuYSkKIHsKICAgICBpZiAoIWtub3duVG9IYXZlTm9PdmVyZmxvdygpICYmIGdUZXh0Qm94ZXNX
aXRoT3ZlcmZsb3cpCkBAIC0xMTEwLDE0ICsxMTUzLDE0IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6
cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRQb2lu
dCYKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0xpbmVGb3JUZXh0KEZsb2F0UG9p
bnQobG9jYWxPcmlnaW4ueCgpLCBsb2NhbE9yaWdpbi55KCkgKyB1bmRlcmxpbmVPZmZzZXQpLCB3
aWR0aCwgaXNQcmludGluZyk7CisgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JUZXh0KCpjb250
ZXh0LCBGbG9hdFBvaW50KGxvY2FsT3JpZ2luLngoKSwgbG9jYWxPcmlnaW4ueSgpICsgdW5kZXJs
aW5lT2Zmc2V0KSwgd2lkdGgsIGlzUHJpbnRpbmcpOwogCiAgICAgICAgICAgICAgICAgaWYgKGRl
Y29yYXRpb25TdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlRG91YmxlKQotICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5kcmF3TGluZUZvclRleHQoRmxvYXRQb2ludChsb2NhbE9yaWdpbi54
KCksIGxvY2FsT3JpZ2luLnkoKSArIHVuZGVybGluZU9mZnNldCArIGRvdWJsZU9mZnNldCksIHdp
ZHRoLCBpc1ByaW50aW5nKTsKKyAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JUZXh0KCpj
b250ZXh0LCBGbG9hdFBvaW50KGxvY2FsT3JpZ2luLngoKSwgbG9jYWxPcmlnaW4ueSgpICsgdW5k
ZXJsaW5lT2Zmc2V0ICsgZG91YmxlT2Zmc2V0KSwgd2lkdGgsIGlzUHJpbnRpbmcpOwogICAgICAg
ICAgICAgfQogI2Vsc2UKICAgICAgICAgICAgIC8vIExlYXZlIG9uZSBwaXhlbCBvZiB3aGl0ZSBi
ZXR3ZWVuIHRoZSBiYXNlbGluZSBhbmQgdGhlIHVuZGVybGluZS4KLSAgICAgICAgICAgIGNvbnRl
eHQtPmRyYXdMaW5lRm9yVGV4dChGbG9hdFBvaW50KGxvY2FsT3JpZ2luLngoKSwgbG9jYWxPcmln
aW4ueSgpICsgYmFzZWxpbmUgKyAxKSwgd2lkdGgsIGlzUHJpbnRpbmcpOworICAgICAgICAgICAg
ZHJhd0xpbmVGb3JUZXh0KCpjb250ZXh0LCBGbG9hdFBvaW50KGxvY2FsT3JpZ2luLngoKSwgbG9j
YWxPcmlnaW4ueSgpICsgYmFzZWxpbmUgKyAxKSwgd2lkdGgsIGlzUHJpbnRpbmcpOwogI2VuZGlm
IC8vIENTUzNfVEVYVAogICAgICAgICB9CiAgICAgICAgIGlmIChkZWNvICYgVGV4dERlY29yYXRp
b25PdmVybGluZSkgewpAQCAtMTEzMiwxMCArMTE3NSwxMCBAQCB2b2lkIElubGluZVRleHRCb3g6
OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9p
bnQmCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBkZWZhdWx0OgogI2VuZGlmIC8vIENTUzNf
VEVYVAotICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdMaW5lRm9yVGV4dChsb2NhbE9yaWdp
biwgd2lkdGgsIGlzUHJpbnRpbmcpOworICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yVGV4dCgq
Y29udGV4dCwgbG9jYWxPcmlnaW4sIHdpZHRoLCBpc1ByaW50aW5nKTsKICNpZiBFTkFCTEUoQ1NT
M19URVhUKQogICAgICAgICAgICAgICAgIGlmIChkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29y
YXRpb25TdHlsZURvdWJsZSkKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0xpbmVG
b3JUZXh0KEZsb2F0UG9pbnQobG9jYWxPcmlnaW4ueCgpLCBsb2NhbE9yaWdpbi55KCkgLSBkb3Vi
bGVPZmZzZXQpLCB3aWR0aCwgaXNQcmludGluZyk7CisgICAgICAgICAgICAgICAgICAgIGRyYXdM
aW5lRm9yVGV4dCgqY29udGV4dCwgRmxvYXRQb2ludChsb2NhbE9yaWdpbi54KCksIGxvY2FsT3Jp
Z2luLnkoKSAtIGRvdWJsZU9mZnNldCksIHdpZHRoLCBpc1ByaW50aW5nKTsKICAgICAgICAgICAg
IH0KICNlbmRpZiAvLyBDU1MzX1RFWFQKICAgICAgICAgfQpAQCAtMTE1MSwxMCArMTE5NCwxMCBA
QCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBkZWZh
dWx0OgogI2VuZGlmIC8vIENTUzNfVEVYVAotICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdM
aW5lRm9yVGV4dChGbG9hdFBvaW50KGxvY2FsT3JpZ2luLngoKSwgbG9jYWxPcmlnaW4ueSgpICsg
MiAqIGJhc2VsaW5lIC8gMyksIHdpZHRoLCBpc1ByaW50aW5nKTsKKyAgICAgICAgICAgICAgICBk
cmF3TGluZUZvclRleHQoKmNvbnRleHQsIEZsb2F0UG9pbnQobG9jYWxPcmlnaW4ueCgpLCBsb2Nh
bE9yaWdpbi55KCkgKyAyICogYmFzZWxpbmUgLyAzKSwgd2lkdGgsIGlzUHJpbnRpbmcpOwogI2lm
IEVOQUJMRShDU1MzX1RFWFQpCiAgICAgICAgICAgICAgICAgaWYgKGRlY29yYXRpb25TdHlsZSA9
PSBUZXh0RGVjb3JhdGlvblN0eWxlRG91YmxlKQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5kcmF3TGluZUZvclRleHQoRmxvYXRQb2ludChsb2NhbE9yaWdpbi54KCksIGxvY2FsT3JpZ2lu
LnkoKSArIGRvdWJsZU9mZnNldCArIDIgKiBiYXNlbGluZSAvIDMpLCB3aWR0aCwgaXNQcmludGlu
Zyk7CisgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yVGV4dCgqY29udGV4dCwgRmxvYXRQ
b2ludChsb2NhbE9yaWdpbi54KCksIGxvY2FsT3JpZ2luLnkoKSArIGRvdWJsZU9mZnNldCArIDIg
KiBiYXNlbGluZSAvIDMpLCB3aWR0aCwgaXNQcmludGluZyk7CiAgICAgICAgICAgICB9CiAjZW5k
aWYgLy8gQ1NTM19URVhUCiAgICAgICAgIH0KQEAgLTE0MDIsNyArMTQ0NSw3IEBAIHZvaWQgSW5s
aW5lVGV4dEJveDo6cGFpbnRDb21wb3NpdGlvblVuZGVybGluZShHcmFwaGljc0NvbnRleHQqIGN0
eCwgY29uc3QgRmxvYXRQCiAKICAgICBjdHgtPnNldFN0cm9rZUNvbG9yKHVuZGVybGluZS5jb2xv
ciwgcmVuZGVyZXIoKS5zdHlsZSgpLT5jb2xvclNwYWNlKCkpOwogICAgIGN0eC0+c2V0U3Ryb2tl
VGhpY2tuZXNzKGxpbmVUaGlja25lc3MpOwotICAgIGN0eC0+ZHJhd0xpbmVGb3JUZXh0KEZsb2F0
UG9pbnQoYm94T3JpZ2luLngoKSArIHN0YXJ0LCBib3hPcmlnaW4ueSgpICsgbG9naWNhbEhlaWdo
dCgpIC0gbGluZVRoaWNrbmVzcyksIHdpZHRoLCByZW5kZXJlcigpLmRvY3VtZW50KCkucHJpbnRp
bmcoKSk7CisgICAgZHJhd0xpbmVGb3JUZXh0KCpjdHgsIEZsb2F0UG9pbnQoYm94T3JpZ2luLngo
KSArIHN0YXJ0LCBib3hPcmlnaW4ueSgpICsgbG9naWNhbEhlaWdodCgpIC0gbGluZVRoaWNrbmVz
cyksIHdpZHRoLCByZW5kZXJlcigpLmRvY3VtZW50KCkucHJpbnRpbmcoKSk7CiB9CiAKIGludCBJ
bmxpbmVUZXh0Qm94OjpjYXJldE1pbk9mZnNldCgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215433</attachid>
            <date>2013-10-29 15:01:25 -0700</date>
            <delta_ts>2013-10-29 17:56:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123310-20131029150124.patch</filename>
            <type>text/plain</type>
            <size>15953</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4MjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTA4ZDg4ODQ1YmM4NmEx
NjE0OTM0NmZlYmY1ZThkZDc4MzAxY2M4My4uZWQyNzkwMDNiYTBkZTMyM2QzMDc5YmNjZTNjNWY0
OWVmYWQyMmY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEzLTEwLTI0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgVW5kZXJsaW5l
IGJvdW5kcyBjYW5ub3QgYmUgcXVlcmllZCBiZWZvcmUgdW5kZXJsaW5lIGl0c2VsZiBpcyBkcmF3
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMzEw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIEdyYXBoaWNz
Q29udGV4dCdzIGRyYXdMaW5lRm9yVGV4dCBmdW5jdGlvbiBpcyB1c2VkIHRvIGRyYXcgdW5kZXJs
aW5lcywKKyAgICAgICAgc3RyaWtldGhyb3VnaHMsIGFuZCBvdmVybGluZXMuIEJlZm9yZSBkcmF3
aW5nIHRoZSBsaW5lLCB0aGlzIGZ1bmN0aW9uCisgICAgICAgIG1vZGlmaWVzIHRoZSBib3VuZHMg
Z2l2ZW4gdG8gaXQgaW4gb3JkZXIgdG8gbWFrZSB1bmRlcmxpbmVzIGNyaXNwLiBIb3dldmVyLCAg
CisgICAgICAgIHRoaXMgbWVhbnMgdGhhdCBpdCBpcyBpbXBvc3NpYmxlIHRvIGtub3cgd2hlcmUg
YW4gdW5kZXJsaW5lIHdpbGwgYmUgZHJhd24KKyAgICAgICAgYmVmb3JlIGRyYXdpbmcgaXQuIFRo
aXMgcGF0Y2ggcHVsbHMgb3V0IHRoaXMgYWRqdXN0bWVudCBjb21wdXRhdGlvbiBpbnRvCisgICAg
ICAgIElubGluZVRleHRCb3gsIHRoZW4gcGFzc2VzIHRoZSByZXN1bHQgdG8gZHJhd0xpbmVGb3JU
ZXh0LgorCisgICAgICAgIEJlY2F1c2UgdGhlcmUgc2hvdWxkIGJlIG5vIG9ic2VydmFibGUgZGlm
ZmVyZW5jZSwgbm8gdGVzdHMgbmVlZCB0byBiZSB1cGRhdGVkLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6IENoYW5naW5nIHRoZSBzaWduYXR1cmUgb2Yg
ZHJhd0xpbmVGb3JUZXh0CisgICAgICAgIHNvIGl0IGNhbiBhY2NlcHQgYm91bmRzIGZyb20gb3Vy
IGhlbHBlciBmdW5jdGlvbgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
UGF0aEJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpk
cmF3TGluZUZvclRleHQpOiBVcGRhdGUgdG8gd29yayB3aXRoIG5ldworICAgICAgICBzaWduYXR1
cmUgb2YgZHJhd0xpbmVGb3JUZXh0CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3TGluZUZvclRleHQpOiBVcGRhdGUgdG8gd29yayB3aXRoIG5ldworICAgICAgICBz
aWduYXR1cmUgb2YgZHJhd0xpbmVGb3JUZXh0CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3TGluZUZvclRleHQpOiBVcGRhdGUgdG8gd29yayB3aXRoIG5ldworICAgICAgICBz
aWduYXR1cmUgb2YgZHJhd0xpbmVGb3JUZXh0CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQpOiBVcGRhdGUgdG8gd29yayB3aXRoIG5ldworICAg
ICAgICBzaWduYXR1cmUgb2YgZHJhd0xpbmVGb3JUZXh0CisgICAgICAgICogcmVuZGVyaW5nL0lu
bGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUJvdW5kc0ZvclVuZGVy
bGluZSk6IFB1cmUgZnVuY3Rpb24gdGhhdCBjb21wdXRlcyB0aGUgYWRqdXN0ZWQKKyAgICAgICAg
Ym91bmRzIG9mIHRoZSB1bmRlcmxpbmUgYWJvdXQgdG8gYmUgZHJhd24KKyAgICAgICAgKFdlYkNv
cmU6OmRyYXdMaW5lRm9yVGV4dCk6IGNhbGxzIGNvbXB1dGVCb3VuZHNGb3JVbmRlcmxpbmUgYW5k
IHRoZW4KKyAgICAgICAgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbik6IFVzZSBuZXcgZHJhd0xp
bmVGb3JUZXh0IGZ1bmN0aW9uCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWlu
dENvbXBvc2l0aW9uVW5kZXJsaW5lKTogVXNlIG5ldyBkcmF3TGluZUZvclRleHQKKyAgICAgICAg
ZnVuY3Rpb24KKwogMjAxMy0xMC0yOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxl
LmNvbT4KIAogICAgICAgICBCdWlsZCBmaXggYWZ0ZXIgMTU4MjIzOyBtYWtlIFRpbGVDb250cm9s
bGVyIHVzZSBmbG9hdCBmb3Igc2NhbGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBjMzA4Y2JkMGI3ZDg1NGYzZDhlYjBi
ZWZkM2E5ZjNmNGQ0YTc5N2E4Li4wMzllZWZmMTcxNjUyN2QzNjRjOWRlZGNhODEzNWEzNjBjNGM2
Yzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaApAQCAtMzMwLDcgKzMzMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgfTsKICAgICAgICAgRmxvYXRSZWN0IHJvdW5kVG9EZXZpY2VQaXhlbHMoY29uc3QgRmxvYXRS
ZWN0JiwgUm91bmRpbmdNb2RlID0gUm91bmRBbGxTaWRlcyk7CiAKLSAgICAgICAgdm9pZCBkcmF3
TGluZUZvclRleHQoY29uc3QgRmxvYXRQb2ludCYsIGZsb2F0IHdpZHRoLCBib29sIHByaW50aW5n
KTsKKyAgICAgICAgdm9pZCBkcmF3TGluZUZvclRleHQoY29uc3QgRmxvYXRSZWN0JiBib3VuZHMs
IGJvb2wgcHJpbnRpbmcpOwogICAgICAgICBlbnVtIERvY3VtZW50TWFya2VyTGluZVN0eWxlIHsK
ICAgICAgICAgICAgIERvY3VtZW50TWFya2VyU3BlbGxpbmdMaW5lU3R5bGUsCiAgICAgICAgICAg
ICBEb2N1bWVudE1hcmtlckdyYW1tYXJMaW5lU3R5bGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1BhdGhCbGFja0JlcnJ5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvUGF0aEJsYWNrQmVycnku
Y3BwCmluZGV4IGFjNmQ2YmE2NGRmZmNhMGExNTZmYWY4MDBiOTdjZGRkZDg5ZDU0ZTYuLmZhZWM2
OGJkZTVjYzY2ZmYyMTFmZmVhNzE1OGI0MzRlNDQ2Zjk3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvUGF0aEJsYWNrQmVycnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvUGF0aEJsYWNr
QmVycnkuY3BwCkBAIC0yNjMsMTIgKzI2MywxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0xpbmVGb3JEb2N1bWVudE1hcmtlcihjb25zdCBGbG9hdFBvaW50JiBwdCwgZmxvYXQgd2lkdAog
ICAgIHBsYXRmb3JtQ29udGV4dCgpLT5hZGREcmF3TGluZUZvckRvY3VtZW50TWFya2VyKHB0LCB3
aWR0aCwgKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6RG9jdW1lbnRNYXJrZXJMaW5l
U3R5bGUpc3R5bGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0
KGNvbnN0IEZsb2F0UG9pbnQmIHB0LCBmbG9hdCB3aWR0aCwgYm9vbCBwcmludGluZykKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQoY29uc3QgRmxvYXRSZWN0JiBib3VuZHMs
IGJvb2wgcHJpbnRpbmcpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgcGxhdGZvcm1Db250ZXh0KCktPmFkZERyYXdMaW5lRm9yVGV4dChwdCwg
d2lkdGgsIHByaW50aW5nKTsKKyAgICBwbGF0Zm9ybUNvbnRleHQoKS0+YWRkRHJhd0xpbmVGb3JU
ZXh0KGJvdW5kcy5sb2NhdGlvbiwgYm91bmRzLndpZHRoKCksIHByaW50aW5nKTsKIH0KIAogLy8g
RklYTUU6IGRvbid0IGlnbm9yZSB0aGUgd2luZGluZyBydWxlLiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAK
aW5kZXggNzAzNjBlZDdlYzg3NTJlNjA0MmVmYmM0ZjM4ODcxOWY0ZjIxYzEwYS4uYTcxYjE0NWI0
M2NkYTVhZDcyNjEyZjI0ODFlYjE3OTRjOWVlMmJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcApAQCAtNjE0LDcgKzYxNCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9j
dXNSaW5nKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCB3aWR0aCwgaW50CiAgICAg
Y2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZv
clRleHQoY29uc3QgRmxvYXRQb2ludCYgb3JpZ2luLCBmbG9hdCB3aWR0aCwgYm9vbCkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQoY29uc3QgRmxvYXRSZWN0JiBib3VuZHMs
IGJvb2wpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtNjIzLDE2ICs2MjMsMTYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4
dChjb25zdCBGbG9hdFBvaW50JiBvcmlnaW4sIGZsb2F0IHdpZHRoLCBib28KICAgICBjYWlyb19z
YXZlKGNhaXJvQ29udGV4dCk7CiAKICAgICAvLyBUaGlzIGJ1bXBpbmcgb2YgPDEgc3Ryb2tlIHRo
aWNrbmVzc2VzIG1hdGNoZXMgdGhlIG9uZSBpbiBkcmF3TGluZU9uQ2Fpcm9Db250ZXh0LgotICAg
IEZsb2F0UG9pbnQgZW5kUG9pbnQob3JpZ2luICsgSW50U2l6ZSh3aWR0aCwgMCkpOwotICAgIEZs
b2F0UmVjdCBsaW5lRXh0ZW50cyhvcmlnaW4sIEZsb2F0U2l6ZSh3aWR0aCwgc3Ryb2tlVGhpY2tu
ZXNzKCkpKTsKKyAgICBGbG9hdFBvaW50IGVuZFBvaW50KGJvdW5kcy5sb2NhdGlvbigpICsgSW50
U2l6ZShib3VuZHMud2lkdGgoKSwgMCkpOworICAgIEZsb2F0UmVjdCBsaW5lRXh0ZW50cyhib3Vu
ZHMubG9jYXRpb24oKSwgRmxvYXRTaXplKGJvdW5kcy53aWR0aCgpLCBzdHJva2VUaGlja25lc3Mo
KSkpOwogCiAgICAgU2hhZG93Qmx1ciYgc2hhZG93ID0gcGxhdGZvcm1Db250ZXh0KCktPnNoYWRv
d0JsdXIoKTsKICAgICBpZiAoR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93
LmJlZ2luU2hhZG93TGF5ZXIodGhpcywgbGluZUV4dGVudHMpKSB7Ci0gICAgICAgIGRyYXdMaW5l
T25DYWlyb0NvbnRleHQodGhpcywgc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNy
KCksIG9yaWdpbiwgZW5kUG9pbnQpOworICAgICAgICBkcmF3TGluZU9uQ2Fpcm9Db250ZXh0KHRo
aXMsIHNoYWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBib3VuZHMubG9jYXRp
b24oKSwgZW5kUG9pbnQpOwogICAgICAgICBzaGFkb3cuZW5kU2hhZG93TGF5ZXIodGhpcyk7CiAg
ICAgfQogCi0gICAgZHJhd0xpbmVPbkNhaXJvQ29udGV4dCh0aGlzLCBjYWlyb0NvbnRleHQsIG9y
aWdpbiwgZW5kUG9pbnQpOworICAgIGRyYXdMaW5lT25DYWlyb0NvbnRleHQodGhpcywgY2Fpcm9D
b250ZXh0LCBib3VuZHMubG9jYXRpb24oKSwgZW5kUG9pbnQpOwogICAgIGNhaXJvX3Jlc3RvcmUo
Y2Fpcm9Db250ZXh0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDFhOWM5MDU1ZTZjOTIw
M2ZiNTQwMzk5MWJlYmI3NGNlOTgzZWQ1NWMuLmU3NTI5M2QzN2Q4NTM4Y2EwYzliNjJmNGVkZGVj
ODNkYzExNzAwYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTEyMzUsNTMgKzEyMzUsMTYgQEAg
RmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4dDo6cm91bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIFJvdW5kaW5nTW8KICAgICByZXR1cm4gRmxvYXRSZWN0KHJvdW5kZWRPcmln
aW4sIHJvdW5kZWRMb3dlclJpZ2h0IC0gcm91bmRlZE9yaWdpbik7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0
IHdpZHRoLCBib29sIHByaW50aW5nKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9y
VGV4dChjb25zdCBGbG9hdFJlY3QmIGJvdW5kcywgYm9vbCkKIHsKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAod2lkdGggPD0gMCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZmxvYXQgeCA9IHBvaW50LngoKTsKLSAgICBmbG9hdCB5ID0gcG9p
bnQueSgpOwotICAgIGZsb2F0IGxpbmVMZW5ndGggPSB3aWR0aDsKLQotICAgIC8vIFVzZSBhIG1p
bmltdW0gdGhpY2tuZXNzIG9mIDAuNSBpbiB1c2VyIHNwYWNlLgotICAgIC8vIFNlZSBodHRwOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjU1IGZvciBkZXRhaWxzIG9mIHdoeSAw
LjUgaXMgdGhlIHJpZ2h0IG1pbmltdW0gdGhpY2tuZXNzIHRvIHVzZS4KLSAgICBmbG9hdCB0aGlj
a25lc3MgPSBtYXgoc3Ryb2tlVGhpY2tuZXNzKCksIDAuNWYpOwotCi0gICAgYm9vbCByZXN0b3Jl
QW50aWFsaWFzTW9kZSA9IGZhbHNlOwotCi0gICAgaWYgKCFwcmludGluZyAmJiBnZXRDVE0oR3Jh
cGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKS5wcmVzZXJ2ZXNBeGlz
QWxpZ25tZW50KCkpIHsKLSAgICAgICAgLy8gT24gc2NyZWVuLCB1c2UgYSBtaW5pbXVtIHRoaWNr
bmVzcyBvZiAxLjAgaW4gdXNlciBzcGFjZSAobGF0ZXIgcm91bmRlZCB0byBhbiBpbnRlZ3JhbCBu
dW1iZXIgaW4gZGV2aWNlIHNwYWNlKS4KLSAgICAgICAgZmxvYXQgYWRqdXN0ZWRUaGlja25lc3Mg
PSBtYXgodGhpY2tuZXNzLCAxLjBmKTsKLQotICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
YmUgZG9uZSBhIGJldHRlciB3YXkuCi0gICAgICAgIC8vIFdlIHRyeSB0byByb3VuZCBhbGwgcGFy
YW1ldGVycyB0byBpbnRlZ2VyIGJvdW5kYXJpZXMgaW4gZGV2aWNlIHNwYWNlLiBJZiByb3VuZGlu
ZyBwaXhlbHMgaW4gZGV2aWNlIHNwYWNlCi0gICAgICAgIC8vIG1ha2VzIG91ciB0aGlja25lc3Mg
bW9yZSB0aGFuIGRvdWJsZSwgdGhlbiB0aGVyZSBtdXN0IGJlIGEgc2hyaW5raW5nLXNjYWxlIGZh
Y3RvciBhbmQgcm91bmRpbmcgdG8gcGl4ZWxzCi0gICAgICAgIC8vIGluIGRldmljZSBzcGFjZSB3
aWxsIG1ha2UgdGhlIHVuZGVybGluZXMgdG9vIHRoaWNrLgotICAgICAgICBDR1JlY3QgbGluZVJl
Y3QgPSByb3VuZFRvRGV2aWNlUGl4ZWxzKEZsb2F0UmVjdCh4LCB5LCBsaW5lTGVuZ3RoLCBhZGp1
c3RlZFRoaWNrbmVzcyksIFJvdW5kQWxsU2lkZXMpOwotICAgICAgICBpZiAobGluZVJlY3Quc2l6
ZS5oZWlnaHQgPCB0aGlja25lc3MgKiAyLjApIHsKLSAgICAgICAgICAgIHggPSBsaW5lUmVjdC5v
cmlnaW4ueDsKLSAgICAgICAgICAgIHkgPSBsaW5lUmVjdC5vcmlnaW4ueTsKLSAgICAgICAgICAg
IGxpbmVMZW5ndGggPSBsaW5lUmVjdC5zaXplLndpZHRoOwotICAgICAgICAgICAgdGhpY2tuZXNz
ID0gbGluZVJlY3Quc2l6ZS5oZWlnaHQ7Ci0gICAgICAgICAgICBpZiAoc2hvdWxkQW50aWFsaWFz
KCkpIHsKLSAgICAgICAgICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRBbnRpYWxpYXMocGxhdGZv
cm1Db250ZXh0KCksIGZhbHNlKTsKLSAgICAgICAgICAgICAgICByZXN0b3JlQW50aWFsaWFzTW9k
ZSA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBpZiAoZmls
bENvbG9yKCkgIT0gc3Ryb2tlQ29sb3IoKSkKICAgICAgICAgc2V0Q0dGaWxsQ29sb3IocGxhdGZv
cm1Db250ZXh0KCksIHN0cm9rZUNvbG9yKCksIHN0cm9rZUNvbG9yU3BhY2UoKSk7Ci0gICAgQ0dD
b250ZXh0RmlsbFJlY3QocGxhdGZvcm1Db250ZXh0KCksIENHUmVjdE1ha2UoeCwgeSwgbGluZUxl
bmd0aCwgdGhpY2tuZXNzKSk7CisgICAgQ0dDb250ZXh0RmlsbFJlY3QocGxhdGZvcm1Db250ZXh0
KCksIENHUmVjdE1ha2UoYm91bmRzLmxvY2F0aW9uKCkueCgpLCBib3VuZHMubG9jYXRpb24oKS55
KCksIGJvdW5kcy53aWR0aCgpLCBib3VuZHMuaGVpZ2h0KCkpKTsKICAgICBpZiAoZmlsbENvbG9y
KCkgIT0gc3Ryb2tlQ29sb3IoKSkKICAgICAgICAgc2V0Q0dGaWxsQ29sb3IocGxhdGZvcm1Db250
ZXh0KCksIGZpbGxDb2xvcigpLCBmaWxsQ29sb3JTcGFjZSgpKTsKLQotICAgIGlmIChyZXN0b3Jl
QW50aWFsaWFzTW9kZSkKLSAgICAgICAgQ0dDb250ZXh0U2V0U2hvdWxkQW50aWFsaWFzKHBsYXRm
b3JtQ29udGV4dCgpLCB0cnVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZv
clJlY3QoY29uc3QgVVJMJiBsaW5rLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4
dFdpbkNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBo
aWNzQ29udGV4dFdpbkNFLmNwcAppbmRleCAxZmYzZmFlMWFkOTMyNTA1MDRkYWVhYjU3NzQwYWYx
Zjc4YTY4MWNmLi4xNTdmYWU0OGE3OWRkMzNiMGUyNzg2MWMyMzg5M2FhNGRmOGIxZjk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0Nv
bnRleHRXaW5DRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
Y2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwCkBAIC05NTAsMTQgKzk1MCwxNCBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJlY3Rz
LCBpbnQgd2lkdGgsIGludAogICAgIERyYXdGb2N1c1JlY3QoZGMsICZyZWN0KTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBvcmln
aW4sIGZsb2F0IHdpZHRoLCBib29sIHByaW50aW5nKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdMaW5lRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmIGJvdW5kcywgYm9vbCkKIHsKICAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJva2VTdHlsZSBv
bGRTdHlsZSA9IHN0cm9rZVN0eWxlKCk7CiAgICAgc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2Up
OwotICAgIGRyYXdMaW5lKHJvdW5kZWRJbnRQb2ludChvcmlnaW4pLCByb3VuZGVkSW50UG9pbnQo
b3JpZ2luICsgRmxvYXRTaXplKHdpZHRoLCAwKSkpOworICAgIGRyYXdMaW5lKHJvdW5kZWRJbnRQ
b2ludChib3VuZHMubG9jYXRpb24oKSksIHJvdW5kZWRJbnRQb2ludChib3VuZHMubG9jYXRpb24o
KSArIEZsb2F0U2l6ZShib3VuZHMud2lkdGgoKSwgMCkpKTsKICAgICBzZXRTdHJva2VTdHlsZShv
bGRTdHlsZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNw
cAppbmRleCAyOWVhMjAzMzQ3ZDNmZTlmY2FjMmU5ZDM5MjJjMWNmNTFhMGQzYWQ5Li5hMDBlNmMy
ZDNkZTg2YWZhYmI1NDZhMzE1MGQ3ZWJmNDI0NzFjZTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC02Niw2ICs2Niw0OSBAQCBDT01QSUxFX0FTU0VS
VChzaXplb2YoSW5saW5lVGV4dEJveCkgPT0gc2l6ZW9mKFNhbWVTaXplQXNJbmxpbmVUZXh0Qm94
KSwgSW5saW5lVAogdHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3QgSW5saW5lVGV4dEJveCosIExh
eW91dFJlY3Q+IElubGluZVRleHRCb3hPdmVyZmxvd01hcDsKIHN0YXRpYyBJbmxpbmVUZXh0Qm94
T3ZlcmZsb3dNYXAqIGdUZXh0Qm94ZXNXaXRoT3ZlcmZsb3c7CiAKK3N0YXRpYyBGbG9hdFJlY3Qg
Y29tcHV0ZUJvdW5kc0ZvclVuZGVybGluZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UG9pbnQmIHRvcGxlZnQsIGZsb2F0IGxlbmd0aCwgYm9vbCBwcmludGluZywgYm9vbCYg
c2hvdWxkQW50aWFsaWFzKQoreworICAgIGZsb2F0IHRoaWNrbmVzcyA9IHN0ZDo6bWF4KGNvbnRl
eHQuc3Ryb2tlVGhpY2tuZXNzKCksIDAuNWYpOworICAgIAorICAgIEZsb2F0UmVjdCBib3VuZHMo
dG9wbGVmdCwgRmxvYXRTaXplKGxlbmd0aCwgdGhpY2tuZXNzKSk7CisKKyAgICBzaG91bGRBbnRp
YWxpYXMgPSB0cnVlOworICAgIAorICAgIGlmIChwcmludGluZyB8fCBjb250ZXh0LnBhaW50aW5n
RGlzYWJsZWQoKSB8fCAhY29udGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5
SW5jbHVkZURldmljZVNjYWxlKS5wcmVzZXJ2ZXNBeGlzQWxpZ25tZW50KCkpCisgICAgICAgIHJl
dHVybiBib3VuZHM7CisKKyAgICAvLyBPbiBzY3JlZW4sIHVzZSBhIG1pbmltdW0gdGhpY2tuZXNz
IG9mIDEuMCBpbiB1c2VyIHNwYWNlIChsYXRlciByb3VuZGVkIHRvIGFuIGludGVncmFsIG51bWJl
ciBpbiBkZXZpY2Ugc3BhY2UpLgorICAgIEZsb2F0UmVjdCBhZGp1c3RlZEJvdW5kcyA9IGJvdW5k
czsKKyAgICBhZGp1c3RlZEJvdW5kcy5zZXRIZWlnaHQoc3RkOjptYXgodGhpY2tuZXNzLCAxLjBm
KSk7CisKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZG9uZSBhIGJldHRlciB3YXkuCisg
ICAgLy8gV2UgdHJ5IHRvIHJvdW5kIGFsbCBwYXJhbWV0ZXJzIHRvIGludGVnZXIgYm91bmRhcmll
cyBpbiBkZXZpY2Ugc3BhY2UuIElmIHJvdW5kaW5nIHBpeGVscyBpbiBkZXZpY2Ugc3BhY2UKKyAg
ICAvLyBtYWtlcyBvdXIgdGhpY2tuZXNzIG1vcmUgdGhhbiBkb3VibGUsIHRoZW4gdGhlcmUgbXVz
dCBiZSBhIHNocmlua2luZy1zY2FsZSBmYWN0b3IgYW5kIHJvdW5kaW5nIHRvIHBpeGVscworICAg
IC8vIGluIGRldmljZSBzcGFjZSB3aWxsIG1ha2UgdGhlIHVuZGVybGluZXMgdG9vIHRoaWNrLgor
ICAgIEZsb2F0UmVjdCBsaW5lUmVjdCA9IGNvbnRleHQucm91bmRUb0RldmljZVBpeGVscyhhZGp1
c3RlZEJvdW5kcywgR3JhcGhpY3NDb250ZXh0OjpSb3VuZEFsbFNpZGVzKTsKKyAgICBpZiAobGlu
ZVJlY3QuaGVpZ2h0KCkgPCB0aGlja25lc3MgKiAyLjApIHsKKyAgICAgICAgc2hvdWxkQW50aWFs
aWFzID0gZmFsc2U7CisgICAgICAgIHJldHVybiBsaW5lUmVjdDsKKyAgICB9CisKKyAgICByZXR1
cm4gYm91bmRzOworfQorCitzdGF0aWMgdm9pZCBkcmF3TGluZUZvclRleHQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiB0b3BsZWZ0LCBmbG9hdCB3aWR0aCwgYm9v
bCBwcmludGluZykKK3sKKyAgICBpZiAod2lkdGggPD0gMCkKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIGJvb2wgc2hvdWxkQW50aWFsaWFzOworICAgIAorICAgIEZsb2F0UmVjdCB1bmRlcmxp
bmVCb3VuZHMgPSBjb21wdXRlQm91bmRzRm9yVW5kZXJsaW5lKGNvbnRleHQsIHRvcGxlZnQsIHdp
ZHRoLCBwcmludGluZywgc2hvdWxkQW50aWFsaWFzKTsKKyAgICAKKyAgICBib29sIHdhc0FudGlh
bGlhc2luZyA9IGNvbnRleHQuc2hvdWxkQW50aWFsaWFzKCk7CisgICAgY29udGV4dC5zZXRTaG91
bGRBbnRpYWxpYXMoc2hvdWxkQW50aWFsaWFzKTsKKyAgICBjb250ZXh0LmRyYXdMaW5lRm9yVGV4
dCh1bmRlcmxpbmVCb3VuZHMsIHByaW50aW5nKTsKKyAgICBjb250ZXh0LnNldFNob3VsZEFudGlh
bGlhcyh3YXNBbnRpYWxpYXNpbmcpOworfQorCiB2b2lkIElubGluZVRleHRCb3g6OmRlc3Ryb3ko
UmVuZGVyQXJlbmEmIGFyZW5hKQogewogICAgIGlmICgha25vd25Ub0hhdmVOb092ZXJmbG93KCkg
JiYgZ1RleHRCb3hlc1dpdGhPdmVyZmxvdykKQEAgLTExMTAsMTQgKzExNTMsMTQgQEAgdm9pZCBJ
bmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBGbG9hdFBvaW50JgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3TGluZUZv
clRleHQoRmxvYXRQb2ludChsb2NhbE9yaWdpbi54KCksIGxvY2FsT3JpZ2luLnkoKSArIHVuZGVy
bGluZU9mZnNldCksIHdpZHRoLCBpc1ByaW50aW5nKTsKKyAgICAgICAgICAgICAgICBkcmF3TGlu
ZUZvclRleHQoKmNvbnRleHQsIEZsb2F0UG9pbnQobG9jYWxPcmlnaW4ueCgpLCBsb2NhbE9yaWdp
bi55KCkgKyB1bmRlcmxpbmVPZmZzZXQpLCB3aWR0aCwgaXNQcmludGluZyk7CiAKICAgICAgICAg
ICAgICAgICBpZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGUp
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdMaW5lRm9yVGV4dChGbG9hdFBvaW50
KGxvY2FsT3JpZ2luLngoKSwgbG9jYWxPcmlnaW4ueSgpICsgdW5kZXJsaW5lT2Zmc2V0ICsgZG91
YmxlT2Zmc2V0KSwgd2lkdGgsIGlzUHJpbnRpbmcpOworICAgICAgICAgICAgICAgICAgICBkcmF3
TGluZUZvclRleHQoKmNvbnRleHQsIEZsb2F0UG9pbnQobG9jYWxPcmlnaW4ueCgpLCBsb2NhbE9y
aWdpbi55KCkgKyB1bmRlcmxpbmVPZmZzZXQgKyBkb3VibGVPZmZzZXQpLCB3aWR0aCwgaXNQcmlu
dGluZyk7CiAgICAgICAgICAgICB9CiAjZWxzZQogICAgICAgICAgICAgLy8gTGVhdmUgb25lIHBp
eGVsIG9mIHdoaXRlIGJldHdlZW4gdGhlIGJhc2VsaW5lIGFuZCB0aGUgdW5kZXJsaW5lLgotICAg
ICAgICAgICAgY29udGV4dC0+ZHJhd0xpbmVGb3JUZXh0KEZsb2F0UG9pbnQobG9jYWxPcmlnaW4u
eCgpLCBsb2NhbE9yaWdpbi55KCkgKyBiYXNlbGluZSArIDEpLCB3aWR0aCwgaXNQcmludGluZyk7
CisgICAgICAgICAgICBkcmF3TGluZUZvclRleHQoKmNvbnRleHQsIEZsb2F0UG9pbnQobG9jYWxP
cmlnaW4ueCgpLCBsb2NhbE9yaWdpbi55KCkgKyBiYXNlbGluZSArIDEpLCB3aWR0aCwgaXNQcmlu
dGluZyk7CiAjZW5kaWYgLy8gQ1NTM19URVhUCiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlY28g
JiBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lKSB7CkBAIC0xMTMyLDEwICsxMTc1LDEwIEBAIHZvaWQg
SW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgRmxvYXRQb2ludCYKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRlZmF1bHQ6CiAj
ZW5kaWYgLy8gQ1NTM19URVhUCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0xpbmVGb3JU
ZXh0KGxvY2FsT3JpZ2luLCB3aWR0aCwgaXNQcmludGluZyk7CisgICAgICAgICAgICAgICAgZHJh
d0xpbmVGb3JUZXh0KCpjb250ZXh0LCBsb2NhbE9yaWdpbiwgd2lkdGgsIGlzUHJpbnRpbmcpOwog
I2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAgICAgICAgICAgICAgaWYgKGRlY29yYXRpb25TdHls
ZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlRG91YmxlKQotICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LT5kcmF3TGluZUZvclRleHQoRmxvYXRQb2ludChsb2NhbE9yaWdpbi54KCksIGxvY2FsT3Jp
Z2luLnkoKSAtIGRvdWJsZU9mZnNldCksIHdpZHRoLCBpc1ByaW50aW5nKTsKKyAgICAgICAgICAg
ICAgICAgICAgZHJhd0xpbmVGb3JUZXh0KCpjb250ZXh0LCBGbG9hdFBvaW50KGxvY2FsT3JpZ2lu
LngoKSwgbG9jYWxPcmlnaW4ueSgpIC0gZG91YmxlT2Zmc2V0KSwgd2lkdGgsIGlzUHJpbnRpbmcp
OwogICAgICAgICAgICAgfQogI2VuZGlmIC8vIENTUzNfVEVYVAogICAgICAgICB9CkBAIC0xMTUx
LDEwICsxMTk0LDEwIEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGRlZmF1bHQ6CiAjZW5kaWYgLy8gQ1NTM19URVhUCi0gICAgICAgICAgICAgICAg
Y29udGV4dC0+ZHJhd0xpbmVGb3JUZXh0KEZsb2F0UG9pbnQobG9jYWxPcmlnaW4ueCgpLCBsb2Nh
bE9yaWdpbi55KCkgKyAyICogYmFzZWxpbmUgLyAzKSwgd2lkdGgsIGlzUHJpbnRpbmcpOworICAg
ICAgICAgICAgICAgIGRyYXdMaW5lRm9yVGV4dCgqY29udGV4dCwgRmxvYXRQb2ludChsb2NhbE9y
aWdpbi54KCksIGxvY2FsT3JpZ2luLnkoKSArIDIgKiBiYXNlbGluZSAvIDMpLCB3aWR0aCwgaXNQ
cmludGluZyk7CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICAgICAgICAgICAgICBpZiAoZGVj
b3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGUpCi0gICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmRyYXdMaW5lRm9yVGV4dChGbG9hdFBvaW50KGxvY2FsT3JpZ2luLngo
KSwgbG9jYWxPcmlnaW4ueSgpICsgZG91YmxlT2Zmc2V0ICsgMiAqIGJhc2VsaW5lIC8gMyksIHdp
ZHRoLCBpc1ByaW50aW5nKTsKKyAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JUZXh0KCpj
b250ZXh0LCBGbG9hdFBvaW50KGxvY2FsT3JpZ2luLngoKSwgbG9jYWxPcmlnaW4ueSgpICsgZG91
YmxlT2Zmc2V0ICsgMiAqIGJhc2VsaW5lIC8gMyksIHdpZHRoLCBpc1ByaW50aW5nKTsKICAgICAg
ICAgICAgIH0KICNlbmRpZiAvLyBDU1MzX1RFWFQKICAgICAgICAgfQpAQCAtMTQwMiw3ICsxNDQ1
LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uVW5kZXJsaW5lKEdyYXBo
aWNzQ29udGV4dCogY3R4LCBjb25zdCBGbG9hdFAKIAogICAgIGN0eC0+c2V0U3Ryb2tlQ29sb3Io
dW5kZXJsaW5lLmNvbG9yLCByZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpKTsKICAgICBj
dHgtPnNldFN0cm9rZVRoaWNrbmVzcyhsaW5lVGhpY2tuZXNzKTsKLSAgICBjdHgtPmRyYXdMaW5l
Rm9yVGV4dChGbG9hdFBvaW50KGJveE9yaWdpbi54KCkgKyBzdGFydCwgYm94T3JpZ2luLnkoKSAr
IGxvZ2ljYWxIZWlnaHQoKSAtIGxpbmVUaGlja25lc3MpLCB3aWR0aCwgcmVuZGVyZXIoKS5kb2N1
bWVudCgpLnByaW50aW5nKCkpOworICAgIGRyYXdMaW5lRm9yVGV4dCgqY3R4LCBGbG9hdFBvaW50
KGJveE9yaWdpbi54KCkgKyBzdGFydCwgYm94T3JpZ2luLnkoKSArIGxvZ2ljYWxIZWlnaHQoKSAt
IGxpbmVUaGlja25lc3MpLCB3aWR0aCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLnByaW50aW5nKCkp
OwogfQogCiBpbnQgSW5saW5lVGV4dEJveDo6Y2FyZXRNaW5PZmZzZXQoKSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215457</attachid>
            <date>2013-10-29 17:56:22 -0700</date>
            <delta_ts>2013-10-30 13:58:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123310-20131029175621.patch</filename>
            <type>text/plain</type>
            <size>16654</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4MjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTA4ZDg4ODQ1YmM4NmEx
NjE0OTM0NmZlYmY1ZThkZDc4MzAxY2M4My4uMzkyYTlmZjQyNWU2MmI3YWJhOTM4NGY2MDY5ZTAw
OTBkZTAyMDRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTEwLTI5ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgVW5kZXJsaW5l
IGJvdW5kcyBjYW5ub3QgYmUgcXVlcmllZCBiZWZvcmUgdW5kZXJsaW5lIGl0c2VsZiBpcyBkcmF3
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMzEw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyCisKKyAgICAgICAgR3JhcGhpY3ND
b250ZXh0J3MgZHJhd0xpbmVGb3JUZXh0IGZ1bmN0aW9uIGlzIHVzZWQgdG8gZHJhdyB1bmRlcmxp
bmVzLAorICAgICAgICBzdHJpa2V0aHJvdWdocywgYW5kIG92ZXJsaW5lcy4gQmVmb3JlIGRyYXdp
bmcgdGhlIGxpbmUsIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgbW9kaWZpZXMgdGhlIGJvdW5kcyBn
aXZlbiB0byBpdCBpbiBvcmRlciB0byBtYWtlIHVuZGVybGluZXMgY3Jpc3AuIEhvd2V2ZXIsICAK
KyAgICAgICAgdGhpcyBtZWFucyB0aGF0IGl0IGlzIGltcG9zc2libGUgdG8ga25vdyB3aGVyZSBh
biB1bmRlcmxpbmUgd2lsbCBiZSBkcmF3bgorICAgICAgICBiZWZvcmUgZHJhd2luZyBpdC4gVGhp
cyBwYXRjaCBwdWxscyBvdXQgdGhpcyBhZGp1c3RtZW50IGNvbXB1dGF0aW9uIGludG8gCisgICAg
ICAgIElubGluZVRleHRCb3gsIHRoZW4gcGFzc2VzIHRoZSByZXN1bHQgdG8gZHJhd0xpbmVGb3JU
ZXh0LgorCisgICAgICAgIEJlY2F1c2UgdGhlcmUgc2hvdWxkIGJlIG5vIG9ic2VydmFibGUgZGlm
ZmVyZW5jZSwgbm8gdGVzdHMgbmVlZCB0byBiZSB1cGRhdGVkLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6IENoYW5naW5nIHRoZSBzaWduYXR1cmUgb2Yg
ZHJhd0xpbmVGb3JUZXh0CisgICAgICAgIHNvIGl0IGNhbiBhY2NlcHQgYm91bmRzIGZyb20gb3Vy
IGhlbHBlciBmdW5jdGlvbgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
UGF0aEJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpk
cmF3TGluZUZvclRleHQpOiBVcGRhdGUgdG8gd29yayB3aXRoIG5ldworICAgICAgICBzaWduYXR1
cmUgb2YgZHJhd0xpbmVGb3JUZXh0CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3TGluZUZvclRleHQpOiBEaXR0bworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0xpbmVGb3JUZXh0KTogRGl0dG8KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dCk6IERpdHRvCisgICAgICAgICogcGxhdGZvcm0v
d2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9EcmF3VGV4
dEF0UG9pbnQpOiBVcGRhdGUgdGhlIGxhc3QgY2FsbCBzaXRlIG9mIGRyYXdMaW5lRm9yVGV4dAor
ICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvbXB1dGVCb3VuZHNGb3JVbmRlcmxpbmUpOiBQdXJlIGZ1bmN0aW9uIHRoYXQgY29tcHV0ZXMg
dGhlIGFkanVzdGVkCisgICAgICAgIGJvdW5kcyBvZiB0aGUgdW5kZXJsaW5lIGFib3V0IHRvIGJl
IGRyYXduCisgICAgICAgIChXZWJDb3JlOjpkcmF3TGluZUZvclRleHQpOiBjYWxscyBjb21wdXRl
Qm91bmRzRm9yVW5kZXJsaW5lIGFuZCB0aGVuCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0xpbmVGb3JUZXh0CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludERlY29y
YXRpb24pOiBVc2UgbmV3IGRyYXdMaW5lRm9yVGV4dCBmdW5jdGlvbgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lVGV4dEJveDo6cGFpbnRDb21wb3NpdGlvblVuZGVybGluZSk6IERpdHRvCisKIDIw
MTMtMTAtMjkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQnVpbGQgZml4IGFmdGVyIDE1ODIyMzsgbWFrZSBUaWxlQ29udHJvbGxlciB1c2UgZmxvYXQg
Zm9yIHNjYWxlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKaW5kZXggYzMwOGNiZDBiN2Q4NTRmM2Q4ZWIwYmVmZDNhOWYzZjRkNGE3
OTdhOC4uMDM5ZWVmZjE3MTY1MjdkMzY0YzlkZWRjYTgxMzVhMzYwYzRjNmM3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAg
LTMzMCw3ICszMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH07CiAgICAgICAg
IEZsb2F0UmVjdCByb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYsIFJvdW5kaW5n
TW9kZSA9IFJvdW5kQWxsU2lkZXMpOwogCi0gICAgICAgIHZvaWQgZHJhd0xpbmVGb3JUZXh0KGNv
bnN0IEZsb2F0UG9pbnQmLCBmbG9hdCB3aWR0aCwgYm9vbCBwcmludGluZyk7CisgICAgICAgIHZv
aWQgZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYgYm91bmRzLCBib29sIHByaW50aW5n
KTsKICAgICAgICAgZW51bSBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSB7CiAgICAgICAgICAgICBE
b2N1bWVudE1hcmtlclNwZWxsaW5nTGluZVN0eWxlLAogICAgICAgICAgICAgRG9jdW1lbnRNYXJr
ZXJHcmFtbWFyTGluZVN0eWxlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9QYXRoQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1BhdGhCbGFja0JlcnJ5LmNwcAppbmRleCBhYzZk
NmJhNjRkZmZjYTBhMTU2ZmFmODAwYjk3Y2RkZGQ4OWQ1NGU2Li5mYWVjNjhiZGU1Y2M2NmZmMjEx
ZmZlYTcxNThiNDM0ZTQ0NmY5NzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L1BhdGhCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1BhdGhCbGFja0JlcnJ5LmNwcApAQCAt
MjYzLDEyICsyNjMsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yRG9jdW1l
bnRNYXJrZXIoY29uc3QgRmxvYXRQb2ludCYgcHQsIGZsb2F0IHdpZHQKICAgICBwbGF0Zm9ybUNv
bnRleHQoKS0+YWRkRHJhd0xpbmVGb3JEb2N1bWVudE1hcmtlcihwdCwgd2lkdGgsIChCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkRvY3VtZW50TWFya2VyTGluZVN0eWxlKXN0eWxlKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dChjb25zdCBGbG9hdFBv
aW50JiBwdCwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYgYm91bmRzLCBib29sIHByaW50aW5n
KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHBsYXRmb3JtQ29udGV4dCgpLT5hZGREcmF3TGluZUZvclRleHQocHQsIHdpZHRoLCBwcmludGlu
Zyk7CisgICAgcGxhdGZvcm1Db250ZXh0KCktPmFkZERyYXdMaW5lRm9yVGV4dChib3VuZHMubG9j
YXRpb24sIGJvdW5kcy53aWR0aCgpLCBwcmludGluZyk7CiB9CiAKIC8vIEZJWE1FOiBkb24ndCBp
Z25vcmUgdGhlIHdpbmRpbmcgcnVsZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwNzA2NApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IDcwMzYwZWQ3
ZWM4NzUyZTYwNDJlZmJjNGYzODg3MTlmNGYyMWMxMGEuLmE3MWIxNDViNDNjZGE1YWQ3MjYxMmYy
NDgxZWIxNzk0YzllZTJiYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTYx
NCw3ICs2MTQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBW
ZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQgd2lkdGgsIGludAogICAgIGNhaXJvX3Jlc3RvcmUo
Y3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZs
b2F0UG9pbnQmIG9yaWdpbiwgZmxvYXQgd2lkdGgsIGJvb2wpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYgYm91bmRzLCBib29sKQogewogICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTYyMywxNiArNjIz
LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQoY29uc3QgRmxvYXRQ
b2ludCYgb3JpZ2luLCBmbG9hdCB3aWR0aCwgYm9vCiAgICAgY2Fpcm9fc2F2ZShjYWlyb0NvbnRl
eHQpOwogCiAgICAgLy8gVGhpcyBidW1waW5nIG9mIDwxIHN0cm9rZSB0aGlja25lc3NlcyBtYXRj
aGVzIHRoZSBvbmUgaW4gZHJhd0xpbmVPbkNhaXJvQ29udGV4dC4KLSAgICBGbG9hdFBvaW50IGVu
ZFBvaW50KG9yaWdpbiArIEludFNpemUod2lkdGgsIDApKTsKLSAgICBGbG9hdFJlY3QgbGluZUV4
dGVudHMob3JpZ2luLCBGbG9hdFNpemUod2lkdGgsIHN0cm9rZVRoaWNrbmVzcygpKSk7CisgICAg
RmxvYXRQb2ludCBlbmRQb2ludChib3VuZHMubG9jYXRpb24oKSArIEludFNpemUoYm91bmRzLndp
ZHRoKCksIDApKTsKKyAgICBGbG9hdFJlY3QgbGluZUV4dGVudHMoYm91bmRzLmxvY2F0aW9uKCks
IEZsb2F0U2l6ZShib3VuZHMud2lkdGgoKSwgc3Ryb2tlVGhpY2tuZXNzKCkpKTsKIAogICAgIFNo
YWRvd0JsdXImIHNoYWRvdyA9IHBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVyKCk7CiAgICAg
aWYgKEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy5iZWdpblNoYWRvd0xh
eWVyKHRoaXMsIGxpbmVFeHRlbnRzKSkgewotICAgICAgICBkcmF3TGluZU9uQ2Fpcm9Db250ZXh0
KHRoaXMsIHNoYWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBvcmlnaW4sIGVu
ZFBvaW50KTsKKyAgICAgICAgZHJhd0xpbmVPbkNhaXJvQ29udGV4dCh0aGlzLCBzaGFkb3dDb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgYm91bmRzLmxvY2F0aW9uKCksIGVuZFBvaW50
KTsKICAgICAgICAgc2hhZG93LmVuZFNoYWRvd0xheWVyKHRoaXMpOwogICAgIH0KIAotICAgIGRy
YXdMaW5lT25DYWlyb0NvbnRleHQodGhpcywgY2Fpcm9Db250ZXh0LCBvcmlnaW4sIGVuZFBvaW50
KTsKKyAgICBkcmF3TGluZU9uQ2Fpcm9Db250ZXh0KHRoaXMsIGNhaXJvQ29udGV4dCwgYm91bmRz
LmxvY2F0aW9uKCksIGVuZFBvaW50KTsKICAgICBjYWlyb19yZXN0b3JlKGNhaXJvQ29udGV4dCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCAxYTljOTA1NWU2YzkyMDNmYjU0MDM5OTFiZWJi
NzRjZTk4M2VkNTVjLi5lNzUyOTNkMzdkODUzOGNhMGM5YjYyZjRlZGRlYzgzZGMxMTcwMGI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0xMjM1LDUzICsxMjM1LDE2IEBAIEZsb2F0UmVjdCBHcmFw
aGljc0NvbnRleHQ6OnJvdW5kVG9EZXZpY2VQaXhlbHMoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBS
b3VuZGluZ01vCiAgICAgcmV0dXJuIEZsb2F0UmVjdChyb3VuZGVkT3JpZ2luLCByb3VuZGVkTG93
ZXJSaWdodCAtIHJvdW5kZWRPcmlnaW4pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCB3aWR0aCwgYm9vbCBw
cmludGluZykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQoY29uc3QgRmxv
YXRSZWN0JiBib3VuZHMsIGJvb2wpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHdpZHRoIDw9IDApCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGZsb2F0IHggPSBwb2ludC54KCk7Ci0gICAgZmxvYXQgeSA9IHBvaW50LnkoKTsKLSAgICBm
bG9hdCBsaW5lTGVuZ3RoID0gd2lkdGg7Ci0KLSAgICAvLyBVc2UgYSBtaW5pbXVtIHRoaWNrbmVz
cyBvZiAwLjUgaW4gdXNlciBzcGFjZS4KLSAgICAvLyBTZWUgaHR0cDovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDI1NSBmb3IgZGV0YWlscyBvZiB3aHkgMC41IGlzIHRoZSByaWdo
dCBtaW5pbXVtIHRoaWNrbmVzcyB0byB1c2UuCi0gICAgZmxvYXQgdGhpY2tuZXNzID0gbWF4KHN0
cm9rZVRoaWNrbmVzcygpLCAwLjVmKTsKLQotICAgIGJvb2wgcmVzdG9yZUFudGlhbGlhc01vZGUg
PSBmYWxzZTsKLQotICAgIGlmICghcHJpbnRpbmcgJiYgZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6
RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSkucHJlc2VydmVzQXhpc0FsaWdubWVudCgpKSB7
Ci0gICAgICAgIC8vIE9uIHNjcmVlbiwgdXNlIGEgbWluaW11bSB0aGlja25lc3Mgb2YgMS4wIGlu
IHVzZXIgc3BhY2UgKGxhdGVyIHJvdW5kZWQgdG8gYW4gaW50ZWdyYWwgbnVtYmVyIGluIGRldmlj
ZSBzcGFjZSkuCi0gICAgICAgIGZsb2F0IGFkanVzdGVkVGhpY2tuZXNzID0gbWF4KHRoaWNrbmVz
cywgMS4wZik7Ci0KLSAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRvbmUgYSBiZXR0
ZXIgd2F5LgotICAgICAgICAvLyBXZSB0cnkgdG8gcm91bmQgYWxsIHBhcmFtZXRlcnMgdG8gaW50
ZWdlciBib3VuZGFyaWVzIGluIGRldmljZSBzcGFjZS4gSWYgcm91bmRpbmcgcGl4ZWxzIGluIGRl
dmljZSBzcGFjZQotICAgICAgICAvLyBtYWtlcyBvdXIgdGhpY2tuZXNzIG1vcmUgdGhhbiBkb3Vi
bGUsIHRoZW4gdGhlcmUgbXVzdCBiZSBhIHNocmlua2luZy1zY2FsZSBmYWN0b3IgYW5kIHJvdW5k
aW5nIHRvIHBpeGVscwotICAgICAgICAvLyBpbiBkZXZpY2Ugc3BhY2Ugd2lsbCBtYWtlIHRoZSB1
bmRlcmxpbmVzIHRvbyB0aGljay4KLSAgICAgICAgQ0dSZWN0IGxpbmVSZWN0ID0gcm91bmRUb0Rl
dmljZVBpeGVscyhGbG9hdFJlY3QoeCwgeSwgbGluZUxlbmd0aCwgYWRqdXN0ZWRUaGlja25lc3Mp
LCBSb3VuZEFsbFNpZGVzKTsKLSAgICAgICAgaWYgKGxpbmVSZWN0LnNpemUuaGVpZ2h0IDwgdGhp
Y2tuZXNzICogMi4wKSB7Ci0gICAgICAgICAgICB4ID0gbGluZVJlY3Qub3JpZ2luLng7Ci0gICAg
ICAgICAgICB5ID0gbGluZVJlY3Qub3JpZ2luLnk7Ci0gICAgICAgICAgICBsaW5lTGVuZ3RoID0g
bGluZVJlY3Quc2l6ZS53aWR0aDsKLSAgICAgICAgICAgIHRoaWNrbmVzcyA9IGxpbmVSZWN0LnNp
emUuaGVpZ2h0OwotICAgICAgICAgICAgaWYgKHNob3VsZEFudGlhbGlhcygpKSB7Ci0gICAgICAg
ICAgICAgICAgQ0dDb250ZXh0U2V0U2hvdWxkQW50aWFsaWFzKHBsYXRmb3JtQ29udGV4dCgpLCBm
YWxzZSk7Ci0gICAgICAgICAgICAgICAgcmVzdG9yZUFudGlhbGlhc01vZGUgPSB0cnVlOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCiAgICAgaWYgKGZpbGxDb2xvcigpICE9IHN0
cm9rZUNvbG9yKCkpCiAgICAgICAgIHNldENHRmlsbENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBz
dHJva2VDb2xvcigpLCBzdHJva2VDb2xvclNwYWNlKCkpOwotICAgIENHQ29udGV4dEZpbGxSZWN0
KHBsYXRmb3JtQ29udGV4dCgpLCBDR1JlY3RNYWtlKHgsIHksIGxpbmVMZW5ndGgsIHRoaWNrbmVz
cykpOworICAgIENHQ29udGV4dEZpbGxSZWN0KHBsYXRmb3JtQ29udGV4dCgpLCBDR1JlY3RNYWtl
KGJvdW5kcy5sb2NhdGlvbigpLngoKSwgYm91bmRzLmxvY2F0aW9uKCkueSgpLCBib3VuZHMud2lk
dGgoKSwgYm91bmRzLmhlaWdodCgpKSk7CiAgICAgaWYgKGZpbGxDb2xvcigpICE9IHN0cm9rZUNv
bG9yKCkpCiAgICAgICAgIHNldENHRmlsbENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBmaWxsQ29s
b3IoKSwgZmlsbENvbG9yU3BhY2UoKSk7Ci0KLSAgICBpZiAocmVzdG9yZUFudGlhbGlhc01vZGUp
Ci0gICAgICAgIENHQ29udGV4dFNldFNob3VsZEFudGlhbGlhcyhwbGF0Zm9ybUNvbnRleHQoKSwg
dHJ1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNvbnN0IFVS
TCYgbGluaywgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5D
RS5jcHAKaW5kZXggMWZmM2ZhZTFhZDkzMjUwNTA0ZGFlYWI1Nzc0MGFmMWY3OGE2ODFjZi4uMTU3
ZmFlNDhhNzlkZDMzYjBlMjc4NjFjMjM4OTNhYTRkZjhiMWY5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29u
dGV4dFdpbkNFLmNwcApAQCAtOTUwLDE0ICs5NTAsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50IHdpZHRoLCBp
bnQKICAgICBEcmF3Rm9jdXNSZWN0KGRjLCAmcmVjdCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3TGluZUZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgb3JpZ2luLCBmbG9hdCB3aWR0
aCwgYm9vbCBwcmludGluZykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQo
Y29uc3QgRmxvYXRSZWN0JiBib3VuZHMsIGJvb2wpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3Ryb2tlU3R5bGUgb2xkU3R5bGUgPSBzdHJv
a2VTdHlsZSgpOwogICAgIHNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKLSAgICBkcmF3TGlu
ZShyb3VuZGVkSW50UG9pbnQob3JpZ2luKSwgcm91bmRlZEludFBvaW50KG9yaWdpbiArIEZsb2F0
U2l6ZSh3aWR0aCwgMCkpKTsKKyAgICBkcmF3TGluZShyb3VuZGVkSW50UG9pbnQoYm91bmRzLmxv
Y2F0aW9uKCkpLCByb3VuZGVkSW50UG9pbnQoYm91bmRzLmxvY2F0aW9uKCkgKyBGbG9hdFNpemUo
Ym91bmRzLndpZHRoKCksIDApKSk7CiAgICAgc2V0U3Ryb2tlU3R5bGUob2xkU3R5bGUpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5k
ZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJl
ci5jcHAKaW5kZXggZjU0MGZmYmYwMjE5N2U0MWE3NzYzYmFhZmFkODk1YmNmNDAwZWYzYS4uM2Qw
MDdjZmY5YzY5MzkyYThkNzZiODlkYjhlYjljZWUzYTM0MmY4NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcApAQCAtNzYsNyAr
NzYsOCBAQCBzdGF0aWMgdm9pZCBkb0RyYXdUZXh0QXRQb2ludChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29ucwogICAgICAgICB1bmRlcmxpbmVQb2ludC5t
b3ZlKGJlZm9yZVdpZHRoLCAxKTsKIAogICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGNv
bG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgY29udGV4dC5kcmF3TGluZUZvclRl
eHQodW5kZXJsaW5lUG9pbnQsIHVuZGVybGluZWRXaWR0aCwgZmFsc2UpOworICAgICAgICBGbG9h
dFJlY3QgYm91bmRzKHVuZGVybGluZVBvaW50LCBGbG9hdFNpemUodW5kZXJsaW5lZFdpZHRoLCBj
b250ZXh0LnN0cm9rZVRoaWNrbmVzcygpKSk7CisgICAgICAgIGNvbnRleHQuZHJhd0xpbmVGb3JU
ZXh0KGJvdW5kcywgZmFsc2UpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZVRleHRCb3guY3BwCmluZGV4IDI5ZWEyMDMzNDdkM2ZlOWZjYWMyZTlkMzkyMmMxY2Y1
MWEwZDNhZDkuLmEwMGU2YzJkM2RlODZhZmFiYjU0NmEzMTUwZDdlYmY0MjQ3MWNlNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTY2LDYgKzY2LDQ5
IEBAIENPTVBJTEVfQVNTRVJUKHNpemVvZihJbmxpbmVUZXh0Qm94KSA9PSBzaXplb2YoU2FtZVNp
emVBc0lubGluZVRleHRCb3gpLCBJbmxpbmVUCiB0eXBlZGVmIFdURjo6SGFzaE1hcDxjb25zdCBJ
bmxpbmVUZXh0Qm94KiwgTGF5b3V0UmVjdD4gSW5saW5lVGV4dEJveE92ZXJmbG93TWFwOwogc3Rh
dGljIElubGluZVRleHRCb3hPdmVyZmxvd01hcCogZ1RleHRCb3hlc1dpdGhPdmVyZmxvdzsKIAor
c3RhdGljIEZsb2F0UmVjdCBjb21wdXRlQm91bmRzRm9yVW5kZXJsaW5lKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgdG9wbGVmdCwgZmxvYXQgbGVuZ3RoLCBib29s
IHByaW50aW5nLCBib29sJiBzaG91bGRBbnRpYWxpYXMpCit7CisgICAgZmxvYXQgdGhpY2tuZXNz
ID0gc3RkOjptYXgoY29udGV4dC5zdHJva2VUaGlja25lc3MoKSwgMC41Zik7CisgICAgCisgICAg
RmxvYXRSZWN0IGJvdW5kcyh0b3BsZWZ0LCBGbG9hdFNpemUobGVuZ3RoLCB0aGlja25lc3MpKTsK
KworICAgIHNob3VsZEFudGlhbGlhcyA9IHRydWU7CisgICAgCisgICAgaWYgKHByaW50aW5nIHx8
IGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFjb250ZXh0LmdldENUTShHcmFwaGljc0Nv
bnRleHQ6OkRlZmluaXRlbHlJbmNsdWRlRGV2aWNlU2NhbGUpLnByZXNlcnZlc0F4aXNBbGlnbm1l
bnQoKSkKKyAgICAgICAgcmV0dXJuIGJvdW5kczsKKworICAgIC8vIE9uIHNjcmVlbiwgdXNlIGEg
bWluaW11bSB0aGlja25lc3Mgb2YgMS4wIGluIHVzZXIgc3BhY2UgKGxhdGVyIHJvdW5kZWQgdG8g
YW4gaW50ZWdyYWwgbnVtYmVyIGluIGRldmljZSBzcGFjZSkuCisgICAgRmxvYXRSZWN0IGFkanVz
dGVkQm91bmRzID0gYm91bmRzOworICAgIGFkanVzdGVkQm91bmRzLnNldEhlaWdodChzdGQ6Om1h
eCh0aGlja25lc3MsIDEuMGYpKTsKKworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBkb25l
IGEgYmV0dGVyIHdheS4KKyAgICAvLyBXZSB0cnkgdG8gcm91bmQgYWxsIHBhcmFtZXRlcnMgdG8g
aW50ZWdlciBib3VuZGFyaWVzIGluIGRldmljZSBzcGFjZS4gSWYgcm91bmRpbmcgcGl4ZWxzIGlu
IGRldmljZSBzcGFjZQorICAgIC8vIG1ha2VzIG91ciB0aGlja25lc3MgbW9yZSB0aGFuIGRvdWJs
ZSwgdGhlbiB0aGVyZSBtdXN0IGJlIGEgc2hyaW5raW5nLXNjYWxlIGZhY3RvciBhbmQgcm91bmRp
bmcgdG8gcGl4ZWxzCisgICAgLy8gaW4gZGV2aWNlIHNwYWNlIHdpbGwgbWFrZSB0aGUgdW5kZXJs
aW5lcyB0b28gdGhpY2suCisgICAgRmxvYXRSZWN0IGxpbmVSZWN0ID0gY29udGV4dC5yb3VuZFRv
RGV2aWNlUGl4ZWxzKGFkanVzdGVkQm91bmRzLCBHcmFwaGljc0NvbnRleHQ6OlJvdW5kQWxsU2lk
ZXMpOworICAgIGlmIChsaW5lUmVjdC5oZWlnaHQoKSA8IHRoaWNrbmVzcyAqIDIuMCkgeworICAg
ICAgICBzaG91bGRBbnRpYWxpYXMgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIGxpbmVSZWN0Owor
ICAgIH0KKworICAgIHJldHVybiBib3VuZHM7Cit9CisKK3N0YXRpYyB2b2lkIGRyYXdMaW5lRm9y
VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIHRvcGxlZnQs
IGZsb2F0IHdpZHRoLCBib29sIHByaW50aW5nKQoreworICAgIGlmICh3aWR0aCA8PSAwKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgYm9vbCBzaG91bGRBbnRpYWxpYXM7CisgICAgCisgICAg
RmxvYXRSZWN0IHVuZGVybGluZUJvdW5kcyA9IGNvbXB1dGVCb3VuZHNGb3JVbmRlcmxpbmUoY29u
dGV4dCwgdG9wbGVmdCwgd2lkdGgsIHByaW50aW5nLCBzaG91bGRBbnRpYWxpYXMpOworICAgIAor
ICAgIGJvb2wgd2FzQW50aWFsaWFzaW5nID0gY29udGV4dC5zaG91bGRBbnRpYWxpYXMoKTsKKyAg
ICBjb250ZXh0LnNldFNob3VsZEFudGlhbGlhcyhzaG91bGRBbnRpYWxpYXMpOworICAgIGNvbnRl
eHQuZHJhd0xpbmVGb3JUZXh0KHVuZGVybGluZUJvdW5kcywgcHJpbnRpbmcpOworICAgIGNvbnRl
eHQuc2V0U2hvdWxkQW50aWFsaWFzKHdhc0FudGlhbGlhc2luZyk7Cit9CisKIHZvaWQgSW5saW5l
VGV4dEJveDo6ZGVzdHJveShSZW5kZXJBcmVuYSYgYXJlbmEpCiB7CiAgICAgaWYgKCFrbm93blRv
SGF2ZU5vT3ZlcmZsb3coKSAmJiBnVGV4dEJveGVzV2l0aE92ZXJmbG93KQpAQCAtMTExMCwxNCAr
MTE1MywxNCBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmCiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGNv
bnRleHQtPmRyYXdMaW5lRm9yVGV4dChGbG9hdFBvaW50KGxvY2FsT3JpZ2luLngoKSwgbG9jYWxP
cmlnaW4ueSgpICsgdW5kZXJsaW5lT2Zmc2V0KSwgd2lkdGgsIGlzUHJpbnRpbmcpOworICAgICAg
ICAgICAgICAgIGRyYXdMaW5lRm9yVGV4dCgqY29udGV4dCwgRmxvYXRQb2ludChsb2NhbE9yaWdp
bi54KCksIGxvY2FsT3JpZ2luLnkoKSArIHVuZGVybGluZU9mZnNldCksIHdpZHRoLCBpc1ByaW50
aW5nKTsKIAogICAgICAgICAgICAgICAgIGlmIChkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29y
YXRpb25TdHlsZURvdWJsZSkKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0xpbmVG
b3JUZXh0KEZsb2F0UG9pbnQobG9jYWxPcmlnaW4ueCgpLCBsb2NhbE9yaWdpbi55KCkgKyB1bmRl
cmxpbmVPZmZzZXQgKyBkb3VibGVPZmZzZXQpLCB3aWR0aCwgaXNQcmludGluZyk7CisgICAgICAg
ICAgICAgICAgICAgIGRyYXdMaW5lRm9yVGV4dCgqY29udGV4dCwgRmxvYXRQb2ludChsb2NhbE9y
aWdpbi54KCksIGxvY2FsT3JpZ2luLnkoKSArIHVuZGVybGluZU9mZnNldCArIGRvdWJsZU9mZnNl
dCksIHdpZHRoLCBpc1ByaW50aW5nKTsKICAgICAgICAgICAgIH0KICNlbHNlCiAgICAgICAgICAg
ICAvLyBMZWF2ZSBvbmUgcGl4ZWwgb2Ygd2hpdGUgYmV0d2VlbiB0aGUgYmFzZWxpbmUgYW5kIHRo
ZSB1bmRlcmxpbmUuCi0gICAgICAgICAgICBjb250ZXh0LT5kcmF3TGluZUZvclRleHQoRmxvYXRQ
b2ludChsb2NhbE9yaWdpbi54KCksIGxvY2FsT3JpZ2luLnkoKSArIGJhc2VsaW5lICsgMSksIHdp
ZHRoLCBpc1ByaW50aW5nKTsKKyAgICAgICAgICAgIGRyYXdMaW5lRm9yVGV4dCgqY29udGV4dCwg
RmxvYXRQb2ludChsb2NhbE9yaWdpbi54KCksIGxvY2FsT3JpZ2luLnkoKSArIGJhc2VsaW5lICsg
MSksIHdpZHRoLCBpc1ByaW50aW5nKTsKICNlbmRpZiAvLyBDU1MzX1RFWFQKICAgICAgICAgfQog
ICAgICAgICBpZiAoZGVjbyAmIFRleHREZWNvcmF0aW9uT3ZlcmxpbmUpIHsKQEAgLTExMzIsMTAg
KzExNzUsMTAgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JgogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgZGVmYXVsdDoKICNlbmRpZiAvLyBDU1MzX1RFWFQKLSAgICAgICAgICAgICAgICBjb250
ZXh0LT5kcmF3TGluZUZvclRleHQobG9jYWxPcmlnaW4sIHdpZHRoLCBpc1ByaW50aW5nKTsKKyAg
ICAgICAgICAgICAgICBkcmF3TGluZUZvclRleHQoKmNvbnRleHQsIGxvY2FsT3JpZ2luLCB3aWR0
aCwgaXNQcmludGluZyk7CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICAgICAgICAgICAgICBp
ZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGUpCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdMaW5lRm9yVGV4dChGbG9hdFBvaW50KGxvY2FsT3Jp
Z2luLngoKSwgbG9jYWxPcmlnaW4ueSgpIC0gZG91YmxlT2Zmc2V0KSwgd2lkdGgsIGlzUHJpbnRp
bmcpOworICAgICAgICAgICAgICAgICAgICBkcmF3TGluZUZvclRleHQoKmNvbnRleHQsIEZsb2F0
UG9pbnQobG9jYWxPcmlnaW4ueCgpLCBsb2NhbE9yaWdpbi55KCkgLSBkb3VibGVPZmZzZXQpLCB3
aWR0aCwgaXNQcmludGluZyk7CiAgICAgICAgICAgICB9CiAjZW5kaWYgLy8gQ1NTM19URVhUCiAg
ICAgICAgIH0KQEAgLTExNTEsMTAgKzExOTQsMTAgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWlu
dERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50Jgog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgZGVmYXVsdDoKICNlbmRpZiAvLyBDU1MzX1RFWFQK
LSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3TGluZUZvclRleHQoRmxvYXRQb2ludChsb2Nh
bE9yaWdpbi54KCksIGxvY2FsT3JpZ2luLnkoKSArIDIgKiBiYXNlbGluZSAvIDMpLCB3aWR0aCwg
aXNQcmludGluZyk7CisgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JUZXh0KCpjb250ZXh0LCBG
bG9hdFBvaW50KGxvY2FsT3JpZ2luLngoKSwgbG9jYWxPcmlnaW4ueSgpICsgMiAqIGJhc2VsaW5l
IC8gMyksIHdpZHRoLCBpc1ByaW50aW5nKTsKICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgICAg
ICAgICAgICAgIGlmIChkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZURvdWJs
ZSkKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0xpbmVGb3JUZXh0KEZsb2F0UG9p
bnQobG9jYWxPcmlnaW4ueCgpLCBsb2NhbE9yaWdpbi55KCkgKyBkb3VibGVPZmZzZXQgKyAyICog
YmFzZWxpbmUgLyAzKSwgd2lkdGgsIGlzUHJpbnRpbmcpOworICAgICAgICAgICAgICAgICAgICBk
cmF3TGluZUZvclRleHQoKmNvbnRleHQsIEZsb2F0UG9pbnQobG9jYWxPcmlnaW4ueCgpLCBsb2Nh
bE9yaWdpbi55KCkgKyBkb3VibGVPZmZzZXQgKyAyICogYmFzZWxpbmUgLyAzKSwgd2lkdGgsIGlz
UHJpbnRpbmcpOwogICAgICAgICAgICAgfQogI2VuZGlmIC8vIENTUzNfVEVYVAogICAgICAgICB9
CkBAIC0xNDAyLDcgKzE0NDUsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRp
b25VbmRlcmxpbmUoR3JhcGhpY3NDb250ZXh0KiBjdHgsIGNvbnN0IEZsb2F0UAogCiAgICAgY3R4
LT5zZXRTdHJva2VDb2xvcih1bmRlcmxpbmUuY29sb3IsIHJlbmRlcmVyKCkuc3R5bGUoKS5jb2xv
clNwYWNlKCkpOwogICAgIGN0eC0+c2V0U3Ryb2tlVGhpY2tuZXNzKGxpbmVUaGlja25lc3MpOwot
ICAgIGN0eC0+ZHJhd0xpbmVGb3JUZXh0KEZsb2F0UG9pbnQoYm94T3JpZ2luLngoKSArIHN0YXJ0
LCBib3hPcmlnaW4ueSgpICsgbG9naWNhbEhlaWdodCgpIC0gbGluZVRoaWNrbmVzcyksIHdpZHRo
LCByZW5kZXJlcigpLmRvY3VtZW50KCkucHJpbnRpbmcoKSk7CisgICAgZHJhd0xpbmVGb3JUZXh0
KCpjdHgsIEZsb2F0UG9pbnQoYm94T3JpZ2luLngoKSArIHN0YXJ0LCBib3hPcmlnaW4ueSgpICsg
bG9naWNhbEhlaWdodCgpIC0gbGluZVRoaWNrbmVzcyksIHdpZHRoLCByZW5kZXJlcigpLmRvY3Vt
ZW50KCkucHJpbnRpbmcoKSk7CiB9CiAKIGludCBJbmxpbmVUZXh0Qm94OjpjYXJldE1pbk9mZnNl
dCgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215561</attachid>
            <date>2013-10-30 13:58:22 -0700</date>
            <delta_ts>2013-10-31 13:15:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123310-20131030135821.patch</filename>
            <type>text/plain</type>
            <size>11140</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4Mjk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmVkMmFkMzg1NmI3ZjVk
ZGRjMjQ1M2IwMDg5YTUyOWVlZjY0NGU2Yi4uMjYzN2IzNGI3MDdjMjA3ZDcwOTVhYjYxZmQ2N2Y4
NjQ4MzI0ODBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEzLTEwLTMwICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgVW5kZXJsaW5l
IGJvdW5kcyBjYW5ub3QgYmUgcXVlcmllZCBiZWZvcmUgdW5kZXJsaW5lIGl0c2VsZiBpcyBkcmF3
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMzEw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR3JhcGhp
Y3NDb250ZXh0J3MgZHJhd0xpbmVGb3JUZXh0IGZ1bmN0aW9uIGlzIHVzZWQgdG8gZHJhdyB1bmRl
cmxpbmVzLAorICAgICAgICBzdHJpa2V0aHJvdWdocywgYW5kIG92ZXJsaW5lcy4gQmVmb3JlIGRy
YXdpbmcgdGhlIGxpbmUsIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgbW9kaWZpZXMgdGhlIGJvdW5k
cyBnaXZlbiB0byBpdCBpbiBvcmRlciB0byBtYWtlIHVuZGVybGluZXMgY3Jpc3AuIEhvd2V2ZXIs
CisgICAgICAgIHRoaXMgbWVhbnMgdGhhdCBpdCBpcyBpbXBvc3NpYmxlIHRvIGtub3cgd2hlcmUg
YW4gdW5kZXJsaW5lIHdpbGwgYmUgZHJhd24KKyAgICAgICAgYmVmb3JlIGRyYXdpbmcgaXQuIFRo
aXMgcGF0Y2ggcHVsbHMgb3V0IHRoaXMgYWRqdXN0bWVudCBjb21wdXRhdGlvbiBpbnRvCisgICAg
ICAgIEdyYXBoaWNzQ29udGV4dDo6Y29tcHV0ZUxpbmVCb3VuZHNGb3JUZXh0LCB0aGVuIHBhc3Nl
cyB0aGUgcmVzdWx0IHRvCisgICAgICAgIGRyYXdMaW5lRm9yVGV4dAorCisgICAgICAgIEJlY2F1
c2UgdGhlcmUgc2hvdWxkIGJlIG5vIG9ic2VydmFibGUgZGlmZmVyZW5jZSwgbm8gdGVzdHMgbmVl
ZCB0byBiZSB1cGRhdGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0Lmg6IFNpZ25hdHVyZSBvZiBuZXcgY29tcHV0ZUxpbmVCb3VuZHNGb3JUZXh0CisgICAg
ICAgIGZ1bmN0aW9uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9QYXRo
QmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNvbXB1
dGVMaW5lQm91bmRzRm9yVGV4dCk6IEltcGxlbWVudCBuZXcgZnVuY3Rpb24KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNvbXB1dGVMaW5lQm91bmRzRm9yVGV4dCk6IERp
dHRvCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dCk6
IFVzZSBjb21wdXRlTGluZUJvdW5kc0ZvclRleHQKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlTGlu
ZUJvdW5kc0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KTogU3RhdGljIGZ1bmN0aW9uIHRoYXQK
KyAgICAgICAgcGVyZm9ybXMgdGhlIGFjdHVhbCBib3VuZHMgY29tcHV0YXRpb24KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y29tcHV0ZUxpbmVCb3VuZHNGb3JUZXh0KTogQ2Fs
bHMKKyAgICAgICAgY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dAor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQpOiBVc2Ug
bmV3IGZ1bmN0aW9uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3ND
b250ZXh0V2luQ0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpjb21w
dXRlTGluZUJvdW5kc0ZvclRleHQpOiBJbXBsZW1lbnQgbmV3IGZ1bmN0aW9uCisKIDIwMTMtMTAt
MzAgIFRoaWFnbyBkZSBCYXJyb3MgTGFjZXJkYSAgPHRoaWFnby5sYWNlcmRhQG9wZW5ib3NzYS5v
cmc+CiAKICAgICAgICAgRXhwbGljaXRseSBpbml0aWFsaXplIGJhc2UgY2xhc3MgaW4gTWVkaVN0
cmVhbVRyYWNrUHJpdmF0ZSBjb3B5IGNvbnN0cnVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGMzMDhjYmQwYjdkODU0
ZjNkOGViMGJlZmQzYTlmM2Y0ZDRhNzk3YTguLjQ0MmU0OTE4MjAzZjYxZTliODA2OWNlNTliZDEy
Y2VlYzQ2OTkxZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCkBAIC0zMzAsNiArMzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB9OwogICAgICAgICBGbG9hdFJlY3Qgcm91bmRUb0RldmljZVBpeGVscyhjb25z
dCBGbG9hdFJlY3QmLCBSb3VuZGluZ01vZGUgPSBSb3VuZEFsbFNpZGVzKTsKIAorICAgICAgICBG
bG9hdFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9h
dCB3aWR0aCwgYm9vbCBwcmludGluZyk7CiAgICAgICAgIHZvaWQgZHJhd0xpbmVGb3JUZXh0KGNv
bnN0IEZsb2F0UG9pbnQmLCBmbG9hdCB3aWR0aCwgYm9vbCBwcmludGluZyk7CiAgICAgICAgIGVu
dW0gRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUgewogICAgICAgICAgICAgRG9jdW1lbnRNYXJrZXJT
cGVsbGluZ0xpbmVTdHlsZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvUGF0aEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9QYXRoQmxhY2tCZXJyeS5jcHAKaW5kZXggYWM2ZDZi
YTY0ZGZmY2EwYTE1NmZhZjgwMGI5N2NkZGRkODlkNTRlNi4uMDkyNzNhYmQxZThiOGVlNTRkMGFh
ZWJjNzlhYjJmYjMyOWZjNWUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9QYXRoQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9QYXRoQmxhY2tCZXJyeS5jcHAKQEAgLTI2
Myw2ICsyNjMsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yRG9jdW1lbnRN
YXJrZXIoY29uc3QgRmxvYXRQb2ludCYgcHQsIGZsb2F0IHdpZHQKICAgICBwbGF0Zm9ybUNvbnRl
eHQoKS0+YWRkRHJhd0xpbmVGb3JEb2N1bWVudE1hcmtlcihwdCwgd2lkdGgsIChCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkRvY3VtZW50TWFya2VyTGluZVN0eWxlKXN0eWxlKTsKIH0K
IAorRmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4dDo6Y29tcHV0ZUxpbmVCb3VuZHNGb3JUZXh0KGNv
bnN0IEZsb2F0UG9pbnQmIHB0LCBmbG9hdCB3aWR0aCwgYm9vbCBwcmludGluZykKK3sKKyAgICBy
ZXR1cm4gRmxvYXRSZWN0KHB0LCBGbG9hdFNpemUod2lkdGgsIHN0cm9rZVRoaWNrbmVzcygpKSk7
Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQoY29uc3QgRmxvYXRQ
b2ludCYgcHQsIGZsb2F0IHdpZHRoLCBib29sIHByaW50aW5nKQogewogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggNzAzNjBlZDdl
Yzg3NTJlNjA0MmVmYmM0ZjM4ODcxOWY0ZjIxYzEwYS4uZDFjYWFmYTk0MmRjNjY2NmQwNTExMDhk
ZmQ3MzE5MGZiYWZhODY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtNjE0
LDcgKzYxNCwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBW
ZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQgd2lkdGgsIGludAogICAgIGNhaXJvX3Jlc3RvcmUo
Y3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZs
b2F0UG9pbnQmIG9yaWdpbiwgZmxvYXQgd2lkdGgsIGJvb2wpCitGbG9hdFJlY3QgR3JhcGhpY3ND
b250ZXh0Ojpjb21wdXRlTGluZUJvdW5kc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgb3JpZ2lu
LCBmbG9hdCB3aWR0aCwgYm9vbCkKK3sKKyAgICByZXR1cm4gRmxvYXRSZWN0KG9yaWdpbiwgRmxv
YXRTaXplKHdpZHRoLCBzdHJva2VUaGlja25lc3MoKSkpOworfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIG9yaWdpbiwgZmxvYXQgd2lk
dGgsIGJvb2wgcHJpbnRpbmcpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNjI0LDcgKzYyOSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
TGluZUZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgb3JpZ2luLCBmbG9hdCB3aWR0aCwgYm9vCiAK
ICAgICAvLyBUaGlzIGJ1bXBpbmcgb2YgPDEgc3Ryb2tlIHRoaWNrbmVzc2VzIG1hdGNoZXMgdGhl
IG9uZSBpbiBkcmF3TGluZU9uQ2Fpcm9Db250ZXh0LgogICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQo
b3JpZ2luICsgSW50U2l6ZSh3aWR0aCwgMCkpOwotICAgIEZsb2F0UmVjdCBsaW5lRXh0ZW50cyhv
cmlnaW4sIEZsb2F0U2l6ZSh3aWR0aCwgc3Ryb2tlVGhpY2tuZXNzKCkpKTsKKyAgICBGbG9hdFJl
Y3QgbGluZUV4dGVudHMgPSBjb21wdXRlTGluZUJvdW5kc0ZvclRleHQob3JpZ2luLCB3aWR0aCwg
cHJpbnRpbmcpOwogCiAgICAgU2hhZG93Qmx1ciYgc2hhZG93ID0gcGxhdGZvcm1Db250ZXh0KCkt
PnNoYWRvd0JsdXIoKTsKICAgICBpZiAoR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0g
c2hhZG93LmJlZ2luU2hhZG93TGF5ZXIodGhpcywgbGluZUV4dGVudHMpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHAKaW5kZXggMWE5YzkwNTVlNmM5MjAzZmI1NDAzOTkxYmViYjc0Y2U5ODNlZDU1Yy4uNjJi
M2QzMjg3MzFkZmQ2Nzc0NzYzY2UzNDFlZjI3MjY1OWY5MTc0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNw
cApAQCAtMTIzNSw2ICsxMjM1LDQyIEBAIEZsb2F0UmVjdCBHcmFwaGljc0NvbnRleHQ6OnJvdW5k
VG9EZXZpY2VQaXhlbHMoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBSb3VuZGluZ01vCiAgICAgcmV0
dXJuIEZsb2F0UmVjdChyb3VuZGVkT3JpZ2luLCByb3VuZGVkTG93ZXJSaWdodCAtIHJvdW5kZWRP
cmlnaW4pOwogfQogCitzdGF0aWMgRmxvYXRSZWN0IGNvbXB1dGVMaW5lQm91bmRzQW5kQW50aWFs
aWFzaW5nTW9kZUZvclRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBv
aW50JiBwb2ludCwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcsIGJvb2wmIHNob3VsZEFudGlh
bGlhcykKK3sKKyAgICBzaG91bGRBbnRpYWxpYXMgPSB0cnVlOworCisgICAgaWYgKHdpZHRoIDw9
IDApCisgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKKworICAgIC8vIFVzZSBhIG1pbmltdW0g
dGhpY2tuZXNzIG9mIDAuNSBpbiB1c2VyIHNwYWNlLgorICAgIC8vIFNlZSBodHRwOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjU1IGZvciBkZXRhaWxzIG9mIHdoeSAwLjUgaXMg
dGhlIHJpZ2h0IG1pbmltdW0gdGhpY2tuZXNzIHRvIHVzZS4KKyAgICBGbG9hdFJlY3QgaW5pdGlh
bEJvdW5kcyhwb2ludCwgRmxvYXRTaXplKHdpZHRoLCBtYXgoY29udGV4dC5zdHJva2VUaGlja25l
c3MoKSwgMC41ZikpKTsKKworICAgIGlmIChwcmludGluZyB8fCAhY29udGV4dC5nZXRDVE0oR3Jh
cGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKS5wcmVzZXJ2ZXNBeGlz
QWxpZ25tZW50KCkpCisgICAgICAgIHJldHVybiBpbml0aWFsQm91bmRzOworCisgICAgLy8gT24g
c2NyZWVuLCB1c2UgYSBtaW5pbXVtIHRoaWNrbmVzcyBvZiAxLjAgaW4gdXNlciBzcGFjZSAobGF0
ZXIgcm91bmRlZCB0byBhbiBpbnRlZ3JhbCBudW1iZXIgaW4gZGV2aWNlIHNwYWNlKS4KKyAgICBG
bG9hdFJlY3QgYWRqdXN0ZWRCb3VuZHMgPSBpbml0aWFsQm91bmRzOworICAgIGFkanVzdGVkQm91
bmRzLnNldEhlaWdodChtYXgoaW5pdGlhbEJvdW5kcy53aWR0aCgpLCAxLjBmKSk7CisKKyAgICAv
LyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZG9uZSBhIGJldHRlciB3YXkuCisgICAgLy8gV2UgdHJ5
IHRvIHJvdW5kIGFsbCBwYXJhbWV0ZXJzIHRvIGludGVnZXIgYm91bmRhcmllcyBpbiBkZXZpY2Ug
c3BhY2UuIElmIHJvdW5kaW5nIHBpeGVscyBpbiBkZXZpY2Ugc3BhY2UKKyAgICAvLyBtYWtlcyBv
dXIgdGhpY2tuZXNzIG1vcmUgdGhhbiBkb3VibGUsIHRoZW4gdGhlcmUgbXVzdCBiZSBhIHNocmlu
a2luZy1zY2FsZSBmYWN0b3IgYW5kIHJvdW5kaW5nIHRvIHBpeGVscworICAgIC8vIGluIGRldmlj
ZSBzcGFjZSB3aWxsIG1ha2UgdGhlIHVuZGVybGluZXMgdG9vIHRoaWNrLgorICAgIEZsb2F0UmVj
dCBsaW5lUmVjdCA9IGNvbnRleHQucm91bmRUb0RldmljZVBpeGVscyhhZGp1c3RlZEJvdW5kcywg
R3JhcGhpY3NDb250ZXh0OjpSb3VuZEFsbFNpZGVzKTsKKyAgICBpZiAobGluZVJlY3QuaGVpZ2h0
KCkgPCBpbml0aWFsQm91bmRzLmhlaWdodCgpICogMi4wKSB7CisgICAgICAgIHNob3VsZEFudGlh
bGlhcyA9IGZhbHNlOworICAgICAgICByZXR1cm4gbGluZVJlY3Q7CisgICAgfQorICAgIHJldHVy
biBpbml0aWFsQm91bmRzOworfQorCitGbG9hdFJlY3QgR3JhcGhpY3NDb250ZXh0Ojpjb21wdXRl
TGluZUJvdW5kc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHdpZHRoLCBi
b29sIHByaW50aW5nKQoreworICAgIGJvb2wgZHVtbXk7CisgICAgcmV0dXJuIGNvbXB1dGVMaW5l
Qm91bmRzQW5kQW50aWFsaWFzaW5nTW9kZUZvclRleHQoKnRoaXMsIHBvaW50LCB3aWR0aCwgcHJp
bnRpbmcsIGR1bW15KTsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4
dChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcpCiB7
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKQEAgLTEyNDMsNDIgKzEyNzksMjEgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBwb2lu
dCwgZmxvYXQgd2lkdGgsIGJvb2wKICAgICBpZiAod2lkdGggPD0gMCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZmxvYXQgeCA9IHBvaW50LngoKTsKLSAgICBmbG9hdCB5ID0gcG9pbnQueSgpOwot
ICAgIGZsb2F0IGxpbmVMZW5ndGggPSB3aWR0aDsKKyAgICBib29sIHNob3VsZEFudGlhbGlhc0xp
bmU7CisgICAgRmxvYXRSZWN0IGJvdW5kcyA9IGNvbXB1dGVMaW5lQm91bmRzQW5kQW50aWFsaWFz
aW5nTW9kZUZvclRleHQoKnRoaXMsIHBvaW50LCB3aWR0aCwgcHJpbnRpbmcsIHNob3VsZEFudGlh
bGlhc0xpbmUpOwogCi0gICAgLy8gVXNlIGEgbWluaW11bSB0aGlja25lc3Mgb2YgMC41IGluIHVz
ZXIgc3BhY2UuCi0gICAgLy8gU2VlIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQyNTUgZm9yIGRldGFpbHMgb2Ygd2h5IDAuNSBpcyB0aGUgcmlnaHQgbWluaW11bSB0aGlj
a25lc3MgdG8gdXNlLgotICAgIGZsb2F0IHRoaWNrbmVzcyA9IG1heChzdHJva2VUaGlja25lc3Mo
KSwgMC41Zik7Ci0KLSAgICBib29sIHJlc3RvcmVBbnRpYWxpYXNNb2RlID0gZmFsc2U7Ci0KLSAg
ICBpZiAoIXByaW50aW5nICYmIGdldENUTShHcmFwaGljc0NvbnRleHQ6OkRlZmluaXRlbHlJbmNs
dWRlRGV2aWNlU2NhbGUpLnByZXNlcnZlc0F4aXNBbGlnbm1lbnQoKSkgewotICAgICAgICAvLyBP
biBzY3JlZW4sIHVzZSBhIG1pbmltdW0gdGhpY2tuZXNzIG9mIDEuMCBpbiB1c2VyIHNwYWNlIChs
YXRlciByb3VuZGVkIHRvIGFuIGludGVncmFsIG51bWJlciBpbiBkZXZpY2Ugc3BhY2UpLgotICAg
ICAgICBmbG9hdCBhZGp1c3RlZFRoaWNrbmVzcyA9IG1heCh0aGlja25lc3MsIDEuMGYpOwotCi0g
ICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBkb25lIGEgYmV0dGVyIHdheS4KLSAgICAg
ICAgLy8gV2UgdHJ5IHRvIHJvdW5kIGFsbCBwYXJhbWV0ZXJzIHRvIGludGVnZXIgYm91bmRhcmll
cyBpbiBkZXZpY2Ugc3BhY2UuIElmIHJvdW5kaW5nIHBpeGVscyBpbiBkZXZpY2Ugc3BhY2UKLSAg
ICAgICAgLy8gbWFrZXMgb3VyIHRoaWNrbmVzcyBtb3JlIHRoYW4gZG91YmxlLCB0aGVuIHRoZXJl
IG11c3QgYmUgYSBzaHJpbmtpbmctc2NhbGUgZmFjdG9yIGFuZCByb3VuZGluZyB0byBwaXhlbHMK
LSAgICAgICAgLy8gaW4gZGV2aWNlIHNwYWNlIHdpbGwgbWFrZSB0aGUgdW5kZXJsaW5lcyB0b28g
dGhpY2suCi0gICAgICAgIENHUmVjdCBsaW5lUmVjdCA9IHJvdW5kVG9EZXZpY2VQaXhlbHMoRmxv
YXRSZWN0KHgsIHksIGxpbmVMZW5ndGgsIGFkanVzdGVkVGhpY2tuZXNzKSwgUm91bmRBbGxTaWRl
cyk7Ci0gICAgICAgIGlmIChsaW5lUmVjdC5zaXplLmhlaWdodCA8IHRoaWNrbmVzcyAqIDIuMCkg
ewotICAgICAgICAgICAgeCA9IGxpbmVSZWN0Lm9yaWdpbi54OwotICAgICAgICAgICAgeSA9IGxp
bmVSZWN0Lm9yaWdpbi55OwotICAgICAgICAgICAgbGluZUxlbmd0aCA9IGxpbmVSZWN0LnNpemUu
d2lkdGg7Ci0gICAgICAgICAgICB0aGlja25lc3MgPSBsaW5lUmVjdC5zaXplLmhlaWdodDsKLSAg
ICAgICAgICAgIGlmIChzaG91bGRBbnRpYWxpYXMoKSkgewotICAgICAgICAgICAgICAgIENHQ29u
dGV4dFNldFNob3VsZEFudGlhbGlhcyhwbGF0Zm9ybUNvbnRleHQoKSwgZmFsc2UpOwotICAgICAg
ICAgICAgICAgIHJlc3RvcmVBbnRpYWxpYXNNb2RlID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0KKyAgICBib29sIHNhdmVkU2hvdWxkQW50aWFsaWFzID0gc2hvdWxkQW50
aWFsaWFzKCk7CisgICAgYm9vbCByZXN0b3JlQW50aWFsaWFzTW9kZSA9IHNhdmVkU2hvdWxkQW50
aWFsaWFzICE9IHNob3VsZEFudGlhbGlhc0xpbmU7CisKKyAgICBpZiAocmVzdG9yZUFudGlhbGlh
c01vZGUpCisgICAgICAgIENHQ29udGV4dFNldFNob3VsZEFudGlhbGlhcyhwbGF0Zm9ybUNvbnRl
eHQoKSwgc2hvdWxkQW50aWFsaWFzTGluZSk7CiAKICAgICBpZiAoZmlsbENvbG9yKCkgIT0gc3Ry
b2tlQ29sb3IoKSkKICAgICAgICAgc2V0Q0dGaWxsQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIHN0
cm9rZUNvbG9yKCksIHN0cm9rZUNvbG9yU3BhY2UoKSk7Ci0gICAgQ0dDb250ZXh0RmlsbFJlY3Qo
cGxhdGZvcm1Db250ZXh0KCksIENHUmVjdE1ha2UoeCwgeSwgbGluZUxlbmd0aCwgdGhpY2tuZXNz
KSk7CisgICAgQ0dDb250ZXh0RmlsbFJlY3QocGxhdGZvcm1Db250ZXh0KCksIGJvdW5kcyk7CiAg
ICAgaWYgKGZpbGxDb2xvcigpICE9IHN0cm9rZUNvbG9yKCkpCiAgICAgICAgIHNldENHRmlsbENv
bG9yKHBsYXRmb3JtQ29udGV4dCgpLCBmaWxsQ29sb3IoKSwgZmlsbENvbG9yU3BhY2UoKSk7Cisg
ICAgQ0dDb250ZXh0U2V0U2hvdWxkQW50aWFsaWFzKHBsYXRmb3JtQ29udGV4dCgpLCBzYXZlZFNo
b3VsZEFudGlhbGlhcyk7CiAKICAgICBpZiAocmVzdG9yZUFudGlhbGlhc01vZGUpCiAgICAgICAg
IENHQ29udGV4dFNldFNob3VsZEFudGlhbGlhcyhwbGF0Zm9ybUNvbnRleHQoKSwgdHJ1ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGlj
c0NvbnRleHRXaW5DRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5j
ZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHAKaW5kZXggMWZmM2ZhZTFhZDkzMjUwNTA0ZGFlYWI1
Nzc0MGFmMWY3OGE2ODFjZi4uY2M5OWFmMWE1MjVhMjMwODU2NTJkZmU2ZWY1YTExMzIwMmMxZmQ1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3Jh
cGhpY3NDb250ZXh0V2luQ0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcApAQCAtOTUwLDYgKzk1MCwxMSBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8SW50UmVjdD4m
IHJlY3RzLCBpbnQgd2lkdGgsIGludAogICAgIERyYXdGb2N1c1JlY3QoZGMsICZyZWN0KTsKIH0K
IAorRmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4dDo6Y29tcHV0ZUxpbmVCb3VuZHNGb3JUZXh0KGNv
bnN0IEZsb2F0UG9pbnQmIG9yaWdpbiwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcpCit7Cisg
ICAgcmV0dXJuIEZsb2F0UmVjdChvcmlnaW4sIEZsb2F0U2l6ZSh3aWR0aCwgc3Ryb2tlVGhpY2tu
ZXNzKCkpKTsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dChjb25z
dCBGbG9hdFBvaW50JiBvcmlnaW4sIGZsb2F0IHdpZHRoLCBib29sIHByaW50aW5nKQogewogICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215668</attachid>
            <date>2013-10-31 13:15:30 -0700</date>
            <delta_ts>2013-10-31 14:12:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123310-20131031131529.patch</filename>
            <type>text/plain</type>
            <size>11101</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4Mzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzJhNDA5N2EzNjU2YmNh
OTMyNDg2MTA4MDE0OGM0ZmMxNjgyYjUxNC4uNWVjNTliNmVlY2FmZTI2NjAyODQ4MGU0NzlmYjVi
ODUzMGYwNDlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEzLTEwLTMwICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgVW5kZXJsaW5l
IGJvdW5kcyBjYW5ub3QgYmUgcXVlcmllZCBiZWZvcmUgdW5kZXJsaW5lIGl0c2VsZiBpcyBkcmF3
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMzEw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR3JhcGhp
Y3NDb250ZXh0J3MgZHJhd0xpbmVGb3JUZXh0IGZ1bmN0aW9uIGlzIHVzZWQgdG8gZHJhdyB1bmRl
cmxpbmVzLAorICAgICAgICBzdHJpa2V0aHJvdWdocywgYW5kIG92ZXJsaW5lcy4gQmVmb3JlIGRy
YXdpbmcgdGhlIGxpbmUsIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgbW9kaWZpZXMgdGhlIGJvdW5k
cyBnaXZlbiB0byBpdCBpbiBvcmRlciB0byBtYWtlIHVuZGVybGluZXMgY3Jpc3AuIEhvd2V2ZXIs
CisgICAgICAgIHRoaXMgbWVhbnMgdGhhdCBpdCBpcyBpbXBvc3NpYmxlIHRvIGtub3cgd2hlcmUg
YW4gdW5kZXJsaW5lIHdpbGwgYmUgZHJhd24KKyAgICAgICAgYmVmb3JlIGRyYXdpbmcgaXQuIFRo
aXMgcGF0Y2ggcHVsbHMgb3V0IHRoaXMgYWRqdXN0bWVudCBjb21wdXRhdGlvbiBpbnRvCisgICAg
ICAgIEdyYXBoaWNzQ29udGV4dDo6Y29tcHV0ZUxpbmVCb3VuZHNGb3JUZXh0LCB0aGVuIHBhc3Nl
cyB0aGUgcmVzdWx0IHRvCisgICAgICAgIGRyYXdMaW5lRm9yVGV4dAorCisgICAgICAgIEJlY2F1
c2UgdGhlcmUgc2hvdWxkIGJlIG5vIG9ic2VydmFibGUgZGlmZmVyZW5jZSwgbm8gdGVzdHMgbmVl
ZCB0byBiZSB1cGRhdGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0Lmg6IFNpZ25hdHVyZSBvZiBuZXcgY29tcHV0ZUxpbmVCb3VuZHNGb3JUZXh0CisgICAg
ICAgIGZ1bmN0aW9uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9QYXRo
QmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNvbXB1
dGVMaW5lQm91bmRzRm9yVGV4dCk6IEltcGxlbWVudCBuZXcgZnVuY3Rpb24KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNvbXB1dGVMaW5lQm91bmRzRm9yVGV4dCk6IERp
dHRvCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dCk6
IFVzZSBjb21wdXRlTGluZUJvdW5kc0ZvclRleHQKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlTGlu
ZUJvdW5kc0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KTogU3RhdGljIGZ1bmN0aW9uIHRoYXQK
KyAgICAgICAgcGVyZm9ybXMgdGhlIGFjdHVhbCBib3VuZHMgY29tcHV0YXRpb24KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y29tcHV0ZUxpbmVCb3VuZHNGb3JUZXh0KTogQ2Fs
bHMKKyAgICAgICAgY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dAor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQpOiBVc2Ug
bmV3IGZ1bmN0aW9uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3ND
b250ZXh0V2luQ0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpjb21w
dXRlTGluZUJvdW5kc0ZvclRleHQpOiBJbXBsZW1lbnQgbmV3IGZ1bmN0aW9uCisKIDIwMTMtMTAt
MzEgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBE
ZWNvcmF0ZWQgdGV4dCBzb21ldGltZXMgZG9lcyBub3QgZHJhdyBpdHMgZGVjb3JhdGlvbnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
aW5kZXggYzMwOGNiZDBiN2Q4NTRmM2Q4ZWIwYmVmZDNhOWYzZjRkNGE3OTdhOC4uNDQyZTQ5MTgy
MDNmNjFlOWI4MDY5Y2U1OWJkMTJjZWVjNDY5OTFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTMzMCw2ICszMzAsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH07CiAgICAgICAgIEZsb2F0UmVjdCByb3Vu
ZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYsIFJvdW5kaW5nTW9kZSA9IFJvdW5kQWxs
U2lkZXMpOwogCisgICAgICAgIEZsb2F0UmVjdCBjb21wdXRlTGluZUJvdW5kc0ZvclRleHQoY29u
c3QgRmxvYXRQb2ludCYsIGZsb2F0IHdpZHRoLCBib29sIHByaW50aW5nKTsKICAgICAgICAgdm9p
ZCBkcmF3TGluZUZvclRleHQoY29uc3QgRmxvYXRQb2ludCYsIGZsb2F0IHdpZHRoLCBib29sIHBy
aW50aW5nKTsKICAgICAgICAgZW51bSBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSB7CiAgICAgICAg
ICAgICBEb2N1bWVudE1hcmtlclNwZWxsaW5nTGluZVN0eWxlLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9QYXRoQmxhY2tCZXJyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1BhdGhCbGFja0Jl
cnJ5LmNwcAppbmRleCBhYzZkNmJhNjRkZmZjYTBhMTU2ZmFmODAwYjk3Y2RkZGQ4OWQ1NGU2Li4w
OTI3M2FiZDFlOGI4ZWU1NGQwYWFlYmM3OWFiMmZiMzI5ZmM1ZTJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1BhdGhCbGFja0JlcnJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1BhdGhC
bGFja0JlcnJ5LmNwcApAQCAtMjYzLDYgKzI2MywxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0xpbmVGb3JEb2N1bWVudE1hcmtlcihjb25zdCBGbG9hdFBvaW50JiBwdCwgZmxvYXQgd2lk
dAogICAgIHBsYXRmb3JtQ29udGV4dCgpLT5hZGREcmF3TGluZUZvckRvY3VtZW50TWFya2VyKHB0
LCB3aWR0aCwgKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6RG9jdW1lbnRNYXJrZXJM
aW5lU3R5bGUpc3R5bGUpOwogfQogCitGbG9hdFJlY3QgR3JhcGhpY3NDb250ZXh0Ojpjb21wdXRl
TGluZUJvdW5kc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcHQsIGZsb2F0IHdpZHRoLCBib29s
IHByaW50aW5nKQoreworICAgIHJldHVybiBGbG9hdFJlY3QocHQsIEZsb2F0U2l6ZSh3aWR0aCwg
c3Ryb2tlVGhpY2tuZXNzKCkpKTsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5l
Rm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBwdCwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcp
CiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmNwcAppbmRleCA3MDM2MGVkN2VjODc1MmU2MDQyZWZiYzRmMzg4NzE5ZjRmMjFjMTBhLi5kMWNh
YWZhOTQyZGM2NjY2ZDA1MTEwOGRmZDczMTkwZmJhZmE4NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uY3BwCkBAIC02MTQsNyArNjE0LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCB3aWR0aCwgaW50
CiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
TGluZUZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgb3JpZ2luLCBmbG9hdCB3aWR0aCwgYm9vbCkK
K0Zsb2F0UmVjdCBHcmFwaGljc0NvbnRleHQ6OmNvbXB1dGVMaW5lQm91bmRzRm9yVGV4dChjb25z
dCBGbG9hdFBvaW50JiBvcmlnaW4sIGZsb2F0IHdpZHRoLCBib29sKQoreworICAgIHJldHVybiBG
bG9hdFJlY3Qob3JpZ2luLCBGbG9hdFNpemUod2lkdGgsIHN0cm9rZVRoaWNrbmVzcygpKSk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQoY29uc3QgRmxvYXRQb2lu
dCYgb3JpZ2luLCBmbG9hdCB3aWR0aCwgYm9vbCBwcmludGluZykKIHsKICAgICBpZiAocGFpbnRp
bmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC02MjQsNyArNjI5LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBvcmlnaW4s
IGZsb2F0IHdpZHRoLCBib28KIAogICAgIC8vIFRoaXMgYnVtcGluZyBvZiA8MSBzdHJva2UgdGhp
Y2tuZXNzZXMgbWF0Y2hlcyB0aGUgb25lIGluIGRyYXdMaW5lT25DYWlyb0NvbnRleHQuCiAgICAg
RmxvYXRQb2ludCBlbmRQb2ludChvcmlnaW4gKyBJbnRTaXplKHdpZHRoLCAwKSk7Ci0gICAgRmxv
YXRSZWN0IGxpbmVFeHRlbnRzKG9yaWdpbiwgRmxvYXRTaXplKHdpZHRoLCBzdHJva2VUaGlja25l
c3MoKSkpOworICAgIEZsb2F0UmVjdCBsaW5lRXh0ZW50cyA9IGNvbXB1dGVMaW5lQm91bmRzRm9y
VGV4dChvcmlnaW4sIHdpZHRoLCBwcmludGluZyk7CiAKICAgICBTaGFkb3dCbHVyJiBzaGFkb3cg
PSBwbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpOwogICAgIGlmIChHcmFwaGljc0NvbnRl
eHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3cuYmVnaW5TaGFkb3dMYXllcih0aGlzLCBsaW5lRXh0
ZW50cykpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCAxYTljOTA1NWU2YzkyMDNmYjU0MDM5OTFi
ZWJiNzRjZTk4M2VkNTVjLi44Njc5ZmQyZTA4NmVmYTE1N2E1YjVhMmQzZDhjYWJmMDVhY2E1Yzhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0xMjM1LDYgKzEyMzUsNDIgQEAgRmxvYXRSZWN0IEdy
YXBoaWNzQ29udGV4dDo6cm91bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IFJvdW5kaW5nTW8KICAgICByZXR1cm4gRmxvYXRSZWN0KHJvdW5kZWRPcmlnaW4sIHJvdW5kZWRM
b3dlclJpZ2h0IC0gcm91bmRlZE9yaWdpbik7CiB9CiAKK3N0YXRpYyBGbG9hdFJlY3QgY29tcHV0
ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCB3aWR0aCwgYm9vbCBwcmludGlu
ZywgYm9vbCYgc2hvdWxkQW50aWFsaWFzKQoreworICAgIHNob3VsZEFudGlhbGlhcyA9IHRydWU7
CisKKyAgICBpZiAod2lkdGggPD0gMCkKKyAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOworCisg
ICAgLy8gVXNlIGEgbWluaW11bSB0aGlja25lc3Mgb2YgMC41IGluIHVzZXIgc3BhY2UuCisgICAg
Ly8gU2VlIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyNTUgZm9yIGRl
dGFpbHMgb2Ygd2h5IDAuNSBpcyB0aGUgcmlnaHQgbWluaW11bSB0aGlja25lc3MgdG8gdXNlLgor
ICAgIEZsb2F0UmVjdCBpbml0aWFsQm91bmRzKHBvaW50LCBGbG9hdFNpemUod2lkdGgsIG1heChj
b250ZXh0LnN0cm9rZVRoaWNrbmVzcygpLCAwLjVmKSkpOworCisgICAgaWYgKHByaW50aW5nIHx8
ICFjb250ZXh0LmdldENUTShHcmFwaGljc0NvbnRleHQ6OkRlZmluaXRlbHlJbmNsdWRlRGV2aWNl
U2NhbGUpLnByZXNlcnZlc0F4aXNBbGlnbm1lbnQoKSkKKyAgICAgICAgcmV0dXJuIGluaXRpYWxC
b3VuZHM7CisKKyAgICAvLyBPbiBzY3JlZW4sIHVzZSBhIG1pbmltdW0gdGhpY2tuZXNzIG9mIDEu
MCBpbiB1c2VyIHNwYWNlIChsYXRlciByb3VuZGVkIHRvIGFuIGludGVncmFsIG51bWJlciBpbiBk
ZXZpY2Ugc3BhY2UpLgorICAgIEZsb2F0UmVjdCBhZGp1c3RlZEJvdW5kcyA9IGluaXRpYWxCb3Vu
ZHM7CisgICAgYWRqdXN0ZWRCb3VuZHMuc2V0SGVpZ2h0KG1heChpbml0aWFsQm91bmRzLndpZHRo
KCksIDEuMGYpKTsKKworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBkb25lIGEgYmV0dGVy
IHdheS4KKyAgICAvLyBXZSB0cnkgdG8gcm91bmQgYWxsIHBhcmFtZXRlcnMgdG8gaW50ZWdlciBi
b3VuZGFyaWVzIGluIGRldmljZSBzcGFjZS4gSWYgcm91bmRpbmcgcGl4ZWxzIGluIGRldmljZSBz
cGFjZQorICAgIC8vIG1ha2VzIG91ciB0aGlja25lc3MgbW9yZSB0aGFuIGRvdWJsZSwgdGhlbiB0
aGVyZSBtdXN0IGJlIGEgc2hyaW5raW5nLXNjYWxlIGZhY3RvciBhbmQgcm91bmRpbmcgdG8gcGl4
ZWxzCisgICAgLy8gaW4gZGV2aWNlIHNwYWNlIHdpbGwgbWFrZSB0aGUgdW5kZXJsaW5lcyB0b28g
dGhpY2suCisgICAgRmxvYXRSZWN0IGxpbmVSZWN0ID0gY29udGV4dC5yb3VuZFRvRGV2aWNlUGl4
ZWxzKGFkanVzdGVkQm91bmRzLCBHcmFwaGljc0NvbnRleHQ6OlJvdW5kQWxsU2lkZXMpOworICAg
IGlmIChsaW5lUmVjdC5oZWlnaHQoKSA8IGluaXRpYWxCb3VuZHMuaGVpZ2h0KCkgKiAyKSB7Cisg
ICAgICAgIHNob3VsZEFudGlhbGlhcyA9IGZhbHNlOworICAgICAgICByZXR1cm4gbGluZVJlY3Q7
CisgICAgfQorICAgIHJldHVybiBpbml0aWFsQm91bmRzOworfQorCitGbG9hdFJlY3QgR3JhcGhp
Y3NDb250ZXh0Ojpjb21wdXRlTGluZUJvdW5kc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQsIGZsb2F0IHdpZHRoLCBib29sIHByaW50aW5nKQoreworICAgIGJvb2wgZHVtbXk7CisgICAg
cmV0dXJuIGNvbXB1dGVMaW5lQm91bmRzQW5kQW50aWFsaWFzaW5nTW9kZUZvclRleHQoKnRoaXMs
IHBvaW50LCB3aWR0aCwgcHJpbnRpbmcsIGR1bW15KTsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdMaW5lRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgZmxvYXQgd2lkdGgs
IGJvb2wgcHJpbnRpbmcpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKQEAgLTEyNDMs
NDIgKzEyNzksMjEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dChjb25z
dCBGbG9hdFBvaW50JiBwb2ludCwgZmxvYXQgd2lkdGgsIGJvb2wKICAgICBpZiAod2lkdGggPD0g
MCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZmxvYXQgeCA9IHBvaW50LngoKTsKLSAgICBmbG9h
dCB5ID0gcG9pbnQueSgpOwotICAgIGZsb2F0IGxpbmVMZW5ndGggPSB3aWR0aDsKKyAgICBib29s
IHNob3VsZEFudGlhbGlhc0xpbmU7CisgICAgRmxvYXRSZWN0IGJvdW5kcyA9IGNvbXB1dGVMaW5l
Qm91bmRzQW5kQW50aWFsaWFzaW5nTW9kZUZvclRleHQoKnRoaXMsIHBvaW50LCB3aWR0aCwgcHJp
bnRpbmcsIHNob3VsZEFudGlhbGlhc0xpbmUpOwogCi0gICAgLy8gVXNlIGEgbWluaW11bSB0aGlj
a25lc3Mgb2YgMC41IGluIHVzZXIgc3BhY2UuCi0gICAgLy8gU2VlIGh0dHA6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQyNTUgZm9yIGRldGFpbHMgb2Ygd2h5IDAuNSBpcyB0aGUg
cmlnaHQgbWluaW11bSB0aGlja25lc3MgdG8gdXNlLgotICAgIGZsb2F0IHRoaWNrbmVzcyA9IG1h
eChzdHJva2VUaGlja25lc3MoKSwgMC41Zik7Ci0KLSAgICBib29sIHJlc3RvcmVBbnRpYWxpYXNN
b2RlID0gZmFsc2U7Ci0KLSAgICBpZiAoIXByaW50aW5nICYmIGdldENUTShHcmFwaGljc0NvbnRl
eHQ6OkRlZmluaXRlbHlJbmNsdWRlRGV2aWNlU2NhbGUpLnByZXNlcnZlc0F4aXNBbGlnbm1lbnQo
KSkgewotICAgICAgICAvLyBPbiBzY3JlZW4sIHVzZSBhIG1pbmltdW0gdGhpY2tuZXNzIG9mIDEu
MCBpbiB1c2VyIHNwYWNlIChsYXRlciByb3VuZGVkIHRvIGFuIGludGVncmFsIG51bWJlciBpbiBk
ZXZpY2Ugc3BhY2UpLgotICAgICAgICBmbG9hdCBhZGp1c3RlZFRoaWNrbmVzcyA9IG1heCh0aGlj
a25lc3MsIDEuMGYpOwotCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBkb25lIGEg
YmV0dGVyIHdheS4KLSAgICAgICAgLy8gV2UgdHJ5IHRvIHJvdW5kIGFsbCBwYXJhbWV0ZXJzIHRv
IGludGVnZXIgYm91bmRhcmllcyBpbiBkZXZpY2Ugc3BhY2UuIElmIHJvdW5kaW5nIHBpeGVscyBp
biBkZXZpY2Ugc3BhY2UKLSAgICAgICAgLy8gbWFrZXMgb3VyIHRoaWNrbmVzcyBtb3JlIHRoYW4g
ZG91YmxlLCB0aGVuIHRoZXJlIG11c3QgYmUgYSBzaHJpbmtpbmctc2NhbGUgZmFjdG9yIGFuZCBy
b3VuZGluZyB0byBwaXhlbHMKLSAgICAgICAgLy8gaW4gZGV2aWNlIHNwYWNlIHdpbGwgbWFrZSB0
aGUgdW5kZXJsaW5lcyB0b28gdGhpY2suCi0gICAgICAgIENHUmVjdCBsaW5lUmVjdCA9IHJvdW5k
VG9EZXZpY2VQaXhlbHMoRmxvYXRSZWN0KHgsIHksIGxpbmVMZW5ndGgsIGFkanVzdGVkVGhpY2tu
ZXNzKSwgUm91bmRBbGxTaWRlcyk7Ci0gICAgICAgIGlmIChsaW5lUmVjdC5zaXplLmhlaWdodCA8
IHRoaWNrbmVzcyAqIDIuMCkgewotICAgICAgICAgICAgeCA9IGxpbmVSZWN0Lm9yaWdpbi54Owot
ICAgICAgICAgICAgeSA9IGxpbmVSZWN0Lm9yaWdpbi55OwotICAgICAgICAgICAgbGluZUxlbmd0
aCA9IGxpbmVSZWN0LnNpemUud2lkdGg7Ci0gICAgICAgICAgICB0aGlja25lc3MgPSBsaW5lUmVj
dC5zaXplLmhlaWdodDsKLSAgICAgICAgICAgIGlmIChzaG91bGRBbnRpYWxpYXMoKSkgewotICAg
ICAgICAgICAgICAgIENHQ29udGV4dFNldFNob3VsZEFudGlhbGlhcyhwbGF0Zm9ybUNvbnRleHQo
KSwgZmFsc2UpOwotICAgICAgICAgICAgICAgIHJlc3RvcmVBbnRpYWxpYXNNb2RlID0gdHJ1ZTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KKyAgICBib29sIHNhdmVkU2hvdWxkQW50
aWFsaWFzID0gc2hvdWxkQW50aWFsaWFzKCk7CisgICAgYm9vbCByZXN0b3JlQW50aWFsaWFzTW9k
ZSA9IHNhdmVkU2hvdWxkQW50aWFsaWFzICE9IHNob3VsZEFudGlhbGlhc0xpbmU7CisKKyAgICBp
ZiAocmVzdG9yZUFudGlhbGlhc01vZGUpCisgICAgICAgIENHQ29udGV4dFNldFNob3VsZEFudGlh
bGlhcyhwbGF0Zm9ybUNvbnRleHQoKSwgc2hvdWxkQW50aWFsaWFzTGluZSk7CiAKICAgICBpZiAo
ZmlsbENvbG9yKCkgIT0gc3Ryb2tlQ29sb3IoKSkKICAgICAgICAgc2V0Q0dGaWxsQ29sb3IocGxh
dGZvcm1Db250ZXh0KCksIHN0cm9rZUNvbG9yKCksIHN0cm9rZUNvbG9yU3BhY2UoKSk7Ci0gICAg
Q0dDb250ZXh0RmlsbFJlY3QocGxhdGZvcm1Db250ZXh0KCksIENHUmVjdE1ha2UoeCwgeSwgbGlu
ZUxlbmd0aCwgdGhpY2tuZXNzKSk7CisgICAgQ0dDb250ZXh0RmlsbFJlY3QocGxhdGZvcm1Db250
ZXh0KCksIGJvdW5kcyk7CiAgICAgaWYgKGZpbGxDb2xvcigpICE9IHN0cm9rZUNvbG9yKCkpCiAg
ICAgICAgIHNldENHRmlsbENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBmaWxsQ29sb3IoKSwgZmls
bENvbG9yU3BhY2UoKSk7CisgICAgQ0dDb250ZXh0U2V0U2hvdWxkQW50aWFsaWFzKHBsYXRmb3Jt
Q29udGV4dCgpLCBzYXZlZFNob3VsZEFudGlhbGlhcyk7CiAKICAgICBpZiAocmVzdG9yZUFudGlh
bGlhc01vZGUpCiAgICAgICAgIENHQ29udGV4dFNldFNob3VsZEFudGlhbGlhcyhwbGF0Zm9ybUNv
bnRleHQoKSwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHAKaW5kZXggMWZmM2Zh
ZTFhZDkzMjUwNTA0ZGFlYWI1Nzc0MGFmMWY3OGE2ODFjZi4uY2M5OWFmMWE1MjVhMjMwODU2NTJk
ZmU2ZWY1YTExMzIwMmMxZmQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcApAQCAt
OTUwLDYgKzk1MCwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25z
dCBWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQgd2lkdGgsIGludAogICAgIERyYXdGb2N1c1Jl
Y3QoZGMsICZyZWN0KTsKIH0KIAorRmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4dDo6Y29tcHV0ZUxp
bmVCb3VuZHNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIG9yaWdpbiwgZmxvYXQgd2lkdGgsIGJv
b2wgcHJpbnRpbmcpCit7CisgICAgcmV0dXJuIEZsb2F0UmVjdChvcmlnaW4sIEZsb2F0U2l6ZSh3
aWR0aCwgc3Ryb2tlVGhpY2tuZXNzKCkpKTsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdMaW5lRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBvcmlnaW4sIGZsb2F0IHdpZHRoLCBib29s
IHByaW50aW5nKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>