<?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>50952</bug_id>
          
          <creation_ts>2010-12-13 12:19:58 -0800</creation_ts>
          <short_desc>Inputs of type &quot;text&quot; and &quot;search&quot; should support interoperable &quot;set direction&quot; functionality</short_desc>
          <delta_ts>2011-08-01 02:32:17 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://dev.w3.org/html5/spec/Overview.html#text-state-and-search-state</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="Xiaomei Ji">xji</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>aharon</cc>
    
    <cc>ap</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>hbono</cc>
    
    <cc>inferno</cc>
    
    <cc>mitz</cc>
    
    <cc>morrita</cc>
    
    <cc>playmobil</cc>
    
    <cc>rniwa</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>321318</commentid>
    <comment_count>0</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-12-13 12:19:58 -0800</bug_when>
    <thetext>Following is from the spec:

4.10.7.1.2 Text state and Search state

When an input element&apos;s type attribute is in the Text state or the Search state, the rules in this section apply.

The input element represents a one line plain text edit control for the element&apos;s value.

The difference between the Text state and the Search state is primarily stylistic: on platforms where search fields are distinguished from regular text fields, the Search state might result in an appearance consistent with the platform&apos;s search fields rather than appearing like a regular text field.

If the element is mutable, its value should be editable by the user. User agents must not allow users to insert U+000A LINE FEED (LF) or U+000D CARRIAGE RETURN (CR) characters into the element&apos;s value.

If the element is mutable, the user agent should allow the user to change the writing direction of the element, setting it either to a left-to-right writing direction or a right-to-left writing direction. If the user does so, the user agent must then run the following steps:

Set the element&apos;s dir attribute to &quot;ltr&quot; if the user selected a left-to-right writing direction, and &quot;rtl&quot; if the user selected a right-to-left writing direction.

Queue a task to first fire a simple event that bubbles named input at the input element, and to then broadcast forminput events from the input element&apos;s form owner, if any.

The value attribute, if specified, must have a value that contains no U+000A LINE FEED (LF) or U+000D CARRIAGE RETURN (CR) characters.

The value sanitization algorithm is as follows: Strip line breaks from the value.

