<?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>54623</bug_id>
          
          <creation_ts>2011-02-17 00:57:47 -0800</creation_ts>
          <short_desc>RTL web content should have left-hand scrollbar.</short_desc>
          <delta_ts>2012-04-16 05:49:34 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>50910</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Moskovich">playmobil</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>aharon</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eae</cc>
    
    <cc>eric</cc>
    
    <cc>haraken</cc>
    
    <cc>hbono</cc>
    
    <cc>hyatt</cc>
    
    <cc>jamesr</cc>
    
    <cc>leviw</cc>
    
    <cc>mitz</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan</cc>
    
    <cc>playmobil</cc>
    
    <cc>progame+wk</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xji</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>352658</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2011-02-17 00:57:47 -0800</bug_when>
    <thetext>Bug to discuss placing scrollbars on the left hand side for RTL web content.

This includes overflow and select elements with a non-zero size attribute (see issue 50928)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352670</commentid>
    <comment_count>1</comment_count>
    <who name="Yair Yogev">progame+wk</who>
    <bug_when>2011-02-17 01:15:22 -0800</bug_when>
    <thetext>Is there a browser other than IE with scrollbars on the left hand side?

A scrollbar moving from side to side throughout the browsing session can be annoying... I see it as a disadvantage but I guess it&apos;s a matter of taste.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352678</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-17 01:28:53 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; A scrollbar moving from side to side throughout the browsing session can be annoying... I see it as a disadvantage but I guess it&apos;s a matter of taste.

We can use the same side per frame.  It probably doesn&apos;t make sense to change the side per block element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352680</commentid>
    <comment_count>3</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2011-02-17 01:29:37 -0800</bug_when>
    <thetext>There have been extended discussions about this - Aharon can provide the full details. I think the current thinking is to only do this for scrollbars in web content, leaving the directionality of the main window scrollbar up to the OS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374559</commentid>
    <comment_count>4</comment_count>
      <attachid>87158</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-03-28 09:52:12 -0700</bug_when>
    <thetext>Created attachment 87158
An initial change for starting technical discussion.

Greetings,

This is a change that moves the horizontal scrollbars and resizers of an RTL controls. (This change only moves the horizontal scrollbar of the RenderLayer class and it does not move the one of the RenderView class, though.) I notice this change causes layout-test failures for several tests because this change also moves the text in an RTL control right to prevent the text from being rendered on its horizontal scrollbar.
  fast/block/float/026.html -&gt; failed
  fast/block/float/028.html -&gt; failed
  fast/events/offsetX-offsetY.html -&gt; failed
  fast/overflow/overflow-rtl-vertical.html -&gt; failed
  fast/overflow/unreachable-overflow-rtl-bug.html -&gt; failed

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374671</commentid>
    <comment_count>5</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2011-03-28 12:23:00 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=87158) [details]
&gt; An initial change for starting technical discussion.
&gt; 
&gt; Greetings,
&gt; 
&gt; This is a change that moves the horizontal scrollbars and resizers of an RTL controls. 


it is moving the vertical scrollbar, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375112</commentid>
    <comment_count>6</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-03-29 01:35:00 -0700</bug_when>
    <thetext>Greetings,

(In reply to comment #5)
&gt; it is moving the vertical scrollbar, right?

Right. This change also moves the resizer, though.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375144</commentid>
    <comment_count>7</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-03-29 02:59:20 -0700</bug_when>
    <thetext>Greetings,

(In reply to comment #4)
&gt;   fast/overflow/unreachable-overflow-rtl-bug.html -&gt; failed

Oops, this seems to be a real regression. (I forgot moving the float objects right by the width of the horizontal scrollbar.)

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375254</commentid>
    <comment_count>8</comment_count>
      <attachid>87158</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-03-29 06:36:23 -0700</bug_when>
    <thetext>Comment on attachment 87158
An initial change for starting technical discussion.

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

I think the approach seems fine (assuming its mirrors what we do when scrollbars are on the right).  But the code needs further cleanup to abstract these functions nicely.

&gt; Source/WebCore/rendering/RenderBlock.cpp:1751
&gt; +    if (style()-&gt;isHorizontalWritingMode() &amp;&amp; !style()-&gt;isLeftToRightDirection())

This should be a style()-&gt;showScrollbarOnLeft() check.

&gt; Source/WebCore/rendering/RenderBox.cpp:479
&gt; +IntRect RenderBox::contentBoxRect() const {

style.  { on next line.

&gt; Source/WebCore/rendering/RenderBox.cpp:481
&gt; +    if (!style()-&gt;isLeftToRightDirection())

Same here.  We may decide this is not related to writign direction at a later time.  Whether we show a scrollbar on the left or right shoudl be an independent function check.

&gt; Source/WebCore/rendering/RenderBox.cpp:1130
&gt; +            clipX += layer()-&gt;verticalScrollbarWidth(relevancy);
&gt;          clipWidth -= layer()-&gt;verticalScrollbarWidth(relevancy);

Seems we should cache this value instead of asking it twice...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377236</commentid>
    <comment_count>9</comment_count>
      <attachid>87748</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-03-31 09:30:50 -0700</bug_when>
    <thetext>Created attachment 87748
A trial change

Greetings,

I have updated this change to add a CSS property that moves the vertical scrollbar to the left side. I would like to upload this change and set review? just to check if this change can complie on all platforms. (I understand I need to polish this change.) Sorry for my noisy review request in advance.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377239</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-31 09:33:29 -0700</bug_when>
    <thetext>Attachment 87748 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

LayoutTests/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377417</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-03-31 13:51:02 -0700</bug_when>
    <thetext>Why is a new CSS property added? Who are you expecting to set that property?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377420</commentid>
    <comment_count>12</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-03-31 13:53:27 -0700</bug_when>
    <thetext>I do not believe making this a CSS property is the right way to go.  This should just be a global policy decision and not controllable by authors.

I also don&apos;t believe we want this change on Mac OS X, since scrollbars stay on the right hand side even with RTL content in list boxes for example.

Being inconsistent with iframe scrollbars and top-level document scrollbars also seems bad to me.

Note also that you&apos;d have to deal with vertical text scrollbars as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377423</commentid>
    <comment_count>13</comment_count>
      <attachid>87748</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-03-31 13:57:11 -0700</bug_when>
    <thetext>Comment on attachment 87748
A trial change

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

Minusing because of the use of a CSS property (and for the other reasons mentioned in the previous comment).

Not all platforms are going to want this change, so I think this is better off as a Setting if you&apos;re going to do it.

&gt; Source/WebCore/rendering/RenderBlock.cpp:1415
&gt; +            if (style()-&gt;isShowScrollbarOnLeft())

This is bad terminology and bad English.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382134</commentid>
    <comment_count>14</comment_count>
      <attachid>88796</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-04-08 04:08:27 -0700</bug_when>
    <thetext>Created attachment 88796
A trial change v2

Greetings,

Thank you all for your review and comments. Even though I have updated my change, I realize this change still needs a lot of cases to discuss about.

(In reply to comment #12)
&gt; I do not believe making this a CSS property is the right way to go.  This should just be a global policy decision and not controllable by authors.
&gt; I also don&apos;t believe we want this change on Mac OS X, since scrollbars stay on the right hand side even with RTL content in list boxes for example.

Thanks for your comment. (My last change added a CSS property just because I badly misunderstood a comment from Eric.) I have updated this change to use a setting. (If this feature is not needed by Mac, we need to move these layout tests to &apos;LayoutTests/platform&apos; and use an ENABLE() macro?)
 
&gt; Being inconsistent with iframe scrollbars and top-level document scrollbars also seems bad to me.

If I can recall comments from a native Hebrew speaker (Aharon), he suggested not to move the vertical scrollbars of &lt;iframe&gt; or &lt;body&gt; even when their direction is RTL. (He suggested to move them when the UI language is an RTL one.) I would like to check it again. By the way, I&apos;m personally wondering if I shuuld include the code that moves the vertical scrollbars of RenderView objects to this change because this change already becomes &gt;35KB. It would be definitely helpful to give me your opinions about it.

&gt; Note also that you&apos;d have to deal with vertical text scrollbars as well.

Yeah. Even though I notice vertical text, this change did not deal with it because I would like to ask Aharon about it with this change. (Maybe showing to the top-side?)

(In reply to comment #13)
&gt; Minusing because of the use of a CSS property (and for the other reasons mentioned in the previous comment).
&gt; Not all platforms are going to want this change, so I think this is better off as a Setting if you&apos;re going to do it.

Thank you. I have updated my change to use it.

&gt; &gt; Source/WebCore/rendering/RenderBlock.cpp:1415
&gt; &gt; +            if (style()-&gt;isShowScrollbarOnLeft())
&gt; 
&gt; This is bad terminology and bad English.

Indeed. (This clearly shows my poor English skill.)

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382145</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-08 04:37:57 -0700</bug_when>
    <thetext>Attachment 88796 did not build on chromium:
Build output: http://queues.webkit.org/results/8347989</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382869</commentid>
    <comment_count>16</comment_count>
    <who name="Aharon (Vladimir) Lanin">aharon</who>
    <bug_when>2011-04-10 00:21:15 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Being inconsistent with iframe scrollbars and top-level document scrollbars also seems bad to me.

In frames and iframes hosting HTML documents, the dir attribute (and CSS direction) of the frame/iframe element has no visible effect, since it is completely overridden by the direction of the HTML document in the frame. Thus, the vertical scrollbar position should be determined by the frame&apos;s HTML document too. Thus, the exception for frames and iframes makes sense.

The rule is simple: for RTL content, the vertical scrollbar should be on the left side. The direction of the content in a frame is given by the document, not the frame element.

As for top-level documents, this is indeed an exception to the rule. The reason for the exception is that it is even more important to have the *window*&apos;s vertical scrollbar in a fixed position as one surfs from one page to another of the opposite direction, since it saves the user having to check the direction of the page or visually find the scrollbar before starting to move the mouse to it.

Please note that this rationale does not apply to internal elements, since their scrollbar is in an arbitrary position in the window anyway.

&gt; I also don&apos;t believe we want this change on Mac OS X, since scrollbars stay on the right hand side even with RTL content in list boxes for example.

WebKit does try to emulate native control behavior, so I guess this comment makes sense. Although as far as I am concerned, Mac OS X behavior in this case is not optimal, and I would not be surprised if it will change some day.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383924</commentid>
    <comment_count>17</comment_count>
      <attachid>89186</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-04-12 04:13:17 -0700</bug_when>
    <thetext>Created attachment 89186
A trial change v3

Greetings,

(In reply to comment #15)
&gt; Attachment 88796 [details] did not build on chromium:
&gt; Build output: http://queues.webkit.org/results/8347989

Oops, I forgot adding Chromium-specific files to this change. I have updated the change to include some Chromium-specific files.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388347</commentid>
    <comment_count>18</comment_count>
      <attachid>90162</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-04-19 00:55:27 -0700</bug_when>
    <thetext>Created attachment 90162
A trial change v4

Greetings,

I have updated this change just for fixing a conflict.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388747</commentid>
    <comment_count>19</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-04-19 13:37:07 -0700</bug_when>
    <thetext>Hi Bono-san, what about iframe? Is it a different story from this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388749</commentid>
    <comment_count>20</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-04-19 13:38:47 -0700</bug_when>
    <thetext>&gt; Hi Bono-san, what about iframe? Is it a different story from this patch?
Oops. I missed aharon&apos;s comment... I&apos;m sorry for disturbing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410860</commentid>
    <comment_count>21</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2011-05-26 14:47:34 -0700</bug_when>
    <thetext>David, Simon, Dan,

could you kindly review the patch?

Thanks and appreciated!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441562</commentid>
    <comment_count>22</comment_count>
    <who name="Aharon (Vladimir) Lanin">aharon</who>
    <bug_when>2011-07-24 23:15:54 -0700</bug_when>
    <thetext>I am not sure in what version they made the change, but as of version 5, Firefox displays scrollbars on elements below &lt;body&gt; on the end side, i.e. on the left for an RTL element. The Firefox bugs for this are https://bugzilla.mozilla.org/show_bug.cgi?id=556363 and https://bugzilla.mozilla.org/show_bug.cgi?id=619963.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467650</commentid>
    <comment_count>23</comment_count>
      <attachid>107460</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-09-14 23:01:12 -0700</bug_when>
    <thetext>Created attachment 107460
Patch v6 (enabled only on Chromium)

Greetings,

Even though my previous patch has not got any interest of reviewers, I have updated my change because my previous patch does not compile on the latest WebKit any longer. Also, I have changed the layout tests to a script test and added an ENABLED_OVERFLOW_MIRRORING flag so we can enable/disable this feature at compilation time. (It seems Safari does not need it.)

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467653</commentid>
    <comment_count>24</comment_count>
    <who name="Aharon (Vladimir) Lanin">aharon</who>
    <bug_when>2011-09-14 23:07:29 -0700</bug_when>
    <thetext>This bug, which lacks a workaround, is causing problems at several Google products. Is anyone available to review Hirinori&apos;s patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467706</commentid>
    <comment_count>25</comment_count>
      <attachid>107460</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2011-09-15 01:52:22 -0700</bug_when>
    <thetext>Comment on attachment 107460
Patch v6 (enabled only on Chromium)

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

informal review since I&apos;m not a WebKit reviewer.

&gt; Source/WebCore/ChangeLog:6
&gt; +        This change adds a new flag ENABLE_OVERFLOW_MIRRORING and render

nit: I think ENABLE_OVERFLOW_MIRRORING is a little hard to understand.  How about ENABLE_RTL_SCROLLBARS ?

&gt; Source/WebCore/rendering/RenderBlock.cpp:1468
&gt; +        if (positionedObject-&gt;style()-&gt;position() != FixedPosition) {

nit: I think rewriting this as:
if (positionedObject-&gt;style()-&gt;position() == FixedPosition)
   continue;
#ifdef ...

Would be a little cleaner since you wouldn&apos; t need to repeat the if inside the #ifdef.

&gt; Source/WebCore/rendering/RenderBox.cpp:1194
&gt; +#else

Can you remove the #else and reuse the same call to contract() ? This may make things easier to follow...

&gt; Source/WebCore/rendering/style/RenderStyle.h:529
&gt; +    bool isRightToLeftDirection() const { return direction() == RTL; }

I may be wrong but I seem to recall Mitz mentioning that he wanted everything phrased as being related to isLTR so you may want to remove this and just use a locale isRTL = !bla-&gt;isLeftToRightDirection() where you need htat.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467901</commentid>
    <comment_count>26</comment_count>
      <attachid>107460</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-15 10:53:12 -0700</bug_when>
    <thetext>Comment on attachment 107460
Patch v6 (enabled only on Chromium)

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

New failing tests:
fast/block/float/028.html
fast/overflow/overflow-rtl-vertical.html
fast/events/offsetX-offsetY.html
fast/overflow/unreachable-overflow-rtl-bug.html
fast/block/float/026.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468017</commentid>
    <comment_count>27</comment_count>
      <attachid>107460</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-09-15 12:59:35 -0700</bug_when>
    <thetext>Comment on attachment 107460
Patch v6 (enabled only on Chromium)

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

&gt; Source/WebCore/rendering/RenderBlock.cpp:1467
&gt; +#if ENABLE(OVERFLOW_MIRRORING)

Adam Barth is &quot;fixing&quot; many  of the mis using of &quot;ENABLE&quot;. I believe you would be introducing yet another one, but I would like him to comment. Adam, ENABLE x USE here?

&gt; Source/WebCore/rendering/RenderLayer.cpp:1769
&gt; +    const RenderStyle* style = layer-&gt;renderer()-&gt;style();

I would drop the &apos;const&apos; here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468019</commentid>
    <comment_count>28</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-09-15 13:00:13 -0700</bug_when>
    <thetext>Adam, see comment #27.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480979</commentid>
    <comment_count>29</comment_count>
      <attachid>107460</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-10 09:43:34 -0700</bug_when>
    <thetext>Comment on attachment 107460
Patch v6 (enabled only on Chromium)

I would like to see some hit testing tests here especially when overflow contents are scrolled by a few pixels. r- due to lack of hit testing tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493877</commentid>
    <comment_count>30</comment_count>
      <attachid>107460</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-01 06:40:54 -0700</bug_when>
    <thetext>Comment on attachment 107460
Patch v6 (enabled only on Chromium)

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

&gt; Source/WebCore/rendering/RenderLayer.cpp:1772
&gt; +    return LayoutRect(x, bounds.maxY() - verticalThickness - style-&gt;borderBottomWidth(),
&gt; +                      horizontalThickness, verticalThickness);

I&apos;d note that indentation here is wrong. horizontalThickness should be on the right of &quot;return LayoutRect&quot; by exactly 4 spaces (8 spaces in the total).

Ditto for the rest of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497871</commentid>
    <comment_count>31</comment_count>
      <attachid>114018</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-11-08 02:24:36 -0800</bug_when>
    <thetext>Created attachment 114018
Patch v7

Greetings,

Sorry for the lack of my updates.
I have renamed ENABLE(OVERFLOW_MIRRORING) to USE(RTL_SCROLLBAR), re-implemented its layout test that hits a scrollbar track, and fixed a conflict.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497962</commentid>
    <comment_count>32</comment_count>
      <attachid>114018</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-08 05:06:00 -0800</bug_when>
    <thetext>Comment on attachment 114018
Patch v7

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

New failing tests:
fast/block/float/028.html
fast/overflow/overflow-rtl-vertical.html
fast/events/offsetX-offsetY.html
fast/overflow/unreachable-overflow-rtl-bug.html
fast/block/float/026.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509285</commentid>
    <comment_count>33</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-25 15:58:07 -0800</bug_when>
    <thetext>Do you know why those tests are failing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509288</commentid>
    <comment_count>34</comment_count>
      <attachid>114018</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-25 16:04:05 -0800</bug_when>
    <thetext>Comment on attachment 114018
Patch v7

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

Nits.

&gt; Source/WebCore/ChangeLog:10
&gt; +        Reviewed by NOBODY (OOPS!).

This line should appear before the long description.

&gt; Source/WebCore/rendering/RenderLayer.cpp:2147
&gt; +                                        absBounds.y() + box-&gt;borderTop(),
&gt; +                                        m_vBar-&gt;width(),
&gt; +                                        absBounds.height() - (box-&gt;borderTop() + box-&gt;borderBottom()) - scrollCorner.height()));

Wrong indentation. &quot;absBounds.y() + box-&gt;borderTop()&quot; should be exactly 4 spaces to the right of &quot;m_vBar-&gt;&quot;.

&gt; Source/WebCore/rendering/RenderLayer.cpp:2157
&gt; +                                        m_hBar-&gt;height()));

Ditto.

&gt; Source/WebCore/rendering/RenderLayer.cpp:2572
&gt; +                            box-&gt;borderTop(),
&gt; +                            m_vBar-&gt;width(),
&gt; +                            box-&gt;height() - (box-&gt;borderTop() + box-&gt;borderBottom()) - (m_hBar ? m_hBar-&gt;height() : resizeControlSize));

Ditto.

&gt; Source/WebCore/rendering/RenderLayer.cpp:2594
&gt; +                            box-&gt;height() - box-&gt;borderBottom() - m_hBar-&gt;height(),
&gt; +                            box-&gt;width() - (box-&gt;borderLeft() + box-&gt;borderRight()) - (m_vBar ? m_vBar-&gt;width() : resizeControlSize),
&gt; +                            m_hBar-&gt;height());

Ditto.

&gt; LayoutTests/ChangeLog:10
&gt; +        Reviewed by NOBODY (OOPS!).

This line should appear before the long description.

&gt; LayoutTests/platform/chromium/fast/events/rtl-scrollbar.html:1
&gt; +&lt;html&gt;

No DOCTYPE?

&gt; LayoutTests/platform/chromium/fast/events/rtl-scrollbar.html:16
&gt; +// Save the vertical-scroll offset of the above &lt;div&gt; element before sending a
&gt; +// click event. If we successfully scroll down the element, this offset should
&gt; +// become greather than this value.

I don&apos;t think we need this comment.

&gt; LayoutTests/platform/chromium/fast/events/rtl-scrollbar.html:24
&gt; +    eventSender.mouseMoveTo(10, 300);

You can do mouseMoveTo(overflow.offsetLeft + 5, overflow.offsetTop + overflow.offsetHeight - 50); instead of putting div at the right location.

&gt; LayoutTests/platform/chromium/fast/events/rtl-scrollbar.html:29
&gt; +    // Wait until we finish rendering the element.
&gt; +    setTimeout(finished, 1000);

One second seems like an excess amount of time to wait. Probably setTimeout(finished, 0) is sufficient.
Also, I don&apos;t this comment is useful because the code is quite self-evident.

&gt; LayoutTests/platform/chromium/fast/events/rtl-scrollbar.html:34
&gt; +    // Verify the vertical-scroll offset becomes greater than the saved one.

The code is self-evident.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520437</commentid>
    <comment_count>35</comment_count>
      <attachid>114018</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-13 15:49:07 -0800</bug_when>
    <thetext>Comment on attachment 114018
Patch v7

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

This patch feels like it begs for some sort of abstraction.  It&apos;s unclear to me what that abstraction should look like, but a series of ifdefs seems wrong.  Can you clarify for me (and in the ChangeLog) which platforms would want this behavior vs. not?  Could we have a rtlAwareVerticalScrollbarWidth() which returns 0 when this is disabled, and thus we only would need the #ifdef in one place?

&gt; Source/WebCore/rendering/RenderBlock.cpp:1475
&gt; +#if USE(RTL_SCROLLBAR)

What platforms would want this disabled?   Normally we have defaults for these sorts of things in Platform.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520447</commentid>
    <comment_count>36</comment_count>
      <attachid>114018</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-13 15:54:39 -0800</bug_when>
    <thetext>Comment on attachment 114018
Patch v7

This seems like a lot of copy-paste code.

I&apos;m willing to believe that this *is* the right solution, but I need you to convince me of that.

Why is this the right abstraction layer?  Can we make this change at a lower level?  Could we add helper functions like &quot;adjustRectForRTLAwareScrollBar&quot; which would contain this ifdef and do nothing when this ifdef is disabled?

I&apos;m nto sure what the right way to write this change is.  You are *much* more familiar with this code than I am, and I trust your judgement!

I do, however need you to convince me, and future readers of this patch, (in the ChangeLog, ideally) that this is the right way to go.

If you can come up with a solution which involves less copy-paste code, that would be ideal.

Thanks again for the patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528277</commentid>
    <comment_count>37</comment_count>
    <who name="Aharon (Vladimir) Lanin">aharon</who>
    <bug_when>2011-12-31 09:46:47 -0800</bug_when>
    <thetext>A gentle reminder: this bug is causing problems in various Google apps. There is no workaround.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531044</commentid>
    <comment_count>38</comment_count>
      <attachid>121427</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-01-06 05:14:03 -0800</bug_when>
    <thetext>Created attachment 121427
Patch v8 (refactored)

Greetings,

Many thanks for your review and comments. Also sorry for my slow update.
This feature s enabled only on Chromium just because Dave told Safari did not need it as written in his comment #12. (Even though I&apos;m not sure if other ports need it, I would like to disable it because it may surprise them to change the behavior of scrollbars without noticing them.)
As you pointed out, my previous change has lots of copy-and-paste code. (This is just because I could not find good function names.) I have created three new functions (rtlAwareCornerX, rtlAwareVerticalScrollbarX, and rtlAwareHorizontalScrollbarX) to simplify this change. (Unfortunately, we need three functions: the first one is for moving a resizer, the second one is for moving a vertical scrollbar, and the third one is for moving a horizontal scrollbar, respectively.) Moving a vertical scrollbar needs to move a horizontal scrollbar and a resizer.

Regards,

Hironori Bono

(In reply to comment #36)
&gt; (From update of attachment 114018 [details])
&gt; This seems like a lot of copy-paste code.
&gt; 
&gt; I&apos;m willing to believe that this *is* the right solution, but I need you to convince me of that.
&gt; 
&gt; Why is this the right abstraction layer?  Can we make this change at a lower level?  Could we add helper functions like &quot;adjustRectForRTLAwareScrollBar&quot; which would contain this ifdef and do nothing when this ifdef is disabled?
&gt; 
&gt; I&apos;m nto sure what the right way to write this change is.  You are *much* more familiar with this code than I am, and I trust your judgement!
&gt; 
&gt; I do, however need you to convince me, and future readers of this patch, (in the ChangeLog, ideally) that this is the right way to go.
&gt; 
&gt; If you can come up with a solution which involves less copy-paste code, that would be ideal.
&gt; 
&gt; Thanks again for the patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531055</commentid>
    <comment_count>39</comment_count>
      <attachid>121427</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-06 06:23:52 -0800</bug_when>
    <thetext>Comment on attachment 121427
Patch v8 (refactored)

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

New failing tests:
fast/block/float/028.html
fast/overflow/overflow-rtl-vertical.html
fast/events/offsetX-offsetY.html
fast/block/float/026.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531066</commentid>
    <comment_count>40</comment_count>
      <attachid>121427</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-06 07:19:04 -0800</bug_when>
    <thetext>Comment on attachment 121427
Patch v8 (refactored)

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

New failing tests:
fast/block/float/028.html
fast/overflow/overflow-rtl-vertical.html
fast/events/offsetX-offsetY.html
fast/block/float/026.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531157</commentid>
    <comment_count>41</comment_count>
      <attachid>121427</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-06 10:40:16 -0800</bug_when>
    <thetext>Comment on attachment 121427
Patch v8 (refactored)

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

Great! New patch looks much cleaner.

&gt; Source/WebCore/rendering/RenderLayer.cpp:1952
&gt; +LayoutUnit RenderLayer::rtlAwareVerticalScrollbarX(int minX, int maxX) const

We normally use the word &quot;start&quot; to mean left for LTR and right for RTL so how about verticalScrollbarStart?

&gt; Source/WebCore/rendering/RenderLayer.cpp:1962
&gt; +LayoutUnit RenderLayer::rtlAwareHorizontalScrollbarX(int minX) const

horizontalScrollbarStart?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535434</commentid>
    <comment_count>42</comment_count>
      <attachid>122368</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-01-12 21:55:29 -0800</bug_when>
    <thetext>Created attachment 122368
Patch v9 (renamed function names)

Greetings Niwa-san,

Many thanks for your comments.
I have renamed the functions added by this change. Also, I have disabled moving scrollbars when -webkit-writing-mode is vertical-lr or vertical rl. (I notice we also need to change Y positions to support them.) Should this change support them as well, or should I use another change to support them?
By the way, this change ALWAYS moves horizontal scrollbars of RTL elements on Chromium. That is, this change needs rebaselines for some layout tests that use RTL elements: &quot;fast/block/float/026.html&quot;, &quot;fast/block/float/028.html&quot;, &quot;fast/events/offsetX-offsetY.html&quot;. (Unfortunately, the first two tests are pixel ones and I cannot get rebaselined results for all platforms.)

Regards,

Hironori Bono

(In reply to comment #41)
&gt; (From update of attachment 121427 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=121427&amp;action=review
&gt; 
&gt; Great! New patch looks much cleaner.
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:1952
&gt; &gt; +LayoutUnit RenderLayer::rtlAwareVerticalScrollbarX(int minX, int maxX) const
&gt; 
&gt; We normally use the word &quot;start&quot; to mean left for LTR and right for RTL so how about verticalScrollbarStart?
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:1962
&gt; &gt; +LayoutUnit RenderLayer::rtlAwareHorizontalScrollbarX(int minX) const
&gt; 
&gt; horizontalScrollbarStart?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535461</commentid>
    <comment_count>43</comment_count>
      <attachid>122368</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-12 23:15:22 -0800</bug_when>
    <thetext>Comment on attachment 122368
Patch v9 (renamed function names)

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

New failing tests:
fast/block/float/028.html
fast/events/offsetX-offsetY.html
fast/block/float/026.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535484</commentid>
    <comment_count>44</comment_count>
      <attachid>122368</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-13 00:03:33 -0800</bug_when>
    <thetext>Comment on attachment 122368
Patch v9 (renamed function names)

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

New failing tests:
fast/block/float/028.html
fast/events/offsetX-offsetY.html
fast/block/float/026.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545211</commentid>
    <comment_count>45</comment_count>
      <attachid>122368</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-30 10:52:26 -0800</bug_when>
    <thetext>Comment on attachment 122368
Patch v9 (renamed function names)

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

Does your patch work for a block with writing-mode: bt-rl?

&gt; Source/WebCore/rendering/RenderBlock.cpp:1497
&gt; +            if (!style()-&gt;isLeftToRightDirection() &amp;&amp; style()-&gt;isHorizontalWritingMode())

Can we move !style()-&gt;isLeftToRightDirection() to the outer if-statement so that we don&apos;t make an extra function call to addOverflowFromChild?

&gt; Source/WebCore/rendering/RenderBlock.cpp:1898
&gt; +    if (!style()-&gt;isLeftToRightDirection() &amp;&amp; style()-&gt;isHorizontalWritingMode())

Instead of duplicating this condition throughout the codebase, can we add an inline function to wrap it?
e.g. style()-&gt;shouldPlaceVerticalScrollbarOnLeft()

&gt; Source/WebCore/rendering/RenderBox.cpp:1232
&gt;      // Subtract out scrollbars if we have them.

You should add an early exit when !layer() to avoid duplicating the if-statement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545862</commentid>
    <comment_count>46</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-01-31 01:59:28 -0800</bug_when>
    <thetext>Greetings Niwa-san,

Many thanks for your comments.
Is it possible to clarify a couple of your comments before applying them?

(In reply to comment #45)
&gt; Can we move !style()-&gt;isLeftToRightDirection() to the outer if-statement so that we don&apos;t make an extra function call to addOverflowFromChild?

Does this mean we just call addOverflowFromChild(positionedObject) (not addOverflowFromChild(positionedObject, IntSize(...))) when !style()-&gt;isLeftToRightDirection() is true? (We need to call addOverflowFromChild  itself for non-fixed objects as the original code calls.)
 
&gt; &gt; Source/WebCore/rendering/RenderBlock.cpp:1898
&gt; &gt; +    if (!style()-&gt;isLeftToRightDirection() &amp;&amp; style()-&gt;isHorizontalWritingMode())
&gt; 
&gt; Instead of duplicating this condition throughout the codebase, can we add an inline function to wrap it?
&gt; e.g. style()-&gt;shouldPlaceVerticalScrollbarOnLeft()

In my personal opinion, I wonder if we can call this function &apos;vertical&apos;. When -webkit-writing-mode is vertical-rl or vertical-lr, this scrollbar is used for scrolling text &quot;horizontally&quot;. For example, when we open &quot;LayoutTests/fast/overflow/overflow-rtl-vertical.html&quot; on Safari, it shows a scrollbar above its text. When we apply my patch v8, it moves the scrollbar below its text.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546296</commentid>
    <comment_count>47</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-31 11:37:49 -0800</bug_when>
    <thetext>(In reply to comment #46)
&gt; (In reply to comment #45)
&gt; &gt; Can we move !style()-&gt;isLeftToRightDirection() to the outer if-statement so that we don&apos;t make an extra function call to addOverflowFromChild?
&gt; 
&gt; Does this mean we just call addOverflowFromChild(positionedObject) (not addOverflowFromChild(positionedObject, IntSize(...))) when !style()-&gt;isLeftToRightDirection() is true? (We need to call addOverflowFromChild  itself for non-fixed objects as the original code calls.)

Sorry, that comment seems bogus. What I really meant is move &quot;if (positionedObject-&gt;style()-&gt;position() != FixedPosition)&quot; outside of if-defs to be shared. Then, you only need to wrap two lines inside if-defs (x -= verticalScrollbarWidth(); and if before that).

&gt; &gt; &gt; Source/WebCore/rendering/RenderBlock.cpp:1898
&gt; &gt; &gt; +    if (!style()-&gt;isLeftToRightDirection() &amp;&amp; style()-&gt;isHorizontalWritingMode())
&gt; &gt; 
&gt; &gt; Instead of duplicating this condition throughout the codebase, can we add an inline function to wrap it?
&gt; &gt; e.g. style()-&gt;shouldPlaceVerticalScrollbarOnLeft()
&gt; 
&gt; In my personal opinion, I wonder if we can call this function &apos;vertical&apos;. When -webkit-writing-mode is vertical-rl or vertical-lr, this scrollbar is used for scrolling text &quot;horizontally&quot;. For example, when we open &quot;LayoutTests/fast/overflow/overflow-rtl-vertical.html&quot; on Safari, it shows a scrollbar above its text. When we apply my patch v8, it moves the scrollbar below its text.

Hm... how about shouldPlaceBlockDirectionScrollbarOnLogicalLeft() then ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548615</commentid>
    <comment_count>48</comment_count>
      <attachid>125303</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-02-03 03:32:43 -0800</bug_when>
    <thetext>Created attachment 125303
Patch v10 (Applied comments)

Greetings Niwa-san,

Many thanks for your comments.

(In reply to comment #47)
&gt; Sorry, that comment seems bogus. What I really meant is move &quot;if (positionedObject-&gt;style()-&gt;position() != FixedPosition)&quot; outside of if-defs to be shared. Then, you only need to wrap two lines inside if-defs (x -= verticalScrollbarWidth(); and if before that).

Done. Thanks for your correction.

&gt; Hm... how about shouldPlaceBlockDirectionScrollbarOnLogicalLeft() then ?

Done. I should have describe this issue when I noticed it.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548635</commentid>
    <comment_count>49</comment_count>
      <attachid>125303</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-03 04:49:26 -0800</bug_when>
    <thetext>Comment on attachment 125303
Patch v10 (Applied comments)

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

New failing tests:
fast/block/float/028.html
fast/events/offsetX-offsetY.html
fast/block/float/026.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548662</commentid>
    <comment_count>50</comment_count>
      <attachid>125303</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-03 06:05:59 -0800</bug_when>
    <thetext>Comment on attachment 125303
Patch v10 (Applied comments)

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

New failing tests:
fast/block/float/028.html
fast/events/offsetX-offsetY.html
fast/block/float/026.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553308</commentid>
    <comment_count>51</comment_count>
      <attachid>125303</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-09 10:48:09 -0800</bug_when>
    <thetext>Comment on attachment 125303
Patch v10 (Applied comments)

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

This code looks right to me.  I think you could have simplified the #defines by moving them as noted below, but I also think this i OK.  Thank you for hte patch.

&gt; Source/WebCore/rendering/RenderLayer.cpp:1831
&gt; +    return IntRect(cornerStart(layer, bounds.x(), bounds.maxX(), horizontalThickness),

I&apos;m not sure what you mean by &quot;corner start&quot; here?

&gt; Source/WebCore/rendering/style/RenderStyle.h:966
&gt; +    bool shouldPlaceBlockDirectionScrollbarOnLogicalLeft() const { return !isLeftToRightDirection() &amp;&amp; isHorizontalWritingMode(); }

It seems it would have been simpler to put the #if around this function, and just define a version of thsi function which only returns false when RTL_SCROLLBAR is disabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558052</commentid>
    <comment_count>52</comment_count>
      <attachid>127350</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-02-16 03:32:45 -0800</bug_when>
    <thetext>Created attachment 127350
Patch v11 (Applied comments from Eric)

Greetings Eric,

Thanks for your review and comments.
I have applied your comments and uploaded the updated one.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558129</commentid>
    <comment_count>53</comment_count>
      <attachid>127350</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-16 06:00:46 -0800</bug_when>
    <thetext>Comment on attachment 127350
Patch v11 (Applied comments from Eric)

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

New failing tests:
fast/block/float/028.html
fast/events/offsetX-offsetY.html
fast/block/float/026.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563456</commentid>
    <comment_count>54</comment_count>
      <attachid>127350</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-23 14:02:42 -0800</bug_when>
    <thetext>Comment on attachment 127350
Patch v11 (Applied comments from Eric)

Where is the resize box rendered after your patch? Ojan pointed out a good point in https://bugs.webkit.org/show_bug.cgi?id=9223 that resize handles and scrollbar should appear on the same side.

Does your patch move the resize box as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563758</commentid>
    <comment_count>55</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-02-23 17:44:26 -0800</bug_when>
    <thetext>Greetings Niwa-san,

Thanks for your feedbakc.
Yes, cornerStart() moves it. (This RenderLayer class uses &apos;cornerRect&apos; probably because not all input boxes have resizers.)

Regards,

Hironori Bono

(In reply to comment #54)
&gt; (From update of attachment 127350 [details])
&gt; Where is the resize box rendered after your patch? Ojan pointed out a good point in https://bugs.webkit.org/show_bug.cgi?id=9223 that resize handles and scrollbar should appear on the same side.
&gt; 
&gt; Does your patch move the resize box as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563786</commentid>
    <comment_count>56</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-23 18:15:43 -0800</bug_when>
    <thetext>(In reply to comment #55)
&gt; Greetings Niwa-san,
&gt; 
&gt; Thanks for your feedbakc.
&gt; Yes, cornerStart() moves it. (This RenderLayer class uses &apos;cornerRect&apos; probably because not all input boxes have resizers.)

Fantastic!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563790</commentid>
    <comment_count>57</comment_count>
      <attachid>127350</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-23 18:18:28 -0800</bug_when>
    <thetext>Comment on attachment 127350
Patch v11 (Applied comments from Eric)

r=me trusting eseidel&apos;s previous review. Please add a test for resize handle (could be a followup patch on the bug 9223).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568291</commentid>
    <comment_count>58</comment_count>
      <attachid>129623</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-02-29 20:41:54 -0800</bug_when>
    <thetext>Created attachment 129623
Patch v12 (Updated to ToT)

Greetings,

Somehow webkit-patch land-from-bug cannot land my previous change. I would like to upload the new one to see it works.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568293</commentid>
    <comment_count>59</comment_count>
      <attachid>129623</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-29 20:46:57 -0800</bug_when>
    <thetext>Comment on attachment 129623
Patch v12 (Updated to ToT)

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

Again, please add a test for resize handle as a follow up.

&gt; Source/WebCore/ChangeLog:10
&gt; +        Reviewed by NOBODY (OOPS!).

Reviewed by line should appear above the description but below the bug url.

&gt; Source/WebKit/chromium/ChangeLog:10
&gt; +        Reviewed by NOBODY (OOPS!).

Ditto.

&gt; LayoutTests/ChangeLog:10
&gt; +        Reviewed by NOBODY (OOPS!).

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568303</commentid>
    <comment_count>60</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-02-29 21:07:32 -0800</bug_when>
    <thetext>Greetings Niwa-san,

Thanks for your comment.

(In reply to comment #59)
&gt; Again, please add a test for resize handle as a follow up.

This change just moves a resizer to the left wide. In brief, I a little wonder if it is totally the expected behavior of Bug 9223. (Does it expect mirroring a resizer bitmap as well as moving it to the left side?)

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568523</commentid>
    <comment_count>61</comment_count>
      <attachid>129623</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-01 03:26:21 -0800</bug_when>
    <thetext>Comment on attachment 129623
Patch v12 (Updated to ToT)

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

New failing tests:
fast/block/float/028.html
fast/events/offsetX-offsetY.html
fast/block/float/026.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569282</commentid>
    <comment_count>62</comment_count>
      <attachid>129623</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-03-01 22:33:10 -0800</bug_when>
    <thetext>Comment on attachment 129623
Patch v12 (Updated to ToT)

Clearing flags on attachment: 129623

Committed r109512: &lt;http://trac.webkit.org/changeset/109512&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569283</commentid>
    <comment_count>63</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-03-01 22:33:24 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569463</commentid>
    <comment_count>64</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-02 02:25:07 -0800</bug_when>
    <thetext>Based on a discussion with morrita@ and hbono@, I marked the following tests as FAIL:

fast/block/float/026.html 
fast/block/float/028.html 
fast/events/offsetX-offsetY.html 
fast/overflow/unreachable-overflow-rtl-bug.html 

http://trac.webkit.org/changeset/109537</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569477</commentid>
    <comment_count>65</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-03-02 02:42:37 -0800</bug_when>
    <thetext>Greetings Hara-san,

Thanks a lot for noticing these failures. I will rebaseline them. (It may be better to rebaseline them after fixing Bug 9223? Fixing Bug 9223 needs to change a resizer image, i.e. it probably changes the output images of these tests.)

Regards,

Hironori Bono

(In reply to comment #64)
&gt; Based on a discussion with morrita@ and hbono@, I marked the following tests as FAIL:
&gt; 
&gt; fast/block/float/026.html 
&gt; fast/block/float/028.html 
&gt; fast/events/offsetX-offsetY.html 
&gt; fast/overflow/unreachable-overflow-rtl-bug.html 
&gt; 
&gt; http://trac.webkit.org/changeset/109537</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569938</commentid>
    <comment_count>66</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-02 14:20:46 -0800</bug_when>
    <thetext>I think adamk has already rebaselined them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603034</commentid>
    <comment_count>67</comment_count>
    <who name="Aharon (Vladimir) Lanin">aharon</who>
    <bug_when>2012-04-16 04:19:49 -0700</bug_when>
    <thetext>I am reopening because iframes are not being handled properly. Their scrollbar is currently always on the right, even if both the &lt;iframe&gt; and the document inside it have direction:rtl. For an &lt;iframe&gt;, the scrollbar should be on the start side of the document inside it (even though when displayed in a separate tab, not an &lt;iframe&gt;, the document&apos;s direction should not determine the scrollbar side). If the thing inside the &lt;iframe&gt; does not have a direction, e.g. it is an image, it should be on the start side of the &lt;iframe&gt;&apos;s direction.

Attaching a test case.

Please note that this is the same requirement I originally stated in comment 16 (quoted below), although perhaps not clearly enough.

(In reply to comment #16)
&gt; In frames and iframes hosting HTML documents, the dir attribute (and CSS direction) of the frame/iframe element has no visible effect, since it is completely overridden by the direction of the HTML document in the frame. Thus, the vertical scrollbar position should be determined by the frame&apos;s HTML document too. Thus, the exception for frames and iframes makes sense.
&gt; 
&gt; The rule is simple: for RTL content, the vertical scrollbar should be on the left side. The direction of the content in a frame is given by the document, not the frame element.
&gt; 
&gt; As for top-level documents, this is indeed an exception to the rule. The reason for the exception is that it is even more important to have the *window*&apos;s vertical scrollbar in a fixed position as one surfs from one page to another of the opposite direction, since it saves the user having to check the direction of the page or visually find the scrollbar before starting to move the mouse to it.
&gt; 
&gt; Please note that this rationale does not apply to internal elements, since their scrollbar is in an arbitrary position in the window anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603039</commentid>
    <comment_count>68</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-16 04:27:12 -0700</bug_when>
    <thetext>Probably better to open a new bug than to re-open this one.  This one has served us well, but trying to work here further is likely just to make reviews harder as the number of patches/comments is somewhat intimidating. :)

You can of course reference this bug for &quot;further information&quot;, or mark it as a dependent when you file the new one with your test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603048</commentid>
    <comment_count>69</comment_count>
      <attachid>137316</attachid>
    <who name="Aharon (Vladimir) Lanin">aharon</who>
    <bug_when>2012-04-16 04:48:42 -0700</bug_when>
    <thetext>Created attachment 137316
Test case. Extract the files in the zip and open iframe-scollbar-outer.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603077</commentid>
    <comment_count>70</comment_count>
    <who name="Aharon (Vladimir) Lanin">aharon</who>
    <bug_when>2012-04-16 05:49:34 -0700</bug_when>
    <thetext>(In reply to comment #68)
&gt; Probably better to open a new bug than to re-open this one.  This one has served us well, but trying to work here further is likely just to make reviews harder as the number of patches/comments is somewhat intimidating. :)
&gt; 
&gt; You can of course reference this bug for &quot;further information&quot;, or mark it as a dependent when you file the new one with your test case.

Ok, opened bug 84026 for the &lt;iframe&gt; issue; marking this as resolved again.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87158</attachid>
            <date>2011-03-28 09:52:12 -0700</date>
            <delta_ts>2011-03-31 09:30:50 -0700</delta_ts>
            <desc>An initial change for starting technical discussion.</desc>
            <filename>issue54623-patch0.txt</filename>
            <type>text/plain</type>
            <size>10580</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyMTIzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTEtMDMtMjggIEhpcm9ub3Jp
IEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTW92ZSBob3Jpem9udGFsIHNjcm9sbGJhcnMgYW5kIHJlc2l6
ZXJzIHRvIHRoZSBsZWZ0IHNpZGUgd2hlbiB0aGUgdGV4dAorICAgICAgICBkaXJlY3Rpb24gaXMg
UlRMLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ2
MjMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMjMK
KyAgICAgICAgCisgICAgICAgIFRoaXMgY2hhbmdlIG1vdmVzIHRoZSBob3Jpem9udGFsIHNjcm9s
bGJhcnMgYW5kIHJlc2l6ZXJzIG9mIEhUTUwgY29udHJvbHMKKyAgICAgICAgKHN1Y2ggYXMgdGV4
dGFyZWEgYW5kIGNvbnRlbnQtZWRpdGFibGUgZGl2KSB0byB0aGUgbGVmdCBzaWRlIHdoZW4gaXRz
CisgICAgICAgIHRleHQgZGlyZWN0aW9uIGlzIFJUTC4KKworICAgICAgICBObyBuZXcgdGVzdHMu
IChPT1BTISkKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZGV0ZXJtaW5lTG9naWNhbExlZnRQb3NpdGlvbkZvckNo
aWxkKTogTW92ZSB0aGUKKyAgICAgICAgY2hpbGRyZW4gb2YgYW4gUlRMIGNvbnRyb2wgYnkgdGhl
IHdpZHRoIG9mIGl0cyBob3Jpem9udGFsIHNjcm9sbGJhci4KKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29udGVudEJveFJl
Y3QpOiBNb3ZlIHRoZSBjb250ZW50IHJlY3RhbmdsZSBvZiBhbgorICAgICAgICBSVEwgY29udHJv
bCByaWdodCBieSB0aGUgd2lkdGggb2YgaXRzIGhvcml6b250YWwgc2Nyb2xsYmFyLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94OjpvdmVyZmxvd0NsaXBSZWN0KTogTW92ZSB0aGUgY2xpcHBp
bmcgcmVjdGFuZ2xlIG9mCisgICAgICAgIGFuIFJUTCBjb250cm9sIHJpZ2h0IGJ5IHRoZSB3aWR0
aCBvZiBpdHMgaG9yaXpvbnRhbCBzY3JvbGxiYXIuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb3JuZXJSZWN0KTogTW92ZSB0aGUgcmVzaXplciBvZiBhbiBSVEwgY29udHJvbCB0
byBpdHMgYm90dG9tLQorICAgICAgICBsZWZ0IGNvcm5lci4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjpzY3JvbGxiYXJPZmZzZXQpOiBNb3ZlIHRoZSBob3Jpem9udGFsIHNjcm9sbGJh
cgorICAgICAgICBvZiBhbiBSVEwgY29udHJvbCBhdCBpdHMgbGVmdCBzaWRlIGFuZCBtb3ZlIGl0
cyB2ZXJ0aWNhbCBzY3JvbGxiYXIgcmlnaHQKKyAgICAgICAgYnkgdGhlIHdpZHRoIG9mIHRoZSBo
b3Jpem9udGFsIHNjcm9sbGJhci4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjppbnZh
bGlkYXRlU2Nyb2xsYmFyUmVjdCk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OnBvc2l0aW9uT3ZlcmZsb3dDb250cm9scyk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OmhpdFRlc3RPdmVyZmxvd0NvbnRyb2xzKTogZGl0dG8uCisKIDIwMTEtMDMt
MjggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBNYWNpZWogU3RhY2hvd2lhay4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcAkocmV2aXNpb24gODIwODgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQ1LDYgKzE3NDUsMTEgQEAgaW50
IFJlbmRlckJsb2NrOjplc3RpbWF0ZUxvZ2ljYWxUb3BQb3NpdAogdm9pZCBSZW5kZXJCbG9jazo6
ZGV0ZXJtaW5lTG9naWNhbExlZnRQb3NpdGlvbkZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpCiB7
CiAgICAgaW50IHN0YXJ0UG9zaXRpb24gPSBib3JkZXJTdGFydCgpICsgcGFkZGluZ1N0YXJ0KCk7
CisgICAgLy8gTW92ZSB0aGUgY2hpbGRyZW4gcmlnaHQgd2hlbiB3ZSBzaG93IGEgaG9yaXpvbnRh
bCBzY3JvbGxiYXIgYXQgdGhlIGxlZnQgc2lkZS4KKyAgICAvLyAoV2UgbmVlZCB0byBkZWNyZWFz
ZSB0aGUgc3RhcnQgcG9zaXRpb24gdG8gbW92ZSB0aGUgY2hpbGRyZW4gcmlnaHQgYmVjYXVzZQor
ICAgIC8vIHRoaXMgdmFsdWUgcmVwcmVzZW50cyB0aGUgcmlnaHQgc2lkZSB3aGVuIHRoZSB0ZXh0
IGRpcmVjdGlvbiBpcyBydGwuKQorICAgIGlmIChzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5n
TW9kZSgpICYmICFzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCisgICAgICAgIHN0
YXJ0UG9zaXRpb24gLT0gdmVydGljYWxTY3JvbGxiYXJXaWR0aCgpOwogICAgIGludCB0b3RhbEF2
YWlsYWJsZUxvZ2ljYWxXaWR0aCA9IGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSArIGF2
YWlsYWJsZUxvZ2ljYWxXaWR0aCgpOwogCiAgICAgLy8gQWRkIGluIG91ciBzdGFydCBtYXJnaW4u
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24gODIw
ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDc2LDYgKzQ3NiwxMyBAQCB2b2lkIFJlbmRlckJveDo6dXBkYXRlTGF5ZXJUcmFu
c2Zvcm0oKQogICAgICAgICBsYXllcigpLT51cGRhdGVUcmFuc2Zvcm0oKTsKIH0KIAorSW50UmVj
dCBSZW5kZXJCb3g6OmNvbnRlbnRCb3hSZWN0KCkgY29uc3QgeworICAgIGludCB4ID0gYm9yZGVy
TGVmdCgpICsgcGFkZGluZ0xlZnQoKTsKKyAgICBpZiAoIXN0eWxlKCktPmlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKSkKKyAgICAgICAgeCArPSB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKCk7CisgICAg
cmV0dXJuIEludFJlY3QoeCwgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCksIGNvbnRlbnRXaWR0
aCgpLCBjb250ZW50SGVpZ2h0KCkpOworfQorCiBJbnRSZWN0IFJlbmRlckJveDo6YWJzb2x1dGVD
b250ZW50Qm94KCkgY29uc3QKIHsKICAgICBJbnRSZWN0IHJlY3QgPSBjb250ZW50Qm94UmVjdCgp
OwpAQCAtMTExNyw2ICsxMTI0LDkgQEAgSW50UmVjdCBSZW5kZXJCb3g6Om92ZXJmbG93Q2xpcFJl
Y3QoaW50IAogCiAgICAgLy8gU3VidHJhY3Qgb3V0IHNjcm9sbGJhcnMgaWYgd2UgaGF2ZSB0aGVt
LgogICAgIGlmIChsYXllcigpKSB7CisgICAgICAgIC8vIEFkdmFuY2UgdGhlIHggcG9zaXRpb24g
d2hlbiB3ZSBzaG93IGEgaG9yaXpvbnRhbCBzY3JvbGxiYXIgYXQgdGhlIGxlZnQgc2lkZSBvZiB0
aGlzIGJveC4KKyAgICAgICAgaWYgKCFzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkp
CisgICAgICAgICAgICBjbGlwWCArPSBsYXllcigpLT52ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKHJl
bGV2YW5jeSk7CiAgICAgICAgIGNsaXBXaWR0aCAtPSBsYXllcigpLT52ZXJ0aWNhbFNjcm9sbGJh
cldpZHRoKHJlbGV2YW5jeSk7CiAgICAgICAgIGNsaXBIZWlnaHQgLT0gbGF5ZXIoKS0+aG9yaXpv
bnRhbFNjcm9sbGJhckhlaWdodChyZWxldmFuY3kpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmgJKHJldmlzaW9uIDgyMDg4KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNyArMTE0LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgSW50UmVjdCBib3JkZXJCb3VuZGluZ0JveCgpIGNvbnN0IHsg
cmV0dXJuIGJvcmRlckJveFJlY3QoKTsgfSAKIAogICAgIC8vIFRoZSBjb250ZW50IGFyZWEgb2Yg
dGhlIGJveCAoZXhjbHVkZXMgcGFkZGluZyBhbmQgYm9yZGVyKS4KLSAgICBJbnRSZWN0IGNvbnRl
bnRCb3hSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChib3JkZXJMZWZ0KCkgKyBwYWRkaW5n
TGVmdCgpLCBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSwgY29udGVudFdpZHRoKCksIGNvbnRl
bnRIZWlnaHQoKSk7IH0KKyAgICBJbnRSZWN0IGNvbnRlbnRCb3hSZWN0KCkgY29uc3Q7CiAgICAg
Ly8gVGhlIGNvbnRlbnQgYm94IGluIGFic29sdXRlIGNvb3Jkcy4gSWdub3JlcyB0cmFuc2Zvcm1z
LgogICAgIEludFJlY3QgYWJzb2x1dGVDb250ZW50Qm94KCkgY29uc3Q7CiAgICAgLy8gVGhlIGNv
bnRlbnQgYm94IGNvbnZlcnRlZCB0byBhYnNvbHV0ZSBjb29yZHMgKHRha2luZyB0cmFuc2Zvcm1z
IGludG8gYWNjb3VudCkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAJKHJldmlzaW9uIDgyMDg4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5NSw4ICsxNjk1LDggQEAgc3RhdGljIElu
dFJlY3QgY29ybmVyUmVjdChjb25zdCBSZW5kZXJMYQogICAgICAgICBob3Jpem9udGFsVGhpY2tu
ZXNzID0gbGF5ZXItPnZlcnRpY2FsU2Nyb2xsYmFyKCktPndpZHRoKCk7CiAgICAgICAgIHZlcnRp
Y2FsVGhpY2tuZXNzID0gbGF5ZXItPmhvcml6b250YWxTY3JvbGxiYXIoKS0+aGVpZ2h0KCk7CiAg
ICAgfQotICAgIHJldHVybiBJbnRSZWN0KGJvdW5kcy5tYXhYKCkgLSBob3Jpem9udGFsVGhpY2tu
ZXNzIC0gbGF5ZXItPnJlbmRlcmVyKCktPnN0eWxlKCktPmJvcmRlclJpZ2h0V2lkdGgoKSwgCi0g
ICAgICAgICAgICAgICAgICAgYm91bmRzLm1heFkoKSAtIHZlcnRpY2FsVGhpY2tuZXNzIC0gbGF5
ZXItPnJlbmRlcmVyKCktPnN0eWxlKCktPmJvcmRlckJvdHRvbVdpZHRoKCksCisgICAgaW50IHgg
PSBsYXllci0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8g
Ym91bmRzLm1heFgoKSAtIGhvcml6b250YWxUaGlja25lc3MgLSBsYXllci0+cmVuZGVyZXIoKS0+
c3R5bGUoKS0+Ym9yZGVyUmlnaHRXaWR0aCgpIDogYm91bmRzLngoKSArIGxheWVyLT5yZW5kZXJl
cigpLT5zdHlsZSgpLT5ib3JkZXJMZWZ0V2lkdGgoKTsKKyAgICByZXR1cm4gSW50UmVjdCh4LCBi
b3VuZHMubWF4WSgpIC0gdmVydGljYWxUaGlja25lc3MgLSBsYXllci0+cmVuZGVyZXIoKS0+c3R5
bGUoKS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFs
VGhpY2tuZXNzLCB2ZXJ0aWNhbFRoaWNrbmVzcyk7CiB9CiAKQEAgLTE4MDYsMTEgKzE4MDYsMTcg
QEAgSW50U2l6ZSBSZW5kZXJMYXllcjo6c2Nyb2xsYmFyT2Zmc2V0KGNvbgogewogICAgIFJlbmRl
ckJveCogYm94ID0gcmVuZGVyQm94KCk7CiAKLSAgICBpZiAoc2Nyb2xsYmFyID09IG1fdkJhci5n
ZXQoKSkKLSAgICAgICAgcmV0dXJuIEludFNpemUoYm94LT53aWR0aCgpIC0gYm94LT5ib3JkZXJS
aWdodCgpIC0gc2Nyb2xsYmFyLT53aWR0aCgpLCBib3gtPmJvcmRlclRvcCgpKTsKKyAgICBpZiAo
c2Nyb2xsYmFyID09IG1fdkJhci5nZXQoKSkgeworICAgICAgICBpbnQgeCA9IHJlbmRlcmVyKCkt
PnN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGJveC0+d2lkdGgoKSAtIGJveC0+
Ym9yZGVyUmlnaHQoKSAtIHNjcm9sbGJhci0+d2lkdGgoKSA6IGJveC0+Ym9yZGVyTGVmdCgpOwor
ICAgICAgICByZXR1cm4gSW50U2l6ZSh4LCBib3gtPmJvcmRlclRvcCgpKTsKKyAgICB9CiAKLSAg
ICBpZiAoc2Nyb2xsYmFyID09IG1faEJhci5nZXQoKSkKLSAgICAgICAgcmV0dXJuIEludFNpemUo
Ym94LT5ib3JkZXJMZWZ0KCksIGJveC0+aGVpZ2h0KCkgLSBib3gtPmJvcmRlckJvdHRvbSgpIC0g
c2Nyb2xsYmFyLT5oZWlnaHQoKSk7CisgICAgaWYgKHNjcm9sbGJhciA9PSBtX2hCYXIuZ2V0KCkp
IHsKKyAgICAgICAgaW50IHggPSBib3gtPmJvcmRlckxlZnQoKTsKKyAgICAgICAgaWYgKG1fdkJh
ci5nZXQoKSAmJiAhcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
KQorICAgICAgICAgICAgeCArPSBtX3ZCYXItPndpZHRoKCk7CisgICAgICAgIHJldHVybiBJbnRT
aXplKHgsIGJveC0+aGVpZ2h0KCkgLSBib3gtPmJvcmRlckJvdHRvbSgpIC0gc2Nyb2xsYmFyLT5o
ZWlnaHQoKSk7CisgICAgfQogICAgIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBJbnRTaXplKCk7CkBAIC0xODIxLDEwICsxODI3LDE1IEBAIHZvaWQgUmVuZGVyTGF5ZXI6
OmludmFsaWRhdGVTY3JvbGxiYXJSZWMKICAgICBJbnRSZWN0IHNjcm9sbFJlY3QgPSByZWN0Owog
ICAgIFJlbmRlckJveCogYm94ID0gcmVuZGVyQm94KCk7CiAgICAgQVNTRVJUKGJveCk7Ci0gICAg
aWYgKHNjcm9sbGJhciA9PSBtX3ZCYXIuZ2V0KCkpCi0gICAgICAgIHNjcm9sbFJlY3QubW92ZShi
b3gtPndpZHRoKCkgLSBib3gtPmJvcmRlclJpZ2h0KCkgLSBzY3JvbGxiYXItPndpZHRoKCksIGJv
eC0+Ym9yZGVyVG9wKCkpOwotICAgIGVsc2UKLSAgICAgICAgc2Nyb2xsUmVjdC5tb3ZlKGJveC0+
Ym9yZGVyTGVmdCgpLCBib3gtPmhlaWdodCgpIC0gYm94LT5ib3JkZXJCb3R0b20oKSAtIHNjcm9s
bGJhci0+aGVpZ2h0KCkpOworICAgIGlmIChzY3JvbGxiYXIgPT0gbV92QmFyLmdldCgpKSB7Cisg
ICAgICAgIGludCB4ID0gcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpID8gYm94LT53aWR0aCgpIC0gYm94LT5ib3JkZXJSaWdodCgpIC0gc2Nyb2xsYmFyLT53aWR0
aCgpIDogYm94LT5ib3JkZXJMZWZ0KCk7CisgICAgICAgIEludFNpemUoeCwgYm94LT5ib3JkZXJU
b3AoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW50IHggPSBib3gtPmJvcmRlckxlZnQoKTsK
KyAgICAgICAgaWYgKG1fdkJhci5nZXQoKSAmJiAhcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpKQorICAgICAgICAgICAgeCArPSBtX3ZCYXItPndpZHRoKCk7Cisg
ICAgICAgIHNjcm9sbFJlY3QubW92ZSh4LCBib3gtPmhlaWdodCgpIC0gYm94LT5ib3JkZXJCb3R0
b20oKSAtIHNjcm9sbGJhci0+aGVpZ2h0KCkpOworICAgIH0KICAgICByZW5kZXJlcigpLT5yZXBh
aW50UmVjdGFuZ2xlKHNjcm9sbFJlY3QpOwogfQogCkBAIC0xOTUwLDE3ICsxOTYxLDIzIEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OnBvc2l0aW9uT3ZlcmZsb3dDb250cm8KICAgICBJbnRSZWN0IGJvcmRl
ckJveCA9IGJveC0+Ym9yZGVyQm94UmVjdCgpOwogICAgIEludFJlY3Qgc2Nyb2xsQ29ybmVyKHNj
cm9sbENvcm5lclJlY3QodGhpcywgYm9yZGVyQm94KSk7CiAgICAgSW50UmVjdCBhYnNCb3VuZHMo
Ym9yZGVyQm94LngoKSArIHR4LCBib3JkZXJCb3gueSgpICsgdHksIGJvcmRlckJveC53aWR0aCgp
LCBib3JkZXJCb3guaGVpZ2h0KCkpOwotICAgIGlmIChtX3ZCYXIpCi0gICAgICAgIG1fdkJhci0+
c2V0RnJhbWVSZWN0KEludFJlY3QoYWJzQm91bmRzLm1heFgoKSAtIGJveC0+Ym9yZGVyUmlnaHQo
KSAtIG1fdkJhci0+d2lkdGgoKSwKKyAgICBpZiAobV92QmFyKSB7CisgICAgICAgIGludCB4ID0g
cmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gYWJzQm91bmRz
Lm1heFgoKSAtIGJveC0+Ym9yZGVyUmlnaHQoKSAtIG1fdkJhci0+d2lkdGgoKSA6IGFic0JvdW5k
cy54KCkgKyBib3gtPmJvcmRlckxlZnQoKTsKKyAgICAgICAgbV92QmFyLT5zZXRGcmFtZVJlY3Qo
SW50UmVjdCh4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic0JvdW5k
cy55KCkgKyBib3gtPmJvcmRlclRvcCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fdkJhci0+d2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhYnNCb3VuZHMuaGVpZ2h0KCkgLSAoYm94LT5ib3JkZXJUb3AoKSArIGJveC0+Ym9yZGVy
Qm90dG9tKCkpIC0gc2Nyb2xsQ29ybmVyLmhlaWdodCgpKSk7CisgICAgfQogCi0gICAgaWYgKG1f
aEJhcikKLSAgICAgICAgbV9oQmFyLT5zZXRGcmFtZVJlY3QoSW50UmVjdChhYnNCb3VuZHMueCgp
ICsgYm94LT5ib3JkZXJMZWZ0KCksCisgICAgaWYgKG1faEJhcikgeworICAgICAgICBpbnQgeCA9
IGFic0JvdW5kcy54KCkgKyBib3gtPmJvcmRlckxlZnQoKTsKKyAgICAgICAgaWYgKG1fdkJhci5n
ZXQoKSAmJiAhcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQor
ICAgICAgICAgICAgeCArPSBtX3ZCYXItPndpZHRoKCk7CisgICAgICAgIG1faEJhci0+c2V0RnJh
bWVSZWN0KEludFJlY3QoeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
YnNCb3VuZHMubWF4WSgpIC0gYm94LT5ib3JkZXJCb3R0b20oKSAtIG1faEJhci0+aGVpZ2h0KCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzQm91bmRzLndpZHRoKCkg
LSAoYm94LT5ib3JkZXJMZWZ0KCkgKyBib3gtPmJvcmRlclJpZ2h0KCkpIC0gc2Nyb2xsQ29ybmVy
LndpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9oQmFyLT5o
ZWlnaHQoKSkpOworICAgIH0KICAgICAKICAgICBpZiAobV9zY3JvbGxDb3JuZXIpCiAgICAgICAg
IG1fc2Nyb2xsQ29ybmVyLT5zZXRGcmFtZVJlY3Qoc2Nyb2xsQ29ybmVyKTsKQEAgLTIzMTMsNyAr
MjMzMCw4IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmhpdFRlc3RPdmVyZmxvd0NvbnRyb2wKICAgICBp
bnQgcmVzaXplQ29udHJvbFNpemUgPSBtYXgocmVzaXplQ29udHJvbFJlY3QuaGVpZ2h0KCksIDAp
OwogCiAgICAgaWYgKG1fdkJhcikgewotICAgICAgICBJbnRSZWN0IHZCYXJSZWN0KGJveC0+d2lk
dGgoKSAtIGJveC0+Ym9yZGVyUmlnaHQoKSAtIG1fdkJhci0+d2lkdGgoKSwgCisgICAgICAgIGlu
dCB4ID0gcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gYm94
LT53aWR0aCgpIC0gYm94LT5ib3JkZXJSaWdodCgpIC0gbV92QmFyLT53aWR0aCgpIDogYm94LT5i
b3JkZXJMZWZ0KCk7CisgICAgICAgIEludFJlY3QgdkJhclJlY3QoeCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBib3gtPmJvcmRlclRvcCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgIG1f
dkJhci0+d2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBib3gtPmhlaWdodCgpIC0g
KGJveC0+Ym9yZGVyVG9wKCkgKyBib3gtPmJvcmRlckJvdHRvbSgpKSAtIChtX2hCYXIgPyBtX2hC
YXItPmhlaWdodCgpIDogcmVzaXplQ29udHJvbFNpemUpKTsKQEAgLTIzMjUsNyArMjM0MywxMCBA
QCBib29sIFJlbmRlckxheWVyOjpoaXRUZXN0T3ZlcmZsb3dDb250cm9sCiAKICAgICByZXNpemVD
b250cm9sU2l6ZSA9IG1heChyZXNpemVDb250cm9sUmVjdC53aWR0aCgpLCAwKTsKICAgICBpZiAo
bV9oQmFyKSB7Ci0gICAgICAgIEludFJlY3QgaEJhclJlY3QoYm94LT5ib3JkZXJMZWZ0KCksCisg
ICAgICAgIGludCB4ID0gYm94LT5ib3JkZXJMZWZ0KCk7CisgICAgICAgIGlmIChtX3ZCYXIuZ2V0
KCkgJiYgIXJlbmRlcmVyKCktPnN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKKyAg
ICAgICAgICAgIHggKz0gbV92QmFyLT53aWR0aCgpOworICAgICAgICBJbnRSZWN0IGhCYXJSZWN0
KHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYm94LT5oZWlnaHQoKSAtIGJveC0+Ym9yZGVy
Qm90dG9tKCkgLSBtX2hCYXItPmhlaWdodCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGJv
eC0+d2lkdGgoKSAtIChib3gtPmJvcmRlckxlZnQoKSArIGJveC0+Ym9yZGVyUmlnaHQoKSkgLSAo
bV92QmFyID8gbV92QmFyLT53aWR0aCgpIDogcmVzaXplQ29udHJvbFNpemUpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgIG1faEJhci0+aGVpZ2h0KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87748</attachid>
            <date>2011-03-31 09:30:50 -0700</date>
            <delta_ts>2011-04-08 04:08:27 -0700</delta_ts>
            <desc>A trial change</desc>
            <filename>issue54623-patch2.txt</filename>
            <type>text/plain</type>
            <size>24838</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyNTgyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTEtMDMtMzEgIEhpcm9ub3Jp
IEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGFuICctd2Via2l0LW92ZXJmbG93LWRpcmVjdGlvbicg
cHJvcGVydHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NDYyMworCisgICAgICAgIFRoaXMgY2hhbmdlIGFkZHMgYSBDU1MgcHJvcGVydHkgJy13ZWJr
aXQtb3ZlcmZsb3ctZGlyZWN0aW9uJyBwcm9wZXJ0eSB0bworICAgICAgICBtb3ZlIHRoZSB2ZXJ0
aWNhbCBzY3JvbGxiYXIgYW5kIGEgcmVzaXplciBvZiBhbiBlbGVtZW50IHRvIHRoZSBsZWZ0IHNp
ZGUKKyAgICAgICAgd2hlbiBib3RoIGl0cyB2YWx1ZSBhbmQgZGllY3Rpb24gdmFsdWUgaXMgcnRs
LiAKKworICAgICAgICBUZXN0czogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLW92ZXJmbG93
LWRpdi5odG1sCisgICAgICAgICAgICAgICBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ydGwtb3Zl
cmZsb3ctdGV4dGFyZWEuaHRtbAorCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKiBjc3Mv
Q1NTUHJvcGVydHlOYW1lcy5pbjoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmFkZE92ZXJmbG93RnJvbVBvc2l0aW9uZWRPYmplY3RzKTogTW92ZSBjaGlsZAor
ICAgICAgICBlbGVtZW50cyByaWdodCB3aGVuIHdlIHVzZSBhIGxlZnQtaGFuZCBzY3JvbGxiYXIu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZGV0ZXJtaW5lTG9naWNhbExlZnRQb3Np
dGlvbkZvckNoaWxkKTogTW92ZSBjaGlsZAorICAgICAgICBlbGVtZW50cyByaWdodCB3aGVuIHdl
IHVzZSBhIGxlZnQtaGFuZCBzY3JvbGxiYXIuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om92ZXJmbG93Q2xpcFJlY3QpOiBN
b3ZlIHRoZSBjbGlwcGluZyByZWN0YW5nbGUgcmlnaHQKKyAgICAgICAgd2hlbiB3ZSB1c2UgYSBs
ZWZ0LWhhbmQgc2Nyb2xsYmFyLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29udGVudEJveFJlY3QpOiBNb3ZlIHRoZSBjb250
ZW50IHJlY3RhbmdsZSByaWdodCB3aGVuCisgICAgICAgIHdlIHVzZSBhIGxlZnQtaGFuZCBzY3Jv
bGxiYXIuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvcm5lclJlY3QpOiBNb3ZlIGEgcmVzaXplciBjb250cm9sIHRvIHRoZSBib3R0b20t
bGVmdCBjb3JuZXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsYmFyT2Zm
c2V0KTogU2hvdyBhIHZlcnRpY2FsIHNjcm9sbGJhciB0bworICAgICAgICB0aGUgbGVmdCBzaWRl
IGFuZCBtb3ZlIGl0cyBob3Jpem9udGFsIHNjcm9sbGJhciByaWdodCBieSB0aGUgd2lkdGggb2Yg
dGhlCisgICAgICAgIHZlcnRpY2FsIHNjcm9sbGJhci4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjppbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdCk6IGRpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnBvc2l0aW9uT3ZlcmZsb3dDb250cm9scyk6IGRpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RPdmVyZmxvd0NvbnRyb2xzKTogZGl0dG8u
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6IEFkZGVkIGFjY2Vzc29y
IGZ1bmN0aW9ucyB0byBoYW5kbGUKKyAgICAgICAgJy13ZWJraXQtb3ZlcmZsb3ctZGlyZWN0aW9u
Jy4KKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpvdmVyZmxvd0RpcmVjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6aXNTaG93U2Nyb2xsYmFyT25MZWZ0
KToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzZXRPdmVyZmxvd0RpcmVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6aW5pdGlhbE92ZXJmbG93RGly
ZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0
YS5jcHA6IEFkZGVkIGEgb3ZlcmZsb3dEaXJlY3Rpb24gZmxhZy4KKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaDogZGl0dG8uCisKIDIw
MTEtMDMtMzEgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDgyNTQ5
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE3NjMsNiArMTc2Myw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5z
Zm9ybU9yaWdpblk6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1Pcmln
aW5aOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbjoKKyAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE92ZXJmbG93RGlyZWN0aW9uOgogICAgICAgICAgICAgYnJl
YWs7CiAjaWYgRU5BQkxFKFNWRykKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUNsaXBQYXRoOgpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDgyNTQ5KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NzcsNiArMTU3
NywxMCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBiCiAgICAgICAg
IGlmIChpZCA9PSBDU1NWYWx1ZUxvZ2ljYWwgfHwgaWQgPT0gQ1NTVmFsdWVWaXN1YWwpCiAgICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRPdmVyZmxvd0RpcmVjdGlvbjoKKyAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlTHRyIHx8IGlkID09IENTU1ZhbHVlUnRsKQorICAgICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB0cnVlOworICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRG
b250U2l6ZURlbHRhOiAgICAgICAgICAgLy8gPGxlbmd0aD4KICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGgsIG1fc3RyaWN0KTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCShyZXZpc2lvbiA4MjU0OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yODEsNiAr
MjgxLDcgQEAgei1pbmRleAogLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW4teAogLXdlYmtpdC1w
ZXJzcGVjdGl2ZS1vcmlnaW4teQogLXdlYmtpdC1ydGwtb3JkZXJpbmcKKy13ZWJraXQtb3ZlcmZs
b3ctZGlyZWN0aW9uCiAtd2Via2l0LXRleHQtY29tYmluZQogLXdlYmtpdC10ZXh0LWRlY29yYXRp
b25zLWluLWVmZmVjdAogLXdlYmtpdC10ZXh0LWVtcGhhc2lzCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA4MjU0OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTc5Miw2ICs1
NzkyLDEyIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgbV9zdHlsZS0+c2V0VmlzdWFsbHlPcmRlcmVkKHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlVmlzdWFsKTsKICAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRPdmVyZmxvd0RpcmVjdGlvbjoKKyAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwob3ZlcmZsb3dEaXJlY3Rpb24sIE92ZXJmbG93RGly
ZWN0aW9uKQorICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlIHx8ICFwcmltaXRpdmVWYWx1ZS0+
Z2V0SWRlbnQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9zdHlsZS0+c2V0T3Zl
cmZsb3dEaXJlY3Rpb24ocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVSdGwg
PyBSVEwgOiBMVFIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRleHRTdHJva2VXaWR0aDogewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0
ZXh0U3Ryb2tlV2lkdGgsIFRleHRTdHJva2VXaWR0aCkKICAgICAgICAgZmxvYXQgd2lkdGggPSAw
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCShyZXZpc2lv
biA4MjU0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE0MDgsOCArMTQwOCwxNCBAQCB2b2lkIFJlbmRlckJsb2NrOjphZGRP
dmVyZmxvd0Zyb21Qb3NpdGlvCiAgICAgICAgIHBvc2l0aW9uZWRPYmplY3QgPSAqaXQ7CiAgICAg
ICAgIAogICAgICAgICAvLyBGaXhlZCBwb3NpdGlvbmVkIGVsZW1lbnRzIGRvbid0IGNvbnRyaWJ1
dGUgdG8gbGF5b3V0IG92ZXJmbG93LCBzaW5jZSB0aGV5IGRvbid0IHNjcm9sbCB3aXRoIHRoZSBj
b250ZW50LgotICAgICAgICBpZiAocG9zaXRpb25lZE9iamVjdC0+c3R5bGUoKS0+cG9zaXRpb24o
KSAhPSBGaXhlZFBvc2l0aW9uKQotICAgICAgICAgICAgYWRkT3ZlcmZsb3dGcm9tQ2hpbGQocG9z
aXRpb25lZE9iamVjdCk7CisgICAgICAgIC8vIFdlIGFsc28gbW92ZSB0aGUgY2hpbGQgcmlnaHQg
YnkgdGhlIHdpZHRoIG9mIGEgdmVydGljYWwgc2Nyb2xsYmFyIHdoZW4gd2Ugc2hvdyBpdCBvbiB0
aGUgbGVmdCBzaWRlLgorICAgICAgICAvLyAoV2UgbmVlZCB0byBkZWNyZWFzZSB4IHRvIG1vdmUg
dGhlIGNoaWxkIHJpZ2h0IGJlY2F1c2Ugd2UgbWlycm9yIHRoZSB4IGNvb3JkaW5hdGUgd2hlbiB0
aGUgZGlyZWN0aW9uIGlzIFJUTC4pCisgICAgICAgIGlmIChwb3NpdGlvbmVkT2JqZWN0LT5zdHls
ZSgpLT5wb3NpdGlvbigpICE9IEZpeGVkUG9zaXRpb24pIHsKKyAgICAgICAgICAgIGludCB4ID0g
cG9zaXRpb25lZE9iamVjdC0+eCgpOworICAgICAgICAgICAgaWYgKHN0eWxlKCktPmlzU2hvd1Nj
cm9sbGJhck9uTGVmdCgpKQorICAgICAgICAgICAgICAgIHggLT0gdmVydGljYWxTY3JvbGxiYXJX
aWR0aCgpOworICAgICAgICAgICAgYWRkT3ZlcmZsb3dGcm9tQ2hpbGQocG9zaXRpb25lZE9iamVj
dCwgSW50U2l6ZSh4LCBwb3NpdGlvbmVkT2JqZWN0LT55KCkpKTsKKyAgICAgICAgfQogICAgIH0K
IH0KIApAQCAtMTc0Niw2ICsxNzUyLDExIEBAIGludCBSZW5kZXJCbG9jazo6ZXN0aW1hdGVMb2dp
Y2FsVG9wUG9zaXQKIHZvaWQgUmVuZGVyQmxvY2s6OmRldGVybWluZUxvZ2ljYWxMZWZ0UG9zaXRp
b25Gb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKQogewogICAgIGludCBzdGFydFBvc2l0aW9uID0g
Ym9yZGVyU3RhcnQoKSArIHBhZGRpbmdTdGFydCgpOworICAgIC8vIE1vdmUgdGhlIGNoaWxkcmVu
IHJpZ2h0IHdoZW4gd2Ugc2hvdyBhIGhvcml6b250YWwgc2Nyb2xsYmFyIGF0IHRoZSBsZWZ0IHNp
ZGUuCisgICAgLy8gKFdlIG5lZWQgdG8gZGVjcmVhc2Ugc3RhcnRQb3NpdGlvbiBoZXJlIGJlY2F1
c2Ugd2UgbWlycm9yIHRoZSB4IGNvb3JkaWNhdGUKKyAgICAvLyB3aGVuIHRoZSB0ZXh0IGRpcmVj
dGlvbiBpcyBSVEwuKQorICAgIGlmIChzdHlsZSgpLT5pc1Nob3dTY3JvbGxiYXJPbkxlZnQoKSkK
KyAgICAgICAgc3RhcnRQb3NpdGlvbiAtPSB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKCk7CiAgICAg
aW50IHRvdGFsQXZhaWxhYmxlTG9naWNhbFdpZHRoID0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxX
aWR0aCgpICsgYXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7CiAKICAgICAvLyBBZGQgaW4gb3VyIHN0
YXJ0IG1hcmdpbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShy
ZXZpc2lvbiA4MjU0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTE2LDcgKzExMTYsMTAgQEAgSW50UmVjdCBSZW5kZXJCb3g6
Om92ZXJmbG93Q2xpcFJlY3QoaW50IAogICAgIGludCBjbGlwSGVpZ2h0ID0gaGVpZ2h0KCkgLSBi
VG9wIC0gYm9yZGVyQm90dG9tKCk7CiAKICAgICAvLyBTdWJ0cmFjdCBvdXQgc2Nyb2xsYmFycyBp
ZiB3ZSBoYXZlIHRoZW0uCisgICAgLy8gV2UgYWxzbyBhZHZhbmNlIHRoZSB4IHBvc2l0aW9uIHdo
ZW4gd2Ugc2hvdyBhIHZlcnRpY2FsIHNjcm9sbGJhciBhdCB0aGUgbGVmdCBzaWRlLgogICAgIGlm
IChsYXllcigpKSB7CisgICAgICAgIGlmIChzdHlsZSgpLT5pc1Nob3dTY3JvbGxiYXJPbkxlZnQo
KSkKKyAgICAgICAgICAgIGNsaXBYICs9IGxheWVyKCktPnZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgo
cmVsZXZhbmN5KTsKICAgICAgICAgY2xpcFdpZHRoIC09IGxheWVyKCktPnZlcnRpY2FsU2Nyb2xs
YmFyV2lkdGgocmVsZXZhbmN5KTsKICAgICAgICAgY2xpcEhlaWdodCAtPSBsYXllcigpLT5ob3Jp
em9udGFsU2Nyb2xsYmFySGVpZ2h0KHJlbGV2YW5jeSk7CiAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guaAkocmV2aXNpb24gODI1NDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTExNCw3ICsxMTQsMTQg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgSW50UmVjdCBib3JkZXJCb3VuZGluZ0JveCgpIGNvbnN0
IHsgcmV0dXJuIGJvcmRlckJveFJlY3QoKTsgfSAKIAogICAgIC8vIFRoZSBjb250ZW50IGFyZWEg
b2YgdGhlIGJveCAoZXhjbHVkZXMgcGFkZGluZyBhbmQgYm9yZGVyKS4KLSAgICBJbnRSZWN0IGNv
bnRlbnRCb3hSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChib3JkZXJMZWZ0KCkgKyBwYWRk
aW5nTGVmdCgpLCBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSwgY29udGVudFdpZHRoKCksIGNv
bnRlbnRIZWlnaHQoKSk7IH0KKyAgICBJbnRSZWN0IGNvbnRlbnRCb3hSZWN0KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIGludCB4ID0gYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKTsKKyAgICAg
ICAgaWYgKHN0eWxlKCktPmlzU2hvd1Njcm9sbGJhck9uTGVmdCgpKQorICAgICAgICAgICAgeCAr
PSB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKCk7CisgICAgICAgIHJldHVybiBJbnRSZWN0KHgsIGJv
cmRlclRvcCgpICsgcGFkZGluZ1RvcCgpLCBjb250ZW50V2lkdGgoKSwgY29udGVudEhlaWdodCgp
KTsKKyAgICB9CisKICAgICAvLyBUaGUgY29udGVudCBib3ggaW4gYWJzb2x1dGUgY29vcmRzLiBJ
Z25vcmVzIHRyYW5zZm9ybXMuCiAgICAgSW50UmVjdCBhYnNvbHV0ZUNvbnRlbnRCb3goKSBjb25z
dDsKICAgICAvLyBUaGUgY29udGVudCBib3ggY29udmVydGVkIHRvIGFic29sdXRlIGNvb3JkcyAo
dGFraW5nIHRyYW5zZm9ybXMgaW50byBhY2NvdW50KS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gODI1NDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjk1LDggKzE2
OTUsOSBAQCBzdGF0aWMgSW50UmVjdCBjb3JuZXJSZWN0KGNvbnN0IFJlbmRlckxhCiAgICAgICAg
IGhvcml6b250YWxUaGlja25lc3MgPSBsYXllci0+dmVydGljYWxTY3JvbGxiYXIoKS0+d2lkdGgo
KTsKICAgICAgICAgdmVydGljYWxUaGlja25lc3MgPSBsYXllci0+aG9yaXpvbnRhbFNjcm9sbGJh
cigpLT5oZWlnaHQoKTsKICAgICB9Ci0gICAgcmV0dXJuIEludFJlY3QoYm91bmRzLm1heFgoKSAt
IGhvcml6b250YWxUaGlja25lc3MgLSBsYXllci0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Ym9yZGVy
UmlnaHRXaWR0aCgpLCAKLSAgICAgICAgICAgICAgICAgICBib3VuZHMubWF4WSgpIC0gdmVydGlj
YWxUaGlja25lc3MgLSBsYXllci0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tV2lk
dGgoKSwKKyAgICBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUgPSBsYXllci0+cmVuZGVyZXIoKS0+
c3R5bGUoKTsKKyAgICBpbnQgeCA9IHN0eWxlLT5pc1Nob3dTY3JvbGxiYXJPbkxlZnQoKSA/IGJv
dW5kcy54KCkgKyBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgOiBib3VuZHMubWF4WCgpIC0gaG9y
aXpvbnRhbFRoaWNrbmVzcyAtIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCk7CisgICAgcmV0dXJu
IEludFJlY3QoeCwgYm91bmRzLm1heFkoKSAtIHZlcnRpY2FsVGhpY2tuZXNzIC0gc3R5bGUtPmJv
cmRlckJvdHRvbVdpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgaG9yaXpvbnRhbFRoaWNrbmVz
cywgdmVydGljYWxUaGlja25lc3MpOwogfQogCkBAIC0xODA2LDExICsxODA3LDE3IEBAIEludFNp
emUgUmVuZGVyTGF5ZXI6OnNjcm9sbGJhck9mZnNldChjb24KIHsKICAgICBSZW5kZXJCb3gqIGJv
eCA9IHJlbmRlckJveCgpOwogCi0gICAgaWYgKHNjcm9sbGJhciA9PSBtX3ZCYXIuZ2V0KCkpCi0g
ICAgICAgIHJldHVybiBJbnRTaXplKGJveC0+d2lkdGgoKSAtIGJveC0+Ym9yZGVyUmlnaHQoKSAt
IHNjcm9sbGJhci0+d2lkdGgoKSwgYm94LT5ib3JkZXJUb3AoKSk7CisgICAgaWYgKHNjcm9sbGJh
ciA9PSBtX3ZCYXIuZ2V0KCkpIHsKKyAgICAgICAgaW50IHggPSByZW5kZXJlcigpLT5zdHlsZSgp
LT5pc1Nob3dTY3JvbGxiYXJPbkxlZnQoKSA/IGJveC0+Ym9yZGVyTGVmdCgpIDogYm94LT53aWR0
aCgpIC0gYm94LT5ib3JkZXJSaWdodCgpIC0gc2Nyb2xsYmFyLT53aWR0aCgpOworICAgICAgICBy
ZXR1cm4gSW50U2l6ZSh4LCBib3gtPmJvcmRlclRvcCgpKTsKKyAgICB9CiAKLSAgICBpZiAoc2Ny
b2xsYmFyID09IG1faEJhci5nZXQoKSkKLSAgICAgICAgcmV0dXJuIEludFNpemUoYm94LT5ib3Jk
ZXJMZWZ0KCksIGJveC0+aGVpZ2h0KCkgLSBib3gtPmJvcmRlckJvdHRvbSgpIC0gc2Nyb2xsYmFy
LT5oZWlnaHQoKSk7CisgICAgaWYgKHNjcm9sbGJhciA9PSBtX2hCYXIuZ2V0KCkpIHsKKyAgICAg
ICAgaW50IHggPSBib3gtPmJvcmRlckxlZnQoKTsKKyAgICAgICAgaWYgKHJlbmRlcmVyKCktPnN0
eWxlKCktPmlzU2hvd1Njcm9sbGJhck9uTGVmdCgpKQorICAgICAgICAgICAgeCArPSBtX3ZCYXIg
PyBtX3ZCYXItPndpZHRoKCkgOiByZXNpemVyQ29ybmVyUmVjdCh0aGlzLCBib3gtPmJvcmRlckJv
eFJlY3QoKSkud2lkdGgoKTsKKyAgICAgICAgcmV0dXJuIEludFNpemUoeCwgYm94LT5oZWlnaHQo
KSAtIGJveC0+Ym9yZGVyQm90dG9tKCkgLSBzY3JvbGxiYXItPmhlaWdodCgpKTsKKyAgICB9CiAg
ICAgCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEludFNpemUoKTsKQEAg
LTE4MjEsMTAgKzE4MjgsMTUgQEAgdm9pZCBSZW5kZXJMYXllcjo6aW52YWxpZGF0ZVNjcm9sbGJh
clJlYwogICAgIEludFJlY3Qgc2Nyb2xsUmVjdCA9IHJlY3Q7CiAgICAgUmVuZGVyQm94KiBib3gg
PSByZW5kZXJCb3goKTsKICAgICBBU1NFUlQoYm94KTsKLSAgICBpZiAoc2Nyb2xsYmFyID09IG1f
dkJhci5nZXQoKSkKLSAgICAgICAgc2Nyb2xsUmVjdC5tb3ZlKGJveC0+d2lkdGgoKSAtIGJveC0+
Ym9yZGVyUmlnaHQoKSAtIHNjcm9sbGJhci0+d2lkdGgoKSwgYm94LT5ib3JkZXJUb3AoKSk7Ci0g
ICAgZWxzZQotICAgICAgICBzY3JvbGxSZWN0Lm1vdmUoYm94LT5ib3JkZXJMZWZ0KCksIGJveC0+
aGVpZ2h0KCkgLSBib3gtPmJvcmRlckJvdHRvbSgpIC0gc2Nyb2xsYmFyLT5oZWlnaHQoKSk7Cisg
ICAgaWYgKHNjcm9sbGJhciA9PSBtX3ZCYXIuZ2V0KCkpIHsKKyAgICAgICAgaW50IHggPSByZW5k
ZXJlcigpLT5zdHlsZSgpLT5pc1Nob3dTY3JvbGxiYXJPbkxlZnQoKSA/IGJveC0+Ym9yZGVyTGVm
dCgpIDogYm94LT53aWR0aCgpIC0gYm94LT5ib3JkZXJSaWdodCgpIC0gc2Nyb2xsYmFyLT53aWR0
aCgpOworICAgICAgICBJbnRTaXplKHgsIGJveC0+Ym9yZGVyVG9wKCkpOworICAgIH0gZWxzZSB7
CisgICAgICAgIGludCB4ID0gYm94LT5ib3JkZXJMZWZ0KCk7CisgICAgICAgIGlmIChyZW5kZXJl
cigpLT5zdHlsZSgpLT5pc1Nob3dTY3JvbGxiYXJPbkxlZnQoKSkKKyAgICAgICAgICAgIHggKz0g
bV92QmFyID8gbV92QmFyLT53aWR0aCgpIDogcmVzaXplckNvcm5lclJlY3QodGhpcywgYm94LT5i
b3JkZXJCb3hSZWN0KCkpLndpZHRoKCk7CisgICAgICAgIHNjcm9sbFJlY3QubW92ZSh4LCBib3gt
PmhlaWdodCgpIC0gYm94LT5ib3JkZXJCb3R0b20oKSAtIHNjcm9sbGJhci0+aGVpZ2h0KCkpOwor
ICAgIH0KICAgICByZW5kZXJlcigpLT5yZXBhaW50UmVjdGFuZ2xlKHNjcm9sbFJlY3QpOwogfQog
CkBAIC0xOTUwLDE3ICsxOTYyLDIzIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBvc2l0aW9uT3ZlcmZs
b3dDb250cm8KICAgICBJbnRSZWN0IGJvcmRlckJveCA9IGJveC0+Ym9yZGVyQm94UmVjdCgpOwog
ICAgIEludFJlY3Qgc2Nyb2xsQ29ybmVyKHNjcm9sbENvcm5lclJlY3QodGhpcywgYm9yZGVyQm94
KSk7CiAgICAgSW50UmVjdCBhYnNCb3VuZHMoYm9yZGVyQm94LngoKSArIHR4LCBib3JkZXJCb3gu
eSgpICsgdHksIGJvcmRlckJveC53aWR0aCgpLCBib3JkZXJCb3guaGVpZ2h0KCkpOwotICAgIGlm
IChtX3ZCYXIpCi0gICAgICAgIG1fdkJhci0+c2V0RnJhbWVSZWN0KEludFJlY3QoYWJzQm91bmRz
Lm1heFgoKSAtIGJveC0+Ym9yZGVyUmlnaHQoKSAtIG1fdkJhci0+d2lkdGgoKSwKKyAgICBpZiAo
bV92QmFyKSB7CisgICAgICAgIGludCB4ID0gcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNTaG93U2Ny
b2xsYmFyT25MZWZ0KCkgPyBhYnNCb3VuZHMueCgpICsgYm94LT5ib3JkZXJMZWZ0KCkgOiBhYnNC
b3VuZHMubWF4WCgpIC0gYm94LT5ib3JkZXJSaWdodCgpIC0gbV92QmFyLT53aWR0aCgpOworICAg
ICAgICBtX3ZCYXItPnNldEZyYW1lUmVjdChJbnRSZWN0KHgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWJzQm91bmRzLnkoKSArIGJveC0+Ym9yZGVyVG9wKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92QmFyLT53aWR0aCgpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic0JvdW5kcy5oZWlnaHQoKSAtIChib3gt
PmJvcmRlclRvcCgpICsgYm94LT5ib3JkZXJCb3R0b20oKSkgLSBzY3JvbGxDb3JuZXIuaGVpZ2h0
KCkpKTsKKyAgICB9CiAKLSAgICBpZiAobV9oQmFyKQotICAgICAgICBtX2hCYXItPnNldEZyYW1l
UmVjdChJbnRSZWN0KGFic0JvdW5kcy54KCkgKyBib3gtPmJvcmRlckxlZnQoKSwKKyAgICBpZiAo
bV9oQmFyKSB7CisgICAgICAgIGludCB4ID0gYWJzQm91bmRzLngoKSArIGJveC0+Ym9yZGVyTGVm
dCgpOworICAgICAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNTaG93U2Nyb2xsYmFyT25M
ZWZ0KCkpCisgICAgICAgICAgICB4ICs9IHNjcm9sbENvcm5lci53aWR0aCgpOworICAgICAgICBt
X2hCYXItPnNldEZyYW1lUmVjdChJbnRSZWN0KHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWJzQm91bmRzLm1heFkoKSAtIGJveC0+Ym9yZGVyQm90dG9tKCkgLSBtX2hC
YXItPmhlaWdodCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic0Jv
dW5kcy53aWR0aCgpIC0gKGJveC0+Ym9yZGVyTGVmdCgpICsgYm94LT5ib3JkZXJSaWdodCgpKSAt
IHNjcm9sbENvcm5lci53aWR0aCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1faEJhci0+aGVpZ2h0KCkpKTsKKyAgICB9CiAgICAgCiAgICAgaWYgKG1fc2Nyb2xsQ29y
bmVyKQogICAgICAgICBtX3Njcm9sbENvcm5lci0+c2V0RnJhbWVSZWN0KHNjcm9sbENvcm5lcik7
CkBAIC0yMzEzLDcgKzIzMzEsOCBAQCBib29sIFJlbmRlckxheWVyOjpoaXRUZXN0T3ZlcmZsb3dD
b250cm9sCiAgICAgaW50IHJlc2l6ZUNvbnRyb2xTaXplID0gbWF4KHJlc2l6ZUNvbnRyb2xSZWN0
LmhlaWdodCgpLCAwKTsKIAogICAgIGlmIChtX3ZCYXIpIHsKLSAgICAgICAgSW50UmVjdCB2QmFy
UmVjdChib3gtPndpZHRoKCkgLSBib3gtPmJvcmRlclJpZ2h0KCkgLSBtX3ZCYXItPndpZHRoKCks
IAorICAgICAgICBpbnQgeCA9IHJlbmRlcmVyKCktPnN0eWxlKCktPmlzU2hvd1Njcm9sbGJhck9u
TGVmdCgpID8gYm94LT5ib3JkZXJMZWZ0KCkgOiBib3gtPndpZHRoKCkgLSBib3gtPmJvcmRlclJp
Z2h0KCkgLSBtX3ZCYXItPndpZHRoKCk7CisgICAgICAgIEludFJlY3QgdkJhclJlY3QoeCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICBib3gtPmJvcmRlclRvcCgpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fdkJhci0+d2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBib3gt
PmhlaWdodCgpIC0gKGJveC0+Ym9yZGVyVG9wKCkgKyBib3gtPmJvcmRlckJvdHRvbSgpKSAtICht
X2hCYXIgPyBtX2hCYXItPmhlaWdodCgpIDogcmVzaXplQ29udHJvbFNpemUpKTsKQEAgLTIzMjUs
NyArMjM0NCwxMCBAQCBib29sIFJlbmRlckxheWVyOjpoaXRUZXN0T3ZlcmZsb3dDb250cm9sCiAK
ICAgICByZXNpemVDb250cm9sU2l6ZSA9IG1heChyZXNpemVDb250cm9sUmVjdC53aWR0aCgpLCAw
KTsKICAgICBpZiAobV9oQmFyKSB7Ci0gICAgICAgIEludFJlY3QgaEJhclJlY3QoYm94LT5ib3Jk
ZXJMZWZ0KCksCisgICAgICAgIGludCB4ID0gYm94LT5ib3JkZXJMZWZ0KCk7CisgICAgICAgIGlm
IChyZW5kZXJlcigpLT5zdHlsZSgpLT5pc1Nob3dTY3JvbGxiYXJPbkxlZnQoKSkKKyAgICAgICAg
ICAgIHggKz0gbV92QmFyID8gbV92QmFyLT53aWR0aCgpIDogcmVzaXplQ29udHJvbFNpemU7Cisg
ICAgICAgIEludFJlY3QgaEJhclJlY3QoeCwKICAgICAgICAgICAgICAgICAgICAgICAgICBib3gt
PmhlaWdodCgpIC0gYm94LT5ib3JkZXJCb3R0b20oKSAtIG1faEJhci0+aGVpZ2h0KCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm94LT53aWR0aCgpIC0gKGJveC0+Ym9yZGVyTGVmdCgpICsg
Ym94LT5ib3JkZXJSaWdodCgpKSAtIChtX3ZCYXIgPyBtX3ZCYXItPndpZHRoKCkgOiByZXNpemVD
b250cm9sU2l6ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgbV9oQmFyLT5oZWlnaHQoKSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAko
cmV2aXNpb24gODI1NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzgzLDYgKzc4Myw5IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiB3cml0aW5nTW9k
ZSgpID09IExlZnRUb1JpZ2h0V3JpdGluZ01vZGUgfHwgd3JpdGluZ01vZGUoKSA9PSBCb3R0b21U
b1RvcFdyaXRpbmdNb2RlOyB9CiAgICAgYm9vbCBpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIHdyaXRpbmdNb2RlKCkgPT0gUmlnaHRUb0xlZnRXcml0aW5nTW9kZSB8
fCB3cml0aW5nTW9kZSgpID09IEJvdHRvbVRvVG9wV3JpdGluZ01vZGU7IH0KIAorICAgIFRleHRE
aXJlY3Rpb24gb3ZlcmZsb3dEaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxU
ZXh0RGlyZWN0aW9uPihyYXJlSW5oZXJpdGVkRGF0YS0+b3ZlcmZsb3dEaXJlY3Rpb24pOyB9Cisg
ICAgYm9vbCBpc1Nob3dTY3JvbGxiYXJPbkxlZnQoKSBjb25zdCB7IHJldHVybiBvdmVyZmxvd0Rp
cmVjdGlvbigpID09IFJUTCAmJiBkaXJlY3Rpb24oKSA9PSBSVEw7IH0KKwogICAgIEVTcGVhayBz
cGVhaygpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEVTcGVhaz4ocmFyZUluaGVyaXRlZERhdGEtPnNw
ZWFrKTsgfQogICAgICAgICAKIC8vIGF0dHJpYnV0ZSBzZXR0ZXIgbWV0aG9kcwpAQCAtMTE3NSw2
ICsxMTc4LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRXcml0aW5nTW9kZShXcml0aW5nTW9k
ZSB2KSB7IGluaGVyaXRlZF9mbGFncy5tX3dyaXRpbmdNb2RlID0gdjsgfQogCisgICAgdm9pZCBz
ZXRPdmVyZmxvd0RpcmVjdGlvbihUZXh0RGlyZWN0aW9uIGIpIHsgU0VUX1ZBUihyYXJlSW5oZXJp
dGVkRGF0YSwgb3ZlcmZsb3dEaXJlY3Rpb24sIGIpIH0KKwogICAgIC8vIFRvIHRlbGwgaWYgdGhp
cyBzdHlsZSBtYXRjaGVkIGF0dHJpYnV0ZSBzZWxlY3RvcnMuIFRoaXMgbWFrZXMgaXQgaW1wb3Nz
aWJsZSB0byBzaGFyZS4KICAgICBib29sIGFmZmVjdGVkQnlBdHRyaWJ1dGVTZWxlY3RvcnMoKSBj
b25zdCB7IHJldHVybiBtX2FmZmVjdGVkQnlBdHRyaWJ1dGVTZWxlY3RvcnM7IH0KICAgICB2b2lk
IHNldEFmZmVjdGVkQnlBdHRyaWJ1dGVTZWxlY3RvcnMoKSB7IG1fYWZmZWN0ZWRCeUF0dHJpYnV0
ZVNlbGVjdG9ycyA9IHRydWU7IH0KQEAgLTEyMTUsNiArMTIyMCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgRUNsZWFyIGluaXRpYWxDbGVhcigpIHsgcmV0dXJuIENOT05FOyB9CiAgICAgc3RhdGlj
IFRleHREaXJlY3Rpb24gaW5pdGlhbERpcmVjdGlvbigpIHsgcmV0dXJuIExUUjsgfQogICAgIHN0
YXRpYyBXcml0aW5nTW9kZSBpbml0aWFsV3JpdGluZ01vZGUoKSB7IHJldHVybiBUb3BUb0JvdHRv
bVdyaXRpbmdNb2RlOyB9CisgICAgc3RhdGljIFRleHREaXJlY3Rpb24gIGluaXRpYWxPdmVyZmxv
d0RpcmVjdGlvbigpIHsgcmV0dXJuIExUUjsgfQogICAgIHN0YXRpYyBUZXh0Q29tYmluZSBpbml0
aWFsVGV4dENvbWJpbmUoKSB7IHJldHVybiBUZXh0Q29tYmluZU5vbmU7IH0KICAgICBzdGF0aWMg
VGV4dE9yaWVudGF0aW9uIGluaXRpYWxUZXh0T3JpZW50YXRpb24oKSB7IHJldHVybiBUZXh0T3Jp
ZW50YXRpb25WZXJ0aWNhbFJpZ2h0OyB9CiAgICAgc3RhdGljIEVEaXNwbGF5IGluaXRpYWxEaXNw
bGF5KCkgeyByZXR1cm4gSU5MSU5FOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCShyZXZpc2lv
biA4MjU0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhl
cml0ZWREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCBTdHlsZVJhcmVJ
bmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0CiAgICAgLCB0ZXh0RW1waGFzaXNNYXJrKFRl
eHRFbXBoYXNpc01hcmtOb25lKQogICAgICwgdGV4dEVtcGhhc2lzUG9zaXRpb24oVGV4dEVtcGhh
c2lzUG9zaXRpb25PdmVyKQogICAgICwgbV9saW5lQm94Q29udGFpbihSZW5kZXJTdHlsZTo6aW5p
dGlhbExpbmVCb3hDb250YWluKCkpCisgICAgLCBvdmVyZmxvd0RpcmVjdGlvbihMVFIpCiAgICAg
LCBoeXBoZW5hdGlvbkxpbWl0QmVmb3JlKC0xKQogICAgICwgaHlwaGVuYXRpb25MaW1pdEFmdGVy
KC0xKQogewpAQCAtODcsNiArODgsNyBAQCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJh
cmVJbmhlcml0CiAgICAgLCB0ZXh0RW1waGFzaXNNYXJrKG8udGV4dEVtcGhhc2lzTWFyaykKICAg
ICAsIHRleHRFbXBoYXNpc1Bvc2l0aW9uKG8udGV4dEVtcGhhc2lzUG9zaXRpb24pCiAgICAgLCBt
X2xpbmVCb3hDb250YWluKG8ubV9saW5lQm94Q29udGFpbikKKyAgICAsIG92ZXJmbG93RGlyZWN0
aW9uKG8ub3ZlcmZsb3dEaXJlY3Rpb24pCiAgICAgLCBoeXBoZW5hdGlvblN0cmluZyhvLmh5cGhl
bmF0aW9uU3RyaW5nKQogICAgICwgaHlwaGVuYXRpb25MaW1pdEJlZm9yZShvLmh5cGhlbmF0aW9u
TGltaXRCZWZvcmUpCiAgICAgLCBoeXBoZW5hdGlvbkxpbWl0QWZ0ZXIoby5oeXBoZW5hdGlvbkxp
bWl0QWZ0ZXIpCkBAIC0xNDAsNiArMTQyLDcgQEAgYm9vbCBTdHlsZVJhcmVJbmhlcml0ZWREYXRh
OjpvcGVyYXRvcj09KAogICAgICAgICAmJiB0ZXh0RW1waGFzaXNNYXJrID09IG8udGV4dEVtcGhh
c2lzTWFyawogICAgICAgICAmJiB0ZXh0RW1waGFzaXNQb3NpdGlvbiA9PSBvLnRleHRFbXBoYXNp
c1Bvc2l0aW9uCiAgICAgICAgICYmIG1fbGluZUJveENvbnRhaW4gPT0gby5tX2xpbmVCb3hDb250
YWluCisgICAgICAgICYmIG92ZXJmbG93RGlyZWN0aW9uID09IG8ub3ZlcmZsb3dEaXJlY3Rpb24K
ICAgICAgICAgJiYgaHlwaGVuYXRpb25TdHJpbmcgPT0gby5oeXBoZW5hdGlvblN0cmluZwogICAg
ICAgICAmJiBsb2NhbGUgPT0gby5sb2NhbGUKICAgICAgICAgJiYgdGV4dEVtcGhhc2lzQ3VzdG9t
TWFyayA9PSBvLnRleHRFbXBoYXNpc0N1c3RvbU1hcmsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAkocmV2
aXNpb24gODI1NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSw3IEBAIHB1YmxpYzoK
ICAgICB1bnNpZ25lZCB0ZXh0RW1waGFzaXNNYXJrIDogMzsgLy8gVGV4dEVtcGhhc2lzTWFyawog
ICAgIHVuc2lnbmVkIHRleHRFbXBoYXNpc1Bvc2l0aW9uIDogMTsgLy8gVGV4dEVtcGhhc2lzUG9z
aXRpb24KICAgICB1bnNpZ25lZCBtX2xpbmVCb3hDb250YWluOiA3OyAvLyBMaW5lQm94Q29udGFp
bgorICAgIHVuc2lnbmVkIG92ZXJmbG93RGlyZWN0aW9uOiAxOyAvLyBPdmVyZmxvd0RpcmVjdGlv
bgogCiAgICAgQXRvbWljU3RyaW5nIGh5cGhlbmF0aW9uU3RyaW5nOwogICAgIHNob3J0IGh5cGhl
bmF0aW9uTGltaXRCZWZvcmU7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MjU4MikKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTAzLTMx
ICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFkZHMgYSBDU1MgcHJv
cGVydHkgJy13ZWJraXQtb3ZlcmZsb3ctZGlyZWN0aW9uJyBwcm9wZXJ0eSB0bworICAgICAgICBt
b3ZlIHRoZSB2ZXJ0aWNhbCBzY3JvbGxiYXIgYW5kIGEgcmVzaXplciBvZiBhbiBlbGVtZW50IHRv
IHRoZSBsZWZ0IHNpZGUKKyAgICAgICAgd2hlbiBib3RoIGl0cyB2YWx1ZSBhbmQgZGllY3Rpb24g
dmFsdWUgaXMgcnRsLiAKKworICAgICAgICAqIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC1v
dmVyZmxvdy1kaXYuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0L2ludGVybmF0aW9u
YWwvcnRsLW92ZXJmbG93LXRleHRhcmVhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ydGwtb3ZlcmZsb3ctZGl2LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFs
L3J0bC1vdmVyZmxvdy10ZXh0YXJlYS1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDExLTAzLTMx
ICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHVwZGF0ZSBjaHJvbWl1bSB0ZXN0IGV4cGVjdGF0aW9ucy4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC1vdmVyZmxvdy1kaXYuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ydGwtb3ZlcmZs
b3ctZGl2Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJu
YXRpb25hbC9ydGwtb3ZlcmZsb3ctZGl2Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUg
QEAKKzxodG1sPgorPGhlYWQ+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorZGl2Lm91dGVyIHsg
b3ZlcmZsb3c6IGF1dG87IHdpZHRoOiAxMDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyBoZWlnaHQ6
IDEwMHB4OyBib3JkZXI6IHNvbGlkOyB9CitkaXYuaW5uZXIgeyBwb3NpdGlvbjogYWJzb2x1dGU7
IHRvcDogMjUwcHg7IH0KKzwvc3R5bGU+Cis8dGl0bGU+U2hvdyBhIHZlcnRpY2FsIHNjcm9sbGJh
ciB0byB0aGUgbGVmdCBzaWRlLiAoYSBwb3NpdGlvbmVkIGVsZW1lbnQpPC90aXRsZT4KKzwvaGVh
ZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB3ZSBjYW4gc2hvdyB0ZXh0IGluIGEgcG9zaXRpb25l
ZCBlbGVtZW50IHdoZW4gd2Ugc2hvdyB0aGUgdmVydGljYWwgc2Nyb2xsYmFyIHRvIHRoZSBsZWZ0
IHNpZGUuIFRvIHRlc3QgbWFudWFsbHksIG1vdmUgdGhlIHZlcnRpY2FsIHNjcm9sbGJhciB0byB0
aGUgYm90dG9tIGFuZCB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXIgdG8gdGhlIHJpZ2h0IGFuZCBz
ZWUgd2UgY2FuIHNlZSB0aGUgdGV4dCAnZm9vJy48L3A+Cis8ZGl2IGNsYXNzPSJvdXRlciIgc3R5
bGU9ImRpcmVjdGlvbjogcnRsOyAtd2Via2l0LW92ZXJmbG93LWRpcmVjdGlvbjogcnRsOyI+Cis8
ZGl2IGNsYXNzPSJpbm5lciIgc3R5bGU9InJpZ2h0OiAyMDBweDsiPmZvbzwvZGl2PgorPC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRp
b25hbC9ydGwtb3ZlcmZsb3ctdGV4dGFyZWEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ydGwtb3ZlcmZsb3ctdGV4dGFyZWEuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC1vdmVy
Zmxvdy10ZXh0YXJlYS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKKzxodG1sPgor
PGhlYWQ+Cis8dGl0bGU+U2hvdyBhIHZlcnRpY2FsIHNjcm9sbGJhciB0byB0aGUgbGVmdCBzaWRl
LiAodGV4dGFyZWEpPC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB3ZSBj
YW4gc2VlIFJUTCB0ZXh0IGluIGEgbm9uLXBvc2l0aW9uZWQgZWxlbWVudCB3aGVuIHdlIG1vdmUg
dGhlIHZlcnRpY2FsbCBzY3JvbGxiYXIgdG8gaXRzIGxlZnQgc2lkZS4gVG8gdGVzdCBtYW51YWxs
eSwgb3BlbiB0aGlzIGZpbGUgYW5kIHNlZSB3ZSBjYW4gc2hvdyBhIHNlcXVlbmNlIG9mIHRleHQg
IjAxMjM0NTY3ODkiLjwvcD4KKzx0ZXh0YXJlYSByb3dzPSIxMCIgY29scz0iMTAiIGRpcj0icnRs
IiBzdHlsZT0iLXdlYmtpdC1vdmVyZmxvdy1kaXJlY3Rpb246IHJ0bDsiPjAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5PC90ZXh0YXJlYT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ydGwtb3ZlcmZsb3ctZGl2
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFz
dC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLW92ZXJmbG93LWRpdi1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2ludGVybmF0aW9u
YWwvcnRsLW92ZXJmbG93LWRpdi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTEgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDAp
IHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2Nr
IHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAo
OCw4KSBzaXplIDc4NHg1ODQKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4
NHgzNgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3NjJ4MzYKKyAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NjI6ICJUaGlzIHRlc3RzIHdlIGNhbiBz
aG93IHRleHQgaW4gYSBwb3NpdGlvbmVkIGVsZW1lbnQgd2hlbiB3ZSBzaG93IHRoZSB2ZXJ0aWNh
bCBzY3JvbGxiYXIgdG8gdGhlIGxlZnQgc2lkZS4gVG8gdGVzdCBtYW51YWxseSwiCisgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMTgpIHdpZHRoIDcwOTogIm1vdmUgdGhlIHZlcnRpY2FsIHNjcm9s
bGJhciB0byB0aGUgYm90dG9tIGFuZCB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXIgdG8gdGhlIHJp
Z2h0IGFuZCBzZWUgd2UgY2FuIHNlZSB0aGUgdGV4dCAnZm9vJy4iCitsYXllciBhdCAoOCw2MCkg
c2l6ZSAxMDZ4MTA2IGNsaXAgYXQgKDI2LDYzKSBzaXplIDg1eDg1IHNjcm9sbFggMTUxIHNjcm9s
bFdpZHRoIDIzNiBzY3JvbGxIZWlnaHQgMjY4CisgIFJlbmRlckJsb2NrIChyZWxhdGl2ZSBwb3Np
dGlvbmVkKSB7RElWfSBhdCAoMCw1Mikgc2l6ZSAxMDZ4MTA2IFtib3JkZXI6ICgzcHggc29saWQg
IzAwMDAwMCldCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2ludGVy
bmF0aW9uYWwvcnRsLW92ZXJmbG93LXRleHRhcmVhLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLW92
ZXJmbG93LXRleHRhcmVhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ydGwtb3ZlcmZsb3ctdGV4dGFy
ZWEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI5IEBACitsYXllciBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xh
eWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0
CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MzYKKyAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzQ2eDM2CisgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMCkgd2lkdGggNzQ2OiAiVGhpcyB0ZXN0cyB3ZSBjYW4gc2VlIFJUTCB0ZXh0IGluIGEg
bm9uLXBvc2l0aW9uZWQgZWxlbWVudCB3aGVuIHdlIG1vdmUgdGhlIHZlcnRpY2FsbCBzY3JvbGxi
YXIgdG8gaXRzIGxlZnQgc2lkZS4gVG8gdGVzdCIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwx
OCkgd2lkdGggNTA0OiAibWFudWFsbHksIG9wZW4gdGhpcyBmaWxlIGFuZCBzZWUgd2UgY2FuIHNo
b3cgYSBzZXF1ZW5jZSBvZiB0ZXh0IFwiMDEyMzQ1Njc4OVwiLiIKKyAgICAgIFJlbmRlckJsb2Nr
IChhbm9ueW1vdXMpIGF0ICgwLDUyKSBzaXplIDc4NHgxNDAKKyAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCitsYXllciBhdCAoMTAsNjIpIHNpemUgOTF4MTM2IGNs
aXAgYXQgKDI2LDYzKSBzaXplIDc0eDEzNCBzY3JvbGxIZWlnaHQgMTg2CisgIFJlbmRlclRleHRD
b250cm9sIHtURVhUQVJFQX0gYXQgKDIsMikgc2l6ZSA5MXgxMzYgW2JnY29sb3I9I0ZGRkZGRl0g
W2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAo
MTgsMykgc2l6ZSA3MHgxODIKKyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDcweDE4MgorICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3MDogIjAxMjM0NTY3ODki
CisgICAgICAgIHRleHQgcnVuIGF0ICgwLDEzKSB3aWR0aCA3MDogIjAxMjM0NTY3ODkiCisgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDI2KSB3aWR0aCA3MDogIjAxMjM0NTY3ODkiCisgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDM5KSB3aWR0aCA3MDogIjAxMjM0NTY3ODkiCisgICAgICAgIHRleHQgcnVu
IGF0ICgwLDUyKSB3aWR0aCA3MDogIjAxMjM0NTY3ODkiCisgICAgICAgIHRleHQgcnVuIGF0ICgw
LDY1KSB3aWR0aCA3MDogIjAxMjM0NTY3ODkiCisgICAgICAgIHRleHQgcnVuIGF0ICgwLDc4KSB3
aWR0aCA3MDogIjAxMjM0NTY3ODkiCisgICAgICAgIHRleHQgcnVuIGF0ICgwLDkxKSB3aWR0aCA3
MDogIjAxMjM0NTY3ODkiCisgICAgICAgIHRleHQgcnVuIGF0ICgwLDEwNCkgd2lkdGggNzA6ICIw
MTIzNDU2Nzg5IgorICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxMTcpIHdpZHRoIDcwOiAiMDEyMzQ1
Njc4OSIKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMTMwKSB3aWR0aCA3MDogIjAxMjM0NTY3ODki
CisgICAgICAgIHRleHQgcnVuIGF0ICgwLDE0Mykgd2lkdGggNzA6ICIwMTIzNDU2Nzg5IgorICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwxNTYpIHdpZHRoIDcwOiAiMDEyMzQ1Njc4OSIKKyAgICAgICAg
dGV4dCBydW4gYXQgKDAsMTY5KSB3aWR0aCA3MDogIjAxMjM0NTY3ODkiCg==
</data>
<flag name="review"
          id="80196"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88796</attachid>
            <date>2011-04-08 04:08:27 -0700</date>
            <delta_ts>2011-04-12 04:13:17 -0700</delta_ts>
            <desc>A trial change v2</desc>
            <filename>issue54623-patch3.txt</filename>
            <type>text/plain</type>
            <size>36528</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzMjc0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMDQtMDggIEhpcm9ub3Jp
IEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVuZGVyIG92ZXJmbG93IGNvbnRyb2xzIG9mIGFuIFJUTCBl
bGVtZW50IHRvIGl0cyBsZWZ0LXNpZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NDYyMworCisgICAgICAgIFRoaXMgY2hhbmdlIGFkZHMgYSBuZXcg
c2V0dGluZyAnb3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkJyBhbmQgcmVuZGVyIG92ZXJmbG93Cisg
ICAgICAgIGNvbnRyb2xzIChhIHNjcm9sbGJhciBhbmQgYSByZXNpemVyKSBvZiBhbiBSVEwgZWxl
bWVudCBpZiB0aGlzIG5ldyBzZXR0aW5nCisgICAgICAgIHZhbHVlIGlzIHRydWUuCisKKyAgICAg
ICAgVGVzdHM6IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC1vdmVyZmxvdy1kaXYuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLW92ZXJmbG93LXRleHRh
cmVhLmh0bWwKKworICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2V0dGluZ3M6OlNldHRpbmdzKTogSW5pdGlhbGl6ZWQgdGhlIG5ldyBzZXR0aW5nCisgICAg
ICAgICdvdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQnIHRvIGZhbHNlLgorICAgICAgICAqIHBhZ2Uv
U2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRPdmVyZmxvd01pcnJv
cmluZ0VuYWJsZWQpOiBBZGRlZCBhbiBhY2Nlc3NvcgorICAgICAgICBmb3IgdGhlIG5ldyBzZXR0
aW5nICdvdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQnLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGlu
Z3M6Om92ZXJmbG93TWlycm9yaW5nRW5hYmxlZCk6IGRpdHRvLgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWRkT3Zl
cmZsb3dGcm9tUG9zaXRpb25lZE9iamVjdHMpOiBNb3ZlIGNoaWxkIGVsZW1lbnRzIHJpZ2h0Lgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmRldGVybWluZUxvZ2ljYWxMZWZ0UG9zaXRp
b25Gb3JDaGlsZCk6IGRpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb250ZW50Qm94UmVjdCk6IE1vdmUgdGhlIGNv
bnRlbnQgcmVjdGFuZ2xlIHJpZ2h0LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpvdmVy
Zmxvd0NsaXBSZWN0KTogTW92ZSB0aGUgY2xpcHBpbmcgcmVjdGFuZ2xlIHJpZ2h0LgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29ybmVyUmVjdCk6IFJlbmRlciBhIHJlc2l6ZXIg
dG8gdGhlIGJvdHRvbS1sZWZ0IGNvcm5lci4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpzY3JvbGxiYXJPZmZzZXQpOiBSZW5kZXIgYSB2ZXJ0aWNhbCBzY3JvbGxiYXIgdG8gdGhlIGxl
ZnQgc2lkZQorICAgICAgICBhbmQgbW92ZSBhIGhvcml6b250YWwgc2Nyb2xsYmFyIHJpZ2h0IGJ5
IHRoZSB3aWR0aCBvZiB0aGUgdmVydGljYWwgc2Nyb2xsYmFyLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OmludmFsaWRhdGVTY3JvbGxiYXJSZWN0KTogZGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6cG9zaXRpb25PdmVyZmxvd0NvbnRyb2xzKTogZGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdE92ZXJmbG93Q29udHJvbHMpOiBk
aXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjppc1JpZ2h0VG9MZWZ0RGlyZWN0aW9uKTogQWRkZWQg
YSBzaG9ydGN1dCBtZXRob2QgZm9yCisgICAgICAgICdkaXJlY3Rpb24oKSA9PSBSVEwnLgorCiAy
MDExLTA0LTA4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQXR0
ZW1wdCB0byBmaXggdGhlIFF0IGJ1aWxkLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJ
KHJldmlzaW9uIDgzMjQyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE3Myw2ICsxNzMsNyBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSog
cGFnZSkKICAgICAsIG1fdXNlUXVpY2tMb29rUmVzb3VyY2VDYWNoaW5nUXVpcmtzKGZhbHNlKQog
ICAgICwgbV9mb3JjZUNvbXBvc2l0aW5nTW9kZShmYWxzZSkKICAgICAsIG1fc2hvdWxkSW5qZWN0
VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3VtZW50KGZhbHNlKQorICAgICwgbV9vdmVyZmxv
d01pcnJvcmluZ0VuYWJsZWQoZmFsc2UpCiB7CiAgICAgLy8gQSBGcmFtZSBtYXkgbm90IGhhdmUg
YmVlbiBjcmVhdGVkIHlldCwgc28gd2UgaW5pdGlhbGl6ZSB0aGUgQXRvbWljU3RyaW5nIAogICAg
IC8vIGhhc2ggYmVmb3JlIHRyeWluZyB0byB1c2UgaXQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5oCShyZXZpc2lvbiA4MzI0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAko
d29ya2luZyBjb3B5KQpAQCAtMzg5LDYgKzM4OSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdm9pZCBzZXRTaG91bGRJbmplY3RVc2VyU2NyaXB0c0luSW5pdGlhbEVtcHR5RG9jdW1l
bnQoYm9vbCBmbGFnKSB7IG1fc2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURv
Y3VtZW50ID0gZmxhZzsgfQogICAgICAgICBib29sIHNob3VsZEluamVjdFVzZXJTY3JpcHRzSW5J
bml0aWFsRW1wdHlEb2N1bWVudCgpIHsgcmV0dXJuIG1fc2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJ
bkluaXRpYWxFbXB0eURvY3VtZW50OyB9CiAKKyAgICAgICAgdm9pZCBzZXRPdmVyZmxvd01pcnJv
cmluZ0VuYWJsZWQoYm9vbCBmbGFnKSB7IG1fb3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkID0gZmxh
ZzsgfQorICAgICAgICBib29sIG92ZXJmbG93TWlycm9yaW5nRW5hYmxlZCgpIHsgcmV0dXJuIG1f
b3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkOyB9CisKICAgICBwcml2YXRlOgogICAgICAgICBQYWdl
KiBtX3BhZ2U7CiAKQEAgLTQ5MSw2ICs0OTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIGJvb2wgbV91c2VRdWlja0xvb2tSZXNvdXJjZUNhY2hpbmdRdWlya3MgOiAxOwogICAgICAg
ICBib29sIG1fZm9yY2VDb21wb3NpdGluZ01vZGUgOiAxOwogICAgICAgICBib29sIG1fc2hvdWxk
SW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3VtZW50IDogMTsKKyAgICAgICAgYm9v
bCBtX292ZXJmbG93TWlycm9yaW5nRW5hYmxlZCA6IDE7CiAKICNpZiBVU0UoU0FGQVJJX1RIRU1F
KQogICAgICAgICBzdGF0aWMgYm9vbCBnU2hvdWxkUGFpbnROYXRpdmVDb250cm9sczsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gODMyNDIp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDA3LDggKzE0MDcsMTIgQEAgdm9pZCBSZW5kZXJCbG9jazo6YWRkT3ZlcmZsb3dG
cm9tUG9zaXRpbwogICAgICAgICBwb3NpdGlvbmVkT2JqZWN0ID0gKml0OwogICAgICAgICAKICAg
ICAgICAgLy8gRml4ZWQgcG9zaXRpb25lZCBlbGVtZW50cyBkb24ndCBjb250cmlidXRlIHRvIGxh
eW91dCBvdmVyZmxvdywgc2luY2UgdGhleSBkb24ndCBzY3JvbGwgd2l0aCB0aGUgY29udGVudC4K
LSAgICAgICAgaWYgKHBvc2l0aW9uZWRPYmplY3QtPnN0eWxlKCktPnBvc2l0aW9uKCkgIT0gRml4
ZWRQb3NpdGlvbikKLSAgICAgICAgICAgIGFkZE92ZXJmbG93RnJvbUNoaWxkKHBvc2l0aW9uZWRP
YmplY3QpOworICAgICAgICBpZiAocG9zaXRpb25lZE9iamVjdC0+c3R5bGUoKS0+cG9zaXRpb24o
KSAhPSBGaXhlZFBvc2l0aW9uKSB7CisgICAgICAgICAgICBpbnQgeCA9IHBvc2l0aW9uZWRPYmpl
Y3QtPngoKTsKKyAgICAgICAgICAgIGlmIChkb2N1bWVudCgpLT5zZXR0aW5ncygpLT5vdmVyZmxv
d01pcnJvcmluZ0VuYWJsZWQoKSAmJiBzdHlsZSgpLT5pc1JpZ2h0VG9MZWZ0RGlyZWN0aW9uKCkp
CisgICAgICAgICAgICAgICAgeCAtPSB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKCk7CisgICAgICAg
ICAgICBhZGRPdmVyZmxvd0Zyb21DaGlsZChwb3NpdGlvbmVkT2JqZWN0LCBJbnRTaXplKHgsIHBv
c2l0aW9uZWRPYmplY3QtPnkoKSkpOworICAgICAgICB9CiAgICAgfQogfQogCkBAIC0xNzQ1LDYg
KzE3NDksOCBAQCBpbnQgUmVuZGVyQmxvY2s6OmVzdGltYXRlTG9naWNhbFRvcFBvc2l0CiB2b2lk
IFJlbmRlckJsb2NrOjpkZXRlcm1pbmVMb2dpY2FsTGVmdFBvc2l0aW9uRm9yQ2hpbGQoUmVuZGVy
Qm94KiBjaGlsZCkKIHsKICAgICBpbnQgc3RhcnRQb3NpdGlvbiA9IGJvcmRlclN0YXJ0KCkgKyBw
YWRkaW5nU3RhcnQoKTsKKyAgICBpZiAoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKS0+b3ZlcmZsb3dN
aXJyb3JpbmdFbmFibGVkKCkgJiYgc3R5bGUoKS0+aXNSaWdodFRvTGVmdERpcmVjdGlvbigpKQor
ICAgICAgICBzdGFydFBvc2l0aW9uIC09IHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoKTsKICAgICBp
bnQgdG90YWxBdmFpbGFibGVMb2dpY2FsV2lkdGggPSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdp
ZHRoKCkgKyBhdmFpbGFibGVMb2dpY2FsV2lkdGgoKTsKIAogICAgIC8vIEFkZCBpbiBvdXIgc3Rh
cnQgbWFyZ2luLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJl
dmlzaW9uIDgzMjQyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5o
IgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgor
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtU3RhdGUuaCIKICNpbmNs
dWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bWF0aC5oPgpAQCAtNDc2LDYgKzQ3NywxNCBAQCB2
b2lkIFJlbmRlckJveDo6dXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKQogICAgICAgICBsYXllcigpLT51
cGRhdGVUcmFuc2Zvcm0oKTsKIH0KIAorSW50UmVjdCBSZW5kZXJCb3g6OmNvbnRlbnRCb3hSZWN0
KCkgY29uc3QKK3sKKyAgICBpbnQgeCA9IGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0KCk7Cisg
ICAgaWYgKGRvY3VtZW50KCktPnNldHRpbmdzKCktPm92ZXJmbG93TWlycm9yaW5nRW5hYmxlZCgp
ICYmIHN0eWxlKCktPmlzUmlnaHRUb0xlZnREaXJlY3Rpb24oKSkKKyAgICAgICAgeCArPSB2ZXJ0
aWNhbFNjcm9sbGJhcldpZHRoKCk7CisgICAgcmV0dXJuIEludFJlY3QoeCwgYm9yZGVyVG9wKCkg
KyBwYWRkaW5nVG9wKCksIGNvbnRlbnRXaWR0aCgpLCBjb250ZW50SGVpZ2h0KCkpOworfQorCiBJ
bnRSZWN0IFJlbmRlckJveDo6YWJzb2x1dGVDb250ZW50Qm94KCkgY29uc3QKIHsKICAgICBJbnRS
ZWN0IHJlY3QgPSBjb250ZW50Qm94UmVjdCgpOwpAQCAtMTExNyw2ICsxMTI2LDggQEAgSW50UmVj
dCBSZW5kZXJCb3g6Om92ZXJmbG93Q2xpcFJlY3QoaW50IAogCiAgICAgLy8gU3VidHJhY3Qgb3V0
IHNjcm9sbGJhcnMgaWYgd2UgaGF2ZSB0aGVtLgogICAgIGlmIChsYXllcigpKSB7CisgICAgICAg
IGlmIChkb2N1bWVudCgpLT5zZXR0aW5ncygpLT5vdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQoKSAm
JiBzdHlsZSgpLT5pc1JpZ2h0VG9MZWZ0RGlyZWN0aW9uKCkpCisgICAgICAgICAgICBjbGlwWCAr
PSBsYXllcigpLT52ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKHJlbGV2YW5jeSk7CiAgICAgICAgIGNs
aXBXaWR0aCAtPSBsYXllcigpLT52ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKHJlbGV2YW5jeSk7CiAg
ICAgICAgIGNsaXBIZWlnaHQgLT0gbGF5ZXIoKS0+aG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodChy
ZWxldmFuY3kpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJ
KHJldmlzaW9uIDgzMjQyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNyArMTE0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
SW50UmVjdCBib3JkZXJCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlckJveFJlY3Qo
KTsgfSAKIAogICAgIC8vIFRoZSBjb250ZW50IGFyZWEgb2YgdGhlIGJveCAoZXhjbHVkZXMgcGFk
ZGluZyBhbmQgYm9yZGVyKS4KLSAgICBJbnRSZWN0IGNvbnRlbnRCb3hSZWN0KCkgY29uc3QgeyBy
ZXR1cm4gSW50UmVjdChib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBib3JkZXJUb3AoKSAr
IHBhZGRpbmdUb3AoKSwgY29udGVudFdpZHRoKCksIGNvbnRlbnRIZWlnaHQoKSk7IH0KKyAgICBJ
bnRSZWN0IGNvbnRlbnRCb3hSZWN0KCkgY29uc3Q7CisKICAgICAvLyBUaGUgY29udGVudCBib3gg
aW4gYWJzb2x1dGUgY29vcmRzLiBJZ25vcmVzIHRyYW5zZm9ybXMuCiAgICAgSW50UmVjdCBhYnNv
bHV0ZUNvbnRlbnRCb3goKSBjb25zdDsKICAgICAvLyBUaGUgY29udGVudCBib3ggY29udmVydGVk
IHRvIGFic29sdXRlIGNvb3JkcyAodGFraW5nIHRyYW5zZm9ybXMgaW50byBhY2NvdW50KS4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gODMy
NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04MSw2ICs4MSw3IEBACiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCiAjaW5jbHVk
ZSAiU2Nyb2xsYmFyVGhlbWUuaCIKICNpbmNsdWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCisj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSAi
VHJhbnNmb3JtU3RhdGUuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgpAQCAt
MTY5NSw4ICsxNjk2LDkgQEAgc3RhdGljIEludFJlY3QgY29ybmVyUmVjdChjb25zdCBSZW5kZXJM
YQogICAgICAgICBob3Jpem9udGFsVGhpY2tuZXNzID0gbGF5ZXItPnZlcnRpY2FsU2Nyb2xsYmFy
KCktPndpZHRoKCk7CiAgICAgICAgIHZlcnRpY2FsVGhpY2tuZXNzID0gbGF5ZXItPmhvcml6b250
YWxTY3JvbGxiYXIoKS0+aGVpZ2h0KCk7CiAgICAgfQotICAgIHJldHVybiBJbnRSZWN0KGJvdW5k
cy5tYXhYKCkgLSBob3Jpem9udGFsVGhpY2tuZXNzIC0gbGF5ZXItPnJlbmRlcmVyKCktPnN0eWxl
KCktPmJvcmRlclJpZ2h0V2lkdGgoKSwgCi0gICAgICAgICAgICAgICAgICAgYm91bmRzLm1heFko
KSAtIHZlcnRpY2FsVGhpY2tuZXNzIC0gbGF5ZXItPnJlbmRlcmVyKCktPnN0eWxlKCktPmJvcmRl
ckJvdHRvbVdpZHRoKCksCisgICAgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlID0gbGF5ZXItPnJl
bmRlcmVyKCktPnN0eWxlKCk7CisgICAgaW50IHggPSBsYXllci0+cmVuZGVyZXIoKS0+ZG9jdW1l
bnQoKS0+c2V0dGluZ3MoKS0+b3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkKCkgJiYgc3R5bGUtPmlz
UmlnaHRUb0xlZnREaXJlY3Rpb24oKSA/IGJvdW5kcy54KCkgKyBzdHlsZS0+Ym9yZGVyTGVmdFdp
ZHRoKCkgOiBib3VuZHMubWF4WCgpIC0gaG9yaXpvbnRhbFRoaWNrbmVzcyAtIHN0eWxlLT5ib3Jk
ZXJSaWdodFdpZHRoKCk7CisgICAgcmV0dXJuIEludFJlY3QoeCwgYm91bmRzLm1heFkoKSAtIHZl
cnRpY2FsVGhpY2tuZXNzIC0gc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCksCiAgICAgICAgICAg
ICAgICAgICAgaG9yaXpvbnRhbFRoaWNrbmVzcywgdmVydGljYWxUaGlja25lc3MpOwogfQogCkBA
IC0xODA2LDExICsxODA4LDE3IEBAIEludFNpemUgUmVuZGVyTGF5ZXI6OnNjcm9sbGJhck9mZnNl
dChjb24KIHsKICAgICBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgpOwogCi0gICAgaWYgKHNj
cm9sbGJhciA9PSBtX3ZCYXIuZ2V0KCkpCi0gICAgICAgIHJldHVybiBJbnRTaXplKGJveC0+d2lk
dGgoKSAtIGJveC0+Ym9yZGVyUmlnaHQoKSAtIHNjcm9sbGJhci0+d2lkdGgoKSwgYm94LT5ib3Jk
ZXJUb3AoKSk7CisgICAgaWYgKHNjcm9sbGJhciA9PSBtX3ZCYXIuZ2V0KCkpIHsKKyAgICAgICAg
aW50IHggPSByZW5kZXJlcigpLT5kb2N1bWVudCgpLT5zZXR0aW5ncygpLT5vdmVyZmxvd01pcnJv
cmluZ0VuYWJsZWQoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5pc1JpZ2h0VG9MZWZ0RGlyZWN0
aW9uKCkgPyBib3gtPmJvcmRlckxlZnQoKSA6IGJveC0+d2lkdGgoKSAtIGJveC0+Ym9yZGVyUmln
aHQoKSAtIHNjcm9sbGJhci0+d2lkdGgoKTsKKyAgICAgICAgcmV0dXJuIEludFNpemUoeCwgYm94
LT5ib3JkZXJUb3AoKSk7CisgICAgfQogCi0gICAgaWYgKHNjcm9sbGJhciA9PSBtX2hCYXIuZ2V0
KCkpCi0gICAgICAgIHJldHVybiBJbnRTaXplKGJveC0+Ym9yZGVyTGVmdCgpLCBib3gtPmhlaWdo
dCgpIC0gYm94LT5ib3JkZXJCb3R0b20oKSAtIHNjcm9sbGJhci0+aGVpZ2h0KCkpOworICAgIGlm
IChzY3JvbGxiYXIgPT0gbV9oQmFyLmdldCgpKSB7CisgICAgICAgIGludCB4ID0gYm94LT5ib3Jk
ZXJMZWZ0KCk7CisgICAgICAgIGlmIChyZW5kZXJlcigpLT5kb2N1bWVudCgpLT5zZXR0aW5ncygp
LT5vdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5pc1Jp
Z2h0VG9MZWZ0RGlyZWN0aW9uKCkpCisgICAgICAgICAgICB4ICs9IG1fdkJhciA/IG1fdkJhci0+
d2lkdGgoKSA6IHJlc2l6ZXJDb3JuZXJSZWN0KHRoaXMsIGJveC0+Ym9yZGVyQm94UmVjdCgpKS53
aWR0aCgpOworICAgICAgICByZXR1cm4gSW50U2l6ZSh4LCBib3gtPmhlaWdodCgpIC0gYm94LT5i
b3JkZXJCb3R0b20oKSAtIHNjcm9sbGJhci0+aGVpZ2h0KCkpOworICAgIH0KICAgICAKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gSW50U2l6ZSgpOwpAQCAtMTgyMSwxMCAr
MTgyOSwxNSBAQCB2b2lkIFJlbmRlckxheWVyOjppbnZhbGlkYXRlU2Nyb2xsYmFyUmVjCiAgICAg
SW50UmVjdCBzY3JvbGxSZWN0ID0gcmVjdDsKICAgICBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJv
eCgpOwogICAgIEFTU0VSVChib3gpOwotICAgIGlmIChzY3JvbGxiYXIgPT0gbV92QmFyLmdldCgp
KQotICAgICAgICBzY3JvbGxSZWN0Lm1vdmUoYm94LT53aWR0aCgpIC0gYm94LT5ib3JkZXJSaWdo
dCgpIC0gc2Nyb2xsYmFyLT53aWR0aCgpLCBib3gtPmJvcmRlclRvcCgpKTsKLSAgICBlbHNlCi0g
ICAgICAgIHNjcm9sbFJlY3QubW92ZShib3gtPmJvcmRlckxlZnQoKSwgYm94LT5oZWlnaHQoKSAt
IGJveC0+Ym9yZGVyQm90dG9tKCkgLSBzY3JvbGxiYXItPmhlaWdodCgpKTsKKyAgICBpZiAoc2Ny
b2xsYmFyID09IG1fdkJhci5nZXQoKSkgeworICAgICAgICBpbnQgeCA9IHJlbmRlcmVyKCktPmRv
Y3VtZW50KCktPnNldHRpbmdzKCktPm92ZXJmbG93TWlycm9yaW5nRW5hYmxlZCgpICYmIHJlbmRl
cmVyKCktPnN0eWxlKCktPmlzUmlnaHRUb0xlZnREaXJlY3Rpb24oKSA/IGJveC0+Ym9yZGVyTGVm
dCgpIDogYm94LT53aWR0aCgpIC0gYm94LT5ib3JkZXJSaWdodCgpIC0gc2Nyb2xsYmFyLT53aWR0
aCgpOworICAgICAgICBzY3JvbGxSZWN0Lm1vdmUoeCwgYm94LT5ib3JkZXJUb3AoKSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgaW50IHggPSBib3gtPmJvcmRlckxlZnQoKTsKKyAgICAgICAgaWYg
KHJlbmRlcmVyKCktPmRvY3VtZW50KCktPnNldHRpbmdzKCktPm92ZXJmbG93TWlycm9yaW5nRW5h
YmxlZCgpICYmIHJlbmRlcmVyKCktPnN0eWxlKCktPmlzUmlnaHRUb0xlZnREaXJlY3Rpb24oKSkK
KyAgICAgICAgICAgIHggKz0gbV92QmFyID8gbV92QmFyLT53aWR0aCgpIDogcmVzaXplckNvcm5l
clJlY3QodGhpcywgYm94LT5ib3JkZXJCb3hSZWN0KCkpLndpZHRoKCk7CisgICAgICAgIHNjcm9s
bFJlY3QubW92ZSh4LCBib3gtPmhlaWdodCgpIC0gYm94LT5ib3JkZXJCb3R0b20oKSAtIHNjcm9s
bGJhci0+aGVpZ2h0KCkpOworICAgIH0KICAgICByZW5kZXJlcigpLT5yZXBhaW50UmVjdGFuZ2xl
KHNjcm9sbFJlY3QpOwogfQogCkBAIC0xOTUwLDE3ICsxOTYzLDIzIEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnBvc2l0aW9uT3ZlcmZsb3dDb250cm8KICAgICBJbnRSZWN0IGJvcmRlckJveCA9IGJveC0+
Ym9yZGVyQm94UmVjdCgpOwogICAgIEludFJlY3Qgc2Nyb2xsQ29ybmVyKHNjcm9sbENvcm5lclJl
Y3QodGhpcywgYm9yZGVyQm94KSk7CiAgICAgSW50UmVjdCBhYnNCb3VuZHMoYm9yZGVyQm94Lngo
KSArIHR4LCBib3JkZXJCb3gueSgpICsgdHksIGJvcmRlckJveC53aWR0aCgpLCBib3JkZXJCb3gu
aGVpZ2h0KCkpOwotICAgIGlmIChtX3ZCYXIpCi0gICAgICAgIG1fdkJhci0+c2V0RnJhbWVSZWN0
KEludFJlY3QoYWJzQm91bmRzLm1heFgoKSAtIGJveC0+Ym9yZGVyUmlnaHQoKSAtIG1fdkJhci0+
d2lkdGgoKSwKKyAgICBpZiAobV92QmFyKSB7CisgICAgICAgIGludCB4ID0gcmVuZGVyZXIoKS0+
ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKS0+b3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkKCkgJiYgcmVu
ZGVyZXIoKS0+c3R5bGUoKS0+aXNSaWdodFRvTGVmdERpcmVjdGlvbigpID8gYWJzQm91bmRzLngo
KSArIGJveC0+Ym9yZGVyTGVmdCgpIDogYWJzQm91bmRzLm1heFgoKSAtIGJveC0+Ym9yZGVyUmln
aHQoKSAtIG1fdkJhci0+d2lkdGgoKTsKKyAgICAgICAgbV92QmFyLT5zZXRGcmFtZVJlY3QoSW50
UmVjdCh4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic0JvdW5kcy55
KCkgKyBib3gtPmJvcmRlclRvcCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fdkJhci0+d2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhYnNCb3VuZHMuaGVpZ2h0KCkgLSAoYm94LT5ib3JkZXJUb3AoKSArIGJveC0+Ym9yZGVyQm90
dG9tKCkpIC0gc2Nyb2xsQ29ybmVyLmhlaWdodCgpKSk7CisgICAgfQogCi0gICAgaWYgKG1faEJh
cikKLSAgICAgICAgbV9oQmFyLT5zZXRGcmFtZVJlY3QoSW50UmVjdChhYnNCb3VuZHMueCgpICsg
Ym94LT5ib3JkZXJMZWZ0KCksCisgICAgaWYgKG1faEJhcikgeworICAgICAgICBpbnQgeCA9IGFi
c0JvdW5kcy54KCkgKyBib3gtPmJvcmRlckxlZnQoKTsKKyAgICAgICAgaWYgKHJlbmRlcmVyKCkt
PmRvY3VtZW50KCktPnNldHRpbmdzKCktPm92ZXJmbG93TWlycm9yaW5nRW5hYmxlZCgpICYmIHJl
bmRlcmVyKCktPnN0eWxlKCktPmlzUmlnaHRUb0xlZnREaXJlY3Rpb24oKSkKKyAgICAgICAgICAg
IHggKz0gc2Nyb2xsQ29ybmVyLndpZHRoKCk7CisgICAgICAgIG1faEJhci0+c2V0RnJhbWVSZWN0
KEludFJlY3QoeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNCb3Vu
ZHMubWF4WSgpIC0gYm94LT5ib3JkZXJCb3R0b20oKSAtIG1faEJhci0+aGVpZ2h0KCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzQm91bmRzLndpZHRoKCkgLSAoYm94
LT5ib3JkZXJMZWZ0KCkgKyBib3gtPmJvcmRlclJpZ2h0KCkpIC0gc2Nyb2xsQ29ybmVyLndpZHRo
KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9oQmFyLT5oZWlnaHQo
KSkpOworICAgIH0KICAgICAKICAgICBpZiAobV9zY3JvbGxDb3JuZXIpCiAgICAgICAgIG1fc2Ny
b2xsQ29ybmVyLT5zZXRGcmFtZVJlY3Qoc2Nyb2xsQ29ybmVyKTsKQEAgLTIzMTMsNyArMjMzMiw4
IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmhpdFRlc3RPdmVyZmxvd0NvbnRyb2wKICAgICBpbnQgcmVz
aXplQ29udHJvbFNpemUgPSBtYXgocmVzaXplQ29udHJvbFJlY3QuaGVpZ2h0KCksIDApOwogCiAg
ICAgaWYgKG1fdkJhcikgewotICAgICAgICBJbnRSZWN0IHZCYXJSZWN0KGJveC0+d2lkdGgoKSAt
IGJveC0+Ym9yZGVyUmlnaHQoKSAtIG1fdkJhci0+d2lkdGgoKSwgCisgICAgICAgIGludCB4ID0g
cmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKS0+b3ZlcmZsb3dNaXJyb3JpbmdFbmFi
bGVkKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNSaWdodFRvTGVmdERpcmVjdGlvbigpID8g
Ym94LT5ib3JkZXJMZWZ0KCkgOiBib3gtPndpZHRoKCkgLSBib3gtPmJvcmRlclJpZ2h0KCkgLSBt
X3ZCYXItPndpZHRoKCk7CisgICAgICAgIEludFJlY3QgdkJhclJlY3QoeCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICBib3gtPmJvcmRlclRvcCgpLAogICAgICAgICAgICAgICAgICAgICAgICAg
IG1fdkJhci0+d2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBib3gtPmhlaWdodCgp
IC0gKGJveC0+Ym9yZGVyVG9wKCkgKyBib3gtPmJvcmRlckJvdHRvbSgpKSAtIChtX2hCYXIgPyBt
X2hCYXItPmhlaWdodCgpIDogcmVzaXplQ29udHJvbFNpemUpKTsKQEAgLTIzMjUsNyArMjM0NSwx
MCBAQCBib29sIFJlbmRlckxheWVyOjpoaXRUZXN0T3ZlcmZsb3dDb250cm9sCiAKICAgICByZXNp
emVDb250cm9sU2l6ZSA9IG1heChyZXNpemVDb250cm9sUmVjdC53aWR0aCgpLCAwKTsKICAgICBp
ZiAobV9oQmFyKSB7Ci0gICAgICAgIEludFJlY3QgaEJhclJlY3QoYm94LT5ib3JkZXJMZWZ0KCks
CisgICAgICAgIGludCB4ID0gYm94LT5ib3JkZXJMZWZ0KCk7CisgICAgICAgIGlmIChyZW5kZXJl
cigpLT5kb2N1bWVudCgpLT5zZXR0aW5ncygpLT5vdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQoKSAm
JiByZW5kZXJlcigpLT5zdHlsZSgpLT5pc1JpZ2h0VG9MZWZ0RGlyZWN0aW9uKCkpCisgICAgICAg
ICAgICB4ICs9IG1fdkJhciA/IG1fdkJhci0+d2lkdGgoKSA6IHJlc2l6ZUNvbnRyb2xTaXplOwor
ICAgICAgICBJbnRSZWN0IGhCYXJSZWN0KHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYm94
LT5oZWlnaHQoKSAtIGJveC0+Ym9yZGVyQm90dG9tKCkgLSBtX2hCYXItPmhlaWdodCgpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgIGJveC0+d2lkdGgoKSAtIChib3gtPmJvcmRlckxlZnQoKSAr
IGJveC0+Ym9yZGVyUmlnaHQoKSkgLSAobV92QmFyID8gbV92QmFyLT53aWR0aCgpIDogcmVzaXpl
Q29udHJvbFNpemUpLAogICAgICAgICAgICAgICAgICAgICAgICAgIG1faEJhci0+aGVpZ2h0KCkp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJ
KHJldmlzaW9uIDgzMjQyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5Miw2ICs0OTIsNyBAQCBwdWJsaWM6CiAKICAg
ICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRl
eHREaXJlY3Rpb24+KGluaGVyaXRlZF9mbGFncy5fZGlyZWN0aW9uKTsgfQogICAgIGJvb2wgaXNM
ZWZ0VG9SaWdodERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGRpcmVjdGlvbigpID09IExUUjsg
fQorICAgIGJvb2wgaXNSaWdodFRvTGVmdERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGRpcmVj
dGlvbigpID09IFJUTDsgfQogCiAgICAgTGVuZ3RoIGxpbmVIZWlnaHQoKSBjb25zdCB7IHJldHVy
biBpbmhlcml0ZWQtPmxpbmVfaGVpZ2h0OyB9CiAgICAgaW50IGNvbXB1dGVkTGluZUhlaWdodCgp
IGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MzI3NCkKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEx
LTA0LTA4ICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGxheW91dFRlc3RDb250
cm9sbGVyLnNldE92ZXJmbG93TWlycm9yaW5nRW5hYmxlZCgpLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ2MjMKKworICAgICAgICBUaGlzIGNoYW5n
ZSBhZGRzIGEgbWV0aG9kIGxheW91dFRlc3RDb250cm9sbGVyLnNldE92ZXJmbG93TWlycm9yaW5n
RW5hYmxlZCgpCisgICAgICAgIHRoYXQgY2hhbmdlcyB0aGUgbmV3IHNldHRpbmcgdmFsdWUgJ292
ZXJmbG93TWlycm9yaW5nRW5hYmxlZCcgc28gd2UgY2FuIHdyaXRlCisgICAgICAgIGxheW91dCB0
ZXN0cyB0aGF0IGRlcGVuZCBvbiBpdC4gVW5mb3J0dW5hdGVseSwgdGhpcyBtZXRob2QgaXMgaW1w
bGVtZW50ZWQKKyAgICAgICAgb25seSBvbiBNYWMgYW5kIENocm9taXVtLgorCisgICAgICAgICog
V2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlByZWZlcmVuY2VzLm1tOgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBpbml0aWFsaXplXSk6
CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIHNldE92ZXJmbG93TWlycm9yaW5nRW5hYmxlZDpd
KToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgb3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkXSk6
CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX3ByZWZlcmVuY2VzQ2hhbmdl
ZE5vdGlmaWNhdGlvbjpdKToKKwogMjAxMS0wNC0wNyAgQW5kcmV3IFNjaGVya3VzICA8c2NoZXJr
dXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmVydCBFTkFCTEVfVFJBQ0sgcGF0Y2ggZHVl
IHRvIGNvbXBpbGUgZmFpbHVyZXMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHJldmlzaW9uIDgzMjQyKQorKysg
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiw3IEBACiAjZGVmaW5lIFdlYktpdE1lbW9yeUluZm9F
bmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdE1lbW9yeUluZm9FbmFibGVkIgogI2RlZmluZSBX
ZWJLaXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0SHlwZXJs
aW5rQXVkaXRpbmdFbmFibGVkIgogI2RlZmluZSBXZWJLaXRVc2VRdWlja0xvb2tSZXNvdXJjZUNh
Y2hpbmdRdWlya3NQcmVmZXJlbmNlS2V5IEAiV2ViS2l0VXNlUXVpY2tMb29rUmVzb3VyY2VDYWNo
aW5nUXVpcmtzIgorI2RlZmluZSBXZWJLaXRPdmVyZmxvd01pcnJvcmluZ0VuYWJsZWRQcmVmZXJl
bmNlS2V5IEAiV2ViS2l0T3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkIgogCiAvLyBUaGVzZSBhcmUg
cHJpdmF0ZSBib3RoIGJlY2F1c2UgY2FsbGVycyBzaG91bGQgYmUgdXNpbmcgdGhlIGNvdmVyIG1l
dGhvZHMgYW5kIGJlY2F1c2UgdGhlCiAvLyBjb3ZlciBtZXRob2RzIHRoZW1zZWx2ZXMgYXJlIHBy
aXZhdGUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMu
bW0JKHJldmlzaW9uIDgzMjQyKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzg2LDYgKzM4Niw3IEBAICsgKHZvaWQpaW5p
dGlhbGl6ZQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgV2ViS2l0RE5T
UHJlZmV0Y2hpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhCb29sOllFU10sICBXZWJLaXRGdWxsU2NyZWVuRW5hYmxlZFByZWZlcmVuY2VLZXksCiAg
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0QXN5bmNocm9ub3Vz
U3BlbGxDaGVja2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5LAorICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdE92ZXJmbG93TWlycm9yaW5nRW5hYmxlZFByZWZlcmVu
Y2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0TWVt
b3J5SW5mb0VuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEJvb2w6WUVTXSwgIFdlYktpdEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZFByZWZlcmVuY2VLZXks
CiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0VXNlUHJlSFRN
TDVQYXJzZXJRdWlya3NLZXksCkBAIC0xNDU4LDYgKzE0NTksMTYgQEAgLSAoQk9PTClhc3luY2hy
b25vdXNTcGVsbENoZWNraW5nRW5hYmxlZAogICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9y
S2V5OldlYktpdEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkUHJlZmVyZW5jZUtleV07
CiB9CiAKKy0gKHZvaWQpc2V0T3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkOihCT09MKWZsYWcKK3sK
KyAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmZsYWcgZm9yS2V5OldlYktpdE92ZXJmbG93TWlycm9y
aW5nRW5hYmxlZFByZWZlcmVuY2VLZXldOworfQorCistIChCT09MKW92ZXJmbG93TWlycm9yaW5n
RW5hYmxlZAoreworICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktpdE92ZXJm
bG93TWlycm9yaW5nRW5hYmxlZFByZWZlcmVuY2VLZXldOworfQorCiArICh2b2lkKXNldFdlYktp
dExpbmtUaW1lVmVyc2lvbjooaW50KXZlcnNpb24KIHsKICAgICBzZXRXZWJLaXRMaW5rVGltZVZl
cnNpb24odmVyc2lvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZl
cmVuY2VzUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViUHJlZmVyZW5jZXNQcml2YXRlLmgJKHJldmlzaW9uIDgzMjQyKQorKysgU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjMzLDYgKzIzMyw5IEBAIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGUpCiAt
ICh2b2lkKXNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOihCT09MKWZsYWc7CiAt
IChCT09MKWFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOwogCistICh2b2lkKXNldE92
ZXJmbG93TWlycm9yaW5nRW5hYmxlZDooQk9PTClmbGFnOworLSAoQk9PTClvdmVyZmxvd01pcnJv
cmluZ0VuYWJsZWQ7CisKIC0gKHZvaWQpc2V0VXNlUHJlSFRNTDVQYXJzZXJRdWlya3M6KEJPT0wp
ZmxhZzsKIC0gKEJPT0wpdXNlUHJlSFRNTDVQYXJzZXJRdWlya3M7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDgzMjQyKQorKysgU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQ3LDYgKzE1NDcs
NyBAQCAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb246CiAgICAgc2V0dGlu
Z3MtPnNldENyb3NzT3JpZ2luQ2hlY2tJbkdldE1hdGNoZWRDU1NSdWxlc0Rpc2FibGVkKFtzZWxm
IF9uZWVkc1VucmVzdHJpY3RlZEdldE1hdGNoZWRDU1NSdWxlc10pOwogICAgIHNldHRpbmdzLT5z
ZXRJbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5hYmxlZChbc2VsZiBpbnRlcmFjdGl2ZUZvcm1W
YWxpZGF0aW9uRW5hYmxlZF0pOwogICAgIHNldHRpbmdzLT5zZXRWYWxpZGF0aW9uTWVzc2FnZVRp
bWVyTWFnbmlmaWNhdGlvbihbc2VsZiB2YWxpZGF0aW9uTWVzc2FnZVRpbWVyTWFnbmlmaWNhdGlv
bl0pOworICAgIHNldHRpbmdzLT5zZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQoW3ByZWZlcmVu
Y2VzIG92ZXJmbG93TWlycm9yaW5nRW5hYmxlZF0pOwogCiAgICAgLy8gQXBwbGljYXRpb24gQ2Fj
aGUgUHJlZmVyZW5jZXMgYXJlIHN0b3JlZCBvbiB0aGUgZ2xvYmFsIGNhY2hlIHN0b3JhZ2UgbWFu
YWdlciwgbm90IGluIFNldHRpbmdzLgogICAgIFtXZWJBcHBsaWNhdGlvbkNhY2hlIHNldERlZmF1
bHRPcmlnaW5RdW90YTpbcHJlZmVyZW5jZXMgYXBwbGljYXRpb25DYWNoZURlZmF1bHRPcmlnaW5R
dW90YV1dOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5n
ZUxvZwkocmV2aXNpb24gODMyNzQpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwzNiBAQAorMjAxMS0wNC0wOCAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQo
KS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NjIz
CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWRkcyBhIG1ldGhvZCBsYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQoKQorICAgICAgICB0aGF0IGNoYW5nZXMgdGhl
IG5ldyBzZXR0aW5nIHZhbHVlICdvdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQnIHNvIHdlIGNhbiB3
cml0ZQorICAgICAgICBsYXlvdXQgdGVzdHMgdGhhdCBkZXBlbmQgb24gaXQuIFVuZm9ydHVuYXRl
bHksIHRoaXMgbWV0aG9kIGlzIGltcGxlbWVudGVkCisgICAgICAgIG9ubHkgb24gTWFjIGFuZCBD
aHJvbWl1bS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKHNldE92ZXJmbG93TWlycm9yaW5nRW5hYmxlZENhbGxiYWNrKToKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAo
V2ViUHJlZmVyZW5jZXM6OnJlc2V0KToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjphcHBseVRv
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5oOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0T3ZlcmZsb3dNaXJyb3JpbmdFbmFi
bGVkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06Cisg
ICAgICAgIChyZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0T3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE92ZXJmbG93TWlycm9yaW5nRW5hYmxlZCk6CisK
IDIwMTEtMDQtMDggIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KSW5kZXg6IFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDgzMjQyKQor
KysgVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzA3LDYgKzE3MDcsMTYgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0QXN5bmNo
cm9ub3VzU3BlbGxDaAogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
IH0KIAorc3RhdGljIEpTVmFsdWVSZWYgc2V0T3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkQ2FsbGJh
Y2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJl
ZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1
bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50
IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisg
ICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRU
ZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29u
dHJvbGxlci0+c2V0T3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkKEpTVmFsdWVUb0Jvb2xlYW4oY29u
dGV4dCwgYXJndW1lbnRzWzBdKSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBzaGFkb3dSb290Q2FsbGJhY2soSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2Jq
ZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIGlmIChhcmd1bWVudENvdW50ICE9IDEpCkBA
IC0yMjkzLDYgKzIzMDMsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6CiAgICAgICAgIHsgInNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQiLCBzZXRKYXZh
U2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0
WFNTQXVkaXRvckVuYWJsZWQiLCBzZXRYU1NBdWRpdG9yRW5hYmxlZENhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgInNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkIiwgc2V0QXN5
bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7
ICJzZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQiLCBzZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJs
ZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzaGFkb3dSb290Iiwgc2hhZG93Um9vdENh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNob3dXZWJJbnNwZWN0b3IiLCBzaG93V2ViSW5z
cGVjdG9yQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAidGVzdE9uc2NyZWVuIiwgdGVzdE9u
c2NyZWVuQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gODMyNDIpCisrKyBUb29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODksNiArMjg5
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKGJvb2wp
OwogICAgIHZvaWQgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCk7Cisg
ICAgdm9pZCBzZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQoYm9vbCk7CiAgICAgdm9pZCBzaG93
V2ViSW5zcGVjdG9yKCk7CiAgICAgdm9pZCBjbG9zZVdlYkluc3BlY3RvcigpOwogICAgIHZvaWQg
c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCk7CkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwCShyZXZpc2lvbiA4MzI0MikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDYgKzE4MSw3IEBA
IExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGwKICAgICBiaW5kTWV0aG9k
KCJ3YWl0Rm9yUG9saWN5RGVsZWdhdGUiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OndhaXRGb3JQ
b2xpY3lEZWxlZ2F0ZSk7CiAgICAgYmluZE1ldGhvZCgid2FpdFVudGlsRG9uZSIsICZMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6d2FpdFVudGlsRG9uZSk7CiAgICAgYmluZE1ldGhvZCgid2luZG93Q291
bnQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OndpbmRvd0NvdW50KTsKKyAgICBiaW5kTWV0aG9k
KCJzZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dE92ZXJmbG93TWlycm9yaW5nRW5hYmxlZCk7CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIGFyZSBz
dHVicy4KICAgICBiaW5kTWV0aG9kKCJhYm9ydE1vZGFsIiwgJkxheW91dFRlc3RDb250cm9sbGVy
OjphYm9ydE1vZGFsKTsKQEAgLTE3MjYsMyArMTcyNywxMiBAQCB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRQbHVnaW5zRW5hCiAgICAgfQogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQor
Cit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sK
KyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKSB7
CisgICAgICAgIG1fc2hlbGwtPnByZWZlcmVuY2VzKCktPm92ZXJmbG93TWlycm9yaW5nRW5hYmxl
ZCA9IGFyZ3VtZW50c1swXS50b0Jvb2xlYW4oKTsKKyAgICAgICAgbV9zaGVsbC0+YXBwbHlQcmVm
ZXJlbmNlcygpOworICAgIH0KKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KSW5kZXg6IFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIu
aAkocmV2aXNpb24gODMyNDIpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsNiArMjQ0LDEwIEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgc2V0RWRpdGluZ0JlaGF2aW9yKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAorICAgIC8vIFNob3cgb3ZlcmZs
b3cgY29udHJvbHMgKHZlcnRpY2FsIHNjcm9sbGJhcnMgYW5kIHJlc2l6ZXJzKSBvZiBhbiBlbGVt
ZW50CisgICAgLy8gdG8gdGhlIGxlZnQgc2lkZSB3aGVuIGl0cyB0ZXh0IGRpcmVjdGlvbiBpcyBS
VEwuCisgICAgdm9pZCBzZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiwgQ3BwVmFyaWFudCopOworCiAgICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgb25seSBz
dHVicy4gIFRPRE8ocGFtZyk6IEltcGxlbWVudCBhbnkgb2YgdGhlc2UgdGhhdAogICAgIC8vIGFy
ZSBuZWVkZWQgdG8gcGFzcyB0aGUgbGF5b3V0IHRlc3RzLgogICAgIHZvaWQgZHVtcEFzV2ViQXJj
aGl2ZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lv
biA4MzI0MikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2Vz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSw3IEBAIHZvaWQgV2ViUHJlZmVyZW5j
ZXM6OnJlc2V0KCkKICAgICBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCA9IGZhbHNlOwog
ICAgIGFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkID0gZmFsc2U7CiAgICAgZm9yY2VDb21wb3Np
dGluZ01vZGUgPSBmYWxzZTsKKyAgICBvdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQgPSBmYWxzZTsK
IH0KIAogdm9pZCBXZWJQcmVmZXJlbmNlczo6YXBwbHlUbyhXZWJWaWV3KiB3ZWJWaWV3KQpAQCAt
MTUyLDYgKzE1Myw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OmFwcGx5VG8oV2ViVmlldyogd2UK
ICAgICBzZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoYWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0VuYWJsZWQpOwogICAgIHNldHRpbmdzLT5zZXRGb3JjZUNvbXBvc2l0aW5n
TW9kZShmb3JjZUNvbXBvc2l0aW5nTW9kZSk7CiAgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVk
MmRDYW52YXNFbmFibGVkKGFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKTsKKyAgICBzZXR0aW5n
cy0+c2V0T3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkKG92ZXJmbG93TWlycm9yaW5nRW5hYmxlZCk7
CiAKICAgICAvLyBGaXhlZCB2YWx1ZXMuCiAgICAgc2V0dGluZ3MtPnNldFNob3VsZFBhaW50Q3Vz
dG9tU2Nyb2xsYmFycyh0cnVlKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1dlYlByZWZlcmVuY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViUHJlZmVyZW5jZXMuaAkocmV2aXNpb24gODMyNDIpCisrKyBUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCw2
ICs4MCw3IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNlcyB7CiAgICAgYm9vbCBhY2NlbGVyYXRlZENv
bXBvc2l0aW5nRW5hYmxlZDsKICAgICBib29sIGZvcmNlQ29tcG9zaXRpbmdNb2RlOwogICAgIGJv
b2wgYWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWQ7CisgICAgYm9vbCBvdmVyZmxvd01pcnJvcmlu
Z0VuYWJsZWQ7CiAKICAgICBXZWJQcmVmZXJlbmNlcygpIHsgcmVzZXQoKTsgfQogICAgIHZvaWQg
cmVzZXQoKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJv
bGxlckd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91
dFRlc3RDb250cm9sbGVyR3RrLmNwcAkocmV2aXNpb24gODMyNDIpCisrKyBUb29scy9EdW1wUmVu
ZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MzYsNiArODM2LDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFzeW5jaHJv
bm8KICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldE92ZXJmbG93TWlycm9yaW5nRW5hYmxlZChib29sKQoreworICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgdGhpcy4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hv
d1dlYkluc3BlY3RvcigpCiB7CiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IHdlYmtpdF93
ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KG1haW5GcmFtZSk7CkluZGV4OiBUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCShyZXZpc2lvbiA4MzI0MikKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDc1
LDYgKzQ3NSw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWwKICAg
ICBbcHJlZmVyZW5jZXMgc2V0V2ViR0xFbmFibGVkOk5PXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0
VXNlUHJlSFRNTDVQYXJzZXJRdWlya3M6Tk9dOwogICAgIFtwcmVmZXJlbmNlcyBzZXRBc3luY2hy
b25vdXNTcGVsbENoZWNraW5nRW5hYmxlZDpOT107CisgICAgW3ByZWZlcmVuY2VzIHNldE92ZXJm
bG93TWlycm9yaW5nRW5hYmxlZDpOT107CiAKICAgICBbW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hh
cmVkSFRUUENvb2tpZVN0b3JhZ2VdIHNldENvb2tpZUFjY2VwdFBvbGljeTpOU0hUVFBDb29raWVB
Y2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbl07CiAgICAgCkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1t
CShyZXZpc2lvbiA4MzI0MikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0
Q29udHJvbGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtODM0LDYgKzgzNCwxMSBAQCB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBc3luY2hyb25vCiAgICAgW1tbbWFpbkZyYW1lIHdl
YlZpZXddIHByZWZlcmVuY2VzXSBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZDpl
bmFibGVkXTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0T3ZlcmZsb3dNaXJy
b3JpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBbW1ttYWluRnJhbWUgd2ViVmlld10g
cHJlZmVyZW5jZXNdIHNldE92ZXJmbG93TWlycm9yaW5nRW5hYmxlZDplbmFibGVkXTsKK30KKwog
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hvd1dlYkluc3BlY3RvcigpCiB7CiAgICAgW1tb
bWFpbkZyYW1lIHdlYlZpZXddIGluc3BlY3Rvcl0gc2hvdzpuaWxdOwpJbmRleDogVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCShy
ZXZpc2lvbiA4MzI0MikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29u
dHJvbGxlcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMTQsNiArMTIxNCwxMSBAQCB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBc3luY2hyb25vCiAgICAgLy8gRklYTUU6IEltcGxl
bWVudCB0aGlzLgogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRPdmVyZmxvd01p
cnJvcmluZ0VuYWJsZWQoYm9vbCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCit9
CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNob3dXZWJJbnNwZWN0b3IoKQogewogICAg
IENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzMjc0KQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MTEtMDQtMDggIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuZGVyIG92ZXJmbG93IGNv
bnRyb2xzIG9mIGFuIFJUTCBlbGVtZW50IHRvIGl0cyBsZWZ0LXNpZGUuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDYyMworCisgICAgICAgIFRoaXMg
Y2hhbmdlIGFkZHMgYSBuZXcgc2V0dGluZyAnb3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkJyBhbmQg
cmVuZGVyIG92ZXJmbG93CisgICAgICAgIGNvbnRyb2xzIChhIHNjcm9sbGJhciBhbmQgYSByZXNp
emVyKSBvZiBhbiBSVEwgZWxlbWVudCBpZiB0aGlzIG5ldyBzZXR0aW5nCisgICAgICAgIHZhbHVl
IGlzIHRydWUuCisKKyAgICAgICAgKiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ydGwtb3ZlcmZs
b3ctZGl2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0
bC1vdmVyZmxvdy10ZXh0YXJlYS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
ZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLW92ZXJmbG93LWRpdi1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ydGwt
b3ZlcmZsb3ctdGV4dGFyZWEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxMS0wNC0wOCAgU2Vy
Z2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCBhZGRlZCBuZXcgR1RLKyB0ZXN0IGV4cGVjdGF0aW9ucy4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC1vdmVyZmxvdy1kaXYuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ydGwtb3ZlcmZsb3ctZGl2
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25h
bC9ydGwtb3ZlcmZsb3ctZGl2Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorZGl2Lm91dGVyIHsgb3ZlcmZs
b3c6IGF1dG87IHdpZHRoOiAxMDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyBoZWlnaHQ6IDEwMHB4
OyBib3JkZXI6IHNvbGlkOyB9CitkaXYuaW5uZXIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDog
MjUwcHg7IH0KKzwvc3R5bGU+Cis8dGl0bGU+U2hvdyBhIHZlcnRpY2FsIHNjcm9sbGJhciB0byB0
aGUgbGVmdCBzaWRlLiAoYSBwb3NpdGlvbmVkIGVsZW1lbnQpPC90aXRsZT4KKzxzY3JpcHQgbGFu
Z3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitpZiAobGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0T3ZlcmZsb3dNaXJyb3Jp
bmdFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVz
dHMgd2UgY2FuIHNob3cgdGV4dCBpbiBhIHBvc2l0aW9uZWQgZWxlbWVudCB3aGVuIHdlIHNob3cg
dGhlIHZlcnRpY2FsIHNjcm9sbGJhciB0byB0aGUgbGVmdCBzaWRlLiBUbyB0ZXN0IG1hbnVhbGx5
LCBtb3ZlIHRoZSB2ZXJ0aWNhbCBzY3JvbGxiYXIgdG8gdGhlIGJvdHRvbSBhbmQgdGhlIGhvcml6
b250YWwgc2Nyb2xsYmFyIHRvIHRoZSByaWdodCBhbmQgc2VlIHdlIGNhbiBzZWUgdGhlIHRleHQg
J2ZvbycuPC9wPgorPGRpdiBjbGFzcz0ib3V0ZXIiIHN0eWxlPSJkaXJlY3Rpb246IHJ0bDsgLXdl
YmtpdC1vdmVyZmxvdy1kaXJlY3Rpb246IHJ0bDsiPgorPGRpdiBjbGFzcz0iaW5uZXIiIHN0eWxl
PSJyaWdodDogMjAwcHg7Ij5mb288L2Rpdj4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLW92ZXJmbG93LXRleHRh
cmVhLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9u
YWwvcnRsLW92ZXJmbG93LXRleHRhcmVhLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ydGwtb3ZlcmZsb3ctdGV4dGFyZWEuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5TaG93IGEg
dmVydGljYWwgc2Nyb2xsYmFyIHRvIHRoZSBsZWZ0IHNpZGUuICh0ZXh0YXJlYSk8L3RpdGxlPgor
PHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2lm
IChsYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRPdmVy
Zmxvd01pcnJvcmluZ0VuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHA+VGhpcyB0ZXN0cyB3ZSBjYW4gc2VlIFJUTCB0ZXh0IGluIGEgbm9uLXBvc2l0aW9uZWQgZWxl
bWVudCB3aGVuIHdlIG1vdmUgdGhlIHZlcnRpY2FsbCBzY3JvbGxiYXIgdG8gaXRzIGxlZnQgc2lk
ZS4gVG8gdGVzdCBtYW51YWxseSwgb3BlbiB0aGlzIGZpbGUgYW5kIHNlZSB3ZSBjYW4gc2hvdyBh
IHNlcXVlbmNlIG9mIHRleHQgIjAxMjM0NTY3ODkiIHdpdGhvdXQgYmVpbmcgY2xpcHBlZC48L3A+
Cis8dGV4dGFyZWEgcm93cz0iMTAiIGNvbHM9IjEwIiBkaXI9InJ0bCIgc3R5bGU9Ii13ZWJraXQt
b3ZlcmZsb3ctZGlyZWN0aW9uOiBydGw7Ij4wMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTwvdGV4
dGFyZWE+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLW92ZXJmbG93LWRpdi1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9pbnRlcm5hdGlv
bmFsL3J0bC1vdmVyZmxvdy1kaXYtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC1vdmVyZmxvdy1k
aXYtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACitsYXllciBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xh
eWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0
CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MzYKKyAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzYyeDM2CisgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMCkgd2lkdGggNzYyOiAiVGhpcyB0ZXN0cyB3ZSBjYW4gc2hvdyB0ZXh0IGluIGEgcG9z
aXRpb25lZCBlbGVtZW50IHdoZW4gd2Ugc2hvdyB0aGUgdmVydGljYWwgc2Nyb2xsYmFyIHRvIHRo
ZSBsZWZ0IHNpZGUuIFRvIHRlc3QgbWFudWFsbHksIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDE4KSB3aWR0aCA3MDk6ICJtb3ZlIHRoZSB2ZXJ0aWNhbCBzY3JvbGxiYXIgdG8gdGhlIGJvdHRv
bSBhbmQgdGhlIGhvcml6b250YWwgc2Nyb2xsYmFyIHRvIHRoZSByaWdodCBhbmQgc2VlIHdlIGNh
biBzZWUgdGhlIHRleHQgJ2ZvbycuIgorbGF5ZXIgYXQgKDgsNjApIHNpemUgMTA2eDEwNiBjbGlw
IGF0ICgyNiw2Mykgc2l6ZSA4NXg4NSBzY3JvbGxYIDE1MSBzY3JvbGxXaWR0aCAyMzYgc2Nyb2xs
SGVpZ2h0IDI2OAorICBSZW5kZXJCbG9jayAocmVsYXRpdmUgcG9zaXRpb25lZCkge0RJVn0gYXQg
KDAsNTIpIHNpemUgMTA2eDEwNiBbYm9yZGVyOiAoM3B4IHNvbGlkICMwMDAwMDApXQpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC1vdmVy
Zmxvdy10ZXh0YXJlYS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC1vdmVyZmxvdy10ZXh0YXJlYS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFz
dC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLW92ZXJmbG93LXRleHRhcmVhLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAg
IFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAorICAgICAgUmVuZGVyQmxv
Y2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDM2CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMCwwKSBzaXplIDc0NngzNgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc0
NjogIlRoaXMgdGVzdHMgd2UgY2FuIHNlZSBSVEwgdGV4dCBpbiBhIG5vbi1wb3NpdGlvbmVkIGVs
ZW1lbnQgd2hlbiB3ZSBtb3ZlIHRoZSB2ZXJ0aWNhbGwgc2Nyb2xsYmFyIHRvIGl0cyBsZWZ0IHNp
ZGUuIFRvIHRlc3QiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTgpIHdpZHRoIDY0NTogIm1h
bnVhbGx5LCBvcGVuIHRoaXMgZmlsZSBhbmQgc2VlIHdlIGNhbiBzaG93IGEgc2VxdWVuY2Ugb2Yg
dGV4dCBcIjAxMjM0NTY3ODlcIiB3aXRob3V0IGJlaW5nIGNsaXBwZWQuIgorICAgICAgUmVuZGVy
QmxvY2sgKGFub255bW91cykgYXQgKDAsNTIpIHNpemUgNzg0eDE0MAorICAgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKK2xheWVyIGF0ICgxMCw2Mikgc2l6ZSA5MXgx
MzYgY2xpcCBhdCAoMjYsNjMpIHNpemUgNzR4MTM0IHNjcm9sbEhlaWdodCAxODYKKyAgUmVuZGVy
VGV4dENvbnRyb2wge1RFWFRBUkVBfSBhdCAoMiwyKSBzaXplIDkxeDEzNiBbYmdjb2xvcj0jRkZG
RkZGXSBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDApXQorICAgIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgxOCwzKSBzaXplIDcweDE4MgorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDAp
IHNpemUgNzB4MTgyCisgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDcwOiAiMDEyMzQ1
Njc4OSIKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMTMpIHdpZHRoIDcwOiAiMDEyMzQ1Njc4OSIK
KyAgICAgICAgdGV4dCBydW4gYXQgKDAsMjYpIHdpZHRoIDcwOiAiMDEyMzQ1Njc4OSIKKyAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMzkpIHdpZHRoIDcwOiAiMDEyMzQ1Njc4OSIKKyAgICAgICAgdGV4
dCBydW4gYXQgKDAsNTIpIHdpZHRoIDcwOiAiMDEyMzQ1Njc4OSIKKyAgICAgICAgdGV4dCBydW4g
YXQgKDAsNjUpIHdpZHRoIDcwOiAiMDEyMzQ1Njc4OSIKKyAgICAgICAgdGV4dCBydW4gYXQgKDAs
NzgpIHdpZHRoIDcwOiAiMDEyMzQ1Njc4OSIKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsOTEpIHdp
ZHRoIDcwOiAiMDEyMzQ1Njc4OSIKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMTA0KSB3aWR0aCA3
MDogIjAxMjM0NTY3ODkiCisgICAgICAgIHRleHQgcnVuIGF0ICgwLDExNykgd2lkdGggNzA6ICIw
MTIzNDU2Nzg5IgorICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxMzApIHdpZHRoIDcwOiAiMDEyMzQ1
Njc4OSIKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMTQzKSB3aWR0aCA3MDogIjAxMjM0NTY3ODki
CisgICAgICAgIHRleHQgcnVuIGF0ICgwLDE1Nikgd2lkdGggNzA6ICIwMTIzNDU2Nzg5IgorICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwxNjkpIHdpZHRoIDcwOiAiMDEyMzQ1Njc4OSIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89186</attachid>
            <date>2011-04-12 04:13:17 -0700</date>
            <delta_ts>2011-04-19 00:55:27 -0700</delta_ts>
            <desc>A trial change v3</desc>
            <filename>issue54623-patch4.txt</filename>
            <type>text/plain</type>
            <size>39423</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzNTcxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMDQtMTIgIEhpcm9ub3Jp
IEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVuZGVyIG92ZXJmbG93IGNvbnRyb2xzIG9mIGFuIFJUTCBl
bGVtZW50IHRvIGl0cyBsZWZ0LXNpZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NDYyMworCisgICAgICAgIFRoaXMgY2hhbmdlIGFkZHMgYSBuZXcg
c2V0dGluZyAnb3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkJyBhbmQgcmVuZGVyIG92ZXJmbG93Cisg
ICAgICAgIGNvbnRyb2xzIChhIHNjcm9sbGJhciBhbmQgYSByZXNpemVyKSBvZiBhbiBSVEwgZWxl
bWVudCBpZiB0aGlzIG5ldyBzZXR0aW5nCisgICAgICAgIHZhbHVlIGlzIHRydWUuCisKKyAgICAg
ICAgVGVzdHM6IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC1vdmVyZmxvdy1kaXYuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLW92ZXJmbG93LXRleHRh
cmVhLmh0bWwKKworICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2V0dGluZ3M6OlNldHRpbmdzKTogSW5pdGlhbGl6ZWQgdGhlIG5ldyBzZXR0aW5nCisgICAg
ICAgICdvdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQnIHRvIGZhbHNlLgorICAgICAgICAqIHBhZ2Uv
U2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRPdmVyZmxvd01pcnJv
cmluZ0VuYWJsZWQpOiBBZGRlZCBhbiBhY2Nlc3NvcgorICAgICAgICBmb3IgdGhlIG5ldyBzZXR0
aW5nICdvdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQnLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGlu
Z3M6Om92ZXJmbG93TWlycm9yaW5nRW5hYmxlZCk6IGRpdHRvLgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWRkT3Zl
cmZsb3dGcm9tUG9zaXRpb25lZE9iamVjdHMpOiBNb3ZlIGNoaWxkIGVsZW1lbnRzIHJpZ2h0Lgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmRldGVybWluZUxvZ2ljYWxMZWZ0UG9zaXRp
b25Gb3JDaGlsZCk6IGRpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb250ZW50Qm94UmVjdCk6IE1vdmUgdGhlIGNv
bnRlbnQgcmVjdGFuZ2xlIHJpZ2h0LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpvdmVy
Zmxvd0NsaXBSZWN0KTogTW92ZSB0aGUgY2xpcHBpbmcgcmVjdGFuZ2xlIHJpZ2h0LgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29ybmVyUmVjdCk6IFJlbmRlciBhIHJlc2l6ZXIg
dG8gdGhlIGJvdHRvbS1sZWZ0IGNvcm5lci4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpzY3JvbGxiYXJPZmZzZXQpOiBSZW5kZXIgYSB2ZXJ0aWNhbCBzY3JvbGxiYXIgdG8gdGhlIGxl
ZnQgc2lkZQorICAgICAgICBhbmQgbW92ZSBhIGhvcml6b250YWwgc2Nyb2xsYmFyIHJpZ2h0IGJ5
IHRoZSB3aWR0aCBvZiB0aGUgdmVydGljYWwgc2Nyb2xsYmFyLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OmludmFsaWRhdGVTY3JvbGxiYXJSZWN0KTogZGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6cG9zaXRpb25PdmVyZmxvd0NvbnRyb2xzKTogZGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdE92ZXJmbG93Q29udHJvbHMpOiBk
aXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjppc1JpZ2h0VG9MZWZ0RGlyZWN0aW9uKTogQWRkZWQg
YSBzaG9ydGN1dCBtZXRob2QgZm9yCisgICAgICAgICdkaXJlY3Rpb24oKSA9PSBSVEwnLgorCiAy
MDExLTA0LTA2ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmNwcAkocmV2aXNpb24gODM1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTczLDYgKzE3Myw3IEBAIFNldHRpbmdzOjpTZXR0aW5n
cyhQYWdlKiBwYWdlKQogICAgICwgbV91c2VRdWlja0xvb2tSZXNvdXJjZUNhY2hpbmdRdWlya3Mo
ZmFsc2UpCiAgICAgLCBtX2ZvcmNlQ29tcG9zaXRpbmdNb2RlKGZhbHNlKQogICAgICwgbV9zaG91
bGRJbmplY3RVc2VyU2NyaXB0c0luSW5pdGlhbEVtcHR5RG9jdW1lbnQoZmFsc2UpCisgICAgLCBt
X292ZXJmbG93TWlycm9yaW5nRW5hYmxlZChmYWxzZSkKIHsKICAgICAvLyBBIEZyYW1lIG1heSBu
b3QgaGF2ZSBiZWVuIGNyZWF0ZWQgeWV0LCBzbyB3ZSBpbml0aWFsaXplIHRoZSBBdG9taWNTdHJp
bmcgCiAgICAgLy8gaGFzaCBiZWZvcmUgdHJ5aW5nIHRvIHVzZSBpdC4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmgJKHJldmlzaW9uIDgzNTU5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODksNiArMzg5LDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2b2lkIHNldFNob3VsZEluamVjdFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1w
dHlEb2N1bWVudChib29sIGZsYWcpIHsgbV9zaG91bGRJbmplY3RVc2VyU2NyaXB0c0luSW5pdGlh
bEVtcHR5RG9jdW1lbnQgPSBmbGFnOyB9CiAgICAgICAgIGJvb2wgc2hvdWxkSW5qZWN0VXNlclNj
cmlwdHNJbkluaXRpYWxFbXB0eURvY3VtZW50KCkgeyByZXR1cm4gbV9zaG91bGRJbmplY3RVc2Vy
U2NyaXB0c0luSW5pdGlhbEVtcHR5RG9jdW1lbnQ7IH0KIAorICAgICAgICB2b2lkIHNldE92ZXJm
bG93TWlycm9yaW5nRW5hYmxlZChib29sIGZsYWcpIHsgbV9vdmVyZmxvd01pcnJvcmluZ0VuYWJs
ZWQgPSBmbGFnOyB9CisgICAgICAgIGJvb2wgb3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkKCkgeyBy
ZXR1cm4gbV9vdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQ7IH0KKwogICAgIHByaXZhdGU6CiAgICAg
ICAgIFBhZ2UqIG1fcGFnZTsKIApAQCAtNDkxLDYgKzQ5NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgYm9vbCBtX3VzZVF1aWNrTG9va1Jlc291cmNlQ2FjaGluZ1F1aXJrcyA6IDE7
CiAgICAgICAgIGJvb2wgbV9mb3JjZUNvbXBvc2l0aW5nTW9kZSA6IDE7CiAgICAgICAgIGJvb2wg
bV9zaG91bGRJbmplY3RVc2VyU2NyaXB0c0luSW5pdGlhbEVtcHR5RG9jdW1lbnQgOiAxOworICAg
ICAgICBib29sIG1fb3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkIDogMTsKIAogI2lmIFVTRShTQUZB
UklfVEhFTUUpCiAgICAgICAgIHN0YXRpYyBib29sIGdTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xz
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCShyZXZpc2lv
biA4MzU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE0MDcsOCArMTQwNywxMiBAQCB2b2lkIFJlbmRlckJsb2NrOjphZGRP
dmVyZmxvd0Zyb21Qb3NpdGlvCiAgICAgICAgIHBvc2l0aW9uZWRPYmplY3QgPSAqaXQ7CiAgICAg
ICAgIAogICAgICAgICAvLyBGaXhlZCBwb3NpdGlvbmVkIGVsZW1lbnRzIGRvbid0IGNvbnRyaWJ1
dGUgdG8gbGF5b3V0IG92ZXJmbG93LCBzaW5jZSB0aGV5IGRvbid0IHNjcm9sbCB3aXRoIHRoZSBj
b250ZW50LgotICAgICAgICBpZiAocG9zaXRpb25lZE9iamVjdC0+c3R5bGUoKS0+cG9zaXRpb24o
KSAhPSBGaXhlZFBvc2l0aW9uKQotICAgICAgICAgICAgYWRkT3ZlcmZsb3dGcm9tQ2hpbGQocG9z
aXRpb25lZE9iamVjdCk7CisgICAgICAgIGlmIChwb3NpdGlvbmVkT2JqZWN0LT5zdHlsZSgpLT5w
b3NpdGlvbigpICE9IEZpeGVkUG9zaXRpb24pIHsKKyAgICAgICAgICAgIGludCB4ID0gcG9zaXRp
b25lZE9iamVjdC0+eCgpOworICAgICAgICAgICAgaWYgKGRvY3VtZW50KCktPnNldHRpbmdzKCkt
Pm92ZXJmbG93TWlycm9yaW5nRW5hYmxlZCgpICYmIHN0eWxlKCktPmlzUmlnaHRUb0xlZnREaXJl
Y3Rpb24oKSkKKyAgICAgICAgICAgICAgICB4IC09IHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoKTsK
KyAgICAgICAgICAgIGFkZE92ZXJmbG93RnJvbUNoaWxkKHBvc2l0aW9uZWRPYmplY3QsIEludFNp
emUoeCwgcG9zaXRpb25lZE9iamVjdC0+eSgpKSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAg
LTE3NDUsNiArMTc0OSw4IEBAIGludCBSZW5kZXJCbG9jazo6ZXN0aW1hdGVMb2dpY2FsVG9wUG9z
aXQKIHZvaWQgUmVuZGVyQmxvY2s6OmRldGVybWluZUxvZ2ljYWxMZWZ0UG9zaXRpb25Gb3JDaGls
ZChSZW5kZXJCb3gqIGNoaWxkKQogewogICAgIGludCBzdGFydFBvc2l0aW9uID0gYm9yZGVyU3Rh
cnQoKSArIHBhZGRpbmdTdGFydCgpOworICAgIGlmIChkb2N1bWVudCgpLT5zZXR0aW5ncygpLT5v
dmVyZmxvd01pcnJvcmluZ0VuYWJsZWQoKSAmJiBzdHlsZSgpLT5pc1JpZ2h0VG9MZWZ0RGlyZWN0
aW9uKCkpCisgICAgICAgIHN0YXJ0UG9zaXRpb24gLT0gdmVydGljYWxTY3JvbGxiYXJXaWR0aCgp
OwogICAgIGludCB0b3RhbEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCA9IGJvcmRlckFuZFBhZGRpbmdM
b2dpY2FsV2lkdGgoKSArIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpOwogCiAgICAgLy8gQWRkIGlu
IG91ciBzdGFydCBtYXJnaW4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcAkocmV2aXNpb24gODM1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIlJlbmRl
clRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRo
ZW1lLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1TdGF0ZS5o
IgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxtYXRoLmg+CkBAIC00NzYsNiArNDc3
LDE0IEBAIHZvaWQgUmVuZGVyQm94Ojp1cGRhdGVMYXllclRyYW5zZm9ybSgpCiAgICAgICAgIGxh
eWVyKCktPnVwZGF0ZVRyYW5zZm9ybSgpOwogfQogCitJbnRSZWN0IFJlbmRlckJveDo6Y29udGVu
dEJveFJlY3QoKSBjb25zdAoreworICAgIGludCB4ID0gYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xl
ZnQoKTsKKyAgICBpZiAoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKS0+b3ZlcmZsb3dNaXJyb3JpbmdF
bmFibGVkKCkgJiYgc3R5bGUoKS0+aXNSaWdodFRvTGVmdERpcmVjdGlvbigpKQorICAgICAgICB4
ICs9IHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoKTsKKyAgICByZXR1cm4gSW50UmVjdCh4LCBib3Jk
ZXJUb3AoKSArIHBhZGRpbmdUb3AoKSwgY29udGVudFdpZHRoKCksIGNvbnRlbnRIZWlnaHQoKSk7
Cit9CisKIEludFJlY3QgUmVuZGVyQm94OjphYnNvbHV0ZUNvbnRlbnRCb3goKSBjb25zdAogewog
ICAgIEludFJlY3QgcmVjdCA9IGNvbnRlbnRCb3hSZWN0KCk7CkBAIC0xMTE3LDYgKzExMjYsOCBA
QCBJbnRSZWN0IFJlbmRlckJveDo6b3ZlcmZsb3dDbGlwUmVjdChpbnQgCiAKICAgICAvLyBTdWJ0
cmFjdCBvdXQgc2Nyb2xsYmFycyBpZiB3ZSBoYXZlIHRoZW0uCiAgICAgaWYgKGxheWVyKCkpIHsK
KyAgICAgICAgaWYgKGRvY3VtZW50KCktPnNldHRpbmdzKCktPm92ZXJmbG93TWlycm9yaW5nRW5h
YmxlZCgpICYmIHN0eWxlKCktPmlzUmlnaHRUb0xlZnREaXJlY3Rpb24oKSkKKyAgICAgICAgICAg
IGNsaXBYICs9IGxheWVyKCktPnZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgocmVsZXZhbmN5KTsKICAg
ICAgICAgY2xpcFdpZHRoIC09IGxheWVyKCktPnZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgocmVsZXZh
bmN5KTsKICAgICAgICAgY2xpcEhlaWdodCAtPSBsYXllcigpLT5ob3Jpem9udGFsU2Nyb2xsYmFy
SGVpZ2h0KHJlbGV2YW5jeSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guaAkocmV2aXNpb24gODM1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTExNCw3ICsxMTQsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBJbnRSZWN0IGJvcmRlckJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gYm9yZGVy
Qm94UmVjdCgpOyB9IAogCiAgICAgLy8gVGhlIGNvbnRlbnQgYXJlYSBvZiB0aGUgYm94IChleGNs
dWRlcyBwYWRkaW5nIGFuZCBib3JkZXIpLgotICAgIEludFJlY3QgY29udGVudEJveFJlY3QoKSBj
b25zdCB7IHJldHVybiBJbnRSZWN0KGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0KCksIGJvcmRl
clRvcCgpICsgcGFkZGluZ1RvcCgpLCBjb250ZW50V2lkdGgoKSwgY29udGVudEhlaWdodCgpKTsg
fQorICAgIEludFJlY3QgY29udGVudEJveFJlY3QoKSBjb25zdDsKKwogICAgIC8vIFRoZSBjb250
ZW50IGJveCBpbiBhYnNvbHV0ZSBjb29yZHMuIElnbm9yZXMgdHJhbnNmb3Jtcy4KICAgICBJbnRS
ZWN0IGFic29sdXRlQ29udGVudEJveCgpIGNvbnN0OwogICAgIC8vIFRoZSBjb250ZW50IGJveCBj
b252ZXJ0ZWQgdG8gYWJzb2x1dGUgY29vcmRzICh0YWtpbmcgdHJhbnNmb3JtcyBpbnRvIGFjY291
bnQpLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZp
c2lvbiA4MzU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDcgQEAKICNpbmNsdWRlICJTY3JvbGxiYXIuaCIK
ICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xs
ZXIuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNp
bmNsdWRlICJUcmFuc2Zvcm1TdGF0ZS5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4
LmgiCkBAIC0xNjk1LDggKzE2OTYsOSBAQCBzdGF0aWMgSW50UmVjdCBjb3JuZXJSZWN0KGNvbnN0
IFJlbmRlckxhCiAgICAgICAgIGhvcml6b250YWxUaGlja25lc3MgPSBsYXllci0+dmVydGljYWxT
Y3JvbGxiYXIoKS0+d2lkdGgoKTsKICAgICAgICAgdmVydGljYWxUaGlja25lc3MgPSBsYXllci0+
aG9yaXpvbnRhbFNjcm9sbGJhcigpLT5oZWlnaHQoKTsKICAgICB9Ci0gICAgcmV0dXJuIEludFJl
Y3QoYm91bmRzLm1heFgoKSAtIGhvcml6b250YWxUaGlja25lc3MgLSBsYXllci0+cmVuZGVyZXIo
KS0+c3R5bGUoKS0+Ym9yZGVyUmlnaHRXaWR0aCgpLCAKLSAgICAgICAgICAgICAgICAgICBib3Vu
ZHMubWF4WSgpIC0gdmVydGljYWxUaGlja25lc3MgLSBsYXllci0+cmVuZGVyZXIoKS0+c3R5bGUo
KS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwKKyAgICBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUgPSBs
YXllci0+cmVuZGVyZXIoKS0+c3R5bGUoKTsKKyAgICBpbnQgeCA9IGxheWVyLT5yZW5kZXJlcigp
LT5kb2N1bWVudCgpLT5zZXR0aW5ncygpLT5vdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQoKSAmJiBz
dHlsZS0+aXNSaWdodFRvTGVmdERpcmVjdGlvbigpID8gYm91bmRzLngoKSArIHN0eWxlLT5ib3Jk
ZXJMZWZ0V2lkdGgoKSA6IGJvdW5kcy5tYXhYKCkgLSBob3Jpem9udGFsVGhpY2tuZXNzIC0gc3R5
bGUtPmJvcmRlclJpZ2h0V2lkdGgoKTsKKyAgICByZXR1cm4gSW50UmVjdCh4LCBib3VuZHMubWF4
WSgpIC0gdmVydGljYWxUaGlja25lc3MgLSBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwKICAg
ICAgICAgICAgICAgICAgICBob3Jpem9udGFsVGhpY2tuZXNzLCB2ZXJ0aWNhbFRoaWNrbmVzcyk7
CiB9CiAKQEAgLTE4MDYsMTEgKzE4MDgsMTcgQEAgSW50U2l6ZSBSZW5kZXJMYXllcjo6c2Nyb2xs
YmFyT2Zmc2V0KGNvbgogewogICAgIFJlbmRlckJveCogYm94ID0gcmVuZGVyQm94KCk7CiAKLSAg
ICBpZiAoc2Nyb2xsYmFyID09IG1fdkJhci5nZXQoKSkKLSAgICAgICAgcmV0dXJuIEludFNpemUo
Ym94LT53aWR0aCgpIC0gYm94LT5ib3JkZXJSaWdodCgpIC0gc2Nyb2xsYmFyLT53aWR0aCgpLCBi
b3gtPmJvcmRlclRvcCgpKTsKKyAgICBpZiAoc2Nyb2xsYmFyID09IG1fdkJhci5nZXQoKSkgewor
ICAgICAgICBpbnQgeCA9IHJlbmRlcmVyKCktPmRvY3VtZW50KCktPnNldHRpbmdzKCktPm92ZXJm
bG93TWlycm9yaW5nRW5hYmxlZCgpICYmIHJlbmRlcmVyKCktPnN0eWxlKCktPmlzUmlnaHRUb0xl
ZnREaXJlY3Rpb24oKSA/IGJveC0+Ym9yZGVyTGVmdCgpIDogYm94LT53aWR0aCgpIC0gYm94LT5i
b3JkZXJSaWdodCgpIC0gc2Nyb2xsYmFyLT53aWR0aCgpOworICAgICAgICByZXR1cm4gSW50U2l6
ZSh4LCBib3gtPmJvcmRlclRvcCgpKTsKKyAgICB9CiAKLSAgICBpZiAoc2Nyb2xsYmFyID09IG1f
aEJhci5nZXQoKSkKLSAgICAgICAgcmV0dXJuIEludFNpemUoYm94LT5ib3JkZXJMZWZ0KCksIGJv
eC0+aGVpZ2h0KCkgLSBib3gtPmJvcmRlckJvdHRvbSgpIC0gc2Nyb2xsYmFyLT5oZWlnaHQoKSk7
CisgICAgaWYgKHNjcm9sbGJhciA9PSBtX2hCYXIuZ2V0KCkpIHsKKyAgICAgICAgaW50IHggPSBi
b3gtPmJvcmRlckxlZnQoKTsKKyAgICAgICAgaWYgKHJlbmRlcmVyKCktPmRvY3VtZW50KCktPnNl
dHRpbmdzKCktPm92ZXJmbG93TWlycm9yaW5nRW5hYmxlZCgpICYmIHJlbmRlcmVyKCktPnN0eWxl
KCktPmlzUmlnaHRUb0xlZnREaXJlY3Rpb24oKSkKKyAgICAgICAgICAgIHggKz0gbV92QmFyID8g
bV92QmFyLT53aWR0aCgpIDogcmVzaXplckNvcm5lclJlY3QodGhpcywgYm94LT5ib3JkZXJCb3hS
ZWN0KCkpLndpZHRoKCk7CisgICAgICAgIHJldHVybiBJbnRTaXplKHgsIGJveC0+aGVpZ2h0KCkg
LSBib3gtPmJvcmRlckJvdHRvbSgpIC0gc2Nyb2xsYmFyLT5oZWlnaHQoKSk7CisgICAgfQogICAg
IAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBJbnRTaXplKCk7CkBAIC0x
ODIxLDEwICsxODI5LDE1IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmludmFsaWRhdGVTY3JvbGxiYXJS
ZWMKICAgICBJbnRSZWN0IHNjcm9sbFJlY3QgPSByZWN0OwogICAgIFJlbmRlckJveCogYm94ID0g
cmVuZGVyQm94KCk7CiAgICAgQVNTRVJUKGJveCk7Ci0gICAgaWYgKHNjcm9sbGJhciA9PSBtX3ZC
YXIuZ2V0KCkpCi0gICAgICAgIHNjcm9sbFJlY3QubW92ZShib3gtPndpZHRoKCkgLSBib3gtPmJv
cmRlclJpZ2h0KCkgLSBzY3JvbGxiYXItPndpZHRoKCksIGJveC0+Ym9yZGVyVG9wKCkpOwotICAg
IGVsc2UKLSAgICAgICAgc2Nyb2xsUmVjdC5tb3ZlKGJveC0+Ym9yZGVyTGVmdCgpLCBib3gtPmhl
aWdodCgpIC0gYm94LT5ib3JkZXJCb3R0b20oKSAtIHNjcm9sbGJhci0+aGVpZ2h0KCkpOworICAg
IGlmIChzY3JvbGxiYXIgPT0gbV92QmFyLmdldCgpKSB7CisgICAgICAgIGludCB4ID0gcmVuZGVy
ZXIoKS0+ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKS0+b3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkKCkg
JiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNSaWdodFRvTGVmdERpcmVjdGlvbigpID8gYm94LT5i
b3JkZXJMZWZ0KCkgOiBib3gtPndpZHRoKCkgLSBib3gtPmJvcmRlclJpZ2h0KCkgLSBzY3JvbGxi
YXItPndpZHRoKCk7CisgICAgICAgIHNjcm9sbFJlY3QubW92ZSh4LCBib3gtPmJvcmRlclRvcCgp
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnQgeCA9IGJveC0+Ym9yZGVyTGVmdCgpOworICAg
ICAgICBpZiAocmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKS0+b3ZlcmZsb3dNaXJy
b3JpbmdFbmFibGVkKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNSaWdodFRvTGVmdERpcmVj
dGlvbigpKQorICAgICAgICAgICAgeCArPSBtX3ZCYXIgPyBtX3ZCYXItPndpZHRoKCkgOiByZXNp
emVyQ29ybmVyUmVjdCh0aGlzLCBib3gtPmJvcmRlckJveFJlY3QoKSkud2lkdGgoKTsKKyAgICAg
ICAgc2Nyb2xsUmVjdC5tb3ZlKHgsIGJveC0+aGVpZ2h0KCkgLSBib3gtPmJvcmRlckJvdHRvbSgp
IC0gc2Nyb2xsYmFyLT5oZWlnaHQoKSk7CisgICAgfQogICAgIHJlbmRlcmVyKCktPnJlcGFpbnRS
ZWN0YW5nbGUoc2Nyb2xsUmVjdCk7CiB9CiAKQEAgLTE5NTAsMTcgKzE5NjMsMjMgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6cG9zaXRpb25PdmVyZmxvd0NvbnRybwogICAgIEludFJlY3QgYm9yZGVyQm94
ID0gYm94LT5ib3JkZXJCb3hSZWN0KCk7CiAgICAgSW50UmVjdCBzY3JvbGxDb3JuZXIoc2Nyb2xs
Q29ybmVyUmVjdCh0aGlzLCBib3JkZXJCb3gpKTsKICAgICBJbnRSZWN0IGFic0JvdW5kcyhib3Jk
ZXJCb3gueCgpICsgdHgsIGJvcmRlckJveC55KCkgKyB0eSwgYm9yZGVyQm94LndpZHRoKCksIGJv
cmRlckJveC5oZWlnaHQoKSk7Ci0gICAgaWYgKG1fdkJhcikKLSAgICAgICAgbV92QmFyLT5zZXRG
cmFtZVJlY3QoSW50UmVjdChhYnNCb3VuZHMubWF4WCgpIC0gYm94LT5ib3JkZXJSaWdodCgpIC0g
bV92QmFyLT53aWR0aCgpLAorICAgIGlmIChtX3ZCYXIpIHsKKyAgICAgICAgaW50IHggPSByZW5k
ZXJlcigpLT5kb2N1bWVudCgpLT5zZXR0aW5ncygpLT5vdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQo
KSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5pc1JpZ2h0VG9MZWZ0RGlyZWN0aW9uKCkgPyBhYnNC
b3VuZHMueCgpICsgYm94LT5ib3JkZXJMZWZ0KCkgOiBhYnNCb3VuZHMubWF4WCgpIC0gYm94LT5i
b3JkZXJSaWdodCgpIC0gbV92QmFyLT53aWR0aCgpOworICAgICAgICBtX3ZCYXItPnNldEZyYW1l
UmVjdChJbnRSZWN0KHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJz
Qm91bmRzLnkoKSArIGJveC0+Ym9yZGVyVG9wKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV92QmFyLT53aWR0aCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFic0JvdW5kcy5oZWlnaHQoKSAtIChib3gtPmJvcmRlclRvcCgpICsgYm94LT5i
b3JkZXJCb3R0b20oKSkgLSBzY3JvbGxDb3JuZXIuaGVpZ2h0KCkpKTsKKyAgICB9CiAKLSAgICBp
ZiAobV9oQmFyKQotICAgICAgICBtX2hCYXItPnNldEZyYW1lUmVjdChJbnRSZWN0KGFic0JvdW5k
cy54KCkgKyBib3gtPmJvcmRlckxlZnQoKSwKKyAgICBpZiAobV9oQmFyKSB7CisgICAgICAgIGlu
dCB4ID0gYWJzQm91bmRzLngoKSArIGJveC0+Ym9yZGVyTGVmdCgpOworICAgICAgICBpZiAocmVu
ZGVyZXIoKS0+ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKS0+b3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVk
KCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNSaWdodFRvTGVmdERpcmVjdGlvbigpKQorICAg
ICAgICAgICAgeCArPSBzY3JvbGxDb3JuZXIud2lkdGgoKTsKKyAgICAgICAgbV9oQmFyLT5zZXRG
cmFtZVJlY3QoSW50UmVjdCh4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFic0JvdW5kcy5tYXhZKCkgLSBib3gtPmJvcmRlckJvdHRvbSgpIC0gbV9oQmFyLT5oZWlnaHQo
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNCb3VuZHMud2lkdGgo
KSAtIChib3gtPmJvcmRlckxlZnQoKSArIGJveC0+Ym9yZGVyUmlnaHQoKSkgLSBzY3JvbGxDb3Ju
ZXIud2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2hCYXIt
PmhlaWdodCgpKSk7CisgICAgfQogICAgIAogICAgIGlmIChtX3Njcm9sbENvcm5lcikKICAgICAg
ICAgbV9zY3JvbGxDb3JuZXItPnNldEZyYW1lUmVjdChzY3JvbGxDb3JuZXIpOwpAQCAtMjMxMyw3
ICsyMzMyLDggQEAgYm9vbCBSZW5kZXJMYXllcjo6aGl0VGVzdE92ZXJmbG93Q29udHJvbAogICAg
IGludCByZXNpemVDb250cm9sU2l6ZSA9IG1heChyZXNpemVDb250cm9sUmVjdC5oZWlnaHQoKSwg
MCk7CiAKICAgICBpZiAobV92QmFyKSB7Ci0gICAgICAgIEludFJlY3QgdkJhclJlY3QoYm94LT53
aWR0aCgpIC0gYm94LT5ib3JkZXJSaWdodCgpIC0gbV92QmFyLT53aWR0aCgpLCAKKyAgICAgICAg
aW50IHggPSByZW5kZXJlcigpLT5kb2N1bWVudCgpLT5zZXR0aW5ncygpLT5vdmVyZmxvd01pcnJv
cmluZ0VuYWJsZWQoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5pc1JpZ2h0VG9MZWZ0RGlyZWN0
aW9uKCkgPyBib3gtPmJvcmRlckxlZnQoKSA6IGJveC0+d2lkdGgoKSAtIGJveC0+Ym9yZGVyUmln
aHQoKSAtIG1fdkJhci0+d2lkdGgoKTsKKyAgICAgICAgSW50UmVjdCB2QmFyUmVjdCh4LAogICAg
ICAgICAgICAgICAgICAgICAgICAgIGJveC0+Ym9yZGVyVG9wKCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV92QmFyLT53aWR0aCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGJveC0+
aGVpZ2h0KCkgLSAoYm94LT5ib3JkZXJUb3AoKSArIGJveC0+Ym9yZGVyQm90dG9tKCkpIC0gKG1f
aEJhciA/IG1faEJhci0+aGVpZ2h0KCkgOiByZXNpemVDb250cm9sU2l6ZSkpOwpAQCAtMjMyNSw3
ICsyMzQ1LDEwIEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmhpdFRlc3RPdmVyZmxvd0NvbnRyb2wKIAog
ICAgIHJlc2l6ZUNvbnRyb2xTaXplID0gbWF4KHJlc2l6ZUNvbnRyb2xSZWN0LndpZHRoKCksIDAp
OwogICAgIGlmIChtX2hCYXIpIHsKLSAgICAgICAgSW50UmVjdCBoQmFyUmVjdChib3gtPmJvcmRl
ckxlZnQoKSwKKyAgICAgICAgaW50IHggPSBib3gtPmJvcmRlckxlZnQoKTsKKyAgICAgICAgaWYg
KHJlbmRlcmVyKCktPmRvY3VtZW50KCktPnNldHRpbmdzKCktPm92ZXJmbG93TWlycm9yaW5nRW5h
YmxlZCgpICYmIHJlbmRlcmVyKCktPnN0eWxlKCktPmlzUmlnaHRUb0xlZnREaXJlY3Rpb24oKSkK
KyAgICAgICAgICAgIHggKz0gbV92QmFyID8gbV92QmFyLT53aWR0aCgpIDogcmVzaXplQ29udHJv
bFNpemU7CisgICAgICAgIEludFJlY3QgaEJhclJlY3QoeCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICBib3gtPmhlaWdodCgpIC0gYm94LT5ib3JkZXJCb3R0b20oKSAtIG1faEJhci0+aGVpZ2h0
KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgYm94LT53aWR0aCgpIC0gKGJveC0+Ym9yZGVy
TGVmdCgpICsgYm94LT5ib3JkZXJSaWdodCgpKSAtIChtX3ZCYXIgPyBtX3ZCYXItPndpZHRoKCkg
OiByZXNpemVDb250cm9sU2l6ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgbV9oQmFyLT5o
ZWlnaHQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaAkocmV2aXNpb24gODM1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDkyLDYgKzQ5Miw3IEBAIHB1Ymxp
YzoKIAogICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8VGV4dERpcmVjdGlvbj4oaW5oZXJpdGVkX2ZsYWdzLl9kaXJlY3Rpb24pOyB9CiAgICAg
Ym9vbCBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gZGlyZWN0aW9uKCkg
PT0gTFRSOyB9CisgICAgYm9vbCBpc1JpZ2h0VG9MZWZ0RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1
cm4gZGlyZWN0aW9uKCkgPT0gUlRMOyB9CiAKICAgICBMZW5ndGggbGluZUhlaWdodCgpIGNvbnN0
IHsgcmV0dXJuIGluaGVyaXRlZC0+bGluZV9oZWlnaHQ7IH0KICAgICBpbnQgY29tcHV0ZWRMaW5l
SGVpZ2h0KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4
MzU3MSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDQtMTIgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkZWQgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0T3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVk
KCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDYy
MworCisgICAgICAgIFRoaXMgY2hhbmdlIGFkZHMgYSBtZXRob2QgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuc2V0T3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkKCkKKyAgICAgICAgdGhhdCBjaGFuZ2VzIHRo
ZSBuZXcgc2V0dGluZyB2YWx1ZSAnb3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkJyBzbyB3ZSBjYW4g
d3JpdGUKKyAgICAgICAgbGF5b3V0IHRlc3RzIHRoYXQgZGVwZW5kIG9uIGl0LiBVbmZvcnR1bmF0
ZWx5LCB0aGlzIG1ldGhvZCBpcyBpbXBsZW1lbnRlZAorICAgICAgICBvbmx5IG9uIE1hYyBhbmQg
Q2hyb21pdW0uCisKKyAgICAgICAgKiBwdWJsaWMvV2ViU2V0dGluZ3MuaDoKKyAgICAgICAgKiBz
cmMvV2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBs
OjpzZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQpOgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5n
c0ltcGwuaDoKKwogMjAxMS0wNC0xMSAgSm9obiBCYXRlcyAgPGpiYXRlc0Bnb29nbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAkocmV2aXNpb24gODM1NTkpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTQsNiArMTE0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRNZW1vcnlJ
bmZvRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEh5cGVybGlua0F1ZGl0
aW5nRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEFzeW5jaHJvbm91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0T3ZlcmZs
b3dNaXJyb3JpbmdFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FyZXRC
cm93c2luZ0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnRlcmFjdGl2
ZUZvcm1WYWxpZGF0aW9uRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE1p
bmltdW1UaW1lckludGVydmFsKGRvdWJsZSkgPSAwOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCShyZXZpc2lvbiA4MzU1OSkKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM2OCw2ICszNjgsMTEgQEAgdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEFzeW5jaHJv
bm91c1NwZQogICAgIG1fc2V0dGluZ3MtPnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKGVuYWJsZWQpOwogfQogCit2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0T3ZlcmZsb3dNaXJy
b3JpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3NldHRpbmdzLT5zZXRPdmVyZmxv
d01pcnJvcmluZ0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpz
ZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAgICAgbV9zZXR0aW5ncy0+
c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoZW5hYmxlZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAkocmV2aXNpb24gODM1NTkpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAkod29ya2luZyBjb3B5KQpA
QCAtMTA3LDYgKzEwNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWVtb3J5SW5m
b0VuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEh5cGVybGlua0F1ZGl0aW5nRW5h
YmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldE92ZXJmbG93TWlycm9yaW5nRW5h
YmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9v
bCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVk
KGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUp
OwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gODM1NzEpCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAxMS0wNC0x
MiAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBsYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQoKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NjIzCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWRk
cyBhIG1ldGhvZCBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJs
ZWQoKQorICAgICAgICB0aGF0IGNoYW5nZXMgdGhlIG5ldyBzZXR0aW5nIHZhbHVlICdvdmVyZmxv
d01pcnJvcmluZ0VuYWJsZWQnIHNvIHdlIGNhbiB3cml0ZQorICAgICAgICBsYXlvdXQgdGVzdHMg
dGhhdCBkZXBlbmQgb24gaXQuIFVuZm9ydHVuYXRlbHksIHRoaXMgbWV0aG9kIGlzIGltcGxlbWVu
dGVkCisgICAgICAgIG9ubHkgb24gTWFjIGFuZCBDaHJvbWl1bS4KKworICAgICAgICAqIFdlYlZp
ZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmg6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgaW5pdGlhbGl6ZV0pOgorICAg
ICAgICAoLVtXZWJQcmVmZXJlbmNlcyBzZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQ6XSk6Cisg
ICAgICAgICgtW1dlYlByZWZlcmVuY2VzIG92ZXJmbG93TWlycm9yaW5nRW5hYmxlZF0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmg6CisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWQ6XSk6
CisKIDIwMTEtMDQtMTEgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHJldmlz
aW9uIDgzNTU5KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5
c1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiw3IEBACiAjZGVmaW5lIFdl
YktpdE1lbW9yeUluZm9FbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdE1lbW9yeUluZm9FbmFi
bGVkIgogI2RlZmluZSBXZWJLaXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5
IEAiV2ViS2l0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkIgogI2RlZmluZSBXZWJLaXRVc2VRdWlj
a0xvb2tSZXNvdXJjZUNhY2hpbmdRdWlya3NQcmVmZXJlbmNlS2V5IEAiV2ViS2l0VXNlUXVpY2tM
b29rUmVzb3VyY2VDYWNoaW5nUXVpcmtzIgorI2RlZmluZSBXZWJLaXRPdmVyZmxvd01pcnJvcmlu
Z0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0T3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkIgog
CiAvLyBUaGVzZSBhcmUgcHJpdmF0ZSBib3RoIGJlY2F1c2UgY2FsbGVycyBzaG91bGQgYmUgdXNp
bmcgdGhlIGNvdmVyIG1ldGhvZHMgYW5kIGJlY2F1c2UgdGhlCiAvLyBjb3ZlciBtZXRob2RzIHRo
ZW1zZWx2ZXMgYXJlIHByaXZhdGUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViUHJlZmVyZW5jZXMubW0JKHJldmlzaW9uIDgzNTU5KQorKysgU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzg3LDYgKzM4Nyw3
IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6
Tk9dLCAgV2ViS2l0RE5TUHJlZmV0Y2hpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAg
W05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBXZWJLaXRGdWxsU2NyZWVuRW5hYmxlZFBy
ZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2Vi
S2l0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5LAorICAgICAg
ICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdE92ZXJmbG93TWlycm9yaW5n
RW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpO
T10sICAgV2ViS2l0TWVtb3J5SW5mb0VuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdEh5cGVybGlua0F1ZGl0aW5nRW5hYmxl
ZFByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAg
V2ViS2l0VXNlUHJlSFRNTDVQYXJzZXJRdWlya3NLZXksCkBAIC0xNDY4LDYgKzE0NjksMTYgQEAg
LSAoQk9PTClhc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZAogICAgIHJldHVybiBbc2Vs
ZiBfYm9vbFZhbHVlRm9yS2V5OldlYktpdEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
UHJlZmVyZW5jZUtleV07CiB9CiAKKy0gKHZvaWQpc2V0T3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVk
OihCT09MKWZsYWcKK3sKKyAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmZsYWcgZm9yS2V5OldlYktp
dE92ZXJmbG93TWlycm9yaW5nRW5hYmxlZFByZWZlcmVuY2VLZXldOworfQorCistIChCT09MKW92
ZXJmbG93TWlycm9yaW5nRW5hYmxlZAoreworICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9y
S2V5OldlYktpdE92ZXJmbG93TWlycm9yaW5nRW5hYmxlZFByZWZlcmVuY2VLZXldOworfQorCiAr
ICh2b2lkKXNldFdlYktpdExpbmtUaW1lVmVyc2lvbjooaW50KXZlcnNpb24KIHsKICAgICBzZXRX
ZWJLaXRMaW5rVGltZVZlcnNpb24odmVyc2lvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgJKHJldmlzaW9uIDgzNTU5KQor
KysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMjM1LDYgKzIzNSw5IEBAIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMg
KFdlYlByaXZhdGUpCiAtICh2b2lkKXNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
OihCT09MKWZsYWc7CiAtIChCT09MKWFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOwog
CistICh2b2lkKXNldE92ZXJmbG93TWlycm9yaW5nRW5hYmxlZDooQk9PTClmbGFnOworLSAoQk9P
TClvdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQ7CisKIC0gKHZvaWQpc2V0VXNlUHJlSFRNTDVQYXJz
ZXJRdWlya3M6KEJPT0wpZmxhZzsKIC0gKEJPT0wpdXNlUHJlSFRNTDVQYXJzZXJRdWlya3M7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDgzNTU5KQor
KysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTU3LDYgKzE1NTcsNyBAQCAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZl
cmVuCiAgICAgc2V0dGluZ3MtPnNldENyb3NzT3JpZ2luQ2hlY2tJbkdldE1hdGNoZWRDU1NSdWxl
c0Rpc2FibGVkKFtzZWxmIF9uZWVkc1VucmVzdHJpY3RlZEdldE1hdGNoZWRDU1NSdWxlc10pOwog
ICAgIHNldHRpbmdzLT5zZXRJbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5hYmxlZChbc2VsZiBp
bnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5hYmxlZF0pOwogICAgIHNldHRpbmdzLT5zZXRWYWxp
ZGF0aW9uTWVzc2FnZVRpbWVyTWFnbmlmaWNhdGlvbihbc2VsZiB2YWxpZGF0aW9uTWVzc2FnZVRp
bWVyTWFnbmlmaWNhdGlvbl0pOworICAgIHNldHRpbmdzLT5zZXRPdmVyZmxvd01pcnJvcmluZ0Vu
YWJsZWQoW3ByZWZlcmVuY2VzIG92ZXJmbG93TWlycm9yaW5nRW5hYmxlZF0pOwogCiAgICAgLy8g
QXBwbGljYXRpb24gQ2FjaGUgUHJlZmVyZW5jZXMgYXJlIHN0b3JlZCBvbiB0aGUgZ2xvYmFsIGNh
Y2hlIHN0b3JhZ2UgbWFuYWdlciwgbm90IGluIFNldHRpbmdzLgogICAgIFtXZWJBcHBsaWNhdGlv
bkNhY2hlIHNldERlZmF1bHRPcmlnaW5RdW90YTpbcHJlZmVyZW5jZXMgYXBwbGljYXRpb25DYWNo
ZURlZmF1bHRPcmlnaW5RdW90YV1dOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gODM1NzEpCisrKyBUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNiBAQAorMjAxMS0wNC0xMiAgSGlyb25vcmkgQm9u
byAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRlZCBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRPdmVyZmxvd01p
cnJvcmluZ0VuYWJsZWQoKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU0NjIzCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWRkcyBhIG1ldGhvZCBsYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQoKQorICAgICAgICB0
aGF0IGNoYW5nZXMgdGhlIG5ldyBzZXR0aW5nIHZhbHVlICdvdmVyZmxvd01pcnJvcmluZ0VuYWJs
ZWQnIHNvIHdlIGNhbiB3cml0ZQorICAgICAgICBsYXlvdXQgdGVzdHMgdGhhdCBkZXBlbmQgb24g
aXQuIFVuZm9ydHVuYXRlbHksIHRoaXMgbWV0aG9kIGlzIGltcGxlbWVudGVkCisgICAgICAgIG9u
bHkgb24gTWFjIGFuZCBDaHJvbWl1bS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldE92ZXJmbG93TWlycm9yaW5nRW5hYmxl
ZENhbGxiYWNrKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlv
bnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJs
ZWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9s
bGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMu
Y3BwOgorICAgICAgICAoV2ViUHJlZmVyZW5jZXM6OnJlc2V0KToKKyAgICAgICAgKFdlYlByZWZl
cmVuY2VzOjphcHBseVRvKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQ
cmVmZXJlbmNlcy5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29u
dHJvbGxlckd0ay5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0T3ZlcmZs
b3dNaXJyb3JpbmdFbmFibGVkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWUubW06CisgICAgICAgIChyZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0T3ZlcmZsb3dNaXJyb3JpbmdFbmFi
bGVkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJX
aW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE92ZXJmbG93TWlycm9y
aW5nRW5hYmxlZCk6CisKIDIwMTEtMDQtMTEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA4MzU1OSkK
KysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTcwNyw2ICsxNzA3LDE2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldEFzeW5j
aHJvbm91c1NwZWxsQ2gKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldE92ZXJmbG93TWlycm9yaW5nRW5hYmxlZENhbGxi
YWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RS
ZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJn
dW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3Vu
dCA8IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKwor
ICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0
VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNv
bnRyb2xsZXItPnNldE92ZXJmbG93TWlycm9yaW5nRW5hYmxlZChKU1ZhbHVlVG9Cb29sZWFuKGNv
bnRleHQsIGFyZ3VtZW50c1swXSkpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgc2hhZG93Um9vdENhbGxiYWNrKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBpZiAoYXJndW1lbnRDb3VudCAhPSAxKQpA
QCAtMjI5Myw2ICsyMzAzLDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OgogICAgICAgICB7ICJzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkIiwgc2V0SmF2
YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNl
dFhTU0F1ZGl0b3JFbmFibGVkIiwgc2V0WFNTQXVkaXRvckVuYWJsZWRDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgICAgICB7ICJzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCIsIHNldEFz
eW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAg
eyAic2V0T3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkIiwgc2V0T3ZlcmZsb3dNaXJyb3JpbmdFbmFi
bGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2hhZG93Um9vdCIsIHNoYWRvd1Jvb3RD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzaG93V2ViSW5zcGVjdG9yIiwgc2hvd1dlYklu
c3BlY3RvckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInRlc3RPbnNjcmVlbiIsIHRlc3RP
bnNjcmVlbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDgzNTU5KQorKysgVG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjg5LDYgKzI4
OSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChib29s
KTsKICAgICB2b2lkIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpOwor
ICAgIHZvaWQgc2V0T3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkKGJvb2wpOwogICAgIHZvaWQgc2hv
d1dlYkluc3BlY3RvcigpOwogICAgIHZvaWQgY2xvc2VXZWJJbnNwZWN0b3IoKTsKICAgICB2b2lk
IHNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChib29sIGVuYWJsZWQpOwpJbmRleDogVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAkocmV2aXNpb24gODM1NTkpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw2ICsxODEsNyBA
QCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsCiAgICAgYmluZE1ldGhv
ZCgid2FpdEZvclBvbGljeURlbGVnYXRlIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjp3YWl0Rm9y
UG9saWN5RGVsZWdhdGUpOwogICAgIGJpbmRNZXRob2QoIndhaXRVbnRpbERvbmUiLCAmTGF5b3V0
VGVzdENvbnRyb2xsZXI6OndhaXRVbnRpbERvbmUpOwogICAgIGJpbmRNZXRob2QoIndpbmRvd0Nv
dW50IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjp3aW5kb3dDb3VudCk7CisgICAgYmluZE1ldGhv
ZCgic2V0T3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQpOwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBhcmUg
c3R1YnMuCiAgICAgYmluZE1ldGhvZCgiYWJvcnRNb2RhbCIsICZMYXlvdXRUZXN0Q29udHJvbGxl
cjo6YWJvcnRNb2RhbCk7CkBAIC0xNzI2LDMgKzE3MjcsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0UGx1Z2luc0VuYQogICAgIH0KICAgICByZXN1bHQtPnNldE51bGwoKTsKIH0K
Kwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0T3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVk
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7
CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc0Jvb2woKSkg
eworICAgICAgICBtX3NoZWxsLT5wcmVmZXJlbmNlcygpLT5vdmVyZmxvd01pcnJvcmluZ0VuYWJs
ZWQgPSBhcmd1bWVudHNbMF0udG9Cb29sZWFuKCk7CisgICAgICAgIG1fc2hlbGwtPmFwcGx5UHJl
ZmVyZW5jZXMoKTsKKyAgICB9CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVy
LmgJKHJldmlzaW9uIDgzNTU5KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ0LDYgKzI0NCwxMCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIHNldEVkaXRpbmdCZWhhdmlvcihj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKKyAgICAvLyBTaG93IG92ZXJm
bG93IGNvbnRyb2xzICh2ZXJ0aWNhbCBzY3JvbGxiYXJzIGFuZCByZXNpemVycykgb2YgYW4gZWxl
bWVudAorICAgIC8vIHRvIHRoZSBsZWZ0IHNpZGUgd2hlbiBpdHMgdGV4dCBkaXJlY3Rpb24gaXMg
UlRMLgorICAgIHZvaWQgc2V0T3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkKGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKwogICAgIC8vIFRoZSBmb2xsb3dpbmcgYXJlIG9ubHkg
c3R1YnMuICBUT0RPKHBhbWcpOiBJbXBsZW1lbnQgYW55IG9mIHRoZXNlIHRoYXQKICAgICAvLyBh
cmUgbmVlZGVkIHRvIHBhc3MgdGhlIGxheW91dCB0ZXN0cy4KICAgICB2b2lkIGR1bXBBc1dlYkFy
Y2hpdmUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwpJbmRleDogVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmNwcAkocmV2aXNp
b24gODM1NTkpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNl
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw2ICsxMDUsNyBAQCB2b2lkIFdlYlByZWZlcmVu
Y2VzOjpyZXNldCgpCiAgICAgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQgPSBmYWxzZTsK
ICAgICBhY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZCA9IGZhbHNlOwogICAgIGZvcmNlQ29tcG9z
aXRpbmdNb2RlID0gZmFsc2U7CisgICAgb3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkID0gZmFsc2U7
CiB9CiAKIHZvaWQgV2ViUHJlZmVyZW5jZXM6OmFwcGx5VG8oV2ViVmlldyogd2ViVmlldykKQEAg
LTE1Miw2ICsxNTMsNyBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjphcHBseVRvKFdlYlZpZXcqIHdl
CiAgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdFbmFibGVkKTsKICAgICBzZXR0aW5ncy0+c2V0Rm9yY2VDb21wb3NpdGlu
Z01vZGUoZm9yY2VDb21wb3NpdGluZ01vZGUpOwogICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRl
ZDJkQ2FudmFzRW5hYmxlZChhY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZCk7CisgICAgc2V0dGlu
Z3MtPnNldE92ZXJmbG93TWlycm9yaW5nRW5hYmxlZChvdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQp
OwogCiAgICAgLy8gRml4ZWQgdmFsdWVzLgogICAgIHNldHRpbmdzLT5zZXRTaG91bGRQYWludEN1
c3RvbVNjcm9sbGJhcnModHJ1ZSk7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJQcmVmZXJlbmNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlByZWZlcmVuY2VzLmgJKHJldmlzaW9uIDgzNTU5KQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuaAkod29ya2luZyBjb3B5KQpAQCAtODAs
NiArODAsNyBAQCBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXMgewogICAgIGJvb2wgYWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0VuYWJsZWQ7CiAgICAgYm9vbCBmb3JjZUNvbXBvc2l0aW5nTW9kZTsKICAgICBi
b29sIGFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkOworICAgIGJvb2wgb3ZlcmZsb3dNaXJyb3Jp
bmdFbmFibGVkOwogCiAgICAgV2ViUHJlZmVyZW5jZXMoKSB7IHJlc2V0KCk7IH0KICAgICB2b2lk
IHJlc2V0KCk7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRy
b2xsZXJHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlv
dXRUZXN0Q29udHJvbGxlckd0ay5jcHAJKHJldmlzaW9uIDgzNTU5KQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODM2LDYgKzgzNiwxMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBc3luY2hy
b25vCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgogfQogCit2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQoYm9vbCkKK3sKKyAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHRoaXMuCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNo
b3dXZWJJbnNwZWN0b3IoKQogewogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSB3ZWJraXRf
d2ViX2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkocmV2aXNpb24gODM1NTkpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3
NSw2ICs0NzUsNyBAQCBzdGF0aWMgdm9pZCByZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsCiAg
ICAgW3ByZWZlcmVuY2VzIHNldFdlYkdMRW5hYmxlZDpOT107CiAgICAgW3ByZWZlcmVuY2VzIHNl
dFVzZVByZUhUTUw1UGFyc2VyUXVpcmtzOk5PXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0QXN5bmNo
cm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQ6Tk9dOworICAgIFtwcmVmZXJlbmNlcyBzZXRPdmVy
Zmxvd01pcnJvcmluZ0VuYWJsZWQ6Tk9dOwogCiAgICAgW1tOU0hUVFBDb29raWVTdG9yYWdlIHNo
YXJlZEhUVFBDb29raWVTdG9yYWdlXSBzZXRDb29raWVBY2NlcHRQb2xpY3k6TlNIVFRQQ29va2ll
QWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW5dOwogICAgIApJbmRleDogVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5t
bQkocmV2aXNpb24gODM1NTkpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVz
dENvbnRyb2xsZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTgzNCw2ICs4MzQsMTEgQEAgdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXN5bmNocm9ubwogICAgIFtbW21haW5GcmFtZSB3
ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQ6
ZW5hYmxlZF07CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE92ZXJmbG93TWly
cm9yaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXdd
IHByZWZlcmVuY2VzXSBzZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQ6ZW5hYmxlZF07Cit9CisK
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNob3dXZWJJbnNwZWN0b3IoKQogewogICAgIFtb
W21haW5GcmFtZSB3ZWJWaWV3XSBpbnNwZWN0b3JdIHNob3c6bmlsXTsKSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAko
cmV2aXNpb24gODM1NTkpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENv
bnRyb2xsZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjE0LDYgKzEyMTQsMTEgQEAgdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXN5bmNocm9ubwogICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgdGhpcy4KIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0T3ZlcmZsb3dN
aXJyb3JpbmdFbmFibGVkKGJvb2wpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgor
fQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzaG93V2ViSW5zcGVjdG9yKCkKIHsKICAg
ICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MzU3MSkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisy
MDExLTA0LTEyICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlciBvdmVyZmxvdyBj
b250cm9scyBvZiBhbiBSVEwgZWxlbWVudCB0byBpdHMgbGVmdC1zaWRlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ2MjMKKworICAgICAgICBUaGlz
IGNoYW5nZSBhZGRzIGEgbmV3IHNldHRpbmcgJ292ZXJmbG93TWlycm9yaW5nRW5hYmxlZCcgYW5k
IHJlbmRlciBvdmVyZmxvdworICAgICAgICBjb250cm9scyAoYSBzY3JvbGxiYXIgYW5kIGEgcmVz
aXplcikgb2YgYW4gUlRMIGVsZW1lbnQgaWYgdGhpcyBuZXcgc2V0dGluZworICAgICAgICB2YWx1
ZSBpcyB0cnVlLgorCisgICAgICAgICogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLW92ZXJm
bG93LWRpdi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9y
dGwtb3ZlcmZsb3ctdGV4dGFyZWEuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFj
L2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC1vdmVyZmxvdy1kaXYtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRs
LW92ZXJmbG93LXRleHRhcmVhLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTEtMDQtMTIgIEJh
bGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJ1YmJlci1zdGFt
cGVkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvdGV4dC9p
bnRlcm5hdGlvbmFsL3J0bC1vdmVyZmxvdy1kaXYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ydGwtb3ZlcmZsb3ctZGl2Lmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ydGwtb3ZlcmZs
b3ctZGl2Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkgQEAKKzxodG1sPgorPGhlYWQ+
Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorZGl2Lm91dGVyIHsgb3ZlcmZsb3c6IGF1dG87IHdp
ZHRoOiAxMDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyBoZWlnaHQ6IDEwMHB4OyBib3JkZXI6IHNv
bGlkOyB9CitkaXYuaW5uZXIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMjUwcHg7IH0KKzwv
c3R5bGU+Cis8dGl0bGU+U2hvdyBhIHZlcnRpY2FsIHNjcm9sbGJhciB0byB0aGUgbGVmdCBzaWRl
LiAoYSBwb3NpdGlvbmVkIGVsZW1lbnQpPC90aXRsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFz
Y3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitpZiAobGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0T3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkKHRy
dWUpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgd2UgY2FuIHNo
b3cgdGV4dCBpbiBhIHBvc2l0aW9uZWQgZWxlbWVudCB3aGVuIHdlIHNob3cgdGhlIHZlcnRpY2Fs
IHNjcm9sbGJhciB0byB0aGUgbGVmdCBzaWRlLiBUbyB0ZXN0IG1hbnVhbGx5LCBtb3ZlIHRoZSB2
ZXJ0aWNhbCBzY3JvbGxiYXIgdG8gdGhlIGJvdHRvbSBhbmQgdGhlIGhvcml6b250YWwgc2Nyb2xs
YmFyIHRvIHRoZSByaWdodCBhbmQgc2VlIHdlIGNhbiBzZWUgdGhlIHRleHQgJ2ZvbycuPC9wPgor
PGRpdiBjbGFzcz0ib3V0ZXIiIHN0eWxlPSJkaXJlY3Rpb246IHJ0bDsgLXdlYmtpdC1vdmVyZmxv
dy1kaXJlY3Rpb246IHJ0bDsiPgorPGRpdiBjbGFzcz0iaW5uZXIiIHN0eWxlPSJyaWdodDogMjAw
cHg7Ij5mb288L2Rpdj4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLW92ZXJmbG93LXRleHRhcmVhLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLW92ZXJm
bG93LXRleHRhcmVhLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RleHQv
aW50ZXJuYXRpb25hbC9ydGwtb3ZlcmZsb3ctdGV4dGFyZWEuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5TaG93IGEgdmVydGljYWwgc2Ny
b2xsYmFyIHRvIHRoZSBsZWZ0IHNpZGUuICh0ZXh0YXJlYSk8L3RpdGxlPgorPHNjcmlwdCBsYW5n
dWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2lmIChsYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRPdmVyZmxvd01pcnJvcmlu
Z0VuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0
cyB3ZSBjYW4gc2VlIFJUTCB0ZXh0IGluIGEgbm9uLXBvc2l0aW9uZWQgZWxlbWVudCB3aGVuIHdl
IG1vdmUgdGhlIHZlcnRpY2FsbCBzY3JvbGxiYXIgdG8gaXRzIGxlZnQgc2lkZS4gVG8gdGVzdCBt
YW51YWxseSwgb3BlbiB0aGlzIGZpbGUgYW5kIHNlZSB3ZSBjYW4gc2hvdyBhIHNlcXVlbmNlIG9m
IHRleHQgIjAxMjM0NTY3ODkiIHdpdGhvdXQgYmVpbmcgY2xpcHBlZC48L3A+Cis8dGV4dGFyZWEg
cm93cz0iMTAiIGNvbHM9IjEwIiBkaXI9InJ0bCIgc3R5bGU9Ii13ZWJraXQtb3ZlcmZsb3ctZGly
ZWN0aW9uOiBydGw7Ij4wMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTwvdGV4dGFyZWE+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2lu
dGVybmF0aW9uYWwvcnRsLW92ZXJmbG93LWRpdi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC1vdmVy
Zmxvdy1kaXYtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC1vdmVyZmxvdy1kaXYtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACitsYXllciBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDAp
IHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0CisgICAgICBSZW5k
ZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MzYKKyAgICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgwLDApIHNpemUgNzYyeDM2CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lk
dGggNzYyOiAiVGhpcyB0ZXN0cyB3ZSBjYW4gc2hvdyB0ZXh0IGluIGEgcG9zaXRpb25lZCBlbGVt
ZW50IHdoZW4gd2Ugc2hvdyB0aGUgdmVydGljYWwgc2Nyb2xsYmFyIHRvIHRoZSBsZWZ0IHNpZGUu
IFRvIHRlc3QgbWFudWFsbHksIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE4KSB3aWR0aCA3
MDk6ICJtb3ZlIHRoZSB2ZXJ0aWNhbCBzY3JvbGxiYXIgdG8gdGhlIGJvdHRvbSBhbmQgdGhlIGhv
cml6b250YWwgc2Nyb2xsYmFyIHRvIHRoZSByaWdodCBhbmQgc2VlIHdlIGNhbiBzZWUgdGhlIHRl
eHQgJ2ZvbycuIgorbGF5ZXIgYXQgKDgsNjApIHNpemUgMTA2eDEwNiBjbGlwIGF0ICgyNiw2Mykg
c2l6ZSA4NXg4NSBzY3JvbGxYIDE1MSBzY3JvbGxXaWR0aCAyMzYgc2Nyb2xsSGVpZ2h0IDI2OAor
ICBSZW5kZXJCbG9jayAocmVsYXRpdmUgcG9zaXRpb25lZCkge0RJVn0gYXQgKDAsNTIpIHNpemUg
MTA2eDEwNiBbYm9yZGVyOiAoM3B4IHNvbGlkICMwMDAwMDApXQpJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC1vdmVyZmxvdy10ZXh0YXJl
YS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zh
c3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC1vdmVyZmxvdy10ZXh0YXJlYS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2ludGVy
bmF0aW9uYWwvcnRsLW92ZXJmbG93LXRleHRhcmVhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwyOSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZp
ZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAg
UmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkg
e0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgw
LDApIHNpemUgNzg0eDM2CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDc0NngzNgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc0NjogIlRoaXMgdGVz
dHMgd2UgY2FuIHNlZSBSVEwgdGV4dCBpbiBhIG5vbi1wb3NpdGlvbmVkIGVsZW1lbnQgd2hlbiB3
ZSBtb3ZlIHRoZSB2ZXJ0aWNhbGwgc2Nyb2xsYmFyIHRvIGl0cyBsZWZ0IHNpZGUuIFRvIHRlc3Qi
CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTgpIHdpZHRoIDY0NTogIm1hbnVhbGx5LCBvcGVu
IHRoaXMgZmlsZSBhbmQgc2VlIHdlIGNhbiBzaG93IGEgc2VxdWVuY2Ugb2YgdGV4dCBcIjAxMjM0
NTY3ODlcIiB3aXRob3V0IGJlaW5nIGNsaXBwZWQuIgorICAgICAgUmVuZGVyQmxvY2sgKGFub255
bW91cykgYXQgKDAsNTIpIHNpemUgNzg0eDE0MAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDAsMCkgc2l6ZSAweDAKK2xheWVyIGF0ICgxMCw2Mikgc2l6ZSA5MXgxMzYgY2xpcCBhdCAo
MjYsNjMpIHNpemUgNzR4MTM0IHNjcm9sbEhlaWdodCAxODYKKyAgUmVuZGVyVGV4dENvbnRyb2wg
e1RFWFRBUkVBfSBhdCAoMiwyKSBzaXplIDkxeDEzNiBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVy
OiAoMXB4IHNvbGlkICMwMDAwMDApXQorICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgxOCwzKSBz
aXplIDcweDE4MgorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzB4MTgy
CisgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDcwOiAiMDEyMzQ1Njc4OSIKKyAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMTMpIHdpZHRoIDcwOiAiMDEyMzQ1Njc4OSIKKyAgICAgICAgdGV4
dCBydW4gYXQgKDAsMjYpIHdpZHRoIDcwOiAiMDEyMzQ1Njc4OSIKKyAgICAgICAgdGV4dCBydW4g
YXQgKDAsMzkpIHdpZHRoIDcwOiAiMDEyMzQ1Njc4OSIKKyAgICAgICAgdGV4dCBydW4gYXQgKDAs
NTIpIHdpZHRoIDcwOiAiMDEyMzQ1Njc4OSIKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsNjUpIHdp
ZHRoIDcwOiAiMDEyMzQ1Njc4OSIKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsNzgpIHdpZHRoIDcw
OiAiMDEyMzQ1Njc4OSIKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsOTEpIHdpZHRoIDcwOiAiMDEy
MzQ1Njc4OSIKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMTA0KSB3aWR0aCA3MDogIjAxMjM0NTY3
ODkiCisgICAgICAgIHRleHQgcnVuIGF0ICgwLDExNykgd2lkdGggNzA6ICIwMTIzNDU2Nzg5Igor
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxMzApIHdpZHRoIDcwOiAiMDEyMzQ1Njc4OSIKKyAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMTQzKSB3aWR0aCA3MDogIjAxMjM0NTY3ODkiCisgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDE1Nikgd2lkdGggNzA6ICIwMTIzNDU2Nzg5IgorICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwxNjkpIHdpZHRoIDcwOiAiMDEyMzQ1Njc4OSIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90162</attachid>
            <date>2011-04-19 00:55:27 -0700</date>
            <delta_ts>2011-09-14 23:01:12 -0700</delta_ts>
            <desc>A trial change v4</desc>
            <filename>issue54623-patch5.txt</filename>
            <type>text/plain</type>
            <size>39499</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0MjI2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMDQtMTkgIEhpcm9ub3Jp
IEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVuZGVyIG92ZXJmbG93IGNvbnRyb2xzIG9mIGFuIFJUTCBl
bGVtZW50IHRvIGl0cyBsZWZ0LXNpZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NDYyMworCisgICAgICAgIFRoaXMgY2hhbmdlIGFkZHMgYSBuZXcg
c2V0dGluZyAnb3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkJyBhbmQgcmVuZGVyIG92ZXJmbG93Cisg
ICAgICAgIGNvbnRyb2xzIChhIHNjcm9sbGJhciBhbmQgYSByZXNpemVyKSBvZiBhbiBSVEwgZWxl
bWVudCBpZiB0aGlzIG5ldyBzZXR0aW5nCisgICAgICAgIHZhbHVlIGlzIHRydWUuCisKKyAgICAg
ICAgVGVzdHM6IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC1vdmVyZmxvdy1kaXYuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLW92ZXJmbG93LXRleHRh
cmVhLmh0bWwKKworICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2V0dGluZ3M6OlNldHRpbmdzKTogSW5pdGlhbGl6ZWQgdGhlIG5ldyBzZXR0aW5nCisgICAg
ICAgICdvdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQnIHRvIGZhbHNlLgorICAgICAgICAqIHBhZ2Uv
U2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRPdmVyZmxvd01pcnJv
cmluZ0VuYWJsZWQpOiBBZGRlZCBhbiBhY2Nlc3NvcgorICAgICAgICBmb3IgdGhlIG5ldyBzZXR0
aW5nICdvdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQnLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGlu
Z3M6Om92ZXJmbG93TWlycm9yaW5nRW5hYmxlZCk6IGRpdHRvLgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWRkT3Zl
cmZsb3dGcm9tUG9zaXRpb25lZE9iamVjdHMpOiBNb3ZlIGNoaWxkIGVsZW1lbnRzIHJpZ2h0Lgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmRldGVybWluZUxvZ2ljYWxMZWZ0UG9zaXRp
b25Gb3JDaGlsZCk6IGRpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb250ZW50Qm94UmVjdCk6IE1vdmUgdGhlIGNv
bnRlbnQgcmVjdGFuZ2xlIHJpZ2h0LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpvdmVy
Zmxvd0NsaXBSZWN0KTogTW92ZSB0aGUgY2xpcHBpbmcgcmVjdGFuZ2xlIHJpZ2h0LgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29ybmVyUmVjdCk6IFJlbmRlciBhIHJlc2l6ZXIg
dG8gdGhlIGJvdHRvbS1sZWZ0IGNvcm5lci4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpzY3JvbGxiYXJPZmZzZXQpOiBSZW5kZXIgYSB2ZXJ0aWNhbCBzY3JvbGxiYXIgdG8gdGhlIGxl
ZnQgc2lkZQorICAgICAgICBhbmQgbW92ZSBhIGhvcml6b250YWwgc2Nyb2xsYmFyIHJpZ2h0IGJ5
IHRoZSB3aWR0aCBvZiB0aGUgdmVydGljYWwgc2Nyb2xsYmFyLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OmludmFsaWRhdGVTY3JvbGxiYXJSZWN0KTogZGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6cG9zaXRpb25PdmVyZmxvd0NvbnRyb2xzKTogZGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdE92ZXJmbG93Q29udHJvbHMpOiBk
aXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjppc1JpZ2h0VG9MZWZ0RGlyZWN0aW9uKTogQWRkZWQg
YSBzaG9ydGN1dCBtZXRob2QgZm9yCisgICAgICAgICdkaXJlY3Rpb24oKSA9PSBSVEwnLgorCiAy
MDExLTA0LTE5ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAd2Via2l0Lm9yZz4KIAogICAgICAgICBB
dHRlbXB0IHRvIGZpeCB0aGUgUXQgTGludXggUmVsZWFzZSBNaW5pbWFsIGJ1aWxkIGFmdGVyIGNo
YW5nZXNldCA4NDIyNQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHJldmlzaW9uIDg0
MjIxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE3NCw2ICsxNzQsNyBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAs
IG1fdXNlUXVpY2tMb29rUmVzb3VyY2VDYWNoaW5nUXVpcmtzKGZhbHNlKQogICAgICwgbV9mb3Jj
ZUNvbXBvc2l0aW5nTW9kZShmYWxzZSkKICAgICAsIG1fc2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJ
bkluaXRpYWxFbXB0eURvY3VtZW50KGZhbHNlKQorICAgICwgbV9vdmVyZmxvd01pcnJvcmluZ0Vu
YWJsZWQoZmFsc2UpCiB7CiAgICAgLy8gQSBGcmFtZSBtYXkgbm90IGhhdmUgYmVlbiBjcmVhdGVk
IHlldCwgc28gd2UgaW5pdGlhbGl6ZSB0aGUgQXRvbWljU3RyaW5nIAogICAgIC8vIGhhc2ggYmVm
b3JlIHRyeWluZyB0byB1c2UgaXQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCShyZXZpc2lv
biA4NDIyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkod29ya2luZyBjb3B5
KQpAQCAtMzk0LDYgKzM5NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBz
ZXRTaG91bGRJbmplY3RVc2VyU2NyaXB0c0luSW5pdGlhbEVtcHR5RG9jdW1lbnQoYm9vbCBmbGFn
KSB7IG1fc2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3VtZW50ID0gZmxh
ZzsgfQogICAgICAgICBib29sIHNob3VsZEluamVjdFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlE
b2N1bWVudCgpIHsgcmV0dXJuIG1fc2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0
eURvY3VtZW50OyB9CiAKKyAgICAgICAgdm9pZCBzZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQo
Ym9vbCBmbGFnKSB7IG1fb3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkID0gZmxhZzsgfQorICAgICAg
ICBib29sIG92ZXJmbG93TWlycm9yaW5nRW5hYmxlZCgpIHsgcmV0dXJuIG1fb3ZlcmZsb3dNaXJy
b3JpbmdFbmFibGVkOyB9CisKICAgICBwcml2YXRlOgogICAgICAgICBQYWdlKiBtX3BhZ2U7CiAK
QEAgLTQ5Nyw2ICs1MDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV91
c2VRdWlja0xvb2tSZXNvdXJjZUNhY2hpbmdRdWlya3MgOiAxOwogICAgICAgICBib29sIG1fZm9y
Y2VDb21wb3NpdGluZ01vZGUgOiAxOwogICAgICAgICBib29sIG1fc2hvdWxkSW5qZWN0VXNlclNj
cmlwdHNJbkluaXRpYWxFbXB0eURvY3VtZW50IDogMTsKKyAgICAgICAgYm9vbCBtX292ZXJmbG93
TWlycm9yaW5nRW5hYmxlZCA6IDE7CiAKICNpZiBVU0UoU0FGQVJJX1RIRU1FKQogICAgICAgICBz
dGF0aWMgYm9vbCBnU2hvdWxkUGFpbnROYXRpdmVDb250cm9sczsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gODQyMjEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDA3
LDggKzE0MDcsMTIgQEAgdm9pZCBSZW5kZXJCbG9jazo6YWRkT3ZlcmZsb3dGcm9tUG9zaXRpbwog
ICAgICAgICBwb3NpdGlvbmVkT2JqZWN0ID0gKml0OwogICAgICAgICAKICAgICAgICAgLy8gRml4
ZWQgcG9zaXRpb25lZCBlbGVtZW50cyBkb24ndCBjb250cmlidXRlIHRvIGxheW91dCBvdmVyZmxv
dywgc2luY2UgdGhleSBkb24ndCBzY3JvbGwgd2l0aCB0aGUgY29udGVudC4KLSAgICAgICAgaWYg
KHBvc2l0aW9uZWRPYmplY3QtPnN0eWxlKCktPnBvc2l0aW9uKCkgIT0gRml4ZWRQb3NpdGlvbikK
LSAgICAgICAgICAgIGFkZE92ZXJmbG93RnJvbUNoaWxkKHBvc2l0aW9uZWRPYmplY3QpOworICAg
ICAgICBpZiAocG9zaXRpb25lZE9iamVjdC0+c3R5bGUoKS0+cG9zaXRpb24oKSAhPSBGaXhlZFBv
c2l0aW9uKSB7CisgICAgICAgICAgICBpbnQgeCA9IHBvc2l0aW9uZWRPYmplY3QtPngoKTsKKyAg
ICAgICAgICAgIGlmIChkb2N1bWVudCgpLT5zZXR0aW5ncygpLT5vdmVyZmxvd01pcnJvcmluZ0Vu
YWJsZWQoKSAmJiBzdHlsZSgpLT5pc1JpZ2h0VG9MZWZ0RGlyZWN0aW9uKCkpCisgICAgICAgICAg
ICAgICAgeCAtPSB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKCk7CisgICAgICAgICAgICBhZGRPdmVy
Zmxvd0Zyb21DaGlsZChwb3NpdGlvbmVkT2JqZWN0LCBJbnRTaXplKHgsIHBvc2l0aW9uZWRPYmpl
Y3QtPnkoKSkpOworICAgICAgICB9CiAgICAgfQogfQogCkBAIC0xNzQ2LDYgKzE3NTAsOCBAQCBp
bnQgUmVuZGVyQmxvY2s6OmVzdGltYXRlTG9naWNhbFRvcFBvc2l0CiB2b2lkIFJlbmRlckJsb2Nr
OjpkZXRlcm1pbmVMb2dpY2FsTGVmdFBvc2l0aW9uRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkK
IHsKICAgICBpbnQgc3RhcnRQb3NpdGlvbiA9IGJvcmRlclN0YXJ0KCkgKyBwYWRkaW5nU3RhcnQo
KTsKKyAgICBpZiAoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKS0+b3ZlcmZsb3dNaXJyb3JpbmdFbmFi
bGVkKCkgJiYgc3R5bGUoKS0+aXNSaWdodFRvTGVmdERpcmVjdGlvbigpKQorICAgICAgICBzdGFy
dFBvc2l0aW9uIC09IHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoKTsKICAgICBpbnQgdG90YWxBdmFp
bGFibGVMb2dpY2FsV2lkdGggPSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCkgKyBhdmFp
bGFibGVMb2dpY2FsV2lkdGgoKTsKIAogICAgIC8vIEFkZCBpbiBvdXIgc3RhcnQgbWFyZ2luLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDg0MjIx
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUg
IlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgorI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtU3RhdGUuaCIKICNpbmNsdWRlIDxhbGdvcml0
aG0+CiAjaW5jbHVkZSA8bWF0aC5oPgpAQCAtNDc2LDYgKzQ3NywxNCBAQCB2b2lkIFJlbmRlckJv
eDo6dXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKQogICAgICAgICBsYXllcigpLT51cGRhdGVUcmFuc2Zv
cm0oKTsKIH0KIAorSW50UmVjdCBSZW5kZXJCb3g6OmNvbnRlbnRCb3hSZWN0KCkgY29uc3QKK3sK
KyAgICBpbnQgeCA9IGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0KCk7CisgICAgaWYgKGRvY3Vt
ZW50KCktPnNldHRpbmdzKCktPm92ZXJmbG93TWlycm9yaW5nRW5hYmxlZCgpICYmIHN0eWxlKCkt
PmlzUmlnaHRUb0xlZnREaXJlY3Rpb24oKSkKKyAgICAgICAgeCArPSB2ZXJ0aWNhbFNjcm9sbGJh
cldpZHRoKCk7CisgICAgcmV0dXJuIEludFJlY3QoeCwgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9w
KCksIGNvbnRlbnRXaWR0aCgpLCBjb250ZW50SGVpZ2h0KCkpOworfQorCiBJbnRSZWN0IFJlbmRl
ckJveDo6YWJzb2x1dGVDb250ZW50Qm94KCkgY29uc3QKIHsKICAgICBJbnRSZWN0IHJlY3QgPSBj
b250ZW50Qm94UmVjdCgpOwpAQCAtMTExNyw2ICsxMTI2LDggQEAgSW50UmVjdCBSZW5kZXJCb3g6
Om92ZXJmbG93Q2xpcFJlY3QoaW50IAogCiAgICAgLy8gU3VidHJhY3Qgb3V0IHNjcm9sbGJhcnMg
aWYgd2UgaGF2ZSB0aGVtLgogICAgIGlmIChsYXllcigpKSB7CisgICAgICAgIGlmIChkb2N1bWVu
dCgpLT5zZXR0aW5ncygpLT5vdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQoKSAmJiBzdHlsZSgpLT5p
c1JpZ2h0VG9MZWZ0RGlyZWN0aW9uKCkpCisgICAgICAgICAgICBjbGlwWCArPSBsYXllcigpLT52
ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKHJlbGV2YW5jeSk7CiAgICAgICAgIGNsaXBXaWR0aCAtPSBs
YXllcigpLT52ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKHJlbGV2YW5jeSk7CiAgICAgICAgIGNsaXBI
ZWlnaHQgLT0gbGF5ZXIoKS0+aG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodChyZWxldmFuY3kpOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHJldmlzaW9uIDg0
MjIxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTQsNyArMTE0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSW50UmVjdCBib3Jk
ZXJCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlckJveFJlY3QoKTsgfSAKIAogICAg
IC8vIFRoZSBjb250ZW50IGFyZWEgb2YgdGhlIGJveCAoZXhjbHVkZXMgcGFkZGluZyBhbmQgYm9y
ZGVyKS4KLSAgICBJbnRSZWN0IGNvbnRlbnRCb3hSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVj
dChib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3Ao
KSwgY29udGVudFdpZHRoKCksIGNvbnRlbnRIZWlnaHQoKSk7IH0KKyAgICBJbnRSZWN0IGNvbnRl
bnRCb3hSZWN0KCkgY29uc3Q7CisKICAgICAvLyBUaGUgY29udGVudCBib3ggaW4gYWJzb2x1dGUg
Y29vcmRzLiBJZ25vcmVzIHRyYW5zZm9ybXMuCiAgICAgSW50UmVjdCBhYnNvbHV0ZUNvbnRlbnRC
b3goKSBjb25zdDsKICAgICAvLyBUaGUgY29udGVudCBib3ggY29udmVydGVkIHRvIGFic29sdXRl
IGNvb3JkcyAodGFraW5nIHRyYW5zZm9ybXMgaW50byBhY2NvdW50KS4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gODQyMjEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
MSw2ICs4MSw3IEBACiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFy
VGhlbWUuaCIKICNpbmNsdWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtU3Rh
dGUuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgpAQCAtMTY5NSw4ICsxNjk2
LDkgQEAgc3RhdGljIEludFJlY3QgY29ybmVyUmVjdChjb25zdCBSZW5kZXJMYQogICAgICAgICBo
b3Jpem9udGFsVGhpY2tuZXNzID0gbGF5ZXItPnZlcnRpY2FsU2Nyb2xsYmFyKCktPndpZHRoKCk7
CiAgICAgICAgIHZlcnRpY2FsVGhpY2tuZXNzID0gbGF5ZXItPmhvcml6b250YWxTY3JvbGxiYXIo
KS0+aGVpZ2h0KCk7CiAgICAgfQotICAgIHJldHVybiBJbnRSZWN0KGJvdW5kcy5tYXhYKCkgLSBo
b3Jpem9udGFsVGhpY2tuZXNzIC0gbGF5ZXItPnJlbmRlcmVyKCktPnN0eWxlKCktPmJvcmRlclJp
Z2h0V2lkdGgoKSwgCi0gICAgICAgICAgICAgICAgICAgYm91bmRzLm1heFkoKSAtIHZlcnRpY2Fs
VGhpY2tuZXNzIC0gbGF5ZXItPnJlbmRlcmVyKCktPnN0eWxlKCktPmJvcmRlckJvdHRvbVdpZHRo
KCksCisgICAgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlID0gbGF5ZXItPnJlbmRlcmVyKCktPnN0
eWxlKCk7CisgICAgaW50IHggPSBsYXllci0+cmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+c2V0dGlu
Z3MoKS0+b3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkKCkgJiYgc3R5bGUtPmlzUmlnaHRUb0xlZnRE
aXJlY3Rpb24oKSA/IGJvdW5kcy54KCkgKyBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgOiBib3Vu
ZHMubWF4WCgpIC0gaG9yaXpvbnRhbFRoaWNrbmVzcyAtIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRo
KCk7CisgICAgcmV0dXJuIEludFJlY3QoeCwgYm91bmRzLm1heFkoKSAtIHZlcnRpY2FsVGhpY2tu
ZXNzIC0gc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgaG9y
aXpvbnRhbFRoaWNrbmVzcywgdmVydGljYWxUaGlja25lc3MpOwogfQogCkBAIC0xODE3LDExICsx
ODE5LDE3IEBAIEludFNpemUgUmVuZGVyTGF5ZXI6OnNjcm9sbGJhck9mZnNldChjb24KIHsKICAg
ICBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgpOwogCi0gICAgaWYgKHNjcm9sbGJhciA9PSBt
X3ZCYXIuZ2V0KCkpCi0gICAgICAgIHJldHVybiBJbnRTaXplKGJveC0+d2lkdGgoKSAtIGJveC0+
Ym9yZGVyUmlnaHQoKSAtIHNjcm9sbGJhci0+d2lkdGgoKSwgYm94LT5ib3JkZXJUb3AoKSk7Cisg
ICAgaWYgKHNjcm9sbGJhciA9PSBtX3ZCYXIuZ2V0KCkpIHsKKyAgICAgICAgaW50IHggPSByZW5k
ZXJlcigpLT5kb2N1bWVudCgpLT5zZXR0aW5ncygpLT5vdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQo
KSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5pc1JpZ2h0VG9MZWZ0RGlyZWN0aW9uKCkgPyBib3gt
PmJvcmRlckxlZnQoKSA6IGJveC0+d2lkdGgoKSAtIGJveC0+Ym9yZGVyUmlnaHQoKSAtIHNjcm9s
bGJhci0+d2lkdGgoKTsKKyAgICAgICAgcmV0dXJuIEludFNpemUoeCwgYm94LT5ib3JkZXJUb3Ao
KSk7CisgICAgfQogCi0gICAgaWYgKHNjcm9sbGJhciA9PSBtX2hCYXIuZ2V0KCkpCi0gICAgICAg
IHJldHVybiBJbnRTaXplKGJveC0+Ym9yZGVyTGVmdCgpLCBib3gtPmhlaWdodCgpIC0gYm94LT5i
b3JkZXJCb3R0b20oKSAtIHNjcm9sbGJhci0+aGVpZ2h0KCkpOworICAgIGlmIChzY3JvbGxiYXIg
PT0gbV9oQmFyLmdldCgpKSB7CisgICAgICAgIGludCB4ID0gYm94LT5ib3JkZXJMZWZ0KCk7Cisg
ICAgICAgIGlmIChyZW5kZXJlcigpLT5kb2N1bWVudCgpLT5zZXR0aW5ncygpLT5vdmVyZmxvd01p
cnJvcmluZ0VuYWJsZWQoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5pc1JpZ2h0VG9MZWZ0RGly
ZWN0aW9uKCkpCisgICAgICAgICAgICB4ICs9IG1fdkJhciA/IG1fdkJhci0+d2lkdGgoKSA6IHJl
c2l6ZXJDb3JuZXJSZWN0KHRoaXMsIGJveC0+Ym9yZGVyQm94UmVjdCgpKS53aWR0aCgpOworICAg
ICAgICByZXR1cm4gSW50U2l6ZSh4LCBib3gtPmhlaWdodCgpIC0gYm94LT5ib3JkZXJCb3R0b20o
KSAtIHNjcm9sbGJhci0+aGVpZ2h0KCkpOworICAgIH0KICAgICAKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICByZXR1cm4gSW50U2l6ZSgpOwpAQCAtMTg0NSwxMCArMTg1MywxNSBAQCB2
b2lkIFJlbmRlckxheWVyOjppbnZhbGlkYXRlU2Nyb2xsYmFyUmVjCiAgICAgSW50UmVjdCBzY3Jv
bGxSZWN0ID0gcmVjdDsKICAgICBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgpOwogICAgIEFT
U0VSVChib3gpOwotICAgIGlmIChzY3JvbGxiYXIgPT0gbV92QmFyLmdldCgpKQotICAgICAgICBz
Y3JvbGxSZWN0Lm1vdmUoYm94LT53aWR0aCgpIC0gYm94LT5ib3JkZXJSaWdodCgpIC0gc2Nyb2xs
YmFyLT53aWR0aCgpLCBib3gtPmJvcmRlclRvcCgpKTsKLSAgICBlbHNlCi0gICAgICAgIHNjcm9s
bFJlY3QubW92ZShib3gtPmJvcmRlckxlZnQoKSwgYm94LT5oZWlnaHQoKSAtIGJveC0+Ym9yZGVy
Qm90dG9tKCkgLSBzY3JvbGxiYXItPmhlaWdodCgpKTsKKyAgICBpZiAoc2Nyb2xsYmFyID09IG1f
dkJhci5nZXQoKSkgeworICAgICAgICBpbnQgeCA9IHJlbmRlcmVyKCktPmRvY3VtZW50KCktPnNl
dHRpbmdzKCktPm92ZXJmbG93TWlycm9yaW5nRW5hYmxlZCgpICYmIHJlbmRlcmVyKCktPnN0eWxl
KCktPmlzUmlnaHRUb0xlZnREaXJlY3Rpb24oKSA/IGJveC0+Ym9yZGVyTGVmdCgpIDogYm94LT53
aWR0aCgpIC0gYm94LT5ib3JkZXJSaWdodCgpIC0gc2Nyb2xsYmFyLT53aWR0aCgpOworICAgICAg
ICBzY3JvbGxSZWN0Lm1vdmUoeCwgYm94LT5ib3JkZXJUb3AoKSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgaW50IHggPSBib3gtPmJvcmRlckxlZnQoKTsKKyAgICAgICAgaWYgKHJlbmRlcmVyKCkt
PmRvY3VtZW50KCktPnNldHRpbmdzKCktPm92ZXJmbG93TWlycm9yaW5nRW5hYmxlZCgpICYmIHJl
bmRlcmVyKCktPnN0eWxlKCktPmlzUmlnaHRUb0xlZnREaXJlY3Rpb24oKSkKKyAgICAgICAgICAg
IHggKz0gbV92QmFyID8gbV92QmFyLT53aWR0aCgpIDogcmVzaXplckNvcm5lclJlY3QodGhpcywg
Ym94LT5ib3JkZXJCb3hSZWN0KCkpLndpZHRoKCk7CisgICAgICAgIHNjcm9sbFJlY3QubW92ZSh4
LCBib3gtPmhlaWdodCgpIC0gYm94LT5ib3JkZXJCb3R0b20oKSAtIHNjcm9sbGJhci0+aGVpZ2h0
KCkpOworICAgIH0KICAgICByZW5kZXJlcigpLT5yZXBhaW50UmVjdGFuZ2xlKHNjcm9sbFJlY3Qp
OwogfQogCkBAIC0xOTg4LDE4ICsyMDAxLDI0IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBvc2l0aW9u
T3ZlcmZsb3dDb250cm8KICAgICBjb25zdCBJbnRSZWN0JiBib3JkZXJCb3ggPSBib3gtPmJvcmRl
ckJveFJlY3QoKTsKICAgICBjb25zdCBJbnRSZWN0JiBzY3JvbGxDb3JuZXIgPSBzY3JvbGxDb3Ju
ZXJSZWN0KCk7CiAgICAgSW50UmVjdCBhYnNCb3VuZHMoYm9yZGVyQm94LngoKSArIHR4LCBib3Jk
ZXJCb3gueSgpICsgdHksIGJvcmRlckJveC53aWR0aCgpLCBib3JkZXJCb3guaGVpZ2h0KCkpOwot
ICAgIGlmIChtX3ZCYXIpCi0gICAgICAgIG1fdkJhci0+c2V0RnJhbWVSZWN0KEludFJlY3QoYWJz
Qm91bmRzLm1heFgoKSAtIGJveC0+Ym9yZGVyUmlnaHQoKSAtIG1fdkJhci0+d2lkdGgoKSwKKyAg
ICBpZiAobV92QmFyKSB7CisgICAgICAgIGludCB4ID0gcmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+
c2V0dGluZ3MoKS0+b3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkKCkgJiYgcmVuZGVyZXIoKS0+c3R5
bGUoKS0+aXNSaWdodFRvTGVmdERpcmVjdGlvbigpID8gYWJzQm91bmRzLngoKSArIGJveC0+Ym9y
ZGVyTGVmdCgpIDogYWJzQm91bmRzLm1heFgoKSAtIGJveC0+Ym9yZGVyUmlnaHQoKSAtIG1fdkJh
ci0+d2lkdGgoKTsKKyAgICAgICAgbV92QmFyLT5zZXRGcmFtZVJlY3QoSW50UmVjdCh4LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic0JvdW5kcy55KCkgKyBib3gtPmJv
cmRlclRvcCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdkJhci0+
d2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNCb3VuZHMu
aGVpZ2h0KCkgLSAoYm94LT5ib3JkZXJUb3AoKSArIGJveC0+Ym9yZGVyQm90dG9tKCkpIC0gc2Ny
b2xsQ29ybmVyLmhlaWdodCgpKSk7CisgICAgfQogCi0gICAgaWYgKG1faEJhcikKLSAgICAgICAg
bV9oQmFyLT5zZXRGcmFtZVJlY3QoSW50UmVjdChhYnNCb3VuZHMueCgpICsgYm94LT5ib3JkZXJM
ZWZ0KCksCisgICAgaWYgKG1faEJhcikgeworICAgICAgICBpbnQgeCA9IGFic0JvdW5kcy54KCkg
KyBib3gtPmJvcmRlckxlZnQoKTsKKyAgICAgICAgaWYgKHJlbmRlcmVyKCktPmRvY3VtZW50KCkt
PnNldHRpbmdzKCktPm92ZXJmbG93TWlycm9yaW5nRW5hYmxlZCgpICYmIHJlbmRlcmVyKCktPnN0
eWxlKCktPmlzUmlnaHRUb0xlZnREaXJlY3Rpb24oKSkKKyAgICAgICAgICAgIHggKz0gc2Nyb2xs
Q29ybmVyLndpZHRoKCk7CisgICAgICAgIG1faEJhci0+c2V0RnJhbWVSZWN0KEludFJlY3QoeCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNCb3VuZHMubWF4WSgpIC0g
Ym94LT5ib3JkZXJCb3R0b20oKSAtIG1faEJhci0+aGVpZ2h0KCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWJzQm91bmRzLndpZHRoKCkgLSAoYm94LT5ib3JkZXJMZWZ0
KCkgKyBib3gtPmJvcmRlclJpZ2h0KCkpIC0gc2Nyb2xsQ29ybmVyLndpZHRoKCksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9oQmFyLT5oZWlnaHQoKSkpOwotCisgICAg
fQorICAgIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBpZiAoR3JhcGhp
Y3NMYXllciogbGF5ZXIgPSBsYXllckZvckhvcml6b250YWxTY3JvbGxiYXIoKSkgewogICAgICAg
ICBpZiAobV9oQmFyKSB7CkBAIC0yMzg5LDcgKzI0MDgsOCBAQCBib29sIFJlbmRlckxheWVyOjpo
aXRUZXN0T3ZlcmZsb3dDb250cm9sCiAgICAgaW50IHJlc2l6ZUNvbnRyb2xTaXplID0gbWF4KHJl
c2l6ZUNvbnRyb2xSZWN0LmhlaWdodCgpLCAwKTsKIAogICAgIGlmIChtX3ZCYXIpIHsKLSAgICAg
ICAgSW50UmVjdCB2QmFyUmVjdChib3gtPndpZHRoKCkgLSBib3gtPmJvcmRlclJpZ2h0KCkgLSBt
X3ZCYXItPndpZHRoKCksIAorICAgICAgICBpbnQgeCA9IHJlbmRlcmVyKCktPmRvY3VtZW50KCkt
PnNldHRpbmdzKCktPm92ZXJmbG93TWlycm9yaW5nRW5hYmxlZCgpICYmIHJlbmRlcmVyKCktPnN0
eWxlKCktPmlzUmlnaHRUb0xlZnREaXJlY3Rpb24oKSA/IGJveC0+Ym9yZGVyTGVmdCgpIDogYm94
LT53aWR0aCgpIC0gYm94LT5ib3JkZXJSaWdodCgpIC0gbV92QmFyLT53aWR0aCgpOworICAgICAg
ICBJbnRSZWN0IHZCYXJSZWN0KHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYm94LT5ib3Jk
ZXJUb3AoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBtX3ZCYXItPndpZHRoKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm94LT5oZWlnaHQoKSAtIChib3gtPmJvcmRlclRvcCgpICsg
Ym94LT5ib3JkZXJCb3R0b20oKSkgLSAobV9oQmFyID8gbV9oQmFyLT5oZWlnaHQoKSA6IHJlc2l6
ZUNvbnRyb2xTaXplKSk7CkBAIC0yNDAxLDcgKzI0MjEsMTAgQEAgYm9vbCBSZW5kZXJMYXllcjo6
aGl0VGVzdE92ZXJmbG93Q29udHJvbAogCiAgICAgcmVzaXplQ29udHJvbFNpemUgPSBtYXgocmVz
aXplQ29udHJvbFJlY3Qud2lkdGgoKSwgMCk7CiAgICAgaWYgKG1faEJhcikgewotICAgICAgICBJ
bnRSZWN0IGhCYXJSZWN0KGJveC0+Ym9yZGVyTGVmdCgpLAorICAgICAgICBpbnQgeCA9IGJveC0+
Ym9yZGVyTGVmdCgpOworICAgICAgICBpZiAocmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+c2V0dGlu
Z3MoKS0+b3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+
aXNSaWdodFRvTGVmdERpcmVjdGlvbigpKQorICAgICAgICAgICAgeCArPSBtX3ZCYXIgPyBtX3ZC
YXItPndpZHRoKCkgOiByZXNpemVDb250cm9sU2l6ZTsKKyAgICAgICAgSW50UmVjdCBoQmFyUmVj
dCh4LAogICAgICAgICAgICAgICAgICAgICAgICAgIGJveC0+aGVpZ2h0KCkgLSBib3gtPmJvcmRl
ckJvdHRvbSgpIC0gbV9oQmFyLT5oZWlnaHQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBi
b3gtPndpZHRoKCkgLSAoYm94LT5ib3JkZXJMZWZ0KCkgKyBib3gtPmJvcmRlclJpZ2h0KCkpIC0g
KG1fdkJhciA/IG1fdkJhci0+d2lkdGgoKSA6IHJlc2l6ZUNvbnRyb2xTaXplKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2hCYXItPmhlaWdodCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lvbiA4NDIyMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OTIsNiArNDkyLDcgQEAgcHVibGljOgogCiAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rp
b24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGlyZWN0aW9uPihpbmhlcml0ZWRf
ZmxhZ3MuX2RpcmVjdGlvbik7IH0KICAgICBib29sIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBj
b25zdCB7IHJldHVybiBkaXJlY3Rpb24oKSA9PSBMVFI7IH0KKyAgICBib29sIGlzUmlnaHRUb0xl
ZnREaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBkaXJlY3Rpb24oKSA9PSBSVEw7IH0KIAogICAg
IExlbmd0aCBsaW5lSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5saW5lX2hlaWdo
dDsgfQogICAgIGludCBjb21wdXRlZExpbmVIZWlnaHQoKSBjb25zdApJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0MjI2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0wNC0xOSAg
SGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQoKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NjIzCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWRkcyBh
IG1ldGhvZCBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQo
KQorICAgICAgICB0aGF0IGNoYW5nZXMgdGhlIG5ldyBzZXR0aW5nIHZhbHVlICdvdmVyZmxvd01p
cnJvcmluZ0VuYWJsZWQnIHNvIHdlIGNhbiB3cml0ZQorICAgICAgICBsYXlvdXQgdGVzdHMgdGhh
dCBkZXBlbmQgb24gaXQuIFVuZm9ydHVuYXRlbHksIHRoaXMgbWV0aG9kIGlzIGltcGxlbWVudGVk
CisgICAgICAgIG9ubHkgb24gTWFjIGFuZCBDaHJvbWl1bS4KKworICAgICAgICAqIHB1YmxpYy9X
ZWJTZXR0aW5ncy5oOgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OnNldE92ZXJmbG93TWlycm9yaW5nRW5hYmxlZCk6
CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5oOgorCiAyMDExLTA0LTE4ICBFdmFuIE1h
cnRpbiAgPGV2YW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2Vp
ZGVsLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5o
CShyZXZpc2lvbiA4NDIyMSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNl
dHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNCw2ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldE1lbW9yeUluZm9FbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQoYm9vbCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNldEludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVkKGJvb2wpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsaWRhdGlvbk1lc3NhZ2VUaW1lck1hZ25pZmljYXRpb24o
aW50KSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0lt
cGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRp
bmdzSW1wbC5jcHAJKHJldmlzaW9uIDg0MjIxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2V0dGluZ3NJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY4LDYgKzM2OCwxMSBA
QCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0QXN5bmNocm9ub3VzU3BlCiAgICAgbV9zZXR0aW5n
cy0+c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKK3Zv
aWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQoYm9vbCBlbmFi
bGVkKQoreworICAgIG1fc2V0dGluZ3MtPnNldE92ZXJmbG93TWlycm9yaW5nRW5hYmxlZChlbmFi
bGVkKTsKK30KKwogdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldENhcmV0QnJvd3NpbmdFbmFibGVk
KGJvb2wgZW5hYmxlZCkKIHsKICAgICBtX3NldHRpbmdzLT5zZXRDYXJldEJyb3dzaW5nRW5hYmxl
ZChlbmFibGVkKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdz
SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRp
bmdzSW1wbC5oCShyZXZpc2lvbiA4NDIyMSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNldHRpbmdzSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNiArMTA3LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRNZW1vcnlJbmZvRW5hYmxlZChib29sKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0T3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2
b2lkIHNldFZhbGlkYXRpb25NZXNzYWdlVGltZXJNYWduaWZpY2F0aW9uKGludCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NDIyNikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDExLTA0LTE5ICBIaXJvbm9y
aSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGxheW91dFRlc3RDb250cm9sbGVyLnNldE92ZXJm
bG93TWlycm9yaW5nRW5hYmxlZCgpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTQ2MjMKKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEgbWV0aG9k
IGxheW91dFRlc3RDb250cm9sbGVyLnNldE92ZXJmbG93TWlycm9yaW5nRW5hYmxlZCgpCisgICAg
ICAgIHRoYXQgY2hhbmdlcyB0aGUgbmV3IHNldHRpbmcgdmFsdWUgJ292ZXJmbG93TWlycm9yaW5n
RW5hYmxlZCcgc28gd2UgY2FuIHdyaXRlCisgICAgICAgIGxheW91dCB0ZXN0cyB0aGF0IGRlcGVu
ZCBvbiBpdC4gVW5mb3J0dW5hdGVseSwgdGhpcyBtZXRob2QgaXMgaW1wbGVtZW50ZWQKKyAgICAg
ICAgb25seSBvbiBNYWMgYW5kIENocm9taXVtLgorCisgICAgICAgICogV2ViVmlldy9XZWJQcmVm
ZXJlbmNlS2V5c1ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1t
OgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBpbml0aWFsaXplXSk6CisgICAgICAgICgtW1dl
YlByZWZlcmVuY2VzIHNldE92ZXJmbG93TWlycm9yaW5nRW5hYmxlZDpdKToKKyAgICAgICAgKC1b
V2ViUHJlZmVyZW5jZXMgb3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkXSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcu
bW06CisgICAgICAgICgtW1dlYlZpZXcgX3ByZWZlcmVuY2VzQ2hhbmdlZDpdKToKKwogMjAxMS0w
NC0xOCAgSmlhIFB1ICA8anB1QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJr
IFJvd2UuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlz
UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJl
ZmVyZW5jZUtleXNQcml2YXRlLmgJKHJldmlzaW9uIDg0MjIxKQorKysgU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA3LDYgKzEwNyw3IEBACiAjZGVmaW5lIFdlYktpdE1lbW9yeUluZm9FbmFibGVkUHJlZmVyZW5j
ZUtleSBAIldlYktpdE1lbW9yeUluZm9FbmFibGVkIgogI2RlZmluZSBXZWJLaXRIeXBlcmxpbmtB
dWRpdGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0SHlwZXJsaW5rQXVkaXRpbmdFbmFi
bGVkIgogI2RlZmluZSBXZWJLaXRVc2VRdWlja0xvb2tSZXNvdXJjZUNhY2hpbmdRdWlya3NQcmVm
ZXJlbmNlS2V5IEAiV2ViS2l0VXNlUXVpY2tMb29rUmVzb3VyY2VDYWNoaW5nUXVpcmtzIgorI2Rl
ZmluZSBXZWJLaXRPdmVyZmxvd01pcnJvcmluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0
T3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkIgogCiAvLyBUaGVzZSBhcmUgcHJpdmF0ZSBib3RoIGJl
Y2F1c2UgY2FsbGVycyBzaG91bGQgYmUgdXNpbmcgdGhlIGNvdmVyIG1ldGhvZHMgYW5kIGJlY2F1
c2UgdGhlCiAvLyBjb3ZlciBtZXRob2RzIHRoZW1zZWx2ZXMgYXJlIHByaXZhdGUuCkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0JKHJldmlzaW9uIDg0
MjIxKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzg4LDYgKzM4OCw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgICAg
ICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgV2ViS2l0RE5TUHJlZmV0Y2hpbmdFbmFi
bGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10s
ICBXZWJLaXRGdWxsU2NyZWVuRW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJl
ciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0Vu
YWJsZWRQcmVmZXJlbmNlS2V5LAorICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9d
LCAgIFdlYktpdE92ZXJmbG93TWlycm9yaW5nRW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAg
IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0TWVtb3J5SW5mb0VuYWJsZWRQ
cmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdl
YktpdEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051
bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0VXNlUHJlSFRNTDVQYXJzZXJRdWlya3NL
ZXksCkBAIC0xNDY5LDYgKzE0NzAsMTYgQEAgLSAoQk9PTClhc3luY2hyb25vdXNTcGVsbENoZWNr
aW5nRW5hYmxlZAogICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktpdEFzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkUHJlZmVyZW5jZUtleV07CiB9CiAKKy0gKHZvaWQp
c2V0T3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkOihCT09MKWZsYWcKK3sKKyAgICBbc2VsZiBfc2V0
Qm9vbFZhbHVlOmZsYWcgZm9yS2V5OldlYktpdE92ZXJmbG93TWlycm9yaW5nRW5hYmxlZFByZWZl
cmVuY2VLZXldOworfQorCistIChCT09MKW92ZXJmbG93TWlycm9yaW5nRW5hYmxlZAoreworICAg
IHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktpdE92ZXJmbG93TWlycm9yaW5nRW5h
YmxlZFByZWZlcmVuY2VLZXldOworfQorCiArICh2b2lkKXNldFdlYktpdExpbmtUaW1lVmVyc2lv
bjooaW50KXZlcnNpb24KIHsKICAgICBzZXRXZWJLaXRMaW5rVGltZVZlcnNpb24odmVyc2lvbik7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQ
cml2YXRlLmgJKHJldmlzaW9uIDg0MjIxKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjM1LDYgKzIzNSw5IEBA
IEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGUpCiAtICh2b2lkKXNldEFzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOihCT09MKWZsYWc7CiAtIChCT09MKWFzeW5jaHJv
bm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOwogCistICh2b2lkKXNldE92ZXJmbG93TWlycm9yaW5n
RW5hYmxlZDooQk9PTClmbGFnOworLSAoQk9PTClvdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQ7CisK
IC0gKHZvaWQpc2V0VXNlUHJlSFRNTDVQYXJzZXJRdWlya3M6KEJPT0wpZmxhZzsKIC0gKEJPT0wp
dXNlUHJlSFRNTDVQYXJzZXJRdWlya3M7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0JKHJldmlzaW9uIDg0MjIxKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTU3LDYgKzE1NTcsNyBAQCAtICh2b2lkKV9w
cmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZlcmVuCiAgICAgc2V0dGluZ3MtPnNldENyb3NzT3Jp
Z2luQ2hlY2tJbkdldE1hdGNoZWRDU1NSdWxlc0Rpc2FibGVkKFtzZWxmIF9uZWVkc1VucmVzdHJp
Y3RlZEdldE1hdGNoZWRDU1NSdWxlc10pOwogICAgIHNldHRpbmdzLT5zZXRJbnRlcmFjdGl2ZUZv
cm1WYWxpZGF0aW9uRW5hYmxlZChbc2VsZiBpbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5hYmxl
ZF0pOwogICAgIHNldHRpbmdzLT5zZXRWYWxpZGF0aW9uTWVzc2FnZVRpbWVyTWFnbmlmaWNhdGlv
bihbc2VsZiB2YWxpZGF0aW9uTWVzc2FnZVRpbWVyTWFnbmlmaWNhdGlvbl0pOworICAgIHNldHRp
bmdzLT5zZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQoW3ByZWZlcmVuY2VzIG92ZXJmbG93TWly
cm9yaW5nRW5hYmxlZF0pOwogCiAgICAgLy8gQXBwbGljYXRpb24gQ2FjaGUgUHJlZmVyZW5jZXMg
YXJlIHN0b3JlZCBvbiB0aGUgZ2xvYmFsIGNhY2hlIHN0b3JhZ2UgbWFuYWdlciwgbm90IGluIFNl
dHRpbmdzLgogICAgIFtXZWJBcHBsaWNhdGlvbkNhY2hlIHNldERlZmF1bHRPcmlnaW5RdW90YTpb
cHJlZmVyZW5jZXMgYXBwbGljYXRpb25DYWNoZURlZmF1bHRPcmlnaW5RdW90YV1dOwpJbmRleDog
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24g
ODQyMjYpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNiBA
QAorMjAxMS0wNC0xOSAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQoKS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NjIzCisKKyAgICAgICAgVGhp
cyBjaGFuZ2UgYWRkcyBhIG1ldGhvZCBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRPdmVyZmxvd01p
cnJvcmluZ0VuYWJsZWQoKQorICAgICAgICB0aGF0IGNoYW5nZXMgdGhlIG5ldyBzZXR0aW5nIHZh
bHVlICdvdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQnIHNvIHdlIGNhbiB3cml0ZQorICAgICAgICBs
YXlvdXQgdGVzdHMgdGhhdCBkZXBlbmQgb24gaXQuIFVuZm9ydHVuYXRlbHksIHRoaXMgbWV0aG9k
IGlzIGltcGxlbWVudGVkCisgICAgICAgIG9ubHkgb24gTWFjIGFuZCBDaHJvbWl1bS4KKworICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KHNldE92ZXJmbG93TWlycm9yaW5nRW5hYmxlZENhbGxiYWNrKToKKyAgICAgICAgKExheW91dFRl
c3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV2ViUHJlZmVyZW5jZXM6
OnJlc2V0KToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjphcHBseVRvKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5oOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0T3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChyZXNldERl
ZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMv
TGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0T3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldE92ZXJmbG93TWlycm9yaW5nRW5hYmxlZCk6CisKIDIwMTEtMDQtMTggIFph
biBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBNYXJ0aW4gUm9iaW5zb24uCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA4NDIyMSkKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcwNyw2ICsx
NzA3LDE2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldEFzeW5jaHJvbm91c1NwZWxsQ2gKICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVl
UmVmIHNldE92ZXJmbG93TWlycm9yaW5nRW5hYmxlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIExheW91dFRlc3RDb250cm9s
bGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09i
amVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnNldE92ZXJmbG93
TWlycm9yaW5nRW5hYmxlZChKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1swXSkp
OworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3RhdGlj
IEpTVmFsdWVSZWYgc2hhZG93Um9vdENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50
Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKIHsKICAgICBpZiAoYXJndW1lbnRDb3VudCAhPSAxKQpAQCAtMjI5Myw2ICsyMzAzLDcgQEAg
SlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OgogICAgICAgICB7ICJzZXRK
YXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkIiwgc2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBi
b2FyZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFhTU0F1ZGl0b3JFbmFibGVkIiwg
c2V0WFNTQXVkaXRvckVuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRBc3lu
Y2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCIsIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tp
bmdFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0T3ZlcmZsb3dNaXJyb3Jp
bmdFbmFibGVkIiwgc2V0T3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAic2hhZG93Um9vdCIsIHNoYWRvd1Jvb3RDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJzaG93V2ViSW5zcGVjdG9yIiwgc2hvd1dlYkluc3BlY3RvckNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgICAgIHsgInRlc3RPbnNjcmVlbiIsIHRlc3RPbnNjcmVlbkNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJ
KHJldmlzaW9uIDg0MjIxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjg5LDYgKzI4OSw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChib29sKTsKICAgICB2b2lkIHNldEFzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpOworICAgIHZvaWQgc2V0T3ZlcmZsb3dN
aXJyb3JpbmdFbmFibGVkKGJvb2wpOwogICAgIHZvaWQgc2hvd1dlYkluc3BlY3RvcigpOwogICAg
IHZvaWQgY2xvc2VXZWJJbnNwZWN0b3IoKTsKICAgICB2b2lkIHNldFRpbWVsaW5lUHJvZmlsaW5n
RW5hYmxlZChib29sIGVuYWJsZWQpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gODQyMjEp
CisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw2ICsxODEsNyBAQCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6TGF5b3V0VGVzdENvbnRyb2xsCiAgICAgYmluZE1ldGhvZCgid2FpdEZvclBvbGljeURlbGVn
YXRlIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjp3YWl0Rm9yUG9saWN5RGVsZWdhdGUpOwogICAg
IGJpbmRNZXRob2QoIndhaXRVbnRpbERvbmUiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OndhaXRV
bnRpbERvbmUpOwogICAgIGJpbmRNZXRob2QoIndpbmRvd0NvdW50IiwgJkxheW91dFRlc3RDb250
cm9sbGVyOjp3aW5kb3dDb3VudCk7CisgICAgYmluZE1ldGhvZCgic2V0T3ZlcmZsb3dNaXJyb3Jp
bmdFbmFibGVkIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRPdmVyZmxvd01pcnJvcmluZ0Vu
YWJsZWQpOwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgc3R1YnMuCiAgICAgYmluZE1ldGhv
ZCgiYWJvcnRNb2RhbCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWJvcnRNb2RhbCk7CkBAIC0x
NzI4LDMgKzE3MjksMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0UGx1Z2luc0Vu
YQogICAgIH0KICAgICByZXN1bHQtPnNldE51bGwoKTsKIH0KKwordm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0T3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3VtZW50cy5z
aXplKCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc0Jvb2woKSkgeworICAgICAgICBtX3NoZWxsLT5w
cmVmZXJlbmNlcygpLT5vdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQgPSBhcmd1bWVudHNbMF0udG9C
b29sZWFuKCk7CisgICAgICAgIG1fc2hlbGwtPmFwcGx5UHJlZmVyZW5jZXMoKTsKKyAgICB9Cisg
ICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDg0MjIxKQor
KysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjQ1LDYgKzI0NSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRE
ZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlh
bnQqKTsKICAgICB2b2lkIHNldEVkaXRpbmdCZWhhdmlvcihjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50Kik7CiAKKyAgICAvLyBTaG93IG92ZXJmbG93IGNvbnRyb2xzICh2ZXJ0aWNh
bCBzY3JvbGxiYXJzIGFuZCByZXNpemVycykgb2YgYW4gZWxlbWVudAorICAgIC8vIHRvIHRoZSBs
ZWZ0IHNpZGUgd2hlbiBpdHMgdGV4dCBkaXJlY3Rpb24gaXMgUlRMLgorICAgIHZvaWQgc2V0T3Zl
cmZsb3dNaXJyb3JpbmdFbmFibGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
KTsKKwogICAgIC8vIFRoZSBmb2xsb3dpbmcgYXJlIG9ubHkgc3R1YnMuICBUT0RPKHBhbWcpOiBJ
bXBsZW1lbnQgYW55IG9mIHRoZXNlIHRoYXQKICAgICAvLyBhcmUgbmVlZGVkIHRvIHBhc3MgdGhl
IGxheW91dCB0ZXN0cy4KICAgICB2b2lkIGR1bXBBc1dlYkFyY2hpdmUoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiwgQ3BwVmFyaWFudCopOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViUHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gODQyMjEpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwNSw2ICsxMDUsNyBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjpyZXNldCgpCiAgICAgYWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQgPSBmYWxzZTsKICAgICBhY2NlbGVyYXRlZDJkQ2Fu
dmFzRW5hYmxlZCA9IGZhbHNlOwogICAgIGZvcmNlQ29tcG9zaXRpbmdNb2RlID0gZmFsc2U7Cisg
ICAgb3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkID0gZmFsc2U7CiB9CiAKIHZvaWQgV2ViUHJlZmVy
ZW5jZXM6OmFwcGx5VG8oV2ViVmlldyogd2ViVmlldykKQEAgLTE1Miw2ICsxNTMsNyBAQCB2b2lk
IFdlYlByZWZlcmVuY2VzOjphcHBseVRvKFdlYlZpZXcqIHdlCiAgICAgc2V0dGluZ3MtPnNldEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVk
KTsKICAgICBzZXR0aW5ncy0+c2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoZm9yY2VDb21wb3NpdGlu
Z01vZGUpOwogICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZChhY2Nl
bGVyYXRlZDJkQ2FudmFzRW5hYmxlZCk7CisgICAgc2V0dGluZ3MtPnNldE92ZXJmbG93TWlycm9y
aW5nRW5hYmxlZChvdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQpOwogCiAgICAgLy8gRml4ZWQgdmFs
dWVzLgogICAgIHNldHRpbmdzLT5zZXRTaG91bGRQYWludEN1c3RvbVNjcm9sbGJhcnModHJ1ZSk7
CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2Vz
LmgJKHJldmlzaW9uIDg0MjIxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
UHJlZmVyZW5jZXMuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsNyBAQCBzdHJ1Y3QgV2Vi
UHJlZmVyZW5jZXMgewogICAgIGJvb2wgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQ7CiAg
ICAgYm9vbCBmb3JjZUNvbXBvc2l0aW5nTW9kZTsKICAgICBib29sIGFjY2VsZXJhdGVkMmRDYW52
YXNFbmFibGVkOworICAgIGJvb2wgb3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkOwogCiAgICAgV2Vi
UHJlZmVyZW5jZXMoKSB7IHJlc2V0KCk7IH0KICAgICB2b2lkIHJlc2V0KCk7CkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5j
cHAJKHJldmlzaW9uIDg0MjIxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRl
c3RDb250cm9sbGVyR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODM2LDYgKzgzNiwxMSBAQCB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBc3luY2hyb25vCiAgICAgLy8gRklYTUU6IElt
cGxlbWVudCB0aGlzLgogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRPdmVyZmxv
d01pcnJvcmluZ0VuYWJsZWQoYm9vbCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMu
Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNob3dXZWJJbnNwZWN0b3IoKQogewog
ICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmll
dyhtYWluRnJhbWUpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVy
VHJlZS5tbQkocmV2aXNpb24gODQyMjEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3Niw2ICs0NzYsNyBAQCBzdGF0aWMg
dm9pZCByZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsCiAgICAgW3ByZWZlcmVuY2VzIHNldFdl
YkdMRW5hYmxlZDpOT107CiAgICAgW3ByZWZlcmVuY2VzIHNldFVzZVByZUhUTUw1UGFyc2VyUXVp
cmtzOk5PXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0Vu
YWJsZWQ6Tk9dOworICAgIFtwcmVmZXJlbmNlcyBzZXRPdmVyZmxvd01pcnJvcmluZ0VuYWJsZWQ6
Tk9dOwogCiAgICAgW1tOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdl
XSBzZXRDb29raWVBY2NlcHRQb2xpY3k6TlNIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21N
YWluRG9jdW1lbnREb21haW5dOwogICAgIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24gODQyMjEpCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTgzNCw2ICs4MzQsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0QXN5bmNocm9ubwogICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10g
c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQ6ZW5hYmxlZF07CiB9CiAKK3ZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE92ZXJmbG93TWlycm9yaW5nRW5hYmxlZChib29sIGVu
YWJsZWQpCit7CisgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBzZXRPdmVy
Zmxvd01pcnJvcmluZ0VuYWJsZWQ6ZW5hYmxlZF07Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNob3dXZWJJbnNwZWN0b3IoKQogewogICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBp
bnNwZWN0b3JdIHNob3c6bmlsXTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlv
dXRUZXN0Q29udHJvbGxlcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkocmV2aXNpb24gODQyMjEpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjE0LDYgKzEyMTQsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0QXN5bmNocm9ubwogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KIH0KIAordm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0T3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkKGJvb2wp
Cit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorfQorCiB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzaG93V2ViSW5zcGVjdG9yKCkKIHsKICAgICBDT01QdHI8SVdlYlZpZXc+IHdl
YlZpZXc7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NDIyNikKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDExLTA0LTE5ICBIaXJvbm9yaSBC
b25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlbmRlciBvdmVyZmxvdyBjb250cm9scyBvZiBhbiBSVEwgZWxl
bWVudCB0byBpdHMgbGVmdC1zaWRlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTQ2MjMKKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEgbmV3IHNl
dHRpbmcgJ292ZXJmbG93TWlycm9yaW5nRW5hYmxlZCcgYW5kIHJlbmRlciBvdmVyZmxvdworICAg
ICAgICBjb250cm9scyAoYSBzY3JvbGxiYXIgYW5kIGEgcmVzaXplcikgb2YgYW4gUlRMIGVsZW1l
bnQgaWYgdGhpcyBuZXcgc2V0dGluZworICAgICAgICB2YWx1ZSBpcyB0cnVlLgorCisgICAgICAg
ICogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLW92ZXJmbG93LWRpdi5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ydGwtb3ZlcmZsb3ctdGV4dGFyZWEu
aHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9pbnRlcm5hdGlv
bmFsL3J0bC1vdmVyZmxvdy1kaXYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLW92ZXJmbG93LXRleHRhcmVhLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTEtMDQtMTggIFRhaWp1IFRTVUlLSSAgPGRldmVsb3BA
dHppay5qcD4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ydGwtb3ZlcmZsb3ctZGl2Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLW92ZXJm
bG93LWRpdi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVy
bmF0aW9uYWwvcnRsLW92ZXJmbG93LWRpdi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5
IEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK2Rpdi5vdXRlciB7
IG92ZXJmbG93OiBhdXRvOyB3aWR0aDogMTAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgaGVpZ2h0
OiAxMDBweDsgYm9yZGVyOiBzb2xpZDsgfQorZGl2LmlubmVyIHsgcG9zaXRpb246IGFic29sdXRl
OyB0b3A6IDI1MHB4OyB9Cis8L3N0eWxlPgorPHRpdGxlPlNob3cgYSB2ZXJ0aWNhbCBzY3JvbGxi
YXIgdG8gdGhlIGxlZnQgc2lkZS4gKGEgcG9zaXRpb25lZCBlbGVtZW50KTwvdGl0bGU+Cis8c2Ny
aXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoraWYgKGxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE92ZXJmbG93
TWlycm9yaW5nRW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5U
aGlzIHRlc3RzIHdlIGNhbiBzaG93IHRleHQgaW4gYSBwb3NpdGlvbmVkIGVsZW1lbnQgd2hlbiB3
ZSBzaG93IHRoZSB2ZXJ0aWNhbCBzY3JvbGxiYXIgdG8gdGhlIGxlZnQgc2lkZS4gVG8gdGVzdCBt
YW51YWxseSwgbW92ZSB0aGUgdmVydGljYWwgc2Nyb2xsYmFyIHRvIHRoZSBib3R0b20gYW5kIHRo
ZSBob3Jpem9udGFsIHNjcm9sbGJhciB0byB0aGUgcmlnaHQgYW5kIHNlZSB3ZSBjYW4gc2VlIHRo
ZSB0ZXh0ICdmb28nLjwvcD4KKzxkaXYgY2xhc3M9Im91dGVyIiBzdHlsZT0iZGlyZWN0aW9uOiBy
dGw7IC13ZWJraXQtb3ZlcmZsb3ctZGlyZWN0aW9uOiBydGw7Ij4KKzxkaXYgY2xhc3M9ImlubmVy
IiBzdHlsZT0icmlnaHQ6IDIwMHB4OyI+Zm9vPC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC1vdmVyZmxv
dy10ZXh0YXJlYS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRl
cm5hdGlvbmFsL3J0bC1vdmVyZmxvdy10ZXh0YXJlYS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLW92ZXJmbG93LXRleHRhcmVhLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+
U2hvdyBhIHZlcnRpY2FsIHNjcm9sbGJhciB0byB0aGUgbGVmdCBzaWRlLiAodGV4dGFyZWEpPC90
aXRsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlw
dCI+CitpZiAobGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0T3ZlcmZsb3dNaXJyb3JpbmdFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwPlRoaXMgdGVzdHMgd2UgY2FuIHNlZSBSVEwgdGV4dCBpbiBhIG5vbi1wb3NpdGlv
bmVkIGVsZW1lbnQgd2hlbiB3ZSBtb3ZlIHRoZSB2ZXJ0aWNhbGwgc2Nyb2xsYmFyIHRvIGl0cyBs
ZWZ0IHNpZGUuIFRvIHRlc3QgbWFudWFsbHksIG9wZW4gdGhpcyBmaWxlIGFuZCBzZWUgd2UgY2Fu
IHNob3cgYSBzZXF1ZW5jZSBvZiB0ZXh0ICIwMTIzNDU2Nzg5IiB3aXRob3V0IGJlaW5nIGNsaXBw
ZWQuPC9wPgorPHRleHRhcmVhIHJvd3M9IjEwIiBjb2xzPSIxMCIgZGlyPSJydGwiIHN0eWxlPSIt
d2Via2l0LW92ZXJmbG93LWRpcmVjdGlvbjogcnRsOyI+MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODk8L3RleHRhcmVhPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC1vdmVyZmxvdy1kaXYtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvaW50
ZXJuYXRpb25hbC9ydGwtb3ZlcmZsb3ctZGl2LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ydGwtb3Zl
cmZsb3ctZGl2LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorbGF5
ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0
ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUg
Nzg0eDU4NAorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDM2CisgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc2MngzNgorICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDc2MjogIlRoaXMgdGVzdHMgd2UgY2FuIHNob3cgdGV4dCBp
biBhIHBvc2l0aW9uZWQgZWxlbWVudCB3aGVuIHdlIHNob3cgdGhlIHZlcnRpY2FsIHNjcm9sbGJh
ciB0byB0aGUgbGVmdCBzaWRlLiBUbyB0ZXN0IG1hbnVhbGx5LCIKKyAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwxOCkgd2lkdGggNzA5OiAibW92ZSB0aGUgdmVydGljYWwgc2Nyb2xsYmFyIHRvIHRo
ZSBib3R0b20gYW5kIHRoZSBob3Jpem9udGFsIHNjcm9sbGJhciB0byB0aGUgcmlnaHQgYW5kIHNl
ZSB3ZSBjYW4gc2VlIHRoZSB0ZXh0ICdmb28nLiIKK2xheWVyIGF0ICg4LDYwKSBzaXplIDEwNngx
MDYgY2xpcCBhdCAoMjYsNjMpIHNpemUgODV4ODUgc2Nyb2xsWCAxNTEgc2Nyb2xsV2lkdGggMjM2
IHNjcm9sbEhlaWdodCAyNjgKKyAgUmVuZGVyQmxvY2sgKHJlbGF0aXZlIHBvc2l0aW9uZWQpIHtE
SVZ9IGF0ICgwLDUyKSBzaXplIDEwNngxMDYgW2JvcmRlcjogKDNweCBzb2xpZCAjMDAwMDAwKV0K
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9y
dGwtb3ZlcmZsb3ctdGV4dGFyZWEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ydGwtb3ZlcmZsb3ctdGV4
dGFyZWEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC1vdmVyZmxvdy10ZXh0YXJlYS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjkgQEAKK2xheWVyIGF0ICgwLDApIHNpemUg
ODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1ODQKKyAgICAgIFJl
bmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgzNgorICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSA3NDZ4MzYKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3
aWR0aCA3NDY6ICJUaGlzIHRlc3RzIHdlIGNhbiBzZWUgUlRMIHRleHQgaW4gYSBub24tcG9zaXRp
b25lZCBlbGVtZW50IHdoZW4gd2UgbW92ZSB0aGUgdmVydGljYWxsIHNjcm9sbGJhciB0byBpdHMg
bGVmdCBzaWRlLiBUbyB0ZXN0IgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE4KSB3aWR0aCA2
NDU6ICJtYW51YWxseSwgb3BlbiB0aGlzIGZpbGUgYW5kIHNlZSB3ZSBjYW4gc2hvdyBhIHNlcXVl
bmNlIG9mIHRleHQgXCIwMTIzNDU2Nzg5XCIgd2l0aG91dCBiZWluZyBjbGlwcGVkLiIKKyAgICAg
IFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDUyKSBzaXplIDc4NHgxNDAKKyAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCitsYXllciBhdCAoMTAsNjIpIHNp
emUgOTF4MTM2IGNsaXAgYXQgKDI2LDYzKSBzaXplIDc0eDEzNCBzY3JvbGxIZWlnaHQgMTg2Cisg
IFJlbmRlclRleHRDb250cm9sIHtURVhUQVJFQX0gYXQgKDIsMikgc2l6ZSA5MXgxMzYgW2JnY29s
b3I9I0ZGRkZGRl0gW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KKyAgICBSZW5kZXJCbG9j
ayB7RElWfSBhdCAoMTgsMykgc2l6ZSA3MHgxODIKKyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMCwwKSBzaXplIDcweDE4MgorICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3MDog
IjAxMjM0NTY3ODkiCisgICAgICAgIHRleHQgcnVuIGF0ICgwLDEzKSB3aWR0aCA3MDogIjAxMjM0
NTY3ODkiCisgICAgICAgIHRleHQgcnVuIGF0ICgwLDI2KSB3aWR0aCA3MDogIjAxMjM0NTY3ODki
CisgICAgICAgIHRleHQgcnVuIGF0ICgwLDM5KSB3aWR0aCA3MDogIjAxMjM0NTY3ODkiCisgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDUyKSB3aWR0aCA3MDogIjAxMjM0NTY3ODkiCisgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDY1KSB3aWR0aCA3MDogIjAxMjM0NTY3ODkiCisgICAgICAgIHRleHQgcnVu
IGF0ICgwLDc4KSB3aWR0aCA3MDogIjAxMjM0NTY3ODkiCisgICAgICAgIHRleHQgcnVuIGF0ICgw
LDkxKSB3aWR0aCA3MDogIjAxMjM0NTY3ODkiCisgICAgICAgIHRleHQgcnVuIGF0ICgwLDEwNCkg
d2lkdGggNzA6ICIwMTIzNDU2Nzg5IgorICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxMTcpIHdpZHRo
IDcwOiAiMDEyMzQ1Njc4OSIKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMTMwKSB3aWR0aCA3MDog
IjAxMjM0NTY3ODkiCisgICAgICAgIHRleHQgcnVuIGF0ICgwLDE0Mykgd2lkdGggNzA6ICIwMTIz
NDU2Nzg5IgorICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxNTYpIHdpZHRoIDcwOiAiMDEyMzQ1Njc4
OSIKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMTY5KSB3aWR0aCA3MDogIjAxMjM0NTY3ODkiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107460</attachid>
            <date>2011-09-14 23:01:12 -0700</date>
            <delta_ts>2011-11-08 02:24:36 -0800</delta_ts>
            <desc>Patch v6 (enabled only on Chromium)</desc>
            <filename>issue54623-patch6.txt</filename>
            <type>text/plain</type>
            <size>17701</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1MTY5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEtMDktMTQgIEhpcm9ub3Jp
IEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuZGVyIG92ZXJmbG93IGNv
bnRyb2xzIG9mIGFuIFJUTCBlbGVtZW50IHRvIGl0cyBsZWZ0LXNpZGUuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDYyMworCisgICAgICAgIFRoaXMg
Y2hhbmdlIGFkZHMgYSBuZXcgZmxhZyBFTkFCTEVfT1ZFUkZMT1dfTUlSUk9SSU5HIGFuZCByZW5k
ZXIKKyAgICAgICAgb3ZlcmZsb3cgY29udHJvbHMgKHZlcnRpY2FsIHNjcm9sbGJhcnMgYW5kIHJl
c2l6ZXJzKSBvZiBSVEwgZWxlbWVudCBpZgorICAgICAgICB0aGlzIG5ldyBmbGFnIGlzIGVuYWJs
ZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVz
dDogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvb3ZlcmZsb3ctbWly
cm9yaW5nLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWRkT3ZlcmZsb3dGcm9tUG9zaXRpb25lZE9iamVj
dHMpOiBNb3ZlIGNoaWxkIGVsZW1lbnRzIHJpZ2h0LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OmRldGVybWluZUxvZ2ljYWxMZWZ0UG9zaXRpb25Gb3JDaGlsZCk6IGRpdHRvLgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94OjpvdmVyZmxvd0NsaXBSZWN0KTogTW92ZSB0aGUgY29udGVudCByZWN0YW5nbGUgcmlnaHQu
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvcm5lclJlY3QpOiBSZW5kZXIgYSByZXNpemVyIHRvIHRoZSBib3R0b20tbGVmdCBjb3JuZXIu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsYmFyT2Zmc2V0KTogUmVuZGVy
IGEgdmVydGljYWwgc2Nyb2xsYmFyIHRvIHRoZSBsZWZ0IHNpZGUKKyAgICAgICAgYW5kIG1vdmUg
YSBob3Jpem9udGFsIHNjcm9sbGJhciByaWdodCBieSB0aGUgd2lkdGggb2YgdGhlIHZlcnRpY2Fs
IHNjcm9sbGJhci4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjppbnZhbGlkYXRlU2Ny
b2xsYmFyUmVjdCk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBvc2l0
aW9uT3ZlcmZsb3dDb250cm9scyk6IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6aGl0VGVzdE92ZXJmbG93Q29udHJvbHMpOiBkaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpp
c1JpZ2h0VG9MZWZ0RGlyZWN0aW9uKTogQWRkZWQgYSBzaG9ydGN1dCBtZXRob2QgZm9yCisgICAg
ICAgICdkaXJlY3Rpb24oKSA9PSBSVEwnLgorCiAyMDExLTA5LTE0ICBKZWZmcmV5IFBmYXUgIDxq
ZWZmcmV5QGVuZHJpZnQuY29tPgogCiAgICAgICAgIGxpYnhtbDIgZnJhZ21lbnQgcGFyc2VyIGxv
c2VzIHByZWZpeCBuYW1lc3BhY2VzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAJKHJldmlzaW9uIDk1MTU2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2NCw4ICsxNDY0LDE3IEBAIHZv
aWQgUmVuZGVyQmxvY2s6OmFkZE92ZXJmbG93RnJvbVBvc2l0aW8KICAgICAgICAgcG9zaXRpb25l
ZE9iamVjdCA9ICppdDsKICAgICAgICAgCiAgICAgICAgIC8vIEZpeGVkIHBvc2l0aW9uZWQgZWxl
bWVudHMgZG9uJ3QgY29udHJpYnV0ZSB0byBsYXlvdXQgb3ZlcmZsb3csIHNpbmNlIHRoZXkgZG9u
J3Qgc2Nyb2xsIHdpdGggdGhlIGNvbnRlbnQuCisjaWYgRU5BQkxFKE9WRVJGTE9XX01JUlJPUklO
RykKKyAgICAgICAgaWYgKHBvc2l0aW9uZWRPYmplY3QtPnN0eWxlKCktPnBvc2l0aW9uKCkgIT0g
Rml4ZWRQb3NpdGlvbikgeworICAgICAgICAgICAgaW50IHggPSBwb3NpdGlvbmVkT2JqZWN0LT54
KCk7CisgICAgICAgICAgICBpZiAoc3R5bGUoKS0+aXNSaWdodFRvTGVmdERpcmVjdGlvbigpKQor
ICAgICAgICAgICAgICAgIHggLT0gdmVydGljYWxTY3JvbGxiYXJXaWR0aCgpOworICAgICAgICAg
ICAgYWRkT3ZlcmZsb3dGcm9tQ2hpbGQocG9zaXRpb25lZE9iamVjdCwgSW50U2l6ZSh4LCBwb3Np
dGlvbmVkT2JqZWN0LT55KCkpKTsKKyAgICAgICAgfQorI2Vsc2UKICAgICAgICAgaWYgKHBvc2l0
aW9uZWRPYmplY3QtPnN0eWxlKCktPnBvc2l0aW9uKCkgIT0gRml4ZWRQb3NpdGlvbikKICAgICAg
ICAgICAgIGFkZE92ZXJmbG93RnJvbUNoaWxkKHBvc2l0aW9uZWRPYmplY3QpOworI2VuZGlmCiAg
ICAgfQogfQogCkBAIC0xODAyLDYgKzE4MTEsMTAgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6
ZXN0aW1hdGVMb2dpY2FsVAogdm9pZCBSZW5kZXJCbG9jazo6ZGV0ZXJtaW5lTG9naWNhbExlZnRQ
b3NpdGlvbkZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpCiB7CiAgICAgTGF5b3V0VW5pdCBzdGFy
dFBvc2l0aW9uID0gYm9yZGVyU3RhcnQoKSArIHBhZGRpbmdTdGFydCgpOworI2lmIEVOQUJMRShP
VkVSRkxPV19NSVJST1JJTkcpCisgICAgaWYgKHN0eWxlKCktPmlzUmlnaHRUb0xlZnREaXJlY3Rp
b24oKSkKKyAgICAgICAgc3RhcnRQb3NpdGlvbiAtPSB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKCk7
CisjZW5kaWYKICAgICBMYXlvdXRVbml0IHRvdGFsQXZhaWxhYmxlTG9naWNhbFdpZHRoID0gYm9y
ZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpICsgYXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7CiAK
ICAgICAvLyBBZGQgaW4gb3VyIHN0YXJ0IG1hcmdpbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiA5NTE1NikKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTg1LDggKzExODUsMTYg
QEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6Om92ZXJmbG93Q2xpcFJlY3QoYwogICAgICAgICBzaXpl
KCkgLSBMYXlvdXRTaXplKGJvcmRlckxlZnQoKSArIGJvcmRlclJpZ2h0KCksIGJvcmRlclRvcCgp
ICsgYm9yZGVyQm90dG9tKCkpKTsKIAogICAgIC8vIFN1YnRyYWN0IG91dCBzY3JvbGxiYXJzIGlm
IHdlIGhhdmUgdGhlbS4KKyNpZiBFTkFCTEUoT1ZFUkZMT1dfTUlSUk9SSU5HKQorICAgICBpZiAo
bGF5ZXIoKSkgeworICAgICAgICBpZiAoc3R5bGUoKS0+aXNSaWdodFRvTGVmdERpcmVjdGlvbigp
KQorICAgICAgICAgICAgY2xpcFJlY3QubW92ZShsYXllcigpLT52ZXJ0aWNhbFNjcm9sbGJhcldp
ZHRoKHJlbGV2YW5jeSksIDApOworICAgICAgICBjbGlwUmVjdC5jb250cmFjdChsYXllcigpLT52
ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKHJlbGV2YW5jeSksIGxheWVyKCktPmhvcml6b250YWxTY3Jv
bGxiYXJIZWlnaHQocmVsZXZhbmN5KSk7CisgICAgIH0KKyNlbHNlCiAgICAgaWYgKGxheWVyKCkp
CiAgICAgICAgIGNsaXBSZWN0LmNvbnRyYWN0KGxheWVyKCktPnZlcnRpY2FsU2Nyb2xsYmFyV2lk
dGgocmVsZXZhbmN5KSwgbGF5ZXIoKS0+aG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodChyZWxldmFu
Y3kpKTsKKyNlbmRpZgogCiAgICAgcmV0dXJuIGNsaXBSZWN0OwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiA5NTE1NikKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
NjUsOSArMTc2NSwxNiBAQCBzdGF0aWMgTGF5b3V0UmVjdCBjb3JuZXJSZWN0KGNvbnN0IFJlbmRl
CiAgICAgICAgIGhvcml6b250YWxUaGlja25lc3MgPSBsYXllci0+dmVydGljYWxTY3JvbGxiYXIo
KS0+d2lkdGgoKTsKICAgICAgICAgdmVydGljYWxUaGlja25lc3MgPSBsYXllci0+aG9yaXpvbnRh
bFNjcm9sbGJhcigpLT5oZWlnaHQoKTsKICAgICB9CisjaWYgRU5BQkxFKE9WRVJGTE9XX01JUlJP
UklORykKKyAgICBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUgPSBsYXllci0+cmVuZGVyZXIoKS0+
c3R5bGUoKTsKKyAgICBpbnQgeCA9IHN0eWxlLT5pc1JpZ2h0VG9MZWZ0RGlyZWN0aW9uKCkgPyBi
b3VuZHMueCgpICsgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpIDogYm91bmRzLm1heFgoKSAtIGhv
cml6b250YWxUaGlja25lc3MgLSBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpOworICAgIHJldHVy
biBMYXlvdXRSZWN0KHgsIGJvdW5kcy5tYXhZKCkgLSB2ZXJ0aWNhbFRoaWNrbmVzcyAtIHN0eWxl
LT5ib3JkZXJCb3R0b21XaWR0aCgpLAorICAgICAgICAgICAgICAgICAgICAgIGhvcml6b250YWxU
aGlja25lc3MsIHZlcnRpY2FsVGhpY2tuZXNzKTsKKyNlbHNlCiAgICAgcmV0dXJuIExheW91dFJl
Y3QoYm91bmRzLm1heFgoKSAtIGhvcml6b250YWxUaGlja25lc3MgLSBsYXllci0+cmVuZGVyZXIo
KS0+c3R5bGUoKS0+Ym9yZGVyUmlnaHRXaWR0aCgpLCAKICAgICAgICAgICAgICAgICAgICAgICBi
b3VuZHMubWF4WSgpIC0gdmVydGljYWxUaGlja25lc3MgLSBsYXllci0+cmVuZGVyZXIoKS0+c3R5
bGUoKS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICBob3Jpem9u
dGFsVGhpY2tuZXNzLCB2ZXJ0aWNhbFRoaWNrbmVzcyk7CisjZW5kaWYKIH0KIAogTGF5b3V0UmVj
dCBSZW5kZXJMYXllcjo6c2Nyb2xsQ29ybmVyUmVjdCgpIGNvbnN0CkBAIC0xODkyLDExICsxODk5
LDI1IEBAIExheW91dFNpemUgUmVuZGVyTGF5ZXI6OnNjcm9sbGJhck9mZnNldCgKIHsKICAgICBS
ZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgpOwogCisjaWYgRU5BQkxFKE9WRVJGTE9XX01JUlJP
UklORykKKyAgICBpZiAoc2Nyb2xsYmFyID09IG1fdkJhci5nZXQoKSkgeworICAgICAgICBpbnQg
eCA9IHJlbmRlcmVyKCktPnN0eWxlKCktPmlzUmlnaHRUb0xlZnREaXJlY3Rpb24oKSA/IGJveC0+
Ym9yZGVyTGVmdCgpIDogYm94LT53aWR0aCgpIC0gYm94LT5ib3JkZXJSaWdodCgpIC0gc2Nyb2xs
YmFyLT53aWR0aCgpOworICAgICAgICByZXR1cm4gTGF5b3V0U2l6ZSh4LCBib3gtPmJvcmRlclRv
cCgpKTsKKyAgICB9CisKKyAgICBpZiAoc2Nyb2xsYmFyID09IG1faEJhci5nZXQoKSkgeworICAg
ICAgICBpbnQgeCA9IGJveC0+Ym9yZGVyTGVmdCgpOworICAgICAgICBpZiAocmVuZGVyZXIoKS0+
c3R5bGUoKS0+aXNSaWdodFRvTGVmdERpcmVjdGlvbigpKQorICAgICAgICAgICAgeCArPSBtX3ZC
YXIgPyBtX3ZCYXItPndpZHRoKCkgOiByZXNpemVyQ29ybmVyUmVjdCh0aGlzLCBib3gtPmJvcmRl
ckJveFJlY3QoKSkud2lkdGgoKTsKKyAgICAgICAgcmV0dXJuIExheW91dFNpemUoeCwgYm94LT5o
ZWlnaHQoKSAtIGJveC0+Ym9yZGVyQm90dG9tKCkgLSBzY3JvbGxiYXItPmhlaWdodCgpKTsKKyAg
ICB9CisjZWxzZQogICAgIGlmIChzY3JvbGxiYXIgPT0gbV92QmFyLmdldCgpKQogICAgICAgICBy
ZXR1cm4gTGF5b3V0U2l6ZShib3gtPndpZHRoKCkgLSBib3gtPmJvcmRlclJpZ2h0KCkgLSBzY3Jv
bGxiYXItPndpZHRoKCksIGJveC0+Ym9yZGVyVG9wKCkpOwogCiAgICAgaWYgKHNjcm9sbGJhciA9
PSBtX2hCYXIuZ2V0KCkpCiAgICAgICAgIHJldHVybiBMYXlvdXRTaXplKGJveC0+Ym9yZGVyTGVm
dCgpLCBib3gtPmhlaWdodCgpIC0gYm94LT5ib3JkZXJCb3R0b20oKSAtIHNjcm9sbGJhci0+aGVp
Z2h0KCkpOworI2VuZGlmCiAgICAgCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIExheW91dFNpemUoKTsKQEAgLTE5MjAsMTAgKzE5NDEsMjIgQEAgdm9pZCBSZW5kZXJMYXll
cjo6aW52YWxpZGF0ZVNjcm9sbGJhclJlYwogICAgIExheW91dFJlY3Qgc2Nyb2xsUmVjdCA9IHJl
Y3Q7CiAgICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKICAgICBBU1NFUlQoYm94KTsK
KyNpZiBFTkFCTEUoT1ZFUkZMT1dfTUlSUk9SSU5HKQorICAgIGlmIChzY3JvbGxiYXIgPT0gbV92
QmFyLmdldCgpKSB7CisgICAgICAgIGludCB4ID0gcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNSaWdo
dFRvTGVmdERpcmVjdGlvbigpID8gYm94LT5ib3JkZXJMZWZ0KCkgOiBib3gtPndpZHRoKCkgLSBi
b3gtPmJvcmRlclJpZ2h0KCkgLSBzY3JvbGxiYXItPndpZHRoKCk7CisgICAgICAgIHNjcm9sbFJl
Y3QubW92ZSh4LCBib3gtPmJvcmRlclRvcCgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnQg
eCA9IGJveC0+Ym9yZGVyTGVmdCgpOworICAgICAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS0+
aXNSaWdodFRvTGVmdERpcmVjdGlvbigpKQorICAgICAgICAgICAgeCArPSBtX3ZCYXIgPyBtX3ZC
YXItPndpZHRoKCkgOiByZXNpemVyQ29ybmVyUmVjdCh0aGlzLCBib3gtPmJvcmRlckJveFJlY3Qo
KSkud2lkdGgoKTsKKyAgICAgICAgc2Nyb2xsUmVjdC5tb3ZlKHgsIGJveC0+aGVpZ2h0KCkgLSBi
b3gtPmJvcmRlckJvdHRvbSgpIC0gc2Nyb2xsYmFyLT5oZWlnaHQoKSk7CisgICAgfQorI2Vsc2UK
ICAgICBpZiAoc2Nyb2xsYmFyID09IG1fdkJhci5nZXQoKSkKICAgICAgICAgc2Nyb2xsUmVjdC5t
b3ZlKGJveC0+d2lkdGgoKSAtIGJveC0+Ym9yZGVyUmlnaHQoKSAtIHNjcm9sbGJhci0+d2lkdGgo
KSwgYm94LT5ib3JkZXJUb3AoKSk7CiAgICAgZWxzZQogICAgICAgICBzY3JvbGxSZWN0Lm1vdmUo
Ym94LT5ib3JkZXJMZWZ0KCksIGJveC0+aGVpZ2h0KCkgLSBib3gtPmJvcmRlckJvdHRvbSgpIC0g
c2Nyb2xsYmFyLT5oZWlnaHQoKSk7CisjZW5kaWYKICAgICByZW5kZXJlcigpLT5yZXBhaW50UmVj
dGFuZ2xlKHNjcm9sbFJlY3QpOwogfQogCkBAIC0yMTAwLDYgKzIxMzMsMjUgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6cG9zaXRpb25PdmVyZmxvd0NvbnRybwogICAgIGNvbnN0IExheW91dFJlY3QmIGJv
cmRlckJveCA9IGJveC0+Ym9yZGVyQm94UmVjdCgpOwogICAgIGNvbnN0IExheW91dFJlY3QmIHNj
cm9sbENvcm5lciA9IHNjcm9sbENvcm5lclJlY3QoKTsKICAgICBMYXlvdXRSZWN0IGFic0JvdW5k
cyhib3JkZXJCb3gubG9jYXRpb24oKSArIG9mZnNldEZyb21MYXllciwgYm9yZGVyQm94LnNpemUo
KSk7CisjaWYgRU5BQkxFKE9WRVJGTE9XX01JUlJPUklORykKKyAgICBpZiAobV92QmFyKSB7Cisg
ICAgICAgIGludCB4ID0gcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNSaWdodFRvTGVmdERpcmVjdGlv
bigpID8gYWJzQm91bmRzLngoKSArIGJveC0+Ym9yZGVyTGVmdCgpIDogYWJzQm91bmRzLm1heFgo
KSAtIGJveC0+Ym9yZGVyUmlnaHQoKSAtIG1fdkJhci0+d2lkdGgoKTsKKyAgICAgICAgbV92QmFy
LT5zZXRGcmFtZVJlY3QoTGF5b3V0UmVjdCh4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFic0JvdW5kcy55KCkgKyBib3gtPmJvcmRlclRvcCgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdkJhci0+d2lkdGgoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNCb3VuZHMuaGVpZ2h0KCkgLSAoYm94
LT5ib3JkZXJUb3AoKSArIGJveC0+Ym9yZGVyQm90dG9tKCkpIC0gc2Nyb2xsQ29ybmVyLmhlaWdo
dCgpKSk7CisgICAgfQorCisgICAgaWYgKG1faEJhcikgeworICAgICAgICBpbnQgeCA9IGFic0Jv
dW5kcy54KCkgKyBib3gtPmJvcmRlckxlZnQoKTsKKyAgICAgICAgaWYgKHJlbmRlcmVyKCktPnN0
eWxlKCktPmlzUmlnaHRUb0xlZnREaXJlY3Rpb24oKSkKKyAgICAgICAgICAgIHggKz0gc2Nyb2xs
Q29ybmVyLndpZHRoKCk7CisgICAgICAgIG1faEJhci0+c2V0RnJhbWVSZWN0KExheW91dFJlY3Qo
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNCb3VuZHMubWF4
WSgpIC0gYm94LT5ib3JkZXJCb3R0b20oKSAtIG1faEJhci0+aGVpZ2h0KCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzQm91bmRzLndpZHRoKCkgLSAoYm94LT5i
b3JkZXJMZWZ0KCkgKyBib3gtPmJvcmRlclJpZ2h0KCkpIC0gc2Nyb2xsQ29ybmVyLndpZHRoKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9oQmFyLT5oZWlnaHQo
KSkpOworICAgIH0KKyNlbHNlCiAgICAgaWYgKG1fdkJhcikKICAgICAgICAgbV92QmFyLT5zZXRG
cmFtZVJlY3QoTGF5b3V0UmVjdChhYnNCb3VuZHMubWF4WCgpIC0gYm94LT5ib3JkZXJSaWdodCgp
IC0gbV92QmFyLT53aWR0aCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFic0JvdW5kcy55KCkgKyBib3gtPmJvcmRlclRvcCgpLApAQCAtMjExMSw2ICsyMTYzLDcg
QEAgdm9pZCBSZW5kZXJMYXllcjo6cG9zaXRpb25PdmVyZmxvd0NvbnRybwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic0JvdW5kcy5tYXhZKCkgLSBib3gtPmJvcmRl
ckJvdHRvbSgpIC0gbV9oQmFyLT5oZWlnaHQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhYnNCb3VuZHMud2lkdGgoKSAtIChib3gtPmJvcmRlckxlZnQoKSArIGJv
eC0+Ym9yZGVyUmlnaHQoKSkgLSBzY3JvbGxDb3JuZXIud2lkdGgoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2hCYXItPmhlaWdodCgpKSk7CisjZW5kaWYKIAog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBpZiAoR3JhcGhpY3NMYXllciog
bGF5ZXIgPSBsYXllckZvckhvcml6b250YWxTY3JvbGxiYXIoKSkgewpAQCAtMjUwNiwxMCArMjU1
OSwxOCBAQCBib29sIFJlbmRlckxheWVyOjpoaXRUZXN0T3ZlcmZsb3dDb250cm9sCiAgICAgTGF5
b3V0VW5pdCByZXNpemVDb250cm9sU2l6ZSA9IG1heDxMYXlvdXRVbml0PihyZXNpemVDb250cm9s
UmVjdC5oZWlnaHQoKSwgMCk7CiAKICAgICBpZiAobV92QmFyKSB7CisjaWYgRU5BQkxFKE9WRVJG
TE9XX01JUlJPUklORykKKyAgICAgICAgaW50IHggPSByZW5kZXJlcigpLT5zdHlsZSgpLT5pc1Jp
Z2h0VG9MZWZ0RGlyZWN0aW9uKCkgPyBib3gtPmJvcmRlckxlZnQoKSA6IGJveC0+d2lkdGgoKSAt
IGJveC0+Ym9yZGVyUmlnaHQoKSAtIG1fdkJhci0+d2lkdGgoKTsKKyAgICAgICAgTGF5b3V0UmVj
dCB2QmFyUmVjdCh4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveC0+Ym9yZGVyVG9w
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92QmFyLT53aWR0aCgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJveC0+aGVpZ2h0KCkgLSAoYm94LT5ib3JkZXJUb3AoKSAr
IGJveC0+Ym9yZGVyQm90dG9tKCkpIC0gKG1faEJhciA/IG1faEJhci0+aGVpZ2h0KCkgOiByZXNp
emVDb250cm9sU2l6ZSkpOworI2Vsc2UKICAgICAgICAgTGF5b3V0UmVjdCB2QmFyUmVjdChib3gt
PndpZHRoKCkgLSBib3gtPmJvcmRlclJpZ2h0KCkgLSBtX3ZCYXItPndpZHRoKCksIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJveC0+Ym9yZGVyVG9wKCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV92QmFyLT53aWR0aCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJveC0+aGVpZ2h0KCkgLSAoYm94LT5ib3JkZXJUb3AoKSArIGJveC0+Ym9yZGVyQm90dG9tKCkp
IC0gKG1faEJhciA/IG1faEJhci0+aGVpZ2h0KCkgOiByZXNpemVDb250cm9sU2l6ZSkpOworI2Vu
ZGlmCiAgICAgICAgIGlmICh2QmFyUmVjdC5jb250YWlucyhsb2NhbFBvaW50KSkgewogICAgICAg
ICAgICAgcmVzdWx0LnNldFNjcm9sbGJhcihtX3ZCYXIuZ2V0KCkpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC0yNTE4LDEwICsyNTc5LDIwIEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmhpdFRl
c3RPdmVyZmxvd0NvbnRyb2wKIAogICAgIHJlc2l6ZUNvbnRyb2xTaXplID0gbWF4PExheW91dFVu
aXQ+KHJlc2l6ZUNvbnRyb2xSZWN0LndpZHRoKCksIDApOwogICAgIGlmIChtX2hCYXIpIHsKKyNp
ZiBFTkFCTEUoT1ZFUkZMT1dfTUlSUk9SSU5HKQorICAgICAgICBpbnQgeCA9IGJveC0+Ym9yZGVy
TGVmdCgpOworICAgICAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNSaWdodFRvTGVmdERp
cmVjdGlvbigpKQorICAgICAgICAgICAgeCArPSBtX3ZCYXIgPyBtX3ZCYXItPndpZHRoKCkgOiBy
ZXNpemVDb250cm9sU2l6ZTsKKyAgICAgICAgTGF5b3V0UmVjdCBoQmFyUmVjdCh4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJveC0+aGVpZ2h0KCkgLSBib3gtPmJvcmRlckJvdHRvbSgp
IC0gbV9oQmFyLT5oZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3gtPndp
ZHRoKCkgLSAoYm94LT5ib3JkZXJMZWZ0KCkgKyBib3gtPmJvcmRlclJpZ2h0KCkpIC0gKG1fdkJh
ciA/IG1fdkJhci0+d2lkdGgoKSA6IHJlc2l6ZUNvbnRyb2xTaXplKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2hCYXItPmhlaWdodCgpKTsKKyNlbHNlCiAgICAgICAgIExheW91dFJl
Y3QgaEJhclJlY3QoYm94LT5ib3JkZXJMZWZ0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm94LT5oZWlnaHQoKSAtIGJveC0+Ym9yZGVyQm90dG9tKCkgLSBtX2hCYXItPmhlaWdodCgp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveC0+d2lkdGgoKSAtIChib3gtPmJvcmRl
ckxlZnQoKSArIGJveC0+Ym9yZGVyUmlnaHQoKSkgLSAobV92QmFyID8gbV92QmFyLT53aWR0aCgp
IDogcmVzaXplQ29udHJvbFNpemUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faEJh
ci0+aGVpZ2h0KCkpOworI2VuZGlmCiAgICAgICAgIGlmIChoQmFyUmVjdC5jb250YWlucyhsb2Nh
bFBvaW50KSkgewogICAgICAgICAgICAgcmVzdWx0LnNldFNjcm9sbGJhcihtX2hCYXIuZ2V0KCkp
OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gOTUxNTYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTI2
LDYgKzUyNiw3IEBAIHB1YmxpYzoKIAogICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dERpcmVjdGlvbj4oaW5oZXJpdGVkX2ZsYWdzLl9k
aXJlY3Rpb24pOyB9CiAgICAgYm9vbCBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gZGlyZWN0aW9uKCkgPT0gTFRSOyB9CisgICAgYm9vbCBpc1JpZ2h0VG9MZWZ0RGlyZWN0
aW9uKCkgY29uc3QgeyByZXR1cm4gZGlyZWN0aW9uKCkgPT0gUlRMOyB9CiAKICAgICBMZW5ndGgg
bGluZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+bGluZV9oZWlnaHQ7IH0KICAg
ICBpbnQgY29tcHV0ZWRMaW5lSGVpZ2h0KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCShyZXZpc2lvbiA5NTE2OSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDktMTQgIEhpcm9ub3Jp
IEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuZGVyIG92ZXJmbG93IGNv
bnRyb2xzIG9mIGFuIFJUTCBlbGVtZW50IHRvIGl0cyBsZWZ0LXNpZGUuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDYyMworCisgICAgICAgIFRoaXMg
Y2hhbmdlIGFkZHMgYSBuZXcgZmxhZyBFTkFCTEVfT1ZFUkZMT1dfTUlSUk9SSU5HIGFuZCByZW5k
ZXIKKyAgICAgICAgb3ZlcmZsb3cgY29udHJvbHMgKHZlcnRpY2FsIHNjcm9sbGJhcnMgYW5kIHJl
c2l6ZXJzKSBvZiBSVEwgZWxlbWVudCBpZgorICAgICAgICB0aGlzIG5ldyBmbGFnIGlzIGVuYWJs
ZWQuCisgICAgICAgIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGZlYXR1cmVzLmd5cGk6IGVuYWJsZWQgdGhlIEVOQUJMRV9PVkVSRkxPV19NSVJST1JJ
TkcgZmxhZyBvbiBDaHJvbWl1bS4KKwogMjAxMS0wOS0xNCAgUGV0ZXIgQmV2ZXJsb28gIDxwZXRl
ckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBNYWtlIFdFQl9BVURJTyBjb25k
aXRpb25hbCBhbmQgZml4IHRoZSBidWlsZCB3aGVuIGRpc2FibGVkCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9mZWF0dXJlcy5neXBpCShyZXZpc2lvbiA5NTE1NikKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vZmVhdHVyZXMuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsNyBAQAog
ICAgICAgJ0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM9MScsCiAgICAgICAnRU5BQkxF
X09QRU5UWVBFX1NBTklUSVpFUj0xJywKICAgICAgICdFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRT
PTAnLAorICAgICAgJ0VOQUJMRV9PVkVSRkxPV19NSVJST1JJTkc9MScsCiAgICAgICAnRU5BQkxF
X1BBR0VfVklTSUJJTElUWV9BUEk9MScsCiAgICAgICAnRU5BQkxFX1BST0dSRVNTX1RBRz0xJywK
ICAgICAgICdFTkFCTEVfUVVPVEE9MScsCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5NTE2OSkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEx
LTA5LTE0ICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
bmRlciBvdmVyZmxvdyBjb250cm9scyBvZiBhbiBSVEwgZWxlbWVudCB0byBpdHMgbGVmdC1zaWRl
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ2MjMK
KworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEgbmV3IGZsYWcgRU5BQkxFX09WRVJGTE9XX01J
UlJPUklORyBhbmQgcmVuZGVyCisgICAgICAgIG92ZXJmbG93IGNvbnRyb2xzICh2ZXJ0aWNhbCBz
Y3JvbGxiYXJzIGFuZCByZXNpemVycykgb2YgUlRMIGVsZW1lbnQgaWYKKyAgICAgICAgdGhpcyBu
ZXcgZmxhZyBpcyBlbmFibGVkLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC90ZXh0L2ludGVybmF0aW9uYWwv
b3ZlcmZsb3ctbWlycm9yaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvb3ZlcmZsb3ctbWlycm9yaW5nLmh0
bWw6IEFkZGVkLgorCiAyMDExLTA5LTE0ICBKZWZmcmV5IFBmYXUgIDxqZWZmcmV5QGVuZHJpZnQu
Y29tPgogCiAgICAgICAgIGxpYnhtbDIgZnJhZ21lbnQgcGFyc2VyIGxvc2VzIHByZWZpeCBuYW1l
c3BhY2VzCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3RleHQvaW50
ZXJuYXRpb25hbC9vdmVyZmxvdy1taXJyb3JpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL292
ZXJmbG93LW1pcnJvcmluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9vdmVyZmxvdy1taXJy
b3JpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwIEBACitmb28KK2Zv
bworZm9vCitmb28KK2ZvbworZm9vCitmb28KK2ZvbworZm9vCitmb28KK2ZvbworZm9vCitmb28K
K2ZvbworZm9vCitmb28KK2ZvbworZm9vCitmb28KK2ZvbworVGhpcyB0ZXN0cyB3ZSBjYW4gc2hv
dyB0aGUgdmVydGljYWwgc2Nyb2xsYmFyIG9mIGFuIFJUTCBlbGVtZW50IHRvIGl0cyBsZWZ0IHNp
ZGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHJlY3QwLmxlZnQgPCBy
ZWN0MS5sZWZ0IGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3Rl
eHQvaW50ZXJuYXRpb25hbC9vdmVyZmxvdy1taXJyb3JpbmcuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9vdmVy
Zmxvdy1taXJyb3JpbmcuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL292ZXJmbG93LW1pcnJvcmluZy5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ5IEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlIHR5
cGU9InRleHQvY3NzIj4KK2Rpdi5vdXRlciB7IG92ZXJmbG93OiBhdXRvOyB3aWR0aDogMTAwcHg7
IHBvc2l0aW9uOiByZWxhdGl2ZTsgaGVpZ2h0OiAxMDBweDsgYm9yZGVyOiBzb2xpZDsgfQorPC9z
dHlsZT4KKzx0aXRsZT5TaG93IGEgdmVydGljYWwgc2Nyb2xsYmFyIHRvIHRoZSBsZWZ0IHNpZGUu
IChhIHBvc2l0aW9uZWQgZWxlbWVudCk8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJ0ZXN0MCIgY2xhc3M9
Im91dGVyIiBzdHlsZT0iZGlyZWN0aW9uOiBsdHI7Ij4KKzxkaXY+Zm9vPC9kaXY+PGRpdj5mb288
L2Rpdj48ZGl2PmZvbzwvZGl2PjxkaXY+Zm9vPC9kaXY+PGRpdj5mb288L2Rpdj48ZGl2PmZvbzwv
ZGl2PjxkaXY+Zm9vPC9kaXY+PGRpdj5mb288L2Rpdj48ZGl2PmZvbzwvZGl2PjxkaXY+Zm9vPC9k
aXY+Cis8L2Rpdj4KKzxkaXYgaWQ9InRlc3QxIiBjbGFzcz0ib3V0ZXIiIHN0eWxlPSJkaXJlY3Rp
b246IHJ0bDsiPgorPGRpdj5mb288L2Rpdj48ZGl2PmZvbzwvZGl2PjxkaXY+Zm9vPC9kaXY+PGRp
dj5mb288L2Rpdj48ZGl2PmZvbzwvZGl2PjxkaXY+Zm9vPC9kaXY+PGRpdj5mb288L2Rpdj48ZGl2
PmZvbzwvZGl2PjxkaXY+Zm9vPC9kaXY+PGRpdj5mb288L2Rpdj4KKzwvZGl2PgorPHAgaWQ9ImRl
c2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgbGFuZ3Vh
Z2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlwdGlvbignVGhp
cyB0ZXN0cyB3ZSBjYW4gc2hvdyB0aGUgdmVydGljYWwgc2Nyb2xsYmFyIG9mIGFuIFJUTCBlbGVt
ZW50IHRvIGl0cyBsZWZ0IHNpZGUuJyk7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisvLyBXaGVuIHRo
ZSBSVEwgPGRpdj4gZWxlbWVudCBpbiB0aGlzIGRvY3VtZW50IHNob3dzIGl0cyB2ZXJ0aWNhbCBz
Y3JvbGxiYXIKKy8vIHRvIGl0cyByaWdodCBzaWRlLCBpdHMgY29udGVudC1sZWZ0IHBvc2l0aW9u
IGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgb2YKKy8vIHRoZSBMVFIgPGRpdj4gZWxlbWVudCBpbiB0
aGlzIGRvY3VtZW50LiBPbiB0aGUgb3RoZXIgaGFuZCwgd2hlbiB0aGUgUlRMCisvLyBlbGVtZW50
IHNob3dzIGl0cyB2ZXJ0aWNhbCBzY3JvbGxiYXIgdG8gaXRzIGxlZnQgc2lkZSwgaXRzIGNvbnRl
bnQtbGVmdAorLy8gcG9zaXRpb24gYmVjb21lcyBncmVhdGVyIHRoYW4gdGhlIG9uZSBvZiB0aGUg
TFRSIGVsZW1lbnQgYnkgdGhlIHdpZHRoIG9mCisvLyB0aGUgc2Nyb2xsYmFyLiBUaGlzIHRlc3Qg
cmV0cmlldmVzIGNsaWVudCByZWN0YW5nbGVzIG9mIHRoZXNlIGVsZW1lbnRzCisvLyBhbmQgY29t
cGFyZSB0aGVtIHNvIHdlIGNhbiBjaGVjayBpZiB0aGUgUlRMIGVsZW1lbnQgc2hvd3MgaXRzIHZl
cnRpY2FsCisvLyBzY3JvbGxiYXIgdG8gaXRzIGxlZnQgc2lkZS4KK3ZhciBub2RlMCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0MCcpOwordmFyIHJhbmdlMCA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CityYW5nZTAuc2VsZWN0Tm9kZUNvbnRlbnRzKG5vZGUwKTsKK3JlY3QwID0gcmFu
Z2UwLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworCit2YXIgbm9kZTEgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgndGVzdDEnKTsKK3ZhciByYW5nZTEgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworcmFuZ2UxLnNlbGVjdE5vZGVDb250ZW50cyhub2RlMSk7CityZWN0MSA9IHJhbmdlMS5nZXRC
b3VuZGluZ0NsaWVudFJlY3QoKTsKKworc2hvdWxkQmVUcnVlKCdyZWN0MC5sZWZ0IDwgcmVjdDEu
bGVmdCcpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="104165"
          type_id="1"
          status="-"
          setter="rniwa"
    />
    <flag name="commit-queue"
          id="104225"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114018</attachid>
            <date>2011-11-08 02:24:36 -0800</date>
            <delta_ts>2012-01-06 05:14:03 -0800</delta_ts>
            <desc>Patch v7</desc>
            <filename>issue54623-patch7.txt</filename>
            <type>text/plain</type>
            <size>15937</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5NTQwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMTEtMDggIEhpcm9ub3Jp
IEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuZGVyIG92ZXJmbG93IGNv
bnRyb2xzIG9mIGFuIFJUTCBlbGVtZW50IHRvIGl0cyBsZWZ0LXNpZGUuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDYyMworCisgICAgICAgIFRoaXMg
Y2hhbmdlIGFkZHMgYSBuZXcgZmxhZyBXVEZfVVNFX1JUTF9TQ1JPTExCQVIgYW5kIHJlbmRlciB0
aGUKKyAgICAgICAgdmVydGljYWwgc2Nyb2xsYmFycyBhbmQgcmVzaXplcnMgb2YgUlRMIGVsZW1l
bnRzIHRvIHRoZWlyIGxlZnQgc2lkZSBpZgorICAgICAgICB0aGlzIG5ldyBmbGFnIGlzIGVuYWJs
ZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVz
dDogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvcnRsLXNjcm9sbGJhci5odG1sCisKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmFkZE92ZXJmbG93RnJvbVBvc2l0aW9uZWRPYmplY3RzKTogTW92ZSBjaGlsZCBl
bGVtZW50cyByaWdodC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpkZXRlcm1pbmVM
b2dpY2FsTGVmdFBvc2l0aW9uRm9yQ2hpbGQpOiBkaXR0bworICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpvdmVyZmxvd0NsaXBS
ZWN0KTogTW92ZSB0aGUgY29udGVudCByZWN0YW5nZSByaWdodC4KKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29ybmVyUmVjdCk6IFJlbmRl
ciBhIHJlc2l6ZXIgdG8gdGhlIGJvdHRvbS1sZWZ0IGNvcm5lci4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpzY3JvbGxiYXJPZmZzZXQpOiBSZW5kZXIgYSB2ZXJ0aWNhbCBzY3JvbGxi
YXIgdG8gdGhlIGxlZnQgc2lkZQorICAgICAgICBhbmQgbW92ZSBhIGhvcml6b250YWwgc2Nyb2xs
YmFyIHJpZ2h0IGJ5IHRoZSB3aWR0aCBvZiB0aGUgdmVydGljYWwgc2Nyb2xsYmFyLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmludmFsaWRhdGVTY3JvbGxiYXJSZWN0KTogZGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cG9zaXRpb25PdmVyZmxvd0NvbnRyb2xz
KTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdE92ZXJmbG93
Q29udHJvbHMpOiBkaXR0by4KKwogMjAxMS0xMS0wOCAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnpp
bW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAgICBTd2l0Y2ggU1ZHSW1hZ2UgY2FjaGUgdG8gc3Rv
cmUgSW1hZ2VCdWZmZXJzIGluc3RlYWQgb2Ygd2hvbGUgU1ZHSW1hZ2VzLCBpbmNsdWRpbmcgYSBE
T00vUmVuZGVyIHRyZWUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcAkocmV2aXNpb24gOTk1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcyLDggKzE0NzIsMTcgQEAgdm9pZCBSZW5k
ZXJCbG9jazo6YWRkT3ZlcmZsb3dGcm9tUG9zaXRpbwogICAgICAgICBwb3NpdGlvbmVkT2JqZWN0
ID0gKml0OwogICAgICAgICAKICAgICAgICAgLy8gRml4ZWQgcG9zaXRpb25lZCBlbGVtZW50cyBk
b24ndCBjb250cmlidXRlIHRvIGxheW91dCBvdmVyZmxvdywgc2luY2UgdGhleSBkb24ndCBzY3Jv
bGwgd2l0aCB0aGUgY29udGVudC4KKyNpZiBVU0UoUlRMX1NDUk9MTEJBUikKKyAgICAgICAgaWYg
KHBvc2l0aW9uZWRPYmplY3QtPnN0eWxlKCktPnBvc2l0aW9uKCkgIT0gRml4ZWRQb3NpdGlvbikg
eworICAgICAgICAgICAgaW50IHggPSBwb3NpdGlvbmVkT2JqZWN0LT54KCk7CisgICAgICAgICAg
ICBpZiAoIXN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKKyAgICAgICAgICAgICAg
ICB4IC09IHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoKTsKKyAgICAgICAgICAgIGFkZE92ZXJmbG93
RnJvbUNoaWxkKHBvc2l0aW9uZWRPYmplY3QsIEludFNpemUoeCwgcG9zaXRpb25lZE9iamVjdC0+
eSgpKSk7CisgICAgICAgIH0KKyNlbHNlCiAgICAgICAgIGlmIChwb3NpdGlvbmVkT2JqZWN0LT5z
dHlsZSgpLT5wb3NpdGlvbigpICE9IEZpeGVkUG9zaXRpb24pCiAgICAgICAgICAgICBhZGRPdmVy
Zmxvd0Zyb21DaGlsZChwb3NpdGlvbmVkT2JqZWN0KTsKKyNlbmRpZgogICAgIH0KIH0KIApAQCAt
MTg1MSw2ICsxODYwLDEwIEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmNvbXB1dGVTdGFydFBv
c2kKIHZvaWQgUmVuZGVyQmxvY2s6OmRldGVybWluZUxvZ2ljYWxMZWZ0UG9zaXRpb25Gb3JDaGls
ZChSZW5kZXJCb3gqIGNoaWxkKQogewogICAgIExheW91dFVuaXQgc3RhcnRQb3NpdGlvbiA9IGJv
cmRlclN0YXJ0KCkgKyBwYWRkaW5nU3RhcnQoKTsKKyNpZiBVU0UoUlRMX1NDUk9MTEJBUikKKyAg
ICBpZiAoIXN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKKyAgICAgICAgc3RhcnRQ
b3NpdGlvbiAtPSB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKCk7CisjZW5kaWYKICAgICBMYXlvdXRV
bml0IHRvdGFsQXZhaWxhYmxlTG9naWNhbFdpZHRoID0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxX
aWR0aCgpICsgYXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7CiAKICAgICAvLyBBZGQgaW4gb3VyIHN0
YXJ0IG1hcmdpbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShy
ZXZpc2lvbiA5OTUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjQxLDggKzEyNDEsMTYgQEAgTGF5b3V0UmVjdCBSZW5kZXJC
b3g6Om92ZXJmbG93Q2xpcFJlY3QoYwogICAgIGNsaXBSZWN0LnNldFNpemUoY2xpcFJlY3Quc2l6
ZSgpIC0gTGF5b3V0U2l6ZShib3JkZXJMZWZ0KCkgKyBib3JkZXJSaWdodCgpLCBib3JkZXJUb3Ao
KSArIGJvcmRlckJvdHRvbSgpKSk7CiAKICAgICAvLyBTdWJ0cmFjdCBvdXQgc2Nyb2xsYmFycyBp
ZiB3ZSBoYXZlIHRoZW0uCisjaWYgVVNFKFJUTF9TQ1JPTExCQVIpCisgICAgIGlmIChsYXllcigp
KSB7CisgICAgICAgIGlmICghc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQorICAg
ICAgICAgICAgY2xpcFJlY3QubW92ZShsYXllcigpLT52ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKHJl
bGV2YW5jeSksIDApOworICAgICAgICBjbGlwUmVjdC5jb250cmFjdChsYXllcigpLT52ZXJ0aWNh
bFNjcm9sbGJhcldpZHRoKHJlbGV2YW5jeSksIGxheWVyKCktPmhvcml6b250YWxTY3JvbGxiYXJI
ZWlnaHQocmVsZXZhbmN5KSk7CisgICAgIH0KKyNlbHNlCiAgICAgaWYgKGxheWVyKCkpCiAgICAg
ICAgIGNsaXBSZWN0LmNvbnRyYWN0KGxheWVyKCktPnZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgocmVs
ZXZhbmN5KSwgbGF5ZXIoKS0+aG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodChyZWxldmFuY3kpKTsK
KyNlbmRpZgogCiAgICAgcmV0dXJuIGNsaXBSZWN0OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiA5OTUxNCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NzEsOSAr
MTc3MSwxNSBAQCBzdGF0aWMgSW50UmVjdCBjb3JuZXJSZWN0KGNvbnN0IFJlbmRlckxhCiAgICAg
ICAgIGhvcml6b250YWxUaGlja25lc3MgPSBsYXllci0+dmVydGljYWxTY3JvbGxiYXIoKS0+d2lk
dGgoKTsKICAgICAgICAgdmVydGljYWxUaGlja25lc3MgPSBsYXllci0+aG9yaXpvbnRhbFNjcm9s
bGJhcigpLT5oZWlnaHQoKTsKICAgICB9CisjaWYgVVNFKFJUTF9TQ1JPTExCQVIpCisgICAgY29u
c3QgUmVuZGVyU3R5bGUqIHN0eWxlID0gbGF5ZXItPnJlbmRlcmVyKCktPnN0eWxlKCk7CisgICAg
aW50IHggPSAhc3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGJvdW5kcy54KCkgKyBz
dHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgOiBib3VuZHMubWF4WCgpIC0gaG9yaXpvbnRhbFRoaWNr
bmVzcyAtIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCk7CisgICAgcmV0dXJuIEludFJlY3QoeCwg
Ym91bmRzLm1heFkoKSAtIHZlcnRpY2FsVGhpY2tuZXNzIC0gc3R5bGUtPmJvcmRlckJvdHRvbVdp
ZHRoKCksIGhvcml6b250YWxUaGlja25lc3MsIHZlcnRpY2FsVGhpY2tuZXNzKTsKKyNlbHNlCiAg
ICAgcmV0dXJuIEludFJlY3QoYm91bmRzLm1heFgoKSAtIGhvcml6b250YWxUaGlja25lc3MgLSBs
YXllci0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Ym9yZGVyUmlnaHRXaWR0aCgpLCAKICAgICAgICAg
ICAgICAgICAgICBib3VuZHMubWF4WSgpIC0gdmVydGljYWxUaGlja25lc3MgLSBsYXllci0+cmVu
ZGVyZXIoKS0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwKICAgICAgICAgICAgICAgICAg
ICBob3Jpem9udGFsVGhpY2tuZXNzLCB2ZXJ0aWNhbFRoaWNrbmVzcyk7CisjZW5kaWYKIH0KIAog
SW50UmVjdCBSZW5kZXJMYXllcjo6c2Nyb2xsQ29ybmVyUmVjdCgpIGNvbnN0CkBAIC0xODk4LDEx
ICsxOTA0LDI1IEBAIEludFNpemUgUmVuZGVyTGF5ZXI6OnNjcm9sbGJhck9mZnNldChjb24KIHsK
ICAgICBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgpOwogCisjaWYgVVNFKFJUTF9TQ1JPTExC
QVIpCisgICAgaWYgKHNjcm9sbGJhciA9PSBtX3ZCYXIuZ2V0KCkpIHsKKyAgICAgICAgaW50IHgg
PSAhcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gYm94LT5i
b3JkZXJMZWZ0KCkgOiBib3gtPndpZHRoKCkgLSBib3gtPmJvcmRlclJpZ2h0KCkgLSBzY3JvbGxi
YXItPndpZHRoKCk7CisgICAgICAgIHJldHVybiBMYXlvdXRTaXplKHgsIGJveC0+Ym9yZGVyVG9w
KCkpOworICAgIH0KKworICAgIGlmIChzY3JvbGxiYXIgPT0gbV9oQmFyLmdldCgpKSB7CisgICAg
ICAgIGludCB4ID0gYm94LT5ib3JkZXJMZWZ0KCk7CisgICAgICAgIGlmICghcmVuZGVyZXIoKS0+
c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQorICAgICAgICAgICAgeCArPSBtX3ZC
YXIgPyBtX3ZCYXItPndpZHRoKCkgOiByZXNpemVyQ29ybmVyUmVjdCh0aGlzLCBib3gtPmJvcmRl
ckJveFJlY3QoKSkud2lkdGgoKTsKKyAgICAgICAgcmV0dXJuIExheW91dFNpemUoeCwgYm94LT5o
ZWlnaHQoKSAtIGJveC0+Ym9yZGVyQm90dG9tKCkgLSBzY3JvbGxiYXItPmhlaWdodCgpKTsKKyAg
ICB9CisjZWxzZQogICAgIGlmIChzY3JvbGxiYXIgPT0gbV92QmFyLmdldCgpKQogICAgICAgICBy
ZXR1cm4gSW50U2l6ZShib3gtPndpZHRoKCkgLSBib3gtPmJvcmRlclJpZ2h0KCkgLSBzY3JvbGxi
YXItPndpZHRoKCksIGJveC0+Ym9yZGVyVG9wKCkpOwogCiAgICAgaWYgKHNjcm9sbGJhciA9PSBt
X2hCYXIuZ2V0KCkpCiAgICAgICAgIHJldHVybiBJbnRTaXplKGJveC0+Ym9yZGVyTGVmdCgpLCBi
b3gtPmhlaWdodCgpIC0gYm94LT5ib3JkZXJCb3R0b20oKSAtIHNjcm9sbGJhci0+aGVpZ2h0KCkp
OworI2VuZGlmCiAgICAgCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIElu
dFNpemUoKTsKQEAgLTE5MjYsMTAgKzE5NDYsMjIgQEAgdm9pZCBSZW5kZXJMYXllcjo6aW52YWxp
ZGF0ZVNjcm9sbGJhclJlYwogICAgIEludFJlY3Qgc2Nyb2xsUmVjdCA9IHJlY3Q7CiAgICAgUmVu
ZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKICAgICBBU1NFUlQoYm94KTsKKyNpZiBVU0UoUlRM
X1NDUk9MTEJBUikKKyAgICBpZiAoc2Nyb2xsYmFyID09IG1fdkJhci5nZXQoKSkgeworICAgICAg
ICBpbnQgeCA9ICFyZW5kZXJlcigpLT5zdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkg
PyBib3gtPmJvcmRlckxlZnQoKSA6IGJveC0+d2lkdGgoKSAtIGJveC0+Ym9yZGVyUmlnaHQoKSAt
IHNjcm9sbGJhci0+d2lkdGgoKTsKKyAgICAgICAgc2Nyb2xsUmVjdC5tb3ZlKHgsIGJveC0+Ym9y
ZGVyVG9wKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGludCB4ID0gYm94LT5ib3JkZXJMZWZ0
KCk7CisgICAgICAgIGlmICghcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpKQorICAgICAgICAgICAgeCArPSBtX3ZCYXIgPyBtX3ZCYXItPndpZHRoKCkgOiByZXNp
emVyQ29ybmVyUmVjdCh0aGlzLCBib3gtPmJvcmRlckJveFJlY3QoKSkud2lkdGgoKTsKKyAgICAg
ICAgc2Nyb2xsUmVjdC5tb3ZlKHgsIGJveC0+aGVpZ2h0KCkgLSBib3gtPmJvcmRlckJvdHRvbSgp
IC0gc2Nyb2xsYmFyLT5oZWlnaHQoKSk7CisgICAgfQorI2Vsc2UKICAgICBpZiAoc2Nyb2xsYmFy
ID09IG1fdkJhci5nZXQoKSkKICAgICAgICAgc2Nyb2xsUmVjdC5tb3ZlKGJveC0+d2lkdGgoKSAt
IGJveC0+Ym9yZGVyUmlnaHQoKSAtIHNjcm9sbGJhci0+d2lkdGgoKSwgYm94LT5ib3JkZXJUb3Ao
KSk7CiAgICAgZWxzZQogICAgICAgICBzY3JvbGxSZWN0Lm1vdmUoYm94LT5ib3JkZXJMZWZ0KCks
IGJveC0+aGVpZ2h0KCkgLSBib3gtPmJvcmRlckJvdHRvbSgpIC0gc2Nyb2xsYmFyLT5oZWlnaHQo
KSk7CisjZW5kaWYKICAgICByZW5kZXJlcigpLT5yZXBhaW50UmVjdGFuZ2xlKHNjcm9sbFJlY3Qp
OwogfQogCkBAIC0yMTA2LDYgKzIxMzgsMjUgQEAgdm9pZCBSZW5kZXJMYXllcjo6cG9zaXRpb25P
dmVyZmxvd0NvbnRybwogICAgIGNvbnN0IEludFJlY3QgYm9yZGVyQm94ID0gYm94LT5ib3JkZXJC
b3hSZWN0KCk7CiAgICAgY29uc3QgSW50UmVjdCYgc2Nyb2xsQ29ybmVyID0gc2Nyb2xsQ29ybmVy
UmVjdCgpOwogICAgIEludFJlY3QgYWJzQm91bmRzKGJvcmRlckJveC5sb2NhdGlvbigpICsgb2Zm
c2V0RnJvbUxheWVyLCBib3JkZXJCb3guc2l6ZSgpKTsKKyNpZiBVU0UoUlRMX1NDUk9MTEJBUikK
KyAgICBpZiAobV92QmFyKSB7CisgICAgICAgIGludCB4ID0gIXJlbmRlcmVyKCktPnN0eWxlKCkt
PmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGFic0JvdW5kcy54KCkgKyBib3gtPmJvcmRlckxl
ZnQoKSA6IGFic0JvdW5kcy5tYXhYKCkgLSBib3gtPmJvcmRlclJpZ2h0KCkgLSBtX3ZCYXItPndp
ZHRoKCk7CisgICAgICAgIG1fdkJhci0+c2V0RnJhbWVSZWN0KExheW91dFJlY3QoeCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNCb3VuZHMueSgpICsgYm94LT5i
b3JkZXJUb3AoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3ZC
YXItPndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJz
Qm91bmRzLmhlaWdodCgpIC0gKGJveC0+Ym9yZGVyVG9wKCkgKyBib3gtPmJvcmRlckJvdHRvbSgp
KSAtIHNjcm9sbENvcm5lci5oZWlnaHQoKSkpOworICAgIH0KKworICAgIGlmIChtX2hCYXIpIHsK
KyAgICAgICAgaW50IHggPSBhYnNCb3VuZHMueCgpICsgYm94LT5ib3JkZXJMZWZ0KCk7CisgICAg
ICAgIGlmICghcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQor
ICAgICAgICAgICAgeCArPSBzY3JvbGxDb3JuZXIud2lkdGgoKTsKKyAgICAgICAgbV9oQmFyLT5z
ZXRGcmFtZVJlY3QoTGF5b3V0UmVjdCh4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFic0JvdW5kcy5tYXhZKCkgLSBib3gtPmJvcmRlckJvdHRvbSgpIC0gbV9oQmFy
LT5oZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNC
b3VuZHMud2lkdGgoKSAtIChib3gtPmJvcmRlckxlZnQoKSArIGJveC0+Ym9yZGVyUmlnaHQoKSkg
LSBzY3JvbGxDb3JuZXIud2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2hCYXItPmhlaWdodCgpKSk7CisgICAgfQorI2Vsc2UKICAgICBpZiAobV92QmFy
KQogICAgICAgICBtX3ZCYXItPnNldEZyYW1lUmVjdChJbnRSZWN0KGFic0JvdW5kcy5tYXhYKCkg
LSBib3gtPmJvcmRlclJpZ2h0KCkgLSBtX3ZCYXItPndpZHRoKCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWJzQm91bmRzLnkoKSArIGJveC0+Ym9yZGVyVG9wKCksCkBA
IC0yMTE3LDYgKzIxNjgsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwb3NpdGlvbk92ZXJmbG93Q29u
dHJvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzQm91bmRzLm1heFko
KSAtIGJveC0+Ym9yZGVyQm90dG9tKCkgLSBtX2hCYXItPmhlaWdodCgpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFic0JvdW5kcy53aWR0aCgpIC0gKGJveC0+Ym9yZGVy
TGVmdCgpICsgYm94LT5ib3JkZXJSaWdodCgpKSAtIHNjcm9sbENvcm5lci53aWR0aCgpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faEJhci0+aGVpZ2h0KCkpKTsKKyNl
bmRpZgogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGlmIChHcmFwaGlj
c0xheWVyKiBsYXllciA9IGxheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpKSB7CkBAIC0yNTEy
LDEwICsyNTY0LDE4IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmhpdFRlc3RPdmVyZmxvd0NvbnRyb2wK
ICAgICBpbnQgcmVzaXplQ29udHJvbFNpemUgPSBtYXgocmVzaXplQ29udHJvbFJlY3QuaGVpZ2h0
KCksIDApOwogCiAgICAgaWYgKG1fdkJhcikgeworI2lmIFVTRShSVExfU0NST0xMQkFSKQorICAg
ICAgICBpbnQgeCA9ICFyZW5kZXJlcigpLT5zdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KCkgPyBib3gtPmJvcmRlckxlZnQoKSA6IGJveC0+d2lkdGgoKSAtIGJveC0+Ym9yZGVyUmlnaHQo
KSAtIG1fdkJhci0+d2lkdGgoKTsKKyAgICAgICAgTGF5b3V0UmVjdCB2QmFyUmVjdCh4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJveC0+Ym9yZGVyVG9wKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV92QmFyLT53aWR0aCgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJveC0+aGVpZ2h0KCkgLSAoYm94LT5ib3JkZXJUb3AoKSArIGJveC0+Ym9yZGVyQm90dG9t
KCkpIC0gKG1faEJhciA/IG1faEJhci0+aGVpZ2h0KCkgOiByZXNpemVDb250cm9sU2l6ZSkpOwor
I2Vsc2UKICAgICAgICAgTGF5b3V0UmVjdCB2QmFyUmVjdChib3gtPndpZHRoKCkgLSBib3gtPmJv
cmRlclJpZ2h0KCkgLSBtX3ZCYXItPndpZHRoKCksIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJveC0+Ym9yZGVyVG9wKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92QmFy
LT53aWR0aCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveC0+aGVpZ2h0KCkgLSAo
Ym94LT5ib3JkZXJUb3AoKSArIGJveC0+Ym9yZGVyQm90dG9tKCkpIC0gKG1faEJhciA/IG1faEJh
ci0+aGVpZ2h0KCkgOiByZXNpemVDb250cm9sU2l6ZSkpOworI2VuZGlmCiAgICAgICAgIGlmICh2
QmFyUmVjdC5jb250YWlucyhsb2NhbFBvaW50KSkgewogICAgICAgICAgICAgcmVzdWx0LnNldFNj
cm9sbGJhcihtX3ZCYXIuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yNTI0
LDEwICsyNTg0LDIwIEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmhpdFRlc3RPdmVyZmxvd0NvbnRyb2wK
IAogICAgIHJlc2l6ZUNvbnRyb2xTaXplID0gbWF4KHJlc2l6ZUNvbnRyb2xSZWN0LndpZHRoKCks
IDApOwogICAgIGlmIChtX2hCYXIpIHsKKyNpZiBVU0UoUlRMX1NDUk9MTEJBUikKKyAgICAgICAg
aW50IHggPSBib3gtPmJvcmRlckxlZnQoKTsKKyAgICAgICAgaWYgKCFyZW5kZXJlcigpLT5zdHls
ZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCisgICAgICAgICAgICB4ICs9IG1fdkJhciA/
IG1fdkJhci0+d2lkdGgoKSA6IHJlc2l6ZUNvbnRyb2xTaXplOworICAgICAgICBMYXlvdXRSZWN0
IGhCYXJSZWN0KHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm94LT5oZWlnaHQoKSAt
IGJveC0+Ym9yZGVyQm90dG9tKCkgLSBtX2hCYXItPmhlaWdodCgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJveC0+d2lkdGgoKSAtIChib3gtPmJvcmRlckxlZnQoKSArIGJveC0+Ym9y
ZGVyUmlnaHQoKSkgLSAobV92QmFyID8gbV92QmFyLT53aWR0aCgpIDogcmVzaXplQ29udHJvbFNp
emUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faEJhci0+aGVpZ2h0KCkpOworI2Vs
c2UKICAgICAgICAgTGF5b3V0UmVjdCBoQmFyUmVjdChib3gtPmJvcmRlckxlZnQoKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib3gtPmhlaWdodCgpIC0gYm94LT5ib3JkZXJCb3R0b20o
KSAtIG1faEJhci0+aGVpZ2h0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm94LT53
aWR0aCgpIC0gKGJveC0+Ym9yZGVyTGVmdCgpICsgYm94LT5ib3JkZXJSaWdodCgpKSAtIChtX3ZC
YXIgPyBtX3ZCYXItPndpZHRoKCkgOiByZXNpemVDb250cm9sU2l6ZSksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9oQmFyLT5oZWlnaHQoKSk7CisjZW5kaWYKICAgICAgICAgaWYgKGhC
YXJSZWN0LmNvbnRhaW5zKGxvY2FsUG9pbnQpKSB7CiAgICAgICAgICAgICByZXN1bHQuc2V0U2Ny
b2xsYmFyKG1faEJhci5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTU0MCkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEt
MTEtMDggIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVu
ZGVyIG92ZXJmbG93IGNvbnRyb2xzIG9mIGFuIFJUTCBlbGVtZW50IHRvIGl0cyBsZWZ0LXNpZGUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDYyMwor
CisgICAgICAgIFRoaXMgY2hhbmdlIHNldHMgYSBuZXcgZmxhZyBXVEZfVVNFX1JUTF9TQ1JPTExC
QVIgb24gQ2hyb21pdW0gc28gd2UgY2FuCisgICAgICAgIHJlbmRlciB0aGUgdmVydGljYWwgc2Ny
b2xsYmFycyBhbmQgcmVzaXplcnMgb2YgUlRMIGVsZW1lbnRzIHRvIHRoZWlyCisgICAgICAgIGxl
ZnQgc2lkZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGZlYXR1cmVzLmd5cGk6IFNldCBXVEZfVVNFX1JUTF9TQ1JPTExCQVIgdG8gMS4KKwogMjAx
MS0xMS0wNyAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
ZXJ0IHBsYXRmb3JtIGFuZCBzY3JvbGxpbmcgdG8gaW50cwpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9mZWF0dXJlcy5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vZmVhdHVyZXMuZ3lwaQkocmV2aXNpb24gOTk1MTQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL2ZlYXR1cmVzLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw2ICsxMDEsNyBAQAogICAg
ICAgIyBXZSBjYW4ndCBkZWZpbmUgaXQgaGVyZSBiZWNhdXNlIGl0IHNob3VsZCBiZSBwcmVzZW50
IG9ubHkKICAgICAgICMgaW4gRGVidWcgb3IgcmVsZWFzZV92YWxncmluZF9idWlsZD0xIGJ1aWxk
cy4KICAgICAgICdXVEZfVVNFX09QRU5UWVBFX1NBTklUSVpFUj0xJywKKyAgICAgICdXVEZfVVNF
X1JUTF9TQ1JPTExCQVI9MScsCiAgICAgICAnV1RGX1VTRV9TS0lBX1RFWFQ9PChlbmFibGVfc2tp
YV90ZXh0KScsCiAgICAgICAnV1RGX1VTRV9XRUJQPTEnLAogICAgICAgJ1dURl9VU0VfV0VCS0lU
X0lNQUdFX0RFQ09ERVJTPTEnLApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTk1NDApCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0xMS0w
OCAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5kZXIg
b3ZlcmZsb3cgY29udHJvbHMgb2YgYW4gUlRMIGVsZW1lbnQgdG8gaXRzIGxlZnQtc2lkZS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NjIzCisKKyAg
ICAgICAgVGhpcyBjaGFuZ2UgYWRkcyBhIG5ldyBmbGFnIFdURl9VU0VfUlRMX1NDUk9MTEJBUiBh
bmQgcmVuZGVyIHRoZQorICAgICAgICB2ZXJ0aWNhbCBzY3JvbGxiYXJzIGFuZCByZXNpemVycyBv
ZiBSVEwgZWxlbWVudHMgdG8gdGhlaXIgbGVmdCBzaWRlIGlmCisgICAgICAgIHRoaXMgbmV3IGZs
YWcgaXMgZW5hYmxlZC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3J0bC1zY3JvbGxiYXItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50
cy9ydGwtc2Nyb2xsYmFyLmh0bWw6IEFkZGVkLgorCiAyMDExLTExLTA4ICBOaWtvbGFzIFppbW1l
cm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFN3aXRjaCBTVkdJbWFnZSBj
YWNoZSB0byBzdG9yZSBJbWFnZUJ1ZmZlcnMgaW5zdGVhZCBvZiB3aG9sZSBTVkdJbWFnZXMsIGlu
Y2x1ZGluZyBhIERPTS9SZW5kZXIgdHJlZQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vZmFzdC9ldmVudHMvcnRsLXNjcm9sbGJhci1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvcnRsLXNjcm9sbGJh
ci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9mYXN0L2V2ZW50cy9ydGwtc2Nyb2xsYmFyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMCBAQAorVGVzdCB0aGF0IHdlIGNhbiBzY3JvbGwgZG93biBhbiBSVEwgZWxl
bWVudCB3aXRoIGl0cyBsZWZ0LXNpZGUgc2Nyb2xsYmFyLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvdmVyZmxvdycpLnNjcm9sbFRvcCA+
IHNjcm9sbFRvcCBpcyB0cnVlCisKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2Zhc3QvZXZlbnRzL3J0bC1zY3JvbGxiYXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy9ydGwtc2Nyb2xsYmFyLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy9ydGwt
c2Nyb2xsYmFyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDMgQEAKKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgc3R5bGU9Im1hcmdpbjowIj4KKzxkaXYg
aWQ9Im92ZXJmbG93IiBkaXI9InJ0bCIgc3R5bGU9ImJvcmRlcjoycHggc29saWQgYmxhY2s7b3Zl
cmZsb3c6YXV0bztoZWlnaHQ6NDAwcHg7d2lkdGg6NDAwcHg7IHBvc2l0aW9uOmFic29sdXRlOyI+
Cis8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOnJlZDtoZWlnaHQ6NzIwcHgiPjwvZGl2Pgor
PGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjpncmVlbjtoZWlnaHQ6MTYwMHB4Ij48L2Rpdj4K
KzwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCB3ZSBjYW4gc2Nyb2xs
IGRvd24gYW4gUlRMIGVsZW1lbnQgd2l0aCBpdHMgbGVmdC1zaWRlIHNjcm9sbGJhci4nKTsKKwor
Ly8gU2F2ZSB0aGUgdmVydGljYWwtc2Nyb2xsIG9mZnNldCBvZiB0aGUgYWJvdmUgPGRpdj4gZWxl
bWVudCBiZWZvcmUgc2VuZGluZyBhCisvLyBjbGljayBldmVudC4gSWYgd2Ugc3VjY2Vzc2Z1bGx5
IHNjcm9sbCBkb3duIHRoZSBlbGVtZW50LCB0aGlzIG9mZnNldCBzaG91bGQKKy8vIGJlY29tZSBn
cmVhdGhlciB0aGFuIHRoaXMgdmFsdWUuCit2YXIgc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ292ZXJmbG93Jykuc2Nyb2xsVG9wOworCitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKwor
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIC8vIFNlbmQgYSBjbGljayBldmVudCB0byB0
aGUgc2Nyb2xsYmFyIHRyYWNrIG9mIHRoZSBhYm92ZSA8ZGl2PiBlbGVtZW50LgorICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKDEwLCAzMDApOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigp
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKworICAgIC8vIFdhaXQgdW50aWwgd2UgZmlu
aXNoIHJlbmRlcmluZyB0aGUgZWxlbWVudC4KKyAgICBzZXRUaW1lb3V0KGZpbmlzaGVkLCAxMDAw
KTsKK30KKworZnVuY3Rpb24gZmluaXNoZWQoKQoreworICAgIC8vIFZlcmlmeSB0aGUgdmVydGlj
YWwtc2Nyb2xsIG9mZnNldCBiZWNvbWVzIGdyZWF0ZXIgdGhhbiB0aGUgc2F2ZWQgb25lLgorICAg
IHNob3VsZEJlVHJ1ZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdvdmVyZmxvd1wnKS5zY3Jv
bGxUb3AgPiBzY3JvbGxUb3AnKTsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="112565"
          type_id="1"
          status="-"
          setter="eric"
    />
    <flag name="commit-queue"
          id="112587"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121427</attachid>
            <date>2012-01-06 05:14:03 -0800</date>
            <delta_ts>2012-01-12 21:55:29 -0800</delta_ts>
            <desc>Patch v8 (refactored)</desc>
            <filename>issue54623-patch8.txt</filename>
            <type>text/plain</type>
            <size>15076</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNDI4NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAxLTA2ICBIaXJvbm9y
aSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbmRlciBvdmVyZmxvdyBj
b250cm9scyBvZiBhbiBSVEwgZWxlbWVudCB0byBpdHMgbGVmdC1zaWRlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ2MjMKKworICAgICAgICBUaGlz
IGNoYW5nZSBhZGRzIGEgbmV3IGZsYWcgV1RGX1VTRV9SVExfU0NST0xMQkFSIGFuZCByZW5kZXIg
dGhlCisgICAgICAgIHZlcnRpY2FsIHNjcm9sbGJhcnMgYW5kIHJlc2l6ZXJzIG9mIFJUTCBlbGVt
ZW50cyB0byB0aGVpciBsZWZ0IHNpZGUgaWYKKyAgICAgICAgdGhpcyBuZXcgZmxhZyBpcyBlbmFi
bGVkLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
c3Q6IHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3J0bC1zY3JvbGxiYXIuaHRtbAorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjphZGRPdmVyZmxvd0Zyb21Qb3NpdGlvbmVkT2JqZWN0cyk6IE1vdmUgY2hpbGQg
ZWxlbWVudHMgcmlnaHQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZGV0ZXJtaW5l
TG9naWNhbExlZnRQb3NpdGlvbkZvckNoaWxkKTogZGl0dG8uCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om92ZXJmbG93Q2xp
cFJlY3QpOiBNb3ZlIHRoZSBjb250ZW50IHJlY3RhbmdsZSByaWdodC4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cnRsQXdhcmVDb3JuZXJY
KTogQWRkZWQgYSBmdW5jdGlvbiB0aGF0IGNhbGN1bGF0ZXMgdGhlIFggcG9zaXRpb24gb2YgYSBy
ZXNpemVyLgorICAgICAgICAoV2ViQ29yZTo6Y29ybmVyUmVjdCk6IFVzZSBydGxBd2FyZUNvcm5l
clggdG8gbW92ZSBhIHJlc2l6ZXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cnRs
QXdhcmVWZXJ0aWNhbFNjcm9sbGJhclgpOiBBZGRlZCBhIGZ1bmN0aW9uIHRoYXQgY2FsY3VsYXRl
cyB0aGUKKyAgICAgICAgWCBwb3NpdGlvbiBvZiBhIHZlcnRpY2FsIHNjcm9sbGJhci4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpydGxBd2FyZUhvcml6b250YWxTY3JvbGxiYXJYKTog
QWRkZWQgYSBmdW5jdGlvbiB0aGF0IGNhbGN1bGF0ZXMKKyAgICAgICAgdGhlIFggcG9zaXRpb24g
b2YgYSBob3Jpem9udGFsIHNjcm9sbGJhci4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpzY3JvbGxiYXJPZmZzZXQpOiBSZW5kZXIgYSB2ZXJ0aWNhbCBzY3JvbGxiYXIgdG8gdGhlIGxl
ZnQgc2lkZQorICAgICAgICBhbmQgbW92ZSBhIGhvcml6b250YWwgc2Nyb2xsYmFyIHJpZ2h0IGJ5
IHRoZSB3aWR0aCBvZiB0aGUgdmVydGljYWwgc2Nyb2xsYmFyLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OmludmFsaWRhdGVTY3JvbGxiYXJSZWN0KTogZGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6cG9zaXRpb25PdmVyZmxvd0NvbnRyb2xzKTogZGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdE92ZXJmbG93Q29udHJvbHMpOiBk
aXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKwogMjAxMi0wMS0wNiAg
VG9yIEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CiAKICAgICAgICAg
W1F0XSBNb3ZlIGxpc3Rpbmcgb2YgaW5jbHVkZSBwYXRocyBhbmQgbGlicyB0byBwcmkgZmlsZXMg
aW4gc291cmNlcwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CShyZXZpc2lvbiAxMDQyNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDkxLDggKzE0OTEsMTcgQEAgdm9pZCBSZW5kZXJC
bG9jazo6YWRkT3ZlcmZsb3dGcm9tUG9zaXRpbwogICAgICAgICBwb3NpdGlvbmVkT2JqZWN0ID0g
Kml0OwogICAgICAgICAKICAgICAgICAgLy8gRml4ZWQgcG9zaXRpb25lZCBlbGVtZW50cyBkb24n
dCBjb250cmlidXRlIHRvIGxheW91dCBvdmVyZmxvdywgc2luY2UgdGhleSBkb24ndCBzY3JvbGwg
d2l0aCB0aGUgY29udGVudC4KKyNpZiBVU0UoUlRMX1NDUk9MTEJBUikKKyAgICAgICAgaWYgKHBv
c2l0aW9uZWRPYmplY3QtPnN0eWxlKCktPnBvc2l0aW9uKCkgIT0gRml4ZWRQb3NpdGlvbikgewor
ICAgICAgICAgICAgaW50IHggPSBwb3NpdGlvbmVkT2JqZWN0LT54KCk7CisgICAgICAgICAgICBp
ZiAoIXN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKKyAgICAgICAgICAgICAgICB4
IC09IHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoKTsKKyAgICAgICAgICAgIGFkZE92ZXJmbG93RnJv
bUNoaWxkKHBvc2l0aW9uZWRPYmplY3QsIEludFNpemUoeCwgcG9zaXRpb25lZE9iamVjdC0+eSgp
KSk7CisgICAgICAgIH0KKyNlbHNlCiAgICAgICAgIGlmIChwb3NpdGlvbmVkT2JqZWN0LT5zdHls
ZSgpLT5wb3NpdGlvbigpICE9IEZpeGVkUG9zaXRpb24pCiAgICAgICAgICAgICBhZGRPdmVyZmxv
d0Zyb21DaGlsZChwb3NpdGlvbmVkT2JqZWN0KTsKKyNlbmRpZgogICAgIH0KIH0KIApAQCAtMTg4
NSw2ICsxODk0LDEwIEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmNvbXB1dGVTdGFydFBvc2kK
IHZvaWQgUmVuZGVyQmxvY2s6OmRldGVybWluZUxvZ2ljYWxMZWZ0UG9zaXRpb25Gb3JDaGlsZChS
ZW5kZXJCb3gqIGNoaWxkKQogewogICAgIExheW91dFVuaXQgc3RhcnRQb3NpdGlvbiA9IGJvcmRl
clN0YXJ0KCkgKyBwYWRkaW5nU3RhcnQoKTsKKyNpZiBVU0UoUlRMX1NDUk9MTEJBUikKKyAgICBp
ZiAoIXN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKKyAgICAgICAgc3RhcnRQb3Np
dGlvbiAtPSB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKCk7CisjZW5kaWYKICAgICBMYXlvdXRVbml0
IHRvdGFsQXZhaWxhYmxlTG9naWNhbFdpZHRoID0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0
aCgpICsgYXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7CiAKICAgICAvLyBBZGQgaW4gb3VyIHN0YXJ0
IG1hcmdpbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZp
c2lvbiAxMDQyNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTI0MSw4ICsxMjQxLDE2IEBAIExheW91dFJlY3QgUmVuZGVyQm94
OjpvdmVyZmxvd0NsaXBSZWN0KGMKICAgICBjbGlwUmVjdC5zZXRTaXplKGNsaXBSZWN0LnNpemUo
KSAtIExheW91dFNpemUoYm9yZGVyTGVmdCgpICsgYm9yZGVyUmlnaHQoKSwgYm9yZGVyVG9wKCkg
KyBib3JkZXJCb3R0b20oKSkpOwogCiAgICAgLy8gU3VidHJhY3Qgb3V0IHNjcm9sbGJhcnMgaWYg
d2UgaGF2ZSB0aGVtLgorI2lmIFVTRShSVExfU0NST0xMQkFSKQorICAgICBpZiAobGF5ZXIoKSkg
eworICAgICAgICBpZiAoIXN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKKyAgICAg
ICAgICAgIGNsaXBSZWN0Lm1vdmUobGF5ZXIoKS0+dmVydGljYWxTY3JvbGxiYXJXaWR0aChyZWxl
dmFuY3kpLCAwKTsKKyAgICAgICAgY2xpcFJlY3QuY29udHJhY3QobGF5ZXIoKS0+dmVydGljYWxT
Y3JvbGxiYXJXaWR0aChyZWxldmFuY3kpLCBsYXllcigpLT5ob3Jpem9udGFsU2Nyb2xsYmFySGVp
Z2h0KHJlbGV2YW5jeSkpOworICAgICB9CisjZWxzZQogICAgIGlmIChsYXllcigpKQogICAgICAg
ICBjbGlwUmVjdC5jb250cmFjdChsYXllcigpLT52ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKHJlbGV2
YW5jeSksIGxheWVyKCktPmhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQocmVsZXZhbmN5KSk7Cisj
ZW5kaWYKIAogICAgIHJldHVybiBjbGlwUmVjdDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gMTA0MjU0KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5OCw2ICsx
Nzk4LDE1IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmlzQWN0aXZlKCkgY29uc3QKICAgICByZXR1cm4g
cGFnZSAmJiBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+aXNBY3RpdmUoKTsKIH0KIAorc3RhdGlj
IExheW91dFVuaXQgcnRsQXdhcmVDb3JuZXJYKGNvbnN0IFJlbmRlckxheWVyKiBsYXllciwgaW50
IG1pblgsIGludCBtYXhYLCBpbnQgdGhpY2tuZXNzKQoreworI2lmIFVTRShSVExfU0NST0xMQkFS
KQorICAgIGlmICghbGF5ZXItPnJlbmRlcmVyKCktPnN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJl
Y3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIG1pblggKyBsYXllci0+cmVuZGVyZXIoKS0+c3R5bGUo
KS0+Ym9yZGVyTGVmdFdpZHRoKCk7CisjZW5kaWYKKyAgICByZXR1cm4gbWF4WCAtIHRoaWNrbmVz
cyAtIGxheWVyLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5ib3JkZXJSaWdodFdpZHRoKCk7Cit9CisK
IHN0YXRpYyBJbnRSZWN0IGNvcm5lclJlY3QoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyLCBjb25z
dCBJbnRSZWN0JiBib3VuZHMpCiB7CiAgICAgaW50IGhvcml6b250YWxUaGlja25lc3M7CkBAIC0x
ODE3LDcgKzE4MjYsNyBAQCBzdGF0aWMgSW50UmVjdCBjb3JuZXJSZWN0KGNvbnN0IFJlbmRlckxh
CiAgICAgICAgIGhvcml6b250YWxUaGlja25lc3MgPSBsYXllci0+dmVydGljYWxTY3JvbGxiYXIo
KS0+d2lkdGgoKTsKICAgICAgICAgdmVydGljYWxUaGlja25lc3MgPSBsYXllci0+aG9yaXpvbnRh
bFNjcm9sbGJhcigpLT5oZWlnaHQoKTsKICAgICB9Ci0gICAgcmV0dXJuIEludFJlY3QoYm91bmRz
Lm1heFgoKSAtIGhvcml6b250YWxUaGlja25lc3MgLSBsYXllci0+cmVuZGVyZXIoKS0+c3R5bGUo
KS0+Ym9yZGVyUmlnaHRXaWR0aCgpLCAKKyAgICByZXR1cm4gSW50UmVjdChydGxBd2FyZUNvcm5l
clgobGF5ZXIsIGJvdW5kcy54KCksIGJvdW5kcy5tYXhYKCksIGhvcml6b250YWxUaGlja25lc3Mp
LAogICAgICAgICAgICAgICAgICAgIGJvdW5kcy5tYXhZKCkgLSB2ZXJ0aWNhbFRoaWNrbmVzcyAt
IGxheWVyLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5ib3JkZXJCb3R0b21XaWR0aCgpLAogICAgICAg
ICAgICAgICAgICAgIGhvcml6b250YWxUaGlja25lc3MsIHZlcnRpY2FsVGhpY2tuZXNzKTsKIH0K
QEAgLTE5NDAsMTUgKzE5NDksMzYgQEAgSW50UG9pbnQgUmVuZGVyTGF5ZXI6OmN1cnJlbnRNb3Vz
ZVBvc2l0aQogICAgIHJldHVybiByZW5kZXJlcigpLT5mcmFtZSgpID8gcmVuZGVyZXIoKS0+ZnJh
bWUoKS0+ZXZlbnRIYW5kbGVyKCktPmN1cnJlbnRNb3VzZVBvc2l0aW9uKCkgOiBJbnRQb2ludCgp
OwogfQogCitMYXlvdXRVbml0IFJlbmRlckxheWVyOjpydGxBd2FyZVZlcnRpY2FsU2Nyb2xsYmFy
WChpbnQgbWluWCwgaW50IG1heFgpIGNvbnN0Cit7CisgICAgY29uc3QgUmVuZGVyQm94KiBib3gg
PSByZW5kZXJCb3goKTsKKyNpZiBVU0UoUlRMX1NDUk9MTEJBUikKKyAgICBpZiAoIXJlbmRlcmVy
KCktPnN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIG1p
blggKyBib3gtPmJvcmRlckxlZnQoKTsKKyNlbmRpZgorICAgIHJldHVybiBtYXhYIC0gYm94LT5i
b3JkZXJSaWdodCgpIC0gbV92QmFyLT53aWR0aCgpOworfQorCitMYXlvdXRVbml0IFJlbmRlckxh
eWVyOjpydGxBd2FyZUhvcml6b250YWxTY3JvbGxiYXJYKGludCBtaW5YKSBjb25zdAoreworICAg
IGNvbnN0IFJlbmRlckJveCogYm94ID0gcmVuZGVyQm94KCk7CisgICAgaW50IHggPSBtaW5YICsg
Ym94LT5ib3JkZXJMZWZ0KCk7CisjaWYgVVNFKFJUTF9TQ1JPTExCQVIpCisgICAgaWYgKCFyZW5k
ZXJlcigpLT5zdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCisgICAgICAgIHggKz0g
bV92QmFyID8gbV92QmFyLT53aWR0aCgpIDogcmVzaXplckNvcm5lclJlY3QodGhpcywgYm94LT5i
b3JkZXJCb3hSZWN0KCkpLndpZHRoKCk7CisjZW5kaWYKKyAgICByZXR1cm4geDsKK30KKwogSW50
U2l6ZSBSZW5kZXJMYXllcjo6c2Nyb2xsYmFyT2Zmc2V0KGNvbnN0IFNjcm9sbGJhciogc2Nyb2xs
YmFyKSBjb25zdAogewogICAgIFJlbmRlckJveCogYm94ID0gcmVuZGVyQm94KCk7CiAKICAgICBp
ZiAoc2Nyb2xsYmFyID09IG1fdkJhci5nZXQoKSkKLSAgICAgICAgcmV0dXJuIEludFNpemUoYm94
LT53aWR0aCgpIC0gYm94LT5ib3JkZXJSaWdodCgpIC0gc2Nyb2xsYmFyLT53aWR0aCgpLCBib3gt
PmJvcmRlclRvcCgpKTsKKyAgICAgICAgcmV0dXJuIEludFNpemUocnRsQXdhcmVWZXJ0aWNhbFNj
cm9sbGJhclgoMCwgYm94LT53aWR0aCgpKSwgYm94LT5ib3JkZXJUb3AoKSk7CiAKICAgICBpZiAo
c2Nyb2xsYmFyID09IG1faEJhci5nZXQoKSkKLSAgICAgICAgcmV0dXJuIEludFNpemUoYm94LT5i
b3JkZXJMZWZ0KCksIGJveC0+aGVpZ2h0KCkgLSBib3gtPmJvcmRlckJvdHRvbSgpIC0gc2Nyb2xs
YmFyLT5oZWlnaHQoKSk7CisgICAgICAgIHJldHVybiBJbnRTaXplKHJ0bEF3YXJlSG9yaXpvbnRh
bFNjcm9sbGJhclgoMCksIGJveC0+aGVpZ2h0KCkgLSBib3gtPmJvcmRlckJvdHRvbSgpIC0gc2Ny
b2xsYmFyLT5oZWlnaHQoKSk7CiAgICAgCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIEludFNpemUoKTsKQEAgLTE5NzMsOSArMjAwMyw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6
OmludmFsaWRhdGVTY3JvbGxiYXJSZWMKICAgICBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgp
OwogICAgIEFTU0VSVChib3gpOwogICAgIGlmIChzY3JvbGxiYXIgPT0gbV92QmFyLmdldCgpKQot
ICAgICAgICBzY3JvbGxSZWN0Lm1vdmUoYm94LT53aWR0aCgpIC0gYm94LT5ib3JkZXJSaWdodCgp
IC0gc2Nyb2xsYmFyLT53aWR0aCgpLCBib3gtPmJvcmRlclRvcCgpKTsKKyAgICAgICAgc2Nyb2xs
UmVjdC5tb3ZlKHJ0bEF3YXJlVmVydGljYWxTY3JvbGxiYXJYKDAsIGJveC0+d2lkdGgoKSksIGJv
eC0+Ym9yZGVyVG9wKCkpOwogICAgIGVsc2UKLSAgICAgICAgc2Nyb2xsUmVjdC5tb3ZlKGJveC0+
Ym9yZGVyTGVmdCgpLCBib3gtPmhlaWdodCgpIC0gYm94LT5ib3JkZXJCb3R0b20oKSAtIHNjcm9s
bGJhci0+aGVpZ2h0KCkpOworICAgICAgICBzY3JvbGxSZWN0Lm1vdmUocnRsQXdhcmVIb3Jpem9u
dGFsU2Nyb2xsYmFyWCgwKSwgYm94LT5oZWlnaHQoKSAtIGJveC0+Ym9yZGVyQm90dG9tKCkgLSBz
Y3JvbGxiYXItPmhlaWdodCgpKTsKICAgICByZW5kZXJlcigpLT5yZXBhaW50UmVjdGFuZ2xlKHNj
cm9sbFJlY3QpOwogfQogCkBAIC0yMTUzLDEzICsyMTgzLDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXI6
OnBvc2l0aW9uT3ZlcmZsb3dDb250cm8KICAgICBjb25zdCBJbnRSZWN0JiBzY3JvbGxDb3JuZXIg
PSBzY3JvbGxDb3JuZXJSZWN0KCk7CiAgICAgSW50UmVjdCBhYnNCb3VuZHMoYm9yZGVyQm94Lmxv
Y2F0aW9uKCkgKyBvZmZzZXRGcm9tTGF5ZXIsIGJvcmRlckJveC5zaXplKCkpOwogICAgIGlmICht
X3ZCYXIpCi0gICAgICAgIG1fdkJhci0+c2V0RnJhbWVSZWN0KEludFJlY3QoYWJzQm91bmRzLm1h
eFgoKSAtIGJveC0+Ym9yZGVyUmlnaHQoKSAtIG1fdkJhci0+d2lkdGgoKSwKKyAgICAgICAgbV92
QmFyLT5zZXRGcmFtZVJlY3QoSW50UmVjdChydGxBd2FyZVZlcnRpY2FsU2Nyb2xsYmFyWChhYnNC
b3VuZHMueCgpLCBhYnNCb3VuZHMubWF4WCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhYnNCb3VuZHMueSgpICsgYm94LT5ib3JkZXJUb3AoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX3ZCYXItPndpZHRoKCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWJzQm91bmRzLmhlaWdodCgpIC0gKGJveC0+Ym9yZGVy
VG9wKCkgKyBib3gtPmJvcmRlckJvdHRvbSgpKSAtIHNjcm9sbENvcm5lci5oZWlnaHQoKSkpOwog
CiAgICAgaWYgKG1faEJhcikKLSAgICAgICAgbV9oQmFyLT5zZXRGcmFtZVJlY3QoSW50UmVjdChh
YnNCb3VuZHMueCgpICsgYm94LT5ib3JkZXJMZWZ0KCksCisgICAgICAgIG1faEJhci0+c2V0RnJh
bWVSZWN0KEludFJlY3QocnRsQXdhcmVIb3Jpem9udGFsU2Nyb2xsYmFyWChhYnNCb3VuZHMueCgp
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNCb3VuZHMubWF4WSgp
IC0gYm94LT5ib3JkZXJCb3R0b20oKSAtIG1faEJhci0+aGVpZ2h0KCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWJzQm91bmRzLndpZHRoKCkgLSAoYm94LT5ib3JkZXJM
ZWZ0KCkgKyBib3gtPmJvcmRlclJpZ2h0KCkpIC0gc2Nyb2xsQ29ybmVyLndpZHRoKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9oQmFyLT5oZWlnaHQoKSkpOwpAQCAt
MjU1OCw3ICsyNTg4LDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6aGl0VGVzdE92ZXJmbG93Q29udHJv
bAogICAgIGludCByZXNpemVDb250cm9sU2l6ZSA9IG1heChyZXNpemVDb250cm9sUmVjdC5oZWln
aHQoKSwgMCk7CiAKICAgICBpZiAobV92QmFyKSB7Ci0gICAgICAgIExheW91dFJlY3QgdkJhclJl
Y3QoYm94LT53aWR0aCgpIC0gYm94LT5ib3JkZXJSaWdodCgpIC0gbV92QmFyLT53aWR0aCgpLCAK
KyAgICAgICAgTGF5b3V0UmVjdCB2QmFyUmVjdChydGxBd2FyZVZlcnRpY2FsU2Nyb2xsYmFyWCgw
LCBib3gtPndpZHRoKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveC0+Ym9yZGVy
VG9wKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92QmFyLT53aWR0aCgpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJveC0+aGVpZ2h0KCkgLSAoYm94LT5ib3JkZXJUb3Ao
KSArIGJveC0+Ym9yZGVyQm90dG9tKCkpIC0gKG1faEJhciA/IG1faEJhci0+aGVpZ2h0KCkgOiBy
ZXNpemVDb250cm9sU2l6ZSkpOwpAQCAtMjU3MCw3ICsyNjAwLDcgQEAgYm9vbCBSZW5kZXJMYXll
cjo6aGl0VGVzdE92ZXJmbG93Q29udHJvbAogCiAgICAgcmVzaXplQ29udHJvbFNpemUgPSBtYXgo
cmVzaXplQ29udHJvbFJlY3Qud2lkdGgoKSwgMCk7CiAgICAgaWYgKG1faEJhcikgewotICAgICAg
ICBMYXlvdXRSZWN0IGhCYXJSZWN0KGJveC0+Ym9yZGVyTGVmdCgpLAorICAgICAgICBMYXlvdXRS
ZWN0IGhCYXJSZWN0KHJ0bEF3YXJlSG9yaXpvbnRhbFNjcm9sbGJhclgoMCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm94LT5oZWlnaHQoKSAtIGJveC0+Ym9yZGVyQm90dG9tKCkgLSBt
X2hCYXItPmhlaWdodCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveC0+d2lkdGgo
KSAtIChib3gtPmJvcmRlckxlZnQoKSArIGJveC0+Ym9yZGVyUmlnaHQoKSkgLSAobV92QmFyID8g
bV92QmFyLT53aWR0aCgpIDogcmVzaXplQ29udHJvbFNpemUpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1faEJhci0+aGVpZ2h0KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmgJKHJldmlzaW9uIDEwNDI1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC03NDUsNiArNzQ1LDkgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIDsKICAgICB9CiAKKyAgICBMYXlvdXRVbml0IHJ0bEF3YXJlVmVy
dGljYWxTY3JvbGxiYXJYKGludCBtaW5YLCBpbnQgbWF4WCkgY29uc3Q7CisgICAgTGF5b3V0VW5p
dCBydGxBd2FyZUhvcml6b250YWxTY3JvbGxiYXJYKGludCBtaW5YKSBjb25zdDsKKwogcHJvdGVj
dGVkOgogICAgIC8vIFRoZSBiaXRmaWVsZHMgYXJlIHVwIGhlcmUgc28gdGhleSB3aWxsIGZhbGwg
aW50byB0aGUgcGFkZGluZyBmcm9tIFNjcm9sbGFibGVBcmVhIG9uIDY0LWJpdC4KIApJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNDI4NSkKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTItMDEtMDYgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmVuZGVyIG92ZXJmbG93IGNvbnRyb2xzIG9mIGFuIFJUTCBlbGVtZW50IHRvIGl0cyBsZWZ0LXNp
ZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDYy
MworCisgICAgICAgIFRoaXMgY2hhbmdlIHNldHMgYSBuZXcgZmxhZyBXVEZfVVNFX1JUTF9TQ1JP
TExCQVIgb24gQ2hyb21pdW0gc28gd2UgY2FuCisgICAgICAgIHJlbmRlciB0aGUgdmVydGljYWwg
c2Nyb2xsYmFycyBhbmQgcmVzaXplcnMgb2YgUlRMIGVsZW1lbnRzIHRvIHRoZWlyCisgICAgICAg
IGxlZnQgc2lkZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGZlYXR1cmVzLmd5cGk6IFNldCBXVEZfVVNFX1JUTF9TQ1JPTExCQVIgdG8gMS4KKwog
MjAxMi0wMS0wNSAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBDaGVjayB3aGV0aGVyIGEgV2ViVmlldyBleGlzdHMgYmVmb3JlIGFjY2Vzc2luZyBpdCBp
biBTdG9yYWdlQXJlYVByb3h5LiBUaGlzIGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgY2FzZSwgZS5n
LiBmb3IgZGV0YWNoZWQgaWZyYW1lcy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVh
dHVyZXMuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVz
Lmd5cGkJKHJldmlzaW9uIDEwNDI1NCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVy
ZXMuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSw3IEBACiAgICAgICAjIFdlIGNh
bid0IGRlZmluZSBpdCBoZXJlIGJlY2F1c2UgaXQgc2hvdWxkIGJlIHByZXNlbnQgb25seQogICAg
ICAgIyBpbiBEZWJ1ZyBvciByZWxlYXNlX3ZhbGdyaW5kX2J1aWxkPTEgYnVpbGRzLgogICAgICAg
J1dURl9VU0VfT1BFTlRZUEVfU0FOSVRJWkVSPTEnLAorICAgICAgJ1dURl9VU0VfUlRMX1NDUk9M
TEJBUj0xJywKICAgICAgICdXVEZfVVNFX1NLSUFfVEVYVD08KGVuYWJsZV9za2lhX3RleHQpJywK
ICAgICAgICdXVEZfVVNFX1dFQlA9MScsCiAgICAgICAnV1RGX1VTRV9XRUJLSVRfSU1BR0VfREVD
T0RFUlM9MScsCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDQyODUpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wMS0wNiAgSGlyb25v
cmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5kZXIgb3ZlcmZsb3cg
Y29udHJvbHMgb2YgYW4gUlRMIGVsZW1lbnQgdG8gaXRzIGxlZnQtc2lkZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NjIzCisKKyAgICAgICAgVGhp
cyBjaGFuZ2UgYWRkcyBhIG5ldyBmbGFnIFdURl9VU0VfUlRMX1NDUk9MTEJBUiBhbmQgcmVuZGVy
IHRoZQorICAgICAgICB2ZXJ0aWNhbCBzY3JvbGxiYXJzIGFuZCByZXNpemVycyBvZiBSVEwgZWxl
bWVudHMgdG8gdGhlaXIgbGVmdCBzaWRlIGlmCisgICAgICAgIHRoaXMgbmV3IGZsYWcgaXMgZW5h
YmxlZC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3J0bC1zY3JvbGxiYXItZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy9ydGwtc2Ny
b2xsYmFyLmh0bWw6IEFkZGVkLgorCiAyMDEyLTAxLTA2ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxv
c3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZy4gU2tp
cCBhIG5ldyBmYWlsaW5nIHRlc3QuCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9mYXN0L2V2ZW50cy9ydGwtc2Nyb2xsYmFyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy9ydGwtc2Nyb2xsYmFyLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2Zhc3QvZXZlbnRzL3J0bC1zY3JvbGxiYXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDEwIEBACitUZXN0IHRoYXQgd2UgY2FuIHNjcm9sbCBkb3duIGFuIFJUTCBlbGVtZW50
IHdpdGggaXRzIGxlZnQtc2lkZSBzY3JvbGxiYXIuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
K1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ292ZXJmbG93Jykuc2Nyb2xsVG9wID4gc2Ny
b2xsVG9wIGlzIHRydWUKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFz
dC9ldmVudHMvcnRsLXNjcm9sbGJhci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3J0bC1zY3JvbGxiYXIuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3J0bC1zY3Jv
bGxiYXIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IHN0eWxlPSJtYXJn
aW46MCI+Cis8ZGl2IGlkPSJvdmVyZmxvdyIgZGlyPSJydGwiIHN0eWxlPSJib3JkZXI6MnB4IHNv
bGlkIGJsYWNrO292ZXJmbG93OmF1dG87aGVpZ2h0OjQwMHB4O3dpZHRoOjQwMHB4OyBwb3NpdGlv
bjphYnNvbHV0ZTsiPgorPGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjpyZWQ7aGVpZ2h0Ojcy
MHB4Ij48L2Rpdj4KKzxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6Z3JlZW47aGVpZ2h0OjE2
MDBweCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IHRoYXQg
d2UgY2FuIHNjcm9sbCBkb3duIGFuIFJUTCBlbGVtZW50IHdpdGggaXRzIGxlZnQtc2lkZSBzY3Jv
bGxiYXIuJyk7CisKK3ZhciBzY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3Zl
cmZsb3cnKS5zY3JvbGxUb3A7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgdmFyIG5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3Zl
cmZsb3cnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhub2RlLm9mZnNldExlZnQgKyA1
LCBub2RlLm9mZnNldFRvcCArIG5vZGUub2Zmc2V0SGVpZ2h0IC0gNTApOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICBzZXRUaW1l
b3V0KGZpbmlzaGVkLCAwKTsKK30KKworZnVuY3Rpb24gZmluaXNoZWQoKQoreworICAgIHNob3Vs
ZEJlVHJ1ZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdvdmVyZmxvd1wnKS5zY3JvbGxUb3Ag
PiBzY3JvbGxUb3AnKTsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="commit-queue"
          id="121919"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122368</attachid>
            <date>2012-01-12 21:55:29 -0800</date>
            <delta_ts>2012-02-03 03:32:43 -0800</delta_ts>
            <desc>Patch v9 (renamed function names)</desc>
            <filename>issue54623-patch9.txt</filename>
            <type>text/plain</type>
            <size>15329</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNDg4OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAxLTEyICBIaXJvbm9y
aSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbmRlciBvdmVyZmxvdyBj
b250cm9scyBvZiBhbiBSVEwgZWxlbWVudCB0byBpdHMgbGVmdC1zaWRlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ2MjMKKworICAgICAgICBUaGlz
IGNoYW5nZSBhZGRzIGEgbmV3IGZsYWcgV1RGX1VTRV9SVExfU0NST0xMQkFSIGFuZCByZW5kZXIg
dGhlCisgICAgICAgIHZlcnRpY2FsIHNjcm9sbGJhcnMgYW5kIHJlc2l6ZXJzIG9mIFJUTCBlbGVt
ZW50cyB0byB0aGVpciBsZWZ0IHNpZGUgaWYKKyAgICAgICAgdGhpcyBuZXcgZmxhZyBpcyBlbmFi
bGVkLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
c3Q6IHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3J0bC1zY3JvbGxiYXIuaHRtbAorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjphZGRPdmVyZmxvd0Zyb21Qb3NpdGlvbmVkT2JqZWN0cyk6IE1vdmUgY2hpbGQg
ZWxlbWVudHMgcmlnaHQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZGV0ZXJtaW5l
TG9naWNhbExlZnRQb3NpdGlvbkZvckNoaWxkKTogZGl0dG8uCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om92ZXJmbG93Q2xp
cFJlY3QpOiBNb3ZlIHRoZSBjb250ZW50IHJlY3RhbmdsZSByaWdodC4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29ybmVyU3RhcnQpOiBB
ZGRlZCBhIGZ1bmN0aW9uIHRoYXQgY2FsY3VsYXRlcyB0aGUgWCBwb3NpdGlvbiBvZiBhIHJlc2l6
ZXIuCisgICAgICAgIChXZWJDb3JlOjpjb3JuZXJSZWN0KTogVXNlIGNvcm5lclN0YXJ0IHRvIG1v
dmUgYSByZXNpemVyLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnZlcnRpY2FsU2Ny
b2xsYmFyU3RhcnQpOiBBZGRlZCBhIGZ1bmN0aW9uIHRoYXQgY2FsY3VsYXRlcyB0aGUKKyAgICAg
ICAgWCBwb3NpdGlvbiBvZiBhIHZlcnRpY2FsIHNjcm9sbGJhci4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpob3Jpem9udGFsU2Nyb2xsYmFyU3RhcnQpOiBBZGRlZCBhIGZ1bmN0aW9u
IHRoYXQgY2FsY3VsYXRlcworICAgICAgICB0aGUgWCBwb3NpdGlvbiBvZiBhIGhvcml6b250YWwg
c2Nyb2xsYmFyLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbGJhck9mZnNl
dCk6IFJlbmRlciBhIHZlcnRpY2FsIHNjcm9sbGJhciB0byB0aGUgbGVmdCBzaWRlCisgICAgICAg
IGFuZCBtb3ZlIGEgaG9yaXpvbnRhbCBzY3JvbGxiYXIgcmlnaHQgYnkgdGhlIHdpZHRoIG9mIHRo
ZSB2ZXJ0aWNhbCBzY3JvbGxiYXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aW52
YWxpZGF0ZVNjcm9sbGJhclJlY3QpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpwb3NpdGlvbk92ZXJmbG93Q29udHJvbHMpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpoaXRUZXN0T3ZlcmZsb3dDb250cm9scyk6IGRpdHRvLgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorCiAyMDEyLTAxLTEyICBKYW1lcyBTaW1vbnNlbiAg
PHNpbW9uamFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbQ2hvbWl1
bV0gUmVzb3VyY2VzIGxvYWRlZCB3aXRoIDMwNCBzdGF0dXMgY29kZSBoYXZlIHJlY2VpdmluZyB0
aW1lIG9mIDE1MDAwIGRheXMgaW4gbmV0d29yayBwYW5lbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gMTA0ODgwKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5MSw4
ICsxNDkxLDE3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFkZE92ZXJmbG93RnJvbVBvc2l0aW8KICAg
ICAgICAgcG9zaXRpb25lZE9iamVjdCA9ICppdDsKICAgICAgICAgCiAgICAgICAgIC8vIEZpeGVk
IHBvc2l0aW9uZWQgZWxlbWVudHMgZG9uJ3QgY29udHJpYnV0ZSB0byBsYXlvdXQgb3ZlcmZsb3cs
IHNpbmNlIHRoZXkgZG9uJ3Qgc2Nyb2xsIHdpdGggdGhlIGNvbnRlbnQuCisjaWYgVVNFKFJUTF9T
Q1JPTExCQVIpCisgICAgICAgIGlmIChwb3NpdGlvbmVkT2JqZWN0LT5zdHlsZSgpLT5wb3NpdGlv
bigpICE9IEZpeGVkUG9zaXRpb24pIHsKKyAgICAgICAgICAgIGludCB4ID0gcG9zaXRpb25lZE9i
amVjdC0+eCgpOworICAgICAgICAgICAgaWYgKCFzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkgJiYgc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAgICAgICAgICAg
ICAgICB4IC09IHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoKTsKKyAgICAgICAgICAgIGFkZE92ZXJm
bG93RnJvbUNoaWxkKHBvc2l0aW9uZWRPYmplY3QsIEludFNpemUoeCwgcG9zaXRpb25lZE9iamVj
dC0+eSgpKSk7CisgICAgICAgIH0KKyNlbHNlCiAgICAgICAgIGlmIChwb3NpdGlvbmVkT2JqZWN0
LT5zdHlsZSgpLT5wb3NpdGlvbigpICE9IEZpeGVkUG9zaXRpb24pCiAgICAgICAgICAgICBhZGRP
dmVyZmxvd0Zyb21DaGlsZChwb3NpdGlvbmVkT2JqZWN0KTsKKyNlbmRpZgogICAgIH0KIH0KIApA
QCAtMTg4NSw2ICsxODk0LDEwIEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmNvbXB1dGVTdGFy
dFBvc2kKIHZvaWQgUmVuZGVyQmxvY2s6OmRldGVybWluZUxvZ2ljYWxMZWZ0UG9zaXRpb25Gb3JD
aGlsZChSZW5kZXJCb3gqIGNoaWxkKQogewogICAgIExheW91dFVuaXQgc3RhcnRQb3NpdGlvbiA9
IGJvcmRlclN0YXJ0KCkgKyBwYWRkaW5nU3RhcnQoKTsKKyNpZiBVU0UoUlRMX1NDUk9MTEJBUikK
KyAgICBpZiAoIXN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSAmJiBzdHlsZSgpLT5p
c0hvcml6b250YWxXcml0aW5nTW9kZSgpKQorICAgICAgICBzdGFydFBvc2l0aW9uIC09IHZlcnRp
Y2FsU2Nyb2xsYmFyV2lkdGgoKTsKKyNlbmRpZgogICAgIExheW91dFVuaXQgdG90YWxBdmFpbGFi
bGVMb2dpY2FsV2lkdGggPSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCkgKyBhdmFpbGFi
bGVMb2dpY2FsV2lkdGgoKTsKIAogICAgIC8vIEFkZCBpbiBvdXIgc3RhcnQgbWFyZ2luLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDEwNDg4MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjMwLDggKzEyMzAsMTYgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6Om92ZXJmbG93Q2xp
cFJlY3QoYwogICAgIGNsaXBSZWN0LnNldFNpemUoY2xpcFJlY3Quc2l6ZSgpIC0gTGF5b3V0U2l6
ZShib3JkZXJMZWZ0KCkgKyBib3JkZXJSaWdodCgpLCBib3JkZXJUb3AoKSArIGJvcmRlckJvdHRv
bSgpKSk7CiAKICAgICAvLyBTdWJ0cmFjdCBvdXQgc2Nyb2xsYmFycyBpZiB3ZSBoYXZlIHRoZW0u
CisjaWYgVVNFKFJUTF9TQ1JPTExCQVIpCisgICAgIGlmIChsYXllcigpKSB7CisgICAgICAgIGlm
ICghc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpICYmIHN0eWxlKCktPmlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCkpCisgICAgICAgICAgICBjbGlwUmVjdC5tb3ZlKGxheWVyKCktPnZl
cnRpY2FsU2Nyb2xsYmFyV2lkdGgocmVsZXZhbmN5KSwgMCk7CisgICAgICAgIGNsaXBSZWN0LmNv
bnRyYWN0KGxheWVyKCktPnZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgocmVsZXZhbmN5KSwgbGF5ZXIo
KS0+aG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodChyZWxldmFuY3kpKTsKKyAgICAgfQorI2Vsc2UK
ICAgICBpZiAobGF5ZXIoKSkKICAgICAgICAgY2xpcFJlY3QuY29udHJhY3QobGF5ZXIoKS0+dmVy
dGljYWxTY3JvbGxiYXJXaWR0aChyZWxldmFuY3kpLCBsYXllcigpLT5ob3Jpem9udGFsU2Nyb2xs
YmFySGVpZ2h0KHJlbGV2YW5jeSkpOworI2VuZGlmCiAKICAgICByZXR1cm4gY2xpcFJlY3Q7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlzaW9u
IDEwNDg4MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE3OTMsNiArMTc5MywxNyBAQCBib29sIFJlbmRlckxheWVyOjppc0Fj
dGl2ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkt
PmlzQWN0aXZlKCk7CiB9CiAKK3N0YXRpYyBMYXlvdXRVbml0IGNvcm5lclN0YXJ0KGNvbnN0IFJl
bmRlckxheWVyKiBsYXllciwgaW50IG1pblgsIGludCBtYXhYLCBpbnQgdGhpY2tuZXNzKQorewor
I2lmIFVTRShSVExfU0NST0xMQkFSKQorICAgIGlmICghbGF5ZXItPnJlbmRlcmVyKCktPnN0eWxl
KCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSAmJiBsYXllci0+cmVuZGVyZXIoKS0+c3R5bGUo
KS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAgICAgICAgcmV0dXJuIG1pblggKyBsYXll
ci0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Ym9yZGVyTGVmdFdpZHRoKCk7CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShtaW5YKTsKKyNlbmRpZgorICAgIHJldHVybiBtYXhYIC0gdGhpY2tuZXNzIC0g
bGF5ZXItPnJlbmRlcmVyKCktPnN0eWxlKCktPmJvcmRlclJpZ2h0V2lkdGgoKTsKK30KKwogc3Rh
dGljIEludFJlY3QgY29ybmVyUmVjdChjb25zdCBSZW5kZXJMYXllciogbGF5ZXIsIGNvbnN0IElu
dFJlY3QmIGJvdW5kcykKIHsKICAgICBpbnQgaG9yaXpvbnRhbFRoaWNrbmVzczsKQEAgLTE4MTIs
NyArMTgyMyw3IEBAIHN0YXRpYyBJbnRSZWN0IGNvcm5lclJlY3QoY29uc3QgUmVuZGVyTGEKICAg
ICAgICAgaG9yaXpvbnRhbFRoaWNrbmVzcyA9IGxheWVyLT52ZXJ0aWNhbFNjcm9sbGJhcigpLT53
aWR0aCgpOwogICAgICAgICB2ZXJ0aWNhbFRoaWNrbmVzcyA9IGxheWVyLT5ob3Jpem9udGFsU2Ny
b2xsYmFyKCktPmhlaWdodCgpOwogICAgIH0KLSAgICByZXR1cm4gSW50UmVjdChib3VuZHMubWF4
WCgpIC0gaG9yaXpvbnRhbFRoaWNrbmVzcyAtIGxheWVyLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5i
b3JkZXJSaWdodFdpZHRoKCksIAorICAgIHJldHVybiBJbnRSZWN0KGNvcm5lclN0YXJ0KGxheWVy
LCBib3VuZHMueCgpLCBib3VuZHMubWF4WCgpLCBob3Jpem9udGFsVGhpY2tuZXNzKSwKICAgICAg
ICAgICAgICAgICAgICBib3VuZHMubWF4WSgpIC0gdmVydGljYWxUaGlja25lc3MgLSBsYXllci0+
cmVuZGVyZXIoKS0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwKICAgICAgICAgICAgICAg
ICAgICBob3Jpem9udGFsVGhpY2tuZXNzLCB2ZXJ0aWNhbFRoaWNrbmVzcyk7CiB9CkBAIC0xOTM1
LDE1ICsxOTQ2LDM4IEBAIEludFBvaW50IFJlbmRlckxheWVyOjpjdXJyZW50TW91c2VQb3NpdGkK
ICAgICByZXR1cm4gcmVuZGVyZXIoKS0+ZnJhbWUoKSA/IHJlbmRlcmVyKCktPmZyYW1lKCktPmV2
ZW50SGFuZGxlcigpLT5jdXJyZW50TW91c2VQb3NpdGlvbigpIDogSW50UG9pbnQoKTsKIH0KIAor
TGF5b3V0VW5pdCBSZW5kZXJMYXllcjo6dmVydGljYWxTY3JvbGxiYXJTdGFydChpbnQgbWluWCwg
aW50IG1heFgpIGNvbnN0Cit7CisgICAgY29uc3QgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3go
KTsKKyNpZiBVU0UoUlRMX1NDUk9MTEJBUikKKyAgICBpZiAoIXJlbmRlcmVyKCktPnN0eWxlKCkt
PmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5pc0hvcml6
b250YWxXcml0aW5nTW9kZSgpKQorICAgICAgICByZXR1cm4gbWluWCArIGJveC0+Ym9yZGVyTGVm
dCgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obWluWCk7CisjZW5kaWYKKyAgICByZXR1cm4g
bWF4WCAtIGJveC0+Ym9yZGVyUmlnaHQoKSAtIG1fdkJhci0+d2lkdGgoKTsKK30KKworTGF5b3V0
VW5pdCBSZW5kZXJMYXllcjo6aG9yaXpvbnRhbFNjcm9sbGJhclN0YXJ0KGludCBtaW5YKSBjb25z
dAoreworICAgIGNvbnN0IFJlbmRlckJveCogYm94ID0gcmVuZGVyQm94KCk7CisgICAgaW50IHgg
PSBtaW5YICsgYm94LT5ib3JkZXJMZWZ0KCk7CisjaWYgVVNFKFJUTF9TQ1JPTExCQVIpCisgICAg
aWYgKCFyZW5kZXJlcigpLT5zdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgJiYgcmVu
ZGVyZXIoKS0+c3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAgICAgICAgeCAr
PSBtX3ZCYXIgPyBtX3ZCYXItPndpZHRoKCkgOiByZXNpemVyQ29ybmVyUmVjdCh0aGlzLCBib3gt
PmJvcmRlckJveFJlY3QoKSkud2lkdGgoKTsKKyNlbmRpZgorICAgIHJldHVybiB4OworfQorCiBJ
bnRTaXplIFJlbmRlckxheWVyOjpzY3JvbGxiYXJPZmZzZXQoY29uc3QgU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIpIGNvbnN0CiB7CiAgICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKIAogICAg
IGlmIChzY3JvbGxiYXIgPT0gbV92QmFyLmdldCgpKQotICAgICAgICByZXR1cm4gSW50U2l6ZShi
b3gtPndpZHRoKCkgLSBib3gtPmJvcmRlclJpZ2h0KCkgLSBzY3JvbGxiYXItPndpZHRoKCksIGJv
eC0+Ym9yZGVyVG9wKCkpOworICAgICAgICByZXR1cm4gSW50U2l6ZSh2ZXJ0aWNhbFNjcm9sbGJh
clN0YXJ0KDAsIGJveC0+d2lkdGgoKSksIGJveC0+Ym9yZGVyVG9wKCkpOwogCiAgICAgaWYgKHNj
cm9sbGJhciA9PSBtX2hCYXIuZ2V0KCkpCi0gICAgICAgIHJldHVybiBJbnRTaXplKGJveC0+Ym9y
ZGVyTGVmdCgpLCBib3gtPmhlaWdodCgpIC0gYm94LT5ib3JkZXJCb3R0b20oKSAtIHNjcm9sbGJh
ci0+aGVpZ2h0KCkpOworICAgICAgICByZXR1cm4gSW50U2l6ZShob3Jpem9udGFsU2Nyb2xsYmFy
U3RhcnQoMCksIGJveC0+aGVpZ2h0KCkgLSBib3gtPmJvcmRlckJvdHRvbSgpIC0gc2Nyb2xsYmFy
LT5oZWlnaHQoKSk7CiAgICAgCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJu
IEludFNpemUoKTsKQEAgLTE5NjgsOSArMjAwMiw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmludmFs
aWRhdGVTY3JvbGxiYXJSZWMKICAgICBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgpOwogICAg
IEFTU0VSVChib3gpOwogICAgIGlmIChzY3JvbGxiYXIgPT0gbV92QmFyLmdldCgpKQotICAgICAg
ICBzY3JvbGxSZWN0Lm1vdmUoYm94LT53aWR0aCgpIC0gYm94LT5ib3JkZXJSaWdodCgpIC0gc2Ny
b2xsYmFyLT53aWR0aCgpLCBib3gtPmJvcmRlclRvcCgpKTsKKyAgICAgICAgc2Nyb2xsUmVjdC5t
b3ZlKHZlcnRpY2FsU2Nyb2xsYmFyU3RhcnQoMCwgYm94LT53aWR0aCgpKSwgYm94LT5ib3JkZXJU
b3AoKSk7CiAgICAgZWxzZQotICAgICAgICBzY3JvbGxSZWN0Lm1vdmUoYm94LT5ib3JkZXJMZWZ0
KCksIGJveC0+aGVpZ2h0KCkgLSBib3gtPmJvcmRlckJvdHRvbSgpIC0gc2Nyb2xsYmFyLT5oZWln
aHQoKSk7CisgICAgICAgIHNjcm9sbFJlY3QubW92ZShob3Jpem9udGFsU2Nyb2xsYmFyU3RhcnQo
MCksIGJveC0+aGVpZ2h0KCkgLSBib3gtPmJvcmRlckJvdHRvbSgpIC0gc2Nyb2xsYmFyLT5oZWln
aHQoKSk7CiAgICAgcmVuZGVyZXIoKS0+cmVwYWludFJlY3RhbmdsZShzY3JvbGxSZWN0KTsKIH0K
IApAQCAtMjE0OCwxMyArMjE4MiwxMyBAQCB2b2lkIFJlbmRlckxheWVyOjpwb3NpdGlvbk92ZXJm
bG93Q29udHJvCiAgICAgY29uc3QgSW50UmVjdCYgc2Nyb2xsQ29ybmVyID0gc2Nyb2xsQ29ybmVy
UmVjdCgpOwogICAgIEludFJlY3QgYWJzQm91bmRzKGJvcmRlckJveC5sb2NhdGlvbigpICsgb2Zm
c2V0RnJvbUxheWVyLCBib3JkZXJCb3guc2l6ZSgpKTsKICAgICBpZiAobV92QmFyKQotICAgICAg
ICBtX3ZCYXItPnNldEZyYW1lUmVjdChJbnRSZWN0KGFic0JvdW5kcy5tYXhYKCkgLSBib3gtPmJv
cmRlclJpZ2h0KCkgLSBtX3ZCYXItPndpZHRoKCksCisgICAgICAgIG1fdkJhci0+c2V0RnJhbWVS
ZWN0KEludFJlY3QodmVydGljYWxTY3JvbGxiYXJTdGFydChhYnNCb3VuZHMueCgpLCBhYnNCb3Vu
ZHMubWF4WCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNCb3Vu
ZHMueSgpICsgYm94LT5ib3JkZXJUb3AoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX3ZCYXItPndpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWJzQm91bmRzLmhlaWdodCgpIC0gKGJveC0+Ym9yZGVyVG9wKCkgKyBib3gtPmJvcmRl
ckJvdHRvbSgpKSAtIHNjcm9sbENvcm5lci5oZWlnaHQoKSkpOwogCiAgICAgaWYgKG1faEJhcikK
LSAgICAgICAgbV9oQmFyLT5zZXRGcmFtZVJlY3QoSW50UmVjdChhYnNCb3VuZHMueCgpICsgYm94
LT5ib3JkZXJMZWZ0KCksCisgICAgICAgIG1faEJhci0+c2V0RnJhbWVSZWN0KEludFJlY3QoaG9y
aXpvbnRhbFNjcm9sbGJhclN0YXJ0KGFic0JvdW5kcy54KCkpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFic0JvdW5kcy5tYXhZKCkgLSBib3gtPmJvcmRlckJvdHRvbSgp
IC0gbV9oQmFyLT5oZWlnaHQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhYnNCb3VuZHMud2lkdGgoKSAtIChib3gtPmJvcmRlckxlZnQoKSArIGJveC0+Ym9yZGVyUmln
aHQoKSkgLSBzY3JvbGxDb3JuZXIud2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2hCYXItPmhlaWdodCgpKSk7CkBAIC0yNTUzLDcgKzI1ODcsNyBAQCBib29s
IFJlbmRlckxheWVyOjpoaXRUZXN0T3ZlcmZsb3dDb250cm9sCiAgICAgaW50IHJlc2l6ZUNvbnRy
b2xTaXplID0gbWF4KHJlc2l6ZUNvbnRyb2xSZWN0LmhlaWdodCgpLCAwKTsKIAogICAgIGlmICht
X3ZCYXIpIHsKLSAgICAgICAgTGF5b3V0UmVjdCB2QmFyUmVjdChib3gtPndpZHRoKCkgLSBib3gt
PmJvcmRlclJpZ2h0KCkgLSBtX3ZCYXItPndpZHRoKCksIAorICAgICAgICBMYXlvdXRSZWN0IHZC
YXJSZWN0KHZlcnRpY2FsU2Nyb2xsYmFyU3RhcnQoMCwgYm94LT53aWR0aCgpKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib3gtPmJvcmRlclRvcCgpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fdkJhci0+d2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b3gtPmhlaWdodCgpIC0gKGJveC0+Ym9yZGVyVG9wKCkgKyBib3gtPmJvcmRlckJvdHRvbSgpKSAt
IChtX2hCYXIgPyBtX2hCYXItPmhlaWdodCgpIDogcmVzaXplQ29udHJvbFNpemUpKTsKQEAgLTI1
NjUsNyArMjU5OSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmhpdFRlc3RPdmVyZmxvd0NvbnRyb2wK
IAogICAgIHJlc2l6ZUNvbnRyb2xTaXplID0gbWF4KHJlc2l6ZUNvbnRyb2xSZWN0LndpZHRoKCks
IDApOwogICAgIGlmIChtX2hCYXIpIHsKLSAgICAgICAgTGF5b3V0UmVjdCBoQmFyUmVjdChib3gt
PmJvcmRlckxlZnQoKSwKKyAgICAgICAgTGF5b3V0UmVjdCBoQmFyUmVjdChob3Jpem9udGFsU2Ny
b2xsYmFyU3RhcnQoMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm94LT5oZWlnaHQo
KSAtIGJveC0+Ym9yZGVyQm90dG9tKCkgLSBtX2hCYXItPmhlaWdodCgpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJveC0+d2lkdGgoKSAtIChib3gtPmJvcmRlckxlZnQoKSArIGJveC0+
Ym9yZGVyUmlnaHQoKSkgLSAobV92QmFyID8gbV92QmFyLT53aWR0aCgpIDogcmVzaXplQ29udHJv
bFNpemUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faEJhci0+aGVpZ2h0KCkpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgJKHJldmlzaW9uIDEwNDg4
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCSh3b3JraW5nIGNv
cHkpCkBAIC03NDUsNiArNzQ1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIDsKICAgICB9CiAK
KyAgICBMYXlvdXRVbml0IHZlcnRpY2FsU2Nyb2xsYmFyU3RhcnQoaW50IG1pblgsIGludCBtYXhY
KSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGhvcml6b250YWxTY3JvbGxiYXJTdGFydChpbnQgbWlu
WCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICAvLyBUaGUgYml0ZmllbGRzIGFyZSB1cCBoZXJl
IHNvIHRoZXkgd2lsbCBmYWxsIGludG8gdGhlIHBhZGRpbmcgZnJvbSBTY3JvbGxhYmxlQXJlYSBv
biA2NC1iaXQuCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDQ4
ODkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDEyLTAxLTEyICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJlbmRlciBvdmVyZmxvdyBjb250cm9scyBvZiBhbiBSVEwgZWxl
bWVudCB0byBpdHMgbGVmdC1zaWRlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTQ2MjMKKworICAgICAgICBUaGlzIGNoYW5nZSBzZXRzIGEgbmV3IGZs
YWcgV1RGX1VTRV9SVExfU0NST0xMQkFSIG9uIENocm9taXVtIHNvIHdlIGNhbgorICAgICAgICBy
ZW5kZXIgdGhlIHZlcnRpY2FsIHNjcm9sbGJhcnMgYW5kIHJlc2l6ZXJzIG9mIFJUTCBlbGVtZW50
cyB0byB0aGVpcgorICAgICAgICBsZWZ0IHNpZGUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmZWF0dXJlcy5neXBpOiBTZXQgV1RGX1VTRV9SVExf
U0NST0xMQkFSIHRvIDEgb24gQ2hyb21pdW0uCisKIDIwMTItMDEtMTIgIERhdmlkIExldmluICA8
bGV2aW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRml4IERDIGxlYWsgaW4g
V2ViU2NyZWVuSW5mb0ZhY3RvcnkuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1
cmVzLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5n
eXBpCShyZXZpc2lvbiAxMDQ4ODApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVz
Lmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw2ICsxMDUsNyBAQAogICAgICAgIyBXZSBjYW4n
dCBkZWZpbmUgaXQgaGVyZSBiZWNhdXNlIGl0IHNob3VsZCBiZSBwcmVzZW50IG9ubHkKICAgICAg
ICMgaW4gRGVidWcgb3IgcmVsZWFzZV92YWxncmluZF9idWlsZD0xIGJ1aWxkcy4KICAgICAgICdX
VEZfVVNFX09QRU5UWVBFX1NBTklUSVpFUj0xJywKKyAgICAgICdXVEZfVVNFX1JUTF9TQ1JPTExC
QVI9MScsCiAgICAgICAnV1RGX1VTRV9TS0lBX1RFWFQ9PChlbmFibGVfc2tpYV90ZXh0KScsCiAg
ICAgICAnV1RGX1VTRV9XRUJQPTEnLAogICAgICAgJ1dURl9VU0VfV0VCS0lUX0lNQUdFX0RFQ09E
RVJTPTEnLApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTA0ODg5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDEtMTIgIEhpcm9ub3Jp
IEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuZGVyIG92ZXJmbG93IGNv
bnRyb2xzIG9mIGFuIFJUTCBlbGVtZW50IHRvIGl0cyBsZWZ0LXNpZGUuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDYyMworCisgICAgICAgIFRoaXMg
Y2hhbmdlIGFkZHMgYSBuZXcgZmxhZyBXVEZfVVNFX1JUTF9TQ1JPTExCQVIgYW5kIHJlbmRlciB0
aGUKKyAgICAgICAgdmVydGljYWwgc2Nyb2xsYmFycyBhbmQgcmVzaXplcnMgb2YgUlRMIGVsZW1l
bnRzIHRvIHRoZWlyIGxlZnQgc2lkZSBpZgorICAgICAgICB0aGlzIG5ldyBmbGFnIGlzIGVuYWJs
ZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy9ydGwtc2Nyb2xsYmFyLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvcnRsLXNjcm9s
bGJhci5odG1sOiBBZGRlZC4KKwogMjAxMi0wMS0xMiAgRG1pdHJ5IFRpdG92ICA8ZGltaWNoQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFJlYmFzZWxpbmUgZmlsZXMgYWZmZWN0
ZWQgYnkgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTA0ODgxLgpJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvcnRsLXNjcm9sbGJhci1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFz
dC9ldmVudHMvcnRsLXNjcm9sbGJhci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy9ydGwtc2Nyb2xsYmFyLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorVGVzdCB0aGF0IHdlIGNhbiBz
Y3JvbGwgZG93biBhbiBSVEwgZWxlbWVudCB3aXRoIGl0cyBsZWZ0LXNpZGUgc2Nyb2xsYmFyLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdv
dmVyZmxvdycpLnNjcm9sbFRvcCA+IHNjcm9sbFRvcCBpcyB0cnVlCisKSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3J0bC1zY3JvbGxiYXIuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy9ydGwt
c2Nyb2xsYmFyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9mYXN0L2V2ZW50cy9ydGwtc2Nyb2xsYmFyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keSBzdHlsZT0ibWFyZ2luOjAiPgorPGRpdiBpZD0ib3ZlcmZsb3ciIGRpcj0i
cnRsIiBzdHlsZT0iYm9yZGVyOjJweCBzb2xpZCBibGFjaztvdmVyZmxvdzphdXRvO2hlaWdodDo0
MDBweDt3aWR0aDo0MDBweDsgcG9zaXRpb246YWJzb2x1dGU7Ij4KKzxkaXYgc3R5bGU9ImJhY2tn
cm91bmQtY29sb3I6cmVkO2hlaWdodDo3MjBweCI+PC9kaXY+Cis8ZGl2IHN0eWxlPSJiYWNrZ3Jv
dW5kLWNvbG9yOmdyZWVuO2hlaWdodDoxNjAwcHgiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+
CitkZXNjcmlwdGlvbignVGVzdCB0aGF0IHdlIGNhbiBzY3JvbGwgZG93biBhbiBSVEwgZWxlbWVu
dCB3aXRoIGl0cyBsZWZ0LXNpZGUgc2Nyb2xsYmFyLicpOworCit2YXIgc2Nyb2xsVG9wID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ292ZXJmbG93Jykuc2Nyb2xsVG9wOworCitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKKworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIHZhciBub2RlID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ292ZXJmbG93Jyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8obm9kZS5vZmZzZXRMZWZ0ICsgNSwgbm9kZS5vZmZzZXRUb3AgKyBub2RlLm9mZnNldEhl
aWdodCAtIDUwKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRl
ci5tb3VzZVVwKCk7CisgICAgc2V0VGltZW91dChmaW5pc2hlZCwgMCk7Cit9CisKK2Z1bmN0aW9u
IGZpbmlzaGVkKCkKK3sKKyAgICBzaG91bGRCZVRydWUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlk
KFwnb3ZlcmZsb3dcJykuc2Nyb2xsVG9wID4gc2Nyb2xsVG9wJyk7CisgICAgd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="commit-queue"
          id="123134"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125303</attachid>
            <date>2012-02-03 03:32:43 -0800</date>
            <delta_ts>2012-02-23 18:18:47 -0800</delta_ts>
            <desc>Patch v10 (Applied comments)</desc>
            <filename>issue54623-patch10.txt</filename>
            <type>text/plain</type>
            <size>15759</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjY0MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDEyLTAyLTAzICBIaXJvbm9y
aSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbmRlciBvdmVyZmxvdyBj
b250cm9scyBvZiBhbiBSVEwgZWxlbWVudCB0byBpdHMgbGVmdC1zaWRlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ2MjMKKworICAgICAgICBUaGlz
IGNoYW5nZSBhZGRzIGEgbmV3IGZsYWcgV1RGX1VTRV9SVExfU0NST0xMQkFSIGFuZCByZW5kZXIg
dGhlCisgICAgICAgIHZlcnRpY2FsIHNjcm9sbGJhcnMgYW5kIHJlc2l6ZXJzIG9mIFJUTCBlbGVt
ZW50cyB0byB0aGVpciBsZWZ0IHNpZGUgaWYKKyAgICAgICAgdGhpcyBuZXcgZmxhZyBpcyBlbmFi
bGVkLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
c3Q6IHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3J0bC1zY3JvbGxiYXIuaHRtbAorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjphZGRPdmVyZmxvd0Zyb21Qb3NpdGlvbmVkT2JqZWN0cyk6IE1vdmUgY2hpbGQg
ZWxlbWVudHMgcmlnaHQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZGV0ZXJtaW5l
TG9naWNhbExlZnRQb3NpdGlvbkZvckNoaWxkKTogZGl0dG8uCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om92ZXJmbG93Q2xp
cFJlY3QpOiBNb3ZlIHRoZSBjb250ZW50IHJlY3RhbmdsZSByaWdodC4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29ybmVyU3RhcnQpOiBB
ZGRlZCBhIGZ1bmN0aW9uIHRoYXQgY2FsY3VsYXRlcyB0aGUgWCBwb3NpdGlvbiBvZiBhIHJlc2l6
ZXIuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcm5lclJlY3QpOiBV
c2UgY29ybmVyU3RhcnQgdG8gbW92ZSBhIHJlc2l6ZXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6dmVydGljYWxTY3JvbGxiYXJTdGFydCk6IEFkZGVkIGEgZnVuY3Rpb24gdGhhdCBj
YWxjdWxhdGVzCisgICAgICAgIHRoZSBYIHBvc2l0aW9uIG9mIGEgaG9yaXpvbnRhbCBzY3JvbGxi
YXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aG9yaXpvbnRhbFNjcm9sbGJhclN0
YXJ0KTogUmVuZGVyIGEgdmVydGljYWwgc2Nyb2xsYmFyIHRvIHRoZSBsZWZ0IHNpZGUKKyAgICAg
ICAgYW5kIG1vdmUgYSBob3Jpem9udGFsIHNjcm9sbGJhciByaWdodCBieSB0aGUgd2lkdGggb2Yg
dGhlIHZlcnRpY2FsIHNjcm9sbGJhci4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpz
Y3JvbGxiYXJPZmZzZXQpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpp
bnZhbGlkYXRlU2Nyb2xsYmFyUmVjdCk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnBvc2l0aW9uT3ZlcmZsb3dDb250cm9scyk6IGRpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RPdmVyZmxvd0NvbnRyb2xzKTogZGl0dG8uCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgIChSZW5kZXJMYXllcik6CisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6IEFkZGVkIHNob3VsZFBsYWNlQmxv
Y2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxvZ2ljYWxMZWZ0LAorICAgICAgICB3aGljaCByZXR1cm5z
IGlmIHdlIG5lZWQgdG8gbW92ZSBhIGxlZnQgc2Nyb2xsYmFyIHRvIGl0cyByaWdodCBzaWRlLgor
CiAyMDEyLTAyLTAzICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBBZGQgdGhlICJDUFAiIHByZWZpeCB0byBDUFAgc3BlY2lmaWMgSURMIGF0dHJpYnV0ZXMK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24g
MTA2NjA3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTUxMiw4ICsxNTEyLDE0IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFkZE92
ZXJmbG93RnJvbVBvc2l0aW8KICAgICAgICAgcG9zaXRpb25lZE9iamVjdCA9ICppdDsKICAgICAg
ICAgCiAgICAgICAgIC8vIEZpeGVkIHBvc2l0aW9uZWQgZWxlbWVudHMgZG9uJ3QgY29udHJpYnV0
ZSB0byBsYXlvdXQgb3ZlcmZsb3csIHNpbmNlIHRoZXkgZG9uJ3Qgc2Nyb2xsIHdpdGggdGhlIGNv
bnRlbnQuCi0gICAgICAgIGlmIChwb3NpdGlvbmVkT2JqZWN0LT5zdHlsZSgpLT5wb3NpdGlvbigp
ICE9IEZpeGVkUG9zaXRpb24pCi0gICAgICAgICAgICBhZGRPdmVyZmxvd0Zyb21DaGlsZChwb3Np
dGlvbmVkT2JqZWN0KTsKKyAgICAgICAgaWYgKHBvc2l0aW9uZWRPYmplY3QtPnN0eWxlKCktPnBv
c2l0aW9uKCkgIT0gRml4ZWRQb3NpdGlvbikgeworICAgICAgICAgICAgaW50IHggPSBwb3NpdGlv
bmVkT2JqZWN0LT54KCk7CisjaWYgVVNFKFJUTF9TQ1JPTExCQVIpCisgICAgICAgICAgICBpZiAo
c3R5bGUoKS0+c2hvdWxkUGxhY2VCbG9ja0RpcmVjdGlvblNjcm9sbGJhck9uTG9naWNhbExlZnQo
KSkKKyAgICAgICAgICAgICAgICB4IC09IHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoKTsKKyNlbmRp
ZgorICAgICAgICAgICAgYWRkT3ZlcmZsb3dGcm9tQ2hpbGQocG9zaXRpb25lZE9iamVjdCwgSW50
U2l6ZSh4LCBwb3NpdGlvbmVkT2JqZWN0LT55KCkpKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApA
QCAtMTkwNiw2ICsxOTEyLDEwIEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmNvbXB1dGVTdGFy
dFBvc2kKIHZvaWQgUmVuZGVyQmxvY2s6OmRldGVybWluZUxvZ2ljYWxMZWZ0UG9zaXRpb25Gb3JD
aGlsZChSZW5kZXJCb3gqIGNoaWxkKQogewogICAgIExheW91dFVuaXQgc3RhcnRQb3NpdGlvbiA9
IGJvcmRlclN0YXJ0KCkgKyBwYWRkaW5nU3RhcnQoKTsKKyNpZiBVU0UoUlRMX1NDUk9MTEJBUikK
KyAgICBpZiAoc3R5bGUoKS0+c2hvdWxkUGxhY2VCbG9ja0RpcmVjdGlvblNjcm9sbGJhck9uTG9n
aWNhbExlZnQoKSkKKyAgICAgICAgc3RhcnRQb3NpdGlvbiAtPSB2ZXJ0aWNhbFNjcm9sbGJhcldp
ZHRoKCk7CisjZW5kaWYKICAgICBMYXlvdXRVbml0IHRvdGFsQXZhaWxhYmxlTG9naWNhbFdpZHRo
ID0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpICsgYXZhaWxhYmxlTG9naWNhbFdpZHRo
KCk7CiAKICAgICAvLyBBZGQgaW4gb3VyIHN0YXJ0IG1hcmdpbi4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiAxMDY2MDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwNiw4ICsx
MjA2LDEzIEBAIExheW91dFJlY3QgUmVuZGVyQm94OjpvdmVyZmxvd0NsaXBSZWN0KGMKICAgICBj
bGlwUmVjdC5zZXRTaXplKGNsaXBSZWN0LnNpemUoKSAtIExheW91dFNpemUoYm9yZGVyTGVmdCgp
ICsgYm9yZGVyUmlnaHQoKSwgYm9yZGVyVG9wKCkgKyBib3JkZXJCb3R0b20oKSkpOwogCiAgICAg
Ly8gU3VidHJhY3Qgb3V0IHNjcm9sbGJhcnMgaWYgd2UgaGF2ZSB0aGVtLgotICAgIGlmIChsYXll
cigpKQorICAgICBpZiAobGF5ZXIoKSkgeworI2lmIFVTRShSVExfU0NST0xMQkFSKQorICAgICAg
ICBpZiAoc3R5bGUoKS0+c2hvdWxkUGxhY2VCbG9ja0RpcmVjdGlvblNjcm9sbGJhck9uTG9naWNh
bExlZnQoKSkKKyAgICAgICAgICAgIGNsaXBSZWN0Lm1vdmUobGF5ZXIoKS0+dmVydGljYWxTY3Jv
bGxiYXJXaWR0aChyZWxldmFuY3kpLCAwKTsKKyNlbmRpZgogICAgICAgICBjbGlwUmVjdC5jb250
cmFjdChsYXllcigpLT52ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKHJlbGV2YW5jeSksIGxheWVyKCkt
Pmhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQocmVsZXZhbmN5KSk7CisgICAgIH0KIAogICAgIHJl
dHVybiBjbGlwUmVjdDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcAkocmV2aXNpb24gMTA2NjA3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5OCw2ICsxNzk4LDE3IEBAIGJvb2wg
UmVuZGVyTGF5ZXI6OmlzQWN0aXZlKCkgY29uc3QKICAgICByZXR1cm4gcGFnZSAmJiBwYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS0+aXNBY3RpdmUoKTsKIH0KIAorc3RhdGljIExheW91dFVuaXQgY29y
bmVyU3RhcnQoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyLCBpbnQgbWluWCwgaW50IG1heFgsIGlu
dCB0aGlja25lc3MpCit7CisjaWYgVVNFKFJUTF9TQ1JPTExCQVIpCisgICAgaWYgKGxheWVyLT5y
ZW5kZXJlcigpLT5zdHlsZSgpLT5zaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25M
b2dpY2FsTGVmdCgpKQorICAgICAgICByZXR1cm4gbWluWCArIGxheWVyLT5yZW5kZXJlcigpLT5z
dHlsZSgpLT5ib3JkZXJMZWZ0V2lkdGgoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG1pblgp
OworI2VuZGlmCisgICAgcmV0dXJuIG1heFggLSB0aGlja25lc3MgLSBsYXllci0+cmVuZGVyZXIo
KS0+c3R5bGUoKS0+Ym9yZGVyUmlnaHRXaWR0aCgpOworfQorCiBzdGF0aWMgSW50UmVjdCBjb3Ju
ZXJSZWN0KGNvbnN0IFJlbmRlckxheWVyKiBsYXllciwgY29uc3QgSW50UmVjdCYgYm91bmRzKQog
ewogICAgIGludCBob3Jpem9udGFsVGhpY2tuZXNzOwpAQCAtMTgxNyw3ICsxODI4LDcgQEAgc3Rh
dGljIEludFJlY3QgY29ybmVyUmVjdChjb25zdCBSZW5kZXJMYQogICAgICAgICBob3Jpem9udGFs
VGhpY2tuZXNzID0gbGF5ZXItPnZlcnRpY2FsU2Nyb2xsYmFyKCktPndpZHRoKCk7CiAgICAgICAg
IHZlcnRpY2FsVGhpY2tuZXNzID0gbGF5ZXItPmhvcml6b250YWxTY3JvbGxiYXIoKS0+aGVpZ2h0
KCk7CiAgICAgfQotICAgIHJldHVybiBJbnRSZWN0KGJvdW5kcy5tYXhYKCkgLSBob3Jpem9udGFs
VGhpY2tuZXNzIC0gbGF5ZXItPnJlbmRlcmVyKCktPnN0eWxlKCktPmJvcmRlclJpZ2h0V2lkdGgo
KSwgCisgICAgcmV0dXJuIEludFJlY3QoY29ybmVyU3RhcnQobGF5ZXIsIGJvdW5kcy54KCksIGJv
dW5kcy5tYXhYKCksIGhvcml6b250YWxUaGlja25lc3MpLAogICAgICAgICAgICAgICAgICAgIGJv
dW5kcy5tYXhZKCkgLSB2ZXJ0aWNhbFRoaWNrbmVzcyAtIGxheWVyLT5yZW5kZXJlcigpLT5zdHls
ZSgpLT5ib3JkZXJCb3R0b21XaWR0aCgpLAogICAgICAgICAgICAgICAgICAgIGhvcml6b250YWxU
aGlja25lc3MsIHZlcnRpY2FsVGhpY2tuZXNzKTsKIH0KQEAgLTE5NDAsMTUgKzE5NTEsMzggQEAg
SW50UG9pbnQgUmVuZGVyTGF5ZXI6OmN1cnJlbnRNb3VzZVBvc2l0aQogICAgIHJldHVybiByZW5k
ZXJlcigpLT5mcmFtZSgpID8gcmVuZGVyZXIoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmN1
cnJlbnRNb3VzZVBvc2l0aW9uKCkgOiBJbnRQb2ludCgpOwogfQogCitMYXlvdXRVbml0IFJlbmRl
ckxheWVyOjp2ZXJ0aWNhbFNjcm9sbGJhclN0YXJ0KGludCBtaW5YLCBpbnQgbWF4WCkgY29uc3QK
K3sKKyAgICBjb25zdCBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgpOworI2lmIFVTRShSVExf
U0NST0xMQkFSKQorICAgIGlmIChyZW5kZXJlcigpLT5zdHlsZSgpLT5zaG91bGRQbGFjZUJsb2Nr
RGlyZWN0aW9uU2Nyb2xsYmFyT25Mb2dpY2FsTGVmdCgpKQorICAgICAgICByZXR1cm4gbWluWCAr
IGJveC0+Ym9yZGVyTGVmdCgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obWluWCk7CisjZW5k
aWYKKyAgICByZXR1cm4gbWF4WCAtIGJveC0+Ym9yZGVyUmlnaHQoKSAtIG1fdkJhci0+d2lkdGgo
KTsKK30KKworTGF5b3V0VW5pdCBSZW5kZXJMYXllcjo6aG9yaXpvbnRhbFNjcm9sbGJhclN0YXJ0
KGludCBtaW5YKSBjb25zdAoreworICAgIGNvbnN0IFJlbmRlckJveCogYm94ID0gcmVuZGVyQm94
KCk7CisgICAgaW50IHggPSBtaW5YICsgYm94LT5ib3JkZXJMZWZ0KCk7CisjaWYgVVNFKFJUTF9T
Q1JPTExCQVIpCisgICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCktPnNob3VsZFBsYWNlQmxvY2tE
aXJlY3Rpb25TY3JvbGxiYXJPbkxvZ2ljYWxMZWZ0KCkpCisgICAgICAgIHggKz0gbV92QmFyID8g
bV92QmFyLT53aWR0aCgpIDogcmVzaXplckNvcm5lclJlY3QodGhpcywgYm94LT5ib3JkZXJCb3hS
ZWN0KCkpLndpZHRoKCk7CisjZW5kaWYKKyAgICByZXR1cm4geDsKK30KKwogSW50U2l6ZSBSZW5k
ZXJMYXllcjo6c2Nyb2xsYmFyT2Zmc2V0KGNvbnN0IFNjcm9sbGJhciogc2Nyb2xsYmFyKSBjb25z
dAogewogICAgIFJlbmRlckJveCogYm94ID0gcmVuZGVyQm94KCk7CiAKICAgICBpZiAoc2Nyb2xs
YmFyID09IG1fdkJhci5nZXQoKSkKLSAgICAgICAgcmV0dXJuIEludFNpemUoYm94LT53aWR0aCgp
IC0gYm94LT5ib3JkZXJSaWdodCgpIC0gc2Nyb2xsYmFyLT53aWR0aCgpLCBib3gtPmJvcmRlclRv
cCgpKTsKKyAgICAgICAgcmV0dXJuIEludFNpemUodmVydGljYWxTY3JvbGxiYXJTdGFydCgwLCBi
b3gtPndpZHRoKCkpLCBib3gtPmJvcmRlclRvcCgpKTsKIAogICAgIGlmIChzY3JvbGxiYXIgPT0g
bV9oQmFyLmdldCgpKQotICAgICAgICByZXR1cm4gSW50U2l6ZShib3gtPmJvcmRlckxlZnQoKSwg
Ym94LT5oZWlnaHQoKSAtIGJveC0+Ym9yZGVyQm90dG9tKCkgLSBzY3JvbGxiYXItPmhlaWdodCgp
KTsKKyAgICAgICAgcmV0dXJuIEludFNpemUoaG9yaXpvbnRhbFNjcm9sbGJhclN0YXJ0KDApLCBi
b3gtPmhlaWdodCgpIC0gYm94LT5ib3JkZXJCb3R0b20oKSAtIHNjcm9sbGJhci0+aGVpZ2h0KCkp
OwogICAgIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBJbnRTaXplKCk7
CkBAIC0xOTczLDkgKzIwMDcsOSBAQCB2b2lkIFJlbmRlckxheWVyOjppbnZhbGlkYXRlU2Nyb2xs
YmFyUmVjCiAgICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKICAgICBBU1NFUlQoYm94
KTsKICAgICBpZiAoc2Nyb2xsYmFyID09IG1fdkJhci5nZXQoKSkKLSAgICAgICAgc2Nyb2xsUmVj
dC5tb3ZlKGJveC0+d2lkdGgoKSAtIGJveC0+Ym9yZGVyUmlnaHQoKSAtIHNjcm9sbGJhci0+d2lk
dGgoKSwgYm94LT5ib3JkZXJUb3AoKSk7CisgICAgICAgIHNjcm9sbFJlY3QubW92ZSh2ZXJ0aWNh
bFNjcm9sbGJhclN0YXJ0KDAsIGJveC0+d2lkdGgoKSksIGJveC0+Ym9yZGVyVG9wKCkpOwogICAg
IGVsc2UKLSAgICAgICAgc2Nyb2xsUmVjdC5tb3ZlKGJveC0+Ym9yZGVyTGVmdCgpLCBib3gtPmhl
aWdodCgpIC0gYm94LT5ib3JkZXJCb3R0b20oKSAtIHNjcm9sbGJhci0+aGVpZ2h0KCkpOworICAg
ICAgICBzY3JvbGxSZWN0Lm1vdmUoaG9yaXpvbnRhbFNjcm9sbGJhclN0YXJ0KDApLCBib3gtPmhl
aWdodCgpIC0gYm94LT5ib3JkZXJCb3R0b20oKSAtIHNjcm9sbGJhci0+aGVpZ2h0KCkpOwogICAg
IHJlbmRlcmVyKCktPnJlcGFpbnRSZWN0YW5nbGUoc2Nyb2xsUmVjdCk7CiB9CiAKQEAgLTIxNTMs
MTMgKzIxODcsMTMgQEAgdm9pZCBSZW5kZXJMYXllcjo6cG9zaXRpb25PdmVyZmxvd0NvbnRybwog
ICAgIGNvbnN0IEludFJlY3QmIHNjcm9sbENvcm5lciA9IHNjcm9sbENvcm5lclJlY3QoKTsKICAg
ICBJbnRSZWN0IGFic0JvdW5kcyhib3JkZXJCb3gubG9jYXRpb24oKSArIG9mZnNldEZyb21MYXll
ciwgYm9yZGVyQm94LnNpemUoKSk7CiAgICAgaWYgKG1fdkJhcikKLSAgICAgICAgbV92QmFyLT5z
ZXRGcmFtZVJlY3QoSW50UmVjdChhYnNCb3VuZHMubWF4WCgpIC0gYm94LT5ib3JkZXJSaWdodCgp
IC0gbV92QmFyLT53aWR0aCgpLAorICAgICAgICBtX3ZCYXItPnNldEZyYW1lUmVjdChJbnRSZWN0
KHZlcnRpY2FsU2Nyb2xsYmFyU3RhcnQoYWJzQm91bmRzLngoKSwgYWJzQm91bmRzLm1heFgoKSks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzQm91bmRzLnkoKSArIGJv
eC0+Ym9yZGVyVG9wKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92
QmFyLT53aWR0aCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic0Jv
dW5kcy5oZWlnaHQoKSAtIChib3gtPmJvcmRlclRvcCgpICsgYm94LT5ib3JkZXJCb3R0b20oKSkg
LSBzY3JvbGxDb3JuZXIuaGVpZ2h0KCkpKTsKIAogICAgIGlmIChtX2hCYXIpCi0gICAgICAgIG1f
aEJhci0+c2V0RnJhbWVSZWN0KEludFJlY3QoYWJzQm91bmRzLngoKSArIGJveC0+Ym9yZGVyTGVm
dCgpLAorICAgICAgICBtX2hCYXItPnNldEZyYW1lUmVjdChJbnRSZWN0KGhvcml6b250YWxTY3Jv
bGxiYXJTdGFydChhYnNCb3VuZHMueCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhYnNCb3VuZHMubWF4WSgpIC0gYm94LT5ib3JkZXJCb3R0b20oKSAtIG1faEJhci0+
aGVpZ2h0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzQm91bmRz
LndpZHRoKCkgLSAoYm94LT5ib3JkZXJMZWZ0KCkgKyBib3gtPmJvcmRlclJpZ2h0KCkpIC0gc2Ny
b2xsQ29ybmVyLndpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9oQmFyLT5oZWlnaHQoKSkpOwpAQCAtMjU2MCw3ICsyNTk0LDcgQEAgYm9vbCBSZW5kZXJMYXll
cjo6aGl0VGVzdE92ZXJmbG93Q29udHJvbAogICAgIGludCByZXNpemVDb250cm9sU2l6ZSA9IG1h
eChyZXNpemVDb250cm9sUmVjdC5oZWlnaHQoKSwgMCk7CiAKICAgICBpZiAobV92QmFyICYmIG1f
dkJhci0+c2hvdWxkUGFydGljaXBhdGVJbkhpdFRlc3RpbmcoKSkgewotICAgICAgICBMYXlvdXRS
ZWN0IHZCYXJSZWN0KGJveC0+d2lkdGgoKSAtIGJveC0+Ym9yZGVyUmlnaHQoKSAtIG1fdkJhci0+
d2lkdGgoKSwgCisgICAgICAgIExheW91dFJlY3QgdkJhclJlY3QodmVydGljYWxTY3JvbGxiYXJT
dGFydCgwLCBib3gtPndpZHRoKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveC0+
Ym9yZGVyVG9wKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92QmFyLT53aWR0aCgp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveC0+aGVpZ2h0KCkgLSAoYm94LT5ib3Jk
ZXJUb3AoKSArIGJveC0+Ym9yZGVyQm90dG9tKCkpIC0gKG1faEJhciA/IG1faEJhci0+aGVpZ2h0
KCkgOiByZXNpemVDb250cm9sU2l6ZSkpOwpAQCAtMjU3Miw3ICsyNjA2LDcgQEAgYm9vbCBSZW5k
ZXJMYXllcjo6aGl0VGVzdE92ZXJmbG93Q29udHJvbAogCiAgICAgcmVzaXplQ29udHJvbFNpemUg
PSBtYXgocmVzaXplQ29udHJvbFJlY3Qud2lkdGgoKSwgMCk7CiAgICAgaWYgKG1faEJhciAmJiBt
X2hCYXItPnNob3VsZFBhcnRpY2lwYXRlSW5IaXRUZXN0aW5nKCkpIHsKLSAgICAgICAgTGF5b3V0
UmVjdCBoQmFyUmVjdChib3gtPmJvcmRlckxlZnQoKSwKKyAgICAgICAgTGF5b3V0UmVjdCBoQmFy
UmVjdChob3Jpem9udGFsU2Nyb2xsYmFyU3RhcnQoMCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm94LT5oZWlnaHQoKSAtIGJveC0+Ym9yZGVyQm90dG9tKCkgLSBtX2hCYXItPmhlaWdo
dCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveC0+d2lkdGgoKSAtIChib3gtPmJv
cmRlckxlZnQoKSArIGJveC0+Ym9yZGVyUmlnaHQoKSkgLSAobV92QmFyID8gbV92QmFyLT53aWR0
aCgpIDogcmVzaXplQ29udHJvbFNpemUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
aEJhci0+aGVpZ2h0KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmgJKHJldmlzaW9uIDEwNjYwNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC03NTAsNiArNzUwLDkgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIDsKICAgICB9CiAKKyAgICBMYXlvdXRVbml0IHZlcnRpY2FsU2Nyb2xsYmFyU3RhcnQo
aW50IG1pblgsIGludCBtYXhYKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGhvcml6b250YWxTY3Jv
bGxiYXJTdGFydChpbnQgbWluWCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICAvLyBUaGUgYml0
ZmllbGRzIGFyZSB1cCBoZXJlIHNvIHRoZXkgd2lsbCBmYWxsIGludG8gdGhlIHBhZGRpbmcgZnJv
bSBTY3JvbGxhYmxlQXJlYSBvbiA2NC1iaXQuCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAxMDY2MDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAt
OTYyLDYgKzk2Miw4IEBAIHB1YmxpYzoKICNlbHNlCiAgICAgYm9vbCBoYXNGaWx0ZXIoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCisKKyAgICBib29sIHNob3VsZFBsYWNlQmxvY2tE
aXJlY3Rpb25TY3JvbGxiYXJPbkxvZ2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gIWlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKSAmJiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpOyB9CiAgICAgICAg
IAogLy8gYXR0cmlidXRlIHNldHRlciBtZXRob2RzCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMDY2NDMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAyLTAzICBIaXJvbm9y
aSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbmRlciBvdmVyZmxvdyBj
b250cm9scyBvZiBhbiBSVEwgZWxlbWVudCB0byBpdHMgbGVmdC1zaWRlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ2MjMKKworICAgICAgICBUaGlz
IGNoYW5nZSBzZXRzIGEgbmV3IGZsYWcgV1RGX1VTRV9SVExfU0NST0xMQkFSIG9uIENocm9taXVt
IHNvIHdlIGNhbgorICAgICAgICByZW5kZXIgdGhlIHZlcnRpY2FsIHNjcm9sbGJhcnMgYW5kIHJl
c2l6ZXJzIG9mIFJUTCBlbGVtZW50cyB0byB0aGVpcgorICAgICAgICBsZWZ0IHNpZGUuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmZWF0dXJlcy5n
eXBpOiBTZXQgV1RGX1VTRV9SVExfU0NST0xMQkFSIHRvIDEgb24gQ2hyb21pdW0uCisKIDIwMTIt
MDItMDIgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CiAKICAgICAgICAg
W2Nocm9taXVtXSBNZWRpYVN0cmVhbSBBUEk6IEFkZGluZyB0aGUgZW1iZWRkaW5nIGNvZGUgZm9y
IE1lZGlhU3RyZWFtQ2VudGVyCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVz
Lmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBp
CShyZXZpc2lvbiAxMDY2MDcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5
cGkJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw2ICsxMDYsNyBAQAogICAgICAgIyBXZSBjYW4ndCBk
ZWZpbmUgaXQgaGVyZSBiZWNhdXNlIGl0IHNob3VsZCBiZSBwcmVzZW50IG9ubHkKICAgICAgICMg
aW4gRGVidWcgb3IgcmVsZWFzZV92YWxncmluZF9idWlsZD0xIGJ1aWxkcy4KICAgICAgICdXVEZf
VVNFX09QRU5UWVBFX1NBTklUSVpFUj0xJywKKyAgICAgICdXVEZfVVNFX1JUTF9TQ1JPTExCQVI9
MScsCiAgICAgICAnV1RGX1VTRV9TS0lBX1RFWFQ9PChlbmFibGVfc2tpYV90ZXh0KScsCiAgICAg
ICAnV1RGX1VTRV9XRUJQPTEnLAogICAgICAgJ1dURl9VU0VfV0VCS0lUX0lNQUdFX0RFQ09ERVJT
PTEnLApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2NjQzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDItMDMgIEhpcm9ub3JpIEJv
bm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuZGVyIG92ZXJmbG93IGNvbnRy
b2xzIG9mIGFuIFJUTCBlbGVtZW50IHRvIGl0cyBsZWZ0LXNpZGUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDYyMworCisgICAgICAgIFRoaXMgY2hh
bmdlIGFkZHMgYSBuZXcgZmxhZyBXVEZfVVNFX1JUTF9TQ1JPTExCQVIgYW5kIHJlbmRlciB0aGUK
KyAgICAgICAgdmVydGljYWwgc2Nyb2xsYmFycyBhbmQgcmVzaXplcnMgb2YgUlRMIGVsZW1lbnRz
IHRvIHRoZWlyIGxlZnQgc2lkZSBpZgorICAgICAgICB0aGlzIG5ldyBmbGFnIGlzIGVuYWJsZWQu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy9ydGwtc2Nyb2xsYmFyLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvcnRsLXNjcm9sbGJh
ci5odG1sOiBBZGRlZC4KKwogMjAxMi0wMS0yNyAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIEltcGxlbWVudCB0b3VjaCBldmVudCBlbXVsYXRpb24g
aW4gdGhlIFdlYkNvcmUgbGF5ZXIKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2Zhc3QvZXZlbnRzL3J0bC1zY3JvbGxiYXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3J0bC1zY3JvbGxiYXItZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
ZmFzdC9ldmVudHMvcnRsLXNjcm9sbGJhci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTAgQEAKK1Rlc3QgdGhhdCB3ZSBjYW4gc2Nyb2xsIGRvd24gYW4gUlRMIGVsZW1lbnQg
d2l0aCBpdHMgbGVmdC1zaWRlIHNjcm9sbGJhci4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
UEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3ZlcmZsb3cnKS5zY3JvbGxUb3AgPiBzY3Jv
bGxUb3AgaXMgdHJ1ZQorCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0
L2V2ZW50cy9ydGwtc2Nyb2xsYmFyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvcnRsLXNjcm9sbGJhci5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvcnRsLXNjcm9s
bGJhci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgc3R5bGU9Im1hcmdp
bjowIj4KKzxkaXYgaWQ9Im92ZXJmbG93IiBkaXI9InJ0bCIgc3R5bGU9ImJvcmRlcjoycHggc29s
aWQgYmxhY2s7b3ZlcmZsb3c6YXV0bztoZWlnaHQ6NDAwcHg7d2lkdGg6NDAwcHg7IHBvc2l0aW9u
OmFic29sdXRlOyI+Cis8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOnJlZDtoZWlnaHQ6NzIw
cHgiPjwvZGl2PgorPGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjpncmVlbjtoZWlnaHQ6MTYw
MHB4Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCB3
ZSBjYW4gc2Nyb2xsIGRvd24gYW4gUlRMIGVsZW1lbnQgd2l0aCBpdHMgbGVmdC1zaWRlIHNjcm9s
bGJhci4nKTsKKwordmFyIHNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvdmVy
ZmxvdycpLnNjcm9sbFRvcDsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2lmICh3aW5kb3cuZXZl
bnRTZW5kZXIpIHsKKyAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvdmVy
ZmxvdycpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKG5vZGUub2Zmc2V0TGVmdCArIDUs
IG5vZGUub2Zmc2V0VG9wICsgbm9kZS5vZmZzZXRIZWlnaHQgLSA1MCk7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIHNldFRpbWVv
dXQoZmluaXNoZWQsIDApOworfQorCitmdW5jdGlvbiBmaW5pc2hlZCgpCit7CisgICAgc2hvdWxk
QmVUcnVlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ292ZXJmbG93XCcpLnNjcm9sbFRvcCA+
IHNjcm9sbFRvcCcpOworICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="126782"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="126789"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127350</attachid>
            <date>2012-02-16 03:32:45 -0800</date>
            <delta_ts>2012-03-01 22:23:28 -0800</delta_ts>
            <desc>Patch v11 (Applied comments from Eric)</desc>
            <filename>issue54623-patch11.txt</filename>
            <type>text/plain</type>
            <size>15671</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNzkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDEyLTAyLTE1ICBIaXJvbm9y
aSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbmRlciBvdmVyZmxvdyBj
b250cm9scyBvZiBhbiBSVEwgZWxlbWVudCB0byBpdHMgbGVmdC1zaWRlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ2MjMKKworICAgICAgICBUaGlz
IGNoYW5nZSBhZGRzIGEgbmV3IGZsYWcgV1RGX1VTRV9SVExfU0NST0xMQkFSIGFuZCByZW5kZXIg
dGhlCisgICAgICAgIHZlcnRpY2FsIHNjcm9sbGJhcnMgYW5kIHJlc2l6ZXJzIG9mIFJUTCBlbGVt
ZW50cyB0byB0aGVpciBsZWZ0IHNpZGUgaWYKKyAgICAgICAgdGhpcyBuZXcgZmxhZyBpcyBlbmFi
bGVkLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
c3Q6IHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3J0bC1zY3JvbGxiYXIuaHRtbAorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjphZGRPdmVyZmxvd0Zyb21Qb3NpdGlvbmVkT2JqZWN0cyk6IE1vdmUgY2hpbGQg
ZWxlbWVudHMgcmlnaHQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZGV0ZXJtaW5l
TG9naWNhbExlZnRQb3NpdGlvbkZvckNoaWxkKTogZGl0dG8uCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om92ZXJmbG93Q2xp
cFJlY3QpOiBNb3ZlIHRoZSBjb250ZW50IHJlY3RhbmdsZSByaWdodC4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29ybmVyU3RhcnQpOiBB
ZGRlZCBhIGZ1bmN0aW9uIHRoYXQgY2FsY3VsYXRlcyB0aGUgWCBwb3NpdGlvbiBvZiBhIHJlc2l6
ZXIuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcm5lclJlY3QpOiBV
c2UgY29ybmVyU3RhcnQgdG8gbW92ZSBhIHJlc2l6ZXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6dmVydGljYWxTY3JvbGxiYXJTdGFydCk6IEFkZGVkIGEgZnVuY3Rpb24gdGhhdCBj
YWxjdWxhdGVzCisgICAgICAgIHRoZSBYIHBvc2l0aW9uIG9mIGEgdmVydGljYWwgc2Nyb2xsYmFy
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Omhvcml6b250YWxTY3JvbGxiYXJTdGFy
dCk6IEFkZGVkIGEgZnVuY3Rpb24gdGhhdCBjYWxjdWxhdGVzCisgICAgICAgIHRoZSBYIHBvc2l0
aW9uIG9mIGEgaG9yaXpvbnRhbCBzY3JvbGxiYXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6c2Nyb2xsYmFyT2Zmc2V0KTogUmVuZGVyIGEgdmVydGljYWwgc2Nyb2xsYmFyIHRvIHRo
ZSBsZWZ0IHNpZGUKKyAgICAgICAgYW5kIG1vdmUgYSBob3Jpem9udGFsIHNjcm9sbGJhciByaWdo
dCBieSB0aGUgd2lkdGggb2YgdGhlIHZlcnRpY2FsIHNjcm9sbGJhci4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjppbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdCk6IGRpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBvc2l0aW9uT3ZlcmZsb3dDb250cm9scyk6IGRpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RPdmVyZmxvd0NvbnRyb2xz
KTogZGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgIChS
ZW5kZXJMYXllcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6IEFk
ZGVkIHNob3VsZFBsYWNlQmxvY2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxvZ2ljYWxMZWZ0LAorICAg
ICAgICB3aGljaCByZXR1cm5zIGlmIHdlIG5lZWQgdG8gbW92ZSBhIGxlZnQgc2Nyb2xsYmFyIHRv
IGl0cyByaWdodCBzaWRlLgorCiAyMDEyLTAyLTE1ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9n
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFdpbmRvd3MgYnVpbGQgZml4IGZvciAhRU5BQkxFKENT
U19GSUxURVJTKSBhZnRlciByMTA2NTkzLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCShyZXZpc2lvbiAxMDc4NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQ0LDggKzE1NDQsMTIg
QEAgdm9pZCBSZW5kZXJCbG9jazo6YWRkT3ZlcmZsb3dGcm9tUG9zaXRpbwogICAgICAgICBwb3Np
dGlvbmVkT2JqZWN0ID0gKml0OwogICAgICAgICAKICAgICAgICAgLy8gRml4ZWQgcG9zaXRpb25l
ZCBlbGVtZW50cyBkb24ndCBjb250cmlidXRlIHRvIGxheW91dCBvdmVyZmxvdywgc2luY2UgdGhl
eSBkb24ndCBzY3JvbGwgd2l0aCB0aGUgY29udGVudC4KLSAgICAgICAgaWYgKHBvc2l0aW9uZWRP
YmplY3QtPnN0eWxlKCktPnBvc2l0aW9uKCkgIT0gRml4ZWRQb3NpdGlvbikKLSAgICAgICAgICAg
IGFkZE92ZXJmbG93RnJvbUNoaWxkKHBvc2l0aW9uZWRPYmplY3QpOworICAgICAgICBpZiAocG9z
aXRpb25lZE9iamVjdC0+c3R5bGUoKS0+cG9zaXRpb24oKSAhPSBGaXhlZFBvc2l0aW9uKSB7Cisg
ICAgICAgICAgICBpbnQgeCA9IHBvc2l0aW9uZWRPYmplY3QtPngoKTsKKyAgICAgICAgICAgIGlm
IChzdHlsZSgpLT5zaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25Mb2dpY2FsTGVm
dCgpKQorICAgICAgICAgICAgICAgIHggLT0gdmVydGljYWxTY3JvbGxiYXJXaWR0aCgpOworICAg
ICAgICAgICAgYWRkT3ZlcmZsb3dGcm9tQ2hpbGQocG9zaXRpb25lZE9iamVjdCwgSW50U2l6ZSh4
LCBwb3NpdGlvbmVkT2JqZWN0LT55KCkpKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtMTkz
OCw2ICsxOTQyLDggQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6Y29tcHV0ZVN0YXJ0UG9zaQog
dm9pZCBSZW5kZXJCbG9jazo6ZGV0ZXJtaW5lTG9naWNhbExlZnRQb3NpdGlvbkZvckNoaWxkKFJl
bmRlckJveCogY2hpbGQpCiB7CiAgICAgTGF5b3V0VW5pdCBzdGFydFBvc2l0aW9uID0gYm9yZGVy
U3RhcnQoKSArIHBhZGRpbmdTdGFydCgpOworICAgIGlmIChzdHlsZSgpLT5zaG91bGRQbGFjZUJs
b2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25Mb2dpY2FsTGVmdCgpKQorICAgICAgICBzdGFydFBvc2l0
aW9uIC09IHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoKTsKICAgICBMYXlvdXRVbml0IHRvdGFsQXZh
aWxhYmxlTG9naWNhbFdpZHRoID0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpICsgYXZh
aWxhYmxlTG9naWNhbFdpZHRoKCk7CiAKICAgICAvLyBBZGQgaW4gb3VyIHN0YXJ0IG1hcmdpbi4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiAxMDc4
NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIxNyw4ICsxMjE3LDExIEBAIExheW91dFJlY3QgUmVuZGVyQm94OjpvdmVyZmxv
d0NsaXBSZWN0KGMKICAgICBjbGlwUmVjdC5zZXRTaXplKGNsaXBSZWN0LnNpemUoKSAtIExheW91
dFNpemUoYm9yZGVyTGVmdCgpICsgYm9yZGVyUmlnaHQoKSwgYm9yZGVyVG9wKCkgKyBib3JkZXJC
b3R0b20oKSkpOwogCiAgICAgLy8gU3VidHJhY3Qgb3V0IHNjcm9sbGJhcnMgaWYgd2UgaGF2ZSB0
aGVtLgotICAgIGlmIChsYXllcigpKQorICAgICBpZiAobGF5ZXIoKSkgeworICAgICAgICBpZiAo
c3R5bGUoKS0+c2hvdWxkUGxhY2VCbG9ja0RpcmVjdGlvblNjcm9sbGJhck9uTG9naWNhbExlZnQo
KSkKKyAgICAgICAgICAgIGNsaXBSZWN0Lm1vdmUobGF5ZXIoKS0+dmVydGljYWxTY3JvbGxiYXJX
aWR0aChyZWxldmFuY3kpLCAwKTsKICAgICAgICAgY2xpcFJlY3QuY29udHJhY3QobGF5ZXIoKS0+
dmVydGljYWxTY3JvbGxiYXJXaWR0aChyZWxldmFuY3kpLCBsYXllcigpLT5ob3Jpem9udGFsU2Ny
b2xsYmFySGVpZ2h0KHJlbGV2YW5jeSkpOworICAgICB9CiAKICAgICByZXR1cm4gY2xpcFJlY3Q7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlz
aW9uIDEwNzg3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE4MjksNiArMTgyOSwxMyBAQCBib29sIFJlbmRlckxheWVyOjpp
c0FjdGl2ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCktPmlzQWN0aXZlKCk7CiB9CiAKK3N0YXRpYyBMYXlvdXRVbml0IGNvcm5lclN0YXJ0KGNvbnN0
IFJlbmRlckxheWVyKiBsYXllciwgaW50IG1pblgsIGludCBtYXhYLCBpbnQgdGhpY2tuZXNzKQor
eworICAgIGlmIChsYXllci0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+c2hvdWxkUGxhY2VCbG9ja0Rp
cmVjdGlvblNjcm9sbGJhck9uTG9naWNhbExlZnQoKSkKKyAgICAgICAgcmV0dXJuIG1pblggKyBs
YXllci0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Ym9yZGVyTGVmdFdpZHRoKCk7CisgICAgcmV0dXJu
IG1heFggLSB0aGlja25lc3MgLSBsYXllci0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Ym9yZGVyUmln
aHRXaWR0aCgpOworfQorCiBzdGF0aWMgSW50UmVjdCBjb3JuZXJSZWN0KGNvbnN0IFJlbmRlckxh
eWVyKiBsYXllciwgY29uc3QgSW50UmVjdCYgYm91bmRzKQogewogICAgIGludCBob3Jpem9udGFs
VGhpY2tuZXNzOwpAQCAtMTg0OCw3ICsxODU1LDcgQEAgc3RhdGljIEludFJlY3QgY29ybmVyUmVj
dChjb25zdCBSZW5kZXJMYQogICAgICAgICBob3Jpem9udGFsVGhpY2tuZXNzID0gbGF5ZXItPnZl
cnRpY2FsU2Nyb2xsYmFyKCktPndpZHRoKCk7CiAgICAgICAgIHZlcnRpY2FsVGhpY2tuZXNzID0g
bGF5ZXItPmhvcml6b250YWxTY3JvbGxiYXIoKS0+aGVpZ2h0KCk7CiAgICAgfQotICAgIHJldHVy
biBJbnRSZWN0KGJvdW5kcy5tYXhYKCkgLSBob3Jpem9udGFsVGhpY2tuZXNzIC0gbGF5ZXItPnJl
bmRlcmVyKCktPnN0eWxlKCktPmJvcmRlclJpZ2h0V2lkdGgoKSwgCisgICAgcmV0dXJuIEludFJl
Y3QoY29ybmVyU3RhcnQobGF5ZXIsIGJvdW5kcy54KCksIGJvdW5kcy5tYXhYKCksIGhvcml6b250
YWxUaGlja25lc3MpLAogICAgICAgICAgICAgICAgICAgIGJvdW5kcy5tYXhZKCkgLSB2ZXJ0aWNh
bFRoaWNrbmVzcyAtIGxheWVyLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5ib3JkZXJCb3R0b21XaWR0
aCgpLAogICAgICAgICAgICAgICAgICAgIGhvcml6b250YWxUaGlja25lc3MsIHZlcnRpY2FsVGhp
Y2tuZXNzKTsKIH0KQEAgLTE5NzEsMTUgKzE5NzgsMzIgQEAgSW50UG9pbnQgUmVuZGVyTGF5ZXI6
OmN1cnJlbnRNb3VzZVBvc2l0aQogICAgIHJldHVybiByZW5kZXJlcigpLT5mcmFtZSgpID8gcmVu
ZGVyZXIoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmN1cnJlbnRNb3VzZVBvc2l0aW9uKCkg
OiBJbnRQb2ludCgpOwogfQogCitMYXlvdXRVbml0IFJlbmRlckxheWVyOjp2ZXJ0aWNhbFNjcm9s
bGJhclN0YXJ0KGludCBtaW5YLCBpbnQgbWF4WCkgY29uc3QKK3sKKyAgICBjb25zdCBSZW5kZXJC
b3gqIGJveCA9IHJlbmRlckJveCgpOworICAgIGlmIChyZW5kZXJlcigpLT5zdHlsZSgpLT5zaG91
bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25Mb2dpY2FsTGVmdCgpKQorICAgICAgICBy
ZXR1cm4gbWluWCArIGJveC0+Ym9yZGVyTGVmdCgpOworICAgIHJldHVybiBtYXhYIC0gYm94LT5i
b3JkZXJSaWdodCgpIC0gbV92QmFyLT53aWR0aCgpOworfQorCitMYXlvdXRVbml0IFJlbmRlckxh
eWVyOjpob3Jpem9udGFsU2Nyb2xsYmFyU3RhcnQoaW50IG1pblgpIGNvbnN0Cit7CisgICAgY29u
c3QgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKKyAgICBpbnQgeCA9IG1pblggKyBib3gt
PmJvcmRlckxlZnQoKTsKKyAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS0+c2hvdWxkUGxhY2VC
bG9ja0RpcmVjdGlvblNjcm9sbGJhck9uTG9naWNhbExlZnQoKSkKKyAgICAgICAgeCArPSBtX3ZC
YXIgPyBtX3ZCYXItPndpZHRoKCkgOiByZXNpemVyQ29ybmVyUmVjdCh0aGlzLCBib3gtPmJvcmRl
ckJveFJlY3QoKSkud2lkdGgoKTsKKyAgICByZXR1cm4geDsKK30KKwogSW50U2l6ZSBSZW5kZXJM
YXllcjo6c2Nyb2xsYmFyT2Zmc2V0KGNvbnN0IFNjcm9sbGJhciogc2Nyb2xsYmFyKSBjb25zdAog
ewogICAgIFJlbmRlckJveCogYm94ID0gcmVuZGVyQm94KCk7CiAKICAgICBpZiAoc2Nyb2xsYmFy
ID09IG1fdkJhci5nZXQoKSkKLSAgICAgICAgcmV0dXJuIEludFNpemUoYm94LT53aWR0aCgpIC0g
Ym94LT5ib3JkZXJSaWdodCgpIC0gc2Nyb2xsYmFyLT53aWR0aCgpLCBib3gtPmJvcmRlclRvcCgp
KTsKKyAgICAgICAgcmV0dXJuIEludFNpemUodmVydGljYWxTY3JvbGxiYXJTdGFydCgwLCBib3gt
PndpZHRoKCkpLCBib3gtPmJvcmRlclRvcCgpKTsKIAogICAgIGlmIChzY3JvbGxiYXIgPT0gbV9o
QmFyLmdldCgpKQotICAgICAgICByZXR1cm4gSW50U2l6ZShib3gtPmJvcmRlckxlZnQoKSwgYm94
LT5oZWlnaHQoKSAtIGJveC0+Ym9yZGVyQm90dG9tKCkgLSBzY3JvbGxiYXItPmhlaWdodCgpKTsK
KyAgICAgICAgcmV0dXJuIEludFNpemUoaG9yaXpvbnRhbFNjcm9sbGJhclN0YXJ0KDApLCBib3gt
PmhlaWdodCgpIC0gYm94LT5ib3JkZXJCb3R0b20oKSAtIHNjcm9sbGJhci0+aGVpZ2h0KCkpOwog
ICAgIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBJbnRTaXplKCk7CkBA
IC0yMDA0LDkgKzIwMjgsOSBAQCB2b2lkIFJlbmRlckxheWVyOjppbnZhbGlkYXRlU2Nyb2xsYmFy
UmVjCiAgICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKICAgICBBU1NFUlQoYm94KTsK
ICAgICBpZiAoc2Nyb2xsYmFyID09IG1fdkJhci5nZXQoKSkKLSAgICAgICAgc2Nyb2xsUmVjdC5t
b3ZlKGJveC0+d2lkdGgoKSAtIGJveC0+Ym9yZGVyUmlnaHQoKSAtIHNjcm9sbGJhci0+d2lkdGgo
KSwgYm94LT5ib3JkZXJUb3AoKSk7CisgICAgICAgIHNjcm9sbFJlY3QubW92ZSh2ZXJ0aWNhbFNj
cm9sbGJhclN0YXJ0KDAsIGJveC0+d2lkdGgoKSksIGJveC0+Ym9yZGVyVG9wKCkpOwogICAgIGVs
c2UKLSAgICAgICAgc2Nyb2xsUmVjdC5tb3ZlKGJveC0+Ym9yZGVyTGVmdCgpLCBib3gtPmhlaWdo
dCgpIC0gYm94LT5ib3JkZXJCb3R0b20oKSAtIHNjcm9sbGJhci0+aGVpZ2h0KCkpOworICAgICAg
ICBzY3JvbGxSZWN0Lm1vdmUoaG9yaXpvbnRhbFNjcm9sbGJhclN0YXJ0KDApLCBib3gtPmhlaWdo
dCgpIC0gYm94LT5ib3JkZXJCb3R0b20oKSAtIHNjcm9sbGJhci0+aGVpZ2h0KCkpOwogICAgIHJl
bmRlcmVyKCktPnJlcGFpbnRSZWN0YW5nbGUoc2Nyb2xsUmVjdCk7CiB9CiAKQEAgLTIxNzEsMTMg
KzIxOTUsMTMgQEAgdm9pZCBSZW5kZXJMYXllcjo6cG9zaXRpb25PdmVyZmxvd0NvbnRybwogICAg
IGNvbnN0IEludFJlY3QmIHNjcm9sbENvcm5lciA9IHNjcm9sbENvcm5lclJlY3QoKTsKICAgICBJ
bnRSZWN0IGFic0JvdW5kcyhib3JkZXJCb3gubG9jYXRpb24oKSArIG9mZnNldEZyb21MYXllciwg
Ym9yZGVyQm94LnNpemUoKSk7CiAgICAgaWYgKG1fdkJhcikKLSAgICAgICAgbV92QmFyLT5zZXRG
cmFtZVJlY3QoSW50UmVjdChhYnNCb3VuZHMubWF4WCgpIC0gYm94LT5ib3JkZXJSaWdodCgpIC0g
bV92QmFyLT53aWR0aCgpLAorICAgICAgICBtX3ZCYXItPnNldEZyYW1lUmVjdChJbnRSZWN0KHZl
cnRpY2FsU2Nyb2xsYmFyU3RhcnQoYWJzQm91bmRzLngoKSwgYWJzQm91bmRzLm1heFgoKSksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzQm91bmRzLnkoKSArIGJveC0+
Ym9yZGVyVG9wKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92QmFy
LT53aWR0aCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic0JvdW5k
cy5oZWlnaHQoKSAtIChib3gtPmJvcmRlclRvcCgpICsgYm94LT5ib3JkZXJCb3R0b20oKSkgLSBz
Y3JvbGxDb3JuZXIuaGVpZ2h0KCkpKTsKIAogICAgIGlmIChtX2hCYXIpCi0gICAgICAgIG1faEJh
ci0+c2V0RnJhbWVSZWN0KEludFJlY3QoYWJzQm91bmRzLngoKSArIGJveC0+Ym9yZGVyTGVmdCgp
LAorICAgICAgICBtX2hCYXItPnNldEZyYW1lUmVjdChJbnRSZWN0KGhvcml6b250YWxTY3JvbGxi
YXJTdGFydChhYnNCb3VuZHMueCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhYnNCb3VuZHMubWF4WSgpIC0gYm94LT5ib3JkZXJCb3R0b20oKSAtIG1faEJhci0+aGVp
Z2h0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzQm91bmRzLndp
ZHRoKCkgLSAoYm94LT5ib3JkZXJMZWZ0KCkgKyBib3gtPmJvcmRlclJpZ2h0KCkpIC0gc2Nyb2xs
Q29ybmVyLndpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9o
QmFyLT5oZWlnaHQoKSkpOwpAQCAtMjU4OCw3ICsyNjEyLDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6
aGl0VGVzdE92ZXJmbG93Q29udHJvbAogICAgIGludCByZXNpemVDb250cm9sU2l6ZSA9IG1heChy
ZXNpemVDb250cm9sUmVjdC5oZWlnaHQoKSwgMCk7CiAKICAgICBpZiAobV92QmFyICYmIG1fdkJh
ci0+c2hvdWxkUGFydGljaXBhdGVJbkhpdFRlc3RpbmcoKSkgewotICAgICAgICBMYXlvdXRSZWN0
IHZCYXJSZWN0KGJveC0+d2lkdGgoKSAtIGJveC0+Ym9yZGVyUmlnaHQoKSAtIG1fdkJhci0+d2lk
dGgoKSwgCisgICAgICAgIExheW91dFJlY3QgdkJhclJlY3QodmVydGljYWxTY3JvbGxiYXJTdGFy
dCgwLCBib3gtPndpZHRoKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveC0+Ym9y
ZGVyVG9wKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92QmFyLT53aWR0aCgpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveC0+aGVpZ2h0KCkgLSAoYm94LT5ib3JkZXJU
b3AoKSArIGJveC0+Ym9yZGVyQm90dG9tKCkpIC0gKG1faEJhciA/IG1faEJhci0+aGVpZ2h0KCkg
OiByZXNpemVDb250cm9sU2l6ZSkpOwpAQCAtMjYwMCw3ICsyNjI0LDcgQEAgYm9vbCBSZW5kZXJM
YXllcjo6aGl0VGVzdE92ZXJmbG93Q29udHJvbAogCiAgICAgcmVzaXplQ29udHJvbFNpemUgPSBt
YXgocmVzaXplQ29udHJvbFJlY3Qud2lkdGgoKSwgMCk7CiAgICAgaWYgKG1faEJhciAmJiBtX2hC
YXItPnNob3VsZFBhcnRpY2lwYXRlSW5IaXRUZXN0aW5nKCkpIHsKLSAgICAgICAgTGF5b3V0UmVj
dCBoQmFyUmVjdChib3gtPmJvcmRlckxlZnQoKSwKKyAgICAgICAgTGF5b3V0UmVjdCBoQmFyUmVj
dChob3Jpem9udGFsU2Nyb2xsYmFyU3RhcnQoMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm94LT5oZWlnaHQoKSAtIGJveC0+Ym9yZGVyQm90dG9tKCkgLSBtX2hCYXItPmhlaWdodCgp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveC0+d2lkdGgoKSAtIChib3gtPmJvcmRl
ckxlZnQoKSArIGJveC0+Ym9yZGVyUmlnaHQoKSkgLSAobV92QmFyID8gbV92QmFyLT53aWR0aCgp
IDogcmVzaXplQ29udHJvbFNpemUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faEJh
ci0+aGVpZ2h0KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgJ
KHJldmlzaW9uIDEwNzg3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC03NTQsNiArNzU0LDkgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIDsKICAgICB9CiAKKyAgICBMYXlvdXRVbml0IHZlcnRpY2FsU2Nyb2xsYmFyU3RhcnQoaW50
IG1pblgsIGludCBtYXhYKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGhvcml6b250YWxTY3JvbGxi
YXJTdGFydChpbnQgbWluWCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICAvLyBUaGUgYml0Zmll
bGRzIGFyZSB1cCBoZXJlIHNvIHRoZXkgd2lsbCBmYWxsIGludG8gdGhlIHBhZGRpbmcgZnJvbSBT
Y3JvbGxhYmxlQXJlYSBvbiA2NC1iaXQuCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAxMDc4NzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTYy
LDYgKzk2MiwxMiBAQCBwdWJsaWM6CiAjZWxzZQogICAgIGJvb2wgaGFzRmlsdGVyKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgorCisjaWYgVVNFKFJUTF9TQ1JPTExCQVIpCisgICAg
Ym9vbCBzaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25Mb2dpY2FsTGVmdCgpIGNv
bnN0IHsgcmV0dXJuICFpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgJiYgaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKTsgfQorI2Vsc2UKKyAgICBib29sIHNob3VsZFBsYWNlQmxvY2tEaXJlY3Rpb25T
Y3JvbGxiYXJPbkxvZ2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgog
ICAgICAgICAKIC8vIGF0dHJpYnV0ZSBzZXR0ZXIgbWV0aG9kcwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTA3OTAwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wMi0xNSAg
SGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5kZXIgb3Zl
cmZsb3cgY29udHJvbHMgb2YgYW4gUlRMIGVsZW1lbnQgdG8gaXRzIGxlZnQtc2lkZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NjIzCisKKyAgICAg
ICAgVGhpcyBjaGFuZ2UgYWRkcyBhIG5ldyBmbGFnIFdURl9VU0VfUlRMX1NDUk9MTEJBUiBhbmQg
cmVuZGVyIHRoZQorICAgICAgICB2ZXJ0aWNhbCBzY3JvbGxiYXJzIGFuZCByZXNpemVycyBvZiBS
VEwgZWxlbWVudHMgdG8gdGhlaXIgbGVmdCBzaWRlIGlmCisgICAgICAgIHRoaXMgbmV3IGZsYWcg
aXMgZW5hYmxlZC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGZlYXR1cmVzLmd5cGk6IFNldCBXVEZfVVNFX1JUTF9TQ1JPTExCQVIgdG8gMSBvbiBD
aHJvbWl1bS4KKwogMjAxMi0wMi0xNSAgU2FtaSBLeW9zdGlsYSAgPHNreW9zdGlsQGdvb2dsZS5j
b20+CiAKICAgICAgICAgRW5hYmxlIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nIENTUyBwcm9w
ZXJ0eQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQkocmV2aXNpb24gMTA3
ODc4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDUsNiArMTA1LDcgQEAKICAgICAgICMgV2UgY2FuJ3QgZGVmaW5lIGl0IGhlcmUg
YmVjYXVzZSBpdCBzaG91bGQgYmUgcHJlc2VudCBvbmx5CiAgICAgICAjIGluIERlYnVnIG9yIHJl
bGVhc2VfdmFsZ3JpbmRfYnVpbGQ9MSBidWlsZHMuCiAgICAgICAnV1RGX1VTRV9PUEVOVFlQRV9T
QU5JVElaRVI9MScsCisgICAgICAnV1RGX1VTRV9SVExfU0NST0xMQkFSPTEnLAogICAgICAgJ1dU
Rl9VU0VfU0tJQV9URVhUPTwoZW5hYmxlX3NraWFfdGV4dCknLAogICAgICAgJ1dURl9VU0VfV0VC
UD0xJywKICAgICAgICdXVEZfVVNFX1dFQktJVF9JTUFHRV9ERUNPREVSUz0xJywKSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDEwNzkwMCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAyLTE1ICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJlbmRlciBvdmVyZmxvdyBjb250cm9scyBvZiBhbiBSVEwg
ZWxlbWVudCB0byBpdHMgbGVmdC1zaWRlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTQ2MjMKKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEgbmV3
IGZsYWcgV1RGX1VTRV9SVExfU0NST0xMQkFSIGFuZCByZW5kZXIgdGhlCisgICAgICAgIHZlcnRp
Y2FsIHNjcm9sbGJhcnMgYW5kIHJlc2l6ZXJzIG9mIFJUTCBlbGVtZW50cyB0byB0aGVpciBsZWZ0
IHNpZGUgaWYKKyAgICAgICAgdGhpcyBuZXcgZmxhZyBpcyBlbmFibGVkLgorICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zh
c3QvZXZlbnRzL3J0bC1zY3JvbGxiYXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy9ydGwtc2Nyb2xsYmFyLmh0bWw6IEFkZGVkLgor
CiAyMDEyLTAyLTE1ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZyBhZnRlciByMTA3ODE0LgpJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvcnRsLXNjcm9sbGJhci1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFz
dC9ldmVudHMvcnRsLXNjcm9sbGJhci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy9ydGwtc2Nyb2xsYmFyLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorVGVzdCB0aGF0IHdlIGNhbiBz
Y3JvbGwgZG93biBhbiBSVEwgZWxlbWVudCB3aXRoIGl0cyBsZWZ0LXNpZGUgc2Nyb2xsYmFyLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdv
dmVyZmxvdycpLnNjcm9sbFRvcCA+IHNjcm9sbFRvcCBpcyB0cnVlCisKSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3J0bC1zY3JvbGxiYXIuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy9ydGwt
c2Nyb2xsYmFyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9mYXN0L2V2ZW50cy9ydGwtc2Nyb2xsYmFyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keSBzdHlsZT0ibWFyZ2luOjAiPgorPGRpdiBpZD0ib3ZlcmZsb3ciIGRpcj0i
cnRsIiBzdHlsZT0iYm9yZGVyOjJweCBzb2xpZCBibGFjaztvdmVyZmxvdzphdXRvO2hlaWdodDo0
MDBweDt3aWR0aDo0MDBweDsgcG9zaXRpb246YWJzb2x1dGU7Ij4KKzxkaXYgc3R5bGU9ImJhY2tn
cm91bmQtY29sb3I6cmVkO2hlaWdodDo3MjBweCI+PC9kaXY+Cis8ZGl2IHN0eWxlPSJiYWNrZ3Jv
dW5kLWNvbG9yOmdyZWVuO2hlaWdodDoxNjAwcHgiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+
CitkZXNjcmlwdGlvbignVGVzdCB0aGF0IHdlIGNhbiBzY3JvbGwgZG93biBhbiBSVEwgZWxlbWVu
dCB3aXRoIGl0cyBsZWZ0LXNpZGUgc2Nyb2xsYmFyLicpOworCit2YXIgc2Nyb2xsVG9wID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ292ZXJmbG93Jykuc2Nyb2xsVG9wOworCitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKKworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIHZhciBub2RlID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ292ZXJmbG93Jyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8obm9kZS5vZmZzZXRMZWZ0ICsgNSwgbm9kZS5vZmZzZXRUb3AgKyBub2RlLm9mZnNldEhl
aWdodCAtIDUwKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRl
ci5tb3VzZVVwKCk7CisgICAgc2V0VGltZW91dChmaW5pc2hlZCwgMCk7Cit9CisKK2Z1bmN0aW9u
IGZpbmlzaGVkKCkKK3sKKyAgICBzaG91bGRCZVRydWUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlk
KFwnb3ZlcmZsb3dcJykuc2Nyb2xsVG9wID4gc2Nyb2xsVG9wJyk7CisgICAgd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="commit-queue"
          id="129468"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129623</attachid>
            <date>2012-02-29 20:41:54 -0800</date>
            <delta_ts>2012-03-01 22:33:10 -0800</delta_ts>
            <desc>Patch v12 (Updated to ToT)</desc>
            <filename>issue54623-patch12.txt</filename>
            <type>text/plain</type>
            <size>15680</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTI5OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDEyLTAyLTI5ICBIaXJvbm9y
aSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbmRlciBvdmVyZmxvdyBj
b250cm9scyBvZiBhbiBSVEwgZWxlbWVudCB0byBpdHMgbGVmdC1zaWRlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ2MjMKKworICAgICAgICBUaGlz
IGNoYW5nZSBhZGRzIGEgbmV3IGZsYWcgV1RGX1VTRV9SVExfU0NST0xMQkFSIGFuZCByZW5kZXIg
dGhlCisgICAgICAgIHZlcnRpY2FsIHNjcm9sbGJhcnMgYW5kIHJlc2l6ZXJzIG9mIFJUTCBlbGVt
ZW50cyB0byB0aGVpciBsZWZ0IHNpZGUgaWYKKyAgICAgICAgdGhpcyBuZXcgZmxhZyBpcyBlbmFi
bGVkLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
c3Q6IHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3J0bC1zY3JvbGxiYXIuaHRtbAorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjphZGRPdmVyZmxvd0Zyb21Qb3NpdGlvbmVkT2JqZWN0cyk6IE1vdmUgY2hpbGQg
ZWxlbWVudHMgcmlnaHQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZGV0ZXJtaW5l
TG9naWNhbExlZnRQb3NpdGlvbkZvckNoaWxkKTogZGl0dG8uCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om92ZXJmbG93Q2xp
cFJlY3QpOiBNb3ZlIHRoZSBjb250ZW50IHJlY3RhbmdsZSByaWdodC4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29ybmVyU3RhcnQpOiBB
ZGRlZCBhIGZ1bmN0aW9uIHRoYXQgY2FsY3VsYXRlcyB0aGUgWCBwb3NpdGlvbiBvZiBhIHJlc2l6
ZXIuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcm5lclJlY3QpOiBV
c2UgY29ybmVyU3RhcnQgdG8gbW92ZSBhIHJlc2l6ZXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6dmVydGljYWxTY3JvbGxiYXJTdGFydCk6IEFkZGVkIGEgZnVuY3Rpb24gdGhhdCBj
YWxjdWxhdGVzCisgICAgICAgIHRoZSBYIHBvc2l0aW9uIG9mIGEgdmVydGljYWwgc2Nyb2xsYmFy
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Omhvcml6b250YWxTY3JvbGxiYXJTdGFy
dCk6IEFkZGVkIGEgZnVuY3Rpb24gdGhhdCBjYWxjdWxhdGVzCisgICAgICAgIHRoZSBYIHBvc2l0
aW9uIG9mIGEgaG9yaXpvbnRhbCBzY3JvbGxiYXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6c2Nyb2xsYmFyT2Zmc2V0KTogUmVuZGVyIGEgdmVydGljYWwgc2Nyb2xsYmFyIHRvIHRo
ZSBsZWZ0IHNpZGUKKyAgICAgICAgYW5kIG1vdmUgYSBob3Jpem9udGFsIHNjcm9sbGJhciByaWdo
dCBieSB0aGUgd2lkdGggb2YgdGhlIHZlcnRpY2FsIHNjcm9sbGJhci4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjppbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdCk6IGRpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBvc2l0aW9uT3ZlcmZsb3dDb250cm9scyk6IGRpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RPdmVyZmxvd0NvbnRyb2xz
KTogZGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgIChS
ZW5kZXJMYXllcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6IEFk
ZGVkIHNob3VsZFBsYWNlQmxvY2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxvZ2ljYWxMZWZ0LAorICAg
ICAgICB3aGljaCByZXR1cm5zIGlmIHdlIG5lZWQgdG8gbW92ZSBhIGxlZnQgc2Nyb2xsYmFyIHRv
IGl0cyByaWdodCBzaWRlLgorCiAyMDEyLTAyLTI5ICBTdGVwaGVuIENoZW5uZXkgIDxzY2hlbm5l
eUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU1ZHIDx1c2U+IGVsZW1lbnQgYWxsb3dzIGludmFs
aWQgY29udGVudHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cAkocmV2aXNpb24gMTA5Mjg2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY1Miw4ICsxNjUyLDEyIEBAIHZvaWQgUmVuZGVy
QmxvY2s6OmFkZE92ZXJmbG93RnJvbVBvc2l0aW8KICAgICAgICAgcG9zaXRpb25lZE9iamVjdCA9
ICppdDsKICAgICAgICAgCiAgICAgICAgIC8vIEZpeGVkIHBvc2l0aW9uZWQgZWxlbWVudHMgZG9u
J3QgY29udHJpYnV0ZSB0byBsYXlvdXQgb3ZlcmZsb3csIHNpbmNlIHRoZXkgZG9uJ3Qgc2Nyb2xs
IHdpdGggdGhlIGNvbnRlbnQuCi0gICAgICAgIGlmIChwb3NpdGlvbmVkT2JqZWN0LT5zdHlsZSgp
LT5wb3NpdGlvbigpICE9IEZpeGVkUG9zaXRpb24pCi0gICAgICAgICAgICBhZGRPdmVyZmxvd0Zy
b21DaGlsZChwb3NpdGlvbmVkT2JqZWN0KTsKKyAgICAgICAgaWYgKHBvc2l0aW9uZWRPYmplY3Qt
PnN0eWxlKCktPnBvc2l0aW9uKCkgIT0gRml4ZWRQb3NpdGlvbikgeworICAgICAgICAgICAgaW50
IHggPSBwb3NpdGlvbmVkT2JqZWN0LT54KCk7CisgICAgICAgICAgICBpZiAoc3R5bGUoKS0+c2hv
dWxkUGxhY2VCbG9ja0RpcmVjdGlvblNjcm9sbGJhck9uTG9naWNhbExlZnQoKSkKKyAgICAgICAg
ICAgICAgICB4IC09IHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoKTsKKyAgICAgICAgICAgIGFkZE92
ZXJmbG93RnJvbUNoaWxkKHBvc2l0aW9uZWRPYmplY3QsIEludFNpemUoeCwgcG9zaXRpb25lZE9i
amVjdC0+eSgpKSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTIwNDksNiArMjA1Myw4IEBA
IExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmNvbXB1dGVTdGFydFBvc2kKIHZvaWQgUmVuZGVyQmxv
Y2s6OmRldGVybWluZUxvZ2ljYWxMZWZ0UG9zaXRpb25Gb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxk
KQogewogICAgIExheW91dFVuaXQgc3RhcnRQb3NpdGlvbiA9IGJvcmRlclN0YXJ0KCkgKyBwYWRk
aW5nU3RhcnQoKTsKKyAgICBpZiAoc3R5bGUoKS0+c2hvdWxkUGxhY2VCbG9ja0RpcmVjdGlvblNj
cm9sbGJhck9uTG9naWNhbExlZnQoKSkKKyAgICAgICAgc3RhcnRQb3NpdGlvbiAtPSB2ZXJ0aWNh
bFNjcm9sbGJhcldpZHRoKCk7CiAgICAgTGF5b3V0VW5pdCB0b3RhbEF2YWlsYWJsZUxvZ2ljYWxX
aWR0aCA9IGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSArIGF2YWlsYWJsZUxvZ2ljYWxX
aWR0aCgpOwogCiAgICAgLy8gQWRkIGluIG91ciBzdGFydCBtYXJnaW4uCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24gMTA5Mjg2KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMzIs
OCArMTIzMiwxMSBAQCBMYXlvdXRSZWN0IFJlbmRlckJveDo6b3ZlcmZsb3dDbGlwUmVjdChjCiAg
ICAgY2xpcFJlY3Quc2V0U2l6ZShjbGlwUmVjdC5zaXplKCkgLSBMYXlvdXRTaXplKGJvcmRlckxl
ZnQoKSArIGJvcmRlclJpZ2h0KCksIGJvcmRlclRvcCgpICsgYm9yZGVyQm90dG9tKCkpKTsKIAog
ICAgIC8vIFN1YnRyYWN0IG91dCBzY3JvbGxiYXJzIGlmIHdlIGhhdmUgdGhlbS4KLSAgICBpZiAo
bGF5ZXIoKSkKKyAgICAgaWYgKGxheWVyKCkpIHsKKyAgICAgICAgaWYgKHN0eWxlKCktPnNob3Vs
ZFBsYWNlQmxvY2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxvZ2ljYWxMZWZ0KCkpCisgICAgICAgICAg
ICBjbGlwUmVjdC5tb3ZlKGxheWVyKCktPnZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgocmVsZXZhbmN5
KSwgMCk7CiAgICAgICAgIGNsaXBSZWN0LmNvbnRyYWN0KGxheWVyKCktPnZlcnRpY2FsU2Nyb2xs
YmFyV2lkdGgocmVsZXZhbmN5KSwgbGF5ZXIoKS0+aG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodChy
ZWxldmFuY3kpKTsKKyAgICAgfQogCiAgICAgcmV0dXJuIGNsaXBSZWN0OwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAxMDkyODYpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODMxLDYgKzE4MzEsMTMgQEAgYm9vbCBSZW5kZXJMYXllcjo6aXNBY3RpdmUoKSBjb25z
dAogICAgIHJldHVybiBwYWdlICYmIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5pc0FjdGl2ZSgp
OwogfQogCitzdGF0aWMgTGF5b3V0VW5pdCBjb3JuZXJTdGFydChjb25zdCBSZW5kZXJMYXllciog
bGF5ZXIsIGludCBtaW5YLCBpbnQgbWF4WCwgaW50IHRoaWNrbmVzcykKK3sKKyAgICBpZiAobGF5
ZXItPnJlbmRlcmVyKCktPnN0eWxlKCktPnNob3VsZFBsYWNlQmxvY2tEaXJlY3Rpb25TY3JvbGxi
YXJPbkxvZ2ljYWxMZWZ0KCkpCisgICAgICAgIHJldHVybiBtaW5YICsgbGF5ZXItPnJlbmRlcmVy
KCktPnN0eWxlKCktPmJvcmRlckxlZnRXaWR0aCgpOworICAgIHJldHVybiBtYXhYIC0gdGhpY2tu
ZXNzIC0gbGF5ZXItPnJlbmRlcmVyKCktPnN0eWxlKCktPmJvcmRlclJpZ2h0V2lkdGgoKTsKK30K
Kwogc3RhdGljIEludFJlY3QgY29ybmVyUmVjdChjb25zdCBSZW5kZXJMYXllciogbGF5ZXIsIGNv
bnN0IEludFJlY3QmIGJvdW5kcykKIHsKICAgICBpbnQgaG9yaXpvbnRhbFRoaWNrbmVzczsKQEAg
LTE4NTAsNyArMTg1Nyw3IEBAIHN0YXRpYyBJbnRSZWN0IGNvcm5lclJlY3QoY29uc3QgUmVuZGVy
TGEKICAgICAgICAgaG9yaXpvbnRhbFRoaWNrbmVzcyA9IGxheWVyLT52ZXJ0aWNhbFNjcm9sbGJh
cigpLT53aWR0aCgpOwogICAgICAgICB2ZXJ0aWNhbFRoaWNrbmVzcyA9IGxheWVyLT5ob3Jpem9u
dGFsU2Nyb2xsYmFyKCktPmhlaWdodCgpOwogICAgIH0KLSAgICByZXR1cm4gSW50UmVjdChib3Vu
ZHMubWF4WCgpIC0gaG9yaXpvbnRhbFRoaWNrbmVzcyAtIGxheWVyLT5yZW5kZXJlcigpLT5zdHls
ZSgpLT5ib3JkZXJSaWdodFdpZHRoKCksIAorICAgIHJldHVybiBJbnRSZWN0KGNvcm5lclN0YXJ0
KGxheWVyLCBib3VuZHMueCgpLCBib3VuZHMubWF4WCgpLCBob3Jpem9udGFsVGhpY2tuZXNzKSwK
ICAgICAgICAgICAgICAgICAgICBib3VuZHMubWF4WSgpIC0gdmVydGljYWxUaGlja25lc3MgLSBs
YXllci0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwKICAgICAgICAg
ICAgICAgICAgICBob3Jpem9udGFsVGhpY2tuZXNzLCB2ZXJ0aWNhbFRoaWNrbmVzcyk7CiB9CkBA
IC0xOTczLDE1ICsxOTgwLDMyIEBAIEludFBvaW50IFJlbmRlckxheWVyOjpjdXJyZW50TW91c2VQ
b3NpdGkKICAgICByZXR1cm4gcmVuZGVyZXIoKS0+ZnJhbWUoKSA/IHJlbmRlcmVyKCktPmZyYW1l
KCktPmV2ZW50SGFuZGxlcigpLT5jdXJyZW50TW91c2VQb3NpdGlvbigpIDogSW50UG9pbnQoKTsK
IH0KIAorTGF5b3V0VW5pdCBSZW5kZXJMYXllcjo6dmVydGljYWxTY3JvbGxiYXJTdGFydChpbnQg
bWluWCwgaW50IG1heFgpIGNvbnN0Cit7CisgICAgY29uc3QgUmVuZGVyQm94KiBib3ggPSByZW5k
ZXJCb3goKTsKKyAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS0+c2hvdWxkUGxhY2VCbG9ja0Rp
cmVjdGlvblNjcm9sbGJhck9uTG9naWNhbExlZnQoKSkKKyAgICAgICAgcmV0dXJuIG1pblggKyBi
b3gtPmJvcmRlckxlZnQoKTsKKyAgICByZXR1cm4gbWF4WCAtIGJveC0+Ym9yZGVyUmlnaHQoKSAt
IG1fdkJhci0+d2lkdGgoKTsKK30KKworTGF5b3V0VW5pdCBSZW5kZXJMYXllcjo6aG9yaXpvbnRh
bFNjcm9sbGJhclN0YXJ0KGludCBtaW5YKSBjb25zdAoreworICAgIGNvbnN0IFJlbmRlckJveCog
Ym94ID0gcmVuZGVyQm94KCk7CisgICAgaW50IHggPSBtaW5YICsgYm94LT5ib3JkZXJMZWZ0KCk7
CisgICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCktPnNob3VsZFBsYWNlQmxvY2tEaXJlY3Rpb25T
Y3JvbGxiYXJPbkxvZ2ljYWxMZWZ0KCkpCisgICAgICAgIHggKz0gbV92QmFyID8gbV92QmFyLT53
aWR0aCgpIDogcmVzaXplckNvcm5lclJlY3QodGhpcywgYm94LT5ib3JkZXJCb3hSZWN0KCkpLndp
ZHRoKCk7CisgICAgcmV0dXJuIHg7Cit9CisKIEludFNpemUgUmVuZGVyTGF5ZXI6OnNjcm9sbGJh
ck9mZnNldChjb25zdCBTY3JvbGxiYXIqIHNjcm9sbGJhcikgY29uc3QKIHsKICAgICBSZW5kZXJC
b3gqIGJveCA9IHJlbmRlckJveCgpOwogCiAgICAgaWYgKHNjcm9sbGJhciA9PSBtX3ZCYXIuZ2V0
KCkpCi0gICAgICAgIHJldHVybiBJbnRTaXplKGJveC0+d2lkdGgoKSAtIGJveC0+Ym9yZGVyUmln
aHQoKSAtIHNjcm9sbGJhci0+d2lkdGgoKSwgYm94LT5ib3JkZXJUb3AoKSk7CisgICAgICAgIHJl
dHVybiBJbnRTaXplKHZlcnRpY2FsU2Nyb2xsYmFyU3RhcnQoMCwgYm94LT53aWR0aCgpKSwgYm94
LT5ib3JkZXJUb3AoKSk7CiAKICAgICBpZiAoc2Nyb2xsYmFyID09IG1faEJhci5nZXQoKSkKLSAg
ICAgICAgcmV0dXJuIEludFNpemUoYm94LT5ib3JkZXJMZWZ0KCksIGJveC0+aGVpZ2h0KCkgLSBi
b3gtPmJvcmRlckJvdHRvbSgpIC0gc2Nyb2xsYmFyLT5oZWlnaHQoKSk7CisgICAgICAgIHJldHVy
biBJbnRTaXplKGhvcml6b250YWxTY3JvbGxiYXJTdGFydCgwKSwgYm94LT5oZWlnaHQoKSAtIGJv
eC0+Ym9yZGVyQm90dG9tKCkgLSBzY3JvbGxiYXItPmhlaWdodCgpKTsKICAgICAKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gSW50U2l6ZSgpOwpAQCAtMjAwNiw5ICsyMDMw
LDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6aW52YWxpZGF0ZVNjcm9sbGJhclJlYwogICAgIFJlbmRl
ckJveCogYm94ID0gcmVuZGVyQm94KCk7CiAgICAgQVNTRVJUKGJveCk7CiAgICAgaWYgKHNjcm9s
bGJhciA9PSBtX3ZCYXIuZ2V0KCkpCi0gICAgICAgIHNjcm9sbFJlY3QubW92ZShib3gtPndpZHRo
KCkgLSBib3gtPmJvcmRlclJpZ2h0KCkgLSBzY3JvbGxiYXItPndpZHRoKCksIGJveC0+Ym9yZGVy
VG9wKCkpOworICAgICAgICBzY3JvbGxSZWN0Lm1vdmUodmVydGljYWxTY3JvbGxiYXJTdGFydCgw
LCBib3gtPndpZHRoKCkpLCBib3gtPmJvcmRlclRvcCgpKTsKICAgICBlbHNlCi0gICAgICAgIHNj
cm9sbFJlY3QubW92ZShib3gtPmJvcmRlckxlZnQoKSwgYm94LT5oZWlnaHQoKSAtIGJveC0+Ym9y
ZGVyQm90dG9tKCkgLSBzY3JvbGxiYXItPmhlaWdodCgpKTsKKyAgICAgICAgc2Nyb2xsUmVjdC5t
b3ZlKGhvcml6b250YWxTY3JvbGxiYXJTdGFydCgwKSwgYm94LT5oZWlnaHQoKSAtIGJveC0+Ym9y
ZGVyQm90dG9tKCkgLSBzY3JvbGxiYXItPmhlaWdodCgpKTsKICAgICByZW5kZXJlcigpLT5yZXBh
aW50UmVjdGFuZ2xlKHNjcm9sbFJlY3QpOwogfQogCkBAIC0yMTczLDEzICsyMTk3LDEzIEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OnBvc2l0aW9uT3ZlcmZsb3dDb250cm8KICAgICBjb25zdCBJbnRSZWN0
JiBzY3JvbGxDb3JuZXIgPSBzY3JvbGxDb3JuZXJSZWN0KCk7CiAgICAgSW50UmVjdCBhYnNCb3Vu
ZHMoYm9yZGVyQm94LmxvY2F0aW9uKCkgKyBvZmZzZXRGcm9tTGF5ZXIsIGJvcmRlckJveC5zaXpl
KCkpOwogICAgIGlmIChtX3ZCYXIpCi0gICAgICAgIG1fdkJhci0+c2V0RnJhbWVSZWN0KEludFJl
Y3QoYWJzQm91bmRzLm1heFgoKSAtIGJveC0+Ym9yZGVyUmlnaHQoKSAtIG1fdkJhci0+d2lkdGgo
KSwKKyAgICAgICAgbV92QmFyLT5zZXRGcmFtZVJlY3QoSW50UmVjdCh2ZXJ0aWNhbFNjcm9sbGJh
clN0YXJ0KGFic0JvdW5kcy54KCksIGFic0JvdW5kcy5tYXhYKCkpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFic0JvdW5kcy55KCkgKyBib3gtPmJvcmRlclRvcCgpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdkJhci0+d2lkdGgoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNCb3VuZHMuaGVpZ2h0KCkgLSAo
Ym94LT5ib3JkZXJUb3AoKSArIGJveC0+Ym9yZGVyQm90dG9tKCkpIC0gc2Nyb2xsQ29ybmVyLmhl
aWdodCgpKSk7CiAKICAgICBpZiAobV9oQmFyKQotICAgICAgICBtX2hCYXItPnNldEZyYW1lUmVj
dChJbnRSZWN0KGFic0JvdW5kcy54KCkgKyBib3gtPmJvcmRlckxlZnQoKSwKKyAgICAgICAgbV9o
QmFyLT5zZXRGcmFtZVJlY3QoSW50UmVjdChob3Jpem9udGFsU2Nyb2xsYmFyU3RhcnQoYWJzQm91
bmRzLngoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzQm91bmRz
Lm1heFkoKSAtIGJveC0+Ym9yZGVyQm90dG9tKCkgLSBtX2hCYXItPmhlaWdodCgpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic0JvdW5kcy53aWR0aCgpIC0gKGJveC0+
Ym9yZGVyTGVmdCgpICsgYm94LT5ib3JkZXJSaWdodCgpKSAtIHNjcm9sbENvcm5lci53aWR0aCgp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faEJhci0+aGVpZ2h0KCkp
KTsKQEAgLTI1OTAsNyArMjYxNCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmhpdFRlc3RPdmVyZmxv
d0NvbnRyb2wKICAgICBpbnQgcmVzaXplQ29udHJvbFNpemUgPSBtYXgocmVzaXplQ29udHJvbFJl
Y3QuaGVpZ2h0KCksIDApOwogCiAgICAgaWYgKG1fdkJhciAmJiBtX3ZCYXItPnNob3VsZFBhcnRp
Y2lwYXRlSW5IaXRUZXN0aW5nKCkpIHsKLSAgICAgICAgTGF5b3V0UmVjdCB2QmFyUmVjdChib3gt
PndpZHRoKCkgLSBib3gtPmJvcmRlclJpZ2h0KCkgLSBtX3ZCYXItPndpZHRoKCksIAorICAgICAg
ICBMYXlvdXRSZWN0IHZCYXJSZWN0KHZlcnRpY2FsU2Nyb2xsYmFyU3RhcnQoMCwgYm94LT53aWR0
aCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3gtPmJvcmRlclRvcCgpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fdkJhci0+d2lkdGgoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib3gtPmhlaWdodCgpIC0gKGJveC0+Ym9yZGVyVG9wKCkgKyBib3gtPmJv
cmRlckJvdHRvbSgpKSAtIChtX2hCYXIgPyBtX2hCYXItPmhlaWdodCgpIDogcmVzaXplQ29udHJv
bFNpemUpKTsKQEAgLTI2MDIsNyArMjYyNiw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmhpdFRlc3RP
dmVyZmxvd0NvbnRyb2wKIAogICAgIHJlc2l6ZUNvbnRyb2xTaXplID0gbWF4KHJlc2l6ZUNvbnRy
b2xSZWN0LndpZHRoKCksIDApOwogICAgIGlmIChtX2hCYXIgJiYgbV9oQmFyLT5zaG91bGRQYXJ0
aWNpcGF0ZUluSGl0VGVzdGluZygpKSB7Ci0gICAgICAgIExheW91dFJlY3QgaEJhclJlY3QoYm94
LT5ib3JkZXJMZWZ0KCksCisgICAgICAgIExheW91dFJlY3QgaEJhclJlY3QoaG9yaXpvbnRhbFNj
cm9sbGJhclN0YXJ0KDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveC0+aGVpZ2h0
KCkgLSBib3gtPmJvcmRlckJvdHRvbSgpIC0gbV9oQmFyLT5oZWlnaHQoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib3gtPndpZHRoKCkgLSAoYm94LT5ib3JkZXJMZWZ0KCkgKyBib3gt
PmJvcmRlclJpZ2h0KCkpIC0gKG1fdkJhciA/IG1fdkJhci0+d2lkdGgoKSA6IHJlc2l6ZUNvbnRy
b2xTaXplKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2hCYXItPmhlaWdodCgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCShyZXZpc2lvbiAxMDky
ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNzU1LDYgKzc1NSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICA7CiAgICAgfQog
CisgICAgTGF5b3V0VW5pdCB2ZXJ0aWNhbFNjcm9sbGJhclN0YXJ0KGludCBtaW5YLCBpbnQgbWF4
WCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBob3Jpem9udGFsU2Nyb2xsYmFyU3RhcnQoaW50IG1p
blgpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgLy8gVGhlIGJpdGZpZWxkcyBhcmUgdXAgaGVy
ZSBzbyB0aGV5IHdpbGwgZmFsbCBpbnRvIHRoZSBwYWRkaW5nIGZyb20gU2Nyb2xsYWJsZUFyZWEg
b24gNjQtYml0LgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuaAkocmV2aXNpb24gMTA5Mjg2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk3MCw2ICs5NzAsMTIgQEAg
cHVibGljOgogI2Vsc2UKICAgICBib29sIGhhc0ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAjZW5kaWYKKworI2lmIFVTRShSVExfU0NST0xMQkFSKQorICAgIGJvb2wgc2hvdWxkUGxh
Y2VCbG9ja0RpcmVjdGlvblNjcm9sbGJhck9uTG9naWNhbExlZnQoKSBjb25zdCB7IHJldHVybiAh
aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpICYmIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7IH0K
KyNlbHNlCisgICAgYm9vbCBzaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25Mb2dp
Y2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKICAgICAgICAgCiAvLyBh
dHRyaWJ1dGUgc2V0dGVyIG1ldGhvZHMKIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDEwOTI5OSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDItMjkgIEhpcm9ub3JpIEJvbm8g
IDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuZGVyIG92ZXJmbG93IGNvbnRyb2xz
IG9mIGFuIFJUTCBlbGVtZW50IHRvIGl0cyBsZWZ0LXNpZGUuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDYyMworCisgICAgICAgIFRoaXMgY2hhbmdl
IGFkZHMgYSBuZXcgZmxhZyBXVEZfVVNFX1JUTF9TQ1JPTExCQVIgYW5kIHJlbmRlciB0aGUKKyAg
ICAgICAgdmVydGljYWwgc2Nyb2xsYmFycyBhbmQgcmVzaXplcnMgb2YgUlRMIGVsZW1lbnRzIHRv
IHRoZWlyIGxlZnQgc2lkZSBpZgorICAgICAgICB0aGlzIG5ldyBmbGFnIGlzIGVuYWJsZWQuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmZWF0dXJl
cy5neXBpOiBTZXQgV1RGX1VTRV9SVExfU0NST0xMQkFSIHRvIDEgb24gQ2hyb21pdW0uCisKIDIw
MTItMDItMjkgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W2Nocm9taXVtXSBBZGQgaW1wbC10aHJlYWQgc3VwcG9ydCBmb3IgYW5pbWF0aW9uLXRpbWluZy1m
dW5jdGlvbgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQkocmV2aXNpb24g
MTA5Mjg2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDYsNiArMTA2LDcgQEAKICAgICAgICMgV2UgY2FuJ3QgZGVmaW5lIGl0IGhl
cmUgYmVjYXVzZSBpdCBzaG91bGQgYmUgcHJlc2VudCBvbmx5CiAgICAgICAjIGluIERlYnVnIG9y
IHJlbGVhc2VfdmFsZ3JpbmRfYnVpbGQ9MSBidWlsZHMuCiAgICAgICAnV1RGX1VTRV9PUEVOVFlQ
RV9TQU5JVElaRVI9MScsCisgICAgICAnV1RGX1VTRV9SVExfU0NST0xMQkFSPTEnLAogICAgICAg
J1dURl9VU0VfU0tJQV9URVhUPTwoZW5hYmxlX3NraWFfdGV4dCknLAogICAgICAgJ1dURl9VU0Vf
V0VCUD0xJywKICAgICAgICdXVEZfVVNFX1dFQktJVF9JTUFHRV9ERUNPREVSUz0xJywKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDEwOTI5OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAyLTI5ICBIaXJvbm9yaSBCb25vICA8aGJvbm9A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbmRlciBvdmVyZmxvdyBjb250cm9scyBvZiBhbiBS
VEwgZWxlbWVudCB0byBpdHMgbGVmdC1zaWRlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ2MjMKKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEg
bmV3IGZsYWcgV1RGX1VTRV9SVExfU0NST0xMQkFSIGFuZCByZW5kZXIgdGhlCisgICAgICAgIHZl
cnRpY2FsIHNjcm9sbGJhcnMgYW5kIHJlc2l6ZXJzIG9mIFJUTCBlbGVtZW50cyB0byB0aGVpciBs
ZWZ0IHNpZGUgaWYKKyAgICAgICAgdGhpcyBuZXcgZmxhZyBpcyBlbmFibGVkLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vZmFzdC9ldmVudHMvcnRsLXNjcm9sbGJhci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3J0bC1zY3JvbGxiYXIuaHRtbDogQWRk
ZWQuCisKIDIwMTItMDItMjkgIFN0ZXBoZW4gQ2hlbm5leSAgPHNjaGVubmV5QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBTVkcgPHVzZT4gZWxlbWVudCBhbGxvd3MgaW52YWxpZCBjb250ZW50cwpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvcnRsLXNjcm9s
bGJhci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vZmFzdC9ldmVudHMvcnRsLXNjcm9sbGJhci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy9ydGwtc2Nyb2xs
YmFyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorVGVzdCB0aGF0
IHdlIGNhbiBzY3JvbGwgZG93biBhbiBSVEwgZWxlbWVudCB3aXRoIGl0cyBsZWZ0LXNpZGUgc2Ny
b2xsYmFyLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitQQVNTIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdvdmVyZmxvdycpLnNjcm9sbFRvcCA+IHNjcm9sbFRvcCBpcyB0cnVlCisKSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3J0bC1zY3JvbGxiYXIu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2
ZW50cy9ydGwtc2Nyb2xsYmFyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy9ydGwtc2Nyb2xsYmFyLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBzdHlsZT0ibWFyZ2luOjAiPgorPGRpdiBpZD0ib3ZlcmZs
b3ciIGRpcj0icnRsIiBzdHlsZT0iYm9yZGVyOjJweCBzb2xpZCBibGFjaztvdmVyZmxvdzphdXRv
O2hlaWdodDo0MDBweDt3aWR0aDo0MDBweDsgcG9zaXRpb246YWJzb2x1dGU7Ij4KKzxkaXYgc3R5
bGU9ImJhY2tncm91bmQtY29sb3I6cmVkO2hlaWdodDo3MjBweCI+PC9kaXY+Cis8ZGl2IHN0eWxl
PSJiYWNrZ3JvdW5kLWNvbG9yOmdyZWVuO2hlaWdodDoxNjAwcHgiPjwvZGl2PgorPC9kaXY+CisK
KzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCB0aGF0IHdlIGNhbiBzY3JvbGwgZG93biBhbiBS
VEwgZWxlbWVudCB3aXRoIGl0cyBsZWZ0LXNpZGUgc2Nyb2xsYmFyLicpOworCit2YXIgc2Nyb2xs
VG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ292ZXJmbG93Jykuc2Nyb2xsVG9wOworCitp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKKworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIHZhciBu
b2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ292ZXJmbG93Jyk7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8obm9kZS5vZmZzZXRMZWZ0ICsgNSwgbm9kZS5vZmZzZXRUb3AgKyBub2Rl
Lm9mZnNldEhlaWdodCAtIDUwKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgc2V0VGltZW91dChmaW5pc2hlZCwgMCk7Cit9CisK
K2Z1bmN0aW9uIGZpbmlzaGVkKCkKK3sKKyAgICBzaG91bGRCZVRydWUoJ2RvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKFwnb3ZlcmZsb3dcJykuc2Nyb2xsVG9wID4gc2Nyb2xsVG9wJyk7CisgICAgd2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKwordmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>137316</attachid>
            <date>2012-04-16 04:48:42 -0700</date>
            <delta_ts>2012-04-16 04:48:42 -0700</delta_ts>
            <desc>Test case. Extract the files in the zip and open iframe-scollbar-outer.html.</desc>
            <filename>iframe-scrollbar.zip</filename>
            <type>application/octet-stream</type>
            <size>22657</size>
            <attacher name="Aharon (Vladimir) Lanin">aharon</attacher>
            
              <data encoding="base64">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
UlROpFzYwO/3UEsDBBQAAAAIAHd0kEC9FVuV7gAAAMMpAAAbAAAAaWZyYW1lLXNjcm9sbGJhci1v
dXRlci5odG1s7doxbsJAEEbhPlLuMHFvfIHFTZI6KWhS2uBgS2s7Grbh9lkwiIbmiYbid+On1cy3
F9jw9vH1vvn5/rQ+jbF+fQmnv+0GXxeeYpFPzEI7747nyj38ejN2dvDtuli6PGx9jrFtvBymqfMy
Jl9lJm+HahmpQ+sAyDc/BKz+pv3d3U2f966zNjZHazubJ0v53Id9n26j5fLVD4YwHsJ4COMhjIcw
HsJ4COMhjIcwHsJ4COMhjIcwHsJ4COMhjIcwHsJ4COMhjIcwHsJ4COMhjIcwHsJ4COMhjIcwHsJ4
COMhjIcwHs+NheryHDNU5zeb/1BLAQI/ABQAAAAIAIJzkECw1p9qkQAAAGcVAAAfACQAAAAAAAAA
IAAAAAAAAABpZnJhbWUtc2Nyb2xsYmFyLWlubmVyLWx0ci5odG1sCgAgAAAAAAABABgAqSi7/MMb
zQEt2O3mwxvNAS3Y7ebDG80BUEsBAj8AFAAAAAgAUHOQQGdMhsmaAAAAdhUAAB8AJAAAAAAAAAAg
AAAAzgAAAGlmcmFtZS1zY3JvbGxiYXItaW5uZXItcnRsLmh0bWwKACAAAAAAAAEAGAAEUYPFwxvN
Ab846X6dG80BVXjdfp0bzQFQSwECPwAUAAAACACbdJBAjP6plqxTAACwXQAAGgAkAAAAAAAAACAA
AAClAQAAaWZyYW1lLXNjcm9sbGJhci1pbm5lci5wbmcKACAAAAAAAAEAGAAjzDk4xRvNASzQNzjF
G80BCWvj/sQbzQFQSwECPwAUAAAACAB3dJBAvRVble4AAADDKQAAGwAkAAAAAAAAACAAAACJVQAA
aWZyYW1lLXNjcm9sbGJhci1vdXRlci5odG1sCgAgAAAAAAABABgAKZ5DD8UbzQFbkMvbnRvNAeH9
vdudG80BUEsFBgAAAAAEAAQAuwEAALBWAAAAAA==
</data>

          </attachment>
      

    </bug>

</bugzilla>