<?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>99861</bug_id>
          
          <creation_ts>2012-10-19 11:59:16 -0700</creation_ts>
          <short_desc>RenderTableCol::computePreferredLogicalWidths should never be called</short_desc>
          <delta_ts>2022-08-18 09:57:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tables</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>100098</dependson>
    
    <dependson>100512</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>ap</cc>
    
    <cc>bdakin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>rniwa</cc>
    
    <cc>robert</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>746512</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-10-19 11:59:16 -0700</bug_when>
    <thetext>&lt;col&gt; and &lt;colgroup&gt; don&apos;t really have the concept of preferred logical widths as they have no content. We use their styling information to size the cell&apos;s logical width.

There are several (forceful) calls to RenderTableCol::computePreferredLogicalWidths in the code because we need to propagate any preferred logical widths dirtying to the table but that&apos;s just artificial.

Forwarding any layout hint to the table would remove some clunky code inside table. Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746518</commentid>
    <comment_count>1</comment_count>
      <attachid>169670</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-10-19 12:13:26 -0700</bug_when>
    <thetext>Created attachment 169670
Proposed change: Enforced that RenderTableCol::computePreferredLogicalWidths is never called, forward any layout hint to the table and clean-up AutoTableLayout.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746956</commentid>
    <comment_count>2</comment_count>
      <attachid>169670</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-20 02:01:07 -0700</bug_when>
    <thetext>Comment on attachment 169670
Proposed change: Enforced that RenderTableCol::computePreferredLogicalWidths is never called, forward any layout hint to the table and clean-up AutoTableLayout.cpp.

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

New failing tests:
fast/table/border-collapsing/cached-change-colgroup-border-width.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747567</commentid>
    <comment_count>3</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-10-22 08:23:40 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 169670 [details])
&gt; Attachment 169670 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/14456848
&gt; 
&gt; New failing tests:
&gt; fast/table/border-collapsing/cached-change-colgroup-border-width.html

The pixel difference is a regression. We are now repainting the whole table instead of just the colgroup. This is due to LayoutRepainter picking up the layout cue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747718</commentid>
    <comment_count>4</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-10-22 11:31:17 -0700</bug_when>
    <thetext>While fiddling around, I found out that we also call layout() on our table col / colgroup. We should be consistent between the 2 methods so we should also patch layout().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747749</commentid>
    <comment_count>5</comment_count>
      <attachid>169952</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-10-22 12:05:45 -0700</bug_when>
    <thetext>Created attachment 169952
Updated patch: also changed layout(). Added a test for a case the previous patch broke.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747756</commentid>
    <comment_count>6</comment_count>
      <attachid>169952</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-10-22 12:10:51 -0700</bug_when>
    <thetext>Comment on attachment 169952
Updated patch: also changed layout(). Added a test for a case the previous patch broke.

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

&gt; Source/WebCore/rendering/RenderTable.cpp:381
&gt; +    // We ignore table col / colgroup in this iteration as they are used to size the cell&apos;s widths during auto / fixed table layout.

s/as they are/as they are only/ ?

&gt; Source/WebCore/rendering/RenderTableCol.cpp:136
&gt; +    // Also we don&apos;t clear any flags, which may never mark the table.

Don&apos;t understand this sentence. Please clarify.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747846</commentid>
    <comment_count>7</comment_count>
      <attachid>169952</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-10-22 13:53:37 -0700</bug_when>
    <thetext>Comment on attachment 169952
Updated patch: also changed layout(). Added a test for a case the previous patch broke.

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

&gt;&gt; Source/WebCore/rendering/RenderTable.cpp:381
&gt;&gt; +    // We ignore table col / colgroup in this iteration as they are used to size the cell&apos;s widths during auto / fixed table layout.
&gt; 
&gt; s/as they are/as they are only/ ?

Sure.

&gt;&gt; Source/WebCore/rendering/RenderTableCol.cpp:136
&gt;&gt; +    // Also we don&apos;t clear any flags, which may never mark the table.
&gt; 
&gt; Don&apos;t understand this sentence. Please clarify.

Will change it to:

// Also we don&apos;t clear the needs layout / preferred logical widths dirty flags so the marking logic may never reach the table.

I hope this is clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747860</commentid>
    <comment_count>8</comment_count>
      <attachid>169952</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-10-22 14:00:33 -0700</bug_when>
    <thetext>Comment on attachment 169952
Updated patch: also changed layout(). Added a test for a case the previous patch broke.

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

&gt;&gt;&gt; Source/WebCore/rendering/RenderTableCol.cpp:136
&gt;&gt;&gt; +    // Also we don&apos;t clear any flags, which may never mark the table.
&gt;&gt; 
&gt;&gt; Don&apos;t understand this sentence. Please clarify.
&gt; 
&gt; Will change it to:
&gt; 
&gt; // Also we don&apos;t clear the needs layout / preferred logical widths dirty flags so the marking logic may never reach the table.
&gt; 
&gt; I hope this is clearer.

I still don&apos;t see what this says that the above comment doesn&apos;t. Not a big deal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747908</commentid>
    <comment_count>9</comment_count>
      <attachid>169952</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-10-22 14:43:33 -0700</bug_when>
    <thetext>Comment on attachment 169952
Updated patch: also changed layout(). Added a test for a case the previous patch broke.

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

&gt;&gt;&gt;&gt; Source/WebCore/rendering/RenderTableCol.cpp:136
&gt;&gt;&gt;&gt; +    // Also we don&apos;t clear any flags, which may never mark the table.
&gt;&gt;&gt; 
&gt;&gt;&gt; Don&apos;t understand this sentence. Please clarify.
&gt;&gt; 
&gt;&gt; Will change it to:
&gt;&gt; 
&gt;&gt; // Also we don&apos;t clear the needs layout / preferred logical widths dirty flags so the marking logic may never reach the table.
&gt;&gt; 
&gt;&gt; I hope this is clearer.
&gt; 
&gt; I still don&apos;t see what this says that the above comment doesn&apos;t. Not a big deal.

OK, let&apos;s remove it then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747934</commentid>
    <comment_count>10</comment_count>
      <attachid>169995</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-10-22 15:02:26 -0700</bug_when>
    <thetext>Created attachment 169995
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747978</commentid>
    <comment_count>11</comment_count>
      <attachid>169995</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-22 15:40:30 -0700</bug_when>
    <thetext>Comment on attachment 169995
Patch for landing

Clearing flags on attachment: 169995

Committed r132149: &lt;http://trac.webkit.org/changeset/132149&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747979</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-22 15:40:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748425</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-23 02:45:18 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 100098</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750941</commentid>
    <comment_count>14</comment_count>
      <attachid>170678</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-10-25 09:53:09 -0700</bug_when>
    <thetext>Created attachment 170678
Updated change: removed ASSERT_NOT_REACHED() from layout() as simplified normal flow layout hit it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750963</commentid>
    <comment_count>15</comment_count>
      <attachid>170678</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-10-25 10:17:39 -0700</bug_when>
    <thetext>Comment on attachment 170678
Updated change: removed ASSERT_NOT_REACHED() from layout() as simplified normal flow layout hit it.

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

Would be nice if you could add a targetted test for the simplified layout case as well. I realize the inspector tests hit that code accidentally, but it&apos;d be nice to cover it explicitly. Not a big deal.

&gt; LayoutTests/fast/table/col-span-change-relayout.html:41
&gt; +            {
&gt; +                var col = document.getElementById(&apos;column&apos;);
&gt; +                var oldCellWidth = getComputedStyle(document.getElementById(&apos;table&apos;)).width;
&gt; +                col.setAttribute(&quot;span&quot;, &quot;1&quot;);
&gt; +                var newCellWidth = getComputedStyle(document.getElementById(&apos;table&apos;)).width;
&gt; +
&gt; +                log(&quot;Table width was &quot; + oldCellWidth);
&gt; +                log(&quot;Table width is &quot; + newCellWidth);
&gt; +                if (oldCellWidth != newCellWidth)
&gt; +                    log(&quot;PASSED: Table changed width&quot;);
&gt; +                else
&gt; +                    log(&quot;FAILED: Table did not change width&quot;);
&gt; +            }

FWIW, you could make this a check-layout.js change.

function changeColSpan()
{
    document.getElementById(&apos;table&apos;).setAttribute(&apos;data-expected-width&apos;, 300);
    checkLayout(&apos;table&apos;);
    document.getElementById(&apos;table&apos;).setAttribute(&apos;data-expected-width&apos;, 200);
    checkLayout(&apos;table&apos;);
}

I find that easier to read, also, I prefer for it to say the exact width&apos;s expected. These shouldn&apos;t be platform dependent in anyway, so we should be able to make this test stricter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751785</commentid>
    <comment_count>16</comment_count>
      <attachid>170678</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-10-26 03:28:30 -0700</bug_when>
    <thetext>Comment on attachment 170678
Updated change: removed ASSERT_NOT_REACHED() from layout() as simplified normal flow layout hit it.

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

&gt; Would be nice if you could add a targetted test for the simplified layout case as well. I realize the inspector tests hit that code accidentally, but it&apos;d be nice to cover it explicitly. Not a big deal.

Totally agree, added a test to cover that.

&gt;&gt; LayoutTests/fast/table/col-span-change-relayout.html:41
&gt;&gt; +            }
&gt; 
&gt; FWIW, you could make this a check-layout.js change.
&gt; 
&gt; function changeColSpan()
&gt; {
&gt;     document.getElementById(&apos;table&apos;).setAttribute(&apos;data-expected-width&apos;, 300);
&gt;     checkLayout(&apos;table&apos;);
&gt;     document.getElementById(&apos;table&apos;).setAttribute(&apos;data-expected-width&apos;, 200);
&gt;     checkLayout(&apos;table&apos;);
&gt; }
&gt; 
&gt; I find that easier to read, also, I prefer for it to say the exact width&apos;s expected. These shouldn&apos;t be platform dependent in anyway, so we should be able to make this test stricter.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751786</commentid>
    <comment_count>17</comment_count>
      <attachid>170871</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-10-26 03:29:00 -0700</bug_when>
    <thetext>Created attachment 170871
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751835</commentid>
    <comment_count>18</comment_count>
      <attachid>170871</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-26 04:14:02 -0700</bug_when>
    <thetext>Comment on attachment 170871
Patch for landing

Clearing flags on attachment: 170871

Committed r132612: &lt;http://trac.webkit.org/changeset/132612&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751836</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-26 04:14:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751955</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-26 06:07:07 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 100512</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755404</commentid>
    <comment_count>21</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-10-31 09:55:56 -0700</bug_when>
    <thetext>Not doing a fake layout pass would trigger an ASSERT on one test. This means that the layout() part of the change is not that great (we could still keep the current behavior in debug but that feels bad).

Will post an - hopefully - final patch without the layout() part of the change. It will be landed tomorrow if the EWS are fine and no one objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755410</commentid>
    <comment_count>22</comment_count>
      <attachid>171677</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-10-31 10:08:47 -0700</bug_when>
    <thetext>Created attachment 171677
Updated patch: Removed the layout() change as we need to clear up the review flag or trip on some ASSERT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813634</commentid>
    <comment_count>23</comment_count>
      <attachid>171677</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-01-22 18:02:38 -0800</bug_when>
    <thetext>Comment on attachment 171677
Updated patch: Removed the layout() change as we need to clear up the review flag or trip on some ASSERT.

Ojan landed a change that goes in the same direction for RenderTableCol::computePreferredLogicalWidths in bug 106931.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1892243</commentid>
    <comment_count>24</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2022-08-18 09:57:14 -0700</bug_when>
    <thetext>Is this still required? Because Comment 23 mentioned that another bug was able to tackle same issue as this bug and this one landed in Comment 19 but cause regressions (from Comment 20).

Appreciate if someone can mark this bug accordingly. Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169670</attachid>
            <date>2012-10-19 12:13:26 -0700</date>
            <delta_ts>2012-10-22 12:05:43 -0700</delta_ts>
            <desc>Proposed change: Enforced that RenderTableCol::computePreferredLogicalWidths is never called, forward any layout hint to the table and clean-up AutoTableLayout.cpp.</desc>
            <filename>bug-99861-20121019121029.patch</filename>
            <type>text/plain</type>
            <size>13145</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxNzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVhYjFlNDM2OWU5MTdj
OWU0OTUwM2RmZDY5OTlmN2E1YzU5Zjc1Zi4uYjRlOTliY2E1ZDA1M2YxN2UzNjAxZDgxMDQzMzVj
NGEyZWFkZjVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTEwLTE5ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbmRlclRh
YmxlQ29sOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyBzaG91bGQgbmV2ZXIgYmUgY2Fs
bGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTg2
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRl
clRhYmxlQ29sOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocycgb25seSBwdXJwb3NlIHdh
cyB0byBjbGVhciB0aGUgcHJlZmVycmVkIGxvZ2ljYWwgd2lkdGhzIGRpcnR5CisgICAgICAgIGZs
YWcgc28gdGhhdCB3ZSB3b3VsZCBwcm9wZXJseSBwcm9wYWdhdGUgdGhlIGluZm9ybWF0aW9uIHRv
IG91ciBjb250YWluaW5nIHRhYmxlLiBUaGlzIGxlZCB0byBjbHVua3kgY29kZQorICAgICAgICB3
aGVyZSB0aGUgdGFibGUgbGF5b3V0IGNvZGUgaGFkIHRvIGZvcmNlZnVsbHkgY2FsbCBSZW5kZXJU
YWJsZUNvbDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMgb3IgZWxzZSB3ZQorICAgICAg
ICB3b3VsZCBpZ25vcmUgdGhlIG5leHQgbGF5b3V0IGhpbnQgb24gdGhlIDxjb2w+IG9yIDxjb2xn
cm91cD4uCisKKyAgICAgICAgTm8gZXhwZWN0ZWQgY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAg
ICAgICogcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dXRvVGFibGVMYXlvdXQ6OnJlY2FsY0NvbHVtbik6CisgICAgICAgIFNpbXBsaWZpZWQgdGhlIGNv
ZGUgbm93IHRoYXQgd2Ugb25seSBuZWVkIHRvIGl0ZXJhdGUgb3ZlciB0aGUgc2VjdGlvbnMuCisK
KyAgICAgICAgKiByZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGaXhlZFRhYmxlTGF5b3V0OjpjYWxjV2lkdGhBcnJheSk6CisgICAgICAgIFJlbW92ZWQg
Y2FsbCB0byBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocy4KKworICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUYWJsZUNvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNv
bDo6c3R5bGVEaWRDaGFuZ2UpOgorICAgICAgICBGb3J3YXJkIGEgbGF5b3V0IGhpbnQgdG8gdGhl
IHRhYmxlIHNvIHRoYXQgd2UgcHJvcGVybHkgcmVjb21wdXRlIHRoZSBjZWxsJ3MgbG9naWNhbCB3
aXRocy4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDb2w6OmNvbXB1dGVQcmVmZXJy
ZWRMb2dpY2FsV2lkdGhzKToKKyAgICAgICAgUmVtb3ZlZCB0aGUgaW1wbGVtZW50YXRpb24gYW5k
IGVuZm9yY2VkIHRoYXQgbm8gb25lIGNhbGxzIHRoaXMgZnVuY3Rpb24gbm93LgorCiAyMDEyLTEw
LTE4ICBNYXJqYSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVtLm9yZz4KIAogICAgICAgICBGaXg6
IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0U1ZHRG9jdW1lbnQgd2FzIHBhc3NpbmcgYW4g
VVJMIGFzIGNoYXJzZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRv
VGFibGVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91
dC5jcHAKaW5kZXggMDhlY2ZmOTBlMGQyZTE5YzAxMDc1ODU2MjZmMTZhNjFlODgyNTkyYy4uZmI0
MzZjYTU1NTkwNTU0YmE4YWZhY2UyNGQwMWZiMDMwYjBlMzAzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAKQEAgLTQ5LDgxICs0OSw3NyBAQCB2b2lk
IEF1dG9UYWJsZUxheW91dDo6cmVjYWxjQ29sdW1uKHVuc2lnbmVkIGVmZkNvbCkKICAgICBSZW5k
ZXJUYWJsZUNlbGwqIGZpeGVkQ29udHJpYnV0b3IgPSAwOwogICAgIFJlbmRlclRhYmxlQ2VsbCog
bWF4Q29udHJpYnV0b3IgPSAwOwogCi0gICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gbV90
YWJsZS0+Y2hpbGRyZW4oKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4
dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAoY2hpbGQtPmlzUmVuZGVyVGFibGVDb2woKSkKLSAg
ICAgICAgICAgIHRvUmVuZGVyVGFibGVDb2woY2hpbGQpLT5jb21wdXRlUHJlZmVycmVkTG9naWNh
bFdpZHRocygpOwotICAgICAgICBlbHNlIGlmIChjaGlsZC0+aXNUYWJsZVNlY3Rpb24oKSkgewot
ICAgICAgICAgICAgUmVuZGVyVGFibGVTZWN0aW9uKiBzZWN0aW9uID0gdG9SZW5kZXJUYWJsZVNl
Y3Rpb24oY2hpbGQpOwotICAgICAgICAgICAgdW5zaWduZWQgbnVtUm93cyA9IHNlY3Rpb24tPm51
bVJvd3MoKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Sb3dzOyBp
KyspIHsKLSAgICAgICAgICAgICAgICBSZW5kZXJUYWJsZVNlY3Rpb246OkNlbGxTdHJ1Y3QgY3Vy
cmVudCA9IHNlY3Rpb24tPmNlbGxBdChpLCBlZmZDb2wpOwotICAgICAgICAgICAgICAgIFJlbmRl
clRhYmxlQ2VsbCogY2VsbCA9IGN1cnJlbnQucHJpbWFyeUNlbGwoKTsKLSAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBpZiAoY3VycmVudC5pbkNvbFNwYW4gfHwgIWNlbGwpCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgYm9vbCBjZWxsSGFz
Q29udGVudCA9IGNlbGwtPmNoaWxkcmVuKCktPmZpcnN0Q2hpbGQoKSB8fCBjZWxsLT5zdHlsZSgp
LT5oYXNCb3JkZXIoKSB8fCBjZWxsLT5zdHlsZSgpLT5oYXNQYWRkaW5nKCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKGNlbGxIYXNDb250ZW50KQotICAgICAgICAgICAgICAgICAgICBjb2x1bW5MYXlv
dXQuZW1wdHlDZWxsc09ubHkgPSBmYWxzZTsKLQotICAgICAgICAgICAgICAgIC8vIEEgY2VsbCBv
cmlnaW5hdGVzIGluIHRoaXMgY29sdW1uLiBFbnN1cmUgd2UgaGF2ZQotICAgICAgICAgICAgICAg
IC8vIGEgbWluL21heCB3aWR0aCBvZiBhdCBsZWFzdCAxcHggZm9yIHRoaXMgY29sdW1uIG5vdy4K
LSAgICAgICAgICAgICAgICBjb2x1bW5MYXlvdXQubWluTG9naWNhbFdpZHRoID0gbWF4PGludD4o
Y29sdW1uTGF5b3V0Lm1pbkxvZ2ljYWxXaWR0aCwgY2VsbEhhc0NvbnRlbnQgPyAxIDogMCk7Ci0g
ICAgICAgICAgICAgICAgY29sdW1uTGF5b3V0Lm1heExvZ2ljYWxXaWR0aCA9IG1heDxpbnQ+KGNv
bHVtbkxheW91dC5tYXhMb2dpY2FsV2lkdGgsIDEpOwotCi0gICAgICAgICAgICAgICAgaWYgKGNl
bGwtPmNvbFNwYW4oKSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjZWxsLT5wcmVm
ZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwt
PmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCk7Ci0gICAgICAgICAgICAgICAgICAgIGNv
bHVtbkxheW91dC5taW5Mb2dpY2FsV2lkdGggPSBtYXg8aW50PihjZWxsLT5taW5QcmVmZXJyZWRM
b2dpY2FsV2lkdGgoKSwgY29sdW1uTGF5b3V0Lm1pbkxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChjZWxsLT5tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSA+IGNvbHVtbkxh
eW91dC5tYXhMb2dpY2FsV2lkdGgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkxh
eW91dC5tYXhMb2dpY2FsV2lkdGggPSBjZWxsLT5tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG1heENvbnRyaWJ1dG9yID0gY2VsbDsKLSAgICAgICAg
ICAgICAgICAgICAgfQorICAgIGZvciAoUmVuZGVyVGFibGVTZWN0aW9uKiBzZWN0aW9uID0gbV90
YWJsZS0+dG9wTm9uRW1wdHlTZWN0aW9uKCk7IHNlY3Rpb247IHNlY3Rpb24gPSBtX3RhYmxlLT5z
ZWN0aW9uQmVsb3coc2VjdGlvbiwgU2tpcEVtcHR5U2VjdGlvbnMpKSB7CisgICAgICAgIHVuc2ln
bmVkIG51bVJvd3MgPSBzZWN0aW9uLT5udW1Sb3dzKCk7CisgICAgICAgIEFTU0VSVChudW1Sb3dz
KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVJvd3M7IGkrKykgeworICAg
ICAgICAgICAgUmVuZGVyVGFibGVTZWN0aW9uOjpDZWxsU3RydWN0IGN1cnJlbnQgPSBzZWN0aW9u
LT5jZWxsQXQoaSwgZWZmQ29sKTsKKyAgICAgICAgICAgIFJlbmRlclRhYmxlQ2VsbCogY2VsbCA9
IGN1cnJlbnQucHJpbWFyeUNlbGwoKTsKKworICAgICAgICAgICAgaWYgKGN1cnJlbnQuaW5Db2xT
cGFuIHx8ICFjZWxsKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICAg
ICAgICAgIC8vIEFsbCBicm93c2VycyBpbXBsZW1lbnQgYSBzaXplIGxpbWl0IG9uIHRoZSBjZWxs
J3MgbWF4IHdpZHRoLiAKLSAgICAgICAgICAgICAgICAgICAgLy8gT3VyIGxpbWl0IGlzIGJhc2Vk
IG9uIEtIVE1MJ3MgcmVwcmVzZW50YXRpb24gdGhhdCB1c2VkIDE2IGJpdHMgd2lkdGhzLgotICAg
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogT3RoZXIgYnJvd3NlcnMgaGF2ZSBhIGxvd2VyIGxp
bWl0IGZvciB0aGUgY2VsbCdzIG1heCB3aWR0aC4gCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0
IGludCBjQ2VsbE1heFdpZHRoID0gMzI3NjA7Ci0gICAgICAgICAgICAgICAgICAgIExlbmd0aCBj
ZWxsTG9naWNhbFdpZHRoID0gY2VsbC0+c3R5bGVPckNvbExvZ2ljYWxXaWR0aCgpOwotICAgICAg
ICAgICAgICAgICAgICBpZiAoY2VsbExvZ2ljYWxXaWR0aC52YWx1ZSgpID4gY0NlbGxNYXhXaWR0
aCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxMb2dpY2FsV2lkdGguc2V0VmFsdWUoY0Nl
bGxNYXhXaWR0aCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjZWxsTG9naWNhbFdpZHRoLmlz
TmVnYXRpdmUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxMb2dpY2FsV2lkdGguc2V0
VmFsdWUoMCk7Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY2VsbExvZ2ljYWxXaWR0aC50
eXBlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBGaXhlZDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGlnbm9yZSB3aWR0aD0wCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
Y2VsbExvZ2ljYWxXaWR0aC5pc1Bvc2l0aXZlKCkgJiYgIWNvbHVtbkxheW91dC5sb2dpY2FsV2lk
dGguaXNQZXJjZW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0
IGxvZ2ljYWxXaWR0aCA9IGNlbGwtPmFkanVzdEJvcmRlckJveExvZ2ljYWxXaWR0aEZvckJveFNp
emluZyhjZWxsTG9naWNhbFdpZHRoLnZhbHVlKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLmlzRml4ZWQoKSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBOYXYvSUUgd2VpcmRuZXNzCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICgobG9naWNhbFdpZHRoID4gY29sdW1uTGF5b3V0LmxvZ2lj
YWxXaWR0aC52YWx1ZSgpKSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8
ICgoY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC52YWx1ZSgpID09IGxvZ2ljYWxXaWR0aCkgJiYg
KG1heENvbnRyaWJ1dG9yID09IGNlbGwpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC5zZXRWYWx1ZShGaXhlZCwgbG9naWNh
bFdpZHRoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVkQ29udHJp
YnV0b3IgPSBjZWxsOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJvb2wgY2VsbEhhc0Nv
bnRlbnQgPSBjZWxsLT5jaGlsZHJlbigpLT5maXJzdENoaWxkKCkgfHwgY2VsbC0+c3R5bGUoKS0+
aGFzQm9yZGVyKCkgfHwgY2VsbC0+c3R5bGUoKS0+aGFzUGFkZGluZygpOworICAgICAgICAgICAg
aWYgKGNlbGxIYXNDb250ZW50KQorICAgICAgICAgICAgICAgIGNvbHVtbkxheW91dC5lbXB0eUNl
bGxzT25seSA9IGZhbHNlOworCisgICAgICAgICAgICAvLyBBIGNlbGwgb3JpZ2luYXRlcyBpbiB0
aGlzIGNvbHVtbi4gRW5zdXJlIHdlIGhhdmUKKyAgICAgICAgICAgIC8vIGEgbWluL21heCB3aWR0
aCBvZiBhdCBsZWFzdCAxcHggZm9yIHRoaXMgY29sdW1uIG5vdy4KKyAgICAgICAgICAgIGNvbHVt
bkxheW91dC5taW5Mb2dpY2FsV2lkdGggPSBtYXg8aW50Pihjb2x1bW5MYXlvdXQubWluTG9naWNh
bFdpZHRoLCBjZWxsSGFzQ29udGVudCA/IDEgOiAwKTsKKyAgICAgICAgICAgIGNvbHVtbkxheW91
dC5tYXhMb2dpY2FsV2lkdGggPSBtYXg8aW50Pihjb2x1bW5MYXlvdXQubWF4TG9naWNhbFdpZHRo
LCAxKTsKKworICAgICAgICAgICAgaWYgKGNlbGwtPmNvbFNwYW4oKSA9PSAxKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGNlbGwtPnByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eSgpKQorICAgICAg
ICAgICAgICAgICAgICBjZWxsLT5jb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpOworICAg
ICAgICAgICAgICAgIGNvbHVtbkxheW91dC5taW5Mb2dpY2FsV2lkdGggPSBtYXg8aW50PihjZWxs
LT5taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSwgY29sdW1uTGF5b3V0Lm1pbkxvZ2ljYWxXaWR0
aCk7CisgICAgICAgICAgICAgICAgaWYgKGNlbGwtPm1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgp
ID4gY29sdW1uTGF5b3V0Lm1heExvZ2ljYWxXaWR0aCkgeworICAgICAgICAgICAgICAgICAgICBj
b2x1bW5MYXlvdXQubWF4TG9naWNhbFdpZHRoID0gY2VsbC0+bWF4UHJlZmVycmVkTG9naWNhbFdp
ZHRoKCk7CisgICAgICAgICAgICAgICAgICAgIG1heENvbnRyaWJ1dG9yID0gY2VsbDsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBBbGwgYnJvd3NlcnMgaW1wbGVtZW50
IGEgc2l6ZSBsaW1pdCBvbiB0aGUgY2VsbCdzIG1heCB3aWR0aC4KKyAgICAgICAgICAgICAgICAv
LyBPdXIgbGltaXQgaXMgYmFzZWQgb24gS0hUTUwncyByZXByZXNlbnRhdGlvbiB0aGF0IHVzZWQg
MTYgYml0cyB3aWR0aHMuCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IE90aGVyIGJyb3dzZXJz
IGhhdmUgYSBsb3dlciBsaW1pdCBmb3IgdGhlIGNlbGwncyBtYXggd2lkdGguCisgICAgICAgICAg
ICAgICAgY29uc3QgaW50IGNDZWxsTWF4V2lkdGggPSAzMjc2MDsKKyAgICAgICAgICAgICAgICBM
ZW5ndGggY2VsbExvZ2ljYWxXaWR0aCA9IGNlbGwtPnN0eWxlT3JDb2xMb2dpY2FsV2lkdGgoKTsK
KyAgICAgICAgICAgICAgICBpZiAoY2VsbExvZ2ljYWxXaWR0aC52YWx1ZSgpID4gY0NlbGxNYXhX
aWR0aCkKKyAgICAgICAgICAgICAgICAgICAgY2VsbExvZ2ljYWxXaWR0aC5zZXRWYWx1ZShjQ2Vs
bE1heFdpZHRoKTsKKyAgICAgICAgICAgICAgICBpZiAoY2VsbExvZ2ljYWxXaWR0aC5pc05lZ2F0
aXZlKCkpCisgICAgICAgICAgICAgICAgICAgIGNlbGxMb2dpY2FsV2lkdGguc2V0VmFsdWUoMCk7
CisgICAgICAgICAgICAgICAgc3dpdGNoIChjZWxsTG9naWNhbFdpZHRoLnR5cGUoKSkgeworICAg
ICAgICAgICAgICAgIGNhc2UgRml4ZWQ6CisgICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yZSB3
aWR0aD0wCisgICAgICAgICAgICAgICAgICAgIGlmIChjZWxsTG9naWNhbFdpZHRoLmlzUG9zaXRp
dmUoKSAmJiAhY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC5pc1BlcmNlbnQoKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGggPSBjZWxsLT5hZGp1c3RC
b3JkZXJCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoY2VsbExvZ2ljYWxXaWR0aC52YWx1ZSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRo
LmlzRml4ZWQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5hdi9JRSB3ZWly
ZG5lc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGxvZ2ljYWxXaWR0aCA+IGNv
bHVtbkxheW91dC5sb2dpY2FsV2lkdGgudmFsdWUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfHwgKChjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLnZhbHVlKCkgPT0gbG9naWNh
bFdpZHRoKSAmJiAobWF4Q29udHJpYnV0b3IgPT0gY2VsbCkpKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGguc2V0VmFsdWUoRml4ZWQs
IGxvZ2ljYWxXaWR0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVkQ29u
dHJpYnV0b3IgPSBjZWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29s
dW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC5zZXRWYWx1ZShGaXhlZCwgbG9naWNhbFdpZHRoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhlZENvbnRyaWJ1dG9yID0gY2VsbDsKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICBjYXNlIFBlcmNlbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBt
X2hhc1BlcmNlbnQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxMb2dp
Y2FsV2lkdGguaXNQb3NpdGl2ZSgpICYmICghY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC5pc1Bl
cmNlbnQoKSB8fCBjZWxsTG9naWNhbFdpZHRoLnZhbHVlKCkgPiBjb2x1bW5MYXlvdXQubG9naWNh
bFdpZHRoLnZhbHVlKCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkxheW91
dC5sb2dpY2FsV2lkdGggPSBjZWxsTG9naWNhbFdpZHRoOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgUmVsYXRpdmU6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogTmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY2FzZSBhbmQg
d2hldGhlciBpdCBtYWtlcyBzZW5zZSB0byBjb21wYXJlIHZhbHVlcwotICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gd2hpY2ggYXJlIG5vdCBuZWNlc3NhcmlseSBvZiB0aGUgc2FtZSB0eXBlLgot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxMb2dpY2FsV2lkdGgudmFsdWUoKSA+IGNv
bHVtbkxheW91dC5sb2dpY2FsV2lkdGgudmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoID0gY2VsbExvZ2ljYWxXaWR0aDsKLSAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghZWZmQ29s
IHx8IHNlY3Rpb24tPnByaW1hcnlDZWxsQXQoaSwgZWZmQ29sIC0gMSkgIT0gY2VsbCkgewotICAg
ICAgICAgICAgICAgICAgICAvLyBUaGlzIHNwYW5uaW5nIGNlbGwgb3JpZ2luYXRlcyBpbiB0aGlz
IGNvbHVtbi4gSW5zZXJ0IHRoZSBjZWxsIGludG8gc3Bhbm5pbmcgY2VsbHMgbGlzdC4KLSAgICAg
ICAgICAgICAgICAgICAgaW5zZXJ0U3BhbkNlbGwoY2VsbCk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgUGVyY2VudDoKKyAgICAgICAgICAgICAgICAg
ICAgbV9oYXNQZXJjZW50ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxMb2dp
Y2FsV2lkdGguaXNQb3NpdGl2ZSgpICYmICghY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC5pc1Bl
cmNlbnQoKSB8fCBjZWxsTG9naWNhbFdpZHRoLnZhbHVlKCkgPiBjb2x1bW5MYXlvdXQubG9naWNh
bFdpZHRoLnZhbHVlKCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uTGF5b3V0Lmxv
Z2ljYWxXaWR0aCA9IGNlbGxMb2dpY2FsV2lkdGg7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgUmVsYXRpdmU6CisgICAgICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBOZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBjYXNlIGFuZCB3aGV0aGVyIGl0IG1ha2Vz
IHNlbnNlIHRvIGNvbXBhcmUgdmFsdWVzCisgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIGFy
ZSBub3QgbmVjZXNzYXJpbHkgb2YgdGhlIHNhbWUgdHlwZS4KKyAgICAgICAgICAgICAgICAgICAg
aWYgKGNlbGxMb2dpY2FsV2lkdGgudmFsdWUoKSA+IGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGgu
dmFsdWUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkxheW91dC5sb2dpY2FsV2lk
dGggPSBjZWxsTG9naWNhbFdpZHRoOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxz
ZSBpZiAoIWVmZkNvbCB8fCBzZWN0aW9uLT5wcmltYXJ5Q2VsbEF0KGksIGVmZkNvbCAtIDEpICE9
IGNlbGwpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIHNwYW5uaW5nIGNlbGwgb3JpZ2luYXRl
cyBpbiB0aGlzIGNvbHVtbi4gSW5zZXJ0IHRoZSBjZWxsIGludG8gc3Bhbm5pbmcgY2VsbHMgbGlz
dC4KKyAgICAgICAgICAgICAgICBpbnNlcnRTcGFuQ2VsbChjZWxsKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9G
aXhlZFRhYmxlTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRhYmxl
TGF5b3V0LmNwcAppbmRleCAyYTA4YWQ2YjVjZDM5Yzg3OTVjYWY3ZDExMTljOTQ0N2M3ZDc5MzQx
Li5lZWQ2ZTBiNTQ5OTEyODMzODY0ODc3NWM1ZmU0YmE2ZTUzZGU4OTRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCkBAIC04OCw4ICs4OCw2IEBA
IGludCBGaXhlZFRhYmxlTGF5b3V0OjpjYWxjV2lkdGhBcnJheShpbnQpCiAKICAgICB1bnNpZ25l
ZCBjdXJyZW50RWZmZWN0aXZlQ29sdW1uID0gMDsKICAgICBmb3IgKFJlbmRlclRhYmxlQ29sKiBj
b2wgPSBtX3RhYmxlLT5maXJzdENvbHVtbigpOyBjb2w7IGNvbCA9IGNvbC0+bmV4dENvbHVtbigp
KSB7Ci0gICAgICAgIGNvbC0+Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKTsKLQogICAg
ICAgICAvLyBXaWR0aCBzcGVjaWZpZWQgYnkgY29sdW1uLWdyb3VwcyB0aGF0IGhhdmUgY29sdW1u
IGNoaWxkIGRvZXMgbm90IGFmZmVjdCBjb2x1bW4gd2lkdGggaW4gZml4ZWQgbGF5b3V0IHRhYmxl
cwogICAgICAgICBpZiAoY29sLT5pc1RhYmxlQ29sdW1uR3JvdXBXaXRoQ29sdW1uQ2hpbGRyZW4o
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZUNvbC5jcHAKaW5kZXggN2FhODM0MWE3ZTIyZGQ2MDk0YTJiZGMzMjMxN2VhM2I0ZjI3
ZWEzYS4uZDUwZmIwNDdjM2NiNzM5NWE3MjlhZGMyMjFmZTc1MjdjMzAwYzFhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCkBAIC00OSw2ICs0OSwxMSBA
QCB2b2lkIFJlbmRlclRhYmxlQ29sOjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlm
ZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZAogewogICAgIFJlbmRlckJveDo6c3R5bGVEaWRDaGFu
Z2UoZGlmZiwgb2xkU3R5bGUpOwogCisgICAgLy8gRm9yd2FyZCBhbnkgbGF5b3V0IGhpbnQgdG8g
dGhlIHRhYmxlOiB0aGlzIGlzIHJlcXVpcmVkIGFzIHRoZSB0YWJsZSBpcworICAgIC8vIHRoZSBv
bmUgdG8gbGF5b3V0IC8gY29tcHV0ZSBwcmVmZXJyZWQgbG9naWNhbCB3aWR0aHMgb24gYWxsIHRo
ZSBjZWxscy4KKyAgICBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VMYXlvdXQpCisgICAgICAg
IHRhYmxlKCktPnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOworCiAgICAgLy8g
SWYgYm9yZGVyIHdhcyBjaGFuZ2VkLCBub3RpZnkgdGFibGUuCiAgICAgaWYgKHBhcmVudCgpKSB7
CiAgICAgICAgIFJlbmRlclRhYmxlKiB0YWJsZSA9IHRoaXMtPnRhYmxlKCk7CkBAIC0xMTQsMTAg
KzExOSw5IEBAIHZvaWQgUmVuZGVyVGFibGVDb2w6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQ
dHIsIGNvbnN0IEludFJlY3QqKQogCiB2b2lkIFJlbmRlclRhYmxlQ29sOjpjb21wdXRlUHJlZmVy
cmVkTG9naWNhbFdpZHRocygpCiB7Ci0gICAgc2V0UHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5
KGZhbHNlKTsKLQotICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCi0gICAgICAgIGNoaWxkLT5zZXRQ
cmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkoZmFsc2UpOworICAgIC8vIDxjb2w+IGFuZCA8Y29s
Z3JvdXA+IGRvbid0IGhhdmUgcHJlZmVycmVkIGxvZ2ljYWwgd2lkdGhzIGFzIHRoZXkgaGF2ZQor
ICAgIC8vIG5vIGNvbnRlbnQgc28gY29tcHV0aW5nIG91ciBwcmVmZXJyZWQgbG9naWNhbCB3aWR0
aHMgaXMgd2FzdGVmdWwuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKIFJlbmRlclRh
YmxlKiBSZW5kZXJUYWJsZUNvbDo6dGFibGUoKSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169952</attachid>
            <date>2012-10-22 12:05:45 -0700</date>
            <delta_ts>2012-10-22 15:02:23 -0700</delta_ts>
            <desc>Updated patch: also changed layout(). Added a test for a case the previous patch broke.</desc>
            <filename>bug-99861-20121022120423.patch</filename>
            <type>text/plain</type>
            <size>21488</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQzOGU4YjlkZGJlOWUx