The following common input element content attributes, IDL attributes, and methods apply to the element: autocomplete, dirname, list, maxlength, pattern, placeholder, readonly, required, and size content attributes; list, selectedOption, selectionStart, selectionEnd, and value IDL attributes; select() and setSelectionRange() methods.
The value IDL attribute is in mode value.
The input and change events apply.
The following content attributes must not be specified and do not apply to the element: accept, alt, checked, formaction, formenctype, formmethod, formnovalidate, formtarget, height, max, min, multiple, src, step, and width.
The following IDL attributes and methods do not apply to the element: checked, files, valueAsDate, and valueAsNumber IDL attributes; stepDown() and stepUp() methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321728</commentid>
    <comment_count>1</comment_count>
    <who name="Aharon (Vladimir) Lanin">aharon</who>
    <bug_when>2010-12-14 00:39:13 -0800</bug_when>
    <thetext>(In reply to comment #0)
Please note that the equivalent requirements have been added to textarea elements, i.e.:

&lt;quote&gt;

4.10.13 The textarea element

[...]

If the element is mutable, the user agent should allow the user to change the writing direction of the element, setting it either to a left-to-right writing direction or a right-to-left writing direction. If the user does so, the user agent must then run the following steps:

Set the element&apos;s dir attribute to &quot;ltr&quot; if the user selected a left-to-right writing direction, and &quot;rtl&quot; if the user selected a right-to-left writing direction.

Queue a task to first fire a simple event that bubbles named input at the textarea element, and to then broadcast forminput events from the textarea element&apos;s form owner, if any.

&lt;/quote&gt;

Implementation status:


Chrome: Direction is set using keyboard shortcuts - CTRL + LEFT SHIFT for LTR and CTRL + RIGHT SHIFT for RTL. They set the value of the element&apos;s dir attribute as required. They trigger the keyup event, at which time the dir value is already changed, which is good. However, they do not trigger the input event - which is what needs to be changed to comply with the spec.

Safari: Right-click on the &lt;input&gt; or &lt;textarea&gt; provides a &quot;Set paragraph direction&quot; submenu. Using &quot;Set paragraph direction&quot; sets the value of the element&apos;s dir attribute as required. However, it does not trigger the input event - which is what needs to be changed to comply with the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374345</commentid>
    <comment_count>2</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-03-28 01:44:13 -0700</bug_when>
    <thetext>Greetings,

This is just for clarification.
The forminput event has been deleted from the HTML5 spec this month &lt;http://www.w3.org/Bugs/Public/show_bug.cgi?id=11129&gt;. Therefore, this issue is that we need to send an input event of HTML5 from this function when WebKit changes the text direction, right?
For what it&apos;s worth, both Chrome and Safari call Editor::setBaseWritingDirection() to change the text direction. So, it seems we just add code that calls HTMLElement::dispatchEvent() there.

Regards,

Hironori Bono

&gt; Chrome: Direction is set using keyboard shortcuts - CTRL + LEFT SHIFT for LTR and CTRL + RIGHT SHIFT for RTL. They set the value of the element&apos;s dir attribute as required. They trigger the keyup event, at which time the dir value is already changed, which is good. However, they do not trigger the input event - which is what needs to be changed to comply with the spec.
&gt; 
&gt; Safari: Right-click on the &lt;input&gt; or &lt;textarea&gt; provides a &quot;Set paragraph direction&quot; submenu. Using &quot;Set paragraph direction&quot; sets the value of the element&apos;s dir attribute as required. However, it does not trigger the input event - which is what needs to be changed to comply with the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375138</commentid>
    <comment_count>3</comment_count>
    <who name="Aharon (Vladimir) Lanin">aharon</who>
    <bug_when>2011-03-29 02:39:09 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Greetings,
&gt; 
&gt; This is just for clarification.
&gt; The forminput event has been deleted from the HTML5 spec this month &lt;http://www.w3.org/Bugs/Public/show_bug.cgi?id=11129&gt;. Therefore, this issue is that we need to send an input event of HTML5 from this function when WebKit changes the text direction, right?

That is correct. The HTML5 spec before that change called for sending both input and forminput. After the change, it just calls for sending input. I am quoting from http://dev.w3.org/html5/spec/Overview.html#text-state-and-search-state:

&quot;If the element is mutable, the user agent should allow the user to change the writing direction of the element, setting it either to a left-to-right writing direction or a right-to-left writing direction. If the user does so, the user agent must then run the following steps:

&quot;Set the element&apos;s dir attribute to &quot;ltr&quot; if the user selected a left-to-right writing direction, and &quot;rtl&quot; if the user selected a right-to-left writing direction.

&quot;Queue a task to fire a simple event that bubbles named input at the input element.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375290</commentid>
    <comment_count>4</comment_count>
      <attachid>87313</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-03-29 07:18:51 -0700</bug_when>
    <thetext>Created attachment 87313
A quick fix v1

Greetings Aharon,

(In reply to comment #3)
&gt; That is correct. The HTML5 spec before that change called for sending both input and forminput. After the change, it just calls for sending input. I am quoting from http://dev.w3.org/html5/spec/Overview.html#text-state-and-search-state:
&gt; 
&gt; &quot;If the element is mutable, the user agent should allow the user to change the writing direction of the element, setting it either to a left-to-right writing direction or a right-to-left writing direction. If the user does so, the user agent must then run the following steps:
&gt; &quot;Set the element&apos;s dir attribute to &quot;ltr&quot; if the user selected a left-to-right writing direction, and &quot;rtl&quot; if the user selected a right-to-left writing direction.
&gt; &quot;Queue a task to fire a simple event that bubbles named input at the input element.&quot;

Thank you for your clarification. I have written a change that sends an input event after changing the &quot;dir&quot; attribute. Unfortunately, the layout test in this change works only on Safari and Chrome because it requires a new JavaScript function. (Should I change &apos;Skipped&apos; files?)

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375320</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-03-29 07:38:22 -0700</bug_when>
    <thetext>Dimitri likes events. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375324</commentid>
    <comment_count>6</comment_count>
      <attachid>87313</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-03-29 07:40:03 -0700</bug_when>
    <thetext>Comment on attachment 87313
A quick fix v1

Lovely patch.  Seems reasonable to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375330</commentid>
    <comment_count>7</comment_count>
      <attachid>87313</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-03-29 07:43:23 -0700</bug_when>
    <thetext>Comment on attachment 87313
A quick fix v1

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

&gt; Source/WebCore/editing/Editor.cpp:1554
&gt; +        focusedNode-&gt;dispatchInputEvents();

The only danger here is that callers might not expect that javascript gets executed here.  JS can do all sorts of bad bad things to our state. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375331</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-03-29 07:44:02 -0700</bug_when>
    <thetext>Letting the security folks see we have another JS hook.  I doubt there is anything to worry about, but htey might be curious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375333</commentid>
    <comment_count>9</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-29 07:51:55 -0700</bug_when>
    <thetext>Attachment 87313 did not build on win:
Build output: http://queues.webkit.org/results/8282339</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375382</commentid>
    <comment_count>10</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-03-29 08:43:17 -0700</bug_when>
    <thetext>Greetings,

(In reply to comment #9)
&gt; Attachment 87313 [details] did not build on win:
&gt; Build output: http://queues.webkit.org/results/8282339

Ouch. I forgot testing this change with Win. I temporarily add an empty function since I do not have development environment for Win Safari. (I will implement it when I get it.)

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375426</commentid>
    <comment_count>11</comment_count>
      <attachid>87346</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-03-29 09:30:45 -0700</bug_when>
    <thetext>Created attachment 87346
A quick fix v2

Greetings,

I would like to send a review request of another patch to test it does not cause build breaks on Win. 

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375427</commentid>
    <comment_count>12</comment_count>
      <attachid>87313</attachid>
    <who name="">mitz</who>
    <bug_when>2011-03-29 09:31:17 -0700</bug_when>
    <thetext>Comment on attachment 87313
A quick fix v1

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

&gt; Source/WebKit/mac/WebView/WebViewPrivate.h:594
&gt; +    @result Returns the default minimum timer interval.

This comment is wrong.

&gt; Source/WebKit/mac/WebView/WebViewPrivate.h:596
&gt; +- (void)_setTextDirection:(int)direction;

I think this SPI is unnecessary, and therefore should not be added. It’s especially bad that it takes an int parameter whose meaning is not clear at all.

WebView has -makeBaseWritingDirectionLeftToRight: and -makeBaseWritingDirectionRightToLeft: and a degenerate implementation of -makeBaseWritingDirectionNatural:. Can DumpRenderTree use those?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375432</commentid>
    <comment_count>13</comment_count>
      <attachid>87346</attachid>
    <who name="">mitz</who>
    <bug_when>2011-03-29 09:37:03 -0700</bug_when>
    <thetext>Comment on attachment 87346
A quick fix v2

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

&gt; Source/WebKit/mac/WebView/WebViewPrivate.h:596
&gt; +    @method setTextDirection:
&gt; +    @discussion
&gt; +    @result Returns the default minimum timer interval.
&gt; +*/
&gt; +- (void)_setTextDirection:(int)direction;

Please see my comments about this SPI in the review of the previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375435</commentid>
    <comment_count>14</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-03-29 09:38:49 -0700</bug_when>
    <thetext>Greetings,

Thank you for your comments.

(In reply to comment #13)
&gt; Please see my comments about this SPI in the review of the previous patch.

Sorry. I have uploaded the second patch before reading your comments. I&apos;m now applying them.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375446</commentid>
    <comment_count>15</comment_count>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2011-03-29 09:47:42 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Letting the security folks see we have another JS hook.  I doubt there is anything to worry about, but htey might be curious.

We should probably have a testcase here showing that we donot crash when we blow/delete ourselves out while inside the input event. We have had several of those problems and it is better to check it now than discover later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375460</commentid>
    <comment_count>16</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-03-29 10:10:51 -0700</bug_when>
    <thetext>Greetings,

Thank you for your comments.

(In reply to comment #12)

&gt; WebView has -makeBaseWritingDirectionLeftToRight: and -makeBaseWritingDirectionRightToLeft: and a degenerate implementation of -makeBaseWritingDirectionNatural:. Can DumpRenderTree use those?

I would like to clarify this comment a little.
If I understand WebView correctly, these methods seem to be internal ones. That is, we need to add them to WebViewPrivate.h (or WebView.h) to use them directly from the outside of WebKit, including DumpRenderTree. (I have added a new SPI [setTextDirection:direction] just because it may be better not to expose existing internal functions. Nevertheless, I do not stick to my opinion at all.) If it is OK for you, I will update my change to expose them.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375492</commentid>
    <comment_count>17</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-03-29 10:34:36 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Greetings,
&gt; 
&gt; Thank you for your comments.
&gt; 
&gt; (In reply to comment #12)
&gt; 
&gt; &gt; WebView has -makeBaseWritingDirectionLeftToRight: and -makeBaseWritingDirectionRightToLeft: and a degenerate implementation of -makeBaseWritingDirectionNatural:. Can DumpRenderTree use those?
&gt; 
&gt; I would like to clarify this comment a little.
&gt; If I understand WebView correctly, these methods seem to be internal ones.

In Mac OS X 10.6 and later, these are NSResponder methods, and WebView is an NSResponder.

&gt; That is, we need to add them to WebViewPrivate.h (or WebView.h) to use them directly from the outside of WebKit, including DumpRenderTree.

I would just add them in a category in DumpRenderTree when building on Leopard or Tiger.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375621</commentid>
    <comment_count>18</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-03-29 11:57:46 -0700</bug_when>
    <thetext>Attachment 87313 did not build on gtk:
Build output: http://queues.webkit.org/results/8284406</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375665</commentid>
    <comment_count>19</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-03-29 12:28:22 -0700</bug_when>
    <thetext>Attachment 87346 did not build on gtk:
Build output: http://queues.webkit.org/results/8280392</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376321</commentid>
    <comment_count>20</comment_count>
      <attachid>87536</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-03-30 08:00:38 -0700</bug_when>
    <thetext>Created attachment 87536
A quick fix v3

Greetings,

(In reply to comment #17)
&gt; In Mac OS X 10.6 and later, these are NSResponder methods, and WebView is an NSResponder.
&gt; I would just add them in a category in DumpRenderTree when building on Leopard or Tiger.

Ah, thank you for correcting me. I notice I read an old document that did not include these tasks. I have updated my change to use them and also added my new test to &apos;Skipped&apos; files.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376325</commentid>
    <comment_count>21</comment_count>
      <attachid>87536</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-03-30 08:04:50 -0700</bug_when>
    <thetext>Comment on attachment 87536
A quick fix v3

Looks reasonable to me.  mitz might have comment yet, but this looks very clean.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376367</commentid>
    <comment_count>22</comment_count>
      <attachid>87536</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-03-30 08:59:58 -0700</bug_when>
    <thetext>Comment on attachment 87536
A quick fix v3

I think that this needs another iteration.

+        // Send an input event to this element as written in &quot;4.10.7.1.2 Text state and Search state&quot;.
+        // (See &lt;http://dev.w3.org/html5/spec/Overview.html#text-state-and-search-state&gt;.)

I don&apos;t think that we should have such comments in code. Pretty much every line of code in WebCore could have a link to HTML5, so it&apos;s pointless.

What is important is that regression tests cover such things, and that those tests make it clear why they require such behavior. This test doesn&apos;t explain anything, provoking the person who breaks it to just &quot;update the results&quot;.

+        focusedNode-&gt;dispatchInputEvents();

What guarantees that focusedNode still exists after style update?

+        This adds a new layout test to verify that we can reveive input events

Typo: receive.

+    // Call [NSResponder makeBaseWritingDirection*:] since WebView implements
+    // them and it calls Editor::setBaseWritingDirection().

Another comment that should be removed in my opinion. Of course we call a function that is implemented - why would we call an unimplemented one?

+    if (JSStringIsEqualToUTF8CString(directionName, &quot;ltr&quot;))
+        [[mainFrame webView] makeBaseWritingDirectionLeftToRight:0];
+    else if (JSStringIsEqualToUTF8CString(directionName, &quot;rtl&quot;))
+        [[mainFrame webView] makeBaseWritingDirectionRightToLeft:0];

I suggest adding a check for invalid values.

--- LayoutTests/fast/html/script-tests/set-text-direction.js	(revision 0)

Please don&apos;t split tests into .html and .js parts.

+// This also removes the element to verify WebKit works without crashes.

Perhaps we should force garbage collection to make the test stronger?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377102</commentid>
    <comment_count>23</comment_count>
      <attachid>87711</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-03-31 06:17:18 -0700</bug_when>
    <thetext>Created attachment 87711
A quick fix v4

Thank you for your review and comments.

(In reply to comment #22)
&gt; I don&apos;t think that we should have such comments in code. Pretty much every line of code in WebCore could have a link to HTML5, so it&apos;s pointless.
&gt; What is important is that regression tests cover such things, and that those tests make it clear why they require such behavior. This test doesn&apos;t explain anything, provoking the person who breaks it to just &quot;update the results&quot;.

Ah, right. Even though my layout test describes &quot;WebKit sends an input event&quot;, this test does not check if it actually sends the event. I have added a flag to verify it. (Please feel free to blame me if I&apos;m wrong.)
 
&gt; +        focusedNode-&gt;dispatchInputEvents();
&gt; 
&gt; What guarantees that focusedNode still exists after style update?

In my honest opinion, I&apos;m not totally sure what the style update does, i.e. I cannot guarantee it at all. As far as I quickly read the code, Element::setAttribute() does not seem to delete the node. So, I have moved this call after the Element::setAttribute(). (This analysis may be wrong, though.)
 
&gt; +        This adds a new layout test to verify that we can reveive input events
&gt;
&gt; Typo: receive.

Thank you for noticing it.
 
&gt; +    // Call [NSResponder makeBaseWritingDirection*:] since WebView implements
&gt; +    // them and it calls Editor::setBaseWritingDirection().
&gt; 
&gt; Another comment that should be removed in my opinion. Of course we call a function that is implemented - why would we call an unimplemented one?

OK. I have removed it.
 
&gt; +    if (JSStringIsEqualToUTF8CString(directionName, &quot;ltr&quot;))
&gt; +        [[mainFrame webView] makeBaseWritingDirectionLeftToRight:0];
&gt; +    else if (JSStringIsEqualToUTF8CString(directionName, &quot;rtl&quot;))
&gt; +        [[mainFrame webView] makeBaseWritingDirectionRightToLeft:0];
&gt; 
&gt; I suggest adding a check for invalid values.

Thank you. I have added a ASSERT_NOT_REACHED() call here.

&gt; --- LayoutTests/fast/html/script-tests/set-text-direction.js    (revision 0)
&gt; 
&gt; Please don&apos;t split tests into .html and .js parts.

Sorry. It seems I misunderstood the script tests. (I thought a script test must consists of an .html file and a .js one.)

&gt; +// This also removes the element to verify WebKit works without crashes.
&gt; 
&gt; Perhaps we should force garbage collection to make the test stronger?

It makes sense. I have copied the code that force GC from &apos;fast/dom/gc-1.html&apos;.

Finally, my WebKit knowledge is rusty and I may misunderstand it. So, please feel free to blame me if I&apos;m wrong.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377196</commentid>
    <comment_count>24</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-03-31 09:00:17 -0700</bug_when>
    <thetext>&gt; In my honest opinion, I&apos;m not totally sure what the style update does, i.e. I cannot guarantee it at all. As far as I quickly read the code, Element::setAttribute() does not seem to delete the node. So, I have moved this call after the Element::setAttribute(). (This analysis may be wrong, though.)

Seems fine to me, but I&apos;m also not sure about how style update should be used in editing code.

&gt; It makes sense. I have copied the code that force GC from &apos;fast/dom/gc-1.html&apos;.

There is no need to force gc with your own code - js-test-pre.js provides a nice gc() function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378993</commentid>
    <comment_count>25</comment_count>
      <attachid>87711</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-04 13:10:29 -0700</bug_when>
    <thetext>Comment on attachment 87711
A quick fix v4

Still LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379350</commentid>
    <comment_count>26</comment_count>
      <attachid>88186</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-04-04 23:33:10 -0700</bug_when>
    <thetext>Created attachment 88186
A quick fix v5

Greetings Alexey and Eric,

Thank you for your reviews and sorry for my slow response. I have updated my layout test to apply the comment from Alexey. It would be definitely helpful to give me your feedback.

(In reply to comment #24)
&gt; There is no need to force gc with your own code - js-test-pre.js provides a nice gc() function.

Thank you for noticing it. It is really nice and I would love to use this function.

(In reply to comment #25)
&gt; Still LGTM.

Thank you again for your positive review. Even though the updated one is almost as same as the previous one, would it be possible to review the updated one?

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380604</commentid>
    <comment_count>27</comment_count>
      <attachid>87313</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-06 10:45:48 -0700</bug_when>
    <thetext>Comment on attachment 87313
A quick fix v1

Cleared Eric Seidel&apos;s review+ from obsolete attachment 87313 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394615</commentid>
    <comment_count>28</comment_count>
      <attachid>88186</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-28 11:43:52 -0700</bug_when>
    <thetext>Comment on attachment 88186
A quick fix v5

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409532</commentid>
    <comment_count>29</comment_count>
      <attachid>88186</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-05-25 02:11:21 -0700</bug_when>
    <thetext>Comment on attachment 88186
A quick fix v5

Greetings,

Sorry for my slow response. Unfortunately, I&apos;m not a WebKit committer and cannot land this change. Is it possible to land this change on my behalf?

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409534</commentid>
    <comment_count>30</comment_count>
      <attachid>88186</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-25 02:16:33 -0700</bug_when>
    <thetext>Comment on attachment 88186
A quick fix v5

Rejecting attachment 88186 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-8&apos;, &apos;apply-...&quot; exit_code: 2

Last 500 characters of output:
orm/mac-tiger/Skipped	(working copy)
--------------------------
No file to patch.  Skipping patch.
1 out of 1 hunk ignored
patching file LayoutTests/platform/qt/Skipped
Hunk #1 FAILED at 3236.
1 out of 1 hunk FAILED -- saving rejects to file LayoutTests/platform/qt/Skipped.rej
patching file LayoutTests/platform/win/Skipped
Hunk #1 succeeded at 989 (offset 13 lines).

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Eric Seidel&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/8733521</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410840</commentid>
    <comment_count>31</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2011-05-26 14:34:27 -0700</bug_when>
    <thetext>Hi Hironori,

I do not know why it is rejected in commit-queue.
But could you upload a new version (merged with the latest webkit) and give it a try again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411330</commentid>
    <comment_count>32</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-05-27 04:36:26 -0700</bug_when>
    <thetext>Greetings Xiaomei,

(In reply to comment #31)
&gt; Hi Hironori,
&gt; 
&gt; I do not know why it is rejected in commit-queue.
&gt; But could you upload a new version (merged with the latest webkit) and give it a try again?

It took long time since I have uploaded this change and it seems Skipped files have been changed since I uploaded the change. I will ask Tokyo committers to land this change manually.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411409</commentid>
    <comment_count>33</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-27 07:04:47 -0700</bug_when>
    <thetext>Sorry hbono.  Seems you slipped through the cracks.  You were nominated (and passed) as a committer over a month ago, but somehow I think the paperwork was never sent your way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413083</commentid>
    <comment_count>34</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-05-31 19:27:06 -0700</bug_when>
    <thetext>Committed r87770: &lt;http://trac.webkit.org/changeset/87770&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444542</commentid>
    <comment_count>35</comment_count>
      <attachid>102483</attachid>
    <who name="Aharon (Vladimir) Lanin">aharon</who>
    <bug_when>2011-07-31 23:52:42 -0700</bug_when>
    <thetext>Created attachment 102483
test case

As far as I can see, the bug is fixed in neither Chrome 12.0 nor Safari 5.1, neither for input nor for textarea. To reproduce:

1. Open the attached setdir.html
2. Click on the input and type a. You will see a period appear above the input indicating that an input event has been fired.
3. In Chrome on Windows, press Ctrl-Right Shift; in Safari, right-click on the input and choose RTL paragraph direction.
Expected behavior: &quot;rtl.&quot; should appear next to the period placed above the input earlier. This would indicate that an input event has been fired.
Actual behavior: nothing happens.
4. Click on the input and type b. You will see &quot;rtl.&quot; appear next to the period placed above the input earlier.
5. Repeat 1-4 using the textarea instead.

In other words, the user setting an element&apos;s direction sets its dir attribute, but does not fire the input event, which is what this bug is all about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444591</commentid>
    <comment_count>36</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-08-01 02:04:40 -0700</bug_when>
    <thetext>Greetings Aharon,

Thank you for your update.

(In reply to comment #35)
&gt; As far as I can see, the bug is fixed in neither Chrome 12.0 nor Safari 5.1, neither for input nor for textarea. To reproduce:

When I test your test case with Chrome 14.0.835.2, it sends input events as you expected. (I think Chrome 12 does not merge my WebKit r87770.) Would it be possible to install a dev channel or a canary build as written in &lt;http://www.chromium.org/getting-involved/dev-channel&gt; and try it?

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444602</commentid>
    <comment_count>37</comment_count>
    <who name="Aharon (Vladimir) Lanin">aharon</who>
    <bug_when>2011-08-01 02:32:17 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; Greetings Aharon,
&gt; 
&gt; Thank you for your update.
&gt; 
&gt; (In reply to comment #35)
&gt; &gt; As far as I can see, the bug is fixed in neither Chrome 12.0 nor Safari 5.1, neither for input nor for textarea. To reproduce:
&gt; 
&gt; When I test your test case with Chrome 14.0.835.2, it sends input events as you expected. (I think Chrome 12 does not merge my WebKit r87770.) Would it be possible to install a dev channel or a canary build as written in &lt;http://www.chromium.org/getting-involved/dev-channel&gt; and try it?
&gt; 
&gt; Regards,
&gt; 
&gt; Hironori Bono

Oops, you are absolutely correct. The canary build works as advertised.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87313</attachid>
            <date>2011-03-29 07:18:51 -0700</date>
            <delta_ts>2011-04-06 10:45:48 -0700</delta_ts>
            <desc>A quick fix v1</desc>
            <filename>issue50952-patch0.txt</filename>
            <type>text/plain</type>
            <size>14479</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyMjQ0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDMtMjkgIEhpcm9ub3Jp
IEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU2VuZCBhbiBpbnB1dCBldmVudCB3aGVuIHdlIGNoYW5nZSB0
aGUgdGV4dCBkaXJlY3Rpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MDk1MgorCisgICAgICAgIEJvdGggU2FmYXJpIGFuZCBDaHJvbWUgY2FsbCBF
ZGl0b3I6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKCkgdG8gY2hhbmdlCisgICAgICAgIHRoZSB0
ZXh0IGRpcmVjdGlvbiBvZiBhbiBlZGl0YWJsZSBlbGVtZW50IHdpdGggdGhlaXIgVUlzLiBUaGlz
IGNoYW5nZQorICAgICAgICBjYWxscyBkaXNwYXRjaElucHV0RXZlbnRzKCkgdG8gc2VuZCBhbiBp
bnB1dCBldmVudCB3aGVuIHRoZSBmdW5jdGlvbgorICAgICAgICBhY3R1YWxseSBjaGFuZ2VzIHRo
ZSAiZGlyIiBhdHRyaWJ1dGUgc28gd2UgY2FuIHNlbmQgYW4gaW5wdXQgZXZlbnQgYXMKKyAgICAg
ICAgd3JpdHRlbiBpbiB0aGUgSFRNTDUgc3BlYy4KKworICAgICAgICBUZXN0OiBmYXN0L2h0bWwv
c2V0LXRleHQtZGlyZWN0aW9uLmh0bWwKKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24pOgorCiAy
MDExLTAzLTI5ICBMZW8gWWFuZyAgPGxlby55YW5nQHRvcmNobW9iaWxlLmNvbS5jbj4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBOaWtvbGFzIFppbW1lcm1hbm4uCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCShyZXZpc2lvbiA4MjIwNikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0OSw2ICsxNTQ5LDkgQEAgdm9pZCBFZGl0
b3I6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB0b0hUTUxFbGVtZW50KGZvY3VzZWROb2RlKS0+c2V0QXR0cmlidXRlKGRpckF0dHIsIGRp
cmVjdGlvbiA9PSBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24gPyAibHRyIiA6ICJydGwiKTsK
ICAgICAgICAgZnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAg
ICAgICAvLyBTZW5kIGFuIGlucHV0IGV2ZW50IHRvIHRoaXMgZWxlbWVudCBhcyB3cml0dGVuIGlu
ICI0LjEwLjcuMS4yIFRleHQgc3RhdGUgYW5kIFNlYXJjaCBzdGF0ZSIuCisgICAgICAgIC8vIChT
ZWUgPGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvT3ZlcnZpZXcuaHRtbCN0ZXh0LXN0YXRl
LWFuZC1zZWFyY2gtc3RhdGU+LikKKyAgICAgICAgZm9jdXNlZE5vZGUtPmRpc3BhdGNoSW5wdXRF
dmVudHMoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwko
cmV2aXNpb24gODIyNDQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0wMy0yOSAgSGlyb25vcmkgQm9ubyAgPGhib25v
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgYSBKYXZhU2NyaXB0IGZ1bmN0aW9uIGxheW91dFRlc3RDb250cm9sbGVyLnNl
dFRleHREaXJlY3Rpb24oKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTUwOTUyCisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEgbmV3
IEphdmFTY3JpcHQgZnVuY3Rpb24gc2V0VGV4dERpcmVjdGlvbigpIHRvIHRoZQorICAgICAgICBM
YXlvdXRUZXN0Q29udHJvbGxlciBjbGFzcyBvZiBTYWZhcmkgYW5kIENocm9tZSB0byB3cml0ZSBs
YXlvdXQgdGVzdHMKKyAgICAgICAgdGhhdCBjaGFuZ2VzIHRoZSB0ZXh0IGRpcmVjdGlvbiBvZiBh
biBlZGl0YWJsZSBlbGVtZW50LgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAg
ICAgICAoLVtXZWJWaWV3IF9zZXRUZXh0RGlyZWN0aW9uOl0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViVmlld1ByaXZhdGUuaDoKKwogMjAxMS0wMy0yOCAgQWRlbGUgUGV0ZXJzb24gIDxhZGVsZUBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA4MjIwNikKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjc2OCw2ICsy
NzY4LDEzIEBAIC0gKHZvaWQpX3NldE1pbmltdW1UaW1lckludGVydmFsOihkb3VibGUKICAgICAg
ICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCktPnNldE1pbkRPTVRpbWVySW50ZXJ2YWwoaW50
ZXJ2YWxJblNlY29uZHMpOwogfQogCistICh2b2lkKV9zZXRUZXh0RGlyZWN0aW9uOihpbnQpZGly
ZWN0aW9uCit7CisgICAgRnJhbWUqIG1haW5GcmFtZSA9IFtzZWxmIF9tYWluQ29yZUZyYW1lXTsK
KyAgICBpZiAobWFpbkZyYW1lKQorICAgICAgICBtYWluRnJhbWUtPmVkaXRvcigpLT5zZXRCYXNl
V3JpdGluZ0RpcmVjdGlvbihzdGF0aWNfY2FzdDxXcml0aW5nRGlyZWN0aW9uPihkaXJlY3Rpb24p
KTsKK30KKwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gX1dlYlNhZmVGb3J3YXJkZXIKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgJKHJldmlzaW9uIDgy
MjA2KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01ODgsNiArNTg4LDEzIEBAIENvdWxkIGJlIHdvcnRoIGFkZGluZyB0byB0
aGUgQVBJLgogKi8KIC0gKHZvaWQpX3NldE1pbmltdW1UaW1lckludGVydmFsOihkb3VibGUpaW50
ZXJ2YWxJblNlY29uZHM7CiAKKy8qIQorICAgIEBtZXRob2Qgc2V0VGV4dERpcmVjdGlvbjoKKyAg
ICBAZGlzY3Vzc2lvbgorICAgIEByZXN1bHQgUmV0dXJucyB0aGUgZGVmYXVsdCBtaW5pbXVtIHRp
bWVyIGludGVydmFsLgorKi8KKy0gKHZvaWQpX3NldFRleHREaXJlY3Rpb246KGludClkaXJlY3Rp
b247CisKIEBlbmQKIAogQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3UHJpbnRpbmdQcml2YXRl
KQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gODIyNDQpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyNSBAQAorMjAxMS0wMy0yOSAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
YSBKYXZhU2NyaXB0IGZ1bmN0aW9uIGxheW91dFRlc3RDb250cm9sbGVyLnNldFRleHREaXJlY3Rp
b24oKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUw
OTUyCisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEgbmV3IEphdmFTY3JpcHQg
ZnVuY3Rpb24gc2V0VGV4dERpcmVjdGlvbigpIHRvIHRoZQorICAgICAgICBMYXlvdXRUZXN0Q29u
dHJvbGxlciBjbGFzcyBvZiBTYWZhcmkgYW5kIENocm9tZSB0byB3cml0ZSBsYXlvdXQgdGVzdHMK
KyAgICAgICAgdGhhdCBjaGFuZ2VzIHRoZSB0ZXh0IGRpcmVjdGlvbiBvZiBhbiBlZGl0YWJsZSBl
bGVtZW50LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoc2V0VGV4dERpcmVjdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRUZXh0RGlyZWN0aW9uKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9M
YXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRUZXh0RGlyZWN0aW9uKToKKwogMjAxMS0wMy0yOSAgWm9sdGFuIEhvcnZhdGggIDx6b2x0
YW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgpJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gODIyMDYpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwODAsNiArMjA4MCwxNyBAQCBzdGF0aWMgSlNWYWx1
ZVJlZiBzZXRNaW5pbXVtVGltZXJJbnRlcnZhCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZp
bmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRUZXh0RGlyZWN0aW9uQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENv
dW50ID09IDEpIHsKKyAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGRpcmVjdGlvbihB
ZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlv
bikpOworICAgICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19j
YXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3Qp
KTsKKyAgICAgICAgY29udHJvbGxlci0+c2V0VGV4dERpcmVjdGlvbihkaXJlY3Rpb24uZ2V0KCkp
OworICAgIH0KKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30K
Kwogc3RhdGljIHZvaWQgbGF5b3V0VGVzdENvbnRyb2xsZXJPYmplY3RGaW5hbGl6ZShKU09iamVj
dFJlZiBvYmplY3QpCiB7CiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBz
dGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZShvYmpl
Y3QpKTsKQEAgLTIyNzksNiArMjI5MCw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RD
b250cm9sbGVyOjoKICAgICAgICAgeyAiZGVsZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2luIiwgZGVs
ZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2luQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAib3Jp
Z2luc1dpdGhMb2NhbFN0b3JhZ2UiLCBvcmlnaW5zV2l0aExvY2FsU3RvcmFnZUNhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgInNldFNob3VsZFBhaW50QnJva2VuSW1hZ2UiLCBzZXRTaG91bGRQ
YWludEJyb2tlbkltYWdlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0VGV4dERpcmVj
dGlvbiIsIHNldFRleHREaXJlY3Rpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7IDAsIDAs
IDAgfQogICAgIH07CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaAkocmV2aXNpb24gODIyMDYpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsNiArMzI3LDggQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUpOwogCisgICAg
dm9pZCBzZXRUZXh0RGlyZWN0aW9uKEpTU3RyaW5nUmVmKTsKKwogcHJpdmF0ZToKICAgICBMYXlv
dXRUZXN0Q29udHJvbGxlcihjb25zdCBzdGQ6OnN0cmluZyYgdGVzdFBhdGhPclVSTCwgY29uc3Qg
c3RkOjpzdHJpbmcmIGV4cGVjdGVkUGl4ZWxIYXNoKTsKIApJbmRleDogVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gODIyMDYpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OSw2ICsxNzksNyBAQCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsCiAgICAgYmluZE1ldGhvZCgid2FpdEZv
clBvbGljeURlbGVnYXRlIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjp3YWl0Rm9yUG9saWN5RGVs
ZWdhdGUpOwogICAgIGJpbmRNZXRob2QoIndhaXRVbnRpbERvbmUiLCAmTGF5b3V0VGVzdENvbnRy
b2xsZXI6OndhaXRVbnRpbERvbmUpOwogICAgIGJpbmRNZXRob2QoIndpbmRvd0NvdW50IiwgJkxh
eW91dFRlc3RDb250cm9sbGVyOjp3aW5kb3dDb3VudCk7CisgICAgYmluZE1ldGhvZCgic2V0VGV4
dERpcmVjdGlvbiIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGV4dERpcmVjdGlvbik7CiAK
ICAgICAvLyBUaGUgZm9sbG93aW5nIGFyZSBzdHVicy4KICAgICBiaW5kTWV0aG9kKCJhYm9ydE1v
ZGFsIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjphYm9ydE1vZGFsKTsKQEAgLTE2OTMsMyArMTY5
NCwyNCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzeW5jTG9jYWxTdG9yCiB7CiAgICAg
Ly8gTm90IEltcGxlbWVudGVkCiB9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRl
eHREaXJlY3Rpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQq
IHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICBpZiAoYXJndW1lbnRzLnNp
emUoKSAhPSAxIHx8ICFhcmd1bWVudHNbMF0uaXNTdHJpbmcoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgLy8gTWFwIGEgZGlyZWN0aW9uIG5hbWUgdG8gYSBXZWJUZXh0RGlyZWN0aW9uIHZhbHVl
LgorICAgIHN0ZDo6c3RyaW5nIGRpcmVjdGlvbk5hbWUgPSBhcmd1bWVudHNbMF0udG9TdHJpbmco
KTsKKyAgICBXZWJLaXQ6OldlYlRleHREaXJlY3Rpb24gZGlyZWN0aW9uOworICAgIGlmIChkaXJl
Y3Rpb25OYW1lID09ICJhdXRvIikKKyAgICAgICAgZGlyZWN0aW9uID0gV2ViS2l0OjpXZWJUZXh0
RGlyZWN0aW9uRGVmYXVsdDsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb25OYW1lID09ICJydGwiKQor
ICAgICAgICBkaXJlY3Rpb24gPSBXZWJLaXQ6OldlYlRleHREaXJlY3Rpb25SaWdodFRvTGVmdDsK
KyAgICBlbHNlIGlmIChkaXJlY3Rpb25OYW1lID09ICJsdHIiKQorICAgICAgICBkaXJlY3Rpb24g
PSBXZWJLaXQ6OldlYlRleHREaXJlY3Rpb25MZWZ0VG9SaWdodDsKKyAgICBlbHNlCisgICAgICAg
IHJldHVybjsKKworICAgIG1fc2hlbGwtPndlYlZpZXcoKS0+c2V0VGV4dERpcmVjdGlvbihkaXJl
Y3Rpb24pOworfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVz
dENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA4MjIwNikKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM1OCw2ICszNTgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBvYnNlcnZlU3RvcmFnZVRyYWNr
ZXJOb3RpZmljYXRpb25zKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAg
ICB2b2lkIHN5bmNMb2NhbFN0b3JhZ2UoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOwogCisgICAgLy8gQ2hhbmdlcyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBmb2N1c2VkIGVsZW1l
bnQuCisgICAgdm9pZCBzZXRUZXh0RGlyZWN0aW9uKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENw
cFZhcmlhbnQqKTsKKwogcHVibGljOgogICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUg
bm90IGV4cG9zZWQgdG8gSmF2YVNjcmlwdC4KICAgICB2b2lkIHNldFdvcmtRdWV1ZUZyb3plbihi
b29sIGZyb3plbikgeyBtX3dvcmtRdWV1ZS5zZXRGcm96ZW4oZnJvemVuKTsgfQpJbmRleDogVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5t
bQkocmV2aXNpb24gODIyMDYpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVz
dENvbnRyb2xsZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwOTcsMyArMTA5NywxOSBAQCB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNaW5pbXVtVGltCiB7CiAgICAgW1ttYWluRnJh
bWUgd2ViVmlld10gX3NldE1pbmltdW1UaW1lckludGVydmFsOm1pbmltdW1UaW1lckludGVydmFs
XTsKIH0KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGV4dERpcmVjdGlvbihKU1N0
cmluZ1JlZiBkaXJlY3Rpb25OYW1lKQoreworICAgIC8vIE1hcCBhIGRpcmVjdGlvbiBuYW1lIHRv
IGEgV3JpdGluZ0RpcmVjdGlvbiB2YWx1ZS4KKyAgICBpbnQgZGlyZWN0aW9uID0gLTE7CisgICAg
aWYgKEpTU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoZGlyZWN0aW9uTmFtZSwgImF1dG8iKSkK
KyAgICAgICAgZGlyZWN0aW9uID0gMDsgIC8vIE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uCisgICAg
ZWxzZSBpZiAoSlNTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhkaXJlY3Rpb25OYW1lLCAibHRy
IikpCisgICAgICAgIGRpcmVjdGlvbiA9IDE7ICAvLyBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rp
b24KKyAgICBlbHNlIGlmIChKU1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGRpcmVjdGlvbk5h
bWUsICJydGwiKSkKKyAgICAgICAgZGlyZWN0aW9uID0gMjsgIC8vIFJpZ2h0VG9MZWZ0V3JpdGlu
Z0RpcmVjdGlvbgorICAgIGVsc2UKKyAgICAgICAgcmV0dXJuOworCisgICAgW1ttYWluRnJhbWUg
d2ViVmlld10gX3NldFRleHREaXJlY3Rpb246ZGlyZWN0aW9uXTsKK30KSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDgyMjQ0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMTEtMDMtMjkgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Vu
ZCBhbiBpbnB1dCBldmVudCB3aGVuIHdlIGNoYW5nZSB0aGUgdGV4dCBkaXJlY3Rpb24uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk1MgorCisgICAg
ICAgIFRoaXMgYWRkcyBhIG5ldyBsYXlvdXQgdGVzdCB0byB2ZXJpZnkgdGhhdCB3ZSBjYW4gcmV2
ZWl2ZSBpbnB1dCBldmVudHMKKyAgICAgICAgd2hlbiB3ZSBjaGFuZ2UgdGhlIHRleHQgZGlyZWN0
aW9uIG9mIGEgPHRleHRhcmVhPiBlbGVtZW50IGFuZCBhbiA8aW5wdXQ+CisgICAgICAgIGVsZW1l
bnQuCisKKyAgICAgICAgKiBmYXN0L2h0bWwvc2NyaXB0LXRlc3RzL3NldC10ZXh0LWRpcmVjdGlv
bi5qczogQWRkZWQuCisgICAgICAgICh0ZXh0YXJlYS5vbmlucHV0KToKKyAgICAgICAgKGlucHV0
Lm9uaW5wdXQpOgorICAgICAgICAqIGZhc3QvaHRtbC9zZXQtdGV4dC1kaXJlY3Rpb24tZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0aW9uLmh0
bWw6IEFkZGVkLgorCiAyMDExLTAzLTI5ICBMZW8gWWFuZyAgPGxlby55YW5nQHRvcmNobW9iaWxl
LmNvbS5jbj4KIAogICAgICAgICBSZXZpZXdlZCBieSBOaWtvbGFzIFppbW1lcm1hbm4uCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0aW9uLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0aW9uLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaHRtbC9zZXQtdGV4
dC1kaXJlY3Rpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACitU
ZXN0IHRoYXQgV2ViS2l0IHNlbmRzIGFuIGlucHV0IGV2ZW50IHdoZW4gd2UgY2hhbmdlIHRoZSB0
ZXh0IGRpcmVjdGlvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZXhw
ZWN0ZWQgaXMgdGV4dGFyZWEuZGlyCitQQVNTIGV4cGVjdGVkIGlzIHRleHRhcmVhLmRpcgorUEFT
UyBleHBlY3RlZCBpcyBpbnB1dC5kaXIKK1BBU1MgZXhwZWN0ZWQgaXMgaW5wdXQuZGlyCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9odG1sL3NldC10ZXh0LWRpcmVjdGlvbi5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvaHRtbC9zZXQtdGV4dC1kaXJlY3Rpb24uaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvaHRtbC9zZXQtdGV4dC1kaXJlY3Rpb24uaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc2V0LXRleHQtZGlyZWN0aW9u
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9odG1sL3NjcmlwdC10ZXN0cy9zZXQtdGV4dC1kaXJlY3Rpb24uanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9odG1sL3NjcmlwdC10ZXN0cy9zZXQtdGV4dC1kaXJlY3Rp
b24uanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvc2NyaXB0LXRlc3Rz
L3NldC10ZXh0LWRpcmVjdGlvbi5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MyBAQAorZGVz
Y3JpcHRpb24oJ1Rlc3QgdGhhdCBXZWJLaXQgc2VuZHMgYW4gaW5wdXQgZXZlbnQgd2hlbiB3ZSBj
aGFuZ2UgdGhlIHRleHQgZGlyZWN0aW9uLicpOworCisvLyBUaGUgc3RyaW5nIHVzZWQgZm9yIHN0
b3JpbmcgdGhlIGV4cGVjdGVkIHRleHQgZGlyZWN0aW9uIHdoZW4gd2UgcmVjZWl2ZSBhbiBpbnB1
dCBldmVudC4KK3ZhciBleHBlY3RlZCA9ICcnOworCisvLyBDcmVhdGUgYSB0ZXh0YXJlYSBlbGVt
ZW50IGFuZCBhbiBpbnB1dCBlbGVtZW50LiBUaGVzZSBlbGVtZW50cyBhcmUgdXNlZCBmb3IKKy8v
IGNoYW5naW5nIHRoZWlyIHRleHQgZGlyZWN0aW9uIHdpdGggRWRpdG9yOjpzZXRCYXNlV3JpdGlu
Z0RpcmVjdGlvbigpIGNhbGxzLgordmFyIHRleHRhcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgndGV4dGFyZWEnKTsKK3RleHRhcmVhLnJvd3MgPSAxMDsKK3RleHRhcmVhLmNvbHMgPSAxMDsK
K3RleHRhcmVhLm9uaW5wdXQgPSBmdW5jdGlvbigpIHsKKyAgICBzaG91bGRCZSgnZXhwZWN0ZWQn
LCAndGV4dGFyZWEuZGlyJyk7Cit9Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRleHRhcmVh
KTsKKwordmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKK2lucHV0
LnR5cGUgPSAndGV4dCc7CitpbnB1dC5vbmlucHV0ID0gZnVuY3Rpb24oKSB7CisgICAgc2hvdWxk
QmUoJ2V4cGVjdGVkJywgJ2lucHV0LmRpcicpOworfQorZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChpbnB1dCk7CisKKy8vIENoYW5nZSB0aGUgdGV4dCBkaXJlY3Rpb24gb2YgdGhlIHRleHRhcmVh
IGVsZW1lbnQgdG8gUlRMLgorZXhwZWN0ZWQgPSAncnRsJzsKK3RleHRhcmVhLmZvY3VzKCk7Cits
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRUZXh0RGlyZWN0aW9uKCdydGwnKTsKKworLy8gQ2hhbmdl
IHRoZSB0ZXh0IGRpcmVjdGlvbiBvZiB0aGUgdGV4dGFyZWEgZWxlbWVudCB0byBMVFIuCitleHBl
Y3RlZCA9ICdsdHInOwordGV4dGFyZWEuZm9jdXMoKTsKK2xheW91dFRlc3RDb250cm9sbGVyLnNl
dFRleHREaXJlY3Rpb24oJ2x0cicpOworCisvLyBDaGFuZ2UgdGhlIHRleHQgZGlyZWN0aW9uIG9m
IHRoZSBpbnB1dCBlbGVtZW50IHRvIFJUTC4KK2V4cGVjdGVkID0gJ3J0bCc7CitpbnB1dC5mb2N1
cygpOworbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0VGV4dERpcmVjdGlvbigncnRsJyk7CisKKy8v
IENoYW5nZSB0aGUgdGV4dCBkaXJlY3Rpb24gb2YgdGhlIGlucHV0IGVsZW1lbnQgdG8gTFRSLgor
ZXhwZWN0ZWQgPSAnbHRyJzsKK2lucHV0LmZvY3VzKCk7CitsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRUZXh0RGlyZWN0aW9uKCdsdHInKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87346</attachid>
            <date>2011-03-29 09:30:45 -0700</date>
            <delta_ts>2011-03-30 08:00:38 -0700</delta_ts>
            <desc>A quick fix v2</desc>
            <filename>issue50952-patch1.txt</filename>
            <type>text/plain</type>
            <size>15116</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyMjU4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDMtMjkgIEhpcm9ub3Jp
IEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU2VuZCBhbiBpbnB1dCBldmVudCB3aGVuIHdlIGNoYW5nZSB0
aGUgdGV4dCBkaXJlY3Rpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MDk1MgorCisgICAgICAgIEJvdGggU2FmYXJpIGFuZCBDaHJvbWUgY2FsbCBF
ZGl0b3I6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKCkgdG8gY2hhbmdlCisgICAgICAgIHRoZSB0
ZXh0IGRpcmVjdGlvbiBvZiBhbiBlZGl0YWJsZSBlbGVtZW50IHdpdGggdGhlaXIgVUlzLiBUaGlz
IGNoYW5nZQorICAgICAgICBjYWxscyBkaXNwYXRjaElucHV0RXZlbnRzKCkgdG8gc2VuZCBhbiBp
bnB1dCBldmVudCB3aGVuIHRoZSBmdW5jdGlvbgorICAgICAgICBhY3R1YWxseSBjaGFuZ2VzIHRo
ZSAiZGlyIiBhdHRyaWJ1dGUgc28gd2UgY2FuIHNlbmQgYW4gaW5wdXQgZXZlbnQgYXMKKyAgICAg
ICAgd3JpdHRlbiBpbiB0aGUgSFRNTDUgc3BlYy4KKworICAgICAgICBUZXN0OiBmYXN0L2h0bWwv
c2V0LXRleHQtZGlyZWN0aW9uLmh0bWwKKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24pOgorCiAy
MDExLTAzLTI5ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBOaWtvbGFzIFppbW1lcm1hbm4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCShyZXZpc2lvbiA4MjIwNikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTU0OSw2ICsxNTQ5LDkgQEAgdm9pZCBFZGl0b3I6OnNldEJh
c2VXcml0aW5nRGlyZWN0aW9uKFdyaQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0b0hU
TUxFbGVtZW50KGZvY3VzZWROb2RlKS0+c2V0QXR0cmlidXRlKGRpckF0dHIsIGRpcmVjdGlvbiA9
PSBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24gPyAibHRyIiA6ICJydGwiKTsKICAgICAgICAg
ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAgICAgICAvLyBT
ZW5kIGFuIGlucHV0IGV2ZW50IHRvIHRoaXMgZWxlbWVudCBhcyB3cml0dGVuIGluICI0LjEwLjcu
MS4yIFRleHQgc3RhdGUgYW5kIFNlYXJjaCBzdGF0ZSIuCisgICAgICAgIC8vIChTZWUgPGh0dHA6
Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvT3ZlcnZpZXcuaHRtbCN0ZXh0LXN0YXRlLWFuZC1zZWFy
Y2gtc3RhdGU+LikKKyAgICAgICAgZm9jdXNlZE5vZGUtPmRpc3BhdGNoSW5wdXRFdmVudHMoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24g
ODIyNTgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxOCBAQAorMjAxMS0wMy0yOSAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgYSBKYXZhU2NyaXB0IGZ1bmN0aW9uIGxheW91dFRlc3RDb250cm9sbGVyLnNldFRleHREaXJl
Y3Rpb24oKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTUwOTUyCisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEgbmV3IEphdmFTY3Jp
cHQgZnVuY3Rpb24gc2V0VGV4dERpcmVjdGlvbigpIHRvIHRoZQorICAgICAgICBMYXlvdXRUZXN0
Q29udHJvbGxlciBjbGFzcyBvZiBTYWZhcmkgYW5kIENocm9tZSB0byB3cml0ZSBsYXlvdXQgdGVz
dHMKKyAgICAgICAgdGhhdCBjaGFuZ2VzIHRoZSB0ZXh0IGRpcmVjdGlvbiBvZiBhbiBlZGl0YWJs
ZSBlbGVtZW50LgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
ZWJWaWV3IF9zZXRUZXh0RGlyZWN0aW9uOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1By
aXZhdGUuaDoKKwogMjAxMS0wMy0yOCAgQWRlbGUgUGV0ZXJzb24gIDxhZGVsZUBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA4MjIwNikKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjc2OCw2ICsyNzY4LDEzIEBA
IC0gKHZvaWQpX3NldE1pbmltdW1UaW1lckludGVydmFsOihkb3VibGUKICAgICAgICAgX3ByaXZh
dGUtPnBhZ2UtPnNldHRpbmdzKCktPnNldE1pbkRPTVRpbWVySW50ZXJ2YWwoaW50ZXJ2YWxJblNl
Y29uZHMpOwogfQogCistICh2b2lkKV9zZXRUZXh0RGlyZWN0aW9uOihpbnQpZGlyZWN0aW9uCit7
CisgICAgRnJhbWUqIG1haW5GcmFtZSA9IFtzZWxmIF9tYWluQ29yZUZyYW1lXTsKKyAgICBpZiAo
bWFpbkZyYW1lKQorICAgICAgICBtYWluRnJhbWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGluZ0Rp
cmVjdGlvbihzdGF0aWNfY2FzdDxXcml0aW5nRGlyZWN0aW9uPihkaXJlY3Rpb24pKTsKK30KKwog
QGVuZAogCiBAaW1wbGVtZW50YXRpb24gX1dlYlNhZmVGb3J3YXJkZXIKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgJKHJldmlzaW9uIDgyMjA2KQorKysg
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01ODgsNiArNTg4LDEzIEBAIENvdWxkIGJlIHdvcnRoIGFkZGluZyB0byB0aGUgQVBJLgog
Ki8KIC0gKHZvaWQpX3NldE1pbmltdW1UaW1lckludGVydmFsOihkb3VibGUpaW50ZXJ2YWxJblNl
Y29uZHM7CiAKKy8qIQorICAgIEBtZXRob2Qgc2V0VGV4dERpcmVjdGlvbjoKKyAgICBAZGlzY3Vz
c2lvbgorICAgIEByZXN1bHQgUmV0dXJucyB0aGUgZGVmYXVsdCBtaW5pbXVtIHRpbWVyIGludGVy
dmFsLgorKi8KKy0gKHZvaWQpX3NldFRleHREaXJlY3Rpb246KGludClkaXJlY3Rpb247CisKIEBl
bmQKIAogQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3UHJpbnRpbmdQcml2YXRlKQpJbmRleDog
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24g
ODIyNTgpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNyBA
QAorMjAxMS0wMy0yOSAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBKYXZhU2Ny
aXB0IGZ1bmN0aW9uIGxheW91dFRlc3RDb250cm9sbGVyLnNldFRleHREaXJlY3Rpb24oKS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwOTUyCisKKyAg
ICAgICAgVGhpcyBjaGFuZ2UgYWRkcyBhIG5ldyBKYXZhU2NyaXB0IGZ1bmN0aW9uIHNldFRleHRE
aXJlY3Rpb24oKSB0byB0aGUKKyAgICAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIgY2xhc3Mgb2Yg
U2FmYXJpIGFuZCBDaHJvbWUgdG8gd3JpdGUgbGF5b3V0IHRlc3RzCisgICAgICAgIHRoYXQgY2hh
bmdlcyB0aGUgdGV4dCBkaXJlY3Rpb24gb2YgYW4gZWRpdGFibGUgZWxlbWVudC4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNl
dFRleHREaXJlY3Rpb25DYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0
Q29udHJvbGxlcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGV4dERpcmVj
dGlvbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xs
ZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGV4dERpcmVjdGlv
bik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2lu
LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUZXh0RGlyZWN0aW9uKToK
KwogMjAxMS0wMy0yOSAgTm9lbCBHb3Jkb24gIDxub2VsLmdvcmRvbkBnbWFpbC5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDgyMjA2KQorKysgVG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDgwLDYgKzIwODAsMTcgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0TWluaW11bVRpbWVySW50
ZXJ2YQogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3Rh
dGljIEpTVmFsdWVSZWYgc2V0VGV4dERpcmVjdGlvbkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA9PSAxKSB7CisgICAgICAgIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBkaXJlY3Rpb24oQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0Nv
cHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKKyAgICAgICAgTGF5b3V0VGVz
dENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxl
cio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgICAgIGNvbnRyb2xsZXIt
PnNldFRleHREaXJlY3Rpb24oZGlyZWN0aW9uLmdldCgpKTsKKyAgICB9CisKKyAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyB2b2lkIGxheW91dFRl
c3RDb250cm9sbGVyT2JqZWN0RmluYWxpemUoSlNPYmplY3RSZWYgb2JqZWN0KQogewogICAgIExh
eW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENv
bnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUob2JqZWN0KSk7CkBAIC0yMjc5LDYgKzIyOTAs
NyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6CiAgICAgICAgIHsg
ImRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbiIsIGRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdp
bkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIm9yaWdpbnNXaXRoTG9jYWxTdG9yYWdlIiwg
b3JpZ2luc1dpdGhMb2NhbFN0b3JhZ2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRT
aG91bGRQYWludEJyb2tlbkltYWdlIiwgc2V0U2hvdWxkUGFpbnRCcm9rZW5JbWFnZUNhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCisgICAgICAgIHsgInNldFRleHREaXJlY3Rpb24iLCBzZXRUZXh0RGlyZWN0aW9u
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAwLCAwLCAwIH0KICAgICB9OwogCkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDgy
MjA2KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzI3LDYgKzMyNyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0TWlu
aW11bVRpbWVySW50ZXJ2YWwoZG91YmxlKTsKIAorICAgIHZvaWQgc2V0VGV4dERpcmVjdGlvbihK
U1N0cmluZ1JlZik7CisKIHByaXZhdGU6CiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIoY29uc3Qg
c3RkOjpzdHJpbmcmIHRlc3RQYXRoT3JVUkwsIGNvbnN0IHN0ZDo6c3RyaW5nJiBleHBlY3RlZFBp
eGVsSGFzaCk7CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDgyMjA2KQorKysgVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzksNiArMTc5LDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRl
c3RDb250cm9sbAogICAgIGJpbmRNZXRob2QoIndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSIsICZMYXlv
dXRUZXN0Q29udHJvbGxlcjo6d2FpdEZvclBvbGljeURlbGVnYXRlKTsKICAgICBiaW5kTWV0aG9k
KCJ3YWl0VW50aWxEb25lIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjp3YWl0VW50aWxEb25lKTsK
ICAgICBiaW5kTWV0aG9kKCJ3aW5kb3dDb3VudCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6d2lu
ZG93Q291bnQpOworICAgIGJpbmRNZXRob2QoInNldFRleHREaXJlY3Rpb24iLCAmTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldFRleHREaXJlY3Rpb24pOwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBh
cmUgc3R1YnMuCiAgICAgYmluZE1ldGhvZCgiYWJvcnRNb2RhbCIsICZMYXlvdXRUZXN0Q29udHJv
bGxlcjo6YWJvcnRNb2RhbCk7CkBAIC0xNjkzLDMgKzE2OTQsMjQgQEAgdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c3luY0xvY2FsU3RvcgogewogICAgIC8vIE5vdCBJbXBsZW1lbnRlZAogfQor
Cit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUZXh0RGlyZWN0aW9uKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0
LT5zZXROdWxsKCk7CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgIT0gMSB8fCAhYXJndW1lbnRz
WzBdLmlzU3RyaW5nKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIE1hcCBhIGRpcmVjdGlv
biBuYW1lIHRvIGEgV2ViVGV4dERpcmVjdGlvbiB2YWx1ZS4KKyAgICBzdGQ6OnN0cmluZyBkaXJl
Y3Rpb25OYW1lID0gYXJndW1lbnRzWzBdLnRvU3RyaW5nKCk7CisgICAgV2ViS2l0OjpXZWJUZXh0
RGlyZWN0aW9uIGRpcmVjdGlvbjsKKyAgICBpZiAoZGlyZWN0aW9uTmFtZSA9PSAiYXV0byIpCisg
ICAgICAgIGRpcmVjdGlvbiA9IFdlYktpdDo6V2ViVGV4dERpcmVjdGlvbkRlZmF1bHQ7CisgICAg
ZWxzZSBpZiAoZGlyZWN0aW9uTmFtZSA9PSAicnRsIikKKyAgICAgICAgZGlyZWN0aW9uID0gV2Vi
S2l0OjpXZWJUZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQ7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9u
TmFtZSA9PSAibHRyIikKKyAgICAgICAgZGlyZWN0aW9uID0gV2ViS2l0OjpXZWJUZXh0RGlyZWN0
aW9uTGVmdFRvUmlnaHQ7CisgICAgZWxzZQorICAgICAgICByZXR1cm47CisKKyAgICBtX3NoZWxs
LT53ZWJWaWV3KCktPnNldFRleHREaXJlY3Rpb24oZGlyZWN0aW9uKTsKK30KSW5kZXg6IFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIu
aAkocmV2aXNpb24gODIyMDYpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTgsNiArMzU4LDkgQEAgcHVi
bGljOgogICAgIHZvaWQgb2JzZXJ2ZVN0b3JhZ2VUcmFja2VyTm90aWZpY2F0aW9ucyhjb25zdCBD
cHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBzeW5jTG9jYWxTdG9yYWdl
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAorICAgIC8vIENoYW5nZXMg
dGhlIGRpcmVjdGlvbiBvZiB0aGUgZm9jdXNlZCBlbGVtZW50LgorICAgIHZvaWQgc2V0VGV4dERp
cmVjdGlvbihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKIHB1YmxpYzoK
ICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIG5vdCBleHBvc2VkIHRvIEphdmFTY3Jp
cHQuCiAgICAgdm9pZCBzZXRXb3JrUXVldWVGcm96ZW4oYm9vbCBmcm96ZW4pIHsgbV93b3JrUXVl
dWUuc2V0RnJvemVuKGZyb3plbik7IH0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9M
YXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHJldmlzaW9uIDgyMjA2KQorKysg
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDk3LDMgKzEwOTcsMTkgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0TWluaW11bVRpbQogewogICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIF9zZXRNaW5pbXVt
VGltZXJJbnRlcnZhbDptaW5pbXVtVGltZXJJbnRlcnZhbF07CiB9CisKK3ZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldFRleHREaXJlY3Rpb24oSlNTdHJpbmdSZWYgZGlyZWN0aW9uTmFtZSkK
K3sKKyAgICAvLyBNYXAgYSBkaXJlY3Rpb24gbmFtZSB0byBhIFdyaXRpbmdEaXJlY3Rpb24gdmFs
dWUuCisgICAgaW50IGRpcmVjdGlvbiA9IC0xOworICAgIGlmIChKU1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKGRpcmVjdGlvbk5hbWUsICJhdXRvIikpCisgICAgICAgIGRpcmVjdGlvbiA9IDA7
ICAvLyBOYXR1cmFsV3JpdGluZ0RpcmVjdGlvbgorICAgIGVsc2UgaWYgKEpTU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcoZGlyZWN0aW9uTmFtZSwgImx0ciIpKQorICAgICAgICBkaXJlY3Rpb24g
PSAxOyAgLy8gTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uCisgICAgZWxzZSBpZiAoSlNTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhkaXJlY3Rpb25OYW1lLCAicnRsIikpCisgICAgICAgIGRp
cmVjdGlvbiA9IDI7ICAvLyBSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24KKyAgICBlbHNlCisg
ICAgICAgIHJldHVybjsKKworICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIF9zZXRUZXh0RGlyZWN0
aW9uOmRpcmVjdGlvbl07Cit9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0
VGVzdENvbnRyb2xsZXJXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAJKHJldmlzaW9uIDgyMjA2KQorKysgVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTUxMSw0ICsxNTExLDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TWluaW11bVRpbQogICAgIHZpZXdQcml2YXRlLT5zZXRNaW5pbXVtVGltZXJJbnRlcnZhbCht
aW5pbXVtVGltZXJJbnRlcnZhbCk7CiB9CiAKLQordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0VGV4dERpcmVjdGlvbihKU1N0cmluZ1JlZiBkaXJlY3Rpb24pCit7CisgICAgLy8gRklYTUU6
IEltcGxlbWVudC4KK30KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyMjU4KQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDMtMjkgIEhp
cm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VuZCBhbiBpbnB1dCBldmVudCB3aGVuIHdlIGNo
YW5nZSB0aGUgdGV4dCBkaXJlY3Rpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01MDk1MgorCisgICAgICAgIFRoaXMgYWRkcyBhIG5ldyBsYXlvdXQg
dGVzdCB0byB2ZXJpZnkgdGhhdCB3ZSBjYW4gcmV2ZWl2ZSBpbnB1dCBldmVudHMKKyAgICAgICAg
d2hlbiB3ZSBjaGFuZ2UgdGhlIHRleHQgZGlyZWN0aW9uIG9mIGEgPHRleHRhcmVhPiBlbGVtZW50
IGFuZCBhbiA8aW5wdXQ+CisgICAgICAgIGVsZW1lbnQuCisKKyAgICAgICAgKiBmYXN0L2h0bWwv
c2NyaXB0LXRlc3RzL3NldC10ZXh0LWRpcmVjdGlvbi5qczogQWRkZWQuCisgICAgICAgICh0ZXh0
YXJlYS5vbmlucHV0KToKKyAgICAgICAgKGlucHV0Lm9uaW5wdXQpOgorICAgICAgICAqIGZhc3Qv
aHRtbC9zZXQtdGV4dC1kaXJlY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDExLTAzLTI5ICBK
ZXNzaWUgQmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGFub3RoZXIg
dGVzdCB0aGF0IGRlcGVuZHMgb24gRXZlbnRTZW5kZXIgdG8gdGhlIG1hYy13azIgU2tpcHBlZCBm
aWxlLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9odG1sL3NldC10ZXh0LWRpcmVjdGlvbi1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9odG1sL3NldC10ZXh0LWRp
cmVjdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2h0
bWwvc2V0LXRleHQtZGlyZWN0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMyBAQAorVGVzdCB0aGF0IFdlYktpdCBzZW5kcyBhbiBpbnB1dCBldmVudCB3aGVuIHdlIGNo
YW5nZSB0aGUgdGV4dCBkaXJlY3Rpb24uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIGV4cGVjdGVkIGlzIHRleHRhcmVhLmRpcgorUEFTUyBleHBlY3RlZCBpcyB0ZXh0YXJl
YS5kaXIKK1BBU1MgZXhwZWN0ZWQgaXMgaW5wdXQuZGlyCitQQVNTIGV4cGVjdGVkIGlzIGlucHV0
LmRpcgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaHRtbC9zZXQtdGV4dC1kaXJlY3Rpb24uaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0aW9uLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0aW9u
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3NldC10ZXh0
LWRpcmVjdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvaHRtbC9zY3JpcHQtdGVzdHMvc2V0LXRleHQtZGlyZWN0aW9uLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaHRtbC9zY3JpcHQtdGVzdHMvc2V0LXRl
eHQtZGlyZWN0aW9uLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9odG1sL3Nj
cmlwdC10ZXN0cy9zZXQtdGV4dC1kaXJlY3Rpb24uanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NDMgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0IHRoYXQgV2ViS2l0IHNlbmRzIGFuIGlucHV0IGV2ZW50
IHdoZW4gd2UgY2hhbmdlIHRoZSB0ZXh0IGRpcmVjdGlvbi4nKTsKKworLy8gVGhlIHN0cmluZyB1
c2VkIGZvciBzdG9yaW5nIHRoZSBleHBlY3RlZCB0ZXh0IGRpcmVjdGlvbiB3aGVuIHdlIHJlY2Vp
dmUgYW4gaW5wdXQgZXZlbnQuCit2YXIgZXhwZWN0ZWQgPSAnJzsKKworLy8gQ3JlYXRlIGEgdGV4
dGFyZWEgZWxlbWVudCBhbmQgYW4gaW5wdXQgZWxlbWVudC4gVGhlc2UgZWxlbWVudHMgYXJlIHVz
ZWQgZm9yCisvLyBjaGFuZ2luZyB0aGVpciB0ZXh0IGRpcmVjdGlvbiB3aXRoIEVkaXRvcjo6c2V0
QmFzZVdyaXRpbmdEaXJlY3Rpb24oKSBjYWxscy4KK3ZhciB0ZXh0YXJlYSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7Cit0ZXh0YXJlYS5yb3dzID0gMTA7Cit0ZXh0YXJlYS5j
b2xzID0gMTA7Cit0ZXh0YXJlYS5vbmlucHV0ID0gZnVuY3Rpb24oKSB7CisgICAgc2hvdWxkQmUo
J2V4cGVjdGVkJywgJ3RleHRhcmVhLmRpcicpOworfQorZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZCh0ZXh0YXJlYSk7CisKK3ZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0
Jyk7CitpbnB1dC50eXBlID0gJ3RleHQnOworaW5wdXQub25pbnB1dCA9IGZ1bmN0aW9uKCkgewor
ICAgIHNob3VsZEJlKCdleHBlY3RlZCcsICdpbnB1dC5kaXInKTsKK30KK2RvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoaW5wdXQpOworCisvLyBDaGFuZ2UgdGhlIHRleHQgZGlyZWN0aW9uIG9mIHRo
ZSB0ZXh0YXJlYSBlbGVtZW50IHRvIFJUTC4KK2V4cGVjdGVkID0gJ3J0bCc7Cit0ZXh0YXJlYS5m
b2N1cygpOworbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0VGV4dERpcmVjdGlvbigncnRsJyk7CisK
Ky8vIENoYW5nZSB0aGUgdGV4dCBkaXJlY3Rpb24gb2YgdGhlIHRleHRhcmVhIGVsZW1lbnQgdG8g
TFRSLgorZXhwZWN0ZWQgPSAnbHRyJzsKK3RleHRhcmVhLmZvY3VzKCk7CitsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRUZXh0RGlyZWN0aW9uKCdsdHInKTsKKworLy8gQ2hhbmdlIHRoZSB0ZXh0IGRp
cmVjdGlvbiBvZiB0aGUgaW5wdXQgZWxlbWVudCB0byBSVEwuCitleHBlY3RlZCA9ICdydGwnOwor
aW5wdXQuZm9jdXMoKTsKK2xheW91dFRlc3RDb250cm9sbGVyLnNldFRleHREaXJlY3Rpb24oJ3J0
bCcpOworCisvLyBDaGFuZ2UgdGhlIHRleHQgZGlyZWN0aW9uIG9mIHRoZSBpbnB1dCBlbGVtZW50
IHRvIExUUi4KK2V4cGVjdGVkID0gJ2x0cic7CitpbnB1dC5mb2N1cygpOworbGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0VGV4dERpcmVjdGlvbignbHRyJyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87536</attachid>
            <date>2011-03-30 08:00:38 -0700</date>
            <delta_ts>2011-03-31 06:17:18 -0700</delta_ts>
            <desc>A quick fix v3</desc>
            <filename>issue50952-patch3.txt</filename>
            <type>text/plain</type>
            <size>17398</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyNDQyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDMtMzAgIEhpcm9ub3Jp
IEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU2VuZCBhbiBpbnB1dCBldmVudCB3aGVuIHdlIGNoYW5nZSB0
aGUgdGV4dCBkaXJlY3Rpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MDk1MgorCisgICAgICAgIEJvdGggU2FmYXJpIGFuZCBDaHJvbWUgY2FsbCBF
ZGl0b3I6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKCkgdG8gY2hhbmdlCisgICAgICAgIHRoZSB0
ZXh0IGRpcmVjdGlvbiBvZiBhbiBlZGl0YWJsZSBlbGVtZW50IHdpdGggdGhlaXIgVUlzLiBUaGlz
IGNoYW5nZQorICAgICAgICBjYWxscyBkaXNwYXRjaElucHV0RXZlbnRzKCkgdG8gc2VuZCBhbiBp
bnB1dCBldmVudCB3aGVuIHRoZSBmdW5jdGlvbgorICAgICAgICBhY3R1YWxseSBjaGFuZ2VzIHRo
ZSAiZGlyIiBhdHRyaWJ1dGUgc28gd2UgY2FuIHNlbmQgYW4gaW5wdXQgZXZlbnQgYXMKKyAgICAg
ICAgd3JpdHRlbiBpbiB0aGUgSFRNTDUgc3BlYy4KKworICAgICAgICBUZXN0OiBmYXN0L2h0bWwv
c2V0LXRleHQtZGlyZWN0aW9uLmh0bWwKKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24pOgorCiAy
MDExLTAzLTMwICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQuIFJvbGxvdXQgcjgyNDM4IGFuZCByODI0MzYuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiA4MjQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0OSw2ICsxNTQ5LDkgQEAgdm9p
ZCBFZGl0b3I6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB0b0hUTUxFbGVtZW50KGZvY3VzZWROb2RlKS0+c2V0QXR0cmlidXRlKGRpckF0
dHIsIGRpcmVjdGlvbiA9PSBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24gPyAibHRyIiA6ICJy
dGwiKTsKICAgICAgICAgZnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJZk5lZWRlZCgp
OworICAgICAgICAvLyBTZW5kIGFuIGlucHV0IGV2ZW50IHRvIHRoaXMgZWxlbWVudCBhcyB3cml0
dGVuIGluICI0LjEwLjcuMS4yIFRleHQgc3RhdGUgYW5kIFNlYXJjaCBzdGF0ZSIuCisgICAgICAg
IC8vIChTZWUgPGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvT3ZlcnZpZXcuaHRtbCN0ZXh0
LXN0YXRlLWFuZC1zZWFyY2gtc3RhdGU+LikKKyAgICAgICAgZm9jdXNlZE5vZGUtPmRpc3BhdGNo
SW5wdXRFdmVudHMoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogVG9vbHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gODI0NDIpCisr
KyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxMS0w
My0zMCAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBKYXZhU2NyaXB0IGZ1bmN0
aW9uIGxheW91dFRlc3RDb250cm9sbGVyLnNldFRleHREaXJlY3Rpb24oKS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwOTUyCisKKyAgICAgICAgVGhp
cyBjaGFuZ2UgYWRkcyBhIG5ldyBKYXZhU2NyaXB0IGZ1bmN0aW9uIHNldFRleHREaXJlY3Rpb24o
KSB0byB0aGUKKyAgICAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIgY2xhc3Mgb2YgU2FmYXJpIGFu
ZCBDaHJvbWUgdG8gd3JpdGUgbGF5b3V0IHRlc3RzCisgICAgICAgIHRoYXQgY2hhbmdlcyB0aGUg
dGV4dCBkaXJlY3Rpb24gb2YgYW4gZWRpdGFibGUgZWxlbWVudC4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldFRleHREaXJl
Y3Rpb25DYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVu
Y3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxl
cik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGV4dERpcmVjdGlvbik6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3Bw
OgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRleHREaXJlY3Rpb24pOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUZXh0RGlyZWN0aW9uKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRleHREaXJlY3Rpb24pOgorCiAyMDExLTAzLTMw
ICBZdXRhIEtpdGFtdXJhICA8eXV0YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEtlbnQgVGFtdXJhLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gODI0MTEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwODAsNiArMjA4
MCwxNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRNaW5pbXVtVGltZXJJbnRlcnZhCiAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJl
ZiBzZXRUZXh0RGlyZWN0aW9uQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQor
eworICAgIGlmIChhcmd1bWVudENvdW50ID09IDEpIHsKKyAgICAgICAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IGRpcmVjdGlvbihBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBh
cmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOworICAgICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciog
Y29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RH
ZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICAgICAgY29udHJvbGxlci0+c2V0VGV4dERpcmVj
dGlvbihkaXJlY3Rpb24uZ2V0KCkpOworICAgIH0KKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3RhdGljIHZvaWQgbGF5b3V0VGVzdENvbnRyb2xsZXJP
YmplY3RGaW5hbGl6ZShKU09iamVjdFJlZiBvYmplY3QpCiB7CiAgICAgTGF5b3V0VGVzdENvbnRy
b2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpT
T2JqZWN0R2V0UHJpdmF0ZShvYmplY3QpKTsKQEAgLTIyNzksNiArMjI5MCw3IEBAIEpTU3RhdGlj
RnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjoKICAgICAgICAgeyAiZGVsZXRlTG9jYWxT
dG9yYWdlRm9yT3JpZ2luIiwgZGVsZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2luQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAib3JpZ2luc1dpdGhMb2NhbFN0b3JhZ2UiLCBvcmlnaW5zV2l0aExv
Y2FsU3RvcmFnZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFNob3VsZFBhaW50QnJv
a2VuSW1hZ2UiLCBzZXRTaG91bGRQYWludEJyb2tlbkltYWdlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAg
ICAgICAgeyAic2V0VGV4dERpcmVjdGlvbiIsIHNldFRleHREaXJlY3Rpb25DYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7IDAsIDAsIDAgfQogICAgIH07CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gODI0MTEpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMjcsNiArMzI3LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRl
cnZhbChkb3VibGUpOwogCisgICAgdm9pZCBzZXRUZXh0RGlyZWN0aW9uKEpTU3RyaW5nUmVmKTsK
KwogcHJpdmF0ZToKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlcihjb25zdCBzdGQ6OnN0cmluZyYg
dGVzdFBhdGhPclVSTCwgY29uc3Qgc3RkOjpzdHJpbmcmIGV4cGVjdGVkUGl4ZWxIYXNoKTsKIApJ
bmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gODI0MTEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
OSw2ICsxNzksNyBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsCiAg
ICAgYmluZE1ldGhvZCgid2FpdEZvclBvbGljeURlbGVnYXRlIiwgJkxheW91dFRlc3RDb250cm9s
bGVyOjp3YWl0Rm9yUG9saWN5RGVsZWdhdGUpOwogICAgIGJpbmRNZXRob2QoIndhaXRVbnRpbERv
bmUiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OndhaXRVbnRpbERvbmUpOwogICAgIGJpbmRNZXRo
b2QoIndpbmRvd0NvdW50IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjp3aW5kb3dDb3VudCk7Cisg
ICAgYmluZE1ldGhvZCgic2V0VGV4dERpcmVjdGlvbiIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0VGV4dERpcmVjdGlvbik7CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIGFyZSBzdHVicy4KICAg
ICBiaW5kTWV0aG9kKCJhYm9ydE1vZGFsIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjphYm9ydE1v
ZGFsKTsKQEAgLTE2OTMsMyArMTY5NCwyNCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
eW5jTG9jYWxTdG9yCiB7CiAgICAgLy8gTm90IEltcGxlbWVudGVkCiB9CisKK3ZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldFRleHREaXJlY3Rpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBh
cmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsK
KyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSAhPSAxIHx8ICFhcmd1bWVudHNbMF0uaXNTdHJpbmco
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gTWFwIGEgZGlyZWN0aW9uIG5hbWUgdG8gYSBX
ZWJUZXh0RGlyZWN0aW9uIHZhbHVlLgorICAgIHN0ZDo6c3RyaW5nIGRpcmVjdGlvbk5hbWUgPSBh
cmd1bWVudHNbMF0udG9TdHJpbmcoKTsKKyAgICBXZWJLaXQ6OldlYlRleHREaXJlY3Rpb24gZGly
ZWN0aW9uOworICAgIGlmIChkaXJlY3Rpb25OYW1lID09ICJhdXRvIikKKyAgICAgICAgZGlyZWN0
aW9uID0gV2ViS2l0OjpXZWJUZXh0RGlyZWN0aW9uRGVmYXVsdDsKKyAgICBlbHNlIGlmIChkaXJl
Y3Rpb25OYW1lID09ICJydGwiKQorICAgICAgICBkaXJlY3Rpb24gPSBXZWJLaXQ6OldlYlRleHRE
aXJlY3Rpb25SaWdodFRvTGVmdDsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb25OYW1lID09ICJsdHIi
KQorICAgICAgICBkaXJlY3Rpb24gPSBXZWJLaXQ6OldlYlRleHREaXJlY3Rpb25MZWZ0VG9SaWdo
dDsKKyAgICBlbHNlCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2hlbGwtPndlYlZpZXcoKS0+
c2V0VGV4dERpcmVjdGlvbihkaXJlY3Rpb24pOworfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA4
MjQxMSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9s
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1OCw2ICszNTgsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBvYnNlcnZlU3RvcmFnZVRyYWNrZXJOb3RpZmljYXRpb25zKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIHN5bmNMb2NhbFN0b3JhZ2UoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCisgICAgLy8gQ2hhbmdlcyB0aGUgZGlyZWN0aW9u
IG9mIHRoZSBmb2N1c2VkIGVsZW1lbnQuCisgICAgdm9pZCBzZXRUZXh0RGlyZWN0aW9uKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKwogcHVibGljOgogICAgIC8vIFRoZSBm
b2xsb3dpbmcgbWV0aG9kcyBhcmUgbm90IGV4cG9zZWQgdG8gSmF2YVNjcmlwdC4KICAgICB2b2lk
IHNldFdvcmtRdWV1ZUZyb3plbihib29sIGZyb3plbikgeyBtX3dvcmtRdWV1ZS5zZXRGcm96ZW4o
ZnJvemVuKTsgfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250
cm9sbGVyR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5
b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCShyZXZpc2lvbiA4MjQxMSkKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTk0OCwzICs5NDgsOCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNaW5pbXVt
VGltCiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dl
Yl92aWV3KG1haW5GcmFtZSk7CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRNaW5p
bXVtVGltZXJJbnRlcnZhbCh3ZWJWaWV3LCBtaW5pbXVtVGltZXJJbnRlcnZhbCk7CiB9CisKK3Zv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRleHREaXJlY3Rpb24oSlNTdHJpbmdSZWYgZGly
ZWN0aW9uKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCit9CkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCShyZXZp
c2lvbiA4MjQxMSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJv
bGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA5NywzICsxMDk3LDE1IEBAIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1UaW0KIHsKICAgICBbW21haW5GcmFtZSB3ZWJW
aWV3XSBfc2V0TWluaW11bVRpbWVySW50ZXJ2YWw6bWluaW11bVRpbWVySW50ZXJ2YWxdOwogfQor
Cit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUZXh0RGlyZWN0aW9uKEpTU3RyaW5nUmVm
IGRpcmVjdGlvbk5hbWUpCit7CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFk
ZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgLy8gQ2FsbCBbTlNSZXNwb25kZXIgbWFr
ZUJhc2VXcml0aW5nRGlyZWN0aW9uKjpdIHNpbmNlIFdlYlZpZXcgaW1wbGVtZW50cworICAgIC8v
IHRoZW0gYW5kIGl0IGNhbGxzIEVkaXRvcjo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oKS4KKyAg
ICBpZiAoSlNTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhkaXJlY3Rpb25OYW1lLCAibHRyIikp
CisgICAgICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIG1ha2VCYXNlV3JpdGluZ0RpcmVjdGlvbkxl
ZnRUb1JpZ2h0OjBdOworICAgIGVsc2UgaWYgKEpTU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
ZGlyZWN0aW9uTmFtZSwgInJ0bCIpKQorICAgICAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBtYWtl
QmFzZVdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdDowXTsKKyNlbmRpZgorfQpJbmRleDogVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4u
Y3BwCShyZXZpc2lvbiA4MjQxMSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRU
ZXN0Q29udHJvbGxlcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MTEsNCArMTUxMSw3IEBA
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1UaW0KICAgICB2aWV3UHJpdmF0
ZS0+c2V0TWluaW11bVRpbWVySW50ZXJ2YWwobWluaW11bVRpbWVySW50ZXJ2YWwpOwogfQogCi0K
K3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRleHREaXJlY3Rpb24oSlNTdHJpbmdSZWYg
ZGlyZWN0aW9uKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCit9CkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA4MjQ0MikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDI1IEBACisyMDExLTAzLTMwICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNl
bmQgYW4gaW5wdXQgZXZlbnQgd2hlbiB3ZSBjaGFuZ2UgdGhlIHRleHQgZGlyZWN0aW9uLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5NTIKKworICAg
ICAgICBUaGlzIGFkZHMgYSBuZXcgbGF5b3V0IHRlc3QgdG8gdmVyaWZ5IHRoYXQgd2UgY2FuIHJl
dmVpdmUgaW5wdXQgZXZlbnRzCisgICAgICAgIHdoZW4gd2UgY2hhbmdlIHRoZSB0ZXh0IGRpcmVj
dGlvbiBvZiBhIDx0ZXh0YXJlYT4gZWxlbWVudCBhbmQgYW4gPGlucHV0PgorICAgICAgICBlbGVt
ZW50LgorCisgICAgICAgICogZmFzdC9odG1sL3NjcmlwdC10ZXN0cy9zZXQtdGV4dC1kaXJlY3Rp
b24uanM6IEFkZGVkLgorICAgICAgICAodGV4dGFyZWEub25pbnB1dCk6CisgICAgICAgIChpbnB1
dC5vbmlucHV0KToKKyAgICAgICAgKiBmYXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0aW9uLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9odG1sL3NldC10ZXh0LWRpcmVjdGlvbi5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDogU2tpcHBlZCBiZWNh
dXNlIGxheW91dFRlc3RDb250cm9sbGVyLnNldFRleHREaXJlY3Rpb24oKSBpcyBub3QgaW1wbGVt
ZW50ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLWxlb3BhcmQvU2tpcHBlZDogZGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vbWFjLXRpZ2VyL1NraXBwZWQ6IGRpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL3F0L1NraXBwZWQ6IGRpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVk
OiBkaXR0by4KKwogMjAxMS0wMy0zMCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgVXBkYXRlIHRoZSBtYWMtd2syIFNraXBwZWQgZmlsZSBmb3IgcmVjZW50bHktYWRk
ZWQgdGVzdHMKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaHRtbC9zZXQtdGV4dC1kaXJlY3Rpb24t
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaHRtbC9zZXQtdGV4
dC1kaXJlY3Rpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9odG1sL3NldC10ZXh0LWRpcmVjdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTMgQEAKK1Rlc3QgdGhhdCBXZWJLaXQgc2VuZHMgYW4gaW5wdXQgZXZlbnQgd2hlbiB3
ZSBjaGFuZ2UgdGhlIHRleHQgZGlyZWN0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBleHBlY3RlZCBpcyB0ZXh0YXJlYS5kaXIKK1BBU1MgZXhwZWN0ZWQgaXMgdGV4
dGFyZWEuZGlyCitQQVNTIGV4cGVjdGVkIGlzIGlucHV0LmRpcgorUEFTUyBleHBlY3RlZCBpcyBp
bnB1dC5kaXIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0aW9uLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9odG1sL3NldC10ZXh0LWRpcmVjdGlvbi5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9odG1sL3NldC10ZXh0LWRpcmVj
dGlvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zZXQt
dGV4dC1kaXJlY3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvc2NyaXB0LXRlc3RzL3NldC10ZXh0LWRpcmVjdGlv
bi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvc2NyaXB0LXRlc3RzL3Nl
dC10ZXh0LWRpcmVjdGlvbi5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaHRt
bC9zY3JpcHQtdGVzdHMvc2V0LXRleHQtZGlyZWN0aW9uLmpzCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDU1IEBACitkZXNjcmlwdGlvbignVGVzdCB0aGF0IFdlYktpdCBzZW5kcyBhbiBpbnB1dCBl
dmVudCB3aGVuIHdlIGNoYW5nZSB0aGUgdGV4dCBkaXJlY3Rpb24uJyk7CisKKy8vIFRoZSBzdHJp
bmcgdXNlZCBmb3Igc3RvcmluZyB0aGUgZXhwZWN0ZWQgdGV4dCBkaXJlY3Rpb24gd2hlbiB3ZSBy
ZWNlaXZlIGFuIGlucHV0IGV2ZW50LgordmFyIGV4cGVjdGVkID0gJyc7CisKKy8vIENyZWF0ZSBh
IHRleHRhcmVhIGVsZW1lbnQgYW5kIGFuIGlucHV0IGVsZW1lbnQuIFRoZXNlIGVsZW1lbnRzIGFy
ZSB1c2VkIGZvcgorLy8gY2hhbmdpbmcgdGhlaXIgdGV4dCBkaXJlY3Rpb24gd2l0aCBFZGl0b3I6
OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKCkgY2FsbHMuCit2YXIgdGV4dGFyZWEgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpOwordGV4dGFyZWEucm93cyA9IDEwOwordGV4dGFy
ZWEuY29scyA9IDEwOwordGV4dGFyZWEub25pbnB1dCA9IGZ1bmN0aW9uKCkgeworICAgIHNob3Vs
ZEJlKCdleHBlY3RlZCcsICd0ZXh0YXJlYS5kaXInKTsKKworICAgIC8vIFdoZW4gd2UgY2hhbmdl
IHRoZSBkaXJlY3Rpb24gdG8gbHRyLCB3ZSByZW1vdmUgdGhpcyBlbGVtZW50IHRvIHZlcmlmeSBX
ZWJLaXQKKyAgICAvLyBjb250aW51ZSBydW5uaW5nIHdpdGhvdXQgY3Jhc2hlcy4KKyAgICBpZiAo
ZXhwZWN0ZWQgPT0gJ2x0cicpCisgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGV4
dGFyZWEpOworfQorZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0ZXh0YXJlYSk7CisKK3ZhciBp
bnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CitpbnB1dC50eXBlID0gJ3Rl
eHQnOworaW5wdXQub25pbnB1dCA9IGZ1bmN0aW9uKCkgeworICAgIHNob3VsZEJlKCdleHBlY3Rl
ZCcsICdpbnB1dC5kaXInKTsKKworICAgIC8vIFdoZW4gd2UgY2hhbmdlIHRoZSBkaXJlY3Rpb24g
dG8gbHRyLCB3ZSByZW1vdmUgdGhpcyBlbGVtZW50IHRvIHZlcmlmeSBXZWJLaXQKKyAgICAvLyBj
b250aW51ZSBydW5uaW5nIHdpdGhvdXQgY3Jhc2hlcy4KKyAgICBpZiAoZXhwZWN0ZWQgPT0gJ2x0
cicpCisgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaW5wdXQpOworfQorZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChpbnB1dCk7CisKKy8vIENoYW5nZSB0aGUgdGV4dCBkaXJlY3Rp
b24gb2YgdGhlIHRleHRhcmVhIGVsZW1lbnQgdG8gUlRMLgorZXhwZWN0ZWQgPSAncnRsJzsKK3Rl
eHRhcmVhLmZvY3VzKCk7CitsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRUZXh0RGlyZWN0aW9uKCdy
dGwnKTsKKworLy8gQ2hhbmdlIHRoZSB0ZXh0IGRpcmVjdGlvbiBvZiB0aGUgdGV4dGFyZWEgZWxl
bWVudCB0byBMVFIuCisvLyBUaGlzIGFsc28gcmVtb3ZlcyB0aGUgZWxlbWVudCB0byB2ZXJpZnkg
V2ViS2l0IHdvcmtzIHdpdGhvdXQgY3Jhc2hlcy4KK2V4cGVjdGVkID0gJ2x0cic7Cit0ZXh0YXJl
YS5mb2N1cygpOworbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0VGV4dERpcmVjdGlvbignbHRyJyk7
CisKKy8vIENoYW5nZSB0aGUgdGV4dCBkaXJlY3Rpb24gb2YgdGhlIGlucHV0IGVsZW1lbnQgdG8g
UlRMLgorZXhwZWN0ZWQgPSAncnRsJzsKK2lucHV0LmZvY3VzKCk7CitsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRUZXh0RGlyZWN0aW9uKCdydGwnKTsKKworLy8gQ2hhbmdlIHRoZSB0ZXh0IGRpcmVj
dGlvbiBvZiB0aGUgaW5wdXQgZWxlbWVudCB0byBMVFIuCisvLyBUaGlzIGFsc28gcmVtb3ZlcyB0
aGUgZWxlbWVudCB0byB2ZXJpZnkgV2ViS2l0IHdvcmtzIHdpdGhvdXQgY3Jhc2hlcy4KK2V4cGVj
dGVkID0gJ2x0cic7CitpbnB1dC5mb2N1cygpOworbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0VGV4
dERpcmVjdGlvbignbHRyJyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHJldmlzaW9uIDgyNDExKQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTEzNTYsNiArMTM1Niw5
IEBAIGZhc3Qvb3ZlcmZsb3cvaG9yaXpvbnRhbC1zY3JvbGwtYWZ0ZXItYmEKICMgdGV4dElucHV0
Q29udHJvbGxlci5oYXNHcmFtbWFyTWFya2VyKCkgaXMgbm90IGltcGxlbWVudGVkLgogZWRpdGlu
Zy9zcGVsbGluZy9ncmFtbWFyLmh0bWwKIAorIyBsYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGV4
dERpcmVjdGlvbigpIGlzIG5vdCBpbXBsZW1lbnRlZC4KK2Zhc3QvaHRtbC9zZXQtdGV4dC1kaXJl
Y3Rpb24uaHRtbAorCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
NzE2MCAKICMgW0dUS10gbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJX
ZWJLaXREZWZhdWx0Rm9udFNpemUiLi4uKSBkb2VzIG5vdCB0YWtlIGludG8gYWNjb3VudCBzY3Jl
ZW4gRFBJCiBmYXN0L2hhcm5lc3Mvb3ZlcnJpZGUtcHJlZmVyZW5jZXMtMi5odG1sCkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9Ta2lwcGVkCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQJKHJldmlzaW9uIDgyNDExKQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQvU2tpcHBlZAkod29ya2luZyBjb3B5
KQpAQCAtOTIsNiArOTIsNyBAQCBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXNlZWthYmxlLXN0YWxs
Lmh0CiAKICMgQXZhaWxhYmxlIDEwLjYgb3IgbGF0ZXIKIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxj
aGVjay1wYXN0ZS5odG1sCitmYXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0aW9uLmh0bWwKIAogIyBE
aXNhYmxlIHRlc3RzIHdoaWNoIHN0YXJ0ZWQgZmFpbGluZyBhZnRlciByNjY5NjEKICMgRmFpbHVy
ZXMgbG9vayBsaWtlIGFuIHVuZGVybHlpbmcgcGxhdGZvcm0gaXNzdWUKSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy10aWdlci9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy10aWdlci9Ta2lwcGVkCShyZXZpc2lvbiA4MjQxMSkKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy10aWdlci9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEsNiAr
MjExLDcgQEAgaHR0cC90ZXN0cy9taXNjLzQwMS1hbHRlcm5hdGl2ZS1jb250ZW50LgogCiAjIEF2
YWlsYWJsZSBvbmx5IDEwLjYgb3IgbGF0ZXIKIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1w
YXN0ZS5odG1sCitmYXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0aW9uLmh0bWwKIAogIyBEaXNhYmxl
IHNwZWxsaW5nIHRlc3RzIGZvciBhdXRvY29ycmVjdGlvbiBwYW5lbAogcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvc3BlbGxpbmcvYXV0b2NvcnJlY3Rpb24tY29udHJhY3Rpb24uaHRtbApJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9Ta2lwcGVkCShyZXZpc2lvbiA4MjQxMSkKKysrIExheW91dFRlc3RzL3BsYXRm
b3JtL3F0L1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTMyMzgsNiArMzIzOCw4IEBAIGh0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QvYmFzaWMtYXV0aC5odG0KIGh0dHAvdGVzdHMvYXBwY2FjaGUv
b3JpZ2luLWRlbGV0ZS5odG1sCiAjIExheW91dFRlc3RDb250cm9sbGVyOjpnZXRPcmlnaW5zV2l0
aEFwcGxpY2F0aW9uQ2FjaGUgaXMgbm90IGltcGxlbWVudGVkCiBodHRwL3Rlc3RzL2FwcGNhY2hl
L29yaWdpbnMtd2l0aC1hcHBjYWNoZS5odG1sCisjIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRU
ZXh0RGlyZWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZC4KK2Zhc3QvaHRtbC9zZXQtdGV4dC1kaXJl
Y3Rpb24uaHRtbAogCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
NjY5MQogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXNpemUtY2h1bmtlZC5o
dG1sCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkocmV2aXNpb24gODI0MTEpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtOTc2LDYg
Kzk3Niw5IEBAIGVkaXRpbmcvc3BlbGxpbmcvZ3JhbW1hci5odG1sCiAjIEVkaXRvckNsaWVudDo6
cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoKSBpcyBub3QgaW1wbGVtZW50ZWQKIGVkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxjaGVjay1wYXN0ZS5odG1sCiAKKyMgbGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dFRleHREaXJlY3Rpb24oKSBpcyBub3QgaW1wbGVtZW50ZWQKK2Zhc3QvaHRtbC9zZXQtdGV4dC1k
aXJlY3Rpb24uaHRtbAorCiAjIEluZGV4ZWREQiBpcyBub3QgeWV0IGVuYWJsZWQuCiBzdG9yYWdl
L2luZGV4ZWRkYgogCg==
</data>
<flag name="review"
          id="79960"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87711</attachid>
            <date>2011-03-31 06:17:18 -0700</date>
            <delta_ts>2011-04-28 11:44:04 -0700</delta_ts>
            <desc>A quick fix v4</desc>
            <filename>issue50952-patch4.txt</filename>
            <type>text/plain</type>
            <size>17333</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyNTY5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDMtMzEgIEhpcm9ub3Jp
IEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisgICAgICAgIAorICAgICAgICBTZW5kIGFuIGlucHV0IGV2ZW50IHdoZW4gd2Ug
Y2hhbmdlIHRoZSB0ZXh0IGRpcmVjdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUwOTUyCisKKyAgICAgICAgQm90aCBTYWZhcmkgYW5kIENocm9t
ZSBjYWxsIEVkaXRvcjo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oKSB0byBjaGFuZ2UKKyAgICAg
ICAgdGhlIHRleHQgZGlyZWN0aW9uIG9mIGFuIGVkaXRhYmxlIGVsZW1lbnQgd2l0aCB0aGVpciBV
SXMuIFRoaXMgY2hhbmdlCisgICAgICAgIGNhbGxzIGRpc3BhdGNoSW5wdXRFdmVudHMoKSB0byBz
ZW5kIGFuIGlucHV0IGV2ZW50IHdoZW4gdGhlIGZ1bmN0aW9uCisgICAgICAgIGFjdHVhbGx5IGNo
YW5nZXMgdGhlICJkaXIiIGF0dHJpYnV0ZSBzbyB3ZSBjYW4gc2VuZCBhbiBpbnB1dCBldmVudCBh
cworICAgICAgICB3cml0dGVuIGluIHRoZSBIVE1MNSBzcGVjLgorCisgICAgICAgIFRlc3Q6IGZh
c3QvaHRtbC9zZXQtdGV4dC1kaXJlY3Rpb24uaHRtbAorCisgICAgICAgICogZWRpdGluZy9FZGl0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlv
bik6CisKIDIwMTEtMDMtMzEgIFJlbmF0YSBIb2RvdmFuICA8cmVuaUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6ZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAJKHJldmlzaW9uIDgyNTQ5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQ1LDYgKzE1NDUsNyBAQCB2b2lkIEVkaXRvcjo6
c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpCiAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gTmF0
dXJhbFdyaXRpbmdEaXJlY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRvSFRN
TEVsZW1lbnQoZm9jdXNlZE5vZGUpLT5zZXRBdHRyaWJ1dGUoZGlyQXR0ciwgZGlyZWN0aW9uID09
IExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbiA/ICJsdHIiIDogInJ0bCIpOworICAgICAgICBm
b2N1c2VkTm9kZS0+ZGlzcGF0Y2hJbnB1dEV2ZW50cygpOwogICAgICAgICBmcmFtZSgpLT5kb2N1
bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Cklu
ZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA4MjU2OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI5IEBACisyMDExLTAzLTMxICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIEph
dmFTY3JpcHQgZnVuY3Rpb24gbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0VGV4dERpcmVjdGlvbigp
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5NTIK
KworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEgbmV3IEphdmFTY3JpcHQgZnVuY3Rpb24gc2V0
VGV4dERpcmVjdGlvbigpIHRvIHRoZQorICAgICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciBjbGFz
cyBvZiBTYWZhcmkgYW5kIENocm9tZSB0byB3cml0ZSBsYXlvdXQgdGVzdHMKKyAgICAgICAgdGhh
dCBjaGFuZ2VzIHRoZSB0ZXh0IGRpcmVjdGlvbiBvZiBhbiBlZGl0YWJsZSBlbGVtZW50LgorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoc2V0VGV4dERpcmVjdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91
dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUZXh0
RGlyZWN0aW9uKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29u
dHJvbGxlckd0ay5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGV4dERp
cmVjdGlvbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9s
bGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRleHREaXJlY3Rp
b24pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldp
bi5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGV4dERpcmVjdGlvbik6
CisKIDIwMTEtMDMtMzAgIERvbWluaWMgQ29vbmV5ICA8ZG9taW5pY2NAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBUb29scy9EdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA4MjU0OSkKKysr
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjA4OCw2ICsyMDg4LDE3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldE1pbmltdW1U
aW1lckludGVydmEKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9
CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldFRleHREaXJlY3Rpb25DYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3Qs
IHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gMSkgeworICAg
ICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gZGlyZWN0aW9uKEFkb3B0LCBKU1ZhbHVlVG9T
dHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgICAgIExh
eW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENv
bnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgICAgICBjb250
cm9sbGVyLT5zZXRUZXh0RGlyZWN0aW9uKGRpcmVjdGlvbi5nZXQoKSk7CisgICAgfQorCisgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMgdm9pZCBs
YXlvdXRUZXN0Q29udHJvbGxlck9iamVjdEZpbmFsaXplKEpTT2JqZWN0UmVmIG9iamVjdCkKIHsK
ICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91
dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKG9iamVjdCkpOwpAQCAtMjI4OCw2
ICsyMjk5LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OgogICAg
ICAgICB7ICJkZWxldGVMb2NhbFN0b3JhZ2VGb3JPcmlnaW4iLCBkZWxldGVMb2NhbFN0b3JhZ2VG
b3JPcmlnaW5DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJvcmlnaW5zV2l0aExvY2FsU3Rv
cmFnZSIsIG9yaWdpbnNXaXRoTG9jYWxTdG9yYWdlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAic2V0U2hvdWxkUGFpbnRCcm9rZW5JbWFnZSIsIHNldFNob3VsZFBhaW50QnJva2VuSW1hZ2VD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRUZXh0RGlyZWN0aW9uIiwgc2V0VGV4dERp
cmVjdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgMCwgMCwgMCB9CiAgICAgfTsKIApJ
bmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZp
c2lvbiA4MjU0OSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyOCw2ICszMjgsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHNldE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSk7CiAKKyAgICB2b2lkIHNldFRleHREaXJl
Y3Rpb24oSlNTdHJpbmdSZWYpOworCiBwcml2YXRlOgogICAgIExheW91dFRlc3RDb250cm9sbGVy
KGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0UGF0aE9yVVJMLCBjb25zdCBzdGQ6OnN0cmluZyYgZXhw
ZWN0ZWRQaXhlbEhhc2gpOwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA4MjU0OSkKKysr
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTgxLDYgKzE4MSw3IEBAIExheW91dFRlc3RDb250cm9sbGVyOjpM
YXlvdXRUZXN0Q29udHJvbGwKICAgICBiaW5kTWV0aG9kKCJ3YWl0Rm9yUG9saWN5RGVsZWdhdGUi
LCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSk7CiAgICAgYmlu
ZE1ldGhvZCgid2FpdFVudGlsRG9uZSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6d2FpdFVudGls
RG9uZSk7CiAgICAgYmluZE1ldGhvZCgid2luZG93Q291bnQiLCAmTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OndpbmRvd0NvdW50KTsKKyAgICBiaW5kTWV0aG9kKCJzZXRUZXh0RGlyZWN0aW9uIiwgJkxh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRUZXh0RGlyZWN0aW9uKTsKIAogICAgIC8vIFRoZSBmb2xs
b3dpbmcgYXJlIHN0dWJzLgogICAgIGJpbmRNZXRob2QoImFib3J0TW9kYWwiLCAmTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmFib3J0TW9kYWwpOwpAQCAtMTcyNiwzICsxNzI3LDI0IEBAIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldFBsdWdpbnNFbmEKICAgICB9CiAgICAgcmVzdWx0LT5zZXRO
dWxsKCk7CiB9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRleHREaXJlY3Rpb24o
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sK
KyAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSAhPSAxIHx8
ICFhcmd1bWVudHNbMF0uaXNTdHJpbmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gTWFw
IGEgZGlyZWN0aW9uIG5hbWUgdG8gYSBXZWJUZXh0RGlyZWN0aW9uIHZhbHVlLgorICAgIHN0ZDo6
c3RyaW5nIGRpcmVjdGlvbk5hbWUgPSBhcmd1bWVudHNbMF0udG9TdHJpbmcoKTsKKyAgICBXZWJL
aXQ6OldlYlRleHREaXJlY3Rpb24gZGlyZWN0aW9uOworICAgIGlmIChkaXJlY3Rpb25OYW1lID09
ICJhdXRvIikKKyAgICAgICAgZGlyZWN0aW9uID0gV2ViS2l0OjpXZWJUZXh0RGlyZWN0aW9uRGVm
YXVsdDsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb25OYW1lID09ICJydGwiKQorICAgICAgICBkaXJl
Y3Rpb24gPSBXZWJLaXQ6OldlYlRleHREaXJlY3Rpb25SaWdodFRvTGVmdDsKKyAgICBlbHNlIGlm
IChkaXJlY3Rpb25OYW1lID09ICJsdHIiKQorICAgICAgICBkaXJlY3Rpb24gPSBXZWJLaXQ6Oldl
YlRleHREaXJlY3Rpb25MZWZ0VG9SaWdodDsKKyAgICBlbHNlCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fc2hlbGwtPndlYlZpZXcoKS0+c2V0VGV4dERpcmVjdGlvbihkaXJlY3Rpb24pOworfQpJ
bmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oCShyZXZpc2lvbiA4MjU0OSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2Miw2ICsz
NjIsOSBAQCBwdWJsaWM6CiAgICAgLy8gRW5hYmxlIG9yIGRpc2FibGUgcGx1Z2lucy4KICAgICB2
b2lkIHNldFBsdWdpbnNFbmFibGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
KTsKIAorICAgIC8vIENoYW5nZXMgdGhlIGRpcmVjdGlvbiBvZiB0aGUgZm9jdXNlZCBlbGVtZW50
LgorICAgIHZvaWQgc2V0VGV4dERpcmVjdGlvbihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50Kik7CisKIHB1YmxpYzoKICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIG5v
dCBleHBvc2VkIHRvIEphdmFTY3JpcHQuCiAgICAgdm9pZCBzZXRXb3JrUXVldWVGcm96ZW4oYm9v
bCBmcm96ZW4pIHsgbV93b3JrUXVldWUuc2V0RnJvemVuKGZyb3plbik7IH0KSW5kZXg6IFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNw
cAkocmV2aXNpb24gODI1NDkpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVz
dENvbnRyb2xsZXJHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NTQsMyArOTU0LDggQEAgdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbQogICAgIFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUpOwogICAg
IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwod2ViVmll
dywgbWluaW11bVRpbWVySW50ZXJ2YWwpOwogfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRUZXh0RGlyZWN0aW9uKEpTU3RyaW5nUmVmIGRpcmVjdGlvbikKK3sKKyAgICAvLyBGSVhN
RTogSW1wbGVtZW50LgorfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRl
c3RDb250cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24gODI1NDkpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTExMDUsMyArMTEwNSwxNSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRN
aW5pbXVtVGltCiB7CiAgICAgW1ttYWluRnJhbWUgd2ViVmlld10gX3NldE1pbmltdW1UaW1lcklu
dGVydmFsOm1pbmltdW1UaW1lckludGVydmFsXTsKIH0KKwordm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0VGV4dERpcmVjdGlvbihKU1N0cmluZ1JlZiBkaXJlY3Rpb25OYW1lKQoreworI2lm
ICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9Q
QVJEKQorICAgIGlmIChKU1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGRpcmVjdGlvbk5hbWUs
ICJsdHIiKSkKKyAgICAgICAgW1ttYWluRnJhbWUgd2ViVmlld10gbWFrZUJhc2VXcml0aW5nRGly
ZWN0aW9uTGVmdFRvUmlnaHQ6MF07CisgICAgZWxzZSBpZiAoSlNTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhkaXJlY3Rpb25OYW1lLCAicnRsIikpCisgICAgICAgIFtbbWFpbkZyYW1lIHdlYlZp
ZXddIG1ha2VCYXNlV3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0OjBdOworICAgIGVsc2UKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KSW5kZXg6IFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkocmV2
aXNpb24gODI1NDkpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRy
b2xsZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTE3LDQgKzE1MTcsNyBAQCB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRNaW5pbXVtVGltCiAgICAgdmlld1ByaXZhdGUtPnNldE1p
bmltdW1UaW1lckludGVydmFsKG1pbmltdW1UaW1lckludGVydmFsKTsKIH0KIAotCit2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRUZXh0RGlyZWN0aW9uKEpTU3RyaW5nUmVmIGRpcmVjdGlv
bikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gODI1
NjkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
MiBAQAorMjAxMS0wMy0zMSAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZW5kIGFuIGlu
cHV0IGV2ZW50IHdoZW4gd2UgY2hhbmdlIHRoZSB0ZXh0IGRpcmVjdGlvbi4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwOTUyCisKKyAgICAgICAgVGhp
cyBhZGRzIGEgbmV3IGxheW91dCB0ZXN0IHRvIHZlcmlmeSB0aGF0IHdlIGNhbiByZWNlaXZlIGlu
cHV0IGV2ZW50cworICAgICAgICB3aGVuIHdlIGNoYW5nZSB0aGUgdGV4dCBkaXJlY3Rpb24gb2Yg
YSA8dGV4dGFyZWE+IGVsZW1lbnQgYW5kIGFuIDxpbnB1dD4KKyAgICAgICAgZWxlbWVudC4KKwor
ICAgICAgICAqIGZhc3QvaHRtbC9zZXQtdGV4dC1kaXJlY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0aW9uLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL21hYy1s
ZW9wYXJkL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXRpZ2VyL1NraXBwZWQ6Cisg
ICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tp
cHBlZDoKKwogMjAxMS0wMy0zMSAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggZXJyb3IgaW4gY2hyb21pdW0gdGVzdCBl
eHBlY3RhdGlvbnMuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0
aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvc2V0
LXRleHQtZGlyZWN0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvaHRtbC9zZXQtdGV4dC1kaXJlY3Rpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE3IEBACitUZXN0IHRoYXQgV2ViS2l0IGNoYW5nZXMgdGhlIGRpciBhdHRyaWJ1
dGUgYW5kIHNlbmRzIGFuIGlucHV0IGV2ZW50IHdoZW4gd2UgY2hhbmdlIHRoZSB0ZXh0IGRpcmVj
dGlvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZXhwZWN0ZWQgaXMg
dGV4dGFyZWEuZGlyCitQQVNTIHNlbnRJbnB1dEV2ZW50IGlzIHRydWUKK1BBU1MgZXhwZWN0ZWQg
aXMgdGV4dGFyZWEuZGlyCitQQVNTIHNlbnRJbnB1dEV2ZW50IGlzIHRydWUKK1BBU1MgZXhwZWN0
ZWQgaXMgaW5wdXQuZGlyCitQQVNTIHNlbnRJbnB1dEV2ZW50IGlzIHRydWUKK1BBU1MgZXhwZWN0
ZWQgaXMgaW5wdXQuZGlyCitQQVNTIHNlbnRJbnB1dEV2ZW50IGlzIHRydWUKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9odG1sL3NldC10ZXh0LWRpcmVjdGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9odG1sL3NldC10ZXh0LWRpcmVjdGlvbi5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDkyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KK2Rlc2NyaXB0aW9uKCdUZXN0IHRoYXQgV2ViS2l0IGNoYW5nZXMgdGhlIGRpciBhdHRyaWJ1
dGUgYW5kIHNlbmRzIGFuIGlucHV0IGV2ZW50IHdoZW4gd2UgY2hhbmdlIHRoZSB0ZXh0IGRpcmVj
dGlvbi4nKTsKKworLy8gVGhlIHN0cmluZyB1c2VkIGZvciBzdG9yaW5nIHRoZSBleHBlY3RlZCB0
ZXh0IGRpcmVjdGlvbiB3aGVuIHdlIHJlY2VpdmUgYW4gaW5wdXQgZXZlbnQuCit2YXIgZXhwZWN0
ZWQgPSAnJzsKK3ZhciBzZW50SW5wdXRFdmVudCA9IGZhbHNlOworCitmdW5jdGlvbiByZW1vdmVD
aGlsZEFuZEZvcmNlR0MoY2hpbGQpIHsKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGNo
aWxkKTsKKworICAgIC8vIGNyZWF0ZSBsb3RzIG9mIG9iamVjdHMgdG8gZm9yY2UgYSBnYXJiYWdl
IGNvbGxlY3Rpb24KKyAgICB2YXIgaSA9IDA7CisgICAgdmFyIHM7CisgICAgd2hpbGUgKGkgPCA1
MDAwKSB7CisgICAgICAgIGkgPSBpKzEuMTE7CisgICAgICAgIHMgPSBzICsgIiAiOworICAgIH0K
K30KKworLy8gQ3JlYXRlIGEgdGV4dGFyZWEgZWxlbWVudCBhbmQgYW4gaW5wdXQgZWxlbWVudC4g
VGhlc2UgZWxlbWVudHMgYXJlIHVzZWQgZm9yCisvLyBjaGFuZ2luZyB0aGVpciB0ZXh0IGRpcmVj
dGlvbiB3aXRoIEVkaXRvcjo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oKSBjYWxscy4KK3ZhciB0
ZXh0YXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7Cit0ZXh0YXJlYS5y
b3dzID0gMTA7Cit0ZXh0YXJlYS5jb2xzID0gMTA7Cit0ZXh0YXJlYS5vbmlucHV0ID0gZnVuY3Rp
b24oKSB7CisgICAgc2hvdWxkQmUoJ2V4cGVjdGVkJywgJ3RleHRhcmVhLmRpcicpOworICAgIHNl
bnRJbnB1dEV2ZW50ID0gdHJ1ZTsKKworICAgIC8vIFdoZW4gd2UgY2hhbmdlIHRoZSBkaXJlY3Rp
b24gdG8gbHRyLCB3ZSByZW1vdmUgdGhpcyBlbGVtZW50IHRvIHZlcmlmeSBXZWJLaXQKKyAgICAv
LyBjb250aW51ZSBydW5uaW5nIHdpdGhvdXQgY3Jhc2hlcy4KKyAgICBpZiAoZXhwZWN0ZWQgPT0g
J2x0cicpCisgICAgICAgIHJlbW92ZUNoaWxkQW5kRm9yY2VHQyh0ZXh0YXJlYSk7Cit9Citkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKHRleHRhcmVhKTsKKwordmFyIGlucHV0ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKK2lucHV0LnR5cGUgPSAndGV4dCc7CitpbnB1dC5vbmlu
cHV0ID0gZnVuY3Rpb24oKSB7CisgICAgc2hvdWxkQmUoJ2V4cGVjdGVkJywgJ2lucHV0LmRpcicp
OworICAgIHNlbnRJbnB1dEV2ZW50ID0gdHJ1ZTsKKworICAgIC8vIFdoZW4gd2UgY2hhbmdlIHRo
ZSBkaXJlY3Rpb24gdG8gbHRyLCB3ZSByZW1vdmUgdGhpcyBlbGVtZW50IHRvIHZlcmlmeSBXZWJL
aXQKKyAgICAvLyBjb250aW51ZSBydW5uaW5nIHdpdGhvdXQgY3Jhc2hlcy4KKyAgICBpZiAoZXhw
ZWN0ZWQgPT0gJ2x0cicpCisgICAgICAgIHJlbW92ZUNoaWxkQW5kRm9yY2VHQyhpbnB1dCk7Cit9
Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlucHV0KTsKKworLy8gQ2hhbmdlIHRoZSB0ZXh0
IGRpcmVjdGlvbiBvZiB0aGUgdGV4dGFyZWEgZWxlbWVudCB0byBSVEwuCitleHBlY3RlZCA9ICdy
dGwnOworc2VudElucHV0RXZlbnQgPSBmYWxzZTsKK3RleHRhcmVhLmZvY3VzKCk7CitsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRUZXh0RGlyZWN0aW9uKCdydGwnKTsKK3Nob3VsZEJlVHJ1ZSgnc2Vu
dElucHV0RXZlbnQnKTsKKworLy8gQ2hhbmdlIHRoZSB0ZXh0IGRpcmVjdGlvbiBvZiB0aGUgdGV4
dGFyZWEgZWxlbWVudCB0byBMVFIuCisvLyBUaGlzIGFsc28gcmVtb3ZlcyB0aGUgZWxlbWVudCB0
byB2ZXJpZnkgV2ViS2l0IHdvcmtzIHdpdGhvdXQgY3Jhc2hlcy4KK2V4cGVjdGVkID0gJ2x0cic7
CitzZW50SW5wdXRFdmVudCA9IGZhbHNlOwordGV4dGFyZWEuZm9jdXMoKTsKK2xheW91dFRlc3RD
b250cm9sbGVyLnNldFRleHREaXJlY3Rpb24oJ2x0cicpOworc2hvdWxkQmVUcnVlKCdzZW50SW5w
dXRFdmVudCcpOworCisvLyBDaGFuZ2UgdGhlIHRleHQgZGlyZWN0aW9uIG9mIHRoZSBpbnB1dCBl
bGVtZW50IHRvIFJUTC4KK2V4cGVjdGVkID0gJ3J0bCc7CitzZW50SW5wdXRFdmVudCA9IGZhbHNl
OworaW5wdXQuZm9jdXMoKTsKK2xheW91dFRlc3RDb250cm9sbGVyLnNldFRleHREaXJlY3Rpb24o
J3J0bCcpOworc2hvdWxkQmVUcnVlKCdzZW50SW5wdXRFdmVudCcpOworCisvLyBDaGFuZ2UgdGhl
IHRleHQgZGlyZWN0aW9uIG9mIHRoZSBpbnB1dCBlbGVtZW50IHRvIExUUi4KKy8vIFRoaXMgYWxz
byByZW1vdmVzIHRoZSBlbGVtZW50IHRvIHZlcmlmeSBXZWJLaXQgd29ya3Mgd2l0aG91dCBjcmFz
aGVzLgorZXhwZWN0ZWQgPSAnbHRyJzsKK3NlbnRJbnB1dEV2ZW50ID0gZmFsc2U7CitpbnB1dC5m
b2N1cygpOworbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0VGV4dERpcmVjdGlvbignbHRyJyk7Citz
aG91bGRCZVRydWUoJ3NlbnRJbnB1dEV2ZW50Jyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9Ta2lwcGVkCShyZXZpc2lvbiA4MjU0OSkKKysrIExheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0xMzU4LDYgKzEzNTgsOSBAQCBmYXN0
L292ZXJmbG93L2hvcml6b250YWwtc2Nyb2xsLWFmdGVyLWJhCiAjIHRleHRJbnB1dENvbnRyb2xs
ZXIuaGFzR3JhbW1hck1hcmtlcigpIGlzIG5vdCBpbXBsZW1lbnRlZC4KIGVkaXRpbmcvc3BlbGxp
bmcvZ3JhbW1hci5odG1sCiAKKyMgbGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRleHREaXJlY3Rp
b24oKSBpcyBub3QgaW1wbGVtZW50ZWQuCitmYXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0aW9uLmh0
bWwKKwogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcxNjAgCiAj
IFtHVEtdIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0RGVm
YXVsdEZvbnRTaXplIi4uLikgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgc2NyZWVuIERQSQog
ZmFzdC9oYXJuZXNzL292ZXJyaWRlLXByZWZlcmVuY2VzLTIuaHRtbApJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9Ta2lwcGVkCShyZXZpc2lvbiA4MjU0OSkKKysrIExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTky
LDYgKzkyLDcgQEAgaHR0cC90ZXN0cy9tZWRpYS92aWRlby1zZWVrYWJsZS1zdGFsbC5odAogCiAj
IEF2YWlsYWJsZSAxMC42IG9yIGxhdGVyCiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFz
dGUuaHRtbAorZmFzdC9odG1sL3NldC10ZXh0LWRpcmVjdGlvbi5odG1sCiAKICMgRGlzYWJsZSB0
ZXN0cyB3aGljaCBzdGFydGVkIGZhaWxpbmcgYWZ0ZXIgcjY2OTYxCiAjIEZhaWx1cmVzIGxvb2sg
bGlrZSBhbiB1bmRlcmx5aW5nIHBsYXRmb3JtIGlzc3VlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtdGlnZXIvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtdGlnZXIvU2tpcHBlZAkocmV2aXNpb24gODI1NDkpCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtdGlnZXIvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMjExLDYgKzIxMSw3IEBA
IGh0dHAvdGVzdHMvbWlzYy80MDEtYWx0ZXJuYXRpdmUtY29udGVudC4KIAogIyBBdmFpbGFibGUg
b25seSAxMC42IG9yIGxhdGVyCiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUuaHRt
bAorZmFzdC9odG1sL3NldC10ZXh0LWRpcmVjdGlvbi5odG1sCiAKICMgRGlzYWJsZSBzcGVsbGlu
ZyB0ZXN0cyBmb3IgYXV0b2NvcnJlY3Rpb24gcGFuZWwKIHBsYXRmb3JtL21hYy9lZGl0aW5nL3Nw
ZWxsaW5nL2F1dG9jb3JyZWN0aW9uLWNvbnRyYWN0aW9uLmh0bWwKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL3F0L1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQvU2tpcHBlZAkocmV2aXNpb24gODI1NDkpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9T
a2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0zMjM1LDYgKzMyMzUsOCBAQCBodHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L2Jhc2ljLWF1dGguaHRtCiBodHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1k
ZWxldGUuaHRtbAogIyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Z2V0T3JpZ2luc1dpdGhBcHBsaWNh
dGlvbkNhY2hlIGlzIG5vdCBpbXBsZW1lbnRlZAogaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW5z
LXdpdGgtYXBwY2FjaGUuaHRtbAorIyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGV4dERpcmVj
dGlvbiBpcyBub3QgaW1wbGVtZW50ZWQuCitmYXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0aW9uLmh0
bWwKIAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY2OTEKIGh0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1zaXplLWNodW5rZWQuaHRtbApJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHJldmlzaW9uIDgyNTQ5KQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTk3Niw2ICs5NzYsOSBA
QCBlZGl0aW5nL3NwZWxsaW5nL2dyYW1tYXIuaHRtbAogIyBFZGl0b3JDbGllbnQ6OnJlcXVlc3RD
aGVja2luZ09mU3RyaW5nKCkgaXMgbm90IGltcGxlbWVudGVkCiBlZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsY2hlY2stcGFzdGUuaHRtbAogCisjIGxheW91dFRlc3RDb250cm9sbGVyOjpzZXRUZXh0RGly
ZWN0aW9uKCkgaXMgbm90IGltcGxlbWVudGVkCitmYXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0aW9u
Lmh0bWwKKwogIyBJbmRleGVkREIgaXMgbm90IHlldCBlbmFibGVkLgogc3RvcmFnZS9pbmRleGVk
ZGIKIAo=
</data>
<flag name="review"
          id="80146"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88186</attachid>
            <date>2011-04-04 23:33:10 -0700</date>
            <delta_ts>2011-05-25 02:16:33 -0700</delta_ts>
            <desc>A quick fix v5</desc>
            <filename>issue50952-patch5.txt</filename>
            <type>text/plain</type>
            <size>17119</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyOTA2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDQtMDQgIEhpcm9ub3Jp
IEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU2VuZCBhbiBpbnB1dCBldmVudCB3aGVuIHdlIGNoYW5nZSB0
aGUgdGV4dCBkaXJlY3Rpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MDk1MgorCisgICAgICAgIEJvdGggU2FmYXJpIGFuZCBDaHJvbWUgY2FsbCBF
ZGl0b3I6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKCkgdG8gY2hhbmdlCisgICAgICAgIHRoZSB0
ZXh0IGRpcmVjdGlvbiBvZiBhbiBlZGl0YWJsZSBlbGVtZW50IHdpdGggdGhlaXIgVUlzLiBUaGlz
IGNoYW5nZQorICAgICAgICBjYWxscyBkaXNwYXRjaElucHV0RXZlbnRzKCkgdG8gc2VuZCBhbiBp
bnB1dCBldmVudCB3aGVuIHRoZSBmdW5jdGlvbgorICAgICAgICBhY3R1YWxseSBjaGFuZ2VzIHRo
ZSAiZGlyIiBhdHRyaWJ1dGUgc28gd2UgY2FuIHNlbmQgYW4gaW5wdXQgZXZlbnQgYXMKKyAgICAg
ICAgd3JpdHRlbiBpbiB0aGUgSFRNTDUgc3BlYy4KKworICAgICAgICBUZXN0OiBmYXN0L2h0bWwv
c2V0LXRleHQtZGlyZWN0aW9uLmh0bWwKKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24pOgorCiAy
MDExLTA0LTA0ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBB
ZGQgYSBjYXNlIGxhYmVsIHdoaWNoIHdhcyB1bmV4cGVjdGVkbHkgcmVtb3ZlZCBpbiByODI4OTku
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiA4Mjg5NSkKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0NSw2
ICsxNTQ1LDcgQEAgdm9pZCBFZGl0b3I6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaQogICAg
ICAgICBpZiAoZGlyZWN0aW9uID09IE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB0b0hUTUxFbGVtZW50KGZvY3VzZWROb2RlKS0+c2V0QXR0cmli
dXRlKGRpckF0dHIsIGRpcmVjdGlvbiA9PSBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24gPyAi
bHRyIiA6ICJydGwiKTsKKyAgICAgICAgZm9jdXNlZE5vZGUtPmRpc3BhdGNoSW5wdXRFdmVudHMo
KTsKICAgICAgICAgZnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gODI5MDYpCisrKyBUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxMS0wNC0wNCAgSGlyb25vcmkgQm9u
byAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgYSBKYXZhU2NyaXB0IGZ1bmN0aW9uIGxheW91dFRlc3RDb250
cm9sbGVyLnNldFRleHREaXJlY3Rpb24oKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUwOTUyCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWRkcyBhIG5l
dyBKYXZhU2NyaXB0IGZ1bmN0aW9uIHNldFRleHREaXJlY3Rpb24oKSB0byB0aGUKKyAgICAgICAg
TGF5b3V0VGVzdENvbnRyb2xsZXIgY2xhc3Mgb2YgU2FmYXJpIGFuZCBDaHJvbWUgdG8gd3JpdGUg
bGF5b3V0IHRlc3RzCisgICAgICAgIHRoYXQgY2hhbmdlcyB0aGUgdGV4dCBkaXJlY3Rpb24gb2Yg
YW4gZWRpdGFibGUgZWxlbWVudC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldFRleHREaXJlY3Rpb25DYWxsYmFjayk6Cisg
ICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0VGV4dERpcmVjdGlvbik6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldFRleHREaXJlY3Rpb24pOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRUZXh0RGlyZWN0aW9uKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93
aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldFRleHREaXJlY3Rpb24pOgorCiAyMDExLTA0LTA0ICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQnJpYW4gV2VpbnN0ZWluLgpJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gODI4OTUpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwODgsNiArMjA4OCwxNyBAQCBzdGF0aWMgSlNWYWx1
ZVJlZiBzZXRNaW5pbXVtVGltZXJJbnRlcnZhCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZp
bmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRUZXh0RGlyZWN0aW9uQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENv
dW50ID09IDEpIHsKKyAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGRpcmVjdGlvbihB
ZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlv
bikpOworICAgICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19j
YXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3Qp
KTsKKyAgICAgICAgY29udHJvbGxlci0+c2V0VGV4dERpcmVjdGlvbihkaXJlY3Rpb24uZ2V0KCkp
OworICAgIH0KKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30K
Kwogc3RhdGljIHZvaWQgbGF5b3V0VGVzdENvbnRyb2xsZXJPYmplY3RGaW5hbGl6ZShKU09iamVj
dFJlZiBvYmplY3QpCiB7CiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBz
dGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZShvYmpl
Y3QpKTsKQEAgLTIyODgsNiArMjI5OSw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RD
b250cm9sbGVyOjoKICAgICAgICAgeyAiZGVsZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2luIiwgZGVs
ZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2luQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAib3Jp
Z2luc1dpdGhMb2NhbFN0b3JhZ2UiLCBvcmlnaW5zV2l0aExvY2FsU3RvcmFnZUNhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgInNldFNob3VsZFBhaW50QnJva2VuSW1hZ2UiLCBzZXRTaG91bGRQ
YWludEJyb2tlbkltYWdlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0VGV4dERpcmVj
dGlvbiIsIHNldFRleHREaXJlY3Rpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7IDAsIDAs
IDAgfQogICAgIH07CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaAkocmV2aXNpb24gODI4OTUpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjgsNiArMzI4LDggQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUpOwogCisgICAg
dm9pZCBzZXRUZXh0RGlyZWN0aW9uKEpTU3RyaW5nUmVmKTsKKwogcHJpdmF0ZToKICAgICBMYXlv
dXRUZXN0Q29udHJvbGxlcihjb25zdCBzdGQ6OnN0cmluZyYgdGVzdFBhdGhPclVSTCwgY29uc3Qg
c3RkOjpzdHJpbmcmIGV4cGVjdGVkUGl4ZWxIYXNoKTsKIApJbmRleDogVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gODI4OTUpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw2ICsxODEsNyBAQCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsCiAgICAgYmluZE1ldGhvZCgid2FpdEZv
clBvbGljeURlbGVnYXRlIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjp3YWl0Rm9yUG9saWN5RGVs
ZWdhdGUpOwogICAgIGJpbmRNZXRob2QoIndhaXRVbnRpbERvbmUiLCAmTGF5b3V0VGVzdENvbnRy
b2xsZXI6OndhaXRVbnRpbERvbmUpOwogICAgIGJpbmRNZXRob2QoIndpbmRvd0NvdW50IiwgJkxh
eW91dFRlc3RDb250cm9sbGVyOjp3aW5kb3dDb3VudCk7CisgICAgYmluZE1ldGhvZCgic2V0VGV4
dERpcmVjdGlvbiIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGV4dERpcmVjdGlvbik7CiAK
ICAgICAvLyBUaGUgZm9sbG93aW5nIGFyZSBzdHVicy4KICAgICBiaW5kTWV0aG9kKCJhYm9ydE1v
ZGFsIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjphYm9ydE1vZGFsKTsKQEAgLTE3MjYsMyArMTcy
NywyNCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRQbHVnaW5zRW5hCiAgICAgfQog
ICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRUZXh0RGlyZWN0aW9uKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJp
YW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAgaWYgKGFyZ3VtZW50
cy5zaXplKCkgIT0gMSB8fCAhYXJndW1lbnRzWzBdLmlzU3RyaW5nKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIE1hcCBhIGRpcmVjdGlvbiBuYW1lIHRvIGEgV2ViVGV4dERpcmVjdGlvbiB2
YWx1ZS4KKyAgICBzdGQ6OnN0cmluZyBkaXJlY3Rpb25OYW1lID0gYXJndW1lbnRzWzBdLnRvU3Ry
aW5nKCk7CisgICAgV2ViS2l0OjpXZWJUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbjsKKyAgICBpZiAo
ZGlyZWN0aW9uTmFtZSA9PSAiYXV0byIpCisgICAgICAgIGRpcmVjdGlvbiA9IFdlYktpdDo6V2Vi
VGV4dERpcmVjdGlvbkRlZmF1bHQ7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uTmFtZSA9PSAicnRs
IikKKyAgICAgICAgZGlyZWN0aW9uID0gV2ViS2l0OjpXZWJUZXh0RGlyZWN0aW9uUmlnaHRUb0xl
ZnQ7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uTmFtZSA9PSAibHRyIikKKyAgICAgICAgZGlyZWN0
aW9uID0gV2ViS2l0OjpXZWJUZXh0RGlyZWN0aW9uTGVmdFRvUmlnaHQ7CisgICAgZWxzZQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX3NoZWxsLT53ZWJWaWV3KCktPnNldFRleHREaXJlY3Rpb24o
ZGlyZWN0aW9uKTsKK30KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gODI4OTUpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNjIsNiArMzYyLDkgQEAgcHVibGljOgogICAgIC8vIEVuYWJsZSBvciBkaXNhYmxl
IHBsdWdpbnMuCiAgICAgdm9pZCBzZXRQbHVnaW5zRW5hYmxlZChjb25zdCBDcHBBcmd1bWVudExp
c3QmLCBDcHBWYXJpYW50Kik7CiAKKyAgICAvLyBDaGFuZ2VzIHRoZSBkaXJlY3Rpb24gb2YgdGhl
IGZvY3VzZWQgZWxlbWVudC4KKyAgICB2b2lkIHNldFRleHREaXJlY3Rpb24oY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworCiBwdWJsaWM6CiAgICAgLy8gVGhlIGZvbGxvd2lu
ZyBtZXRob2RzIGFyZSBub3QgZXhwb3NlZCB0byBKYXZhU2NyaXB0LgogICAgIHZvaWQgc2V0V29y
a1F1ZXVlRnJvemVuKGJvb2wgZnJvemVuKSB7IG1fd29ya1F1ZXVlLnNldEZyb3plbihmcm96ZW4p
OyB9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJH
dGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0
Q29udHJvbGxlckd0ay5jcHAJKHJldmlzaW9uIDgyODk1KQorKysgVG9vbHMvRHVtcFJlbmRlclRy
ZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTU1
LDMgKzk1NSw4IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1UaW0KICAg
ICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXco
bWFpbkZyYW1lKTsKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldE1pbmltdW1UaW1l
ckludGVydmFsKHdlYlZpZXcsIG1pbmltdW1UaW1lckludGVydmFsKTsKIH0KKwordm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0VGV4dERpcmVjdGlvbihKU1N0cmluZ1JlZiBkaXJlY3Rpb24p
Cit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KK30KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHJldmlzaW9uIDgy
ODk1KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTA1LDMgKzExMDUsMTUgQEAgdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbQogewogICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIF9z
ZXRNaW5pbXVtVGltZXJJbnRlcnZhbDptaW5pbXVtVGltZXJJbnRlcnZhbF07CiB9CisKK3ZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRleHREaXJlY3Rpb24oSlNTdHJpbmdSZWYgZGlyZWN0
aW9uTmFtZSkKK3sKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQo
QlVJTERJTkdfT05fTEVPUEFSRCkKKyAgICBpZiAoSlNTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
ZyhkaXJlY3Rpb25OYW1lLCAibHRyIikpCisgICAgICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIG1h
a2VCYXNlV3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0OjBdOworICAgIGVsc2UgaWYgKEpTU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoZGlyZWN0aW9uTmFtZSwgInJ0bCIpKQorICAgICAgICBb
W21haW5GcmFtZSB3ZWJWaWV3XSBtYWtlQmFzZVdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdDow
XTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9Cklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJv
bGxlcldpbi5jcHAJKHJldmlzaW9uIDgyODk1KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxNyw0ICsx
NTE3LDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbQogICAgIHZp
ZXdQcml2YXRlLT5zZXRNaW5pbXVtVGltZXJJbnRlcnZhbChtaW5pbXVtVGltZXJJbnRlcnZhbCk7
CiB9CiAKLQordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGV4dERpcmVjdGlvbihKU1N0
cmluZ1JlZiBkaXJlY3Rpb24pCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KK30KSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDgyOTA2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDQtMDQgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU2VuZCBhbiBpbnB1dCBldmVudCB3aGVuIHdlIGNoYW5nZSB0aGUgdGV4dCBkaXJlY3Rp
b24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk1
MgorCisgICAgICAgIFRoaXMgYWRkcyBhIG5ldyBsYXlvdXQgdGVzdCB0byB2ZXJpZnkgdGhhdCB3
ZSBjYW4gcmVjZWl2ZSBpbnB1dCBldmVudHMKKyAgICAgICAgd2hlbiB3ZSBjaGFuZ2UgdGhlIHRl
eHQgZGlyZWN0aW9uIG9mIGEgPHRleHRhcmVhPiBlbGVtZW50IGFuZCBhbiA8aW5wdXQ+CisgICAg
ICAgIGVsZW1lbnQuCisKKyAgICAgICAgKiBmYXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0aW9uLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9odG1sL3NldC10ZXh0LWRpcmVjdGlv
bi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMtbGVvcGFyZC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL21hYy10
aWdlci9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisgICAgICAgICog
cGxhdGZvcm0vd2luL1NraXBwZWQ6CisKIDIwMTEtMDQtMDQgIERhbiBCZXJuc3RlaW4gIDxtaXR6
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0aW9uLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0aW9uLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaHRtbC9zZXQtdGV4dC1k
aXJlY3Rpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACitUZXN0
IHRoYXQgV2ViS2l0IGNoYW5nZXMgdGhlIGRpciBhdHRyaWJ1dGUgYW5kIHNlbmRzIGFuIGlucHV0
IGV2ZW50IHdoZW4gd2UgY2hhbmdlIHRoZSB0ZXh0IGRpcmVjdGlvbi4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgZXhwZWN0ZWQgaXMgdGV4dGFyZWEuZGlyCitQQVNTIHNl
bnRJbnB1dEV2ZW50IGlzIHRydWUKK1BBU1MgZXhwZWN0ZWQgaXMgdGV4dGFyZWEuZGlyCitQQVNT
IHNlbnRJbnB1dEV2ZW50IGlzIHRydWUKK1BBU1MgZXhwZWN0ZWQgaXMgaW5wdXQuZGlyCitQQVNT
IHNlbnRJbnB1dEV2ZW50IGlzIHRydWUKK1BBU1MgZXhwZWN0ZWQgaXMgaW5wdXQuZGlyCitQQVNT
IHNlbnRJbnB1dEV2ZW50IGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvc2V0LXRleHQt
ZGlyZWN0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9odG1sL3NldC10
ZXh0LWRpcmVjdGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9odG1s
L3NldC10ZXh0LWRpcmVjdGlvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg1IEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBsYW5ndWFn
ZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCdUZXN0
IHRoYXQgV2ViS2l0IGNoYW5nZXMgdGhlIGRpciBhdHRyaWJ1dGUgYW5kIHNlbmRzIGFuIGlucHV0
IGV2ZW50IHdoZW4gd2UgY2hhbmdlIHRoZSB0ZXh0IGRpcmVjdGlvbi4nKTsKKworLy8gVGhlIHN0
cmluZyB1c2VkIGZvciBzdG9yaW5nIHRoZSBleHBlY3RlZCB0ZXh0IGRpcmVjdGlvbiB3aGVuIHdl
IHJlY2VpdmUgYW4gaW5wdXQgZXZlbnQuCit2YXIgZXhwZWN0ZWQgPSAnJzsKK3ZhciBzZW50SW5w
dXRFdmVudCA9IGZhbHNlOworCitmdW5jdGlvbiByZW1vdmVDaGlsZEFuZEZvcmNlR0MoY2hpbGQp
IHsKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGNoaWxkKTsKKyAgICBnYygpOworfQor
CisvLyBDcmVhdGUgYSB0ZXh0YXJlYSBlbGVtZW50IGFuZCBhbiBpbnB1dCBlbGVtZW50LiBUaGVz
ZSBlbGVtZW50cyBhcmUgdXNlZCBmb3IKKy8vIGNoYW5naW5nIHRoZWlyIHRleHQgZGlyZWN0aW9u
IHdpdGggRWRpdG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbigpIGNhbGxzLgordmFyIHRleHRh
cmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTsKK3RleHRhcmVhLnJvd3Mg
PSAxMDsKK3RleHRhcmVhLmNvbHMgPSAxMDsKK3RleHRhcmVhLm9uaW5wdXQgPSBmdW5jdGlvbigp
IHsKKyAgICBzaG91bGRCZSgnZXhwZWN0ZWQnLCAndGV4dGFyZWEuZGlyJyk7CisgICAgc2VudElu
cHV0RXZlbnQgPSB0cnVlOworCisgICAgLy8gV2hlbiB3ZSBjaGFuZ2UgdGhlIGRpcmVjdGlvbiB0
byBsdHIsIHdlIHJlbW92ZSB0aGlzIGVsZW1lbnQgdG8gdmVyaWZ5IFdlYktpdAorICAgIC8vIGNv
bnRpbnVlIHJ1bm5pbmcgd2l0aG91dCBjcmFzaGVzLgorICAgIGlmIChleHBlY3RlZCA9PSAnbHRy
JykKKyAgICAgICAgcmVtb3ZlQ2hpbGRBbmRGb3JjZUdDKHRleHRhcmVhKTsKK30KK2RvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQodGV4dGFyZWEpOworCit2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdpbnB1dCcpOworaW5wdXQudHlwZSA9ICd0ZXh0JzsKK2lucHV0Lm9uaW5wdXQg
PSBmdW5jdGlvbigpIHsKKyAgICBzaG91bGRCZSgnZXhwZWN0ZWQnLCAnaW5wdXQuZGlyJyk7Cisg
ICAgc2VudElucHV0RXZlbnQgPSB0cnVlOworCisgICAgLy8gV2hlbiB3ZSBjaGFuZ2UgdGhlIGRp
cmVjdGlvbiB0byBsdHIsIHdlIHJlbW92ZSB0aGlzIGVsZW1lbnQgdG8gdmVyaWZ5IFdlYktpdAor
ICAgIC8vIGNvbnRpbnVlIHJ1bm5pbmcgd2l0aG91dCBjcmFzaGVzLgorICAgIGlmIChleHBlY3Rl
ZCA9PSAnbHRyJykKKyAgICAgICAgcmVtb3ZlQ2hpbGRBbmRGb3JjZUdDKGlucHV0KTsKK30KK2Rv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW5wdXQpOworCisvLyBDaGFuZ2UgdGhlIHRleHQgZGly
ZWN0aW9uIG9mIHRoZSB0ZXh0YXJlYSBlbGVtZW50IHRvIFJUTC4KK2V4cGVjdGVkID0gJ3J0bCc7
CitzZW50SW5wdXRFdmVudCA9IGZhbHNlOwordGV4dGFyZWEuZm9jdXMoKTsKK2xheW91dFRlc3RD
b250cm9sbGVyLnNldFRleHREaXJlY3Rpb24oJ3J0bCcpOworc2hvdWxkQmVUcnVlKCdzZW50SW5w
dXRFdmVudCcpOworCisvLyBDaGFuZ2UgdGhlIHRleHQgZGlyZWN0aW9uIG9mIHRoZSB0ZXh0YXJl
YSBlbGVtZW50IHRvIExUUi4KKy8vIFRoaXMgYWxzbyByZW1vdmVzIHRoZSBlbGVtZW50IHRvIHZl
cmlmeSBXZWJLaXQgd29ya3Mgd2l0aG91dCBjcmFzaGVzLgorZXhwZWN0ZWQgPSAnbHRyJzsKK3Nl
bnRJbnB1dEV2ZW50ID0gZmFsc2U7Cit0ZXh0YXJlYS5mb2N1cygpOworbGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0VGV4dERpcmVjdGlvbignbHRyJyk7CitzaG91bGRCZVRydWUoJ3NlbnRJbnB1dEV2
ZW50Jyk7CisKKy8vIENoYW5nZSB0aGUgdGV4dCBkaXJlY3Rpb24gb2YgdGhlIGlucHV0IGVsZW1l
bnQgdG8gUlRMLgorZXhwZWN0ZWQgPSAncnRsJzsKK3NlbnRJbnB1dEV2ZW50ID0gZmFsc2U7Citp
bnB1dC5mb2N1cygpOworbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0VGV4dERpcmVjdGlvbigncnRs
Jyk7CitzaG91bGRCZVRydWUoJ3NlbnRJbnB1dEV2ZW50Jyk7CisKKy8vIENoYW5nZSB0aGUgdGV4
dCBkaXJlY3Rpb24gb2YgdGhlIGlucHV0IGVsZW1lbnQgdG8gTFRSLgorLy8gVGhpcyBhbHNvIHJl
bW92ZXMgdGhlIGVsZW1lbnQgdG8gdmVyaWZ5IFdlYktpdCB3b3JrcyB3aXRob3V0IGNyYXNoZXMu
CitleHBlY3RlZCA9ICdsdHInOworc2VudElucHV0RXZlbnQgPSBmYWxzZTsKK2lucHV0LmZvY3Vz
KCk7CitsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRUZXh0RGlyZWN0aW9uKCdsdHInKTsKK3Nob3Vs
ZEJlVHJ1ZSgnc2VudElucHV0RXZlbnQnKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL1NraXBwZWQJKHJldmlzaW9uIDgyODk1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTEzNTcsNiArMTM1Nyw5IEBAIGZhc3Qvb3Zl
cmZsb3cvaG9yaXpvbnRhbC1zY3JvbGwtYWZ0ZXItYmEKICMgdGV4dElucHV0Q29udHJvbGxlci5o
YXNHcmFtbWFyTWFya2VyKCkgaXMgbm90IGltcGxlbWVudGVkLgogZWRpdGluZy9zcGVsbGluZy9n
cmFtbWFyLmh0bWwKIAorIyBsYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGV4dERpcmVjdGlvbigp
IGlzIG5vdCBpbXBsZW1lbnRlZC4KK2Zhc3QvaHRtbC9zZXQtdGV4dC1kaXJlY3Rpb24uaHRtbAor
CiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzE2MCAKICMgW0dU
S10gbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXREZWZhdWx0
Rm9udFNpemUiLi4uKSBkb2VzIG5vdCB0YWtlIGludG8gYWNjb3VudCBzY3JlZW4gRFBJCiBmYXN0
L2hhcm5lc3Mvb3ZlcnJpZGUtcHJlZmVyZW5jZXMtMi5odG1sCkluZGV4OiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtbGVvcGFyZC9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQJKHJldmlzaW9uIDgyODk1KQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiAr
OTIsNyBAQCBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXNlZWthYmxlLXN0YWxsLmh0CiAKICMgQXZh
aWxhYmxlIDEwLjYgb3IgbGF0ZXIKIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS5o
dG1sCitmYXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0aW9uLmh0bWwKIAogIyBEaXNhYmxlIHRlc3Rz
IHdoaWNoIHN0YXJ0ZWQgZmFpbGluZyBhZnRlciByNjY5NjEKICMgRmFpbHVyZXMgbG9vayBsaWtl
IGFuIHVuZGVybHlpbmcgcGxhdGZvcm0gaXNzdWUKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy10aWdlci9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy10aWdlci9Ta2lwcGVkCShyZXZpc2lvbiA4Mjg5NSkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy10aWdlci9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEsNiArMjExLDcgQEAgaHR0
cC90ZXN0cy9taXNjLzQwMS1hbHRlcm5hdGl2ZS1jb250ZW50LgogCiAjIEF2YWlsYWJsZSBvbmx5
IDEwLjYgb3IgbGF0ZXIKIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS5odG1sCitm
YXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0aW9uLmh0bWwKIAogIyBEaXNhYmxlIHNwZWxsaW5nIHRl
c3RzIGZvciBhdXRvY29ycmVjdGlvbiBwYW5lbAogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxp
bmcvYXV0b2NvcnJlY3Rpb24tY29udHJhY3Rpb24uaHRtbApJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9T
a2lwcGVkCShyZXZpc2lvbiA4Mjg5NSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBw
ZWQJKHdvcmtpbmcgY29weSkKQEAgLTMyMzYsNiArMzIzNiw4IEBAIGh0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvYmFzaWMtYXV0aC5odG0KIGh0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLWRlbGV0
ZS5odG1sCiAjIExheW91dFRlc3RDb250cm9sbGVyOjpnZXRPcmlnaW5zV2l0aEFwcGxpY2F0aW9u
Q2FjaGUgaXMgbm90IGltcGxlbWVudGVkCiBodHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbnMtd2l0
aC1hcHBjYWNoZS5odG1sCisjIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUZXh0RGlyZWN0aW9u
IGlzIG5vdCBpbXBsZW1lbnRlZC4KK2Zhc3QvaHRtbC9zZXQtdGV4dC1kaXJlY3Rpb24uaHRtbAog
CiAjIE5lZWRzIHJlYmFzZWxpbmUKIGZhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItZWxl
bWVudC5odG1sCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkocmV2aXNpb24gODI4OTUp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAt
OTc2LDYgKzk3Niw5IEBAIGVkaXRpbmcvc3BlbGxpbmcvZ3JhbW1hci5odG1sCiAjIEVkaXRvckNs
aWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoKSBpcyBub3QgaW1wbGVtZW50ZWQKIGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS5odG1sCiAKKyMgbGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldFRleHREaXJlY3Rpb24oKSBpcyBub3QgaW1wbGVtZW50ZWQKK2Zhc3QvaHRtbC9zZXQt
dGV4dC1kaXJlY3Rpb24uaHRtbAorCiAjIEluZGV4ZWREQiBpcyBub3QgeWV0IGVuYWJsZWQuCiBz
dG9yYWdlL2luZGV4ZWRkYgogCg==
</data>
<flag name="review"
          id="80663"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="88116"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>102483</attachid>
            <date>2011-07-31 23:52:42 -0700</date>
            <delta_ts>2011-07-31 23:52:42 -0700</delta_ts>
            <desc>test case</desc>
            <filename>setdir.html</filename>
            <type>text/html</type>
            <size>340</size>
            <attacher name="Aharon (Vladimir) Lanin">aharon</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUw+DQo8aHRtbD48aGVhZD4NCjx0aXRsZT5zZXRkaXI8L3RpdGxlPg0KPHN0
eWxlPg0KPC9zdHlsZT4NCjwvaGVhZD48Ym9keT4NCjxkaXYgaWQ9bG9nPjwvZGl2Pg0KPHNjcmlw
dD4NCiAgdmFyIGxvZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKTsNCiAgZnVuY3Rp
b24gb25JbnB1dChlbCkgew0KICAgIGxvZy5pbm5lckhUTUwgKz0gZWwuZGlyICsgJy4nOw0KICB9
DQo8L3NjcmlwdD4NCjxpbnB1dCBvbmlucHV0PSJvbklucHV0KHRoaXMpOyIvPg0KPHRleHRhcmVh
IG9uaW5wdXQ9Im9uSW5wdXQodGhpcyk7Ij48L3RleHRhcmVhPg0KPC9ib2R5PjwvaHRtbD4NCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>