NjFmOTI2MTA4ZmMzMTQxYmY0MjU2ZmQyYy4uOWM0NzI5NmMxMmZiYTljMDljNzBkNWQ3MGY0ZGQ2
MTgyNzY2NzgxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTEwLTIyICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbmRlclRh
YmxlQ29sOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyBhbmQgUmVuZGVyVGFibGVDb2w6
OmxheW91dCBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTg2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlclRhYmxlQ29sJ3MgY29tcHV0ZVByZWZlcnJlZExv
Z2ljYWxXaWR0aHMgYW5kIGxheW91dCdzIG9ubHkgcHVycG9zZSB3ZXJlIHRvIGNsZWFyIHRoZSBw
cmVmZXJyZWQgbG9naWNhbAorICAgICAgICB3aWR0aHMgZGlydHkgLyBsYXlvdXQgZmxhZyBzbyB0
aGF0IHdlIHdvdWxkIHByb3Blcmx5IHByb3BhZ2F0ZSB0aGUgaW5mb3JtYXRpb24gdG8gb3VyIGNv
bnRhaW5pbmcgdGFibGUuIFRoaXMKKyAgICAgICAgbGVkIHRvIGNsdW5reSBjb2RlIHdoZXJlIHRo
ZSB0YWJsZSBsYXlvdXQgY29kZSBoYWQgdG8gZm9yY2VmdWxseSBjYWxsIFJlbmRlclRhYmxlQ29s
Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocworICAgICAgICBvciBlbHNlIHdlIHdvdWxk
IGlnbm9yZSB0aGUgbmV4dCBsYXlvdXQgaGludCBvbiB0aGUgPGNvbD4gb3IgPGNvbGdyb3VwPi4K
KworICAgICAgICBUZXN0OiBmYXN0L3RhYmxlL2NvbC1zcGFuLWNoYW5nZS1yZWxheW91dC5odG1s
CisKKyAgICAgICAgKiByZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF1dG9UYWJsZUxheW91dDo6cmVjYWxjQ29sdW1uKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmxheW91
dCk6CisgICAgICAgIFNpbXBsaWZpZWQgdGhlIGNvZGUgbm93IHRoYXQgd2Ugb25seSBuZWVkIHRv
IGl0ZXJhdGUgb3ZlciB0aGUgc2VjdGlvbnMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvRml4ZWRU
YWJsZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaXhlZFRhYmxlTGF5b3V0OjpjYWxj
V2lkdGhBcnJheSk6CisgICAgICAgIFJlbW92ZWQgY2FsbCB0byBjb21wdXRlUHJlZmVycmVkTG9n
aWNhbFdpZHRocy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNvbDo6c3R5bGVEaWRDaGFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDb2w6OnVwZGF0ZUZyb21FbGVtZW50KToKKyAgICAgICAg
Rm9yd2FyZCBhIGxheW91dCBoaW50IHRvIHRoZSB0YWJsZSBzbyB0aGF0IHdlIHByb3Blcmx5IHJl
Y29tcHV0ZSB0aGUgY2VsbCdzIGxvZ2ljYWwgd2l0aHMuCisKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRhYmxlQ29sOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUYWJsZUNvbDo6bGF5b3V0KToKKyAgICAgICAgQ2hhbmdlIG91ciBpbXBs
ZW1lbnRhdGlvbnMgb2YgdGhvc2UgMiBtZXRob2RzIHRvIGJlIG5vLW9wcywgd2hpbGUgZW5mb3Jj
aW5nIHRoYXQgdGhleSBhcmUKKyAgICAgICAgbmV2ZXIgY2FsbGVkLgorCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUYWJsZUNvbDo6cHJvcGFnYXRlTGF5b3V0Q3VlVG9UYWJsZSk6CisgICAgICAg
IE5ldyBoZWxwZXIgZnVuY3Rpb24gdGhhdCBmb3J3YXJkIGFueSBsYXlvdXQgY3VlIHRvIHRoZSBj
b250YWluaW5nIHRhYmxlLCB0aGlzIHdvcmtzIGFyb3VuZAorICAgICAgICB1cyBub3QgY2xlYXJp
bmcgdGhlIGZsYWdzIHdoaWNoIGNvbmZ1c2VzIFJlbmRlck9iamVjdCBtYXJrQ29udGFpbmluZ0Js
b2Nrc0ZvckxheW91dCBhbmQKKyAgICAgICAgaW52YWxpZGF0ZUNvbnRhaW5lclByZWZlcnJlZExv
Z2ljYWxXaWR0aHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaDoKKyAg
ICAgICAgTWFkZSB0aGUgZnVuY3Rpb24gdGhhdCB3ZSBhcmUgbm90IGV4cGVjdGVkIHRvIGJlIGNh
bGxlZCBwcml2YXRlLgorCiAyMDEyLTEwLTIyICBFcmlrIEFydmlkc3NvbiAgPGFydkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgSFRNTEJhc2VFbGVtZW50IGhyZWYgYXR0cmlidXRlIGJpbmRpbmcg
cmV0dXJucyB3cm9uZyBVUkwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9B
dXRvVGFibGVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxh
eW91dC5jcHAKaW5kZXggMDhlY2ZmOTBlMGQyZTE5YzAxMDc1ODU2MjZmMTZhNjFlODgyNTkyYy4u
ZmI0MzZjYTU1NTkwNTU0YmE4YWZhY2UyNGQwMWZiMDMwYjBlMzAzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAKQEAgLTQ5LDgxICs0OSw3NyBAQCB2
b2lkIEF1dG9UYWJsZUxheW91dDo6cmVjYWxjQ29sdW1uKHVuc2lnbmVkIGVmZkNvbCkKICAgICBS
ZW5kZXJUYWJsZUNlbGwqIGZpeGVkQ29udHJpYnV0b3IgPSAwOwogICAgIFJlbmRlclRhYmxlQ2Vs
bCogbWF4Q29udHJpYnV0b3IgPSAwOwogCi0gICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0g
bV90YWJsZS0+Y2hpbGRyZW4oKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+
bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAoY2hpbGQtPmlzUmVuZGVyVGFibGVDb2woKSkK
LSAgICAgICAgICAgIHRvUmVuZGVyVGFibGVDb2woY2hpbGQpLT5jb21wdXRlUHJlZmVycmVkTG9n
aWNhbFdpZHRocygpOwotICAgICAgICBlbHNlIGlmIChjaGlsZC0+aXNUYWJsZVNlY3Rpb24oKSkg
ewotICAgICAgICAgICAgUmVuZGVyVGFibGVTZWN0aW9uKiBzZWN0aW9uID0gdG9SZW5kZXJUYWJs
ZVNlY3Rpb24oY2hpbGQpOwotICAgICAgICAgICAgdW5zaWduZWQgbnVtUm93cyA9IHNlY3Rpb24t
Pm51bVJvd3MoKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Sb3dz
OyBpKyspIHsKLSAgICAgICAgICAgICAgICBSZW5kZXJUYWJsZVNlY3Rpb246OkNlbGxTdHJ1Y3Qg
Y3VycmVudCA9IHNlY3Rpb24tPmNlbGxBdChpLCBlZmZDb2wpOwotICAgICAgICAgICAgICAgIFJl
bmRlclRhYmxlQ2VsbCogY2VsbCA9IGN1cnJlbnQucHJpbWFyeUNlbGwoKTsKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBpZiAoY3VycmVudC5pbkNvbFNwYW4gfHwgIWNlbGwpCi0g
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgYm9vbCBjZWxs
SGFzQ29udGVudCA9IGNlbGwtPmNoaWxkcmVuKCktPmZpcnN0Q2hpbGQoKSB8fCBjZWxsLT5zdHls
ZSgpLT5oYXNCb3JkZXIoKSB8fCBjZWxsLT5zdHlsZSgpLT5oYXNQYWRkaW5nKCk7Ci0gICAgICAg
ICAgICAgICAgaWYgKGNlbGxIYXNDb250ZW50KQotICAgICAgICAgICAgICAgICAgICBjb2x1bW5M
YXlvdXQuZW1wdHlDZWxsc09ubHkgPSBmYWxzZTsKLQotICAgICAgICAgICAgICAgIC8vIEEgY2Vs
bCBvcmlnaW5hdGVzIGluIHRoaXMgY29sdW1uLiBFbnN1cmUgd2UgaGF2ZQotICAgICAgICAgICAg
ICAgIC8vIGEgbWluL21heCB3aWR0aCBvZiBhdCBsZWFzdCAxcHggZm9yIHRoaXMgY29sdW1uIG5v
dy4KLSAgICAgICAgICAgICAgICBjb2x1bW5MYXlvdXQubWluTG9naWNhbFdpZHRoID0gbWF4PGlu
dD4oY29sdW1uTGF5b3V0Lm1pbkxvZ2ljYWxXaWR0aCwgY2VsbEhhc0NvbnRlbnQgPyAxIDogMCk7
Ci0gICAgICAgICAgICAgICAgY29sdW1uTGF5b3V0Lm1heExvZ2ljYWxXaWR0aCA9IG1heDxpbnQ+
KGNvbHVtbkxheW91dC5tYXhMb2dpY2FsV2lkdGgsIDEpOwotCi0gICAgICAgICAgICAgICAgaWYg
KGNlbGwtPmNvbFNwYW4oKSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjZWxsLT5w
cmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNl
bGwtPmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCk7Ci0gICAgICAgICAgICAgICAgICAg
IGNvbHVtbkxheW91dC5taW5Mb2dpY2FsV2lkdGggPSBtYXg8aW50PihjZWxsLT5taW5QcmVmZXJy
ZWRMb2dpY2FsV2lkdGgoKSwgY29sdW1uTGF5b3V0Lm1pbkxvZ2ljYWxXaWR0aCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChjZWxsLT5tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSA+IGNvbHVt
bkxheW91dC5tYXhMb2dpY2FsV2lkdGgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVt
bkxheW91dC5tYXhMb2dpY2FsV2lkdGggPSBjZWxsLT5tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1heENvbnRyaWJ1dG9yID0gY2VsbDsKLSAgICAg
ICAgICAgICAgICAgICAgfQorICAgIGZvciAoUmVuZGVyVGFibGVTZWN0aW9uKiBzZWN0aW9uID0g
bV90YWJsZS0+dG9wTm9uRW1wdHlTZWN0aW9uKCk7IHNlY3Rpb247IHNlY3Rpb24gPSBtX3RhYmxl
LT5zZWN0aW9uQmVsb3coc2VjdGlvbiwgU2tpcEVtcHR5U2VjdGlvbnMpKSB7CisgICAgICAgIHVu
c2lnbmVkIG51bVJvd3MgPSBzZWN0aW9uLT5udW1Sb3dzKCk7CisgICAgICAgIEFTU0VSVChudW1S
b3dzKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVJvd3M7IGkrKykgewor
ICAgICAgICAgICAgUmVuZGVyVGFibGVTZWN0aW9uOjpDZWxsU3RydWN0IGN1cnJlbnQgPSBzZWN0
aW9uLT5jZWxsQXQoaSwgZWZmQ29sKTsKKyAgICAgICAgICAgIFJlbmRlclRhYmxlQ2VsbCogY2Vs
bCA9IGN1cnJlbnQucHJpbWFyeUNlbGwoKTsKKworICAgICAgICAgICAgaWYgKGN1cnJlbnQuaW5D
b2xTcGFuIHx8ICFjZWxsKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAg
ICAgICAgICAgIC8vIEFsbCBicm93c2VycyBpbXBsZW1lbnQgYSBzaXplIGxpbWl0IG9uIHRoZSBj
ZWxsJ3MgbWF4IHdpZHRoLiAKLSAgICAgICAgICAgICAgICAgICAgLy8gT3VyIGxpbWl0IGlzIGJh
c2VkIG9uIEtIVE1MJ3MgcmVwcmVzZW50YXRpb24gdGhhdCB1c2VkIDE2IGJpdHMgd2lkdGhzLgot
ICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogT3RoZXIgYnJvd3NlcnMgaGF2ZSBhIGxvd2Vy
IGxpbWl0IGZvciB0aGUgY2VsbCdzIG1heCB3aWR0aC4gCi0gICAgICAgICAgICAgICAgICAgIGNv
bnN0IGludCBjQ2VsbE1heFdpZHRoID0gMzI3NjA7Ci0gICAgICAgICAgICAgICAgICAgIExlbmd0
aCBjZWxsTG9naWNhbFdpZHRoID0gY2VsbC0+c3R5bGVPckNvbExvZ2ljYWxXaWR0aCgpOwotICAg
ICAgICAgICAgICAgICAgICBpZiAoY2VsbExvZ2ljYWxXaWR0aC52YWx1ZSgpID4gY0NlbGxNYXhX
aWR0aCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxMb2dpY2FsV2lkdGguc2V0VmFsdWUo
Y0NlbGxNYXhXaWR0aCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjZWxsTG9naWNhbFdpZHRo
LmlzTmVnYXRpdmUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxMb2dpY2FsV2lkdGgu
c2V0VmFsdWUoMCk7Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY2VsbExvZ2ljYWxXaWR0
aC50eXBlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBGaXhlZDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGlnbm9yZSB3aWR0aD0wCi0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoY2VsbExvZ2ljYWxXaWR0aC5pc1Bvc2l0aXZlKCkgJiYgIWNvbHVtbkxheW91dC5sb2dpY2Fs
V2lkdGguaXNQZXJjZW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRV
bml0IGxvZ2ljYWxXaWR0aCA9IGNlbGwtPmFkanVzdEJvcmRlckJveExvZ2ljYWxXaWR0aEZvckJv
eFNpemluZyhjZWxsTG9naWNhbFdpZHRoLnZhbHVlKCkpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLmlzRml4ZWQoKSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOYXYvSUUgd2VpcmRuZXNzCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgobG9naWNhbFdpZHRoID4gY29sdW1uTGF5b3V0Lmxv
Z2ljYWxXaWR0aC52YWx1ZSgpKSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHx8ICgoY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC52YWx1ZSgpID09IGxvZ2ljYWxXaWR0aCkg
JiYgKG1heENvbnRyaWJ1dG9yID09IGNlbGwpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC5zZXRWYWx1ZShGaXhlZCwgbG9n
aWNhbFdpZHRoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVkQ29u
dHJpYnV0b3IgPSBjZWxsOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJvb2wgY2VsbEhh
c0NvbnRlbnQgPSBjZWxsLT5jaGlsZHJlbigpLT5maXJzdENoaWxkKCkgfHwgY2VsbC0+c3R5bGUo
KS0+aGFzQm9yZGVyKCkgfHwgY2VsbC0+c3R5bGUoKS0+aGFzUGFkZGluZygpOworICAgICAgICAg
ICAgaWYgKGNlbGxIYXNDb250ZW50KQorICAgICAgICAgICAgICAgIGNvbHVtbkxheW91dC5lbXB0
eUNlbGxzT25seSA9IGZhbHNlOworCisgICAgICAgICAgICAvLyBBIGNlbGwgb3JpZ2luYXRlcyBp
biB0aGlzIGNvbHVtbi4gRW5zdXJlIHdlIGhhdmUKKyAgICAgICAgICAgIC8vIGEgbWluL21heCB3
aWR0aCBvZiBhdCBsZWFzdCAxcHggZm9yIHRoaXMgY29sdW1uIG5vdy4KKyAgICAgICAgICAgIGNv
bHVtbkxheW91dC5taW5Mb2dpY2FsV2lkdGggPSBtYXg8aW50Pihjb2x1bW5MYXlvdXQubWluTG9n
aWNhbFdpZHRoLCBjZWxsSGFzQ29udGVudCA/IDEgOiAwKTsKKyAgICAgICAgICAgIGNvbHVtbkxh
eW91dC5tYXhMb2dpY2FsV2lkdGggPSBtYXg8aW50Pihjb2x1bW5MYXlvdXQubWF4TG9naWNhbFdp
ZHRoLCAxKTsKKworICAgICAgICAgICAgaWYgKGNlbGwtPmNvbFNwYW4oKSA9PSAxKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGNlbGwtPnByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eSgpKQorICAg
ICAgICAgICAgICAgICAgICBjZWxsLT5jb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpOwor
ICAgICAgICAgICAgICAgIGNvbHVtbkxheW91dC5taW5Mb2dpY2FsV2lkdGggPSBtYXg8aW50Pihj
ZWxsLT5taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSwgY29sdW1uTGF5b3V0Lm1pbkxvZ2ljYWxX
aWR0aCk7CisgICAgICAgICAgICAgICAgaWYgKGNlbGwtPm1heFByZWZlcnJlZExvZ2ljYWxXaWR0
aCgpID4gY29sdW1uTGF5b3V0Lm1heExvZ2ljYWxXaWR0aCkgeworICAgICAgICAgICAgICAgICAg
ICBjb2x1bW5MYXlvdXQubWF4TG9naWNhbFdpZHRoID0gY2VsbC0+bWF4UHJlZmVycmVkTG9naWNh
bFdpZHRoKCk7CisgICAgICAgICAgICAgICAgICAgIG1heENvbnRyaWJ1dG9yID0gY2VsbDsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBBbGwgYnJvd3NlcnMgaW1wbGVt
ZW50IGEgc2l6ZSBsaW1pdCBvbiB0aGUgY2VsbCdzIG1heCB3aWR0aC4KKyAgICAgICAgICAgICAg
ICAvLyBPdXIgbGltaXQgaXMgYmFzZWQgb24gS0hUTUwncyByZXByZXNlbnRhdGlvbiB0aGF0IHVz
ZWQgMTYgYml0cyB3aWR0aHMuCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IE90aGVyIGJyb3dz
ZXJzIGhhdmUgYSBsb3dlciBsaW1pdCBmb3IgdGhlIGNlbGwncyBtYXggd2lkdGguCisgICAgICAg
ICAgICAgICAgY29uc3QgaW50IGNDZWxsTWF4V2lkdGggPSAzMjc2MDsKKyAgICAgICAgICAgICAg
ICBMZW5ndGggY2VsbExvZ2ljYWxXaWR0aCA9IGNlbGwtPnN0eWxlT3JDb2xMb2dpY2FsV2lkdGgo
KTsKKyAgICAgICAgICAgICAgICBpZiAoY2VsbExvZ2ljYWxXaWR0aC52YWx1ZSgpID4gY0NlbGxN
YXhXaWR0aCkKKyAgICAgICAgICAgICAgICAgICAgY2VsbExvZ2ljYWxXaWR0aC5zZXRWYWx1ZShj
Q2VsbE1heFdpZHRoKTsKKyAgICAgICAgICAgICAgICBpZiAoY2VsbExvZ2ljYWxXaWR0aC5pc05l
Z2F0aXZlKCkpCisgICAgICAgICAgICAgICAgICAgIGNlbGxMb2dpY2FsV2lkdGguc2V0VmFsdWUo
MCk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChjZWxsTG9naWNhbFdpZHRoLnR5cGUoKSkgewor
ICAgICAgICAgICAgICAgIGNhc2UgRml4ZWQ6CisgICAgICAgICAgICAgICAgICAgIC8vIGlnbm9y
ZSB3aWR0aD0wCisgICAgICAgICAgICAgICAgICAgIGlmIChjZWxsTG9naWNhbFdpZHRoLmlzUG9z
aXRpdmUoKSAmJiAhY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC5pc1BlcmNlbnQoKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGggPSBjZWxsLT5hZGp1
c3RCb3JkZXJCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoY2VsbExvZ2ljYWxXaWR0aC52YWx1
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW5MYXlvdXQubG9naWNhbFdp
ZHRoLmlzRml4ZWQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5hdi9JRSB3
ZWlyZG5lc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGxvZ2ljYWxXaWR0aCA+
IGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGgudmFsdWUoKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfHwgKChjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLnZhbHVlKCkgPT0gbG9n
aWNhbFdpZHRoKSAmJiAobWF4Q29udHJpYnV0b3IgPT0gY2VsbCkpKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGguc2V0VmFsdWUoRml4
ZWQsIGxvZ2ljYWxXaWR0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVk
Q29udHJpYnV0b3IgPSBjZWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC5zZXRWYWx1ZShGaXhlZCwgbG9naWNhbFdpZHRoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhlZENvbnRyaWJ1dG9yID0gY2VsbDsKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICBjYXNlIFBlcmNlbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBtX2hhc1BlcmNlbnQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxM
b2dpY2FsV2lkdGguaXNQb3NpdGl2ZSgpICYmICghY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC5p
c1BlcmNlbnQoKSB8fCBjZWxsTG9naWNhbFdpZHRoLnZhbHVlKCkgPiBjb2x1bW5MYXlvdXQubG9n
aWNhbFdpZHRoLnZhbHVlKCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkxh
eW91dC5sb2dpY2FsV2lkdGggPSBjZWxsTG9naWNhbFdpZHRoOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgUmVsYXRpdmU6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogTmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY2FzZSBh
bmQgd2hldGhlciBpdCBtYWtlcyBzZW5zZSB0byBjb21wYXJlIHZhbHVlcwotICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gd2hpY2ggYXJlIG5vdCBuZWNlc3NhcmlseSBvZiB0aGUgc2FtZSB0eXBl
LgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxMb2dpY2FsV2lkdGgudmFsdWUoKSA+
IGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGgudmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoID0gY2VsbExvZ2ljYWxXaWR0aDsKLSAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghZWZm
Q29sIHx8IHNlY3Rpb24tPnByaW1hcnlDZWxsQXQoaSwgZWZmQ29sIC0gMSkgIT0gY2VsbCkgewot
ICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHNwYW5uaW5nIGNlbGwgb3JpZ2luYXRlcyBpbiB0
aGlzIGNvbHVtbi4gSW5zZXJ0IHRoZSBjZWxsIGludG8gc3Bhbm5pbmcgY2VsbHMgbGlzdC4KLSAg
ICAgICAgICAgICAgICAgICAgaW5zZXJ0U3BhbkNlbGwoY2VsbCk7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgUGVyY2VudDoKKyAgICAgICAgICAgICAg
ICAgICAgbV9oYXNQZXJjZW50ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxM
b2dpY2FsV2lkdGguaXNQb3NpdGl2ZSgpICYmICghY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC5p
c1BlcmNlbnQoKSB8fCBjZWxsTG9naWNhbFdpZHRoLnZhbHVlKCkgPiBjb2x1bW5MYXlvdXQubG9n
aWNhbFdpZHRoLnZhbHVlKCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uTGF5b3V0
LmxvZ2ljYWxXaWR0aCA9IGNlbGxMb2dpY2FsV2lkdGg7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgUmVsYXRpdmU6CisgICAgICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBOZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBjYXNlIGFuZCB3aGV0aGVyIGl0IG1h
a2VzIHNlbnNlIHRvIGNvbXBhcmUgdmFsdWVzCisgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNo
IGFyZSBub3QgbmVjZXNzYXJpbHkgb2YgdGhlIHNhbWUgdHlwZS4KKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGNlbGxMb2dpY2FsV2lkdGgudmFsdWUoKSA+IGNvbHVtbkxheW91dC5sb2dpY2FsV2lk
dGgudmFsdWUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkxheW91dC5sb2dpY2Fs
V2lkdGggPSBjZWxsTG9naWNhbFdpZHRoOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAoIWVmZkNvbCB8fCBzZWN0aW9uLT5wcmltYXJ5Q2VsbEF0KGksIGVmZkNvbCAtIDEp
ICE9IGNlbGwpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIHNwYW5uaW5nIGNlbGwgb3JpZ2lu
YXRlcyBpbiB0aGlzIGNvbHVtbi4gSW5zZXJ0IHRoZSBjZWxsIGludG8gc3Bhbm5pbmcgY2VsbHMg
bGlzdC4KKyAgICAgICAgICAgICAgICBpbnNlcnRTcGFuQ2VsbChjZWxsKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GaXhlZFRhYmxlTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRh
YmxlTGF5b3V0LmNwcAppbmRleCAyYTA4YWQ2YjVjZDM5Yzg3OTVjYWY3ZDExMTljOTQ0N2M3ZDc5
MzQxLi5lZWQ2ZTBiNTQ5OTEyODMzODY0ODc3NWM1ZmU0YmE2ZTUzZGU4OTRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCkBAIC04OCw4ICs4OCw2
IEBAIGludCBGaXhlZFRhYmxlTGF5b3V0OjpjYWxjV2lkdGhBcnJheShpbnQpCiAKICAgICB1bnNp
Z25lZCBjdXJyZW50RWZmZWN0aXZlQ29sdW1uID0gMDsKICAgICBmb3IgKFJlbmRlclRhYmxlQ29s
KiBjb2wgPSBtX3RhYmxlLT5maXJzdENvbHVtbigpOyBjb2w7IGNvbCA9IGNvbC0+bmV4dENvbHVt
bigpKSB7Ci0gICAgICAgIGNvbC0+Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKTsKLQog
ICAgICAgICAvLyBXaWR0aCBzcGVjaWZpZWQgYnkgY29sdW1uLWdyb3VwcyB0aGF0IGhhdmUgY29s
dW1uIGNoaWxkIGRvZXMgbm90IGFmZmVjdCBjb2x1bW4gd2lkdGggaW4gZml4ZWQgbGF5b3V0IHRh
YmxlcwogICAgICAgICBpZiAoY29sLT5pc1RhYmxlQ29sdW1uR3JvdXBXaXRoQ29sdW1uQ2hpbGRy
ZW4oKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZS5jcHAKaW5kZXggZjliZjQ0NjA5ZWM0Mzk3OWE5OTY2ODlhZDNiNTEyYmNkZTRlNzky
ZC4uZDY1YmUxMTFlZjY0NjBlYjY4ZGNlNjdmMDUxODQ3MmZlYjMxZTJlZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0zNzgsMjAgKzM3OCwxNSBAQCB2b2lk
IFJlbmRlclRhYmxlOjpsYXlvdXQoKQogCiAgICAgYm9vbCBjb2xsYXBzaW5nID0gY29sbGFwc2VC
b3JkZXJzKCk7CiAKLSAgICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7
IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChjaGls
ZC0+aXNUYWJsZVNlY3Rpb24oKSkgewotICAgICAgICAgICAgUmVuZGVyVGFibGVTZWN0aW9uKiBz
ZWN0aW9uID0gdG9SZW5kZXJUYWJsZVNlY3Rpb24oY2hpbGQpOwotICAgICAgICAgICAgaWYgKG1f
Y29sdW1uTG9naWNhbFdpZHRoQ2hhbmdlZCkKLSAgICAgICAgICAgICAgICBzZWN0aW9uLT5zZXRD
aGlsZE5lZWRzTGF5b3V0KHRydWUsIE1hcmtPbmx5VGhpcyk7Ci0gICAgICAgICAgICBzZWN0aW9u
LT5sYXlvdXRJZk5lZWRlZCgpOwotICAgICAgICAgICAgdG90YWxTZWN0aW9uTG9naWNhbEhlaWdo
dCArPSBzZWN0aW9uLT5jYWxjUm93TG9naWNhbEhlaWdodCgpOwotICAgICAgICAgICAgaWYgKGNv
bGxhcHNpbmcpCi0gICAgICAgICAgICAgICAgc2VjdGlvbi0+cmVjYWxjT3V0ZXJCb3JkZXIoKTsK
LSAgICAgICAgICAgIEFTU0VSVCghc2VjdGlvbi0+bmVlZHNMYXlvdXQoKSk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoY2hpbGQtPmlzUmVuZGVyVGFibGVDb2woKSkgewotICAgICAgICAgICAgY2hpbGQt
PmxheW91dElmTmVlZGVkKCk7Ci0gICAgICAgICAgICBBU1NFUlQoIWNoaWxkLT5uZWVkc0xheW91
dCgpKTsKLSAgICAgICAgfQorICAgIC8vIFdlIGlnbm9yZSB0YWJsZSBjb2wgLyBjb2xncm91cCBp
biB0aGlzIGl0ZXJhdGlvbiBhcyB0aGV5IGFyZSB1c2VkIHRvIHNpemUgdGhlIGNlbGwncyB3aWR0
aHMgZHVyaW5nIGF1dG8gLyBmaXhlZCB0YWJsZSBsYXlvdXQuCisgICAgZm9yIChSZW5kZXJUYWJs
ZVNlY3Rpb24qIHNlY3Rpb24gPSB0b3BTZWN0aW9uKCk7IHNlY3Rpb247IHNlY3Rpb24gPSBzZWN0
aW9uQmVsb3coc2VjdGlvbikpIHsKKyAgICAgICAgaWYgKG1fY29sdW1uTG9naWNhbFdpZHRoQ2hh
bmdlZCkKKyAgICAgICAgICAgIHNlY3Rpb24tPnNldENoaWxkTmVlZHNMYXlvdXQodHJ1ZSwgTWFy
a09ubHlUaGlzKTsKKyAgICAgICAgc2VjdGlvbi0+bGF5b3V0SWZOZWVkZWQoKTsKKyAgICAgICAg
dG90YWxTZWN0aW9uTG9naWNhbEhlaWdodCArPSBzZWN0aW9uLT5jYWxjUm93TG9naWNhbEhlaWdo
dCgpOworICAgICAgICBpZiAoY29sbGFwc2luZykKKyAgICAgICAgICAgIHNlY3Rpb24tPnJlY2Fs
Y091dGVyQm9yZGVyKCk7CisgICAgICAgIEFTU0VSVCghc2VjdGlvbi0+bmVlZHNMYXlvdXQoKSk7
CiAgICAgfQogCiAgICAgLy8gSWYgYW55IHRhYmxlIHNlY3Rpb24gbW92ZWQgdmVydGljYWxseSwg
d2Ugd2lsbCBqdXN0IHJlcGFpbnQgZXZlcnl0aGluZyBmcm9tIHRoYXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCmluZGV4IDdhYTgzNDFhN2UyMmRkNjA5NGEy
YmRjMzIzMTdlYTNiNGYyN2VhM2EuLmM4NDgyZmJlNWJhNjg5ZGNmZTk3MzExMGYwMzRkM2VlMjA1
MDU5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNv
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcApA
QCAtNDksNiArNDksOSBAQCB2b2lkIFJlbmRlclRhYmxlQ29sOjpzdHlsZURpZENoYW5nZShTdHls
ZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZAogewogICAgIFJlbmRlckJv
eDo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUpOwogCisgICAgaWYgKGRpZmYgPT0gU3R5
bGVEaWZmZXJlbmNlTGF5b3V0KQorICAgICAgICBwcm9wYWdhdGVMYXlvdXRDdWVUb1RhYmxlKCk7
CisKICAgICAvLyBJZiBib3JkZXIgd2FzIGNoYW5nZWQsIG5vdGlmeSB0YWJsZS4KICAgICBpZiAo
cGFyZW50KCkpIHsKICAgICAgICAgUmVuZGVyVGFibGUqIHRhYmxlID0gdGhpcy0+dGFibGUoKTsK
QEAgLTY2LDggKzY5LDkgQEAgdm9pZCBSZW5kZXJUYWJsZUNvbDo6dXBkYXRlRnJvbUVsZW1lbnQo
KQogICAgICAgICBtX3NwYW4gPSB0Yy0+c3BhbigpOwogICAgIH0gZWxzZQogICAgICAgICBtX3Nw
YW4gPSAhKHN0eWxlKCkgJiYgc3R5bGUoKS0+ZGlzcGxheSgpID09IFRBQkxFX0NPTFVNTl9HUk9V
UCk7Ci0gICAgaWYgKG1fc3BhbiAhPSBvbGRTcGFuICYmIHN0eWxlKCkgJiYgcGFyZW50KCkpCi0g
ICAgICAgIHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOworCisgICAgaWYgKG1f
c3BhbiAhPSBvbGRTcGFuICYmIHN0eWxlKCkpCisgICAgICAgIHByb3BhZ2F0ZUxheW91dEN1ZVRv
VGFibGUoKTsKIH0KIAogdm9pZCBSZW5kZXJUYWJsZUNvbDo6d2lsbEJlUmVtb3ZlZEZyb21UcmVl
KCkKQEAgLTExNCwxMCArMTE4LDI2IEBAIHZvaWQgUmVuZGVyVGFibGVDb2w6OmltYWdlQ2hhbmdl
ZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqKQogCiB2b2lkIFJlbmRlclRhYmxlQ29s
Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiB7Ci0gICAgc2V0UHJlZmVycmVkTG9n
aWNhbFdpZHRoc0RpcnR5KGZhbHNlKTsKKyAgICAvLyA8Y29sPiBhbmQgPGNvbGdyb3VwPiBkb24n
dCBoYXZlIHByZWZlcnJlZCBsb2dpY2FsIHdpZHRocyBhcyB0aGV5IGhhdmUKKyAgICAvLyBubyBj
b250ZW50IHNvIGNvbXB1dGluZyBvdXIgcHJlZmVycmVkIGxvZ2ljYWwgd2lkdGhzIGlzIHdhc3Rl
ZnVsLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFJlbmRlclRhYmxlQ29s
OjpsYXlvdXQoKQoreworICAgIC8vIFRoZXJlIGlzIG5vIG5lZWQgdG8gbGF5b3V0IHRhYmxlIDxj
b2w+IG9yIDxjb2xncm91cD4gYXMgdGhleSBoYXZlIG5vIGNvbnRlbnQuCisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Cit9CiAKLSAgICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQgPSBmaXJzdENo
aWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQotICAgICAgICBjaGls
ZC0+c2V0UHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KGZhbHNlKTsKK3ZvaWQgUmVuZGVyVGFi
bGVDb2w6OnByb3BhZ2F0ZUxheW91dEN1ZVRvVGFibGUoKSBjb25zdAoreworICAgIC8vIEZvcndh
cmQgYW55IGxheW91dCBoaW50IHRvIHRoZSB0YWJsZTogdGhpcyBpcyByZXF1aXJlZCBhcyB0aGUg
dGFibGUgaXMKKyAgICAvLyB0aGUgb25lIHRvIGxheW91dCAvIGNvbXB1dGUgcHJlZmVycmVkIGxv
Z2ljYWwgd2lkdGhzIG9uIGFsbCB0aGUgY2VsbHMuCisgICAgLy8gQWxzbyB3ZSBkb24ndCBjbGVh
ciBhbnkgZmxhZ3MsIHdoaWNoIG1heSBuZXZlciBtYXJrIHRoZSB0YWJsZS4KKyAgICBpZiAoUmVu
ZGVyVGFibGUqIHRhYmxlID0gdGhpcy0+dGFibGUoKSkgeworICAgICAgICB0YWJsZS0+c2V0Q2hp
bGROZWVkc0xheW91dCh0cnVlKTsKKyAgICAgICAgdGFibGUtPnNldFByZWZlcnJlZExvZ2ljYWxX
aWR0aHNEaXJ0eSh0cnVlKTsKKyAgICB9CiB9CiAKIFJlbmRlclRhYmxlKiBSZW5kZXJUYWJsZUNv
bDo6dGFibGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ29sLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wu
aAppbmRleCAxYTlmYWM2ZWMyM2Q2ZjBjNWM3MTA1ZGJmYzExNDMxZThkYTgyNGE1Li4xZThlODAy
NTdhNWFkNGQ1MjdlMjhjYTlkM2VkYzIyMGI4NDY1NzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVDb2wuaApAQCAtNDAsOCArNDAsNiBAQCBwdWJsaWM6CiAgICAgY29u
c3QgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuICZtX2No
aWxkcmVuOyB9CiAgICAgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIHsgcmV0dXJu
ICZtX2NoaWxkcmVuOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2lj
YWxXaWR0aHMoKTsKLQogICAgIHVuc2lnbmVkIHNwYW4oKSBjb25zdCB7IHJldHVybiBtX3NwYW47
IH0KICAgICB2b2lkIHNldFNwYW4odW5zaWduZWQgc3BhbikgeyBtX3NwYW4gPSBzcGFuOyB9CiAK
QEAgLTc3LDYgKzc1LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdENoaWxk
TGlzdCogdmlydHVhbENoaWxkcmVuKCkgeyByZXR1cm4gY2hpbGRyZW4oKTsgfQogICAgIHZpcnR1
YWwgY29uc3QgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiB2aXJ0dWFsQ2hpbGRyZW4oKSBjb25zdCB7
IHJldHVybiBjaGlsZHJlbigpOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJl
ZExvZ2ljYWxXaWR0aHMoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZF
UlJJREU7CisKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJl
dHVybiAiUmVuZGVyVGFibGVDb2wiOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyVGFibGVD
b2woKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUZyb21FbGVtZW50KCk7CkBAIC05Miw2ICs5Myw4IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0
dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHls
ZSogb2xkU3R5bGUpOwogCisgICAgdm9pZCBwcm9wYWdhdGVMYXlvdXRDdWVUb1RhYmxlKCkgY29u
c3Q7CisKICAgICBSZW5kZXJUYWJsZSogdGFibGUoKSBjb25zdDsKIAogICAgIFJlbmRlck9iamVj
dENoaWxkTGlzdCBtX2NoaWxkcmVuOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFiMjY4YzU4MGNkNjRjNWU2ZmE4MzQ4MTc3
YWVmYmE4NTMzNjcyYTQuLjhhMjFkM2FhZmIxYzY2MzU2NzFiM2VhNDYyNzQyZTU0ZGJiZmYxODAg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMC0yMiAgSnVsaWVuIENoYWZmcmFpeCAgPGpj
aGFmZnJhaXhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZW5kZXJUYWJsZUNvbDo6Y29tcHV0ZVBy
ZWZlcnJlZExvZ2ljYWxXaWR0aHMgYW5kIFJlbmRlclRhYmxlQ29sOjpsYXlvdXQgc2hvdWxkIG5l
dmVyIGJlIGNhbGxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTk4NjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRlZCB0aGlzIHRlc3QgYXMgdGhlIGNvZGUgaW4gUmVuZGVyVGFibGVDb2w6OnVwZGF0
ZUZyb21FbGVtZW50IHdhc24ndCBwcm9wZXJseSBjb3ZlcmVkLgorCisgICAgICAgICogZmFzdC90
YWJsZS9jb2wtc3Bhbi1jaGFuZ2UtcmVsYXlvdXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L3RhYmxlL2NvbC1zcGFuLWNoYW5nZS1yZWxheW91dC5odG1sOiBBZGRlZC4KKwog
MjAxMi0xMC0yMiAgRXJpayBBcnZpZHNzb24gIDxhcnZAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IEhUTUxCYXNlRWxlbWVudCBocmVmIGF0dHJpYnV0ZSBiaW5kaW5nIHJldHVybnMgd3JvbmcgVVJM
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RhYmxlL2NvbC1zcGFuLWNoYW5nZS1yZWxh
eW91dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3RhYmxlL2NvbC1zcGFuLWNoYW5n
ZS1yZWxheW91dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc3ZTEyYjlmOGJjODUwYWI0ZDI3
NzI3NTc2MGUxM2E5ZDY0NDY5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
dGFibGUvY29sLXNwYW4tY2hhbmdlLXJlbGF5b3V0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDgg
QEAKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCBkeW5hbWljYWxseSBjaGFuZ2luZyBhIGNvbHVtbidz
ICdzcGFuJyBwcm9wZXJseSByZWNvbXB1dGUgdGhlIGNlbGwncyB3aWR0aHMuCisKK1RoZSB0YWJs
ZSBiZWxvdyBzaHJpbmsgdG8gMjAwcHggYWZ0ZXIgY2hhbmdpbmcgdGhlIGNvbHVtbidzIHNwYW4u
CisKK1RhYmxlIHdpZHRoIHdhcyAzMDBweAorVGFibGUgd2lkdGggaXMgMjAwcHgKK1BBU1NFRDog
VGFibGUgY2hhbmdlZCB3aWR0aAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RhYmxl
L2NvbC1zcGFuLWNoYW5nZS1yZWxheW91dC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90YWJsZS9j
b2wtc3Bhbi1jaGFuZ2UtcmVsYXlvdXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzJmOThhNDVhNmNhNTNi
YmVhNzE1NmI4NDRkNjc2OGM1YzhlNmVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC90YWJsZS9jb2wtc3Bhbi1jaGFuZ2UtcmVsYXlvdXQuaHRtbApAQCAtMCwwICsxLDYxIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+Cisg
ICAgICAgICAgICB0YWJsZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJvcmRlci1j
b2xsYXBzZTogY29sbGFwc2U7CisgICAgICAgICAgICAgICAgdGFibGUtbGF5b3V0OiBmaXhlZDsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICB0ZAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IGdyZWVuOwor
ICAgICAgICAgICAgICAgIGhlaWdodDogMWVtOworICAgICAgICAgICAgfQorICAgICAgICA8L3N0
eWxlPgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgICAg
ICBmdW5jdGlvbiBsb2cobXNnKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBj
b25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKKyAgICAgICAgICAg
ICAgICBjb25zb2xlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1zZykpOwor
ICAgICAgICAgICAgICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnYnInKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNoYW5nZUNv
bFNwYW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBjb2wgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29sdW1uJyk7CisgICAgICAgICAgICAgICAgdmFyIG9sZENlbGxX
aWR0aCA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhYmxlJykp
LndpZHRoOworICAgICAgICAgICAgICAgIGNvbC5zZXRBdHRyaWJ1dGUoInNwYW4iLCAiMSIpOwor
ICAgICAgICAgICAgICAgIHZhciBuZXdDZWxsV2lkdGggPSBnZXRDb21wdXRlZFN0eWxlKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCd0YWJsZScpKS53aWR0aDsKKworICAgICAgICAgICAgICAgIGxv
ZygiVGFibGUgd2lkdGggd2FzICIgKyBvbGRDZWxsV2lkdGgpOworICAgICAgICAgICAgICAgIGxv
ZygiVGFibGUgd2lkdGggaXMgIiArIG5ld0NlbGxXaWR0aCk7CisgICAgICAgICAgICAgICAgaWYg
KG9sZENlbGxXaWR0aCAhPSBuZXdDZWxsV2lkdGgpCisgICAgICAgICAgICAgICAgICAgIGxvZygi
UEFTU0VEOiBUYWJsZSBjaGFuZ2VkIHdpZHRoIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICBsb2coIkZBSUxFRDogVGFibGUgZGlkIG5vdCBjaGFuZ2Ugd2lkdGgi
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5IG9ubG9hZD0iY2hhbmdlQ29sU3BhbigpOyI+CisgICAgICAgIDxwPlRoaXMgdGVzdCBjaGVj
a3MgdGhhdCBkeW5hbWljYWxseSBjaGFuZ2luZyBhIGNvbHVtbidzICdzcGFuJyBwcm9wZXJseSBy
ZWNvbXB1dGUgdGhlIGNlbGwncyB3aWR0aHMuPC9wPgorICAgICAgICA8cD5UaGUgdGFibGUgYmVs
b3cgc2hyaW5rIHRvIDIwMHB4IGFmdGVyIGNoYW5naW5nIHRoZSBjb2x1bW4ncyBzcGFuLjwvcD4K
KyAgICAgICAgPHRhYmxlIGlkPSJ0YWJsZSI+CisgICAgICAgICAgICA8Y29sZ3JvdXA+CisgICAg
ICAgICAgICAgICAgPGNvbCBzcGFuPSIyIiBpZD0iY29sdW1uIiBzdHlsZT0id2lkdGg6IDEwMHB4
Ij48L2NvbD4KKyAgICAgICAgICAgICAgICA8Y29sIHN0eWxlPSJ3aWR0aDogMTAwcHg7Ij48L2Nv
bD4KKyAgICAgICAgICAgIDwvY29sZ3JvdXA+CisgICAgICAgICAgICA8dHI+CisgICAgICAgICAg
ICAgICAgPHRkIGlkPSJjZWxsIj48L3RkPgorICAgICAgICAgICAgICAgIDx0ZD48L3RkPgorICAg
ICAgICAgICAgICAgIDx0ZD48L3RkPgorICAgICAgICAgICA8L3RyPgorICAgICAgICA8L3RhYmxl
PgorICAgICAgICA8cCBpZD0iY29uc29sZSI+PC9wPgorICAgIDwvYm9keT4KKzwvaHRtbD4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169995</attachid>
            <date>2012-10-22 15:02:26 -0700</date>
            <delta_ts>2012-10-25 09:53:06 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-99861-20121022150104.patch</filename>
            <type>text/plain</type>
            <size>21434</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzJmZWIyYzkwYWU3ZjJl
MzZhN2E0MGE3ZmE5ODI5ZjVjMzBkYTc1ZC4uNGRmOGJhNjI0YmE4N2U2ZGNhZThkYmUxMTU3Nzg2
NWE5Y2Q1OTYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTEwLTIyICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbmRlclRh
YmxlQ29sOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyBhbmQgUmVuZGVyVGFibGVDb2w6
OmxheW91dCBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTg2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE9qYW4g
VmFmYWkuCisKKyAgICAgICAgUmVuZGVyVGFibGVDb2wncyBjb21wdXRlUHJlZmVycmVkTG9naWNh
bFdpZHRocyBhbmQgbGF5b3V0J3Mgb25seSBwdXJwb3NlIHdlcmUgdG8gY2xlYXIgdGhlIHByZWZl
cnJlZCBsb2dpY2FsCisgICAgICAgIHdpZHRocyBkaXJ0eSAvIGxheW91dCBmbGFnIHNvIHRoYXQg
d2Ugd291bGQgcHJvcGVybHkgcHJvcGFnYXRlIHRoZSBpbmZvcm1hdGlvbiB0byBvdXIgY29udGFp
bmluZyB0YWJsZS4gVGhpcworICAgICAgICBsZWQgdG8gY2x1bmt5IGNvZGUgd2hlcmUgdGhlIHRh
YmxlIGxheW91dCBjb2RlIGhhZCB0byBmb3JjZWZ1bGx5IGNhbGwgUmVuZGVyVGFibGVDb2w6OmNv
bXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzCisgICAgICAgIG9yIGVsc2Ugd2Ugd291bGQgaWdu
b3JlIHRoZSBuZXh0IGxheW91dCBoaW50IG9uIHRoZSA8Y29sPiBvciA8Y29sZ3JvdXA+LgorCisg
ICAgICAgIFRlc3Q6IGZhc3QvdGFibGUvY29sLXNwYW4tY2hhbmdlLXJlbGF5b3V0Lmh0bWwKKwor
ICAgICAgICAqIHJlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0b1RhYmxlTGF5b3V0OjpyZWNhbGNDb2x1bW4pOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6bGF5b3V0KToK
KyAgICAgICAgU2ltcGxpZmllZCB0aGUgY29kZSBub3cgdGhhdCB3ZSBvbmx5IG5lZWQgdG8gaXRl
cmF0ZSBvdmVyIHRoZSBzZWN0aW9ucy4KKworICAgICAgICAqIHJlbmRlcmluZy9GaXhlZFRhYmxl
TGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpeGVkVGFibGVMYXlvdXQ6OmNhbGNXaWR0
aEFycmF5KToKKyAgICAgICAgUmVtb3ZlZCBjYWxsIHRvIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2Fs
V2lkdGhzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ29sOjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUYWJsZUNvbDo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICBGb3J3
YXJkIGEgbGF5b3V0IGhpbnQgdG8gdGhlIHRhYmxlIHNvIHRoYXQgd2UgcHJvcGVybHkgcmVjb21w
dXRlIHRoZSBjZWxsJ3MgbG9naWNhbCB3aXRocy4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGFibGVDb2w6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlQ29sOjpsYXlvdXQpOgorICAgICAgICBDaGFuZ2Ugb3VyIGltcGxlbWVu
dGF0aW9ucyBvZiB0aG9zZSAyIG1ldGhvZHMgdG8gYmUgbm8tb3BzLCB3aGlsZSBlbmZvcmNpbmcg
dGhhdCB0aGV5IGFyZQorICAgICAgICBuZXZlciBjYWxsZWQuCisKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlQ29sOjpwcm9wYWdhdGVMYXlvdXRDdWVUb1RhYmxlKToKKyAgICAgICAgTmV3
IGhlbHBlciBmdW5jdGlvbiB0aGF0IGZvcndhcmQgYW55IGxheW91dCBjdWUgdG8gdGhlIGNvbnRh
aW5pbmcgdGFibGUsIHRoaXMgd29ya3MgYXJvdW5kCisgICAgICAgIHVzIG5vdCBjbGVhcmluZyB0
aGUgZmxhZ3Mgd2hpY2ggY29uZnVzZXMgUmVuZGVyT2JqZWN0IG1hcmtDb250YWluaW5nQmxvY2tz
Rm9yTGF5b3V0IGFuZAorICAgICAgICBpbnZhbGlkYXRlQ29udGFpbmVyUHJlZmVycmVkTG9naWNh
bFdpZHRocy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oOgorICAgICAg
ICBNYWRlIHRoZSBmdW5jdGlvbiB0aGF0IHdlIGFyZSBub3QgZXhwZWN0ZWQgdG8gYmUgY2FsbGVk
IHByaXZhdGUuCisKIDIwMTItMTAtMjIgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBXZWJLaXQgZG9lcyBub3Qgc3VwcG9ydCAnZmxleC13cmFwOiBub3dyYXAnCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3BwCmluZGV4IDA4ZWNm
ZjkwZTBkMmUxOWMwMTA3NTg1NjI2ZjE2YTYxZTg4MjU5MmMuLmZiNDM2Y2E1NTU5MDU1NGJhOGFm
YWNlMjRkMDFmYjAzMGIwZTMwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9BdXRvVGFibGVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRv
VGFibGVMYXlvdXQuY3BwCkBAIC00OSw4MSArNDksNzcgQEAgdm9pZCBBdXRvVGFibGVMYXlvdXQ6
OnJlY2FsY0NvbHVtbih1bnNpZ25lZCBlZmZDb2wpCiAgICAgUmVuZGVyVGFibGVDZWxsKiBmaXhl
ZENvbnRyaWJ1dG9yID0gMDsKICAgICBSZW5kZXJUYWJsZUNlbGwqIG1heENvbnRyaWJ1dG9yID0g
MDsKIAotICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IG1fdGFibGUtPmNoaWxkcmVuKCkt
PmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKLSAg
ICAgICAgaWYgKGNoaWxkLT5pc1JlbmRlclRhYmxlQ29sKCkpCi0gICAgICAgICAgICB0b1JlbmRl
clRhYmxlQ29sKGNoaWxkKS0+Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKTsKLSAgICAg
ICAgZWxzZSBpZiAoY2hpbGQtPmlzVGFibGVTZWN0aW9uKCkpIHsKLSAgICAgICAgICAgIFJlbmRl
clRhYmxlU2VjdGlvbiogc2VjdGlvbiA9IHRvUmVuZGVyVGFibGVTZWN0aW9uKGNoaWxkKTsKLSAg
ICAgICAgICAgIHVuc2lnbmVkIG51bVJvd3MgPSBzZWN0aW9uLT5udW1Sb3dzKCk7Ci0gICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUm93czsgaSsrKSB7Ci0gICAgICAgICAg
ICAgICAgUmVuZGVyVGFibGVTZWN0aW9uOjpDZWxsU3RydWN0IGN1cnJlbnQgPSBzZWN0aW9uLT5j
ZWxsQXQoaSwgZWZmQ29sKTsKLSAgICAgICAgICAgICAgICBSZW5kZXJUYWJsZUNlbGwqIGNlbGwg
PSBjdXJyZW50LnByaW1hcnlDZWxsKCk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgaWYgKGN1cnJlbnQuaW5Db2xTcGFuIHx8ICFjZWxsKQotICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICAgICAgICAgIGJvb2wgY2VsbEhhc0NvbnRlbnQgPSBjZWxsLT5j
aGlsZHJlbigpLT5maXJzdENoaWxkKCkgfHwgY2VsbC0+c3R5bGUoKS0+aGFzQm9yZGVyKCkgfHwg
Y2VsbC0+c3R5bGUoKS0+aGFzUGFkZGluZygpOwotICAgICAgICAgICAgICAgIGlmIChjZWxsSGFz
Q29udGVudCkKLSAgICAgICAgICAgICAgICAgICAgY29sdW1uTGF5b3V0LmVtcHR5Q2VsbHNPbmx5
ID0gZmFsc2U7Ci0KLSAgICAgICAgICAgICAgICAvLyBBIGNlbGwgb3JpZ2luYXRlcyBpbiB0aGlz
IGNvbHVtbi4gRW5zdXJlIHdlIGhhdmUKLSAgICAgICAgICAgICAgICAvLyBhIG1pbi9tYXggd2lk
dGggb2YgYXQgbGVhc3QgMXB4IGZvciB0aGlzIGNvbHVtbiBub3cuCi0gICAgICAgICAgICAgICAg
Y29sdW1uTGF5b3V0Lm1pbkxvZ2ljYWxXaWR0aCA9IG1heDxpbnQ+KGNvbHVtbkxheW91dC5taW5M
b2dpY2FsV2lkdGgsIGNlbGxIYXNDb250ZW50ID8gMSA6IDApOwotICAgICAgICAgICAgICAgIGNv
bHVtbkxheW91dC5tYXhMb2dpY2FsV2lkdGggPSBtYXg8aW50Pihjb2x1bW5MYXlvdXQubWF4TG9n
aWNhbFdpZHRoLCAxKTsKLQotICAgICAgICAgICAgICAgIGlmIChjZWxsLT5jb2xTcGFuKCkgPT0g
MSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbC0+cHJlZmVycmVkTG9naWNhbFdpZHRo
c0RpcnR5KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBjZWxsLT5jb21wdXRlUHJlZmVycmVk
TG9naWNhbFdpZHRocygpOwotICAgICAgICAgICAgICAgICAgICBjb2x1bW5MYXlvdXQubWluTG9n
aWNhbFdpZHRoID0gbWF4PGludD4oY2VsbC0+bWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCksIGNv
bHVtbkxheW91dC5taW5Mb2dpY2FsV2lkdGgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoY2Vs
bC0+bWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCkgPiBjb2x1bW5MYXlvdXQubWF4TG9naWNhbFdp
ZHRoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5MYXlvdXQubWF4TG9naWNhbFdp
ZHRoID0gY2VsbC0+bWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBtYXhDb250cmlidXRvciA9IGNlbGw7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAg
ICBmb3IgKFJlbmRlclRhYmxlU2VjdGlvbiogc2VjdGlvbiA9IG1fdGFibGUtPnRvcE5vbkVtcHR5
U2VjdGlvbigpOyBzZWN0aW9uOyBzZWN0aW9uID0gbV90YWJsZS0+c2VjdGlvbkJlbG93KHNlY3Rp
b24sIFNraXBFbXB0eVNlY3Rpb25zKSkgeworICAgICAgICB1bnNpZ25lZCBudW1Sb3dzID0gc2Vj
dGlvbi0+bnVtUm93cygpOworICAgICAgICBBU1NFUlQobnVtUm93cyk7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBudW1Sb3dzOyBpKyspIHsKKyAgICAgICAgICAgIFJlbmRlclRh
YmxlU2VjdGlvbjo6Q2VsbFN0cnVjdCBjdXJyZW50ID0gc2VjdGlvbi0+Y2VsbEF0KGksIGVmZkNv
bCk7CisgICAgICAgICAgICBSZW5kZXJUYWJsZUNlbGwqIGNlbGwgPSBjdXJyZW50LnByaW1hcnlD
ZWxsKCk7CisKKyAgICAgICAgICAgIGlmIChjdXJyZW50LmluQ29sU3BhbiB8fCAhY2VsbCkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgICAgICAgICAvLyBBbGwgYnJv
d3NlcnMgaW1wbGVtZW50IGEgc2l6ZSBsaW1pdCBvbiB0aGUgY2VsbCdzIG1heCB3aWR0aC4gCi0g
ICAgICAgICAgICAgICAgICAgIC8vIE91ciBsaW1pdCBpcyBiYXNlZCBvbiBLSFRNTCdzIHJlcHJl
c2VudGF0aW9uIHRoYXQgdXNlZCAxNiBiaXRzIHdpZHRocy4KLSAgICAgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IE90aGVyIGJyb3dzZXJzIGhhdmUgYSBsb3dlciBsaW1pdCBmb3IgdGhlIGNlbGwn
cyBtYXggd2lkdGguIAotICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgY0NlbGxNYXhXaWR0
aCA9IDMyNzYwOwotICAgICAgICAgICAgICAgICAgICBMZW5ndGggY2VsbExvZ2ljYWxXaWR0aCA9
IGNlbGwtPnN0eWxlT3JDb2xMb2dpY2FsV2lkdGgoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGNlbGxMb2dpY2FsV2lkdGgudmFsdWUoKSA+IGNDZWxsTWF4V2lkdGgpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjZWxsTG9naWNhbFdpZHRoLnNldFZhbHVlKGNDZWxsTWF4V2lkdGgpOwotICAg
ICAgICAgICAgICAgICAgICBpZiAoY2VsbExvZ2ljYWxXaWR0aC5pc05lZ2F0aXZlKCkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBjZWxsTG9naWNhbFdpZHRoLnNldFZhbHVlKDApOwotICAgICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKGNlbGxMb2dpY2FsV2lkdGgudHlwZSgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgRml4ZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZ25v
cmUgd2lkdGg9MAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxMb2dpY2FsV2lkdGgu
aXNQb3NpdGl2ZSgpICYmICFjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLmlzUGVyY2VudCgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGggPSBj
ZWxsLT5hZGp1c3RCb3JkZXJCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoY2VsbExvZ2ljYWxX
aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sdW1uTGF5
b3V0LmxvZ2ljYWxXaWR0aC5pc0ZpeGVkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gTmF2L0lFIHdlaXJkbmVzcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoKGxvZ2ljYWxXaWR0aCA+IGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGgudmFsdWUoKSkg
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKGNvbHVtbkxheW91dC5s
b2dpY2FsV2lkdGgudmFsdWUoKSA9PSBsb2dpY2FsV2lkdGgpICYmIChtYXhDb250cmlidXRvciA9
PSBjZWxsKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkxh
eW91dC5sb2dpY2FsV2lkdGguc2V0VmFsdWUoRml4ZWQsIGxvZ2ljYWxXaWR0aCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhlZENvbnRyaWJ1dG9yID0gY2VsbDsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBib29sIGNlbGxIYXNDb250ZW50ID0gY2VsbC0+Y2hp
bGRyZW4oKS0+Zmlyc3RDaGlsZCgpIHx8IGNlbGwtPnN0eWxlKCktPmhhc0JvcmRlcigpIHx8IGNl
bGwtPnN0eWxlKCktPmhhc1BhZGRpbmcoKTsKKyAgICAgICAgICAgIGlmIChjZWxsSGFzQ29udGVu
dCkKKyAgICAgICAgICAgICAgICBjb2x1bW5MYXlvdXQuZW1wdHlDZWxsc09ubHkgPSBmYWxzZTsK
KworICAgICAgICAgICAgLy8gQSBjZWxsIG9yaWdpbmF0ZXMgaW4gdGhpcyBjb2x1bW4uIEVuc3Vy
ZSB3ZSBoYXZlCisgICAgICAgICAgICAvLyBhIG1pbi9tYXggd2lkdGggb2YgYXQgbGVhc3QgMXB4
IGZvciB0aGlzIGNvbHVtbiBub3cuCisgICAgICAgICAgICBjb2x1bW5MYXlvdXQubWluTG9naWNh
bFdpZHRoID0gbWF4PGludD4oY29sdW1uTGF5b3V0Lm1pbkxvZ2ljYWxXaWR0aCwgY2VsbEhhc0Nv
bnRlbnQgPyAxIDogMCk7CisgICAgICAgICAgICBjb2x1bW5MYXlvdXQubWF4TG9naWNhbFdpZHRo
ID0gbWF4PGludD4oY29sdW1uTGF5b3V0Lm1heExvZ2ljYWxXaWR0aCwgMSk7CisKKyAgICAgICAg
ICAgIGlmIChjZWxsLT5jb2xTcGFuKCkgPT0gMSkgeworICAgICAgICAgICAgICAgIGlmIChjZWxs
LT5wcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkoKSkKKyAgICAgICAgICAgICAgICAgICAgY2Vs
bC0+Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKTsKKyAgICAgICAgICAgICAgICBjb2x1
bW5MYXlvdXQubWluTG9naWNhbFdpZHRoID0gbWF4PGludD4oY2VsbC0+bWluUHJlZmVycmVkTG9n
aWNhbFdpZHRoKCksIGNvbHVtbkxheW91dC5taW5Mb2dpY2FsV2lkdGgpOworICAgICAgICAgICAg
ICAgIGlmIChjZWxsLT5tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSA+IGNvbHVtbkxheW91dC5t
YXhMb2dpY2FsV2lkdGgpIHsKKyAgICAgICAgICAgICAgICAgICAgY29sdW1uTGF5b3V0Lm1heExv
Z2ljYWxXaWR0aCA9IGNlbGwtPm1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpOworICAgICAgICAg
ICAgICAgICAgICBtYXhDb250cmlidXRvciA9IGNlbGw7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgLy8gQWxsIGJyb3dzZXJzIGltcGxlbWVudCBhIHNpemUgbGltaXQgb24g
dGhlIGNlbGwncyBtYXggd2lkdGguCisgICAgICAgICAgICAgICAgLy8gT3VyIGxpbWl0IGlzIGJh
c2VkIG9uIEtIVE1MJ3MgcmVwcmVzZW50YXRpb24gdGhhdCB1c2VkIDE2IGJpdHMgd2lkdGhzLgor
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBPdGhlciBicm93c2VycyBoYXZlIGEgbG93ZXIgbGlt
aXQgZm9yIHRoZSBjZWxsJ3MgbWF4IHdpZHRoLgorICAgICAgICAgICAgICAgIGNvbnN0IGludCBj
Q2VsbE1heFdpZHRoID0gMzI3NjA7CisgICAgICAgICAgICAgICAgTGVuZ3RoIGNlbGxMb2dpY2Fs
V2lkdGggPSBjZWxsLT5zdHlsZU9yQ29sTG9naWNhbFdpZHRoKCk7CisgICAgICAgICAgICAgICAg
aWYgKGNlbGxMb2dpY2FsV2lkdGgudmFsdWUoKSA+IGNDZWxsTWF4V2lkdGgpCisgICAgICAgICAg
ICAgICAgICAgIGNlbGxMb2dpY2FsV2lkdGguc2V0VmFsdWUoY0NlbGxNYXhXaWR0aCk7CisgICAg
ICAgICAgICAgICAgaWYgKGNlbGxMb2dpY2FsV2lkdGguaXNOZWdhdGl2ZSgpKQorICAgICAgICAg
ICAgICAgICAgICBjZWxsTG9naWNhbFdpZHRoLnNldFZhbHVlKDApOworICAgICAgICAgICAgICAg
IHN3aXRjaCAoY2VsbExvZ2ljYWxXaWR0aC50eXBlKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNl
IEZpeGVkOgorICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmUgd2lkdGg9MAorICAgICAgICAg
ICAgICAgICAgICBpZiAoY2VsbExvZ2ljYWxXaWR0aC5pc1Bvc2l0aXZlKCkgJiYgIWNvbHVtbkxh
eW91dC5sb2dpY2FsV2lkdGguaXNQZXJjZW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IExheW91dFVuaXQgbG9naWNhbFdpZHRoID0gY2VsbC0+YWRqdXN0Qm9yZGVyQm94TG9naWNhbFdp
ZHRoRm9yQm94U2l6aW5nKGNlbGxMb2dpY2FsV2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC5pc0ZpeGVkKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOYXYvSUUgd2VpcmRuZXNzCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKChsb2dpY2FsV2lkdGggPiBjb2x1bW5MYXlvdXQubG9naWNh
bFdpZHRoLnZhbHVlKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoY29s
dW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC52YWx1ZSgpID09IGxvZ2ljYWxXaWR0aCkgJiYgKG1heENv
bnRyaWJ1dG9yID09IGNlbGwpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLnNldFZhbHVlKEZpeGVkLCBsb2dpY2FsV2lkdGgpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhlZENvbnRyaWJ1dG9yID0gY2VsbDsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkxheW91dC5sb2dpY2Fs
V2lkdGguc2V0VmFsdWUoRml4ZWQsIGxvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZml4ZWRDb250cmlidXRvciA9IGNlbGw7CiAgICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSBQZXJjZW50OgotICAgICAgICAgICAgICAgICAgICAgICAgbV9oYXNQZXJjZW50ID0gdHJ1
ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjZWxsTG9naWNhbFdpZHRoLmlzUG9zaXRp
dmUoKSAmJiAoIWNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGguaXNQZXJjZW50KCkgfHwgY2VsbExv
Z2ljYWxXaWR0aC52YWx1ZSgpID4gY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC52YWx1ZSgpKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoID0g
Y2VsbExvZ2ljYWxXaWR0aDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICBjYXNlIFJlbGF0aXZlOgotICAgICAgICAgICAgICAgICAgICAgICAgLy8g
RklYTUU6IE5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGNhc2UgYW5kIHdoZXRoZXIgaXQgbWFrZXMg
c2Vuc2UgdG8gY29tcGFyZSB2YWx1ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNo
IGFyZSBub3QgbmVjZXNzYXJpbHkgb2YgdGhlIHNhbWUgdHlwZS4KLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChjZWxsTG9naWNhbFdpZHRoLnZhbHVlKCkgPiBjb2x1bW5MYXlvdXQubG9naWNh
bFdpZHRoLnZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uTGF5b3V0
LmxvZ2ljYWxXaWR0aCA9IGNlbGxMb2dpY2FsV2lkdGg7Ci0gICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWVmZkNvbCB8fCBzZWN0aW9uLT5wcmlt
YXJ5Q2VsbEF0KGksIGVmZkNvbCAtIDEpICE9IGNlbGwpIHsKLSAgICAgICAgICAgICAgICAgICAg
Ly8gVGhpcyBzcGFubmluZyBjZWxsIG9yaWdpbmF0ZXMgaW4gdGhpcyBjb2x1bW4uIEluc2VydCB0
aGUgY2VsbCBpbnRvIHNwYW5uaW5nIGNlbGxzIGxpc3QuCi0gICAgICAgICAgICAgICAgICAgIGlu
c2VydFNwYW5DZWxsKGNlbGwpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIFBlcmNlbnQ6CisgICAgICAgICAgICAgICAgICAgIG1faGFzUGVyY2VudCA9
IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChjZWxsTG9naWNhbFdpZHRoLmlzUG9zaXRp
dmUoKSAmJiAoIWNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGguaXNQZXJjZW50KCkgfHwgY2VsbExv
Z2ljYWxXaWR0aC52YWx1ZSgpID4gY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC52YWx1ZSgpKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGggPSBjZWxs
TG9naWNhbFdpZHRoOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIFJlbGF0aXZlOgorICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogTmVlZCB0byB1
bmRlcnN0YW5kIHRoaXMgY2FzZSBhbmQgd2hldGhlciBpdCBtYWtlcyBzZW5zZSB0byBjb21wYXJl
IHZhbHVlcworICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgbm90IG5lY2Vzc2FyaWx5
IG9mIHRoZSBzYW1lIHR5cGUuCisgICAgICAgICAgICAgICAgICAgIGlmIChjZWxsTG9naWNhbFdp
ZHRoLnZhbHVlKCkgPiBjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLnZhbHVlKCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICBjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoID0gY2VsbExvZ2ljYWxX
aWR0aDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKCFlZmZDb2wgfHwg
c2VjdGlvbi0+cHJpbWFyeUNlbGxBdChpLCBlZmZDb2wgLSAxKSAhPSBjZWxsKSB7CisgICAgICAg
ICAgICAgICAgLy8gVGhpcyBzcGFubmluZyBjZWxsIG9yaWdpbmF0ZXMgaW4gdGhpcyBjb2x1bW4u
IEluc2VydCB0aGUgY2VsbCBpbnRvIHNwYW5uaW5nIGNlbGxzIGxpc3QuCisgICAgICAgICAgICAg
ICAgaW5zZXJ0U3BhbkNlbGwoY2VsbCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5jcHAKaW5kZXgg
MmEwOGFkNmI1Y2QzOWM4Nzk1Y2FmN2QxMTE5Yzk0NDdjN2Q3OTM0MS4uZWVkNmUwYjU0OTkxMjgz
Mzg2NDg3NzVjNWZlNGJhNmU1M2RlODk0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GaXhlZFRhYmxlTGF5b3V0LmNwcApAQCAtODgsOCArODgsNiBAQCBpbnQgRml4ZWRUYWJsZUxh
eW91dDo6Y2FsY1dpZHRoQXJyYXkoaW50KQogCiAgICAgdW5zaWduZWQgY3VycmVudEVmZmVjdGl2
ZUNvbHVtbiA9IDA7CiAgICAgZm9yIChSZW5kZXJUYWJsZUNvbCogY29sID0gbV90YWJsZS0+Zmly
c3RDb2x1bW4oKTsgY29sOyBjb2wgPSBjb2wtPm5leHRDb2x1bW4oKSkgewotICAgICAgICBjb2wt
PmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCk7Ci0KICAgICAgICAgLy8gV2lkdGggc3Bl
Y2lmaWVkIGJ5IGNvbHVtbi1ncm91cHMgdGhhdCBoYXZlIGNvbHVtbiBjaGlsZCBkb2VzIG5vdCBh
ZmZlY3QgY29sdW1uIHdpZHRoIGluIGZpeGVkIGxheW91dCB0YWJsZXMKICAgICAgICAgaWYgKGNv
bC0+aXNUYWJsZUNvbHVtbkdyb3VwV2l0aENvbHVtbkNoaWxkcmVuKCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCmluZGV4IDg4
MjBlNjE0Y2YyNGM0NmRjN2YyYjYwNTFiN2E3NmY2Nzk2M2U4ODkuLmQ1YzU4YmM5YzcwM2NlZGQy
MTJkZGFiMDFkZmZhNzM1ZjgxZDE3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlLmNwcApAQCAtMzc4LDIwICszNzgsMTUgQEAgdm9pZCBSZW5kZXJUYWJsZTo6bGF5b3V0
KCkKIAogICAgIGJvb2wgY29sbGFwc2luZyA9IGNvbGxhcHNlQm9yZGVycygpOwogCi0gICAgZm9y
IChSZW5kZXJPYmplY3QqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAoY2hpbGQtPmlzVGFibGVTZWN0aW9uKCkp
IHsKLSAgICAgICAgICAgIFJlbmRlclRhYmxlU2VjdGlvbiogc2VjdGlvbiA9IHRvUmVuZGVyVGFi
bGVTZWN0aW9uKGNoaWxkKTsKLSAgICAgICAgICAgIGlmIChtX2NvbHVtbkxvZ2ljYWxXaWR0aENo
YW5nZWQpCi0gICAgICAgICAgICAgICAgc2VjdGlvbi0+c2V0Q2hpbGROZWVkc0xheW91dCh0cnVl
LCBNYXJrT25seVRoaXMpOwotICAgICAgICAgICAgc2VjdGlvbi0+bGF5b3V0SWZOZWVkZWQoKTsK
LSAgICAgICAgICAgIHRvdGFsU2VjdGlvbkxvZ2ljYWxIZWlnaHQgKz0gc2VjdGlvbi0+Y2FsY1Jv
d0xvZ2ljYWxIZWlnaHQoKTsKLSAgICAgICAgICAgIGlmIChjb2xsYXBzaW5nKQotICAgICAgICAg
ICAgICAgIHNlY3Rpb24tPnJlY2FsY091dGVyQm9yZGVyKCk7Ci0gICAgICAgICAgICBBU1NFUlQo
IXNlY3Rpb24tPm5lZWRzTGF5b3V0KCkpOwotICAgICAgICB9IGVsc2UgaWYgKGNoaWxkLT5pc1Jl
bmRlclRhYmxlQ29sKCkpIHsKLSAgICAgICAgICAgIGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgpOwot
ICAgICAgICAgICAgQVNTRVJUKCFjaGlsZC0+bmVlZHNMYXlvdXQoKSk7Ci0gICAgICAgIH0KKyAg
ICAvLyBXZSBpZ25vcmUgdGFibGUgY29sIC8gY29sZ3JvdXAgaW4gdGhpcyBpdGVyYXRpb24gYXMg
dGhleSBhcmUgb25seSB1c2VkIHRvIHNpemUgdGhlIGNlbGwncyB3aWR0aHMgZHVyaW5nIGF1dG8g
LyBmaXhlZCB0YWJsZSBsYXlvdXQuCisgICAgZm9yIChSZW5kZXJUYWJsZVNlY3Rpb24qIHNlY3Rp
b24gPSB0b3BTZWN0aW9uKCk7IHNlY3Rpb247IHNlY3Rpb24gPSBzZWN0aW9uQmVsb3coc2VjdGlv
bikpIHsKKyAgICAgICAgaWYgKG1fY29sdW1uTG9naWNhbFdpZHRoQ2hhbmdlZCkKKyAgICAgICAg
ICAgIHNlY3Rpb24tPnNldENoaWxkTmVlZHNMYXlvdXQodHJ1ZSwgTWFya09ubHlUaGlzKTsKKyAg
ICAgICAgc2VjdGlvbi0+bGF5b3V0SWZOZWVkZWQoKTsKKyAgICAgICAgdG90YWxTZWN0aW9uTG9n
aWNhbEhlaWdodCArPSBzZWN0aW9uLT5jYWxjUm93TG9naWNhbEhlaWdodCgpOworICAgICAgICBp
ZiAoY29sbGFwc2luZykKKyAgICAgICAgICAgIHNlY3Rpb24tPnJlY2FsY091dGVyQm9yZGVyKCk7
CisgICAgICAgIEFTU0VSVCghc2VjdGlvbi0+bmVlZHNMYXlvdXQoKSk7CiAgICAgfQogCiAgICAg
Ly8gSWYgYW55IHRhYmxlIHNlY3Rpb24gbW92ZWQgdmVydGljYWxseSwgd2Ugd2lsbCBqdXN0IHJl
cGFpbnQgZXZlcnl0aGluZyBmcm9tIHRoYXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVDb2wuY3BwCmluZGV4IDdhYTgzNDFhN2UyMmRkNjA5NGEyYmRjMzIzMTdlYTNiNGYy
N2VhM2EuLjZkYjU0Y2NhMWZiNzE1OWU5NTI4MTVkYjBiYTgxOTUyZTUyMWQ3YjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcApAQCAtNDksNiArNDksOSBA
QCB2b2lkIFJlbmRlclRhYmxlQ29sOjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlm
ZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZAogewogICAgIFJlbmRlckJveDo6c3R5bGVEaWRDaGFu
Z2UoZGlmZiwgb2xkU3R5bGUpOwogCisgICAgaWYgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlTGF5
b3V0KQorICAgICAgICBwcm9wYWdhdGVMYXlvdXRDdWVUb1RhYmxlKCk7CisKICAgICAvLyBJZiBi
b3JkZXIgd2FzIGNoYW5nZWQsIG5vdGlmeSB0YWJsZS4KICAgICBpZiAocGFyZW50KCkpIHsKICAg
ICAgICAgUmVuZGVyVGFibGUqIHRhYmxlID0gdGhpcy0+dGFibGUoKTsKQEAgLTY2LDggKzY5LDkg
QEAgdm9pZCBSZW5kZXJUYWJsZUNvbDo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgICAgICBtX3Nw
YW4gPSB0Yy0+c3BhbigpOwogICAgIH0gZWxzZQogICAgICAgICBtX3NwYW4gPSAhKHN0eWxlKCkg
JiYgc3R5bGUoKS0+ZGlzcGxheSgpID09IFRBQkxFX0NPTFVNTl9HUk9VUCk7Ci0gICAgaWYgKG1f
c3BhbiAhPSBvbGRTcGFuICYmIHN0eWxlKCkgJiYgcGFyZW50KCkpCi0gICAgICAgIHNldE5lZWRz
TGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOworCisgICAgaWYgKG1fc3BhbiAhPSBvbGRTcGFu
ICYmIHN0eWxlKCkpCisgICAgICAgIHByb3BhZ2F0ZUxheW91dEN1ZVRvVGFibGUoKTsKIH0KIAog
dm9pZCBSZW5kZXJUYWJsZUNvbDo6d2lsbEJlUmVtb3ZlZEZyb21UcmVlKCkKQEAgLTExNCwxMCAr
MTE4LDI1IEBAIHZvaWQgUmVuZGVyVGFibGVDb2w6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQ
dHIsIGNvbnN0IEludFJlY3QqKQogCiB2b2lkIFJlbmRlclRhYmxlQ29sOjpjb21wdXRlUHJlZmVy
cmVkTG9naWNhbFdpZHRocygpCiB7Ci0gICAgc2V0UHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5
KGZhbHNlKTsKKyAgICAvLyA8Y29sPiBhbmQgPGNvbGdyb3VwPiBkb24ndCBoYXZlIHByZWZlcnJl
ZCBsb2dpY2FsIHdpZHRocyBhcyB0aGV5IGhhdmUKKyAgICAvLyBubyBjb250ZW50IHNvIGNvbXB1
dGluZyBvdXIgcHJlZmVycmVkIGxvZ2ljYWwgd2lkdGhzIGlzIHdhc3RlZnVsLgorICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFJlbmRlclRhYmxlQ29sOjpsYXlvdXQoKQorewor
ICAgIC8vIFRoZXJlIGlzIG5vIG5lZWQgdG8gbGF5b3V0IHRhYmxlIDxjb2w+IG9yIDxjb2xncm91
cD4gYXMgdGhleSBoYXZlIG5vIGNvbnRlbnQuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CiAKLSAgICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBj
aGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQotICAgICAgICBjaGlsZC0+c2V0UHJlZmVycmVk
TG9naWNhbFdpZHRoc0RpcnR5KGZhbHNlKTsKK3ZvaWQgUmVuZGVyVGFibGVDb2w6OnByb3BhZ2F0
ZUxheW91dEN1ZVRvVGFibGUoKSBjb25zdAoreworICAgIC8vIEZvcndhcmQgYW55IGxheW91dCBo
aW50IHRvIHRoZSB0YWJsZTogdGhpcyBpcyByZXF1aXJlZCBhcyB0aGUgdGFibGUgaXMKKyAgICAv
LyB0aGUgb25lIHRvIGxheW91dCAvIGNvbXB1dGUgcHJlZmVycmVkIGxvZ2ljYWwgd2lkdGhzIG9u
IGFsbCB0aGUgY2VsbHMuCisgICAgaWYgKFJlbmRlclRhYmxlKiB0YWJsZSA9IHRoaXMtPnRhYmxl
KCkpIHsKKyAgICAgICAgdGFibGUtPnNldENoaWxkTmVlZHNMYXlvdXQodHJ1ZSk7CisgICAgICAg
IHRhYmxlLT5zZXRQcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkodHJ1ZSk7CisgICAgfQogfQog
CiBSZW5kZXJUYWJsZSogUmVuZGVyVGFibGVDb2w6OnRhYmxlKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgKaW5kZXggMWE5ZmFjNmVjMjNkNmYwYzVjNzEw
NWRiZmMxMTQzMWU4ZGE4MjRhNS4uMWU4ZTgwMjU3YTVhZDRkNTI3ZTI4Y2E5ZDNlZGMyMjBiODQ2
NTc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29s
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgKQEAgLTQw
LDggKzQwLDYgQEAgcHVibGljOgogICAgIGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hp
bGRyZW4oKSBjb25zdCB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQogICAgIFJlbmRlck9iamVjdENo
aWxkTGlzdCogY2hpbGRyZW4oKSB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQogCi0gICAgdmlydHVh
bCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCk7Ci0KICAgICB1bnNpZ25lZCBz
cGFuKCkgY29uc3QgeyByZXR1cm4gbV9zcGFuOyB9CiAgICAgdm9pZCBzZXRTcGFuKHVuc2lnbmVk
IHNwYW4pIHsgbV9zcGFuID0gc3BhbjsgfQogCkBAIC03Nyw2ICs3NSw5IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIHZpcnR1YWxDaGlsZHJlbigpIHsgcmV0
dXJuIGNoaWxkcmVuKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlz
dCogdmlydHVhbENoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gY2hpbGRyZW4oKTsgfQogCisgICAg
dmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGxheW91dCgpIE9WRVJSSURFOworCiAgICAgdmlydHVhbCBjb25zdCBj
aGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclRhYmxlQ29sIjsgfQogICAg
IHZpcnR1YWwgYm9vbCBpc1JlbmRlclRhYmxlQ29sKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOwpAQCAtOTIsNiAr
OTMsOCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKIAorICAgIHZvaWQgcHJv
cGFnYXRlTGF5b3V0Q3VlVG9UYWJsZSgpIGNvbnN0OworCiAgICAgUmVuZGVyVGFibGUqIHRhYmxl
KCkgY29uc3Q7CiAKICAgICBSZW5kZXJPYmplY3RDaGlsZExpc3QgbV9jaGlsZHJlbjsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBmMTIzMWVkZmUzN2Q2ZmNhZGIyNjAxZmMyN2I1MjkyNDZjNTQxYjgwLi5iY2Q3ODJjM2RmZDAx
NzlmNjY0NjQ1MGJhYjFkNGMzMmMzNzQwNGNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTIt
MTAtMjIgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVuZGVyVGFibGVDb2w6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzIGFuZCBSZW5k
ZXJUYWJsZUNvbDo6bGF5b3V0IHNob3VsZCBuZXZlciBiZSBjYWxsZWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5ODYxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgT2phbiBWYWZhaS4KKworICAgICAgICBBZGRlZCB0aGlzIHRlc3QgYXMgdGhlIGNvZGUg
aW4gUmVuZGVyVGFibGVDb2w6OnVwZGF0ZUZyb21FbGVtZW50IHdhc24ndCBwcm9wZXJseSBjb3Zl
cmVkLgorCisgICAgICAgICogZmFzdC90YWJsZS9jb2wtc3Bhbi1jaGFuZ2UtcmVsYXlvdXQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RhYmxlL2NvbC1zcGFuLWNoYW5nZS1y
ZWxheW91dC5odG1sOiBBZGRlZC4KKwogMjAxMi0xMC0yMiAgUmFwaGFlbCBLdWJvIGRhIENvc3Rh
ICA8cmFwaGFlbC5rdWJvLmRhLmNvc3RhQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBSZWJh
c2VsaW5lIHBpeGVsIGV4cGVjdGF0aW9ucyBhZnRlciByMTMxOTQxIGFuZCByMTMxOTkxLCBwYXJ0
IDcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RhYmxlL2NvbC1zcGFuLWNoYW5nZS1y
ZWxheW91dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3RhYmxlL2NvbC1zcGFuLWNo
YW5nZS1yZWxheW91dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc3ZTEyYjlmOGJjODUwYWI0
ZDI3NzI3NTc2MGUxM2E5ZDY0NDY5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvdGFibGUvY29sLXNwYW4tY2hhbmdlLXJlbGF5b3V0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDggQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCBkeW5hbWljYWxseSBjaGFuZ2luZyBhIGNvbHVt
bidzICdzcGFuJyBwcm9wZXJseSByZWNvbXB1dGUgdGhlIGNlbGwncyB3aWR0aHMuCisKK1RoZSB0
YWJsZSBiZWxvdyBzaHJpbmsgdG8gMjAwcHggYWZ0ZXIgY2hhbmdpbmcgdGhlIGNvbHVtbidzIHNw
YW4uCisKK1RhYmxlIHdpZHRoIHdhcyAzMDBweAorVGFibGUgd2lkdGggaXMgMjAwcHgKK1BBU1NF
RDogVGFibGUgY2hhbmdlZCB3aWR0aAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Rh
YmxlL2NvbC1zcGFuLWNoYW5nZS1yZWxheW91dC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90YWJs
ZS9jb2wtc3Bhbi1jaGFuZ2UtcmVsYXlvdXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzJmOThhNDVhNmNh
NTNiYmVhNzE1NmI4NDRkNjc2OGM1YzhlNmVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC90YWJsZS9jb2wtc3Bhbi1jaGFuZ2UtcmVsYXlvdXQuaHRtbApAQCAtMCwwICsxLDYx
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+
CisgICAgICAgICAgICB0YWJsZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJvcmRl
ci1jb2xsYXBzZTogY29sbGFwc2U7CisgICAgICAgICAgICAgICAgdGFibGUtbGF5b3V0OiBmaXhl
ZDsKKyAgICAgICAgICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICB0ZAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IGdyZWVu
OworICAgICAgICAgICAgICAgIGhlaWdodDogMWVtOworICAgICAgICAgICAgfQorICAgICAgICA8
L3N0eWxlPgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAg
ICAgICBmdW5jdGlvbiBsb2cobXNnKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZh
ciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKKyAgICAgICAg
ICAgICAgICBjb25zb2xlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1zZykp
OworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnYnInKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNoYW5n
ZUNvbFNwYW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBjb2wgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnY29sdW1uJyk7CisgICAgICAgICAgICAgICAgdmFyIG9sZENl
bGxXaWR0aCA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhYmxl
JykpLndpZHRoOworICAgICAgICAgICAgICAgIGNvbC5zZXRBdHRyaWJ1dGUoInNwYW4iLCAiMSIp
OworICAgICAgICAgICAgICAgIHZhciBuZXdDZWxsV2lkdGggPSBnZXRDb21wdXRlZFN0eWxlKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YWJsZScpKS53aWR0aDsKKworICAgICAgICAgICAgICAg
IGxvZygiVGFibGUgd2lkdGggd2FzICIgKyBvbGRDZWxsV2lkdGgpOworICAgICAgICAgICAgICAg
IGxvZygiVGFibGUgd2lkdGggaXMgIiArIG5ld0NlbGxXaWR0aCk7CisgICAgICAgICAgICAgICAg
aWYgKG9sZENlbGxXaWR0aCAhPSBuZXdDZWxsV2lkdGgpCisgICAgICAgICAgICAgICAgICAgIGxv
ZygiUEFTU0VEOiBUYWJsZSBjaGFuZ2VkIHdpZHRoIik7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICBsb2coIkZBSUxFRDogVGFibGUgZGlkIG5vdCBjaGFuZ2Ugd2lk
dGgiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5IG9ubG9hZD0iY2hhbmdlQ29sU3BhbigpOyI+CisgICAgICAgIDxwPlRoaXMgdGVzdCBj
aGVja3MgdGhhdCBkeW5hbWljYWxseSBjaGFuZ2luZyBhIGNvbHVtbidzICdzcGFuJyBwcm9wZXJs
eSByZWNvbXB1dGUgdGhlIGNlbGwncyB3aWR0aHMuPC9wPgorICAgICAgICA8cD5UaGUgdGFibGUg
YmVsb3cgc2hyaW5rIHRvIDIwMHB4IGFmdGVyIGNoYW5naW5nIHRoZSBjb2x1bW4ncyBzcGFuLjwv
cD4KKyAgICAgICAgPHRhYmxlIGlkPSJ0YWJsZSI+CisgICAgICAgICAgICA8Y29sZ3JvdXA+Cisg
ICAgICAgICAgICAgICAgPGNvbCBzcGFuPSIyIiBpZD0iY29sdW1uIiBzdHlsZT0id2lkdGg6IDEw
MHB4Ij48L2NvbD4KKyAgICAgICAgICAgICAgICA8Y29sIHN0eWxlPSJ3aWR0aDogMTAwcHg7Ij48
L2NvbD4KKyAgICAgICAgICAgIDwvY29sZ3JvdXA+CisgICAgICAgICAgICA8dHI+CisgICAgICAg
ICAgICAgICAgPHRkIGlkPSJjZWxsIj48L3RkPgorICAgICAgICAgICAgICAgIDx0ZD48L3RkPgor
ICAgICAgICAgICAgICAgIDx0ZD48L3RkPgorICAgICAgICAgICA8L3RyPgorICAgICAgICA8L3Rh
YmxlPgorICAgICAgICA8cCBpZD0iY29uc29sZSI+PC9wPgorICAgIDwvYm9keT4KKzwvaHRtbD4K
Kwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170678</attachid>
            <date>2012-10-25 09:53:09 -0700</date>
            <delta_ts>2012-10-26 03:28:57 -0700</delta_ts>
            <desc>Updated change: removed ASSERT_NOT_REACHED() from layout() as simplified normal flow layout hit it.</desc>
            <filename>bug-99861-20121025095143.patch</filename>
            <type>text/plain</type>
            <size>21641</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzdlOTI2ODc5YzNhYjVh
ZTdlZjUyYzE2NTZkNTBlOWVkZjgwMzcyMC4uMjcwNzUyYzI1ZGY3MjU5N2EzOTliOTA2ZTYyODBl
OTA4MWRhNDkzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTEwLTI1ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbmRlclRh
YmxlQ29sOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyBhbmQgUmVuZGVyVGFibGVDb2w6
OmxheW91dCBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTg2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlclRhYmxlQ29sJ3MgY29tcHV0ZVByZWZlcnJlZExv
Z2ljYWxXaWR0aHMgYW5kIGxheW91dCdzIG9ubHkgcHVycG9zZSB3ZXJlIHRvIGNsZWFyIHRoZSBw
cmVmZXJyZWQgbG9naWNhbAorICAgICAgICB3aWR0aHMgZGlydHkgLyBsYXlvdXQgZmxhZyBzbyB0
aGF0IHdlIHdvdWxkIHByb3Blcmx5IHByb3BhZ2F0ZSB0aGUgaW5mb3JtYXRpb24gdG8gb3VyIGNv
bnRhaW5pbmcgdGFibGUuIFRoaXMKKyAgICAgICAgbGVkIHRvIGNsdW5reSBjb2RlIHdoZXJlIHRo
ZSB0YWJsZSBsYXlvdXQgY29kZSBoYWQgdG8gZm9yY2VmdWxseSBjYWxsIFJlbmRlclRhYmxlQ29s
Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocworICAgICAgICBvciBlbHNlIHdlIHdvdWxk
IGlnbm9yZSB0aGUgbmV4dCBsYXlvdXQgaGludCBvbiB0aGUgPGNvbD4gb3IgPGNvbGdyb3VwPi4K
KworICAgICAgICBUZXN0OiBmYXN0L3RhYmxlL2NvbC1zcGFuLWNoYW5nZS1yZWxheW91dC5odG1s
CisKKyAgICAgICAgKiByZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF1dG9UYWJsZUxheW91dDo6cmVjYWxjQ29sdW1uKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmxheW91
dCk6CisgICAgICAgIFNpbXBsaWZpZWQgdGhlIGNvZGUgbm93IHRoYXQgd2Ugb25seSBuZWVkIHRv
IGl0ZXJhdGUgb3ZlciB0aGUgc2VjdGlvbnMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvRml4ZWRU
YWJsZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaXhlZFRhYmxlTGF5b3V0OjpjYWxj
V2lkdGhBcnJheSk6CisgICAgICAgIFJlbW92ZWQgY2FsbCB0byBjb21wdXRlUHJlZmVycmVkTG9n
aWNhbFdpZHRocy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNvbDo6c3R5bGVEaWRDaGFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDb2w6OnVwZGF0ZUZyb21FbGVtZW50KToKKyAgICAgICAg
Rm9yd2FyZCBhIGxheW91dCBoaW50IHRvIHRoZSB0YWJsZSBzbyB0aGF0IHdlIHByb3Blcmx5IHJl
Y29tcHV0ZSB0aGUgY2VsbCdzIGxvZ2ljYWwgd2l0aHMuCisKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRhYmxlQ29sOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUYWJsZUNvbDo6bGF5b3V0KToKKyAgICAgICAgQ2hhbmdlIG91ciBpbXBs
ZW1lbnRhdGlvbnMgb2YgdGhvc2UgMiBtZXRob2RzIHRvIGJlIG5vLW9wcywgd2hpbGUgZW5mb3Jj
aW5nIHRoYXQgdGhleSBhcmUKKyAgICAgICAgbmV2ZXIgY2FsbGVkIHdoZW4gaXQgd2FzIHBvc3Np
YmxlLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNvbDo6cHJvcGFnYXRlTGF5b3V0
Q3VlVG9UYWJsZSk6CisgICAgICAgIE5ldyBoZWxwZXIgZnVuY3Rpb24gdGhhdCBmb3J3YXJkIGFu
eSBsYXlvdXQgY3VlIHRvIHRoZSBjb250YWluaW5nIHRhYmxlLCB0aGlzIHdvcmtzIGFyb3VuZAor
ICAgICAgICB1cyBub3QgY2xlYXJpbmcgdGhlIGZsYWdzIHdoaWNoIGNvbmZ1c2VzIFJlbmRlck9i
amVjdCBtYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dCBhbmQKKyAgICAgICAgaW52YWxpZGF0
ZUNvbnRhaW5lclByZWZlcnJlZExvZ2ljYWxXaWR0aHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGFibGVDb2wuaDoKKyAgICAgICAgTWFkZSB0aGUgZnVuY3Rpb24gdGhhdCB3ZSBhcmUg
bm90IGV4cGVjdGVkIHRvIGJlIGNhbGxlZCBwcml2YXRlLgorCiAyMDEyLTEwLTI1ICBZdXJ5IFNl
bWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1lbW9yeSBpbnN0cnVt
ZW50YXRpb246IGFkZCByZXBvcnRNZW1vcnlVc2FnZSB0byBJbWFnZU9ic2VydmVyIGludGVyZmFj
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcAppbmRleCAw
OGVjZmY5MGUwZDJlMTljMDEwNzU4NTYyNmYxNmE2MWU4ODI1OTJjLi5mYjQzNmNhNTU1OTA1NTRi
YThhZmFjZTI0ZDAxZmIwMzBiMGUzMDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
QXV0b1RhYmxlTGF5b3V0LmNwcApAQCAtNDksODEgKzQ5LDc3IEBAIHZvaWQgQXV0b1RhYmxlTGF5
b3V0OjpyZWNhbGNDb2x1bW4odW5zaWduZWQgZWZmQ29sKQogICAgIFJlbmRlclRhYmxlQ2VsbCog
Zml4ZWRDb250cmlidXRvciA9IDA7CiAgICAgUmVuZGVyVGFibGVDZWxsKiBtYXhDb250cmlidXRv
ciA9IDA7CiAKLSAgICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQgPSBtX3RhYmxlLT5jaGlsZHJl
bigpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7
Ci0gICAgICAgIGlmIChjaGlsZC0+aXNSZW5kZXJUYWJsZUNvbCgpKQotICAgICAgICAgICAgdG9S
ZW5kZXJUYWJsZUNvbChjaGlsZCktPmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCk7Ci0g
ICAgICAgIGVsc2UgaWYgKGNoaWxkLT5pc1RhYmxlU2VjdGlvbigpKSB7Ci0gICAgICAgICAgICBS
ZW5kZXJUYWJsZVNlY3Rpb24qIHNlY3Rpb24gPSB0b1JlbmRlclRhYmxlU2VjdGlvbihjaGlsZCk7
Ci0gICAgICAgICAgICB1bnNpZ25lZCBudW1Sb3dzID0gc2VjdGlvbi0+bnVtUm93cygpOwotICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVJvd3M7IGkrKykgewotICAgICAg
ICAgICAgICAgIFJlbmRlclRhYmxlU2VjdGlvbjo6Q2VsbFN0cnVjdCBjdXJyZW50ID0gc2VjdGlv
bi0+Y2VsbEF0KGksIGVmZkNvbCk7Ci0gICAgICAgICAgICAgICAgUmVuZGVyVGFibGVDZWxsKiBj
ZWxsID0gY3VycmVudC5wcmltYXJ5Q2VsbCgpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIGlmIChjdXJyZW50LmluQ29sU3BhbiB8fCAhY2VsbCkKLSAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICBib29sIGNlbGxIYXNDb250ZW50ID0gY2Vs
bC0+Y2hpbGRyZW4oKS0+Zmlyc3RDaGlsZCgpIHx8IGNlbGwtPnN0eWxlKCktPmhhc0JvcmRlcigp
IHx8IGNlbGwtPnN0eWxlKCktPmhhc1BhZGRpbmcoKTsKLSAgICAgICAgICAgICAgICBpZiAoY2Vs
bEhhc0NvbnRlbnQpCi0gICAgICAgICAgICAgICAgICAgIGNvbHVtbkxheW91dC5lbXB0eUNlbGxz
T25seSA9IGZhbHNlOwotCi0gICAgICAgICAgICAgICAgLy8gQSBjZWxsIG9yaWdpbmF0ZXMgaW4g
dGhpcyBjb2x1bW4uIEVuc3VyZSB3ZSBoYXZlCi0gICAgICAgICAgICAgICAgLy8gYSBtaW4vbWF4
IHdpZHRoIG9mIGF0IGxlYXN0IDFweCBmb3IgdGhpcyBjb2x1bW4gbm93LgotICAgICAgICAgICAg
ICAgIGNvbHVtbkxheW91dC5taW5Mb2dpY2FsV2lkdGggPSBtYXg8aW50Pihjb2x1bW5MYXlvdXQu
bWluTG9naWNhbFdpZHRoLCBjZWxsSGFzQ29udGVudCA/IDEgOiAwKTsKLSAgICAgICAgICAgICAg
ICBjb2x1bW5MYXlvdXQubWF4TG9naWNhbFdpZHRoID0gbWF4PGludD4oY29sdW1uTGF5b3V0Lm1h
eExvZ2ljYWxXaWR0aCwgMSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoY2VsbC0+Y29sU3Bhbigp
ID09IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGwtPnByZWZlcnJlZExvZ2ljYWxX
aWR0aHNEaXJ0eSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC0+Y29tcHV0ZVByZWZl
cnJlZExvZ2ljYWxXaWR0aHMoKTsKLSAgICAgICAgICAgICAgICAgICAgY29sdW1uTGF5b3V0Lm1p
bkxvZ2ljYWxXaWR0aCA9IG1heDxpbnQ+KGNlbGwtPm1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgp
LCBjb2x1bW5MYXlvdXQubWluTG9naWNhbFdpZHRoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGNlbGwtPm1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpID4gY29sdW1uTGF5b3V0Lm1heExvZ2lj
YWxXaWR0aCkgewotICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uTGF5b3V0Lm1heExvZ2lj
YWxXaWR0aCA9IGNlbGwtPm1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgbWF4Q29udHJpYnV0b3IgPSBjZWxsOwotICAgICAgICAgICAgICAgICAgICB9
CisgICAgZm9yIChSZW5kZXJUYWJsZVNlY3Rpb24qIHNlY3Rpb24gPSBtX3RhYmxlLT50b3BOb25F
bXB0eVNlY3Rpb24oKTsgc2VjdGlvbjsgc2VjdGlvbiA9IG1fdGFibGUtPnNlY3Rpb25CZWxvdyhz
ZWN0aW9uLCBTa2lwRW1wdHlTZWN0aW9ucykpIHsKKyAgICAgICAgdW5zaWduZWQgbnVtUm93cyA9
IHNlY3Rpb24tPm51bVJvd3MoKTsKKyAgICAgICAgQVNTRVJUKG51bVJvd3MpOworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUm93czsgaSsrKSB7CisgICAgICAgICAgICBSZW5k
ZXJUYWJsZVNlY3Rpb246OkNlbGxTdHJ1Y3QgY3VycmVudCA9IHNlY3Rpb24tPmNlbGxBdChpLCBl
ZmZDb2wpOworICAgICAgICAgICAgUmVuZGVyVGFibGVDZWxsKiBjZWxsID0gY3VycmVudC5wcmlt
YXJ5Q2VsbCgpOworCisgICAgICAgICAgICBpZiAoY3VycmVudC5pbkNvbFNwYW4gfHwgIWNlbGwp
CisgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICAgICAgLy8gQWxs
IGJyb3dzZXJzIGltcGxlbWVudCBhIHNpemUgbGltaXQgb24gdGhlIGNlbGwncyBtYXggd2lkdGgu
IAotICAgICAgICAgICAgICAgICAgICAvLyBPdXIgbGltaXQgaXMgYmFzZWQgb24gS0hUTUwncyBy
ZXByZXNlbnRhdGlvbiB0aGF0IHVzZWQgMTYgYml0cyB3aWR0aHMuCi0gICAgICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBPdGhlciBicm93c2VycyBoYXZlIGEgbG93ZXIgbGltaXQgZm9yIHRoZSBj
ZWxsJ3MgbWF4IHdpZHRoLiAKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGNDZWxsTWF4
V2lkdGggPSAzMjc2MDsKLSAgICAgICAgICAgICAgICAgICAgTGVuZ3RoIGNlbGxMb2dpY2FsV2lk
dGggPSBjZWxsLT5zdHlsZU9yQ29sTG9naWNhbFdpZHRoKCk7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChjZWxsTG9naWNhbFdpZHRoLnZhbHVlKCkgPiBjQ2VsbE1heFdpZHRoKQotICAgICAgICAg
ICAgICAgICAgICAgICAgY2VsbExvZ2ljYWxXaWR0aC5zZXRWYWx1ZShjQ2VsbE1heFdpZHRoKTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxMb2dpY2FsV2lkdGguaXNOZWdhdGl2ZSgpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgY2VsbExvZ2ljYWxXaWR0aC5zZXRWYWx1ZSgwKTsKLSAg
ICAgICAgICAgICAgICAgICAgc3dpdGNoIChjZWxsTG9naWNhbFdpZHRoLnR5cGUoKSkgewotICAg
ICAgICAgICAgICAgICAgICBjYXNlIEZpeGVkOgotICAgICAgICAgICAgICAgICAgICAgICAgLy8g
aWdub3JlIHdpZHRoPTAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjZWxsTG9naWNhbFdp
ZHRoLmlzUG9zaXRpdmUoKSAmJiAhY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC5pc1BlcmNlbnQo
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgbG9naWNhbFdpZHRo
ID0gY2VsbC0+YWRqdXN0Qm9yZGVyQm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKGNlbGxMb2dp
Y2FsV2lkdGgudmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHVt
bkxheW91dC5sb2dpY2FsV2lkdGguaXNGaXhlZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIE5hdi9JRSB3ZWlyZG5lc3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKChsb2dpY2FsV2lkdGggPiBjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLnZhbHVl
KCkpIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChjb2x1bW5MYXlv
dXQubG9naWNhbFdpZHRoLnZhbHVlKCkgPT0gbG9naWNhbFdpZHRoKSAmJiAobWF4Q29udHJpYnV0
b3IgPT0gY2VsbCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1
bW5MYXlvdXQubG9naWNhbFdpZHRoLnNldFZhbHVlKEZpeGVkLCBsb2dpY2FsV2lkdGgpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4ZWRDb250cmlidXRvciA9IGNlbGw7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYm9vbCBjZWxsSGFzQ29udGVudCA9IGNlbGwt
PmNoaWxkcmVuKCktPmZpcnN0Q2hpbGQoKSB8fCBjZWxsLT5zdHlsZSgpLT5oYXNCb3JkZXIoKSB8
fCBjZWxsLT5zdHlsZSgpLT5oYXNQYWRkaW5nKCk7CisgICAgICAgICAgICBpZiAoY2VsbEhhc0Nv
bnRlbnQpCisgICAgICAgICAgICAgICAgY29sdW1uTGF5b3V0LmVtcHR5Q2VsbHNPbmx5ID0gZmFs
c2U7CisKKyAgICAgICAgICAgIC8vIEEgY2VsbCBvcmlnaW5hdGVzIGluIHRoaXMgY29sdW1uLiBF
bnN1cmUgd2UgaGF2ZQorICAgICAgICAgICAgLy8gYSBtaW4vbWF4IHdpZHRoIG9mIGF0IGxlYXN0
IDFweCBmb3IgdGhpcyBjb2x1bW4gbm93LgorICAgICAgICAgICAgY29sdW1uTGF5b3V0Lm1pbkxv
Z2ljYWxXaWR0aCA9IG1heDxpbnQ+KGNvbHVtbkxheW91dC5taW5Mb2dpY2FsV2lkdGgsIGNlbGxI
YXNDb250ZW50ID8gMSA6IDApOworICAgICAgICAgICAgY29sdW1uTGF5b3V0Lm1heExvZ2ljYWxX
aWR0aCA9IG1heDxpbnQ+KGNvbHVtbkxheW91dC5tYXhMb2dpY2FsV2lkdGgsIDEpOworCisgICAg
ICAgICAgICBpZiAoY2VsbC0+Y29sU3BhbigpID09IDEpIHsKKyAgICAgICAgICAgICAgICBpZiAo
Y2VsbC0+cHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KCkpCisgICAgICAgICAgICAgICAgICAg
IGNlbGwtPmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCk7CisgICAgICAgICAgICAgICAg
Y29sdW1uTGF5b3V0Lm1pbkxvZ2ljYWxXaWR0aCA9IG1heDxpbnQ+KGNlbGwtPm1pblByZWZlcnJl
ZExvZ2ljYWxXaWR0aCgpLCBjb2x1bW5MYXlvdXQubWluTG9naWNhbFdpZHRoKTsKKyAgICAgICAg
ICAgICAgICBpZiAoY2VsbC0+bWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCkgPiBjb2x1bW5MYXlv
dXQubWF4TG9naWNhbFdpZHRoKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbHVtbkxheW91dC5t
YXhMb2dpY2FsV2lkdGggPSBjZWxsLT5tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKTsKKyAgICAg
ICAgICAgICAgICAgICAgbWF4Q29udHJpYnV0b3IgPSBjZWxsOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIC8vIEFsbCBicm93c2VycyBpbXBsZW1lbnQgYSBzaXplIGxpbWl0
IG9uIHRoZSBjZWxsJ3MgbWF4IHdpZHRoLgorICAgICAgICAgICAgICAgIC8vIE91ciBsaW1pdCBp
cyBiYXNlZCBvbiBLSFRNTCdzIHJlcHJlc2VudGF0aW9uIHRoYXQgdXNlZCAxNiBiaXRzIHdpZHRo
cy4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogT3RoZXIgYnJvd3NlcnMgaGF2ZSBhIGxvd2Vy
IGxpbWl0IGZvciB0aGUgY2VsbCdzIG1heCB3aWR0aC4KKyAgICAgICAgICAgICAgICBjb25zdCBp
bnQgY0NlbGxNYXhXaWR0aCA9IDMyNzYwOworICAgICAgICAgICAgICAgIExlbmd0aCBjZWxsTG9n
aWNhbFdpZHRoID0gY2VsbC0+c3R5bGVPckNvbExvZ2ljYWxXaWR0aCgpOworICAgICAgICAgICAg
ICAgIGlmIChjZWxsTG9naWNhbFdpZHRoLnZhbHVlKCkgPiBjQ2VsbE1heFdpZHRoKQorICAgICAg
ICAgICAgICAgICAgICBjZWxsTG9naWNhbFdpZHRoLnNldFZhbHVlKGNDZWxsTWF4V2lkdGgpOwor
ICAgICAgICAgICAgICAgIGlmIChjZWxsTG9naWNhbFdpZHRoLmlzTmVnYXRpdmUoKSkKKyAgICAg
ICAgICAgICAgICAgICAgY2VsbExvZ2ljYWxXaWR0aC5zZXRWYWx1ZSgwKTsKKyAgICAgICAgICAg
ICAgICBzd2l0Y2ggKGNlbGxMb2dpY2FsV2lkdGgudHlwZSgpKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSBGaXhlZDoKKyAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlIHdpZHRoPTAKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGNlbGxMb2dpY2FsV2lkdGguaXNQb3NpdGl2ZSgpICYmICFjb2x1
bW5MYXlvdXQubG9naWNhbFdpZHRoLmlzUGVyY2VudCgpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCA9IGNlbGwtPmFkanVzdEJvcmRlckJveExvZ2lj
YWxXaWR0aEZvckJveFNpemluZyhjZWxsTG9naWNhbFdpZHRoLnZhbHVlKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGguaXNGaXhlZCgpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTmF2L0lFIHdlaXJkbmVzcworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgobG9naWNhbFdpZHRoID4gY29sdW1uTGF5b3V0Lmxv
Z2ljYWxXaWR0aC52YWx1ZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAo
KGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGgudmFsdWUoKSA9PSBsb2dpY2FsV2lkdGgpICYmICht
YXhDb250cmlidXRvciA9PSBjZWxsKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC5zZXRWYWx1ZShGaXhlZCwgbG9naWNhbFdpZHRo
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4ZWRDb250cmlidXRvciA9IGNl
bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5MYXlvdXQubG9n
aWNhbFdpZHRoLnNldFZhbHVlKEZpeGVkLCBsb2dpY2FsV2lkdGgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZpeGVkQ29udHJpYnV0b3IgPSBjZWxsOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgUGVyY2VudDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1faGFzUGVyY2VudCA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbExvZ2ljYWxXaWR0aC5pc1Bv
c2l0aXZlKCkgJiYgKCFjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLmlzUGVyY2VudCgpIHx8IGNl
bGxMb2dpY2FsV2lkdGgudmFsdWUoKSA+IGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGgudmFsdWUo
KSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0
aCA9IGNlbGxMb2dpY2FsV2lkdGg7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSBSZWxhdGl2ZToKLSAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBOZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBjYXNlIGFuZCB3aGV0aGVyIGl0IG1h
a2VzIHNlbnNlIHRvIGNvbXBhcmUgdmFsdWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyB3
aGljaCBhcmUgbm90IG5lY2Vzc2FyaWx5IG9mIHRoZSBzYW1lIHR5cGUuCi0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoY2VsbExvZ2ljYWxXaWR0aC52YWx1ZSgpID4gY29sdW1uTGF5b3V0Lmxv
Z2ljYWxXaWR0aC52YWx1ZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkxh
eW91dC5sb2dpY2FsV2lkdGggPSBjZWxsTG9naWNhbFdpZHRoOwotICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFlZmZDb2wgfHwgc2VjdGlvbi0+
cHJpbWFyeUNlbGxBdChpLCBlZmZDb2wgLSAxKSAhPSBjZWxsKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIC8vIFRoaXMgc3Bhbm5pbmcgY2VsbCBvcmlnaW5hdGVzIGluIHRoaXMgY29sdW1uLiBJbnNl
cnQgdGhlIGNlbGwgaW50byBzcGFubmluZyBjZWxscyBsaXN0LgotICAgICAgICAgICAgICAgICAg
ICBpbnNlcnRTcGFuQ2VsbChjZWxsKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSBQZXJjZW50OgorICAgICAgICAgICAgICAgICAgICBtX2hhc1BlcmNl
bnQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbExvZ2ljYWxXaWR0aC5pc1Bv
c2l0aXZlKCkgJiYgKCFjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLmlzUGVyY2VudCgpIHx8IGNl
bGxMb2dpY2FsV2lkdGgudmFsdWUoKSA+IGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGgudmFsdWUo
KSkpCisgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoID0g
Y2VsbExvZ2ljYWxXaWR0aDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSBSZWxhdGl2ZToKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IE5lZWQg
dG8gdW5kZXJzdGFuZCB0aGlzIGNhc2UgYW5kIHdoZXRoZXIgaXQgbWFrZXMgc2Vuc2UgdG8gY29t
cGFyZSB2YWx1ZXMKKyAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIG5vdCBuZWNlc3Nh
cmlseSBvZiB0aGUgc2FtZSB0eXBlLgorICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbExvZ2lj
YWxXaWR0aC52YWx1ZSgpID4gY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC52YWx1ZSgpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aCA9IGNlbGxMb2dp
Y2FsV2lkdGg7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmICghZWZmQ29s
IHx8IHNlY3Rpb24tPnByaW1hcnlDZWxsQXQoaSwgZWZmQ29sIC0gMSkgIT0gY2VsbCkgeworICAg
ICAgICAgICAgICAgIC8vIFRoaXMgc3Bhbm5pbmcgY2VsbCBvcmlnaW5hdGVzIGluIHRoaXMgY29s
dW1uLiBJbnNlcnQgdGhlIGNlbGwgaW50byBzcGFubmluZyBjZWxscyBsaXN0LgorICAgICAgICAg
ICAgICAgIGluc2VydFNwYW5DZWxsKGNlbGwpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlv
dXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCmlu
ZGV4IDJhMDhhZDZiNWNkMzljODc5NWNhZjdkMTExOWM5NDQ3YzdkNzkzNDEuLmVlZDZlMGI1NDk5
MTI4MzM4NjQ4Nzc1YzVmZTRiYTZlNTNkZTg5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRml4ZWRUYWJsZUxheW91dC5jcHAKQEAgLTg4LDggKzg4LDYgQEAgaW50IEZpeGVkVGFi
bGVMYXlvdXQ6OmNhbGNXaWR0aEFycmF5KGludCkKIAogICAgIHVuc2lnbmVkIGN1cnJlbnRFZmZl
Y3RpdmVDb2x1bW4gPSAwOwogICAgIGZvciAoUmVuZGVyVGFibGVDb2wqIGNvbCA9IG1fdGFibGUt
PmZpcnN0Q29sdW1uKCk7IGNvbDsgY29sID0gY29sLT5uZXh0Q29sdW1uKCkpIHsKLSAgICAgICAg
Y29sLT5jb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpOwotCiAgICAgICAgIC8vIFdpZHRo
IHNwZWNpZmllZCBieSBjb2x1bW4tZ3JvdXBzIHRoYXQgaGF2ZSBjb2x1bW4gY2hpbGQgZG9lcyBu
b3QgYWZmZWN0IGNvbHVtbiB3aWR0aCBpbiBmaXhlZCBsYXlvdXQgdGFibGVzCiAgICAgICAgIGlm
IChjb2wtPmlzVGFibGVDb2x1bW5Hcm91cFdpdGhDb2x1bW5DaGlsZHJlbigpKQogICAgICAgICAg
ICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAppbmRl
eCA4ODIwZTYxNGNmMjRjNDZkYzdmMmI2MDUxYjdhNzZmNjc5NjNlODg5Li5kY2JiZmJkMTM1ZTFj
Mzk4OTBlOTUyMDJlNTAwZmY3NWIxYzg0Yzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZS5jcHAKQEAgLTM3OCwyMCArMzc4LDE1IEBAIHZvaWQgUmVuZGVyVGFibGU6Omxh
eW91dCgpCiAKICAgICBib29sIGNvbGxhcHNpbmcgPSBjb2xsYXBzZUJvcmRlcnMoKTsKIAotICAg
IGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0g
Y2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKGNoaWxkLT5pc1RhYmxlU2VjdGlv
bigpKSB7Ci0gICAgICAgICAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIHNlY3Rpb24gPSB0b1JlbmRl
clRhYmxlU2VjdGlvbihjaGlsZCk7Ci0gICAgICAgICAgICBpZiAobV9jb2x1bW5Mb2dpY2FsV2lk
dGhDaGFuZ2VkKQotICAgICAgICAgICAgICAgIHNlY3Rpb24tPnNldENoaWxkTmVlZHNMYXlvdXQo
dHJ1ZSwgTWFya09ubHlUaGlzKTsKLSAgICAgICAgICAgIHNlY3Rpb24tPmxheW91dElmTmVlZGVk
KCk7Ci0gICAgICAgICAgICB0b3RhbFNlY3Rpb25Mb2dpY2FsSGVpZ2h0ICs9IHNlY3Rpb24tPmNh
bGNSb3dMb2dpY2FsSGVpZ2h0KCk7Ci0gICAgICAgICAgICBpZiAoY29sbGFwc2luZykKLSAgICAg
ICAgICAgICAgICBzZWN0aW9uLT5yZWNhbGNPdXRlckJvcmRlcigpOwotICAgICAgICAgICAgQVNT
RVJUKCFzZWN0aW9uLT5uZWVkc0xheW91dCgpKTsKLSAgICAgICAgfSBlbHNlIGlmIChjaGlsZC0+
aXNSZW5kZXJUYWJsZUNvbCgpKSB7Ci0gICAgICAgICAgICBjaGlsZC0+bGF5b3V0SWZOZWVkZWQo
KTsKLSAgICAgICAgICAgIEFTU0VSVCghY2hpbGQtPm5lZWRzTGF5b3V0KCkpOwotICAgICAgICB9
CisgICAgLy8gV2UgaWdub3JlIHRhYmxlIGNvbCAvIGNvbGdyb3VwIGluIHRoaXMgaXRlcmF0aW9u
IGFzIHRoZXkgYXJlIHVzZWQgdG8gc2l6ZSB0aGUgY2VsbCdzIHdpZHRocyBkdXJpbmcgYXV0byAv
IGZpeGVkIHRhYmxlIGxheW91dC4KKyAgICBmb3IgKFJlbmRlclRhYmxlU2VjdGlvbiogc2VjdGlv
biA9IHRvcFNlY3Rpb24oKTsgc2VjdGlvbjsgc2VjdGlvbiA9IHNlY3Rpb25CZWxvdyhzZWN0aW9u
KSkgeworICAgICAgICBpZiAobV9jb2x1bW5Mb2dpY2FsV2lkdGhDaGFuZ2VkKQorICAgICAgICAg
ICAgc2VjdGlvbi0+c2V0Q2hpbGROZWVkc0xheW91dCh0cnVlLCBNYXJrT25seVRoaXMpOworICAg
ICAgICBzZWN0aW9uLT5sYXlvdXRJZk5lZWRlZCgpOworICAgICAgICB0b3RhbFNlY3Rpb25Mb2dp
Y2FsSGVpZ2h0ICs9IHNlY3Rpb24tPmNhbGNSb3dMb2dpY2FsSGVpZ2h0KCk7CisgICAgICAgIGlm
IChjb2xsYXBzaW5nKQorICAgICAgICAgICAgc2VjdGlvbi0+cmVjYWxjT3V0ZXJCb3JkZXIoKTsK
KyAgICAgICAgQVNTRVJUKCFzZWN0aW9uLT5uZWVkc0xheW91dCgpKTsKICAgICB9CiAKICAgICAv
LyBJZiBhbnkgdGFibGUgc2VjdGlvbiBtb3ZlZCB2ZXJ0aWNhbGx5LCB3ZSB3aWxsIGp1c3QgcmVw
YWludCBldmVyeXRoaW5nIGZyb20gdGhhdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZUNvbC5jcHAKaW5kZXggN2FhODM0MWE3ZTIyZGQ2MDk0YTJiZGMzMjMxN2VhM2I0ZjI3
ZWEzYS4uMDUxZjE4MTU0MGJkMDhlMmMwNjJjOTU4MWY5ZDVmZGQ0NzFkZTdkOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCkBAIC00OSw2ICs0OSw5IEBA
IHZvaWQgUmVuZGVyVGFibGVDb2w6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZm
LCBjb25zdCBSZW5kZXJTdHlsZSogb2xkCiB7CiAgICAgUmVuZGVyQm94OjpzdHlsZURpZENoYW5n
ZShkaWZmLCBvbGRTdHlsZSk7CiAKKyAgICBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VMYXlv
dXQpCisgICAgICAgIHByb3BhZ2F0ZUxheW91dEN1ZVRvVGFibGUoKTsKKwogICAgIC8vIElmIGJv
cmRlciB3YXMgY2hhbmdlZCwgbm90aWZ5IHRhYmxlLgogICAgIGlmIChwYXJlbnQoKSkgewogICAg
ICAgICBSZW5kZXJUYWJsZSogdGFibGUgPSB0aGlzLT50YWJsZSgpOwpAQCAtNjYsOCArNjksOSBA
QCB2b2lkIFJlbmRlclRhYmxlQ29sOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgICAgIG1fc3Bh
biA9IHRjLT5zcGFuKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fc3BhbiA9ICEoc3R5bGUoKSAm
JiBzdHlsZSgpLT5kaXNwbGF5KCkgPT0gVEFCTEVfQ09MVU1OX0dST1VQKTsKLSAgICBpZiAobV9z
cGFuICE9IG9sZFNwYW4gJiYgc3R5bGUoKSAmJiBwYXJlbnQoKSkKLSAgICAgICAgc2V0TmVlZHNM
YXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CisKKyAgICBpZiAobV9zcGFuICE9IG9sZFNwYW4g
JiYgc3R5bGUoKSkKKyAgICAgICAgcHJvcGFnYXRlTGF5b3V0Q3VlVG9UYWJsZSgpOwogfQogCiB2
b2lkIFJlbmRlclRhYmxlQ29sOjp3aWxsQmVSZW1vdmVkRnJvbVRyZWUoKQpAQCAtMTE0LDEwICsx
MTgsMjcgQEAgdm9pZCBSZW5kZXJUYWJsZUNvbDo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0
ciwgY29uc3QgSW50UmVjdCopCiAKIHZvaWQgUmVuZGVyVGFibGVDb2w6OmNvbXB1dGVQcmVmZXJy
ZWRMb2dpY2FsV2lkdGhzKCkKIHsKLSAgICBzZXRQcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHko
ZmFsc2UpOworICAgIC8vIDxjb2w+IGFuZCA8Y29sZ3JvdXA+IGRvbid0IGhhdmUgcHJlZmVycmVk
IGxvZ2ljYWwgd2lkdGhzIGFzIHRoZXkgaGF2ZQorICAgIC8vIG5vIGNvbnRlbnQgc28gY29tcHV0
aW5nIG91ciBwcmVmZXJyZWQgbG9naWNhbCB3aWR0aHMgaXMgd2FzdGVmdWwuCisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgUmVuZGVyVGFibGVDb2w6OmxheW91dCgpCit7Cisg
ICAgLy8gVGhlcmUgaXMgbm8gbmVlZCB0byBsYXlvdXQgdGFibGUgPGNvbD4gb3IgPGNvbGdyb3Vw
PiBhcyB0aGV5IGhhdmUgbm8gY29udGVudC4KKyAgICAvLyBXZSBjYW5ub3QgQVNTRVJUX05PVF9S
RUFDSEVEIGhlcmUgYXMgc2ltcGxpZmllZCBub3JtYWwgZmxvdyBsYXlvdXQgZm9yY2VzCisgICAg
Ly8gbGF5b3V0IG9uIGFueSByZW5kZXJlci4KK30KIAotICAgIGZvciAoUmVuZGVyT2JqZWN0KiBj
aGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkp
Ci0gICAgICAgIGNoaWxkLT5zZXRQcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkoZmFsc2UpOwor
dm9pZCBSZW5kZXJUYWJsZUNvbDo6cHJvcGFnYXRlTGF5b3V0Q3VlVG9UYWJsZSgpIGNvbnN0Cit7
CisgICAgLy8gRm9yd2FyZCBhbnkgbGF5b3V0IGhpbnQgdG8gdGhlIHRhYmxlOiB0aGlzIGlzIHJl
cXVpcmVkIGFzIHRoZSB0YWJsZSBpcworICAgIC8vIHRoZSBvbmUgdG8gbGF5b3V0IC8gY29tcHV0
ZSBwcmVmZXJyZWQgbG9naWNhbCB3aWR0aHMgb24gYWxsIHRoZSBjZWxscy4KKyAgICAvLyBBbHNv
IHdlIGRvbid0IGNsZWFyIGFueSBmbGFncywgd2hpY2ggbWF5IG5ldmVyIG1hcmsgdGhlIHRhYmxl
LgorICAgIGlmIChSZW5kZXJUYWJsZSogdGFibGUgPSB0aGlzLT50YWJsZSgpKSB7CisgICAgICAg
IHRhYmxlLT5zZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUpOworICAgICAgICB0YWJsZS0+c2V0UHJl
ZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KHRydWUpOworICAgIH0KIH0KIAogUmVuZGVyVGFibGUq
IFJlbmRlclRhYmxlQ29sOjp0YWJsZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZUNvbC5oCmluZGV4IDFhOWZhYzZlYzIzZDZmMGM1YzcxMDVkYmZjMTE0MzFlOGRh
ODI0YTUuLjFlOGU4MDI1N2E1YWQ0ZDUyN2UyOGNhOWQzZWRjMjIwYjg0NjU3NjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCkBAIC00MCw4ICs0MCw2IEBAIHB1
YmxpYzoKICAgICBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgY29uc3Qg
eyByZXR1cm4gJm1fY2hpbGRyZW47IH0KICAgICBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxk
cmVuKCkgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KIAotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRl
UHJlZmVycmVkTG9naWNhbFdpZHRocygpOwotCiAgICAgdW5zaWduZWQgc3BhbigpIGNvbnN0IHsg
cmV0dXJuIG1fc3BhbjsgfQogICAgIHZvaWQgc2V0U3Bhbih1bnNpZ25lZCBzcGFuKSB7IG1fc3Bh
biA9IHNwYW47IH0KIApAQCAtNzcsNiArNzUsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUmVu
ZGVyT2JqZWN0Q2hpbGRMaXN0KiB2aXJ0dWFsQ2hpbGRyZW4oKSB7IHJldHVybiBjaGlsZHJlbigp
OyB9CiAgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIHZpcnR1YWxDaGls
ZHJlbigpIGNvbnN0IHsgcmV0dXJuIGNoaWxkcmVuKCk7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBsYXlvdXQoKSBPVkVSUklERTsKKwogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJUYWJsZUNvbCI7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNSZW5kZXJUYWJsZUNvbCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsKQEAgLTkyLDYgKzkzLDggQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNv
bnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7CiAKKyAgICB2b2lkIHByb3BhZ2F0ZUxheW91dEN1
ZVRvVGFibGUoKSBjb25zdDsKKwogICAgIFJlbmRlclRhYmxlKiB0YWJsZSgpIGNvbnN0OwogCiAg
ICAgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0IG1fY2hpbGRyZW47CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTc4MGY2ZWVjYmE4
NmIxMDBjMWQ5NDE5ODIzOWE4ZGZiM2VjYjlmNC4uNWQ2Y2M3NDZkOGZlY2RlMzA1Y2ZiZTg1MjQ2
ZTIyZjRjMDYwN2EzMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTEwLTI1ICBKdWxpZW4g
Q2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbmRlclRhYmxl
Q29sOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyBhbmQgUmVuZGVyVGFibGVDb2w6Omxh
eW91dCBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05OTg2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIHRoaXMgdGVzdCBhcyB0aGUgY29kZSBpbiBSZW5kZXJU
YWJsZUNvbDo6dXBkYXRlRnJvbUVsZW1lbnQgd2Fzbid0IHByb3Blcmx5IGNvdmVyZWQuCisKKyAg
ICAgICAgKiBmYXN0L3RhYmxlL2NvbC1zcGFuLWNoYW5nZS1yZWxheW91dC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGFibGUvY29sLXNwYW4tY2hhbmdlLXJlbGF5b3V0Lmh0
bWw6IEFkZGVkLgorCiAyMDEyLTEwLTI1ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtp
dC5vcmc+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZywgc2tpcCB0ZXN0cyBi
ZWNhdXNlIFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZSgpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3RhYmxlL2NvbC1zcGFuLWNoYW5nZS1yZWxheW91dC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L3RhYmxlL2NvbC1zcGFuLWNoYW5nZS1yZWxheW91dC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzc3ZTEyYjlmOGJjODUwYWI0ZDI3NzI3NTc2MGUxM2E5ZDY0NDY5
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGFibGUvY29sLXNwYW4tY2hh
bmdlLXJlbGF5b3V0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1RoaXMgdGVzdCBjaGVj
a3MgdGhhdCBkeW5hbWljYWxseSBjaGFuZ2luZyBhIGNvbHVtbidzICdzcGFuJyBwcm9wZXJseSBy
ZWNvbXB1dGUgdGhlIGNlbGwncyB3aWR0aHMuCisKK1RoZSB0YWJsZSBiZWxvdyBzaHJpbmsgdG8g
MjAwcHggYWZ0ZXIgY2hhbmdpbmcgdGhlIGNvbHVtbidzIHNwYW4uCisKK1RhYmxlIHdpZHRoIHdh
cyAzMDBweAorVGFibGUgd2lkdGggaXMgMjAwcHgKK1BBU1NFRDogVGFibGUgY2hhbmdlZCB3aWR0
aAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RhYmxlL2NvbC1zcGFuLWNoYW5nZS1y
ZWxheW91dC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90YWJsZS9jb2wtc3Bhbi1jaGFuZ2UtcmVs
YXlvdXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzJmOThhNDVhNmNhNTNiYmVhNzE1NmI4NDRkNjc2OGM1
YzhlNmVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90YWJsZS9jb2wtc3Bh
bi1jaGFuZ2UtcmVsYXlvdXQuaHRtbApAQCAtMCwwICsxLDYxIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICB0YWJsZQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7
CisgICAgICAgICAgICAgICAgdGFibGUtbGF5b3V0OiBmaXhlZDsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMjAwcHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0ZAorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IGdyZWVuOworICAgICAgICAgICAgICAgIGhl
aWdodDogMWVtOworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0PgorICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgICAgICBmdW5jdGlvbiBsb2cobXNn
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1zZykpOworICAgICAgICAgICAgICAgIGNv
bnNvbGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnInKSk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNoYW5nZUNvbFNwYW4oKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHZhciBjb2wgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29sdW1uJyk7CisgICAgICAgICAgICAgICAgdmFyIG9sZENlbGxXaWR0aCA9IGdldENvbXB1dGVk
U3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhYmxlJykpLndpZHRoOworICAgICAgICAg
ICAgICAgIGNvbC5zZXRBdHRyaWJ1dGUoInNwYW4iLCAiMSIpOworICAgICAgICAgICAgICAgIHZh
ciBuZXdDZWxsV2lkdGggPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCd0YWJsZScpKS53aWR0aDsKKworICAgICAgICAgICAgICAgIGxvZygiVGFibGUgd2lkdGggd2Fz
ICIgKyBvbGRDZWxsV2lkdGgpOworICAgICAgICAgICAgICAgIGxvZygiVGFibGUgd2lkdGggaXMg
IiArIG5ld0NlbGxXaWR0aCk7CisgICAgICAgICAgICAgICAgaWYgKG9sZENlbGxXaWR0aCAhPSBu
ZXdDZWxsV2lkdGgpCisgICAgICAgICAgICAgICAgICAgIGxvZygiUEFTU0VEOiBUYWJsZSBjaGFu
Z2VkIHdpZHRoIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBs
b2coIkZBSUxFRDogVGFibGUgZGlkIG5vdCBjaGFuZ2Ugd2lkdGgiKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0iY2hhbmdl
Q29sU3BhbigpOyI+CisgICAgICAgIDxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCBkeW5hbWljYWxs
eSBjaGFuZ2luZyBhIGNvbHVtbidzICdzcGFuJyBwcm9wZXJseSByZWNvbXB1dGUgdGhlIGNlbGwn
cyB3aWR0aHMuPC9wPgorICAgICAgICA8cD5UaGUgdGFibGUgYmVsb3cgc2hyaW5rIHRvIDIwMHB4
IGFmdGVyIGNoYW5naW5nIHRoZSBjb2x1bW4ncyBzcGFuLjwvcD4KKyAgICAgICAgPHRhYmxlIGlk
PSJ0YWJsZSI+CisgICAgICAgICAgICA8Y29sZ3JvdXA+CisgICAgICAgICAgICAgICAgPGNvbCBz
cGFuPSIyIiBpZD0iY29sdW1uIiBzdHlsZT0id2lkdGg6IDEwMHB4Ij48L2NvbD4KKyAgICAgICAg
ICAgICAgICA8Y29sIHN0eWxlPSJ3aWR0aDogMTAwcHg7Ij48L2NvbD4KKyAgICAgICAgICAgIDwv
Y29sZ3JvdXA+CisgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRkIGlkPSJjZWxs
Ij48L3RkPgorICAgICAgICAgICAgICAgIDx0ZD48L3RkPgorICAgICAgICAgICAgICAgIDx0ZD48
L3RkPgorICAgICAgICAgICA8L3RyPgorICAgICAgICA8L3RhYmxlPgorICAgICAgICA8cCBpZD0i
Y29uc29sZSI+PC9wPgorICAgIDwvYm9keT4KKzwvaHRtbD4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170871</attachid>
            <date>2012-10-26 03:29:00 -0700</date>
            <delta_ts>2012-10-31 10:08:43 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-99861-20121026032732.patch</filename>
            <type>text/plain</type>
            <size>23580</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTdkNGYxNmM3ZGU3MGRi
YTA4NzJmNDAxYjkyMTRiMDBjOTc1YTdlYS4uNGEzNDU2OWI1OGE2ZTFkNjRhYjMwNWE1YjBhZGU3
ZDY2MDg5ZjFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTEwLTI2ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbmRlclRh
YmxlQ29sOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyBhbmQgUmVuZGVyVGFibGVDb2w6
OmxheW91dCBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTg2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE9qYW4g
VmFmYWkuCisKKyAgICAgICAgUmVuZGVyVGFibGVDb2wncyBjb21wdXRlUHJlZmVycmVkTG9naWNh
bFdpZHRocyBhbmQgbGF5b3V0J3Mgb25seSBwdXJwb3NlIHdlcmUgdG8gY2xlYXIgdGhlIHByZWZl
cnJlZCBsb2dpY2FsCisgICAgICAgIHdpZHRocyBkaXJ0eSAvIGxheW91dCBmbGFnIHNvIHRoYXQg
d2Ugd291bGQgcHJvcGVybHkgcHJvcGFnYXRlIHRoZSBpbmZvcm1hdGlvbiB0byBvdXIgY29udGFp
bmluZyB0YWJsZS4gVGhpcworICAgICAgICBsZWQgdG8gY2x1bmt5IGNvZGUgd2hlcmUgdGhlIHRh
YmxlIGxheW91dCBjb2RlIGhhZCB0byBmb3JjZWZ1bGx5IGNhbGwgUmVuZGVyVGFibGVDb2w6OmNv
bXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzCisgICAgICAgIG9yIGVsc2Ugd2Ugd291bGQgaWdu
b3JlIHRoZSBuZXh0IGxheW91dCBoaW50IG9uIHRoZSA8Y29sPiBvciA8Y29sZ3JvdXA+LgorCisg
ICAgICAgIFRlc3RzOiBmYXN0L3RhYmxlL2NvbC1zcGFuLWNoYW5nZS1yZWxheW91dC5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L3RhYmxlL3NpbXBsaWZpZWQtbGF5b3V0LXRhYmxlLmh0bWwKKwor
ICAgICAgICAqIHJlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0b1RhYmxlTGF5b3V0OjpyZWNhbGNDb2x1bW4pOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6bGF5b3V0KToK
KyAgICAgICAgU2ltcGxpZmllZCB0aGUgY29kZSBub3cgdGhhdCB3ZSBvbmx5IG5lZWQgdG8gaXRl
cmF0ZSBvdmVyIHRoZSBzZWN0aW9ucy4KKworICAgICAgICAqIHJlbmRlcmluZy9GaXhlZFRhYmxl
TGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpeGVkVGFibGVMYXlvdXQ6OmNhbGNXaWR0
aEFycmF5KToKKyAgICAgICAgUmVtb3ZlZCBjYWxsIHRvIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2Fs
V2lkdGhzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ29sOjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUYWJsZUNvbDo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICBGb3J3
YXJkIGEgbGF5b3V0IGhpbnQgdG8gdGhlIHRhYmxlIHNvIHRoYXQgd2UgcHJvcGVybHkgcmVjb21w
dXRlIHRoZSBjZWxsJ3MgbG9naWNhbCB3aXRocy4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGFibGVDb2w6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlQ29sOjpsYXlvdXQpOgorICAgICAgICBDaGFuZ2Ugb3VyIGltcGxlbWVu
dGF0aW9ucyBvZiB0aG9zZSAyIG1ldGhvZHMgdG8gYmUgbm8tb3BzLCB3aGlsZSBlbmZvcmNpbmcg
dGhhdCB0aGV5IGFyZQorICAgICAgICBuZXZlciBjYWxsZWQgd2hlbiBpdCB3YXMgcG9zc2libGUu
CisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ29sOjpwcm9wYWdhdGVMYXlvdXRDdWVU
b1RhYmxlKToKKyAgICAgICAgTmV3IGhlbHBlciBmdW5jdGlvbiB0aGF0IGZvcndhcmQgYW55IGxh
eW91dCBjdWUgdG8gdGhlIGNvbnRhaW5pbmcgdGFibGUsIHRoaXMgd29ya3MgYXJvdW5kCisgICAg
ICAgIHVzIG5vdCBjbGVhcmluZyB0aGUgZmxhZ3Mgd2hpY2ggY29uZnVzZXMgUmVuZGVyT2JqZWN0
IG1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0IGFuZAorICAgICAgICBpbnZhbGlkYXRlQ29u
dGFpbmVyUHJlZmVycmVkTG9naWNhbFdpZHRocy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUYWJsZUNvbC5oOgorICAgICAgICBNYWRlIHRoZSBmdW5jdGlvbiB0aGF0IHdlIGFyZSBub3Qg
ZXhwZWN0ZWQgdG8gYmUgY2FsbGVkIHByaXZhdGUuCisKIDIwMTItMTAtMjYgIEtlbmljaGkgSXNo
aWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIGxvY2FsKEhlbHZldGljYSkg
aW4gc3JjIGRlc2NyaXB0b3IgcHJldmVudCBmYWxsYmFjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcAppbmRleCAwOGVjZmY5MGUwZDJlMTljMDEwNzU4NTYy
NmYxNmE2MWU4ODI1OTJjLi5mYjQzNmNhNTU1OTA1NTRiYThhZmFjZTI0ZDAxZmIwMzBiMGUzMDNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcApAQCAt
NDksODEgKzQ5LDc3IEBAIHZvaWQgQXV0b1RhYmxlTGF5b3V0OjpyZWNhbGNDb2x1bW4odW5zaWdu
ZWQgZWZmQ29sKQogICAgIFJlbmRlclRhYmxlQ2VsbCogZml4ZWRDb250cmlidXRvciA9IDA7CiAg
ICAgUmVuZGVyVGFibGVDZWxsKiBtYXhDb250cmlidXRvciA9IDA7CiAKLSAgICBmb3IgKFJlbmRl
ck9iamVjdCogY2hpbGQgPSBtX3RhYmxlLT5jaGlsZHJlbigpLT5maXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+aXNS
ZW5kZXJUYWJsZUNvbCgpKQotICAgICAgICAgICAgdG9SZW5kZXJUYWJsZUNvbChjaGlsZCktPmNv
bXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCk7Ci0gICAgICAgIGVsc2UgaWYgKGNoaWxkLT5p
c1RhYmxlU2VjdGlvbigpKSB7Ci0gICAgICAgICAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIHNlY3Rp
b24gPSB0b1JlbmRlclRhYmxlU2VjdGlvbihjaGlsZCk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBu
dW1Sb3dzID0gc2VjdGlvbi0+bnVtUm93cygpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bVJvd3M7IGkrKykgewotICAgICAgICAgICAgICAgIFJlbmRlclRhYmxlU2Vj
dGlvbjo6Q2VsbFN0cnVjdCBjdXJyZW50ID0gc2VjdGlvbi0+Y2VsbEF0KGksIGVmZkNvbCk7Ci0g
ICAgICAgICAgICAgICAgUmVuZGVyVGFibGVDZWxsKiBjZWxsID0gY3VycmVudC5wcmltYXJ5Q2Vs
bCgpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChjdXJyZW50LmluQ29s
U3BhbiB8fCAhY2VsbCkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAg
ICAgICAgICBib29sIGNlbGxIYXNDb250ZW50ID0gY2VsbC0+Y2hpbGRyZW4oKS0+Zmlyc3RDaGls
ZCgpIHx8IGNlbGwtPnN0eWxlKCktPmhhc0JvcmRlcigpIHx8IGNlbGwtPnN0eWxlKCktPmhhc1Bh
ZGRpbmcoKTsKLSAgICAgICAgICAgICAgICBpZiAoY2VsbEhhc0NvbnRlbnQpCi0gICAgICAgICAg
ICAgICAgICAgIGNvbHVtbkxheW91dC5lbXB0eUNlbGxzT25seSA9IGZhbHNlOwotCi0gICAgICAg
ICAgICAgICAgLy8gQSBjZWxsIG9yaWdpbmF0ZXMgaW4gdGhpcyBjb2x1bW4uIEVuc3VyZSB3ZSBo
YXZlCi0gICAgICAgICAgICAgICAgLy8gYSBtaW4vbWF4IHdpZHRoIG9mIGF0IGxlYXN0IDFweCBm
b3IgdGhpcyBjb2x1bW4gbm93LgotICAgICAgICAgICAgICAgIGNvbHVtbkxheW91dC5taW5Mb2dp
Y2FsV2lkdGggPSBtYXg8aW50Pihjb2x1bW5MYXlvdXQubWluTG9naWNhbFdpZHRoLCBjZWxsSGFz
Q29udGVudCA/IDEgOiAwKTsKLSAgICAgICAgICAgICAgICBjb2x1bW5MYXlvdXQubWF4TG9naWNh
bFdpZHRoID0gbWF4PGludD4oY29sdW1uTGF5b3V0Lm1heExvZ2ljYWxXaWR0aCwgMSk7Ci0KLSAg
ICAgICAgICAgICAgICBpZiAoY2VsbC0+Y29sU3BhbigpID09IDEpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGNlbGwtPnByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eSgpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgY2VsbC0+Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKTsKLSAg
ICAgICAgICAgICAgICAgICAgY29sdW1uTGF5b3V0Lm1pbkxvZ2ljYWxXaWR0aCA9IG1heDxpbnQ+
KGNlbGwtPm1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpLCBjb2x1bW5MYXlvdXQubWluTG9naWNh
bFdpZHRoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGwtPm1heFByZWZlcnJlZExvZ2lj
YWxXaWR0aCgpID4gY29sdW1uTGF5b3V0Lm1heExvZ2ljYWxXaWR0aCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgY29sdW1uTGF5b3V0Lm1heExvZ2ljYWxXaWR0aCA9IGNlbGwtPm1heFByZWZl
cnJlZExvZ2ljYWxXaWR0aCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgbWF4Q29udHJpYnV0
b3IgPSBjZWxsOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgZm9yIChSZW5kZXJUYWJsZVNl
Y3Rpb24qIHNlY3Rpb24gPSBtX3RhYmxlLT50b3BOb25FbXB0eVNlY3Rpb24oKTsgc2VjdGlvbjsg
c2VjdGlvbiA9IG1fdGFibGUtPnNlY3Rpb25CZWxvdyhzZWN0aW9uLCBTa2lwRW1wdHlTZWN0aW9u
cykpIHsKKyAgICAgICAgdW5zaWduZWQgbnVtUm93cyA9IHNlY3Rpb24tPm51bVJvd3MoKTsKKyAg
ICAgICAgQVNTRVJUKG51bVJvd3MpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bnVtUm93czsgaSsrKSB7CisgICAgICAgICAgICBSZW5kZXJUYWJsZVNlY3Rpb246OkNlbGxTdHJ1
Y3QgY3VycmVudCA9IHNlY3Rpb24tPmNlbGxBdChpLCBlZmZDb2wpOworICAgICAgICAgICAgUmVu
ZGVyVGFibGVDZWxsKiBjZWxsID0gY3VycmVudC5wcmltYXJ5Q2VsbCgpOworCisgICAgICAgICAg
ICBpZiAoY3VycmVudC5pbkNvbFNwYW4gfHwgIWNlbGwpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgICAgICAgICAgICAgLy8gQWxsIGJyb3dzZXJzIGltcGxlbWVudCBhIHNp
emUgbGltaXQgb24gdGhlIGNlbGwncyBtYXggd2lkdGguIAotICAgICAgICAgICAgICAgICAgICAv
LyBPdXIgbGltaXQgaXMgYmFzZWQgb24gS0hUTUwncyByZXByZXNlbnRhdGlvbiB0aGF0IHVzZWQg
MTYgYml0cyB3aWR0aHMuCi0gICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBPdGhlciBicm93
c2VycyBoYXZlIGEgbG93ZXIgbGltaXQgZm9yIHRoZSBjZWxsJ3MgbWF4IHdpZHRoLiAKLSAgICAg
ICAgICAgICAgICAgICAgY29uc3QgaW50IGNDZWxsTWF4V2lkdGggPSAzMjc2MDsKLSAgICAgICAg
ICAgICAgICAgICAgTGVuZ3RoIGNlbGxMb2dpY2FsV2lkdGggPSBjZWxsLT5zdHlsZU9yQ29sTG9n
aWNhbFdpZHRoKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjZWxsTG9naWNhbFdpZHRoLnZh
bHVlKCkgPiBjQ2VsbE1heFdpZHRoKQotICAgICAgICAgICAgICAgICAgICAgICAgY2VsbExvZ2lj
YWxXaWR0aC5zZXRWYWx1ZShjQ2VsbE1heFdpZHRoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGNlbGxMb2dpY2FsV2lkdGguaXNOZWdhdGl2ZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAg
Y2VsbExvZ2ljYWxXaWR0aC5zZXRWYWx1ZSgwKTsKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNo
IChjZWxsTG9naWNhbFdpZHRoLnR5cGUoKSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIEZp
eGVkOgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlIHdpZHRoPTAKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChjZWxsTG9naWNhbFdpZHRoLmlzUG9zaXRpdmUoKSAmJiAhY29s
dW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC5pc1BlcmNlbnQoKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIExheW91dFVuaXQgbG9naWNhbFdpZHRoID0gY2VsbC0+YWRqdXN0Qm9yZGVyQm94
TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKGNlbGxMb2dpY2FsV2lkdGgudmFsdWUoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGguaXNG
aXhlZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5hdi9JRSB3ZWly
ZG5lc3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChsb2dpY2FsV2lkdGgg
PiBjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLnZhbHVlKCkpIAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfHwgKChjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLnZhbHVlKCkg
PT0gbG9naWNhbFdpZHRoKSAmJiAobWF4Q29udHJpYnV0b3IgPT0gY2VsbCkpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLnNl
dFZhbHVlKEZpeGVkLCBsb2dpY2FsV2lkdGgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZml4ZWRDb250cmlidXRvciA9IGNlbGw7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgYm9vbCBjZWxsSGFzQ29udGVudCA9IGNlbGwtPmNoaWxkcmVuKCktPmZpcnN0Q2hpbGQo
KSB8fCBjZWxsLT5zdHlsZSgpLT5oYXNCb3JkZXIoKSB8fCBjZWxsLT5zdHlsZSgpLT5oYXNQYWRk
aW5nKCk7CisgICAgICAgICAgICBpZiAoY2VsbEhhc0NvbnRlbnQpCisgICAgICAgICAgICAgICAg
Y29sdW1uTGF5b3V0LmVtcHR5Q2VsbHNPbmx5ID0gZmFsc2U7CisKKyAgICAgICAgICAgIC8vIEEg
Y2VsbCBvcmlnaW5hdGVzIGluIHRoaXMgY29sdW1uLiBFbnN1cmUgd2UgaGF2ZQorICAgICAgICAg
ICAgLy8gYSBtaW4vbWF4IHdpZHRoIG9mIGF0IGxlYXN0IDFweCBmb3IgdGhpcyBjb2x1bW4gbm93
LgorICAgICAgICAgICAgY29sdW1uTGF5b3V0Lm1pbkxvZ2ljYWxXaWR0aCA9IG1heDxpbnQ+KGNv
bHVtbkxheW91dC5taW5Mb2dpY2FsV2lkdGgsIGNlbGxIYXNDb250ZW50ID8gMSA6IDApOworICAg
ICAgICAgICAgY29sdW1uTGF5b3V0Lm1heExvZ2ljYWxXaWR0aCA9IG1heDxpbnQ+KGNvbHVtbkxh
eW91dC5tYXhMb2dpY2FsV2lkdGgsIDEpOworCisgICAgICAgICAgICBpZiAoY2VsbC0+Y29sU3Bh
bigpID09IDEpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2VsbC0+cHJlZmVycmVkTG9naWNhbFdp
ZHRoc0RpcnR5KCkpCisgICAgICAgICAgICAgICAgICAgIGNlbGwtPmNvbXB1dGVQcmVmZXJyZWRM
b2dpY2FsV2lkdGhzKCk7CisgICAgICAgICAgICAgICAgY29sdW1uTGF5b3V0Lm1pbkxvZ2ljYWxX
aWR0aCA9IG1heDxpbnQ+KGNlbGwtPm1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpLCBjb2x1bW5M
YXlvdXQubWluTG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgICAgICBpZiAoY2VsbC0+bWF4UHJl
ZmVycmVkTG9naWNhbFdpZHRoKCkgPiBjb2x1bW5MYXlvdXQubWF4TG9naWNhbFdpZHRoKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbHVtbkxheW91dC5tYXhMb2dpY2FsV2lkdGggPSBjZWxsLT5t
YXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKTsKKyAgICAgICAgICAgICAgICAgICAgbWF4Q29udHJp
YnV0b3IgPSBjZWxsOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIEFs
bCBicm93c2VycyBpbXBsZW1lbnQgYSBzaXplIGxpbWl0IG9uIHRoZSBjZWxsJ3MgbWF4IHdpZHRo
LgorICAgICAgICAgICAgICAgIC8vIE91ciBsaW1pdCBpcyBiYXNlZCBvbiBLSFRNTCdzIHJlcHJl
c2VudGF0aW9uIHRoYXQgdXNlZCAxNiBiaXRzIHdpZHRocy4KKyAgICAgICAgICAgICAgICAvLyBG
SVhNRTogT3RoZXIgYnJvd3NlcnMgaGF2ZSBhIGxvd2VyIGxpbWl0IGZvciB0aGUgY2VsbCdzIG1h
eCB3aWR0aC4KKyAgICAgICAgICAgICAgICBjb25zdCBpbnQgY0NlbGxNYXhXaWR0aCA9IDMyNzYw
OworICAgICAgICAgICAgICAgIExlbmd0aCBjZWxsTG9naWNhbFdpZHRoID0gY2VsbC0+c3R5bGVP
ckNvbExvZ2ljYWxXaWR0aCgpOworICAgICAgICAgICAgICAgIGlmIChjZWxsTG9naWNhbFdpZHRo
LnZhbHVlKCkgPiBjQ2VsbE1heFdpZHRoKQorICAgICAgICAgICAgICAgICAgICBjZWxsTG9naWNh
bFdpZHRoLnNldFZhbHVlKGNDZWxsTWF4V2lkdGgpOworICAgICAgICAgICAgICAgIGlmIChjZWxs
TG9naWNhbFdpZHRoLmlzTmVnYXRpdmUoKSkKKyAgICAgICAgICAgICAgICAgICAgY2VsbExvZ2lj
YWxXaWR0aC5zZXRWYWx1ZSgwKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGNlbGxMb2dpY2Fs
V2lkdGgudHlwZSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBGaXhlZDoKKyAgICAgICAgICAg
ICAgICAgICAgLy8gaWdub3JlIHdpZHRoPTAKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxM
b2dpY2FsV2lkdGguaXNQb3NpdGl2ZSgpICYmICFjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLmlz
UGVyY2VudCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxX
aWR0aCA9IGNlbGwtPmFkanVzdEJvcmRlckJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhjZWxs
TG9naWNhbFdpZHRoLnZhbHVlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHVt
bkxheW91dC5sb2dpY2FsV2lkdGguaXNGaXhlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gTmF2L0lFIHdlaXJkbmVzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgobG9naWNhbFdpZHRoID4gY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC52YWx1ZSgpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKGNvbHVtbkxheW91dC5sb2dpY2FsV2lk
dGgudmFsdWUoKSA9PSBsb2dpY2FsV2lkdGgpICYmIChtYXhDb250cmlidXRvciA9PSBjZWxsKSkp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uTGF5b3V0LmxvZ2ljYWxX
aWR0aC5zZXRWYWx1ZShGaXhlZCwgbG9naWNhbFdpZHRoKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZml4ZWRDb250cmlidXRvciA9IGNlbGw7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLnNldFZhbHVlKEZpeGVk
LCBsb2dpY2FsV2lkdGgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVkQ29udHJp
YnV0b3IgPSBjZWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgUGVyY2VudDoKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG1faGFzUGVyY2VudCA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoY2VsbExvZ2ljYWxXaWR0aC5pc1Bvc2l0aXZlKCkgJiYgKCFjb2x1bW5MYXlv
dXQubG9naWNhbFdpZHRoLmlzUGVyY2VudCgpIHx8IGNlbGxMb2dpY2FsV2lkdGgudmFsdWUoKSA+
IGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGgudmFsdWUoKSkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aCA9IGNlbGxMb2dpY2FsV2lkdGg7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBS
ZWxhdGl2ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIHVuZGVy
c3RhbmQgdGhpcyBjYXNlIGFuZCB3aGV0aGVyIGl0IG1ha2VzIHNlbnNlIHRvIGNvbXBhcmUgdmFs
dWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgbm90IG5lY2Vzc2FyaWx5
IG9mIHRoZSBzYW1lIHR5cGUuCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbExvZ2lj
YWxXaWR0aC52YWx1ZSgpID4gY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC52YWx1ZSgpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGggPSBjZWxs
TG9naWNhbFdpZHRoOwotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKCFlZmZDb2wgfHwgc2VjdGlvbi0+cHJpbWFyeUNlbGxBdChpLCBlZmZDb2wg
LSAxKSAhPSBjZWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgc3Bhbm5pbmcgY2Vs
bCBvcmlnaW5hdGVzIGluIHRoaXMgY29sdW1uLiBJbnNlcnQgdGhlIGNlbGwgaW50byBzcGFubmlu
ZyBjZWxscyBsaXN0LgotICAgICAgICAgICAgICAgICAgICBpbnNlcnRTcGFuQ2VsbChjZWxsKTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBQZXJjZW50
OgorICAgICAgICAgICAgICAgICAgICBtX2hhc1BlcmNlbnQgPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICBpZiAoY2VsbExvZ2ljYWxXaWR0aC5pc1Bvc2l0aXZlKCkgJiYgKCFjb2x1bW5MYXlv
dXQubG9naWNhbFdpZHRoLmlzUGVyY2VudCgpIHx8IGNlbGxMb2dpY2FsV2lkdGgudmFsdWUoKSA+
IGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGgudmFsdWUoKSkpCisgICAgICAgICAgICAgICAgICAg
ICAgICBjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoID0gY2VsbExvZ2ljYWxXaWR0aDsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBSZWxhdGl2ZToKKyAg
ICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGNhc2Ug
YW5kIHdoZXRoZXIgaXQgbWFrZXMgc2Vuc2UgdG8gY29tcGFyZSB2YWx1ZXMKKyAgICAgICAgICAg
ICAgICAgICAgLy8gd2hpY2ggYXJlIG5vdCBuZWNlc3NhcmlseSBvZiB0aGUgc2FtZSB0eXBlLgor
ICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbExvZ2ljYWxXaWR0aC52YWx1ZSgpID4gY29sdW1u
TGF5b3V0LmxvZ2ljYWxXaWR0aC52YWx1ZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgY29s
dW1uTGF5b3V0LmxvZ2ljYWxXaWR0aCA9IGNlbGxMb2dpY2FsV2lkdGg7CisgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSBlbHNlIGlmICghZWZmQ29sIHx8IHNlY3Rpb24tPnByaW1hcnlDZWxs
QXQoaSwgZWZmQ29sIC0gMSkgIT0gY2VsbCkgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgc3Bh
bm5pbmcgY2VsbCBvcmlnaW5hdGVzIGluIHRoaXMgY29sdW1uLiBJbnNlcnQgdGhlIGNlbGwgaW50
byBzcGFubmluZyBjZWxscyBsaXN0LgorICAgICAgICAgICAgICAgIGluc2VydFNwYW5DZWxsKGNl
bGwpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCmluZGV4IDJhMDhhZDZiNWNkMzljODc5NWNh
ZjdkMTExOWM5NDQ3YzdkNzkzNDEuLmVlZDZlMGI1NDk5MTI4MzM4NjQ4Nzc1YzVmZTRiYTZlNTNk
ZTg5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRhYmxlTGF5
b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5j
cHAKQEAgLTg4LDggKzg4LDYgQEAgaW50IEZpeGVkVGFibGVMYXlvdXQ6OmNhbGNXaWR0aEFycmF5
KGludCkKIAogICAgIHVuc2lnbmVkIGN1cnJlbnRFZmZlY3RpdmVDb2x1bW4gPSAwOwogICAgIGZv
ciAoUmVuZGVyVGFibGVDb2wqIGNvbCA9IG1fdGFibGUtPmZpcnN0Q29sdW1uKCk7IGNvbDsgY29s
ID0gY29sLT5uZXh0Q29sdW1uKCkpIHsKLSAgICAgICAgY29sLT5jb21wdXRlUHJlZmVycmVkTG9n
aWNhbFdpZHRocygpOwotCiAgICAgICAgIC8vIFdpZHRoIHNwZWNpZmllZCBieSBjb2x1bW4tZ3Jv
dXBzIHRoYXQgaGF2ZSBjb2x1bW4gY2hpbGQgZG9lcyBub3QgYWZmZWN0IGNvbHVtbiB3aWR0aCBp
biBmaXhlZCBsYXlvdXQgdGFibGVzCiAgICAgICAgIGlmIChjb2wtPmlzVGFibGVDb2x1bW5Hcm91
cFdpdGhDb2x1bW5DaGlsZHJlbigpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAppbmRleCA4ODIwZTYxNGNmMjRjNDZkYzdmMmI2
MDUxYjdhNzZmNjc5NjNlODg5Li5kNWM1OGJjOWM3MDNjZWRkMjEyZGRhYjAxZGZmYTczNWY4MWQx
N2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKQEAgLTM3OCwy
MCArMzc4LDE1IEBAIHZvaWQgUmVuZGVyVGFibGU6OmxheW91dCgpCiAKICAgICBib29sIGNvbGxh
cHNpbmcgPSBjb2xsYXBzZUJvcmRlcnMoKTsKIAotICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGls
ZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsK
LSAgICAgICAgaWYgKGNoaWxkLT5pc1RhYmxlU2VjdGlvbigpKSB7Ci0gICAgICAgICAgICBSZW5k
ZXJUYWJsZVNlY3Rpb24qIHNlY3Rpb24gPSB0b1JlbmRlclRhYmxlU2VjdGlvbihjaGlsZCk7Ci0g
ICAgICAgICAgICBpZiAobV9jb2x1bW5Mb2dpY2FsV2lkdGhDaGFuZ2VkKQotICAgICAgICAgICAg
ICAgIHNlY3Rpb24tPnNldENoaWxkTmVlZHNMYXlvdXQodHJ1ZSwgTWFya09ubHlUaGlzKTsKLSAg
ICAgICAgICAgIHNlY3Rpb24tPmxheW91dElmTmVlZGVkKCk7Ci0gICAgICAgICAgICB0b3RhbFNl
Y3Rpb25Mb2dpY2FsSGVpZ2h0ICs9IHNlY3Rpb24tPmNhbGNSb3dMb2dpY2FsSGVpZ2h0KCk7Ci0g
ICAgICAgICAgICBpZiAoY29sbGFwc2luZykKLSAgICAgICAgICAgICAgICBzZWN0aW9uLT5yZWNh
bGNPdXRlckJvcmRlcigpOwotICAgICAgICAgICAgQVNTRVJUKCFzZWN0aW9uLT5uZWVkc0xheW91
dCgpKTsKLSAgICAgICAgfSBlbHNlIGlmIChjaGlsZC0+aXNSZW5kZXJUYWJsZUNvbCgpKSB7Ci0g
ICAgICAgICAgICBjaGlsZC0+bGF5b3V0SWZOZWVkZWQoKTsKLSAgICAgICAgICAgIEFTU0VSVCgh
Y2hpbGQtPm5lZWRzTGF5b3V0KCkpOwotICAgICAgICB9CisgICAgLy8gV2UgaWdub3JlIHRhYmxl
IGNvbCAvIGNvbGdyb3VwIGluIHRoaXMgaXRlcmF0aW9uIGFzIHRoZXkgYXJlIG9ubHkgdXNlZCB0
byBzaXplIHRoZSBjZWxsJ3Mgd2lkdGhzIGR1cmluZyBhdXRvIC8gZml4ZWQgdGFibGUgbGF5b3V0
LgorICAgIGZvciAoUmVuZGVyVGFibGVTZWN0aW9uKiBzZWN0aW9uID0gdG9wU2VjdGlvbigpOyBz
ZWN0aW9uOyBzZWN0aW9uID0gc2VjdGlvbkJlbG93KHNlY3Rpb24pKSB7CisgICAgICAgIGlmICht
X2NvbHVtbkxvZ2ljYWxXaWR0aENoYW5nZWQpCisgICAgICAgICAgICBzZWN0aW9uLT5zZXRDaGls
ZE5lZWRzTGF5b3V0KHRydWUsIE1hcmtPbmx5VGhpcyk7CisgICAgICAgIHNlY3Rpb24tPmxheW91
dElmTmVlZGVkKCk7CisgICAgICAgIHRvdGFsU2VjdGlvbkxvZ2ljYWxIZWlnaHQgKz0gc2VjdGlv
bi0+Y2FsY1Jvd0xvZ2ljYWxIZWlnaHQoKTsKKyAgICAgICAgaWYgKGNvbGxhcHNpbmcpCisgICAg
ICAgICAgICBzZWN0aW9uLT5yZWNhbGNPdXRlckJvcmRlcigpOworICAgICAgICBBU1NFUlQoIXNl
Y3Rpb24tPm5lZWRzTGF5b3V0KCkpOwogICAgIH0KIAogICAgIC8vIElmIGFueSB0YWJsZSBzZWN0
aW9uIG1vdmVkIHZlcnRpY2FsbHksIHdlIHdpbGwganVzdCByZXBhaW50IGV2ZXJ5dGhpbmcgZnJv
bSB0aGF0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
b2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcAppbmRl
eCA3YWE4MzQxYTdlMjJkZDYwOTRhMmJkYzMyMzE3ZWEzYjRmMjdlYTNhLi5kOTUxNjQ3ODliMTEy
Y2QxOTM1OWVjOWExMDc2YmZhNDYyMjVjY2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZUNvbC5jcHAKQEAgLTQ5LDYgKzQ5LDkgQEAgdm9pZCBSZW5kZXJUYWJsZUNv
bDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxl
KiBvbGQKIHsKICAgICBSZW5kZXJCb3g6OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlKTsK
IAorICAgIGlmIChkaWZmID09IFN0eWxlRGlmZmVyZW5jZUxheW91dCkKKyAgICAgICAgcHJvcGFn
YXRlTGF5b3V0Q3VlVG9UYWJsZSgpOworCiAgICAgLy8gSWYgYm9yZGVyIHdhcyBjaGFuZ2VkLCBu
b3RpZnkgdGFibGUuCiAgICAgaWYgKHBhcmVudCgpKSB7CiAgICAgICAgIFJlbmRlclRhYmxlKiB0
YWJsZSA9IHRoaXMtPnRhYmxlKCk7CkBAIC02Niw4ICs2OSw5IEBAIHZvaWQgUmVuZGVyVGFibGVD
b2w6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICAgICAgbV9zcGFuID0gdGMtPnNwYW4oKTsKICAg
ICB9IGVsc2UKICAgICAgICAgbV9zcGFuID0gIShzdHlsZSgpICYmIHN0eWxlKCktPmRpc3BsYXko
KSA9PSBUQUJMRV9DT0xVTU5fR1JPVVApOwotICAgIGlmIChtX3NwYW4gIT0gb2xkU3BhbiAmJiBz
dHlsZSgpICYmIHBhcmVudCgpKQotICAgICAgICBzZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNS
ZWNhbGMoKTsKKworICAgIGlmIChtX3NwYW4gIT0gb2xkU3BhbiAmJiBzdHlsZSgpKQorICAgICAg
ICBwcm9wYWdhdGVMYXlvdXRDdWVUb1RhYmxlKCk7CiB9CiAKIHZvaWQgUmVuZGVyVGFibGVDb2w6
OndpbGxCZVJlbW92ZWRGcm9tVHJlZSgpCkBAIC0xMTQsMTAgKzExOCwyNiBAQCB2b2lkIFJlbmRl
clRhYmxlQ29sOjppbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KikK
IAogdm9pZCBSZW5kZXJUYWJsZUNvbDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQog
ewotICAgIHNldFByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eShmYWxzZSk7CisgICAgLy8gPGNv
bD4gYW5kIDxjb2xncm91cD4gZG9uJ3QgaGF2ZSBwcmVmZXJyZWQgbG9naWNhbCB3aWR0aHMgYXMg
dGhleSBoYXZlCisgICAgLy8gbm8gY29udGVudCBzbyBjb21wdXRpbmcgb3VyIHByZWZlcnJlZCBs
b2dpY2FsIHdpZHRocyBpcyB3YXN0ZWZ1bC4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
Kwordm9pZCBSZW5kZXJUYWJsZUNvbDo6bGF5b3V0KCkKK3sKKyAgICAvLyBUaGVyZSBpcyBubyBu
ZWVkIHRvIGxheW91dCB0YWJsZSA8Y29sPiBvciA8Y29sZ3JvdXA+IGFzIHRoZXkgaGF2ZSBubyBj
b250ZW50LgorICAgIC8vIFdlIGNhbm5vdCBBU1NFUlRfTk9UX1JFQUNIRUQgaGVyZSBhcyBzaW1w
bGlmaWVkIG5vcm1hbCBmbG93IGxheW91dCBmb3JjZXMKKyAgICAvLyBsYXlvdXQgb24gYW55IHJl
bmRlcmVyLgorfQogCi0gICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gZmlyc3RDaGlsZCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgY2hpbGQtPnNl
dFByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eShmYWxzZSk7Cit2b2lkIFJlbmRlclRhYmxlQ29s
Ojpwcm9wYWdhdGVMYXlvdXRDdWVUb1RhYmxlKCkgY29uc3QKK3sKKyAgICAvLyBGb3J3YXJkIGFu
eSBsYXlvdXQgaGludCB0byB0aGUgdGFibGU6IHRoaXMgaXMgcmVxdWlyZWQgYXMgdGhlIHRhYmxl
IGlzCisgICAgLy8gdGhlIG9uZSB0byBsYXlvdXQgLyBjb21wdXRlIHByZWZlcnJlZCBsb2dpY2Fs
IHdpZHRocyBvbiBhbGwgdGhlIGNlbGxzLgorICAgIGlmIChSZW5kZXJUYWJsZSogdGFibGUgPSB0
aGlzLT50YWJsZSgpKSB7CisgICAgICAgIHRhYmxlLT5zZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUp
OworICAgICAgICB0YWJsZS0+c2V0UHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KHRydWUpOwor
ICAgIH0KIH0KIAogUmVuZGVyVGFibGUqIFJlbmRlclRhYmxlQ29sOjp0YWJsZSgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCmluZGV4IDFhOWZhYzZlYzIz
ZDZmMGM1YzcxMDVkYmZjMTE0MzFlOGRhODI0YTUuLjFlOGU4MDI1N2E1YWQ0ZDUyN2UyOGNhOWQz
ZWRjMjIwYjg0NjU3NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZUNvbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNv
bC5oCkBAIC00MCw4ICs0MCw2IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZW5kZXJPYmplY3RDaGls
ZExpc3QqIGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KICAgICBSZW5k
ZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpOwotCiAgICAg
dW5zaWduZWQgc3BhbigpIGNvbnN0IHsgcmV0dXJuIG1fc3BhbjsgfQogICAgIHZvaWQgc2V0U3Bh
bih1bnNpZ25lZCBzcGFuKSB7IG1fc3BhbiA9IHNwYW47IH0KIApAQCAtNzcsNiArNzUsOSBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiB2aXJ0dWFsQ2hpbGRy
ZW4oKSB7IHJldHVybiBjaGlsZHJlbigpOyB9CiAgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmpl
Y3RDaGlsZExpc3QqIHZpcnR1YWxDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGNoaWxkcmVuKCk7
IH0KIAorICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERTsKKwogICAgIHZpcnR1
YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJUYWJsZUNv
bCI7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJUYWJsZUNvbCgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsK
QEAgLTkyLDYgKzkzLDggQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENo
YW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7CiAKKyAg
ICB2b2lkIHByb3BhZ2F0ZUxheW91dEN1ZVRvVGFibGUoKSBjb25zdDsKKwogICAgIFJlbmRlclRh
YmxlKiB0YWJsZSgpIGNvbnN0OwogCiAgICAgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0IG1fY2hpbGRy
ZW47CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggZDY4Y2YwMWYxMTQwNTg2OGI0YTAwYmVlZjJjYmE5ZTI5ZDg0ZmJkYi4uMjQ3
ODk1MjkwZDI0YTgyZjNlZjBkY2QyZGJjZjA0ZTRiNDk5MmZhOCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDEyLTEwLTI2ICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJlbmRlclRhYmxlQ29sOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRo
cyBhbmQgUmVuZGVyVGFibGVDb2w6OmxheW91dCBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTg2MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCisKKyAgICAgICAgQWRkZWQgMiB0ZXN0czoKKyAg
ICAgICAgLSAxIHRvIGNvdmVyIHRoZSBjb2RlIGluIFJlbmRlclRhYmxlQ29sOjp1cGRhdGVGcm9t
RWxlbWVudC4KKyAgICAgICAgLSAxIHRvIGNvdmVyIHNpbXBsaWZpZWQgbGF5b3V0IG9uIGEgdGFi
bGUuCisKKyAgICAgICAgKiBmYXN0L3RhYmxlL2NvbC1zcGFuLWNoYW5nZS1yZWxheW91dC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGFibGUvY29sLXNwYW4tY2hhbmdlLXJl
bGF5b3V0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGFibGUvc2ltcGxpZmllZC1sYXlv
dXQtdGFibGUtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90YWJsZS9zaW1w
bGlmaWVkLWxheW91dC10YWJsZS5odG1sOiBBZGRlZC4KKwogMjAxMi0xMC0yNiAgS2VudCBUYW11
cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBUZXN0IGV4cGVj
dGF0aW9uIHVwZGF0ZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGFibGUvY29sLXNw
YW4tY2hhbmdlLXJlbGF5b3V0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvdGFibGUv
Y29sLXNwYW4tY2hhbmdlLXJlbGF5b3V0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDNkZjdk
ZTdiOWZkZDFjYzU0MWZhMTlhMGNjOTYyMTJjYTNmMjJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC90YWJsZS9jb2wtc3Bhbi1jaGFuZ2UtcmVsYXlvdXQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNyBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGR5bmFtaWNhbGx5IGNoYW5n
aW5nIGEgY29sdW1uJ3MgJ3NwYW4nIHByb3Blcmx5IHJlY29tcHV0ZSB0aGUgY2VsbCdzIHdpZHRo
cy4KKworVGhlIHRhYmxlIGJlbG93IHNocmluayB0byAyMDBweCBhZnRlciBjaGFuZ2luZyB0aGUg
Y29sdW1uJ3Mgc3Bhbi4KKworUEFTUworUEFTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3RhYmxlL2NvbC1zcGFuLWNoYW5nZS1yZWxheW91dC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC90YWJsZS9jb2wtc3Bhbi1jaGFuZ2UtcmVsYXlvdXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NWY2OTI2
MDc3OGVkNzI4NzUzMzRkZDI2MzVkZWU5NzU1MGZhYTEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC90YWJsZS9jb2wtc3Bhbi1jaGFuZ2UtcmVsYXlvdXQuaHRtbApAQCAtMCww
ICsxLDU4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2NoZWNrLWxheW91dC5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIHRhYmxlCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKKyAgICAgICAgICAgICAgICB0YWJs
ZS1sYXlvdXQ6IGZpeGVkOworICAgICAgICAgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHRkCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYmFj
a2dyb3VuZDogZ3JlZW47CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAxZW07CisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGxvZyhtc2cpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29s
ZScpOworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUobXNnKSk7CisgICAgICAgICAgICAgICAgY29uc29sZS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdicicpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ZnVuY3Rpb24gY2hhbmdlQ29sU3BhbigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhYmxlJykuc2V0QXR0cmlidXRlKCdkYXRhLWV4cGVj
dGVkLXdpZHRoJywgMzAwKTsKKyAgICAgICAgICAgICAgICBjaGVja0xheW91dCgndGFibGUnKTsK
KworICAgICAgICAgICAgICAgIHZhciBjb2wgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29s
dW1uJyk7CisgICAgICAgICAgICAgICAgY29sLnNldEF0dHJpYnV0ZSgic3BhbiIsICIxIik7Cisg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhYmxlJykuc2V0QXR0cmli
dXRlKCdkYXRhLWV4cGVjdGVkLXdpZHRoJywgMjAwKTsKKyAgICAgICAgICAgICAgICBjaGVja0xh
eW91dCgndGFibGUnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9o
ZWFkPgorICAgIDxib2R5IG9ubG9hZD0iY2hhbmdlQ29sU3BhbigpOyI+CisgICAgICAgIDxwPlRo
aXMgdGVzdCBjaGVja3MgdGhhdCBkeW5hbWljYWxseSBjaGFuZ2luZyBhIGNvbHVtbidzICdzcGFu
JyBwcm9wZXJseSByZWNvbXB1dGUgdGhlIGNlbGwncyB3aWR0aHMuPC9wPgorICAgICAgICA8cD5U
aGUgdGFibGUgYmVsb3cgc2hyaW5rIHRvIDIwMHB4IGFmdGVyIGNoYW5naW5nIHRoZSBjb2x1bW4n
cyBzcGFuLjwvcD4KKyAgICAgICAgPHRhYmxlIGlkPSJ0YWJsZSI+CisgICAgICAgICAgICA8Y29s
Z3JvdXA+CisgICAgICAgICAgICAgICAgPGNvbCBzcGFuPSIyIiBpZD0iY29sdW1uIiBzdHlsZT0i
d2lkdGg6IDEwMHB4Ij48L2NvbD4KKyAgICAgICAgICAgICAgICA8Y29sIHN0eWxlPSJ3aWR0aDog
MTAwcHg7Ij48L2NvbD4KKyAgICAgICAgICAgIDwvY29sZ3JvdXA+CisgICAgICAgICAgICA8dHI+
CisgICAgICAgICAgICAgICAgPHRkIGlkPSJjZWxsIj48L3RkPgorICAgICAgICAgICAgICAgIDx0
ZD48L3RkPgorICAgICAgICAgICAgICAgIDx0ZD48L3RkPgorICAgICAgICAgICA8L3RyPgorICAg
ICAgICA8L3RhYmxlPgorICAgICAgICA8cCBpZD0iY29uc29sZSI+PC9wPgorICAgIDwvYm9keT4K
KzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90YWJsZS9zaW1wbGlmaWVk
LWxheW91dC10YWJsZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90YWJsZS9zaW1w
bGlmaWVkLWxheW91dC10YWJsZS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiZmVhZGQzMjU1
ODdhNmQwNmE3NmYyNTZlMDMxZTc1NjIzZWI2YjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3RhYmxlL3NpbXBsaWZpZWQtbGF5b3V0LXRhYmxlLWV4cGVjdGVkLmh0bWwKQEAg
LTAsMCArMSwxOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgor
ZGl2IHsKKyAgICBoZWlnaHQ6IDEwMHB4OworICAgIHdpZHRoOiAxMDBweDsKKyAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiBncmVlbjsKKyAgICBvcGFjaXR5OiAwLjg7CisgICAgcGFkZGluZzogMHB4Owor
ICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoNTBweCwgNTBweCk7Cit9Cis8L3N0eWxl
PgorPC9oZWFkPgorPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk5ODYxIj45OTg2MTwvYT46UmVuZGVyVGFibGVDb2w6OmNvbXB1dGVQ
cmVmZXJyZWRMb2dpY2FsV2lkdGhzIGFuZCBSZW5kZXJUYWJsZUNvbDo6bGF5b3V0IHNob3VsZCBu
ZXZlciBiZSBjYWxsZWQuPC9wPgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHNpbXBsaWZpZWQg
bGF5b3V0IHdvcmtzIG9uIGEgdGFibGUgd2l0aCBhICZsdDtjb2wmZ3Q7LjwvcD4KKzxkaXY+PC9k
aXY+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RhYmxlL3NpbXBsaWZp
ZWQtbGF5b3V0LXRhYmxlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RhYmxlL3NpbXBsaWZpZWQt
bGF5b3V0LXRhYmxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQ3ODkyNmY3YzY0YTRhZDc5ZmE4ZTBmN2Iy
YTYyMzQ2MDJjMjk5OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGFibGUv
c2ltcGxpZmllZC1sYXlvdXQtdGFibGUuaHRtbApAQCAtMCwwICsxLDQwIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+Cit0YWJsZSB7CisgICAgYm9yZGVyLXNwYWNp
bmc6IDBweDsKK30KK2NvbCB7CisgICAgd2lkdGg6IDEwMHB4OworfQordGQgeworICAgIGhlaWdo
dDogMTAwcHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgb3BhY2l0eTogMC44
OworICAgIHBhZGRpbmc6IDBweDsKK30KK3RkLnRyYW5zZm9ybWVkIHsKKyAgICAtd2Via2l0LXRy
YW5zZm9ybTogdHJhbnNsYXRlKDUwcHgsIDUwcHgpOworfQorPC9zdHlsZT4KKzxzY3JpcHQ+Citm
dW5jdGlvbiBzaW1wbGlmaWVkTGF5b3V0KCkKK3sKKyAgICB2YXIgY2VsbCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpWzBdOworICAgIC8vIEZvcmNlIGxheW91dC4KKyAgICBj
ZWxsLm9mZnNldFRvcDsKKyAgICBjZWxsLmNsYXNzTGlzdC5hZGQoInRyYW5zZm9ybWVkIik7Cit9
Cit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHNpbXBsaWZpZWRMYXlvdXQpOworPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8cD5UZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk4NjEiPjk5ODYxPC9hPjpSZW5kZXJUYWJsZUNvbDo6Y29t
cHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMgYW5kIFJlbmRlclRhYmxlQ29sOjpsYXlvdXQgc2hv
dWxkIG5ldmVyIGJlIGNhbGxlZC48L3A+Cis8cD5UaGlzIHRlc3QgY2hlY2tzIHRoYXQgc2ltcGxp
ZmllZCBsYXlvdXQgd29ya3Mgb24gYSB0YWJsZSB3aXRoIGEgJmx0O2NvbCZndDsuPC9wPgorPHRh
YmxlPgorICAgIDxjb2w+PC9jb2w+CisgICAgPHRib2R5PgorICAgICAgICA8dHI+PHRkPjwvdGQ+
PC90cj4KKyAgICA8L3Rib2R5PgorPC90YWJsZT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171677</attachid>
            <date>2012-10-31 10:08:47 -0700</date>
            <delta_ts>2013-01-22 18:02:38 -0800</delta_ts>
            <desc>Updated patch: Removed the layout() change as we need to clear up the review flag or trip on some ASSERT.</desc>
            <filename>bug-99861-20121031100710.patch</filename>
            <type>text/plain</type>
            <size>21481</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyOTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTI0MDgyMzUxYjYyYmM3
MTNmZTA0MjY4ODI1YTViZmNlYmE0MGNjMi4uNjZhYTFjM2FjODE3ODdiM2RmMzMyYjcyZTJkYjA3
NjEwM2VlOGJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTEwLTMxICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbmRlclRh
YmxlQ29sOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyBzaG91bGQgbmV2ZXIgYmUgY2Fs
bGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTg2
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCisKKyAgICAgICAgUmVuZGVyVGFi
bGVDb2wncyBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyBvbmx5IHB1cnBvc2Ugd2FzIHRv
IGNsZWFyIHRoZSBwcmVmZXJyZWQgbG9naWNhbCB3aWR0aHMKKyAgICAgICAgZGlydHkgZmxhZyBz
byB0aGF0IHdlIHdvdWxkIHByb3Blcmx5IHByb3BhZ2F0ZSB0aGUgaW5mb3JtYXRpb24gdG8gb3Vy
IGNvbnRhaW5pbmcgdGFibGUuIFRoaXMgbGVkIHRvCisgICAgICAgIGNsdW5reSBjb2RlIHdoZXJl
IHRoZSB0YWJsZSBsYXlvdXQgY29kZSBoYWQgdG8gZm9yY2VmdWxseSBjYWxsIFJlbmRlclRhYmxl
Q29sOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocworICAgICAgICBvciBlbHNlIHdlIHdv
dWxkIGlnbm9yZSB0aGUgbmV4dCBsYXlvdXQgaGludCBvbiB0aGUgPGNvbD4gb3IgPGNvbGdyb3Vw
Pi4KKworICAgICAgICBUZXN0czogZmFzdC90YWJsZS9jb2wtc3Bhbi1jaGFuZ2UtcmVsYXlvdXQu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC90YWJsZS9zaW1wbGlmaWVkLWxheW91dC10YWJsZS5o
dG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1dG9UYWJsZUxheW91dDo6cmVjYWxjQ29sdW1uKToKKyAgICAgICAgU2ltcGxp
ZmllZCB0aGUgY29kZSBub3cgdGhhdCB3ZSBvbmx5IG5lZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBz
ZWN0aW9ucy4KKworICAgICAgICAqIHJlbmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZpeGVkVGFibGVMYXlvdXQ6OmNhbGNXaWR0aEFycmF5KToKKyAgICAg
ICAgUmVtb3ZlZCB0aGUgY2FsbCB0byBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocy4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUYWJsZUNvbDo6c3R5bGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGFibGVDb2w6OnVwZGF0ZUZyb21FbGVtZW50KToKKyAgICAgICAgRm9yd2FyZCBhIGxheW91
dCBoaW50IHRvIHRoZSB0YWJsZSBzbyB0aGF0IHdlIHByb3Blcmx5IHJlY29tcHV0ZSB0aGUgY2Vs
bCdzIGxvZ2ljYWwgd2l0aHMuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ29sOjpj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgIENoYW5nZWQgb3VyIGltcGxl
bWVudGF0aW9ucyBvZiB0aGF0IGZ1bmN0aW9uIHRvIGJlIGEgbm8tb3AsIHdoaWxlIGVuZm9yY2lu
ZyB0aGF0IGl0IGlzCisgICAgICAgIG5ldmVyIGNhbGxlZC4KKworICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGFibGVDb2w6OnByb3BhZ2F0ZUxheW91dEN1ZVRvVGFibGUpOgorICAgICAgICBOZXcg
aGVscGVyIGZ1bmN0aW9uIHRoYXQgZm9yd2FyZCBhbnkgbGF5b3V0IGN1ZSB0byB0aGUgY29udGFp
bmluZyB0YWJsZSwgdGhpcyB3b3JrcyBhcm91bmQgdXMgbm90IGNsZWFyaW5nIHRoZQorICAgICAg
ICBwcmVmZXJyZWQgbG9naWNhbCB3aWR0aHMgZGlydHlmbGFnIHdoaWNoIGNvbmZ1c2VzIFJlbmRl
ck9iamVjdDo6aW52YWxpZGF0ZUNvbnRhaW5lclByZWZlcnJlZExvZ2ljYWxXaWR0aHMuCisKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaDoKKyAgICAgICAgTWFkZSB0aGUgZnVu
Y3Rpb24gdGhhdCB3ZSBhcmUgbm90IGV4cGVjdGVkIHRvIGJlIGNhbGxlZCBwcml2YXRlLgorCiAy
MDEyLTEwLTMxICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIGF0dGVtcHQgdG8gZml4IHRoZSByZWxlYXNlIGJ1aWxkIGJ5IG5vdCBl
eHBvcnRpbmcgc3ltYm9scyB0aGF0IGFyZW4ndCBkZWZpbmVkIHRoZXJlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcAppbmRleCAwOGVjZmY5MGUwZDJlMTlj
MDEwNzU4NTYyNmYxNmE2MWU4ODI1OTJjLi5mYjQzNmNhNTU1OTA1NTRiYThhZmFjZTI0ZDAxZmIw
MzBiMGUzMDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxl
TGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0
LmNwcApAQCAtNDksODEgKzQ5LDc3IEBAIHZvaWQgQXV0b1RhYmxlTGF5b3V0OjpyZWNhbGNDb2x1
bW4odW5zaWduZWQgZWZmQ29sKQogICAgIFJlbmRlclRhYmxlQ2VsbCogZml4ZWRDb250cmlidXRv
ciA9IDA7CiAgICAgUmVuZGVyVGFibGVDZWxsKiBtYXhDb250cmlidXRvciA9IDA7CiAKLSAgICBm
b3IgKFJlbmRlck9iamVjdCogY2hpbGQgPSBtX3RhYmxlLT5jaGlsZHJlbigpLT5maXJzdENoaWxk
KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChj
aGlsZC0+aXNSZW5kZXJUYWJsZUNvbCgpKQotICAgICAgICAgICAgdG9SZW5kZXJUYWJsZUNvbChj
aGlsZCktPmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCk7Ci0gICAgICAgIGVsc2UgaWYg
KGNoaWxkLT5pc1RhYmxlU2VjdGlvbigpKSB7Ci0gICAgICAgICAgICBSZW5kZXJUYWJsZVNlY3Rp
b24qIHNlY3Rpb24gPSB0b1JlbmRlclRhYmxlU2VjdGlvbihjaGlsZCk7Ci0gICAgICAgICAgICB1
bnNpZ25lZCBudW1Sb3dzID0gc2VjdGlvbi0+bnVtUm93cygpOwotICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG51bVJvd3M7IGkrKykgewotICAgICAgICAgICAgICAgIFJlbmRl
clRhYmxlU2VjdGlvbjo6Q2VsbFN0cnVjdCBjdXJyZW50ID0gc2VjdGlvbi0+Y2VsbEF0KGksIGVm
ZkNvbCk7Ci0gICAgICAgICAgICAgICAgUmVuZGVyVGFibGVDZWxsKiBjZWxsID0gY3VycmVudC5w
cmltYXJ5Q2VsbCgpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChjdXJy
ZW50LmluQ29sU3BhbiB8fCAhY2VsbCkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgICAgICAgICBib29sIGNlbGxIYXNDb250ZW50ID0gY2VsbC0+Y2hpbGRyZW4oKS0+
Zmlyc3RDaGlsZCgpIHx8IGNlbGwtPnN0eWxlKCktPmhhc0JvcmRlcigpIHx8IGNlbGwtPnN0eWxl
KCktPmhhc1BhZGRpbmcoKTsKLSAgICAgICAgICAgICAgICBpZiAoY2VsbEhhc0NvbnRlbnQpCi0g
ICAgICAgICAgICAgICAgICAgIGNvbHVtbkxheW91dC5lbXB0eUNlbGxzT25seSA9IGZhbHNlOwot
Ci0gICAgICAgICAgICAgICAgLy8gQSBjZWxsIG9yaWdpbmF0ZXMgaW4gdGhpcyBjb2x1bW4uIEVu
c3VyZSB3ZSBoYXZlCi0gICAgICAgICAgICAgICAgLy8gYSBtaW4vbWF4IHdpZHRoIG9mIGF0IGxl
YXN0IDFweCBmb3IgdGhpcyBjb2x1bW4gbm93LgotICAgICAgICAgICAgICAgIGNvbHVtbkxheW91
dC5taW5Mb2dpY2FsV2lkdGggPSBtYXg8aW50Pihjb2x1bW5MYXlvdXQubWluTG9naWNhbFdpZHRo
LCBjZWxsSGFzQ29udGVudCA/IDEgOiAwKTsKLSAgICAgICAgICAgICAgICBjb2x1bW5MYXlvdXQu
bWF4TG9naWNhbFdpZHRoID0gbWF4PGludD4oY29sdW1uTGF5b3V0Lm1heExvZ2ljYWxXaWR0aCwg
MSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoY2VsbC0+Y29sU3BhbigpID09IDEpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGNlbGwtPnByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eSgpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC0+Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0
aHMoKTsKLSAgICAgICAgICAgICAgICAgICAgY29sdW1uTGF5b3V0Lm1pbkxvZ2ljYWxXaWR0aCA9
IG1heDxpbnQ+KGNlbGwtPm1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpLCBjb2x1bW5MYXlvdXQu
bWluTG9naWNhbFdpZHRoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGwtPm1heFByZWZl
cnJlZExvZ2ljYWxXaWR0aCgpID4gY29sdW1uTGF5b3V0Lm1heExvZ2ljYWxXaWR0aCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgY29sdW1uTGF5b3V0Lm1heExvZ2ljYWxXaWR0aCA9IGNlbGwt
Pm1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgbWF4
Q29udHJpYnV0b3IgPSBjZWxsOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgZm9yIChSZW5k
ZXJUYWJsZVNlY3Rpb24qIHNlY3Rpb24gPSBtX3RhYmxlLT50b3BOb25FbXB0eVNlY3Rpb24oKTsg
c2VjdGlvbjsgc2VjdGlvbiA9IG1fdGFibGUtPnNlY3Rpb25CZWxvdyhzZWN0aW9uLCBTa2lwRW1w
dHlTZWN0aW9ucykpIHsKKyAgICAgICAgdW5zaWduZWQgbnVtUm93cyA9IHNlY3Rpb24tPm51bVJv
d3MoKTsKKyAgICAgICAgQVNTRVJUKG51bVJvd3MpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtUm93czsgaSsrKSB7CisgICAgICAgICAgICBSZW5kZXJUYWJsZVNlY3Rpb246
OkNlbGxTdHJ1Y3QgY3VycmVudCA9IHNlY3Rpb24tPmNlbGxBdChpLCBlZmZDb2wpOworICAgICAg
ICAgICAgUmVuZGVyVGFibGVDZWxsKiBjZWxsID0gY3VycmVudC5wcmltYXJ5Q2VsbCgpOworCisg
ICAgICAgICAgICBpZiAoY3VycmVudC5pbkNvbFNwYW4gfHwgIWNlbGwpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICAgICAgLy8gQWxsIGJyb3dzZXJzIGltcGxl
bWVudCBhIHNpemUgbGltaXQgb24gdGhlIGNlbGwncyBtYXggd2lkdGguIAotICAgICAgICAgICAg
ICAgICAgICAvLyBPdXIgbGltaXQgaXMgYmFzZWQgb24gS0hUTUwncyByZXByZXNlbnRhdGlvbiB0
aGF0IHVzZWQgMTYgYml0cyB3aWR0aHMuCi0gICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBP
dGhlciBicm93c2VycyBoYXZlIGEgbG93ZXIgbGltaXQgZm9yIHRoZSBjZWxsJ3MgbWF4IHdpZHRo
LiAKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGNDZWxsTWF4V2lkdGggPSAzMjc2MDsK
LSAgICAgICAgICAgICAgICAgICAgTGVuZ3RoIGNlbGxMb2dpY2FsV2lkdGggPSBjZWxsLT5zdHls
ZU9yQ29sTG9naWNhbFdpZHRoKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjZWxsTG9naWNh
bFdpZHRoLnZhbHVlKCkgPiBjQ2VsbE1heFdpZHRoKQotICAgICAgICAgICAgICAgICAgICAgICAg
Y2VsbExvZ2ljYWxXaWR0aC5zZXRWYWx1ZShjQ2VsbE1heFdpZHRoKTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGNlbGxMb2dpY2FsV2lkdGguaXNOZWdhdGl2ZSgpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgY2VsbExvZ2ljYWxXaWR0aC5zZXRWYWx1ZSgwKTsKLSAgICAgICAgICAgICAgICAg
ICAgc3dpdGNoIChjZWxsTG9naWNhbFdpZHRoLnR5cGUoKSkgewotICAgICAgICAgICAgICAgICAg
ICBjYXNlIEZpeGVkOgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlIHdpZHRoPTAK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjZWxsTG9naWNhbFdpZHRoLmlzUG9zaXRpdmUo
KSAmJiAhY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC5pc1BlcmNlbnQoKSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgbG9naWNhbFdpZHRoID0gY2VsbC0+YWRqdXN0
Qm9yZGVyQm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKGNlbGxMb2dpY2FsV2lkdGgudmFsdWUo
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHVtbkxheW91dC5sb2dpY2Fs
V2lkdGguaXNGaXhlZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5h
di9JRSB3ZWlyZG5lc3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChsb2dp
Y2FsV2lkdGggPiBjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLnZhbHVlKCkpIAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRo
LnZhbHVlKCkgPT0gbG9naWNhbFdpZHRoKSAmJiAobWF4Q29udHJpYnV0b3IgPT0gY2VsbCkpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5MYXlvdXQubG9naWNh
bFdpZHRoLnNldFZhbHVlKEZpeGVkLCBsb2dpY2FsV2lkdGgpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZml4ZWRDb250cmlidXRvciA9IGNlbGw7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgYm9vbCBjZWxsSGFzQ29udGVudCA9IGNlbGwtPmNoaWxkcmVuKCktPmZp
cnN0Q2hpbGQoKSB8fCBjZWxsLT5zdHlsZSgpLT5oYXNCb3JkZXIoKSB8fCBjZWxsLT5zdHlsZSgp
LT5oYXNQYWRkaW5nKCk7CisgICAgICAgICAgICBpZiAoY2VsbEhhc0NvbnRlbnQpCisgICAgICAg
ICAgICAgICAgY29sdW1uTGF5b3V0LmVtcHR5Q2VsbHNPbmx5ID0gZmFsc2U7CisKKyAgICAgICAg
ICAgIC8vIEEgY2VsbCBvcmlnaW5hdGVzIGluIHRoaXMgY29sdW1uLiBFbnN1cmUgd2UgaGF2ZQor
ICAgICAgICAgICAgLy8gYSBtaW4vbWF4IHdpZHRoIG9mIGF0IGxlYXN0IDFweCBmb3IgdGhpcyBj
b2x1bW4gbm93LgorICAgICAgICAgICAgY29sdW1uTGF5b3V0Lm1pbkxvZ2ljYWxXaWR0aCA9IG1h
eDxpbnQ+KGNvbHVtbkxheW91dC5taW5Mb2dpY2FsV2lkdGgsIGNlbGxIYXNDb250ZW50ID8gMSA6
IDApOworICAgICAgICAgICAgY29sdW1uTGF5b3V0Lm1heExvZ2ljYWxXaWR0aCA9IG1heDxpbnQ+
KGNvbHVtbkxheW91dC5tYXhMb2dpY2FsV2lkdGgsIDEpOworCisgICAgICAgICAgICBpZiAoY2Vs
bC0+Y29sU3BhbigpID09IDEpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2VsbC0+cHJlZmVycmVk
TG9naWNhbFdpZHRoc0RpcnR5KCkpCisgICAgICAgICAgICAgICAgICAgIGNlbGwtPmNvbXB1dGVQ
cmVmZXJyZWRMb2dpY2FsV2lkdGhzKCk7CisgICAgICAgICAgICAgICAgY29sdW1uTGF5b3V0Lm1p
bkxvZ2ljYWxXaWR0aCA9IG1heDxpbnQ+KGNlbGwtPm1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgp
LCBjb2x1bW5MYXlvdXQubWluTG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgICAgICBpZiAoY2Vs
bC0+bWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCkgPiBjb2x1bW5MYXlvdXQubWF4TG9naWNhbFdp
ZHRoKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbHVtbkxheW91dC5tYXhMb2dpY2FsV2lkdGgg
PSBjZWxsLT5tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKTsKKyAgICAgICAgICAgICAgICAgICAg
bWF4Q29udHJpYnV0b3IgPSBjZWxsOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIC8vIEFsbCBicm93c2VycyBpbXBsZW1lbnQgYSBzaXplIGxpbWl0IG9uIHRoZSBjZWxsJ3Mg
bWF4IHdpZHRoLgorICAgICAgICAgICAgICAgIC8vIE91ciBsaW1pdCBpcyBiYXNlZCBvbiBLSFRN
TCdzIHJlcHJlc2VudGF0aW9uIHRoYXQgdXNlZCAxNiBiaXRzIHdpZHRocy4KKyAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogT3RoZXIgYnJvd3NlcnMgaGF2ZSBhIGxvd2VyIGxpbWl0IGZvciB0aGUg
Y2VsbCdzIG1heCB3aWR0aC4KKyAgICAgICAgICAgICAgICBjb25zdCBpbnQgY0NlbGxNYXhXaWR0
aCA9IDMyNzYwOworICAgICAgICAgICAgICAgIExlbmd0aCBjZWxsTG9naWNhbFdpZHRoID0gY2Vs
bC0+c3R5bGVPckNvbExvZ2ljYWxXaWR0aCgpOworICAgICAgICAgICAgICAgIGlmIChjZWxsTG9n
aWNhbFdpZHRoLnZhbHVlKCkgPiBjQ2VsbE1heFdpZHRoKQorICAgICAgICAgICAgICAgICAgICBj
ZWxsTG9naWNhbFdpZHRoLnNldFZhbHVlKGNDZWxsTWF4V2lkdGgpOworICAgICAgICAgICAgICAg
IGlmIChjZWxsTG9naWNhbFdpZHRoLmlzTmVnYXRpdmUoKSkKKyAgICAgICAgICAgICAgICAgICAg
Y2VsbExvZ2ljYWxXaWR0aC5zZXRWYWx1ZSgwKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGNl
bGxMb2dpY2FsV2lkdGgudHlwZSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBGaXhlZDoKKyAg
ICAgICAgICAgICAgICAgICAgLy8gaWdub3JlIHdpZHRoPTAKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGNlbGxMb2dpY2FsV2lkdGguaXNQb3NpdGl2ZSgpICYmICFjb2x1bW5MYXlvdXQubG9naWNh
bFdpZHRoLmlzUGVyY2VudCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0
IGxvZ2ljYWxXaWR0aCA9IGNlbGwtPmFkanVzdEJvcmRlckJveExvZ2ljYWxXaWR0aEZvckJveFNp
emluZyhjZWxsTG9naWNhbFdpZHRoLnZhbHVlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGguaXNGaXhlZCgpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gTmF2L0lFIHdlaXJkbmVzcworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICgobG9naWNhbFdpZHRoID4gY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC52YWx1
ZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKGNvbHVtbkxheW91dC5s
b2dpY2FsV2lkdGgudmFsdWUoKSA9PSBsb2dpY2FsV2lkdGgpICYmIChtYXhDb250cmlidXRvciA9
PSBjZWxsKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uTGF5b3V0
LmxvZ2ljYWxXaWR0aC5zZXRWYWx1ZShGaXhlZCwgbG9naWNhbFdpZHRoKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZml4ZWRDb250cmlidXRvciA9IGNlbGw7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLnNldFZh
bHVlKEZpeGVkLCBsb2dpY2FsV2lkdGgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZp
eGVkQ29udHJpYnV0b3IgPSBjZWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgUGVyY2Vu
dDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1faGFzUGVyY2VudCA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoY2VsbExvZ2ljYWxXaWR0aC5pc1Bvc2l0aXZlKCkgJiYgKCFj
b2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLmlzUGVyY2VudCgpIHx8IGNlbGxMb2dpY2FsV2lkdGgu
dmFsdWUoKSA+IGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGgudmFsdWUoKSkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aCA9IGNlbGxMb2dpY2Fs
V2lkdGg7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSBSZWxhdGl2ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBOZWVk
IHRvIHVuZGVyc3RhbmQgdGhpcyBjYXNlIGFuZCB3aGV0aGVyIGl0IG1ha2VzIHNlbnNlIHRvIGNv
bXBhcmUgdmFsdWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgbm90IG5l
Y2Vzc2FyaWx5IG9mIHRoZSBzYW1lIHR5cGUuCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
Y2VsbExvZ2ljYWxXaWR0aC52YWx1ZSgpID4gY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC52YWx1
ZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkxheW91dC5sb2dpY2FsV2lk
dGggPSBjZWxsTG9naWNhbFdpZHRoOwotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKCFlZmZDb2wgfHwgc2VjdGlvbi0+cHJpbWFyeUNlbGxBdChp
LCBlZmZDb2wgLSAxKSAhPSBjZWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgc3Bh
bm5pbmcgY2VsbCBvcmlnaW5hdGVzIGluIHRoaXMgY29sdW1uLiBJbnNlcnQgdGhlIGNlbGwgaW50
byBzcGFubmluZyBjZWxscyBsaXN0LgotICAgICAgICAgICAgICAgICAgICBpbnNlcnRTcGFuQ2Vs
bChjZWxsKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSBQZXJjZW50OgorICAgICAgICAgICAgICAgICAgICBtX2hhc1BlcmNlbnQgPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICBpZiAoY2VsbExvZ2ljYWxXaWR0aC5pc1Bvc2l0aXZlKCkgJiYgKCFj
b2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLmlzUGVyY2VudCgpIHx8IGNlbGxMb2dpY2FsV2lkdGgu
dmFsdWUoKSA+IGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGgudmFsdWUoKSkpCisgICAgICAgICAg
ICAgICAgICAgICAgICBjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoID0gY2VsbExvZ2ljYWxXaWR0
aDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBSZWxh
dGl2ZToKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gdW5kZXJzdGFuZCB0
aGlzIGNhc2UgYW5kIHdoZXRoZXIgaXQgbWFrZXMgc2Vuc2UgdG8gY29tcGFyZSB2YWx1ZXMKKyAg
ICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIG5vdCBuZWNlc3NhcmlseSBvZiB0aGUgc2Ft
ZSB0eXBlLgorICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbExvZ2ljYWxXaWR0aC52YWx1ZSgp
ID4gY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC52YWx1ZSgpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aCA9IGNlbGxMb2dpY2FsV2lkdGg7CisgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmICghZWZmQ29sIHx8IHNlY3Rpb24tPnBy
aW1hcnlDZWxsQXQoaSwgZWZmQ29sIC0gMSkgIT0gY2VsbCkgeworICAgICAgICAgICAgICAgIC8v
IFRoaXMgc3Bhbm5pbmcgY2VsbCBvcmlnaW5hdGVzIGluIHRoaXMgY29sdW1uLiBJbnNlcnQgdGhl
IGNlbGwgaW50byBzcGFubmluZyBjZWxscyBsaXN0LgorICAgICAgICAgICAgICAgIGluc2VydFNw
YW5DZWxsKGNlbGwpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCmluZGV4IDJhMDhhZDZiNWNk
MzljODc5NWNhZjdkMTExOWM5NDQ3YzdkNzkzNDEuLmVlZDZlMGI1NDk5MTI4MzM4NjQ4Nzc1YzVm
ZTRiYTZlNTNkZTg5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaXhl
ZFRhYmxlTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJs
ZUxheW91dC5jcHAKQEAgLTg4LDggKzg4LDYgQEAgaW50IEZpeGVkVGFibGVMYXlvdXQ6OmNhbGNX
aWR0aEFycmF5KGludCkKIAogICAgIHVuc2lnbmVkIGN1cnJlbnRFZmZlY3RpdmVDb2x1bW4gPSAw
OwogICAgIGZvciAoUmVuZGVyVGFibGVDb2wqIGNvbCA9IG1fdGFibGUtPmZpcnN0Q29sdW1uKCk7
IGNvbDsgY29sID0gY29sLT5uZXh0Q29sdW1uKCkpIHsKLSAgICAgICAgY29sLT5jb21wdXRlUHJl
ZmVycmVkTG9naWNhbFdpZHRocygpOwotCiAgICAgICAgIC8vIFdpZHRoIHNwZWNpZmllZCBieSBj
b2x1bW4tZ3JvdXBzIHRoYXQgaGF2ZSBjb2x1bW4gY2hpbGQgZG9lcyBub3QgYWZmZWN0IGNvbHVt
biB3aWR0aCBpbiBmaXhlZCBsYXlvdXQgdGFibGVzCiAgICAgICAgIGlmIChjb2wtPmlzVGFibGVD
b2x1bW5Hcm91cFdpdGhDb2x1bW5DaGlsZHJlbigpKQogICAgICAgICAgICAgY29udGludWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcAppbmRleCBiMDJhYTgz
OGJmNjY0ZWYwNWY0OGE4MWRmOWE1NDM0MjFkN2U3NDIzLi5mMmJlNzAxNzE4YTZlODUxYmM3ODU5
MGY0ZGU1YzhmYzM0MGIzNTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZUNvbC5jcHAKQEAgLTQ5LDYgKzQ5LDkgQEAgdm9pZCBSZW5kZXJUYWJsZUNvbDo6c3R5bGVE
aWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGQKIHsK
ICAgICBSZW5kZXJCb3g6OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlKTsKIAorICAgIGlm
IChkaWZmID09IFN0eWxlRGlmZmVyZW5jZUxheW91dCkKKyAgICAgICAgcHJvcGFnYXRlTGF5b3V0
Q3VlVG9UYWJsZSgpOworCiAgICAgLy8gSWYgYm9yZGVyIHdhcyBjaGFuZ2VkLCBub3RpZnkgdGFi
bGUuCiAgICAgaWYgKHBhcmVudCgpKSB7CiAgICAgICAgIFJlbmRlclRhYmxlKiB0YWJsZSA9IHRo
aXMtPnRhYmxlKCk7CkBAIC02Niw4ICs2OSw5IEBAIHZvaWQgUmVuZGVyVGFibGVDb2w6OnVwZGF0
ZUZyb21FbGVtZW50KCkKICAgICAgICAgbV9zcGFuID0gdGMtPnNwYW4oKTsKICAgICB9IGVsc2UK
ICAgICAgICAgbV9zcGFuID0gIShzdHlsZSgpICYmIHN0eWxlKCktPmRpc3BsYXkoKSA9PSBUQUJM
RV9DT0xVTU5fR1JPVVApOwotICAgIGlmIChtX3NwYW4gIT0gb2xkU3BhbiAmJiBzdHlsZSgpICYm
IHBhcmVudCgpKQotICAgICAgICBzZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsK
KworICAgIGlmIChtX3NwYW4gIT0gb2xkU3BhbiAmJiBzdHlsZSgpKQorICAgICAgICBwcm9wYWdh
dGVMYXlvdXRDdWVUb1RhYmxlKCk7CiB9CiAKIHZvaWQgUmVuZGVyVGFibGVDb2w6Omluc2VydGVk
SW50b1RyZWUoKQpAQCAtMTE2LDEwICsxMjAsMTkgQEAgdm9pZCBSZW5kZXJUYWJsZUNvbDo6aW1h
Z2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCopCiAKIHZvaWQgUmVuZGVy
VGFibGVDb2w6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKIHsKLSAgICBzZXRQcmVm
ZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkoZmFsc2UpOworICAgIC8vIDxjb2w+IGFuZCA8Y29sZ3Jv
dXA+IGRvbid0IGhhdmUgcHJlZmVycmVkIGxvZ2ljYWwgd2lkdGhzIGFzIHRoZXkgaGF2ZQorICAg
IC8vIG5vIGNvbnRlbnQgc28gY29tcHV0aW5nIG91ciBwcmVmZXJyZWQgbG9naWNhbCB3aWR0aHMg
aXMgd2FzdGVmdWwuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CiAKLSAgICBmb3IgKFJl
bmRlck9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZygpKQotICAgICAgICBjaGlsZC0+c2V0UHJlZmVycmVkTG9naWNhbFdpZHRoc0Rp
cnR5KGZhbHNlKTsKK3ZvaWQgUmVuZGVyVGFibGVDb2w6OnByb3BhZ2F0ZUxheW91dEN1ZVRvVGFi
bGUoKSBjb25zdAoreworICAgIC8vIEZvcndhcmQgYW55IGxheW91dCBoaW50IHRvIHRoZSB0YWJs
ZTogdGhpcyBpcyByZXF1aXJlZCBhcyB0aGUgdGFibGUgaXMKKyAgICAvLyB0aGUgb25lIHRvIGxh
eW91dCAvIGNvbXB1dGUgcHJlZmVycmVkIGxvZ2ljYWwgd2lkdGhzIG9uIGFsbCB0aGUgY2VsbHMu
CisgICAgaWYgKFJlbmRlclRhYmxlKiB0YWJsZSA9IHRoaXMtPnRhYmxlKCkpIHsKKyAgICAgICAg
dGFibGUtPnNldENoaWxkTmVlZHNMYXlvdXQodHJ1ZSk7CisgICAgICAgIHRhYmxlLT5zZXRQcmVm
ZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkodHJ1ZSk7CisgICAgfQogfQogCiBSZW5kZXJUYWJsZSog
UmVuZGVyVGFibGVDb2w6OnRhYmxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ29sLmgKaW5kZXggMGMwOGY4MDE5MTQxNjU2Y2U4MmRiZWQ2ZGIxMDhhNmViMTRj
NTViZi4uY2U5ZWQyOGVmMmEyN2NjYzg5NjI2NmRjNTkwZjM2NGYzYWY2ZDRlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgKQEAgLTQzLDggKzQzLDYgQEAgcHVi
bGljOgogICAgIGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4oKSBjb25zdCB7
IHJldHVybiAmbV9jaGlsZHJlbjsgfQogICAgIFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRy
ZW4oKSB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQ
cmVmZXJyZWRMb2dpY2FsV2lkdGhzKCk7Ci0KICAgICB1bnNpZ25lZCBzcGFuKCkgY29uc3QgeyBy
ZXR1cm4gbV9zcGFuOyB9CiAgICAgdm9pZCBzZXRTcGFuKHVuc2lnbmVkIHNwYW4pIHsgbV9zcGFu
ID0gc3BhbjsgfQogCkBAIC04MCw2ICs3OCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBSZW5k
ZXJPYmplY3RDaGlsZExpc3QqIHZpcnR1YWxDaGlsZHJlbigpIHsgcmV0dXJuIGNoaWxkcmVuKCk7
IH0KICAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlzdCogdmlydHVhbENoaWxk
cmVuKCkgY29uc3QgeyByZXR1cm4gY2hpbGRyZW4oKTsgfQogCisgICAgdmlydHVhbCB2b2lkIGNv
bXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgT1ZFUlJJREU7CisKICAgICB2aXJ0dWFsIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyVGFibGVDb2wiOyB9
CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyVGFibGVDb2woKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCk7CkBAIC05
Niw2ICs5Niw4IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2Uo
U3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwogCisgICAgdm9p
ZCBwcm9wYWdhdGVMYXlvdXRDdWVUb1RhYmxlKCkgY29uc3Q7CisKICAgICBSZW5kZXJUYWJsZSog
dGFibGUoKSBjb25zdDsKIAogICAgIFJlbmRlck9iamVjdENoaWxkTGlzdCBtX2NoaWxkcmVuOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDJhOWU3MzhmYTgwODIxZmIxMmU4MGJmNzQ2Yzg2YTI3ZDU4MjQ3ZDMuLmJiOTZiYmMx
MDAxNGI2ODcxNzQ0MDBlNzYyY2RhZGVhODY3YmM1MjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAor
MjAxMi0xMC0zMSAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZW5kZXJUYWJsZUNvbDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMgYW5k
IFJlbmRlclRhYmxlQ29sOjpsYXlvdXQgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk4NjEKKworICAgICAgICBS
ZXZpZXdlZCBieSBPamFuIFZhZmFpLgorCisgICAgICAgIEFkZGVkIDIgdGVzdHM6CisgICAgICAg
IC0gMSB0byBjb3ZlciB0aGUgY29kZSBpbiBSZW5kZXJUYWJsZUNvbDo6dXBkYXRlRnJvbUVsZW1l
bnQuCisgICAgICAgIC0gMSB0byBjb3ZlciBzaW1wbGlmaWVkIGxheW91dCBvbiBhIHRhYmxlLgor
CisgICAgICAgICogZmFzdC90YWJsZS9jb2wtc3Bhbi1jaGFuZ2UtcmVsYXlvdXQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RhYmxlL2NvbC1zcGFuLWNoYW5nZS1yZWxheW91
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RhYmxlL3NpbXBsaWZpZWQtbGF5b3V0LXRh
YmxlLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGFibGUvc2ltcGxpZmll
ZC1sYXlvdXQtdGFibGUuaHRtbDogQWRkZWQuCisKIDIwMTItMTAtMzAgIE5pY28gV2ViZXIgIDx0
aGFraXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQWRkIGJhc2VsaW5lcyBm
b3IgZmFzdC9pbWFnZXMvZXhpZi1vcmllbnRhdGlvbi1jc3MuaHRtbCBhbmQgZXhpZi1vcmllbnRh
dGlvbi1pbWFnZS1kb2N1bWVudC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Rh
YmxlL2NvbC1zcGFuLWNoYW5nZS1yZWxheW91dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L3RhYmxlL2NvbC1zcGFuLWNoYW5nZS1yZWxheW91dC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTQzZGY3ZGU3YjlmZGQxY2M1NDFmYTE5YTBjYzk2MjEyY2EzZjIyZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGFibGUvY29sLXNwYW4tY2hhbmdlLXJlbGF5b3V0LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCBkeW5hbWlj
YWxseSBjaGFuZ2luZyBhIGNvbHVtbidzICdzcGFuJyBwcm9wZXJseSByZWNvbXB1dGUgdGhlIGNl
bGwncyB3aWR0aHMuCisKK1RoZSB0YWJsZSBiZWxvdyBzaHJpbmsgdG8gMjAwcHggYWZ0ZXIgY2hh
bmdpbmcgdGhlIGNvbHVtbidzIHNwYW4uCisKK1BBU1MKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC90YWJsZS9jb2wtc3Bhbi1jaGFuZ2UtcmVsYXlvdXQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvdGFibGUvY29sLXNwYW4tY2hhbmdlLXJlbGF5b3V0Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzVmNjkyNjA3NzhlZDcyODc1MzM0ZGQyNjM1ZGVlOTc1NTBmYWExMgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGFibGUvY29sLXNwYW4tY2hhbmdlLXJlbGF5b3V0Lmh0
bWwKQEAgLTAsMCArMSw1OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9jaGVjay1sYXlvdXQuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICB0YWJsZQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7CisgICAgICAgICAg
ICAgICAgdGFibGUtbGF5b3V0OiBmaXhlZDsKKyAgICAgICAgICAgICAgICB3aWR0aDogMjAwcHg7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0ZAorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGJhY2tncm91bmQ6IGdyZWVuOworICAgICAgICAgICAgICAgIGhlaWdodDogMWVtOwor
ICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworCisgICAgICAgICAgICBmdW5jdGlvbiBsb2cobXNnKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvbnNvbGUnKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKG1zZykpOworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnInKSk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIGNoYW5nZUNvbFNwYW4oKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YWJsZScpLnNldEF0dHJpYnV0ZSgn
ZGF0YS1leHBlY3RlZC13aWR0aCcsIDMwMCk7CisgICAgICAgICAgICAgICAgY2hlY2tMYXlvdXQo
J3RhYmxlJyk7CisKKyAgICAgICAgICAgICAgICB2YXIgY29sID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NvbHVtbicpOworICAgICAgICAgICAgICAgIGNvbC5zZXRBdHRyaWJ1dGUoInNwYW4i
LCAiMSIpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YWJsZScp
LnNldEF0dHJpYnV0ZSgnZGF0YS1leHBlY3RlZC13aWR0aCcsIDIwMCk7CisgICAgICAgICAgICAg
ICAgY2hlY2tMYXlvdXQoJ3RhYmxlJyk7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9ImNoYW5nZUNvbFNwYW4oKTsiPgorICAg
ICAgICA8cD5UaGlzIHRlc3QgY2hlY2tzIHRoYXQgZHluYW1pY2FsbHkgY2hhbmdpbmcgYSBjb2x1
bW4ncyAnc3BhbicgcHJvcGVybHkgcmVjb21wdXRlIHRoZSBjZWxsJ3Mgd2lkdGhzLjwvcD4KKyAg
ICAgICAgPHA+VGhlIHRhYmxlIGJlbG93IHNocmluayB0byAyMDBweCBhZnRlciBjaGFuZ2luZyB0
aGUgY29sdW1uJ3Mgc3Bhbi48L3A+CisgICAgICAgIDx0YWJsZSBpZD0idGFibGUiPgorICAgICAg
ICAgICAgPGNvbGdyb3VwPgorICAgICAgICAgICAgICAgIDxjb2wgc3Bhbj0iMiIgaWQ9ImNvbHVt
biIgc3R5bGU9IndpZHRoOiAxMDBweCI+PC9jb2w+CisgICAgICAgICAgICAgICAgPGNvbCBzdHls
ZT0id2lkdGg6IDEwMHB4OyI+PC9jb2w+CisgICAgICAgICAgICA8L2NvbGdyb3VwPgorICAgICAg
ICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0ZCBpZD0iY2VsbCI+PC90ZD4KKyAgICAgICAg
ICAgICAgICA8dGQ+PC90ZD4KKyAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KKyAgICAgICAgICAg
PC90cj4KKyAgICAgICAgPC90YWJsZT4KKyAgICAgICAgPHAgaWQ9ImNvbnNvbGUiPjwvcD4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGFibGUv
c2ltcGxpZmllZC1sYXlvdXQtdGFibGUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
dGFibGUvc2ltcGxpZmllZC1sYXlvdXQtdGFibGUtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
YmZlYWRkMzI1NTg3YTZkMDZhNzZmMjU2ZTAzMWU3NTYyM2ViNmI5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC90YWJsZS9zaW1wbGlmaWVkLWxheW91dC10YWJsZS1leHBlY3Rl
ZC5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzdHlsZT4KK2RpdiB7CisgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB3aWR0aDogMTAwcHg7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgb3BhY2l0eTogMC44OworICAgIHBhZGRp
bmc6IDBweDsKKyAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDUwcHgsIDUwcHgpOwor
fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTg2MSI+OTk4NjE8L2E+OlJlbmRlclRhYmxlQ29s
Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyBhbmQgUmVuZGVyVGFibGVDb2w6OmxheW91
dCBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkLjwvcD4KKzxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCBz
aW1wbGlmaWVkIGxheW91dCB3b3JrcyBvbiBhIHRhYmxlIHdpdGggYSAmbHQ7Y29sJmd0Oy48L3A+
Cis8ZGl2PjwvZGl2PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90YWJs
ZS9zaW1wbGlmaWVkLWxheW91dC10YWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90YWJsZS9z
aW1wbGlmaWVkLWxheW91dC10YWJsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkNzg5MjZmN2M2NGE0YWQ3
OWZhOGUwZjdiMmE2MjM0NjAyYzI5OTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3RhYmxlL3NpbXBsaWZpZWQtbGF5b3V0LXRhYmxlLmh0bWwKQEAgLTAsMCArMSw0MCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgordGFibGUgeworICAgIGJv
cmRlci1zcGFjaW5nOiAwcHg7Cit9Citjb2wgeworICAgIHdpZHRoOiAxMDBweDsKK30KK3RkIHsK
KyAgICBoZWlnaHQ6IDEwMHB4OworICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgIG9w
YWNpdHk6IDAuODsKKyAgICBwYWRkaW5nOiAwcHg7Cit9Cit0ZC50cmFuc2Zvcm1lZCB7CisgICAg
LXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSg1MHB4LCA1MHB4KTsKK30KKzwvc3R5bGU+Cis8
c2NyaXB0PgorZnVuY3Rpb24gc2ltcGxpZmllZExheW91dCgpCit7CisgICAgdmFyIGNlbGwgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKVswXTsKKyAgICAvLyBGb3JjZSBsYXlv
dXQuCisgICAgY2VsbC5vZmZzZXRUb3A7CisgICAgY2VsbC5jbGFzc0xpc3QuYWRkKCJ0cmFuc2Zv
cm1lZCIpOworfQord2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzaW1wbGlmaWVkTGF5
b3V0KTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5ODYxIj45OTg2MTwvYT46UmVuZGVyVGFi
bGVDb2w6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzIGFuZCBSZW5kZXJUYWJsZUNvbDo6
bGF5b3V0IHNob3VsZCBuZXZlciBiZSBjYWxsZWQuPC9wPgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0
aGF0IHNpbXBsaWZpZWQgbGF5b3V0IHdvcmtzIG9uIGEgdGFibGUgd2l0aCBhICZsdDtjb2wmZ3Q7
LjwvcD4KKzx0YWJsZT4KKyAgICA8Y29sPjwvY29sPgorICAgIDx0Ym9keT4KKyAgICAgICAgPHRy
Pjx0ZD48L3RkPjwvdHI+CisgICAgPC90Ym9keT4KKzwvdGFibGU+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>