<?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>17594</bug_id>
          
          <creation_ts>2008-02-28 10:00:10 -0800</creation_ts>
          <short_desc>queryCommandState returns false for Underline command when no selection is made</short_desc>
          <delta_ts>2010-09-22 11:30:47 -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>HTML Editing</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Ruspini">druspini</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>alessandrozifiglio</cc>
    
    <cc>darin</cc>
    
    <cc>druspini</cc>
    
    <cc>enrica</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>72264</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Ruspini">druspini</who>
    <bug_when>2008-02-28 10:00:10 -0800</bug_when>
    <thetext>Rich text editor implementations typically want to highlight which command is being used, such as Bold and Underline.  In WebKit most are done correctly (Bold) when there is no selection in the text editor made, i.e. empty textarea and user clicks Bold, the Bold button highlights.  But with Underline, when there is no selection, the queryCommandState returns false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>72265</commentid>
    <comment_count>1</comment_count>
    <who name="Daniel Ruspini">druspini</who>
    <bug_when>2008-02-28 10:01:11 -0800</bug_when>
    <thetext>Should also note that this works as expected in IE and FF browsers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260072</commentid>
    <comment_count>2</comment_count>
      <attachid>63461</attachid>
    <who name="Alessandro Zifiglio">alessandrozifiglio</who>
    <bug_when>2010-08-04 10:04:04 -0700</bug_when>
    <thetext>Created attachment 63461
underline/strikethrough not working as expected when there is no text selected selected.

You can note from the attachment included the manifestation of the bug. This is also only half the problem. The other half consists of having the document in underline/strikethrough and bold/italic state. when this condition is met, you cannot toggle back underline/strikethrough without first toggling back bold/italic. This is easy to reproduce.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260074</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-04 10:05:43 -0700</bug_when>
    <thetext>Attachment 63461 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
Total errors found: 0 in 0 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260075</commentid>
    <comment_count>4</comment_count>
    <who name="Alessandro Zifiglio">alessandrozifiglio</who>
    <bug_when>2010-08-04 10:06:49 -0700</bug_when>
    <thetext>when there is no text selected and an execCommand for underline is performed, immediately after, executing queryCommandState(&apos;underline&apos;) returns false. However the document is in the underline state because if you type you can see the results are underlined. You can observe the same behavior when doing an execCommand on strikethrough as well.

This is inconsistent behavior and : 
1) it&apos;s inconsistent with the bold/italic commands because those work as expected under these conditions
2) when you have performed execCommand on underline/strikethrough and then furhter performing an execCommand on bold/italic, you cannot toggle back underline/strikethrough, without toggling back bold/italic first. So as you can note, it gets even more worse and I cannot think of a simple workaround to fix this problem on my end.
3)This works just fine on all other browsers that support contenteditable.

Infact if you login to gmail on google chrome or safari, clicking underline in the editor without selecting text shows this problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260261</commentid>
    <comment_count>5</comment_count>
      <attachid>63507</attachid>
    <who name="Alessandro Zifiglio">alessandrozifiglio</who>
    <bug_when>2010-08-04 16:08:39 -0700</bug_when>
    <thetext>Created attachment 63507
underline/strikethrough not working as expected when there is no text selected selected</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280478</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-09-16 17:48:10 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; when there is no text selected and an execCommand for underline is performed, immediately after, executing queryCommandState(&apos;underline&apos;) returns false.

This is correct behavior because if you do execCommand(&apos;underline&apos;, false, null) inside a underlined content, then we remove the underline from the typing style.  If you typed text without moving caret or clicking anywhere, you should be able to text without underline.

&gt;However the document is in the underline state because if you type you can see the results are underlined. You can observe the same behavior when doing an execCommand on strikethrough as well.

I don&apos;t think this is an accurate description.  Yes, you do get underlined text if you moved the caret or clicked some other place (even the same location) to type text.  But that&apos;s consistent with other browsers such as Firefox.

&gt; This is inconsistent behavior and : 
&gt; 1) it&apos;s inconsistent with the bold/italic commands because those work as expected under these conditions
&gt; 2) when you have performed execCommand on underline/strikethrough and then furhter performing an execCommand on bold/italic, you cannot toggle back underline/strikethrough, without toggling back bold/italic first. So as you can note, it gets even more worse and I cannot think of a simple workaround to fix this problem on my end.

I think you&apos;re encountering the bug 44560, which has been fixed recently.

&gt; 3)This works just fine on all other browsers that support contenteditable.

I don&apos;t really understand what kind of problems you&apos;re experiencing.  As far as I checked the test cases on this page, WebKit (TOT) is behaving exactly as I expect it to behave.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280485</commentid>
    <comment_count>7</comment_count>
    <who name="Alessandro Zifiglio">alessandrozifiglio</who>
    <bug_when>2010-09-16 18:05:18 -0700</bug_when>
    <thetext>
(In reply to comment #6)
Hello Ryosuke, thanks for responding. I&apos;ve already included a test case. You can test that the behavior is not the same on firefox, ie and opera where it works correctly. All you need to do is click in the yellow area and type. 

Clicking in the yellow area toggles underline. when queryCommandState(&apos;underline&apos;) is supposed to return true, it returns false and vice versa ( only in webkit ).

In addition, you can easily test this in gmails editor and how it behaves incorrectly when toggling underline. This incorrect behavior happens only in webkit.

Regards,

Alessandro
 
&gt; (In reply to comment #4)
&gt; &gt; when there is no text selected and an execCommand for underline is performed, immediately after, executing queryCommandState(&apos;underline&apos;) returns false.
&gt; 
&gt; This is correct behavior because if you do execCommand(&apos;underline&apos;, false, null) inside a underlined content, then we remove the underline from the typing style.  If you typed text without moving caret or clicking anywhere, you should be able to text without underline.
&gt; 
&gt; &gt;However the document is in the underline state because if you type you can see the results are underlined. You can observe the same behavior when doing an execCommand on strikethrough as well.
&gt; 
&gt; I don&apos;t think this is an accurate description.  Yes, you do get underlined text if you moved the caret or clicked some other place (even the same location) to type text.  But that&apos;s consistent with other browsers such as Firefox.
&gt; 
&gt; &gt; This is inconsistent behavior and : 
&gt; &gt; 1) it&apos;s inconsistent with the bold/italic commands because those work as expected under these conditions
&gt; &gt; 2) when you have performed execCommand on underline/strikethrough and then furhter performing an execCommand on bold/italic, you cannot toggle back underline/strikethrough, without toggling back bold/italic first. So as you can note, it gets even more worse and I cannot think of a simple workaround to fix this problem on my end.
&gt; 
&gt; I think you&apos;re encountering the bug 44560, which has been fixed recently.
&gt; 
&gt; &gt; 3)This works just fine on all other browsers that support contenteditable.
&gt; 
&gt; I don&apos;t really understand what kind of problems you&apos;re experiencing.  As far as I checked the test cases on this page, WebKit (TOT) is behaving exactly as I expect it to behave.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280496</commentid>
    <comment_count>8</comment_count>
      <attachid>67872</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-09-16 18:23:32 -0700</bug_when>
    <thetext>Created attachment 67872
demo

In this demo, the typing style after execCommand(&apos;underline&apos;) is incorrectly reported not to have underline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280497</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-09-16 18:25:03 -0700</bug_when>
    <thetext>I finally got what you are talking about.  I was focusing too much in the toggling part but you were talking about the typing style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280513</commentid>
    <comment_count>10</comment_count>
      <attachid>67875</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-09-16 19:53:44 -0700</bug_when>
    <thetext>Created attachment 67875
work in progress

The problem was that selectionComputedStyle just set the style attribute of a dummy node to the typing style even though only -webkit-text-decorations-in-effect had the actual value for the text-decoration.  We should be calling prepareEditingStyleAt to begin with because there is no point in applying non-editing styles here.  Hopefully I can fix this bug tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280562</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-09-17 00:19:54 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=67875) [details]
&gt; work in progress
&gt; 
&gt; The problem was that selectionComputedStyle just set the style attribute of a dummy node to the typing style even though only -webkit-text-decorations-in-effect had the actual value for the text-decoration.  We should be calling prepareEditingStyleAt to begin with because there is no point in applying non-editing styles here.  Hopefully I can fix this bug tomorrow.

Oops, my current approach won&apos;t work in the case of removing underline because if selectionComputedStyle adds a node inside underlined element, no matter what text-decoration has, it&apos;ll always be underlined.  We need to avoid inserting a node in selectionComputedStyle when adding a typing style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280794</commentid>
    <comment_count>12</comment_count>
      <attachid>67935</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-09-17 12:33:14 -0700</bug_when>
    <thetext>Created attachment 67935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280798</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-09-17 12:35:33 -0700</bug_when>
    <thetext>Darin, it&apos;ll be great if you could review this patch since you seem to be the original author of selectionComputedStyle according to http://trac.webkit.org/changeset/6808.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281986</commentid>
    <comment_count>14</comment_count>
      <attachid>67935</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-20 18:19:38 -0700</bug_when>
    <thetext>Comment on attachment 67935
Patch

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

This change seems OK, and I am going to say r=me. But I am concerned that we are missing some edge case. It’s great that this fixes underlining, but I am not sure that merging two style objects captures the same behavior that inheritance does. Adding only one test case worries me. I suspect this will cause regressions.

&gt; WebCore/ChangeLog:13
&gt; +        Fixed the bug by making selectionComputedStyle directly marge the computed style of the current

Typo here: &quot;marge&quot;.

&gt; WebCore/editing/ApplyStyleCommand.cpp:391
&gt; -RefPtr&lt;CSSMutableStyleDeclaration&gt; getPropertiesNotInComputedStyle(CSSStyleDeclaration* style, CSSComputedStyleDeclaration* computedStyle)
&gt; +RefPtr&lt;CSSMutableStyleDeclaration&gt; getPropertiesNotIn(CSSStyleDeclaration* style, CSSStyleDeclaration* computedStyle)

If this argument is allowed to be something other than a computed styled, then computedStyle seems like a bad name for the argument.

&gt; WebCore/editing/ApplyStyleCommand.h:129
&gt; -RefPtr&lt;CSSMutableStyleDeclaration&gt; getPropertiesNotInComputedStyle(CSSStyleDeclaration* style, CSSComputedStyleDeclaration* computedStyle);
&gt; +RefPtr&lt;CSSMutableStyleDeclaration&gt; getPropertiesNotIn(CSSStyleDeclaration* style, CSSStyleDeclaration* computedStyle);

Same comment about the computed style argument name.

The function is now easy to use wrong because both arguments have the same type.

&gt; WebCore/editing/Editor.cpp:865
&gt; -static TriState triStateOfStyleInComputedStyle(CSSStyleDeclaration* desiredStyle, CSSComputedStyleDeclaration* computedStyle, bool ignoreTextOnlyProperties = false)
&gt; +static TriState triStateOfStyleInComputedStyle(CSSStyleDeclaration* desiredStyle, CSSStyleDeclaration* computedStyle, bool ignoreTextOnlyProperties = false)

Same comment about the computed style argument name. But also, it’s not appropriate to have ComputedStyle in the function name given the change.

&gt; WebCore/editing/Editor.cpp:3264
&gt; +    mutableStyle-&gt;merge(typingStyle.get());

Is a merge function call here really the same thing as inheriting style? I assume the old code must have handled at least one case differently from calling merge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282103</commentid>
    <comment_count>15</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-09-20 22:38:48 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 67935 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=67935&amp;action=review
&gt; 
&gt; This change seems OK, and I am going to say r=me. But I am concerned that we are missing some edge case. It’s great that this fixes underlining, but I am not sure that merging two style objects captures the same behavior that inheritance does. Adding only one test case worries me. I suspect this will cause regressions.

It doesn&apos;t.  I thought about it for a while but I couldn&apos;t think of the situation where you have non-inheritable typing style and does not want to include that style in selectionComputedStyle.  If there is such a case, I will gladly fix my patch.

&gt; &gt; WebCore/ChangeLog:13
&gt; &gt; +        Fixed the bug by making selectionComputedStyle directly marge the computed style of the current
&gt; 
&gt; Typo here: &quot;marge&quot;.

Oops, will fix.

&gt; &gt; WebCore/editing/ApplyStyleCommand.cpp:391
&gt; &gt; -RefPtr&lt;CSSMutableStyleDeclaration&gt; getPropertiesNotInComputedStyle(CSSStyleDeclaration* style, CSSComputedStyleDeclaration* computedStyle)
&gt; &gt; +RefPtr&lt;CSSMutableStyleDeclaration&gt; getPropertiesNotIn(CSSStyleDeclaration* style, CSSStyleDeclaration* computedStyle)
&gt; 
&gt; If this argument is allowed to be something other than a computed styled, then computedStyle seems like a bad name for the argument.

Right, I should have changed that as well.

&gt; &gt; WebCore/editing/ApplyStyleCommand.h:129
&gt; &gt; -RefPtr&lt;CSSMutableStyleDeclaration&gt; getPropertiesNotInComputedStyle(CSSStyleDeclaration* style, CSSComputedStyleDeclaration* computedStyle);
&gt; &gt; +RefPtr&lt;CSSMutableStyleDeclaration&gt; getPropertiesNotIn(CSSStyleDeclaration* style, CSSStyleDeclaration* computedStyle);
&gt; 
&gt; Same comment about the computed style argument name.
&gt; 
&gt; The function is now easy to use wrong because both arguments have the same type.

Yeah, we probably need to rename it something like styleWithRedundantProperties (or simply style) and baseStyle.  Do they sound good to you?

&gt; &gt; WebCore/editing/Editor.cpp:865
&gt; &gt; -static TriState triStateOfStyleInComputedStyle(CSSStyleDeclaration* desiredStyle, CSSComputedStyleDeclaration* computedStyle, bool ignoreTextOnlyProperties = false)
&gt; &gt; +static TriState triStateOfStyleInComputedStyle(CSSStyleDeclaration* desiredStyle, CSSStyleDeclaration* computedStyle, bool ignoreTextOnlyProperties = false)
&gt; 
&gt; Same comment about the computed style argument name. But also, it’s not appropriate to have ComputedStyle in the function name given the change.

Oops, right.  Will change it to something like triStateOfStyle.

&gt; &gt; WebCore/editing/Editor.cpp:3264
&gt; &gt; +    mutableStyle-&gt;merge(typingStyle.get());
&gt; 
&gt; Is a merge function call here really the same thing as inheriting style? I assume the old code must have handled at least one case differently from calling merge.

No, as noted above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282733</commentid>
    <comment_count>16</comment_count>
      <attachid>68326</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-09-21 19:18:40 -0700</bug_when>
    <thetext>Created attachment 68326
avoids merging inheritable properties per Darin&apos;s comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282737</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-09-21 19:25:23 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Created an attachment (id=68326) [details]
&gt; avoids merging inheritable properties per Darin&apos;s comment

Darin, I added ApplyStyleCommand::removeNonEditingProperties (maybe better to call it getEditingProperties?) and removed all non-inheritable properties before merging to address your concern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282782</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-21 23:13:03 -0700</bug_when>
    <thetext>Attachment 68326 did not build on win:
Build output: http://queues.webkit.org/results/3995096</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283093</commentid>
    <comment_count>19</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-09-22 11:30:47 -0700</bug_when>
    <thetext>Committed r68059: &lt;http://trac.webkit.org/changeset/68059&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>63461</attachid>
            <date>2010-08-04 10:04:04 -0700</date>
            <delta_ts>2010-08-04 16:08:39 -0700</delta_ts>
            <desc>underline/strikethrough not working as expected when there is no text selected selected.</desc>
            <filename>test.html</filename>
            <type>text/html</type>
            <size>1146</size>
            <attacher name="Alessandro Zifiglio">alessandrozifiglio</attacher>
            
              <data encoding="base64">PGh0bWw+DQo8Ym9keT4NCgk8aDE+VHlwZSBpbiB0aGUgeWVsbG93IGFyZWEuPC9oMT4NCgk8cD4N
CgkJY2xpY2tpbmcgdG9nZ2xlcyB1bmRlcmxpbmUuIEhvd2V2ZXIgbm90ZSB3aGVuIHlvdSBjbGlj
ayB0aGUgcmVzdWx0IGlzIGZhbHNlLCB0eXBpbmcgc2hvd3MgdGhhdCB5b3VyIGluIHVuZGVybGlu
ZSBzdGF0ZS4gY2xpY2tpbmcgYWdhaW4gc2hvdWxkIHRvZ2dsZSBhbmQgcmVtb3ZlIHRoZSB1bmRl
cmxpbmUsIHlldCB5b3UgZ2V0IGEgdHJ1ZSByZXN1bHQgYmFjay4NCgkJSSBleHBlY3Qgb3Bwb3Np
dGUgYmVoYXZpb3IuDQoJPC9wPg0KICAgIDxkaXYgaWQ9InRlc3QiIGNvbnRlbnRlZGl0YWJsZT0i
dHJ1ZSIgc3R5bGU9ImhlaWdodDozMHB4O2JvcmRlcjoycHggc29saWQgIzAwMDtiYWNrZ3JvdW5k
LWNvbG9yOnllbGxvdzsiPg0KCQ0KPC9kaXY+DQogICAgPHA+DQogICAgICAgIHVuZGVybGluZTog
PHNwYW4gaWQ9ImMxIj48L3NwYW4+DQogICAgPC9wPg0KICAgICA8dGV4dGFyZWEgcm93cz0iMjAi
IGNvbHM9IjYwIiBpZD0idGV4dGFyZWExIj48L3RleHRhcmVhPg0KICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4NCgl2YXIgdGVzdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVz
dCcpOw0KCXZhciBzZXA9Jyc7DQoJLypmb3IgZmlyZWZveCBkaXNhYmxlIGlubGluZSBjc3Mgc28g
d2UgY2FuIHRlc3QgdGhlIHNhbWUgYmVoYXZpb3IqLw0KCWlmKGRvY3VtZW50LnF1ZXJ5Q29tbWFu
ZFN1cHBvcnRlZCgnc3R5bGVXaXRoQ1NTJykpDQoJCWRvY3VtZW50LmV4ZWNDb21tYW5kKCdzdHls
ZVdpdGhDU1MnLG51bGwsZmFsc2UpOw0KDQoJdGVzdC5vbmNsaWNrPWZ1bmN0aW9uKGFyZ3Mpew0K
CQlkb2N1bWVudC5leGVjQ29tbWFuZCgndW5kZXJsaW5lJyxmYWxzZSxudWxsKTsNCiAgICAgICAg
CWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjMScpLmlubmVySFRNTCs9c2VwK2RvY3VtZW50LnF1
ZXJ5Q29tbWFuZFN0YXRlKCd1bmRlcmxpbmUnKTsNCgkJc2VwPScsJzsNCgkJdmFyIHRleHRhcmVh
MT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dGFyZWExJyk7DQoJCXRleHRhcmVhMS52YWx1
ZT10aGlzLmlubmVySFRNTDsNCgl9Ow0KDQogICAgICAgIAoKPC9zY3JpcHQ+DQo8L2JvZHk+DQo8
L2h0bWw+
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>63507</attachid>
            <date>2010-08-04 16:08:39 -0700</date>
            <delta_ts>2010-09-16 18:23:32 -0700</delta_ts>
            <desc>underline/strikethrough not working as expected when there is no text selected selected</desc>
            <filename>test.html</filename>
            <type>text/html</type>
            <size>972</size>
            <attacher name="Alessandro Zifiglio">alessandrozifiglio</attacher>
            
              <data encoding="base64">PGh0bWw+DQo8Ym9keT4NCgk8aDE+VHlwZSBpbiB0aGUgeWVsbG93IGFyZWEuPC9oMT4NCgk8cD4N
CgkJY2xpY2tpbmcgdG9nZ2xlcyB1bmRlcmxpbmUuIEhvd2V2ZXIgbm90ZSB3aGVuIHlvdSBjbGlj
ayB0aGUgcmVzdWx0IGlzIGZhbHNlLCB0eXBpbmcgc2hvd3MgdGhhdCB5b3VyIGluIHVuZGVybGlu
ZSBzdGF0ZS4gY2xpY2tpbmcgYWdhaW4gc2hvdWxkIHRvZ2dsZSBhbmQgcmVtb3ZlIHRoZSB1bmRl
cmxpbmUsIHlldCB5b3UgZ2V0IGEgdHJ1ZSByZXN1bHQgYmFjay4NCgkJSSBleHBlY3Qgb3Bwb3Np
dGUgYmVoYXZpb3IuDQoJPC9wPg0KICAgIDxkaXYgaWQ9InRlc3QiIGNvbnRlbnRlZGl0YWJsZT0i
dHJ1ZSIgc3R5bGU9ImhlaWdodDozMHB4O2JvcmRlcjoycHggc29saWQgIzAwMDtiYWNrZ3JvdW5k
LWNvbG9yOnllbGxvdzsiPg0KCQ0KPC9kaXY+DQogICAgPHA+DQogICAgICAgIHVuZGVybGluZTog
PHNwYW4gaWQ9ImMxIj48L3NwYW4+DQogICAgPC9wPg0KICAgICA8dGV4dGFyZWEgcm93cz0iMjAi
IGNvbHM9IjYwIiBpZD0idGV4dGFyZWExIj48L3RleHRhcmVhPg0KICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4NCgl2YXIgdGVzdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVz
dCcpOw0KCXZhciBzZXA9Jyc7DQoJDQoJdGVzdC5vbmNsaWNrPWZ1bmN0aW9uKGFyZ3Mpew0KCQlk
b2N1bWVudC5leGVjQ29tbWFuZCgndW5kZXJsaW5lJyxmYWxzZSxudWxsKTsNCiAgICAgICAgCWRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjMScpLmlubmVySFRNTCs9c2VwK2RvY3VtZW50LnF1ZXJ5
Q29tbWFuZFN0YXRlKCd1bmRlcmxpbmUnKTsNCgkJc2VwPScsJzsNCgkJdmFyIHRleHRhcmVhMT1k
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dGFyZWExJyk7DQoJCXRleHRhcmVhMS52YWx1ZT10
aGlzLmlubmVySFRNTDsNCgl9Ow0KDQogICAgICAgIAoKPC9zY3JpcHQ+DQo8L2JvZHk+DQo8L2h0
bWw+
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>67872</attachid>
            <date>2010-09-16 18:23:32 -0700</date>
            <delta_ts>2010-09-16 18:23:32 -0700</delta_ts>
            <desc>demo</desc>
            <filename>typing-style-underline.html</filename>
            <type>text/html</type>
            <size>1345</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">PGh0bWw+Cjxib2R5Pgo8ZGl2IGlkPSJ0ZXN0IiBjb250ZW50ZWRpdGFibGU+PC9kaXY+Cjx1bCBp
ZD0iY29uc29sZSI+CjwvdWw+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCmZ1bmN0
aW9uIHByaW50U3RhdGUoY29tbWFuZCwgZGVzYykgewogICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpOwogICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7CiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoJ3F1ZXJ5Q29tbWFuZFN0YXRlKCInCiAgICAgICAgKyBjb21tYW5kICsg
JyIpICcgKyBkZXNjICsgJyBpcyAnICsgZG9jdW1lbnQucXVlcnlDb21tYW5kU3RhdGUoY29tbWFu
ZCkpKTsKICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTsKfQoKd2luZG93LmdldFNl
bGVjdGlvbigpLnNldFBvc2l0aW9uKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0JyksIDAp
Owpkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAneCcpOwpkb2N1bWVu
dC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAneCcpOwpwcmludFN0YXRlKCdib2xk
JywgJ2JlZm9yZSBib2xkaW5nJyk7CmRvY3VtZW50LmV4ZWNDb21tYW5kKCdib2xkJywgZmFsc2Us
IG51bGwpOwpwcmludFN0YXRlKCdib2xkJywgJ2FmdGVyIGJvbGRpbmcnKTsKZG9jdW1lbnQuZXhl
Y0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgJ3gnKTsKZG9jdW1lbnQuZXhlY0NvbW1hbmQo
Ikluc2VydFRleHQiLCBmYWxzZSwgJ3gnKTsKcHJpbnRTdGF0ZSgnYm9sZCcsICdhZnRlciB0eXBp
bmcnKTsKZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2JvbGQnLCBmYWxzZSwgbnVsbCk7CnByaW50U3Rh
dGUoJ2JvbGQnLCAnYWZ0ZXIgdW5ib2xkaW5nJyk7CmRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNl
cnRUZXh0IiwgZmFsc2UsICd4Jyk7CmRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0Iiwg
ZmFsc2UsICd4Jyk7CgpwcmludFN0YXRlKCd1bmRlcmxpbmUnLCAnYmVmb3JlIHVuZGVybGluaW5n
Jyk7CmRvY3VtZW50LmV4ZWNDb21tYW5kKCd1bmRlcmxpbmUnLCBmYWxzZSwgbnVsbCk7CnByaW50
U3RhdGUoJ3VuZGVybGluZScsICdhZnRlciB1bmRlcmxpbmluZycpOwpkb2N1bWVudC5leGVjQ29t
bWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAneCcpOwpkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5z
ZXJ0VGV4dCIsIGZhbHNlLCAneCcpOwpwcmludFN0YXRlKCd1bmRlcmxpbmUnLCAnYWZ0ZXIgdHlw
aW5nJyk7Cgo8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>67875</attachid>
            <date>2010-09-16 19:53:44 -0700</date>
            <delta_ts>2010-09-16 19:53:44 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>wip17594</filename>
            <type>application/octet-stream</type>
            <size>5796</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiA2NzU5NykKKysrIFdlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjc2LDcgKzMyNzYsOSBAQAogICAgIGlmICht
X2ZyYW1lLT5zZWxlY3Rpb24oKS0+dHlwaW5nU3R5bGUoKSkgewogICAgICAgICBzdHlsZUVsZW1l
bnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KHNwYW5UYWcsIGZhbHNlKTsK
IAotICAgICAgICBzdHlsZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsIG1fZnJhbWUt
PnNlbGVjdGlvbigpLT50eXBpbmdTdHlsZSgpLT5jc3NUZXh0KCksIGVjKTsKKyAgICAgICAgUmVm
UHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiB0eXBpbmdTdHlsZSA9IG1fZnJhbWUtPnNl
bGVjdGlvbigpLT50eXBpbmdTdHlsZSgpLT5jb3B5KCk7CisgICAgICAgIHByZXBhcmVFZGl0aW5n
U3R5bGVUb0FwcGx5QXQodHlwaW5nU3R5bGUuZ2V0KCksIHBvc2l0aW9uKTsKKyAgICAgICAgc3R5
bGVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCB0eXBpbmdTdHlsZS0+Y3NzVGV4dCgp
LCBlYyk7CiAgICAgICAgIEFTU0VSVCghZWMpOwogCiAgICAgICAgIHN0eWxlRWxlbWVudC0+YXBw
ZW5kQ2hpbGQobV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y3JlYXRlRWRpdGluZ1RleHROb2RlKCIiKSwg
ZWMpOwpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCShyZXZpc2lvbiA2
NzU5NykKKysrIFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4OSw2ICs0ODksMTkgQEAKICAgICAgICAgaWYgKGNvbG9yLmFscGhhKCkgPT0g
MCkKICAgICAgICAgICAgIGVkaXRpbmdTdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQ29sb3IsIGVjKTsKICAgICB9CisKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHRleHRE
ZWNvcmF0aW9uc0luRWZmZWN0ID0gZWRpdGluZ1N0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENT
U1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpOworICAgIGlmICh0ZXh0RGVj
b3JhdGlvbnNJbkVmZmVjdCkgeworICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHRleHREZWNvcmF0
aW9uID0gZWRpdGluZ1N0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5VGV4dERl
Y29yYXRpb24pOworICAgICAgICBpZiAodGV4dERlY29yYXRpb25zSW5FZmZlY3QtPmlzVmFsdWVM
aXN0KCkgJiYgdGV4dERlY29yYXRpb24gJiYgdGV4dERlY29yYXRpb24tPmlzVmFsdWVMaXN0KCkp
IHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGljX2Nhc3Q8Q1NTVmFs
dWVMaXN0Kj4odGV4dERlY29yYXRpb24uZ2V0KCkpLT5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCFzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih0ZXh0RGVjb3JhdGlvbnNJ
bkVmZmVjdC5nZXQoKSktPmhhc1ZhbHVlKHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHRleHRE
ZWNvcmF0aW9uLmdldCgpKS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSkpCisgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHRleHREZWNvcmF0aW9uc0luRWZm
ZWN0LmdldCgpKS0+YXBwZW5kKHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHRleHREZWNvcmF0
aW9uLmdldCgpKS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgZWRpdGluZ1N0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRl
eHREZWNvcmF0aW9uLCB0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdC0+Y3NzVGV4dCgpKTsKKyAgICAg
ICAgZWRpdGluZ1N0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNv
cmF0aW9uc0luRWZmZWN0KTsKKyAgICB9CiB9CiAKIHZvaWQgcmVtb3ZlU3R5bGVzQWRkZWRCeU5v
ZGUoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGVkaXRpbmdTdHlsZSwgTm9kZSogbm9kZSkK
SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biA2NzU5NykKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0yMzg0LDggKzIzODQsOCBAQAogCQk4OTNDNDdCODEyMzhBMDk5MDAy
QjNEODYgLyogSlNGaWxlQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg5M0M0N0I2MTIzOEEwOTkwMDJCM0Q4NiAvKiBKU0ZpbGVDYWxsYmFj
ay5oICovOyB9OwogCQk4OTNDNDdCQjEyMzhBMEE5MDAyQjNEODYgLyogSlNGaWxlV3JpdGVyQ2Fs
bGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODkzQzQ3QjkxMjM4QTBBOTAwMkIzRDg2IC8qIEpTRmlsZVdyaXRlckNhbGxiYWNrLmNwcCAqLzsg
fTsKIAkJODkzQzQ3QkMxMjM4QTBBOTAwMkIzRDg2IC8qIEpTRmlsZVdyaXRlckNhbGxiYWNrLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTNDNDdCQTEy
MzhBMEE5MDAyQjNEODYgLyogSlNGaWxlV3JpdGVyQ2FsbGJhY2suaCAqLzsgfTsKKwkJODkzQzQ3
Q0MxMjNFRUJBMjAwMkIzRDg2IC8qIEpTRW50cnlDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODkzQzQ3Q0ExMjNFRUJBMjAwMkIzRDg2IC8q
IEpTRW50cnlDdXN0b20uY3BwICovOyB9OwogCQk4OTNDNDdERjEyM0VGNEE5MDAyQjNEODYgLyog
SlNEaXJlY3RvcnlFbnRyeUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4OTNDNDdERTEyM0VGNEE5MDAyQjNEODYgLyogSlNEaXJlY3RvcnlF
bnRyeUN1c3RvbS5jcHAgKi87IH07Ci0JCTg5M0M0N0NDMTIzRUVCQTIwMDJCM0Q4NiAvKiBKU0Vu
dHJ5Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg5M0M0N0NBMTIzRUVCQTIwMDJCM0Q4NiAvKiBKU0VudHJ5Q3VzdG9tLmNwcCAqLzsgfTsK
IAkJODk4Nzg1NTIxMjJDQTA2NDAwM0FBQkRBIC8qIERpcmVjdG9yeUVudHJ5LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5ODc4NTM5MTIyQ0EwNjQw
MDNBQUJEQSAvKiBEaXJlY3RvcnlFbnRyeS5jcHAgKi87IH07CiAJCTg5ODc4NTUzMTIyQ0EwNjQw
MDNBQUJEQSAvKiBEaXJlY3RvcnlFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODk4Nzg1M0ExMjJDQTA2NDAwM0FBQkRBIC8qIERpcmVjdG9yeUVu
dHJ5LmggKi87IH07CiAJCTg5ODc4NTU0MTIyQ0EwNjQwMDNBQUJEQSAvKiBEaXJlY3RvcnlSZWFk
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODk4
Nzg1M0IxMjJDQTA2NDAwM0FBQkRBIC8qIERpcmVjdG9yeVJlYWRlci5jcHAgKi87IH07CkBAIC04
MjkwLDggKzgyOTAsOCBAQAogCQk4OTNDNDdCNjEyMzhBMDk5MDAyQjNEODYgLyogSlNGaWxlQ2Fs
bGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGaWxlQ2FsbGJhY2su
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODkzQzQ3QjkxMjM4QTBBOTAwMkIzRDg2
IC8qIEpTRmlsZVdyaXRlckNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRmlsZVdyaXRlckNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODkzQzQ3QkExMjM4QTBBOTAwMkIzRDg2IC8qIEpTRmlsZVdyaXRlckNhbGxiYWNr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRmlsZVdyaXRlckNhbGxiYWNr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5M0M0N0NBMTIzRUVCQTIwMDJCM0Q4
NiAvKiBKU0VudHJ5Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTRW50cnlDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTND
NDdERTEyM0VGNEE5MDAyQjNEODYgLyogSlNEaXJlY3RvcnlFbnRyeUN1c3RvbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RpcmVjdG9yeUVudHJ5Q3VzdG9tLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODkzQzQ3Q0ExMjNFRUJBMjAwMkIzRDg2
IC8qIEpTRW50cnlDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNFbnRyeUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5ODc4
NTM5MTIyQ0EwNjQwMDNBQUJEQSAvKiBEaXJlY3RvcnlFbnRyeS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEaXJlY3RvcnlFbnRyeS5jcHA7IHBhdGggPSBmaWxlYXBp
L0RpcmVjdG9yeUVudHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODk4Nzg1
M0ExMjJDQTA2NDAwM0FBQkRBIC8qIERpcmVjdG9yeUVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERpcmVjdG9yeUVudHJ5Lmg7IHBhdGggPSBmaWxlYXBpL0RpcmVjdG9y
eUVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5ODc4NTNCMTIyQ0EwNjQw
MDNBQUJEQSAvKiBEaXJlY3RvcnlSZWFkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gRGlyZWN0b3J5UmVhZGVyLmNwcDsgcGF0aCA9IGZpbGVhcGkvRGlyZWN0b3J5
UmVhZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67935</attachid>
            <date>2010-09-17 12:33:14 -0700</date>
            <delta_ts>2010-09-21 19:18:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-17594-20100917123313.patch</filename>
            <type>text/plain</type>
            <size>18497</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NzczNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTAtMDktMTcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcXVl
cnlDb21tYW5kU3RhdGUgcmV0dXJucyBmYWxzZSBmb3IgVW5kZXJsaW5lIGNvbW1hbmQgd2hlbiBu
byBzZWxlY3Rpb24gaXMgbWFkZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc1OTQKKworICAgICAgICBUaGUgYnVnIHdhcyBjYXVzZWQgYnkgc2VsZWN0
aW9uQ29tcHV0ZWRTdHlsZSdzIGFkZGluZyAtd2Via2l0LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZm
ZWN0IHByb3BlcnR5CisgICAgICAgIHRvIGEgZHVtbXkgc3BhbiB1c2VkIHRvIG9idGFpbiB0aGUg
Y29tcHV0ZWQgc3R5bGUgd2hlbiB0aGVyZSBpcyBhIHR5cGluZyBzdHlsZS4KKyAgICAgICAgU2lu
Y2UgdGhpcyBwcm9wZXJ0eSBpcyBmb3IgaW50ZXJuYWwgdXNlIG9ubHksIHRoZSBDU1MgcGFyc2Vy
IGFsd2F5cyBzdHJpcHBlZCB0aGUgcHJvcGVydHkuCisgICAgICAgIEFzIGEgcmVzdWx0LCB3ZSB3
ZXJlIGFsd2F5cyBpZ25vcmluZyB0aGUgdGV4dCBkZWNvcmF0aW9ucyBzZXQgYnkgdGhlIHR5cGlu
ZyBzdHlsZS4KKworICAgICAgICBGaXhlZCB0aGUgYnVnIGJ5IG1ha2luZyBzZWxlY3Rpb25Db21w
dXRlZFN0eWxlIGRpcmVjdGx5IG1hcmdlIHRoZSBjb21wdXRlZCBzdHlsZSBvZiB0aGUgY3VycmVu
dAorICAgICAgICBjYXJldCBwb3NpdGlvbiBhbmQgdGhlIHR5cGluZyBzdHlsZS4gVGhpcyBhbHNv
IGVsaW1pbmF0ZXMgdGhlIG5lZWQgZm9yIGEgZHVtbXkgc3BhbiBlbGVtZW50LgorICAgICAgICBE
dWUgdG8gdGhlIG1lcmdlLCB0aGUgcmV0dXJuIHZhbHVlIG9mIHNlbGVjdGlvbkNvbXB1dGVkU3R5
bGUgaGFkIHRvIGJlIGNoYW5nZWQgdG8gQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24KKyAgICAg
ICAgZnJvbSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uCisKKyAgICAgICAgVGVzdDogZWRp
dGluZy9leGVjQ29tbWFuZC9xdWVyeS10ZXh0LWRlY29yYXRpb24td2l0aC10eXBpbmctc3R5bGUu
aHRtbAorCisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpnZXRQcm9wZXJ0aWVzTm90SW4pOiBSZW5hbWVkIGZyb20gZ2V0UHJvcGVydGll
c05vdEluQ29tcHV0ZWRTdHlsZSBzaW5jZSBpdCB0YWtlcworICAgICAgICBDU1NTdHlsZURlY2xh
cmF0aW9uKiBpbnN0ZWFkIG9mIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbiBmb3IgdGhlIHNl
Y29uZCBhcmd1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2hhbmdlOjppbml0KTogQ2Fs
bHMgZ2V0UHJvcGVydGllc05vdEluLgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1h
bmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0
cmlTdGF0ZU9mU3R5bGVJbkNvbXB1dGVkU3R5bGUpOiBDYWxscyBnZXRQcm9wZXJ0aWVzTm90SW4u
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUpOiBDYWxs
cyBzZWxlY3Rpb25Db21wdXRlZFN0eWxlLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxl
Y3Rpb25IYXNTdHlsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rp
b25TdGFydENTU1Byb3BlcnR5VmFsdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6c2VsZWN0aW9uQ29tcHV0ZWRTdHlsZSk6IFNlZSBhYm92ZS4KKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpleGVjdXRlVG9nZ2xlU3R5bGVJbkxpc3QpOiBDYWxscyBzZWxlY3Rpb25Db21w
dXRlZFN0eWxlLgorCiAyMDEwLTA5LTE3ICBMdWNhcyBEZSBNYXJjaGkgIDxsdWNhcy5kZW1hcmNo
aUBwcm9mdXNpb24ubW9iaT4KIAogICAgICAgICBVbnJldmlld2VkLCBidWlsZCBmaXguIEFkZCBm
aWxlcyBtaXNzZWQgaW4gcjY3NzA0LgpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1h
bmQuY3BwCShyZXZpc2lvbiA2NzY0MSkKKysrIFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29t
bWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIFN0eWxlQ2hh
bmdlOjppbml0KFBhc3NSZWZQdHI8Q1NTU3R5CiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0
cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IGNvbXB1dGVkU3R5bGUgPSBwb3NpdGlvbi5j
b21wdXRlZFN0eWxlKCk7Ci0gICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBt
dXRhYmxlU3R5bGUgPSBnZXRQcm9wZXJ0aWVzTm90SW5Db21wdXRlZFN0eWxlKHN0eWxlLmdldCgp
LCBjb21wdXRlZFN0eWxlLmdldCgpKTsKKyAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24+IG11dGFibGVTdHlsZSA9IGdldFByb3BlcnRpZXNOb3RJbihzdHlsZS5nZXQoKSwgY29t
cHV0ZWRTdHlsZS5nZXQoKSk7CiAKICAgICByZWNvbmNpbGVUZXh0RGVjb3JhdGlvblByb3BlcnRp
ZXMobXV0YWJsZVN0eWxlLmdldCgpKTsKICAgICBpZiAoIWRvY3VtZW50LT5mcmFtZSgpLT5lZGl0
b3IoKS0+c2hvdWxkU3R5bGVXaXRoQ1NTKCkpCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBTdHls
ZUNoYW5nZTo6aW5pdChQYXNzUmVmUHRyPENTU1N0eQogICAgICAgICBtdXRhYmxlU3R5bGUtPnJl
bW92ZVByb3BlcnR5KENTU1Byb3BlcnR5V2hpdGVTcGFjZSk7CiAKICAgICAvLyBJZiB1bmljb2Rl
LWJpZGkgaXMgcHJlc2VudCBpbiBtdXRhYmxlU3R5bGUgYW5kIGRpcmVjdGlvbiBpcyBub3QsIHRo
ZW4gYWRkIGRpcmVjdGlvbiB0byBtdXRhYmxlU3R5bGUuCi0gICAgLy8gRklYTUU6IFNob3VsZG4n
dCB0aGlzIGJlIGRvbmUgaW4gZ2V0UHJvcGVydGllc05vdEluQ29tcHV0ZWRTdHlsZT8KKyAgICAv
LyBGSVhNRTogU2hvdWxkbid0IHRoaXMgYmUgZG9uZSBpbiBnZXRQcm9wZXJ0aWVzTm90SW4/CiAg
ICAgaWYgKG11dGFibGVTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eVVuaWNv
ZGVCaWRpKSAmJiAhc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlEaXJlY3Rp
b24pKQogICAgICAgICBtdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0
aW9uLCBzdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eURpcmVjdGlvbikpOwogCkBA
IC0zODgsNyArMzg4LDcgQEAgc3RhdGljIGJvb2wgZm9udFdlaWdodElzQm9sZChDU1NTdHlsZURl
YwogICAgIHJldHVybiBmYWxzZTsgLy8gTWFrZSBjb21waWxlciBoYXBweQogfQogCi1SZWZQdHI8
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGdldFByb3BlcnRpZXNOb3RJbkNvbXB1dGVkU3R5
bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
biogY29tcHV0ZWRTdHlsZSkKK1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZ2V0
UHJvcGVydGllc05vdEluKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBDU1NTdHlsZURlY2xh
cmF0aW9uKiBjb21wdXRlZFN0eWxlKQogewogICAgIEFTU0VSVChzdHlsZSk7CiAgICAgQVNTRVJU
KGNvbXB1dGVkU3R5bGUpOwpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5k
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgJKHJl
dmlzaW9uIDY3NjQxKQorKysgV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyNiw3ICsxMjYsNyBAQCBwcml2YXRlOgogCiBib29sIGlzU3R5bGVT
cGFuKGNvbnN0IE5vZGUqKTsKIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZVN0eWxlU3Bh
bkVsZW1lbnQoRG9jdW1lbnQqKTsKLVJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4g
Z2V0UHJvcGVydGllc05vdEluQ29tcHV0ZWRTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHls
ZSwgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uKiBjb21wdXRlZFN0eWxlKTsKK1JlZlB0cjxD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZ2V0UHJvcGVydGllc05vdEluKENTU1N0eWxlRGVj
bGFyYXRpb24qIHN0eWxlLCBDU1NTdHlsZURlY2xhcmF0aW9uKiBjb21wdXRlZFN0eWxlKTsKIAog
dm9pZCBwcmVwYXJlRWRpdGluZ1N0eWxlVG9BcHBseUF0KENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uKiwgUG9zaXRpb24pOwogdm9pZCByZW1vdmVTdHlsZXNBZGRlZEJ5Tm9kZShDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbiosIE5vZGUqKTsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiA2
NzY0MSkKKysrIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
NjIsOSArODYyLDkgQEAgc3RhdGljIGNvbnN0IGludCB0ZXh0T25seVByb3BlcnRpZXNbXSA9IAog
ICAgIENTU1Byb3BlcnR5Q29sb3IsCiB9OwogCi1zdGF0aWMgVHJpU3RhdGUgdHJpU3RhdGVPZlN0
eWxlSW5Db21wdXRlZFN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qIGRlc2lyZWRTdHlsZSwgQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uKiBjb21wdXRlZFN0eWxlLCBib29sIGlnbm9yZVRleHRP
bmx5UHJvcGVydGllcyA9IGZhbHNlKQorc3RhdGljIFRyaVN0YXRlIHRyaVN0YXRlT2ZTdHlsZUlu
Q29tcHV0ZWRTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiBkZXNpcmVkU3R5bGUsIENTU1N0eWxl
RGVjbGFyYXRpb24qIGNvbXB1dGVkU3R5bGUsIGJvb2wgaWdub3JlVGV4dE9ubHlQcm9wZXJ0aWVz
ID0gZmFsc2UpCiB7Ci0gICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBkaWZm
ID0gZ2V0UHJvcGVydGllc05vdEluQ29tcHV0ZWRTdHlsZShkZXNpcmVkU3R5bGUsIGNvbXB1dGVk
U3R5bGUpOworICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZGlmZiA9IGdl
dFByb3BlcnRpZXNOb3RJbihkZXNpcmVkU3R5bGUsIGNvbXB1dGVkU3R5bGUpOwogCiAgICAgaWYg
KGlnbm9yZVRleHRPbmx5UHJvcGVydGllcykKICAgICAgICAgZGlmZi0+cmVtb3ZlUHJvcGVydGll
c0luU2V0KHRleHRPbmx5UHJvcGVydGllcywgc2l6ZW9mKHRleHRPbmx5UHJvcGVydGllcykgLyBz
aXplb2YodGV4dE9ubHlQcm9wZXJ0aWVzWzBdKSk7CkBAIC04NzgsMTcgKzg3OCwxMSBAQCBzdGF0
aWMgVHJpU3RhdGUgdHJpU3RhdGVPZlN0eWxlSW5Db21wdXRlCiAKIGJvb2wgRWRpdG9yOjpzZWxl
Y3Rpb25TdGFydEhhc1N0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdAogewot
ICAgIE5vZGUqIG5vZGVUb1JlbW92ZTsKLSAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uPiBzZWxlY3Rpb25TdHlsZSA9IHNlbGVjdGlvbkNvbXB1dGVkU3R5bGUobm9kZVRvUmVt
b3ZlKTsKKyAgICBib29sIHNob3VsZFVzZUZpeGVkRm9udERlZmF1bHRTaXplOworICAgIFJlZlB0
cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc2VsZWN0aW9uU3R5bGUgPSBzZWxlY3Rpb25D
b21wdXRlZFN0eWxlKHNob3VsZFVzZUZpeGVkRm9udERlZmF1bHRTaXplKTsKICAgICBpZiAoIXNl
bGVjdGlvblN0eWxlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgVHJpU3RhdGUgc3RhdGUg
PSB0cmlTdGF0ZU9mU3R5bGVJbkNvbXB1dGVkU3R5bGUoc3R5bGUsIHNlbGVjdGlvblN0eWxlLmdl
dCgpKTsKLSAgICBpZiAobm9kZVRvUmVtb3ZlKSB7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgICAgICBub2RlVG9SZW1vdmUtPnJlbW92ZShlYyk7Ci0gICAgICAgIEFTU0VSVCgh
ZWMpOwotICAgIH0KLSAgICByZXR1cm4gc3RhdGUgPT0gVHJ1ZVRyaVN0YXRlOworICAgIHJldHVy
biB0cmlTdGF0ZU9mU3R5bGVJbkNvbXB1dGVkU3R5bGUoc3R5bGUsIHNlbGVjdGlvblN0eWxlLmdl
dCgpKSA9PSBUcnVlVHJpU3RhdGU7CiB9CiAKIFRyaVN0YXRlIEVkaXRvcjo6c2VsZWN0aW9uSGFz
U3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpIGNvbnN0CkBAIC04OTYsMTYgKzg5MCwx
MSBAQCBUcmlTdGF0ZSBFZGl0b3I6OnNlbGVjdGlvbkhhc1N0eWxlKENTU1N0CiAgICAgVHJpU3Rh
dGUgc3RhdGUgPSBGYWxzZVRyaVN0YXRlOwogCiAgICAgaWYgKCFtX2ZyYW1lLT5zZWxlY3Rpb24o
KS0+aXNSYW5nZSgpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGVUb1JlbW92ZTsKLSAgICAgICAgUmVm
UHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gc2VsZWN0aW9uU3R5bGUgPSBzZWxlY3Rp
b25Db21wdXRlZFN0eWxlKG5vZGVUb1JlbW92ZSk7CisgICAgICAgIGJvb2wgc2hvdWxkVXNlRml4
ZWRGb250RGVmYXVsdFNpemU7CisgICAgICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbj4gc2VsZWN0aW9uU3R5bGUgPSBzZWxlY3Rpb25Db21wdXRlZFN0eWxlKHNob3VsZFVzZUZp
eGVkRm9udERlZmF1bHRTaXplKTsKICAgICAgICAgaWYgKCFzZWxlY3Rpb25TdHlsZSkKICAgICAg
ICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOwogICAgICAgICBzdGF0ZSA9IHRyaVN0YXRlT2ZT
dHlsZUluQ29tcHV0ZWRTdHlsZShzdHlsZSwgc2VsZWN0aW9uU3R5bGUuZ2V0KCkpOwotICAgICAg
ICBpZiAobm9kZVRvUmVtb3ZlKSB7Ci0gICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICAgICAgICAgIG5vZGVUb1JlbW92ZS0+cmVtb3ZlKGVjKTsKLSAgICAgICAgICAgIEFTU0VS
VCghZWMpOwotICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChOb2RlKiBub2Rl
ID0gbV9mcmFtZS0+c2VsZWN0aW9uKCktPnN0YXJ0KCkubm9kZSgpOyBub2RlOyBub2RlID0gbm9k
ZS0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uPiBub2RlU3R5bGUgPSBjb21wdXRlZFN0eWxlKG5vZGUpOwpAQCAtOTQ0
LDggKzkzMyw4IEBAIHN0YXRpYyBib29sIGhhc1RyYW5zcGFyZW50QmFja2dyb3VuZENvbG8KIAog
U3RyaW5nIEVkaXRvcjo6c2VsZWN0aW9uU3RhcnRDU1NQcm9wZXJ0eVZhbHVlKGludCBwcm9wZXJ0
eUlEKQogewotICAgIE5vZGUqIG5vZGVUb1JlbW92ZTsKLSAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uPiBzZWxlY3Rpb25TdHlsZSA9IHNlbGVjdGlvbkNvbXB1dGVkU3R5bGUo
bm9kZVRvUmVtb3ZlKTsKKyAgICBib29sIHNob3VsZFVzZUZpeGVkRm9udERlZmF1bHRTaXplID0g
ZmFsc2U7CisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzZWxlY3Rpb25T
dHlsZSA9IHNlbGVjdGlvbkNvbXB1dGVkU3R5bGUoc2hvdWxkVXNlRml4ZWRGb250RGVmYXVsdFNp
emUpOwogICAgIGlmICghc2VsZWN0aW9uU3R5bGUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
IApAQCAtOTU4LDcgKzk0Nyw3IEBAIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvblN0YXJ0Q1NTUHJv
cGVydHkKICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZShtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+
dG9Ob3JtYWxpemVkUmFuZ2UoKSk7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
ICAgICBmb3IgKE5vZGUqIGFuY2VzdG9yID0gcmFuZ2UtPmNvbW1vbkFuY2VzdG9yQ29udGFpbmVy
KGVjKTsgYW5jZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudE5vZGUoKSkgewotICAg
ICAgICAgICAgc2VsZWN0aW9uU3R5bGUgPSBjb21wdXRlZFN0eWxlKGFuY2VzdG9yKTsKKyAgICAg
ICAgICAgIHNlbGVjdGlvblN0eWxlID0gY29tcHV0ZWRTdHlsZShhbmNlc3RvciktPmNvcHkoKTsK
ICAgICAgICAgICAgIGlmICghaGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kQ29sb3Ioc2VsZWN0aW9u
U3R5bGUuZ2V0KCkpKSB7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBzZWxlY3Rpb25TdHlsZS0+
Z2V0UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CkBAIC05NzAsMTYgKzk1OSwxMCBAQCBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rp
b25TdGFydENTU1Byb3BlcnR5CiAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gY3NzVmFsdWUgPSBz
ZWxlY3Rpb25TdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRTaXplKTsK
ICAgICAgICAgQVNTRVJUKGNzc1ZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOwogICAgICAgICBp
bnQgZm9udFBpeGVsU2l6ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oY3NzVmFs
dWUuZ2V0KCkpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICAg
ICAgaW50IHNpemUgPSBDU1NTdHlsZVNlbGVjdG9yOjpsZWdhY3lGb250U2l6ZShtX2ZyYW1lLT5k
b2N1bWVudCgpLCBmb250UGl4ZWxTaXplLCBzZWxlY3Rpb25TdHlsZS0+dXNlRml4ZWRGb250RGVm
YXVsdFNpemUoKSk7CisgICAgICAgIGludCBzaXplID0gQ1NTU3R5bGVTZWxlY3Rvcjo6bGVnYWN5
Rm9udFNpemUobV9mcmFtZS0+ZG9jdW1lbnQoKSwgZm9udFBpeGVsU2l6ZSwgc2hvdWxkVXNlRml4
ZWRGb250RGVmYXVsdFNpemUpOwogICAgICAgICB2YWx1ZSA9IFN0cmluZzo6bnVtYmVyKHNpemUp
OwogICAgIH0KIAotICAgIGlmIChub2RlVG9SZW1vdmUpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgICAgIG5vZGVUb1JlbW92ZS0+cmVtb3ZlKGVjKTsKLSAgICAgICAgQVNT
RVJUKCFlYyk7Ci0gICAgfQotCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0zMjQ4LDEwICsz
MjMxLDggQEAgdm9pZCBFZGl0b3I6OmNvbXB1dGVBbmRTZXRUeXBpbmdTdHlsZShDUwogICAgIG1f
ZnJhbWUtPnNlbGVjdGlvbigpLT5zZXRUeXBpbmdTdHlsZShtdXRhYmxlU3R5bGUucmVsZWFzZSgp
KTsKIH0KIAotUGFzc1JlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IEVkaXRvcjo6
c2VsZWN0aW9uQ29tcHV0ZWRTdHlsZShOb2RlKiYgbm9kZVRvUmVtb3ZlKSBjb25zdAorUGFzc1Jl
ZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gRWRpdG9yOjpzZWxlY3Rpb25Db21wdXRl
ZFN0eWxlKGJvb2wmIHNob3VsZFVzZUZpeGVkRm9udERlZmF1bHRTaXplKSBjb25zdAogewotICAg
IG5vZGVUb1JlbW92ZSA9IDA7Ci0KICAgICBpZiAobV9mcmFtZS0+c2VsZWN0aW9uKCktPmlzTm9u
ZSgpKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMzI3MSwzNCArMzI1MiwxOCBAQCBQYXNzUmVm
UHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gCiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgUmVmUHRyPEVsZW1lbnQ+IHN0eWxlRWxlbWVudCA9IGVsZW1lbnQ7Ci0gICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0KLSAgICBpZiAobV9mcmFtZS0+c2VsZWN0aW9uKCktPnR5cGluZ1N0eWxl
KCkpIHsKLSAgICAgICAgc3R5bGVFbGVtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y3JlYXRl
RWxlbWVudChzcGFuVGFnLCBmYWxzZSk7Ci0KLSAgICAgICAgc3R5bGVFbGVtZW50LT5zZXRBdHRy
aWJ1dGUoc3R5bGVBdHRyLCBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+dHlwaW5nU3R5bGUoKS0+Y3Nz
VGV4dCgpLCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOwotCi0gICAgICAgIHN0eWxlRWxlbWVu
dC0+YXBwZW5kQ2hpbGQobV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y3JlYXRlRWRpdGluZ1RleHROb2Rl
KCIiKSwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IGNvbXB1dGVkU3R5bGUoc3R5bGVFbGVtZW50LnJlbGVh
c2UoKSk7CisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBtdXRhYmxlU3R5
bGUgPSBzdHlsZS0+Y29weSgpOworICAgIHNob3VsZFVzZUZpeGVkRm9udERlZmF1bHRTaXplID0g
c3R5bGUtPnVzZUZpeGVkRm9udERlZmF1bHRTaXplKCk7CiAKLSAgICAgICAgaWYgKGVsZW1lbnQt
PnJlbmRlcmVyKCkgJiYgZWxlbWVudC0+cmVuZGVyZXIoKS0+Y2FuSGF2ZUNoaWxkcmVuKCkpCi0g
ICAgICAgICAgICBlbGVtZW50LT5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQsIGVjKTsKLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBOb2RlKiBwYXJlbnQgPSBlbGVtZW50LT5wYXJlbnQoKTsK
LSAgICAgICAgICAgIE5vZGUqIG5leHQgPSBlbGVtZW50LT5uZXh0U2libGluZygpOwotCi0gICAg
ICAgICAgICBpZiAobmV4dCkKLSAgICAgICAgICAgICAgICBwYXJlbnQtPmluc2VydEJlZm9yZShz
dHlsZUVsZW1lbnQsIG5leHQsIGVjKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBwYXJlbnQtPmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudCwgZWMpOwotICAgICAgICB9Ci0gICAg
ICAgIEFTU0VSVCghZWMpOworICAgIGlmICghbV9mcmFtZS0+c2VsZWN0aW9uKCktPnR5cGluZ1N0
eWxlKCkpCisgICAgICAgIHJldHVybiBtdXRhYmxlU3R5bGU7CiAKLSAgICAgICAgbm9kZVRvUmVt
b3ZlID0gc3R5bGVFbGVtZW50LmdldCgpOwotICAgIH0KKyAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24+IHR5cGluZ1N0eWxlID0gbV9mcmFtZS0+c2VsZWN0aW9uKCktPnR5cGlu
Z1N0eWxlKCktPmNvcHkoKTsKKyAgICBwcmVwYXJlRWRpdGluZ1N0eWxlVG9BcHBseUF0KHR5cGlu
Z1N0eWxlLmdldCgpLCBwb3NpdGlvbik7CisgICAgbXV0YWJsZVN0eWxlLT5tZXJnZSh0eXBpbmdT
dHlsZS5nZXQoKSk7CiAKLSAgICByZXR1cm4gY29tcHV0ZWRTdHlsZShzdHlsZUVsZW1lbnQucmVs
ZWFzZSgpKTsKKyAgICByZXR1cm4gbXV0YWJsZVN0eWxlOwogfQogCiB2b2lkIEVkaXRvcjo6dGV4
dEZpZWxkRGlkQmVnaW5FZGl0aW5nKEVsZW1lbnQqIGUpCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCShyZXZpc2lv
biA2NzY0MSkKKysrIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MzQ3LDcgKzM0Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIG1hcmtlZFRleHRNYXRjaGVzQXJlSGln
aGxpZ2h0ZWQoKSBjb25zdDsKICAgICB2b2lkIHNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxp
Z2h0ZWQoYm9vbCk7CiAKLSAgICBQYXNzUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bj4gc2VsZWN0aW9uQ29tcHV0ZWRTdHlsZShOb2RlKiYgbm9kZVRvUmVtb3ZlKSBjb25zdDsKKyAg
ICBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzZWxlY3Rpb25Db21wdXRl
ZFN0eWxlKGJvb2wmIHNob3VsZFVzZUZpeGVkRm9udERlZmF1bHRTaXplKSBjb25zdDsKIAogICAg
IHZvaWQgdGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nKEVsZW1lbnQqKTsKICAgICB2b2lkIHRleHRG
aWVsZERpZEVuZEVkaXRpbmcoRWxlbWVudCopOwpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ckNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5k
LmNwcAkocmV2aXNpb24gNjc2NDEpCisrKyBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw4ICsxMzEsOCBAQCBzdGF0aWMgYm9vbCBleGVjdXRl
QXBwbHlTdHlsZShGcmFtZSogZnJhCiBzdGF0aWMgYm9vbCBleGVjdXRlVG9nZ2xlU3R5bGVJbkxp
c3QoRnJhbWUqIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRpdEFjdGlvbiBh
Y3Rpb24sIGludCBwcm9wZXJ0eUlELCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgTm9kZSogbm9kZVRvUmVtb3ZlID0gMDsKLSAgICBSZWZQdHI8Q1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBzZWxlY3Rpb25TdHlsZSA9IGZyYW1lLT5lZGl0b3Io
KS0+c2VsZWN0aW9uQ29tcHV0ZWRTdHlsZShub2RlVG9SZW1vdmUpOworICAgIGJvb2wgc2hvdWxk
VXNlRml4ZWRGb250RGVmYXVsdFNpemU7CisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uPiBzZWxlY3Rpb25TdHlsZSA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uQ29tcHV0
ZWRTdHlsZShzaG91bGRVc2VGaXhlZEZvbnREZWZhdWx0U2l6ZSk7CiAgICAgaWYgKCFzZWxlY3Rp
b25TdHlsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xNDgsMTIgKzE0OCw2IEBAIHN0
YXRpYyBib29sIGV4ZWN1dGVUb2dnbGVTdHlsZUluTGlzdChGcmEKICAgICB9IGVsc2UgaWYgKHNl
bGVjdGVkQ1NTVmFsdWUtPmNzc1RleHQoKSA9PSAibm9uZSIpCiAgICAgICAgIG5ld1N0eWxlID0g
dmFsdWUtPmNzc1RleHQoKTsKIAotICAgIEFTU0VSVCghZWMpOwotICAgIGlmIChub2RlVG9SZW1v
dmUpIHsKLSAgICAgICAgbm9kZVRvUmVtb3ZlLT5yZW1vdmUoZWMpOwotICAgICAgICBBU1NFUlQo
IWVjKTsKLSAgICB9Ci0KICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGJlIGhhdmluZyB0byBj
b252ZXJ0IG5ldyBzdHlsZSBpbnRvIHRleHQuICBXZSBzaG91bGQgaGF2ZSBzZXRQcm9wZXJ0eUNT
U1ZhbHVlLgogICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gbmV3TXV0YWJs
ZVN0eWxlID0gQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgpOwogICAgIG5ld011
dGFibGVTdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgbmV3U3R5bGUsIGVjKTsKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDY3NzM2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDktMTcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgcXVlcnlDb21tYW5kU3RhdGUgcmV0dXJucyBmYWxzZSBmb3IgVW5kZXJsaW5lIGNvbW1hbmQg
d2hlbiBubyBzZWxlY3Rpb24gaXMgbWFkZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc1OTQKKworICAgICAgICBBZGRlZCBhIHRlc3QgdG8gZW5zdXJl
IHF1ZXJ5Q29tbWFuZFZhbHVlKCd1bmRlcmxpbmUnKSBhbmQgcXVlcnlDb21tYW5kVmFsdWUoJ3N0
cmlrZVRocm91Z2gnKQorICAgICAgICBjb3JyZWN0bHkgaW5jb3Jwb3JhdGVzIHRoZSB0eXBpbmcg
c3R5bGUuCisKKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL3F1ZXJ5LXRleHQtZGVjb3Jh
dGlvbi13aXRoLXR5cGluZy1zdHlsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVk
aXRpbmcvZXhlY0NvbW1hbmQvcXVlcnktdGV4dC1kZWNvcmF0aW9uLXdpdGgtdHlwaW5nLXN0eWxl
Lmh0bWw6IEFkZGVkLgorCiAyMDEwLTA5LTE3ICBKaWFuIExpICA8amlhbmxpQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEbWl0cnkgVGl0b3YuCkluZGV4OiBMYXlvdXRUZXN0
cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3F1ZXJ5LXRleHQtZGVjb3JhdGlvbi13aXRoLXR5cGluZy1z
dHlsZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVj
Q29tbWFuZC9xdWVyeS10ZXh0LWRlY29yYXRpb24td2l0aC10eXBpbmctc3R5bGUtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9xdWVy
eS10ZXh0LWRlY29yYXRpb24td2l0aC10eXBpbmctc3R5bGUtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDE0NiBAQAorCitIYXMgc3RyaWtlIGJlZm9yZSBhZGRpbmcgdW5kZXJs
aW5lIGluOgorfCAKKworSGFzIHN0cmlrZSBhZnRlciBhZGRpbmcgdW5kZXJsaW5lIGluOgorfCAK
KworSGFzIHN0cmlrZSBpbjoKK3wgPHU+Cit8ICAgInh4PCNzZWxlY3Rpb24tY2FyZXQ+IgorCitI
YXMgc3RyaWtlIGluOgorfCA8dT4KK3wgICAieDwjc2VsZWN0aW9uLWNhcmV0PngiCisKK0hhcyBz
dHJpa2UgYWZ0ZXIgcmVtb3ZpbmcgdW5kZXJsaW5lIGluOgorfCA8dT4KK3wgICAieDwjc2VsZWN0
aW9uLWNhcmV0PngiCisKK0hhcyBzdHJpa2UgaW46Cit8IDx1PgorfCAgICJ4IgorfCAieDwjc2Vs
ZWN0aW9uLWNhcmV0PiIKK3wgPHU+Cit8ICAgIngiCisKK0hhcyBzdHJpa2UgYmVmb3JlIHJlbW92
aW5nIHVuZGVybGluZSBpbjoKK3wgPHU+Cit8ICAgIngiCit8ICJ4IgorfCA8dT4KK3wgICAieDwj
c2VsZWN0aW9uLWNhcmV0PiIKKworSGFzIHN0cmlrZSBhZnRlciByZW1vdmluZyB1bmRlcmxpbmUg
aW46Cit8IDx1PgorfCAgICJ4IgorfCAieCIKK3wgPHU+Cit8ICAgIng8I3NlbGVjdGlvbi1jYXJl
dD4iCisKK0hhcyBzdHJpa2UgaW46Cit8IDx1PgorfCAgICJ4IgorfCAieCIKK3wgPHU+Cit8ICAg
IngiCit8ICJ4PCNzZWxlY3Rpb24tY2FyZXQ+IgorCitIYXMgc3RyaWtlIGJlZm9yZSBhZGRpbmcg
c3RyaWtlVGhyb3VnaCBpbjoKK3wgPHU+Cit8ICAgIngiCit8ICJ4IgorfCA8dT4KK3wgICAieCIK
K3wgIng8I3NlbGVjdGlvbi1jYXJldD4iCisKK0hhcyBzdHJpa2UgYWZ0ZXIgYWRkaW5nIHN0cmlr
ZVRocm91Z2ggaW46Cit8IDx1PgorfCAgICJ4IgorfCAieCIKK3wgPHU+Cit8ICAgIngiCit8ICJ4
PCNzZWxlY3Rpb24tY2FyZXQ+IgorCitIYXMgc3RyaWtlIGluOgorfCA8dT4KK3wgICAieCIKK3wg
IngiCit8IDx1PgorfCAgICJ4IgorfCAieCIKK3wgPHM+Cit8ICAgInh4PCNzZWxlY3Rpb24tY2Fy
ZXQ+IgorCitIYXMgc3RyaWtlIGluOgorfCA8dT4KK3wgICAieCIKK3wgIngiCit8IDx1PgorfCAg
ICJ4IgorfCAieCIKK3wgPHM+Cit8ICAgIng8I3NlbGVjdGlvbi1jYXJldD54IgorCitIYXMgc3Ry
aWtlIGFmdGVyIHJlbW92aW5nIHN0cmlrZVRocm91Z2ggaW46Cit8IDx1PgorfCAgICJ4IgorfCAi
eCIKK3wgPHU+Cit8ICAgIngiCit8ICJ4IgorfCA8cz4KK3wgICAieDwjc2VsZWN0aW9uLWNhcmV0
PngiCisKK0hhcyBzdHJpa2UgaW46Cit8IDx1PgorfCAgICJ4IgorfCAieCIKK3wgPHU+Cit8ICAg
IngiCit8ICJ4IgorfCA8cz4KK3wgICAieCIKK3wgIng8I3NlbGVjdGlvbi1jYXJldD4iCit8IDxz
PgorfCAgICJ4IgorCitIYXMgc3RyaWtlIGJlZm9yZSByZW1vdmluZyBzdHJpa2VUaHJvdWdoIGlu
OgorfCA8dT4KK3wgICAieCIKK3wgIngiCit8IDx1PgorfCAgICJ4IgorfCAieCIKK3wgPHM+Cit8
ICAgIngiCit8ICJ4IgorfCA8cz4KK3wgICAieDwjc2VsZWN0aW9uLWNhcmV0PiIKKworSGFzIHN0
cmlrZSBhZnRlciByZW1vdmluZyBzdHJpa2VUaHJvdWdoIGluOgorfCA8dT4KK3wgICAieCIKK3wg
IngiCit8IDx1PgorfCAgICJ4IgorfCAieCIKK3wgPHM+Cit8ICAgIngiCit8ICJ4IgorfCA8cz4K
K3wgICAieDwjc2VsZWN0aW9uLWNhcmV0PiIKKworSGFzIHN0cmlrZSBpbjoKK3wgPHU+Cit8ICAg
IngiCit8ICJ4IgorfCA8dT4KK3wgICAieCIKK3wgIngiCit8IDxzPgorfCAgICJ4IgorfCAieCIK
K3wgPHM+Cit8ICAgIngiCit8ICJ4PCNzZWxlY3Rpb24tY2FyZXQ+IgpJbmRleDogTGF5b3V0VGVz
dHMvZWRpdGluZy9leGVjQ29tbWFuZC9xdWVyeS10ZXh0LWRlY29yYXRpb24td2l0aC10eXBpbmct
c3R5bGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5k
L3F1ZXJ5LXRleHQtZGVjb3JhdGlvbi13aXRoLXR5cGluZy1zdHlsZS5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9xdWVyeS10ZXh0LWRlY29yYXRp
b24td2l0aC10eXBpbmctc3R5bGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAor
PGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZHVtcC1hcy1tYXJr
dXAuanMiPjwvc2NyaXB0PgorPGRpdiBpZD0idGVzdCIgY29udGVudGVkaXRhYmxlPjwvZGl2Pgor
Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKK3ZhciB0ZXN0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKTsKKworZnVuY3Rpb24gcHJpbnRTdGF0ZShjb21tYW5kLCBk
ZXNjcmlwdGlvbikgeworICAgIHZhciB1bmRlcmxpbmVTdGF0ZSA9IGRvY3VtZW50LnF1ZXJ5Q29t
bWFuZFN0YXRlKCd1bmRlcmxpbmUnKTsKKyAgICB2YXIgc3RyaWtlVGhyb3VnaFN0YXRlID0gZG9j
dW1lbnQucXVlcnlDb21tYW5kU3RhdGUoJ3N0cmlrZVRocm91Z2gnKTsKKyAgICB2YXIgc3RhdGUg
PSAnbm8gdGV4dCBkZWNvcmF0aW9ucyc7CisgICAgaWYgKHVuZGVybGluZVN0YXRlICYmIHN0cmlr
ZVRocm91Z2hTdGF0ZSkKKyAgICAgICAgc3RhdGUgPSAndW5kZXJsaW5lIGFuZCBzdHJpa2UnOwor
ICAgIGVsc2UgaWYgKHVuZGVybGluZVN0YXRlKQorICAgICAgICBzdGF0ZSA9ICd1bmRlcmxpbmUn
OworICAgIGVsc2UgKHN0cmlrZVRocm91Z2hTdGF0ZSkKKyAgICAgICAgc3RhdGUgPSAnc3RyaWtl
JzsKKyAgICBNYXJrdXAuZHVtcCh0ZXN0LCAnSGFzICcgKyBzdGF0ZSArIChkZXNjcmlwdGlvbiA/
ICIgIiArIGRlc2NyaXB0aW9uIDogIiIpICsgIiBpbiIpOworfQorCitmdW5jdGlvbiBydW5UZXh0
RGVjb3JhdGlvblRlc3QoY29tbWFuZCkgeworICAgIHByaW50U3RhdGUoY29tbWFuZCwgJ2JlZm9y
ZSBhZGRpbmcgJyArIGNvbW1hbmQpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKGNvbW1hbmQs
IGZhbHNlLCBudWxsKTsKKyAgICBwcmludFN0YXRlKGNvbW1hbmQsICdhZnRlciBhZGRpbmcgJyAr
IGNvbW1hbmQpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2Us
ICd4Jyk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgJ3gn
KTsKKyAgICBwcmludFN0YXRlKGNvbW1hbmQpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5t
b2RpZnkoJ21vdmUnLCAnYmFja3dhcmQnLCAnY2hhcmFjdGVyJyk7CisgICAgcHJpbnRTdGF0ZShj
b21tYW5kKTsKKworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKGNvbW1hbmQsIGZhbHNlLCBudWxs
KTsKKyAgICBwcmludFN0YXRlKGNvbW1hbmQsICdhZnRlciByZW1vdmluZyAnICsgY29tbWFuZCk7
CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgJ3gnKTsKKyAg
ICBwcmludFN0YXRlKGNvbW1hbmQpOworCisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLm1vZGlm
eSgnbW92ZScsICdmb3J3YXJkJywgJ2xpbmUnKTsKKyAgICBwcmludFN0YXRlKGNvbW1hbmQsICdi
ZWZvcmUgcmVtb3ZpbmcgJyArIGNvbW1hbmQpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKGNv
bW1hbmQsIGZhbHNlLCBudWxsKTsKKyAgICBwcmludFN0YXRlKGNvbW1hbmQsICdhZnRlciByZW1v
dmluZyAnICsgY29tbWFuZCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQi
LCBmYWxzZSwgJ3gnKTsKKyAgICBwcmludFN0YXRlKGNvbW1hbmQpOworfQorCit3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24odGVzdCwgMCk7CitydW5UZXh0RGVjb3JhdGlvblRlc3Qo
J3VuZGVybGluZScpOworcnVuVGV4dERlY29yYXRpb25UZXN0KCdzdHJpa2VUaHJvdWdoJyk7CisK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68326</attachid>
            <date>2010-09-21 19:18:40 -0700</date>
            <delta_ts>2010-09-22 10:20:01 -0700</delta_ts>
            <desc>avoids merging inheritable properties per Darin&apos;s comment</desc>
            <filename>bug-17594-20100921191839.patch</filename>
            <type>text/plain</type>
            <size>22295</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODAwNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMTAtMDktMjEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcXVl
cnlDb21tYW5kU3RhdGUgcmV0dXJucyBmYWxzZSBmb3IgVW5kZXJsaW5lIGNvbW1hbmQgd2hlbiBu
byBzZWxlY3Rpb24gaXMgbWFkZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc1OTQKKworICAgICAgICBUaGUgYnVnIHdhcyBjYXVzZWQgYnkgc2VsZWN0
aW9uQ29tcHV0ZWRTdHlsZSdzIGFkZGluZyAtd2Via2l0LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZm
ZWN0IHByb3BlcnR5CisgICAgICAgIHRvIGEgZHVtbXkgc3BhbiB1c2VkIHRvIG9idGFpbiB0aGUg
Y29tcHV0ZWQgc3R5bGUgd2hlbiB0aGVyZSBpcyBhIHR5cGluZyBzdHlsZS4KKyAgICAgICAgU2lu
Y2UgdGhpcyBwcm9wZXJ0eSBpcyBmb3IgaW50ZXJuYWwgdXNlIG9ubHksIHRoZSBDU1MgcGFyc2Vy
IGFsd2F5cyBzdHJpcHBlZCB0aGUgcHJvcGVydHkuCisgICAgICAgIEFzIGEgcmVzdWx0LCB3ZSB3
ZXJlIGFsd2F5cyBpZ25vcmluZyB0aGUgdGV4dCBkZWNvcmF0aW9ucyBzZXQgYnkgdGhlIHR5cGlu
ZyBzdHlsZS4KKworICAgICAgICBGaXhlZCB0aGUgYnVnIGJ5IG1ha2luZyBzZWxlY3Rpb25Db21w
dXRlZFN0eWxlIGRpcmVjdGx5IG1lcmdlIHRoZSBjb21wdXRlZCBzdHlsZSBvZiB0aGUgY3VycmVu
dAorICAgICAgICBjYXJldCBwb3NpdGlvbiBhbmQgdGhlIHR5cGluZyBzdHlsZS4gVGhpcyBhbHNv
IGVsaW1pbmF0ZXMgdGhlIG5lZWQgZm9yIGEgZHVtbXkgc3BhbiBlbGVtZW50LgorICAgICAgICBE
dWUgdG8gdGhlIG1lcmdlLCB0aGUgcmV0dXJuIHZhbHVlIG9mIHNlbGVjdGlvbkNvbXB1dGVkU3R5
bGUgaGFkIHRvIGJlIGNoYW5nZWQgdG8gQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24KKyAgICAg
ICAgZnJvbSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uCisKKyAgICAgICAgVGVzdDogZWRp
dGluZy9leGVjQ29tbWFuZC9xdWVyeS10ZXh0LWRlY29yYXRpb24td2l0aC10eXBpbmctc3R5bGUu
aHRtbAorCisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZUNoYW5nZTo6aW5pdCk6IENhbGxzIGdldFByb3BlcnRpZXNOb3RJbi4K
KyAgICAgICAgKFdlYkNvcmU6OmdldFByb3BlcnRpZXNOb3RJbik6IFJlbmFtZWQgZnJvbSBnZXRQ
cm9wZXJ0aWVzTm90SW5Db21wdXRlZFN0eWxlIHNpbmNlIGl0IHRha2VzCisgICAgICAgIENTU1N0
eWxlRGVjbGFyYXRpb24qIGluc3RlYWQgb2YgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uKiBm
b3IgdGhlIHNlY29uZCBhcmd1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21t
YW5kOjpyZW1vdmVOb25FZGl0aW5nUHJvcGVydGllcyk6IEV4dHJhY3RlZCBmcm9tIGVkaXRpbmdT
dHlsZUF0UG9zaXRpb24uCisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6ZWRp
dGluZ1N0eWxlQXRQb3NpdGlvbik6IENhbGxzIHJlbW92ZU5vbkVkaXRpbmdQcm9wZXJ0aWVzLgor
ICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmlTdGF0ZU9mU3R5bGUpOiBDYWxscyBn
ZXRQcm9wZXJ0aWVzTm90SW4uIFJlbmFtZWQgZnJvbSB0cmlTdGF0ZU9mU3R5bGVJbkNvbXB1dGVk
U3R5bGUKKyAgICAgICAgc2luY2UgaXQgbm8gbG9uZ2VyIHRha2VzIENTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0aW9uU3RhcnRIYXNT
dHlsZSk6IENhbGxzIHNlbGVjdGlvbkNvbXB1dGVkU3R5bGUgYW5kIHRyaVN0YXRlT2ZTdHlsZS4K
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0aW9uSGFzU3R5bGUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0aW9uU3RhcnRDU1NQcm9wZXJ0eVZhbHVlKTog
Q2FsbHMgc2VsZWN0aW9uQ29tcHV0ZWRTdHlsZS4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
c2VsZWN0aW9uQ29tcHV0ZWRTdHlsZSk6IFNlZSBhYm92ZS4KKyAgICAgICAgKiBlZGl0aW5nL0Vk
aXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlVG9nZ2xlU3R5bGVJbkxpc3QpOiBDYWxscyBzZWxlY3Rpb25Db21wdXRl
ZFN0eWxlLgorCiAyMDEwLTA5LTIxICBBbmRyZXcgV2lsc29uICA8YXR3aWxzb25AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI2Nzk4Mi4KSW5kZXg6IFdl
YkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAkocmV2aXNpb24gNjc5ODgpCisrKyBXZWJD
b3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUs
NyArMTQ1LDcgQEAgdm9pZCBTdHlsZUNoYW5nZTo6aW5pdChQYXNzUmVmUHRyPENTU1N0eQogICAg
ICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBj
b21wdXRlZFN0eWxlID0gcG9zaXRpb24uY29tcHV0ZWRTdHlsZSgpOwotICAgIFJlZlB0cjxDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gbXV0YWJsZVN0eWxlID0gZ2V0UHJvcGVydGllc05vdElu
Q29tcHV0ZWRTdHlsZShzdHlsZS5nZXQoKSwgY29tcHV0ZWRTdHlsZS5nZXQoKSk7CisgICAgUmVm
UHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBtdXRhYmxlU3R5bGUgPSBnZXRQcm9wZXJ0
aWVzTm90SW4oc3R5bGUuZ2V0KCksIGNvbXB1dGVkU3R5bGUuZ2V0KCkpOwogCiAgICAgcmVjb25j
aWxlVGV4dERlY29yYXRpb25Qcm9wZXJ0aWVzKG11dGFibGVTdHlsZS5nZXQoKSk7CiAgICAgaWYg
KCFkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPnNob3VsZFN0eWxlV2l0aENTUygpKQpAQCAt
MTU2LDcgKzE1Niw3IEBAIHZvaWQgU3R5bGVDaGFuZ2U6OmluaXQoUGFzc1JlZlB0cjxDU1NTdHkK
ICAgICAgICAgbXV0YWJsZVN0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdoaXRlU3Bh
Y2UpOwogCiAgICAgLy8gSWYgdW5pY29kZS1iaWRpIGlzIHByZXNlbnQgaW4gbXV0YWJsZVN0eWxl
IGFuZCBkaXJlY3Rpb24gaXMgbm90LCB0aGVuIGFkZCBkaXJlY3Rpb24gdG8gbXV0YWJsZVN0eWxl
LgotICAgIC8vIEZJWE1FOiBTaG91bGRuJ3QgdGhpcyBiZSBkb25lIGluIGdldFByb3BlcnRpZXNO
b3RJbkNvbXB1dGVkU3R5bGU/CisgICAgLy8gRklYTUU6IFNob3VsZG4ndCB0aGlzIGJlIGRvbmUg
aW4gZ2V0UHJvcGVydGllc05vdEluPwogICAgIGlmIChtdXRhYmxlU3R5bGUtPmdldFByb3BlcnR5
Q1NTVmFsdWUoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSkgJiYgIXN0eWxlLT5nZXRQcm9wZXJ0eUNT
U1ZhbHVlKENTU1Byb3BlcnR5RGlyZWN0aW9uKSkKICAgICAgICAgbXV0YWJsZVN0eWxlLT5zZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgc3R5bGUtPmdldFByb3BlcnR5VmFsdWUoQ1NT
UHJvcGVydHlEaXJlY3Rpb24pKTsKIApAQCAtMzg4LDIxICszODgsMjEgQEAgc3RhdGljIGJvb2wg
Zm9udFdlaWdodElzQm9sZChDU1NTdHlsZURlYwogICAgIHJldHVybiBmYWxzZTsgLy8gTWFrZSBj
b21waWxlciBoYXBweQogfQogCi1SZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGdl
dFByb3BlcnRpZXNOb3RJbkNvbXB1dGVkU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUs
IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbiogY29tcHV0ZWRTdHlsZSkKK1JlZlB0cjxDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZ2V0UHJvcGVydGllc05vdEluKENTU1N0eWxlRGVjbGFy
YXRpb24qIHN0eWxlV2l0aFJlZHVuZGFudFByb3BlcnRpZXMsIENTU1N0eWxlRGVjbGFyYXRpb24q
IGJhc2VTdHlsZSkKIHsKLSAgICBBU1NFUlQoc3R5bGUpOworICAgIEFTU0VSVChzdHlsZVdpdGhS
ZWR1bmRhbnRQcm9wZXJ0aWVzKTsKICAgICBBU1NFUlQoY29tcHV0ZWRTdHlsZSk7Ci0gICAgUmVm
UHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiByZXN1bHQgPSBzdHlsZS0+Y29weSgpOwot
ICAgIGNvbXB1dGVkU3R5bGUtPmRpZmYocmVzdWx0LmdldCgpKTsKKyAgICBSZWZQdHI8Q1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24+IHJlc3VsdCA9IHN0eWxlV2l0aFJlZHVuZGFudFByb3BlcnRp
ZXMtPmNvcHkoKTsKKyAgICBiYXNlU3R5bGUtPmRpZmYocmVzdWx0LmdldCgpKTsKIAotICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gY29tcHV0ZWRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCA9IGNvbXB1dGVk
U3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlv
bnNJbkVmZmVjdCk7Ci0gICAgZGlmZlRleHREZWNvcmF0aW9ucyhyZXN1bHQuZ2V0KCksIENTU1By
b3BlcnR5VGV4dERlY29yYXRpb24sIGNvbXB1dGVkVGV4dERlY29yYXRpb25zSW5FZmZlY3QuZ2V0
KCkpOwotICAgIGRpZmZUZXh0RGVjb3JhdGlvbnMocmVzdWx0LmdldCgpLCBDU1NQcm9wZXJ0eVdl
YmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCBjb21wdXRlZFRleHREZWNvcmF0aW9uc0luRWZm
ZWN0LmdldCgpKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IGJhc2VUZXh0RGVjb3JhdGlvbnNJbkVm
ZmVjdCA9IGJhc2VTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eVdlYmtpdFRl
eHREZWNvcmF0aW9uc0luRWZmZWN0KTsKKyAgICBkaWZmVGV4dERlY29yYXRpb25zKHJlc3VsdC5n
ZXQoKSwgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwgYmFzZVRleHREZWNvcmF0aW9uc0luRWZm
ZWN0LmdldCgpKTsKKyAgICBkaWZmVGV4dERlY29yYXRpb25zKHJlc3VsdC5nZXQoKSwgQ1NTUHJv
cGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgYmFzZVRleHREZWNvcmF0aW9uc0lu
RWZmZWN0LmdldCgpKTsKIAotICAgIGlmIChmb250V2VpZ2h0SXNCb2xkKHJlc3VsdC5nZXQoKSkg
PT0gZm9udFdlaWdodElzQm9sZChjb21wdXRlZFN0eWxlKSkKKyAgICBpZiAoZm9udFdlaWdodElz
Qm9sZChyZXN1bHQuZ2V0KCkpID09IGZvbnRXZWlnaHRJc0JvbGQoYmFzZVN0eWxlKSkKICAgICAg
ICAgcmVzdWx0LT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpOwogCi0gICAg
aWYgKGdldFJHQkFGb250Q29sb3IocmVzdWx0LmdldCgpKSA9PSBnZXRSR0JBRm9udENvbG9yKGNv
bXB1dGVkU3R5bGUpKQorICAgIGlmIChnZXRSR0JBRm9udENvbG9yKHJlc3VsdC5nZXQoKSkgPT0g
Z2V0UkdCQUZvbnRDb2xvcihiYXNlU3R5bGUpKQogICAgICAgICByZXN1bHQtPnJlbW92ZVByb3Bl
cnR5KENTU1Byb3BlcnR5Q29sb3IpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTQzOSw2ICs0
MzksMTEgQEAgc3RhdGljIGNvbnN0IGludCBlZGl0aW5nU3R5bGVQcm9wZXJ0aWVzWwogfTsKIHNp
emVfdCBudW1FZGl0aW5nU3R5bGVQcm9wZXJ0aWVzID0gc2l6ZW9mKGVkaXRpbmdTdHlsZVByb3Bl
cnRpZXMpL3NpemVvZihlZGl0aW5nU3R5bGVQcm9wZXJ0aWVzWzBdKTsKIAorUmVmUHRyPENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uPiBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlTm9uRWRpdGlu
Z1Byb3BlcnRpZXMoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpCit7CisgICAgcmV0dXJuIHN0
eWxlLT5jb3B5UHJvcGVydGllc0luU2V0KGVkaXRpbmdTdHlsZVByb3BlcnRpZXMsIG51bUVkaXRp
bmdTdHlsZVByb3BlcnRpZXMpOworfQorCiBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uPiBBcHBseVN0eWxlQ29tbWFuZDo6ZWRpdGluZ1N0eWxlQXRQb3NpdGlvbihQb3NpdGlv
biBwb3MsIFNob3VsZEluY2x1ZGVUeXBpbmdTdHlsZSBzaG91bGRJbmNsdWRlVHlwaW5nU3R5bGUp
CiB7CiAgICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gY29tcHV0ZWRTdHls
ZUF0UG9zaXRpb24gPSBwb3MuY29tcHV0ZWRTdHlsZSgpOwpAQCAtNDQ2LDcgKzQ1MSw3IEBAIFBh
c3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IEEKICAgICBpZiAoIWNvbXB1dGVk
U3R5bGVBdFBvc2l0aW9uKQogICAgICAgICBzdHlsZSA9IENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uOjpjcmVhdGUoKTsKICAgICBlbHNlCi0gICAgICAgIHN0eWxlID0gY29tcHV0ZWRTdHlsZUF0
UG9zaXRpb24tPmNvcHlQcm9wZXJ0aWVzSW5TZXQoZWRpdGluZ1N0eWxlUHJvcGVydGllcywgbnVt
RWRpdGluZ1N0eWxlUHJvcGVydGllcyk7CisgICAgICAgIHN0eWxlID0gcmVtb3ZlTm9uRWRpdGlu
Z1Byb3BlcnRpZXMoY29tcHV0ZWRTdHlsZUF0UG9zaXRpb24uZ2V0KCkpOwogCiAgICAgaWYgKHN0
eWxlICYmIHBvcy5ub2RlKCkgJiYgcG9zLm5vZGUoKS0+Y29tcHV0ZWRTdHlsZSgpKSB7CiAgICAg
ICAgIFJlbmRlclN0eWxlKiByZW5kZXJTdHlsZSA9IHBvcy5ub2RlKCktPmNvbXB1dGVkU3R5bGUo
KTsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oCShyZXZpc2lvbiA2Nzk4OCkK
KysrIFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Nyw3ICs1Nyw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQXBwbHlTdHlsZUNvbW1hbmQoZWxlbWVudCwgcmVtb3ZlT25seSwgYWN0aW9uKSk7CiAgICAg
fQotICAgIAorCisgICAgc3RhdGljIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4g
cmVtb3ZlTm9uRWRpdGluZ1Byb3BlcnRpZXMoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpOwog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBlZGl0aW5n
U3R5bGVBdFBvc2l0aW9uKFBvc2l0aW9uIHBvcywgU2hvdWxkSW5jbHVkZVR5cGluZ1N0eWxlIHNo
b3VsZEluY2x1ZGVUeXBpbmdTdHlsZSA9IElnbm9yZVR5cGluZ1N0eWxlKTsKIAogcHJpdmF0ZToK
QEAgLTEyNiw3ICsxMjcsNyBAQCBwcml2YXRlOgogCiBib29sIGlzU3R5bGVTcGFuKGNvbnN0IE5v
ZGUqKTsKIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZVN0eWxlU3BhbkVsZW1lbnQoRG9j
dW1lbnQqKTsKLVJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZ2V0UHJvcGVydGll
c05vdEluQ29tcHV0ZWRTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uKiBjb21wdXRlZFN0eWxlKTsKK1JlZlB0cjxDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbj4gZ2V0UHJvcGVydGllc05vdEluKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0
eWxlV2l0aFJlZHVuZGFudFByb3BlcnRpZXMsIENTU1N0eWxlRGVjbGFyYXRpb24qIGJhc2VTdHls
ZSk7CiAKIHZvaWQgcHJlcGFyZUVkaXRpbmdTdHlsZVRvQXBwbHlBdChDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbiosIFBvc2l0aW9uKTsKIHZvaWQgcmVtb3ZlU3R5bGVzQWRkZWRCeU5vZGUoQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qLCBOb2RlKik7CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2
aXNpb24gNjc5ODgpCisrKyBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODYyLDkgKzg2Miw5IEBAIHN0YXRpYyBjb25zdCBpbnQgdGV4dE9ubHlQcm9wZXJ0aWVz
W10gPSAKICAgICBDU1NQcm9wZXJ0eUNvbG9yLAogfTsKIAotc3RhdGljIFRyaVN0YXRlIHRyaVN0
YXRlT2ZTdHlsZUluQ29tcHV0ZWRTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiBkZXNpcmVkU3R5
bGUsIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbiogY29tcHV0ZWRTdHlsZSwgYm9vbCBpZ25v
cmVUZXh0T25seVByb3BlcnRpZXMgPSBmYWxzZSkKK3N0YXRpYyBUcmlTdGF0ZSB0cmlTdGF0ZU9m
U3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogZGVzaXJlZFN0eWxlLCBDU1NTdHlsZURlY2xhcmF0
aW9uKiBzdHlsZVRvQ29tcGFyZSwgYm9vbCBpZ25vcmVUZXh0T25seVByb3BlcnRpZXMgPSBmYWxz
ZSkKIHsKLSAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGRpZmYgPSBnZXRQ
cm9wZXJ0aWVzTm90SW5Db21wdXRlZFN0eWxlKGRlc2lyZWRTdHlsZSwgY29tcHV0ZWRTdHlsZSk7
CisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBkaWZmID0gZ2V0UHJvcGVy
dGllc05vdEluKGRlc2lyZWRTdHlsZSwgc3R5bGVUb0NvbXBhcmUpOwogCiAgICAgaWYgKGlnbm9y
ZVRleHRPbmx5UHJvcGVydGllcykKICAgICAgICAgZGlmZi0+cmVtb3ZlUHJvcGVydGllc0luU2V0
KHRleHRPbmx5UHJvcGVydGllcywgc2l6ZW9mKHRleHRPbmx5UHJvcGVydGllcykgLyBzaXplb2Yo
dGV4dE9ubHlQcm9wZXJ0aWVzWzBdKSk7CkBAIC04NzgsMTcgKzg3OCwxMSBAQCBzdGF0aWMgVHJp
U3RhdGUgdHJpU3RhdGVPZlN0eWxlSW5Db21wdXRlCiAKIGJvb2wgRWRpdG9yOjpzZWxlY3Rpb25T
dGFydEhhc1N0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdAogewotICAgIE5v
ZGUqIG5vZGVUb1JlbW92ZTsKLSAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
PiBzZWxlY3Rpb25TdHlsZSA9IHNlbGVjdGlvbkNvbXB1dGVkU3R5bGUobm9kZVRvUmVtb3ZlKTsK
KyAgICBib29sIHNob3VsZFVzZUZpeGVkRm9udERlZmF1bHRTaXplOworICAgIFJlZlB0cjxDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc2VsZWN0aW9uU3R5bGUgPSBzZWxlY3Rpb25Db21wdXRl
ZFN0eWxlKHNob3VsZFVzZUZpeGVkRm9udERlZmF1bHRTaXplKTsKICAgICBpZiAoIXNlbGVjdGlv
blN0eWxlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgVHJpU3RhdGUgc3RhdGUgPSB0cmlT
dGF0ZU9mU3R5bGVJbkNvbXB1dGVkU3R5bGUoc3R5bGUsIHNlbGVjdGlvblN0eWxlLmdldCgpKTsK
LSAgICBpZiAobm9kZVRvUmVtb3ZlKSB7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgICAgICBub2RlVG9SZW1vdmUtPnJlbW92ZShlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOwot
ICAgIH0KLSAgICByZXR1cm4gc3RhdGUgPT0gVHJ1ZVRyaVN0YXRlOworICAgIHJldHVybiB0cmlT
dGF0ZU9mU3R5bGUoc3R5bGUsIHNlbGVjdGlvblN0eWxlLmdldCgpKSA9PSBUcnVlVHJpU3RhdGU7
CiB9CiAKIFRyaVN0YXRlIEVkaXRvcjo6c2VsZWN0aW9uSGFzU3R5bGUoQ1NTU3R5bGVEZWNsYXJh
dGlvbiogc3R5bGUpIGNvbnN0CkBAIC04OTYsMjEgKzg5MCwxNiBAQCBUcmlTdGF0ZSBFZGl0b3I6
OnNlbGVjdGlvbkhhc1N0eWxlKENTU1N0CiAgICAgVHJpU3RhdGUgc3RhdGUgPSBGYWxzZVRyaVN0
YXRlOwogCiAgICAgaWYgKCFtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpKSB7Ci0gICAg
ICAgIE5vZGUqIG5vZGVUb1JlbW92ZTsKLSAgICAgICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbj4gc2VsZWN0aW9uU3R5bGUgPSBzZWxlY3Rpb25Db21wdXRlZFN0eWxlKG5vZGVU
b1JlbW92ZSk7CisgICAgICAgIGJvb2wgc2hvdWxkVXNlRml4ZWRGb250RGVmYXVsdFNpemU7Cisg
ICAgICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc2VsZWN0aW9uU3R5bGUg
PSBzZWxlY3Rpb25Db21wdXRlZFN0eWxlKHNob3VsZFVzZUZpeGVkRm9udERlZmF1bHRTaXplKTsK
ICAgICAgICAgaWYgKCFzZWxlY3Rpb25TdHlsZSkKICAgICAgICAgICAgIHJldHVybiBGYWxzZVRy
aVN0YXRlOwotICAgICAgICBzdGF0ZSA9IHRyaVN0YXRlT2ZTdHlsZUluQ29tcHV0ZWRTdHlsZShz
dHlsZSwgc2VsZWN0aW9uU3R5bGUuZ2V0KCkpOwotICAgICAgICBpZiAobm9kZVRvUmVtb3ZlKSB7
Ci0gICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgICAgIG5vZGVUb1Jl
bW92ZS0+cmVtb3ZlKGVjKTsKLSAgICAgICAgICAgIEFTU0VSVCghZWMpOwotICAgICAgICB9Cisg
ICAgICAgIHN0YXRlID0gdHJpU3RhdGVPZlN0eWxlKHN0eWxlLCBzZWxlY3Rpb25TdHlsZS5nZXQo
KSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChOb2RlKiBub2RlID0gbV9mcmFtZS0+c2Vs
ZWN0aW9uKCktPnN0YXJ0KCkubm9kZSgpOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0
Tm9kZSgpKSB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
PiBub2RlU3R5bGUgPSBjb21wdXRlZFN0eWxlKG5vZGUpOwogICAgICAgICAgICAgaWYgKG5vZGVT
dHlsZSkgewotICAgICAgICAgICAgICAgIFRyaVN0YXRlIG5vZGVTdGF0ZSA9IHRyaVN0YXRlT2ZT
dHlsZUluQ29tcHV0ZWRTdHlsZShzdHlsZSwgbm9kZVN0eWxlLmdldCgpLCAhbm9kZS0+aXNUZXh0
Tm9kZSgpKTsKKyAgICAgICAgICAgICAgICBUcmlTdGF0ZSBub2RlU3RhdGUgPSB0cmlTdGF0ZU9m
U3R5bGUoc3R5bGUsIG5vZGVTdHlsZS5nZXQoKSwgIW5vZGUtPmlzVGV4dE5vZGUoKSk7CiAgICAg
ICAgICAgICAgICAgaWYgKG5vZGUgPT0gbV9mcmFtZS0+c2VsZWN0aW9uKCktPnN0YXJ0KCkubm9k
ZSgpKQogICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IG5vZGVTdGF0ZTsKICAgICAgICAgICAg
ICAgICBlbHNlIGlmIChzdGF0ZSAhPSBub2RlU3RhdGUgJiYgbm9kZS0+aXNUZXh0Tm9kZSgpKSB7
CkBAIC05NDQsOCArOTMzLDggQEAgc3RhdGljIGJvb2wgaGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5k
Q29sbwogCiBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25TdGFydENTU1Byb3BlcnR5VmFsdWUoaW50
IHByb3BlcnR5SUQpCiB7Ci0gICAgTm9kZSogbm9kZVRvUmVtb3ZlOwotICAgIFJlZlB0cjxDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IHNlbGVjdGlvblN0eWxlID0gc2VsZWN0aW9uQ29tcHV0
ZWRTdHlsZShub2RlVG9SZW1vdmUpOworICAgIGJvb2wgc2hvdWxkVXNlRml4ZWRGb250RGVmYXVs
dFNpemUgPSBmYWxzZTsKKyAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHNl
bGVjdGlvblN0eWxlID0gc2VsZWN0aW9uQ29tcHV0ZWRTdHlsZShzaG91bGRVc2VGaXhlZEZvbnRE
ZWZhdWx0U2l6ZSk7CiAgICAgaWYgKCFzZWxlY3Rpb25TdHlsZSkKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogCkBAIC05NTgsNyArOTQ3LDcgQEAgU3RyaW5nIEVkaXRvcjo6c2VsZWN0aW9uU3Rh
cnRDU1NQcm9wZXJ0eQogICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlKG1fZnJhbWUtPnNlbGVj
dGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpKTsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgICAgIGZvciAoTm9kZSogYW5jZXN0b3IgPSByYW5nZS0+Y29tbW9uQW5jZXN0b3JD
b250YWluZXIoZWMpOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50Tm9kZSgp
KSB7Ci0gICAgICAgICAgICBzZWxlY3Rpb25TdHlsZSA9IGNvbXB1dGVkU3R5bGUoYW5jZXN0b3Ip
OworICAgICAgICAgICAgc2VsZWN0aW9uU3R5bGUgPSBjb21wdXRlZFN0eWxlKGFuY2VzdG9yKS0+
Y29weSgpOwogICAgICAgICAgICAgaWYgKCFoYXNUcmFuc3BhcmVudEJhY2tncm91bmRDb2xvcihz
ZWxlY3Rpb25TdHlsZS5nZXQoKSkpIHsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IHNlbGVjdGlv
blN0eWxlLT5nZXRQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKQEAgLTk3MCwxNiArOTU5LDEwIEBAIFN0cmluZyBFZGl0b3I6
OnNlbGVjdGlvblN0YXJ0Q1NTUHJvcGVydHkKICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiBjc3NW
YWx1ZSA9IHNlbGVjdGlvblN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9u
dFNpemUpOwogICAgICAgICBBU1NFUlQoY3NzVmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSk7CiAg
ICAgICAgIGludCBmb250UGl4ZWxTaXplID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pihjc3NWYWx1ZS5nZXQoKSktPmdldEludFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgp
OwotICAgICAgICBpbnQgc2l6ZSA9IENTU1N0eWxlU2VsZWN0b3I6OmxlZ2FjeUZvbnRTaXplKG1f
ZnJhbWUtPmRvY3VtZW50KCksIGZvbnRQaXhlbFNpemUsIHNlbGVjdGlvblN0eWxlLT51c2VGaXhl
ZEZvbnREZWZhdWx0U2l6ZSgpKTsKKyAgICAgICAgaW50IHNpemUgPSBDU1NTdHlsZVNlbGVjdG9y
OjpsZWdhY3lGb250U2l6ZShtX2ZyYW1lLT5kb2N1bWVudCgpLCBmb250UGl4ZWxTaXplLCBzaG91
bGRVc2VGaXhlZEZvbnREZWZhdWx0U2l6ZSk7CiAgICAgICAgIHZhbHVlID0gU3RyaW5nOjpudW1i
ZXIoc2l6ZSk7CiAgICAgfQogCi0gICAgaWYgKG5vZGVUb1JlbW92ZSkgewotICAgICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgbm9kZVRvUmVtb3ZlLT5yZW1vdmUoZWMpOwotICAg
ICAgICBBU1NFUlQoIWVjKTsKLSAgICB9Ci0KICAgICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTMy
NDYsMTAgKzMyMjksOCBAQCB2b2lkIEVkaXRvcjo6Y29tcHV0ZUFuZFNldFR5cGluZ1N0eWxlKENT
CiAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNldFR5cGluZ1N0eWxlKG11dGFibGVTdHlsZS5y
ZWxlYXNlKCkpOwogfQogCi1QYXNzUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4g
RWRpdG9yOjpzZWxlY3Rpb25Db21wdXRlZFN0eWxlKE5vZGUqJiBub2RlVG9SZW1vdmUpIGNvbnN0
CitQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBFZGl0b3I6OnNlbGVjdGlv
bkNvbXB1dGVkU3R5bGUoYm9vbCYgc2hvdWxkVXNlRml4ZWRGb250RGVmYXVsdFNpemUpIGNvbnN0
CiB7Ci0gICAgbm9kZVRvUmVtb3ZlID0gMDsKLQogICAgIGlmIChtX2ZyYW1lLT5zZWxlY3Rpb24o
KS0+aXNOb25lKCkpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0zMjY5LDM0ICszMjUwLDE5IEBA
IFBhc3NSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiAKICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICBSZWZQdHI8RWxlbWVudD4gc3R5bGVFbGVtZW50ID0gZWxlbWVudDsKLSAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLQotICAgIGlmIChtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+dHlw
aW5nU3R5bGUoKSkgewotICAgICAgICBzdHlsZUVsZW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgp
LT5jcmVhdGVFbGVtZW50KHNwYW5UYWcsIGZhbHNlKTsKLQotICAgICAgICBzdHlsZUVsZW1lbnQt
PnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsIG1fZnJhbWUtPnNlbGVjdGlvbigpLT50eXBpbmdTdHls
ZSgpLT5jc3NUZXh0KCksIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7Ci0KLSAgICAgICAgc3R5
bGVFbGVtZW50LT5hcHBlbmRDaGlsZChtX2ZyYW1lLT5kb2N1bWVudCgpLT5jcmVhdGVFZGl0aW5n
VGV4dE5vZGUoIiIpLCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOworICAgIFJlZlB0cjxDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gY29tcHV0ZWRTdHlsZShzdHlsZUVsZW1l
bnQucmVsZWFzZSgpKTsKKyAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IG11
dGFibGVTdHlsZSA9IHN0eWxlLT5jb3B5KCk7CisgICAgc2hvdWxkVXNlRml4ZWRGb250RGVmYXVs
dFNpemUgPSBzdHlsZS0+dXNlRml4ZWRGb250RGVmYXVsdFNpemUoKTsKIAotICAgICAgICBpZiAo
ZWxlbWVudC0+cmVuZGVyZXIoKSAmJiBlbGVtZW50LT5yZW5kZXJlcigpLT5jYW5IYXZlQ2hpbGRy
ZW4oKSkKLSAgICAgICAgICAgIGVsZW1lbnQtPmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudCwgZWMp
OwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIE5vZGUqIHBhcmVudCA9IGVsZW1lbnQtPnBh
cmVudCgpOwotICAgICAgICAgICAgTm9kZSogbmV4dCA9IGVsZW1lbnQtPm5leHRTaWJsaW5nKCk7
Ci0KLSAgICAgICAgICAgIGlmIChuZXh0KQotICAgICAgICAgICAgICAgIHBhcmVudC0+aW5zZXJ0
QmVmb3JlKHN0eWxlRWxlbWVudCwgbmV4dCwgZWMpOwotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIHBhcmVudC0+YXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50LCBlYyk7Ci0gICAgICAg
IH0KLSAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgaWYgKCFtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+
dHlwaW5nU3R5bGUoKSkKKyAgICAgICAgcmV0dXJuIG11dGFibGVTdHlsZTsKIAotICAgICAgICBu
b2RlVG9SZW1vdmUgPSBzdHlsZUVsZW1lbnQuZ2V0KCk7Ci0gICAgfQorICAgIFJlZlB0cjxDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gdHlwaW5nU3R5bGUgPSBtX2ZyYW1lLT5zZWxlY3Rpb24o
KS0+dHlwaW5nU3R5bGUoKS0+Y29weSgpOworICAgIEFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVO
b25FZGl0aW5nUHJvcGVydGllcyh0eXBpbmdTdHlsZS5nZXQoKSk7CisgICAgcHJlcGFyZUVkaXRp
bmdTdHlsZVRvQXBwbHlBdCh0eXBpbmdTdHlsZS5nZXQoKSwgcG9zaXRpb24pOworICAgIG11dGFi
bGVTdHlsZS0+bWVyZ2UodHlwaW5nU3R5bGUuZ2V0KCkpOwogCi0gICAgcmV0dXJuIGNvbXB1dGVk
U3R5bGUoc3R5bGVFbGVtZW50LnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIG11dGFibGVTdHlsZTsK
IH0KIAogdm9pZCBFZGl0b3I6OnRleHRGaWVsZERpZEJlZ2luRWRpdGluZyhFbGVtZW50KiBlKQpJ
bmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaAkocmV2aXNpb24gNjc5ODgpCisrKyBXZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0Nyw3ICszNDcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBt
YXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRNYXJr
ZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKGJvb2wpOwogCi0gICAgUGFzc1JlZlB0cjxDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IHNlbGVjdGlvbkNvbXB1dGVkU3R5bGUoTm9kZSomIG5v
ZGVUb1JlbW92ZSkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbj4gc2VsZWN0aW9uQ29tcHV0ZWRTdHlsZShib29sJiBzaG91bGRVc2VGaXhlZEZvbnREZWZh
dWx0U2l6ZSkgY29uc3Q7CiAKICAgICB2b2lkIHRleHRGaWVsZERpZEJlZ2luRWRpdGluZyhFbGVt
ZW50Kik7CiAgICAgdm9pZCB0ZXh0RmllbGREaWRFbmRFZGl0aW5nKEVsZW1lbnQqKTsKSW5kZXg6
IFdlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAJKHJldmlzaW9uIDY3OTg4KQorKysgV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsOCArMTMxLDgg
QEAgc3RhdGljIGJvb2wgZXhlY3V0ZUFwcGx5U3R5bGUoRnJhbWUqIGZyYQogc3RhdGljIGJvb2wg
ZXhlY3V0ZVRvZ2dsZVN0eWxlSW5MaXN0KEZyYW1lKiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSBzb3VyY2UsIEVkaXRBY3Rpb24gYWN0aW9uLCBpbnQgcHJvcGVydHlJRCwgQ1NTVmFsdWUqIHZh
bHVlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIE5vZGUqIG5vZGVUb1JlbW92
ZSA9IDA7Ci0gICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gc2VsZWN0aW9u
U3R5bGUgPSBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvbkNvbXB1dGVkU3R5bGUobm9kZVRvUmVt
b3ZlKTsKKyAgICBib29sIHNob3VsZFVzZUZpeGVkRm9udERlZmF1bHRTaXplOworICAgIFJlZlB0
cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc2VsZWN0aW9uU3R5bGUgPSBmcmFtZS0+ZWRp
dG9yKCktPnNlbGVjdGlvbkNvbXB1dGVkU3R5bGUoc2hvdWxkVXNlRml4ZWRGb250RGVmYXVsdFNp
emUpOwogICAgIGlmICghc2VsZWN0aW9uU3R5bGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApA
QCAtMTQ4LDEyICsxNDgsNiBAQCBzdGF0aWMgYm9vbCBleGVjdXRlVG9nZ2xlU3R5bGVJbkxpc3Qo
RnJhCiAgICAgfSBlbHNlIGlmIChzZWxlY3RlZENTU1ZhbHVlLT5jc3NUZXh0KCkgPT0gIm5vbmUi
KQogICAgICAgICBuZXdTdHlsZSA9IHZhbHVlLT5jc3NUZXh0KCk7CiAKLSAgICBBU1NFUlQoIWVj
KTsKLSAgICBpZiAobm9kZVRvUmVtb3ZlKSB7Ci0gICAgICAgIG5vZGVUb1JlbW92ZS0+cmVtb3Zl
KGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7Ci0gICAgfQotCiAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZG4ndCBiZSBoYXZpbmcgdG8gY29udmVydCBuZXcgc3R5bGUgaW50byB0ZXh0LiAgV2Ugc2hv
dWxkIGhhdmUgc2V0UHJvcGVydHlDU1NWYWx1ZS4KICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24+IG5ld011dGFibGVTdHlsZSA9IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
OjpjcmVhdGUoKTsKICAgICBuZXdNdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5SUQs
IG5ld1N0eWxlLCBlYyk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2ODAwNykKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTA5LTIxICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIHF1ZXJ5Q29tbWFuZFN0YXRlIHJldHVybnMgZmFsc2Ug
Zm9yIFVuZGVybGluZSBjb21tYW5kIHdoZW4gbm8gc2VsZWN0aW9uIGlzIG1hZGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTk0CisKKyAgICAgICAg
QWRkZWQgYSB0ZXN0IHRvIGVuc3VyZSBxdWVyeUNvbW1hbmRWYWx1ZSgndW5kZXJsaW5lJykgYW5k
IHF1ZXJ5Q29tbWFuZFZhbHVlKCdzdHJpa2VUaHJvdWdoJykKKyAgICAgICAgY29ycmVjdGx5IGlu
Y29ycG9yYXRlcyB0aGUgdHlwaW5nIHN0eWxlLgorCisgICAgICAgICogZWRpdGluZy9leGVjQ29t
bWFuZC9xdWVyeS10ZXh0LWRlY29yYXRpb24td2l0aC10eXBpbmctc3R5bGUtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL3F1ZXJ5LXRleHQtZGVjb3Jh
dGlvbi13aXRoLXR5cGluZy1zdHlsZS5odG1sOiBBZGRlZC4KKwogMjAxMC0wOS0yMSAgQW5kcmV3
IFdpbHNvbiAgPGF0d2lsc29uQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByNjc5ODIuCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5k
L3F1ZXJ5LXRleHQtZGVjb3JhdGlvbi13aXRoLXR5cGluZy1zdHlsZS1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9xdWVyeS10ZXh0LWRl
Y29yYXRpb24td2l0aC10eXBpbmctc3R5bGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9xdWVyeS10ZXh0LWRlY29yYXRpb24td2l0
aC10eXBpbmctc3R5bGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0NiBA
QAorCitIYXMgc3RyaWtlIGJlZm9yZSBhZGRpbmcgdW5kZXJsaW5lIGluOgorfCAKKworSGFzIHN0
cmlrZSBhZnRlciBhZGRpbmcgdW5kZXJsaW5lIGluOgorfCAKKworSGFzIHN0cmlrZSBpbjoKK3wg
PHU+Cit8ICAgInh4PCNzZWxlY3Rpb24tY2FyZXQ+IgorCitIYXMgc3RyaWtlIGluOgorfCA8dT4K
K3wgICAieDwjc2VsZWN0aW9uLWNhcmV0PngiCisKK0hhcyBzdHJpa2UgYWZ0ZXIgcmVtb3Zpbmcg
dW5kZXJsaW5lIGluOgorfCA8dT4KK3wgICAieDwjc2VsZWN0aW9uLWNhcmV0PngiCisKK0hhcyBz
dHJpa2UgaW46Cit8IDx1PgorfCAgICJ4IgorfCAieDwjc2VsZWN0aW9uLWNhcmV0PiIKK3wgPHU+
Cit8ICAgIngiCisKK0hhcyBzdHJpa2UgYmVmb3JlIHJlbW92aW5nIHVuZGVybGluZSBpbjoKK3wg
PHU+Cit8ICAgIngiCit8ICJ4IgorfCA8dT4KK3wgICAieDwjc2VsZWN0aW9uLWNhcmV0PiIKKwor
SGFzIHN0cmlrZSBhZnRlciByZW1vdmluZyB1bmRlcmxpbmUgaW46Cit8IDx1PgorfCAgICJ4Igor
fCAieCIKK3wgPHU+Cit8ICAgIng8I3NlbGVjdGlvbi1jYXJldD4iCisKK0hhcyBzdHJpa2UgaW46
Cit8IDx1PgorfCAgICJ4IgorfCAieCIKK3wgPHU+Cit8ICAgIngiCit8ICJ4PCNzZWxlY3Rpb24t
Y2FyZXQ+IgorCitIYXMgc3RyaWtlIGJlZm9yZSBhZGRpbmcgc3RyaWtlVGhyb3VnaCBpbjoKK3wg
PHU+Cit8ICAgIngiCit8ICJ4IgorfCA8dT4KK3wgICAieCIKK3wgIng8I3NlbGVjdGlvbi1jYXJl
dD4iCisKK0hhcyBzdHJpa2UgYWZ0ZXIgYWRkaW5nIHN0cmlrZVRocm91Z2ggaW46Cit8IDx1Pgor
fCAgICJ4IgorfCAieCIKK3wgPHU+Cit8ICAgIngiCit8ICJ4PCNzZWxlY3Rpb24tY2FyZXQ+Igor
CitIYXMgc3RyaWtlIGluOgorfCA8dT4KK3wgICAieCIKK3wgIngiCit8IDx1PgorfCAgICJ4Igor
fCAieCIKK3wgPHM+Cit8ICAgInh4PCNzZWxlY3Rpb24tY2FyZXQ+IgorCitIYXMgc3RyaWtlIGlu
OgorfCA8dT4KK3wgICAieCIKK3wgIngiCit8IDx1PgorfCAgICJ4IgorfCAieCIKK3wgPHM+Cit8
ICAgIng8I3NlbGVjdGlvbi1jYXJldD54IgorCitIYXMgc3RyaWtlIGFmdGVyIHJlbW92aW5nIHN0
cmlrZVRocm91Z2ggaW46Cit8IDx1PgorfCAgICJ4IgorfCAieCIKK3wgPHU+Cit8ICAgIngiCit8
ICJ4IgorfCA8cz4KK3wgICAieDwjc2VsZWN0aW9uLWNhcmV0PngiCisKK0hhcyBzdHJpa2UgaW46
Cit8IDx1PgorfCAgICJ4IgorfCAieCIKK3wgPHU+Cit8ICAgIngiCit8ICJ4IgorfCA8cz4KK3wg
ICAieCIKK3wgIng8I3NlbGVjdGlvbi1jYXJldD4iCit8IDxzPgorfCAgICJ4IgorCitIYXMgc3Ry
aWtlIGJlZm9yZSByZW1vdmluZyBzdHJpa2VUaHJvdWdoIGluOgorfCA8dT4KK3wgICAieCIKK3wg
IngiCit8IDx1PgorfCAgICJ4IgorfCAieCIKK3wgPHM+Cit8ICAgIngiCit8ICJ4IgorfCA8cz4K
K3wgICAieDwjc2VsZWN0aW9uLWNhcmV0PiIKKworSGFzIHN0cmlrZSBhZnRlciByZW1vdmluZyBz
dHJpa2VUaHJvdWdoIGluOgorfCA8dT4KK3wgICAieCIKK3wgIngiCit8IDx1PgorfCAgICJ4Igor
fCAieCIKK3wgPHM+Cit8ICAgIngiCit8ICJ4IgorfCA8cz4KK3wgICAieDwjc2VsZWN0aW9uLWNh
cmV0PiIKKworSGFzIHN0cmlrZSBpbjoKK3wgPHU+Cit8ICAgIngiCit8ICJ4IgorfCA8dT4KK3wg
ICAieCIKK3wgIngiCit8IDxzPgorfCAgICJ4IgorfCAieCIKK3wgPHM+Cit8ICAgIngiCit8ICJ4
PCNzZWxlY3Rpb24tY2FyZXQ+IgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFu
ZC9xdWVyeS10ZXh0LWRlY29yYXRpb24td2l0aC10eXBpbmctc3R5bGUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3F1ZXJ5LXRleHQtZGVjb3JhdGlv
bi13aXRoLXR5cGluZy1zdHlsZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRp
dGluZy9leGVjQ29tbWFuZC9xdWVyeS10ZXh0LWRlY29yYXRpb24td2l0aC10eXBpbmctc3R5bGUu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorPGh0bWw+Cis8Ym9keT4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMiPjwvc2NyaXB0PgorPGRp
diBpZD0idGVzdCIgY29udGVudGVkaXRhYmxlPjwvZGl2PgorCis8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+CisKK3ZhciB0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Qn
KTsKKworZnVuY3Rpb24gcHJpbnRTdGF0ZShjb21tYW5kLCBkZXNjcmlwdGlvbikgeworICAgIHZh
ciB1bmRlcmxpbmVTdGF0ZSA9IGRvY3VtZW50LnF1ZXJ5Q29tbWFuZFN0YXRlKCd1bmRlcmxpbmUn
KTsKKyAgICB2YXIgc3RyaWtlVGhyb3VnaFN0YXRlID0gZG9jdW1lbnQucXVlcnlDb21tYW5kU3Rh
dGUoJ3N0cmlrZVRocm91Z2gnKTsKKyAgICB2YXIgc3RhdGUgPSAnbm8gdGV4dCBkZWNvcmF0aW9u
cyc7CisgICAgaWYgKHVuZGVybGluZVN0YXRlICYmIHN0cmlrZVRocm91Z2hTdGF0ZSkKKyAgICAg
ICAgc3RhdGUgPSAndW5kZXJsaW5lIGFuZCBzdHJpa2UnOworICAgIGVsc2UgaWYgKHVuZGVybGlu
ZVN0YXRlKQorICAgICAgICBzdGF0ZSA9ICd1bmRlcmxpbmUnOworICAgIGVsc2UgKHN0cmlrZVRo
cm91Z2hTdGF0ZSkKKyAgICAgICAgc3RhdGUgPSAnc3RyaWtlJzsKKyAgICBNYXJrdXAuZHVtcCh0
ZXN0LCAnSGFzICcgKyBzdGF0ZSArIChkZXNjcmlwdGlvbiA/ICIgIiArIGRlc2NyaXB0aW9uIDog
IiIpICsgIiBpbiIpOworfQorCitmdW5jdGlvbiBydW5UZXh0RGVjb3JhdGlvblRlc3QoY29tbWFu
ZCkgeworICAgIHByaW50U3RhdGUoY29tbWFuZCwgJ2JlZm9yZSBhZGRpbmcgJyArIGNvbW1hbmQp
OworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKGNvbW1hbmQsIGZhbHNlLCBudWxsKTsKKyAgICBw
cmludFN0YXRlKGNvbW1hbmQsICdhZnRlciBhZGRpbmcgJyArIGNvbW1hbmQpOworICAgIGRvY3Vt
ZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICd4Jyk7CisgICAgZG9jdW1lbnQu
ZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgJ3gnKTsKKyAgICBwcmludFN0YXRlKGNv
bW1hbmQpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5tb2RpZnkoJ21vdmUnLCAnYmFja3dh
cmQnLCAnY2hhcmFjdGVyJyk7CisgICAgcHJpbnRTdGF0ZShjb21tYW5kKTsKKworICAgIGRvY3Vt
ZW50LmV4ZWNDb21tYW5kKGNvbW1hbmQsIGZhbHNlLCBudWxsKTsKKyAgICBwcmludFN0YXRlKGNv
bW1hbmQsICdhZnRlciByZW1vdmluZyAnICsgY29tbWFuZCk7CisgICAgZG9jdW1lbnQuZXhlY0Nv
bW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgJ3gnKTsKKyAgICBwcmludFN0YXRlKGNvbW1hbmQp
OworCisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLm1vZGlmeSgnbW92ZScsICdmb3J3YXJkJywg
J2xpbmUnKTsKKyAgICBwcmludFN0YXRlKGNvbW1hbmQsICdiZWZvcmUgcmVtb3ZpbmcgJyArIGNv
bW1hbmQpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKGNvbW1hbmQsIGZhbHNlLCBudWxsKTsK
KyAgICBwcmludFN0YXRlKGNvbW1hbmQsICdhZnRlciByZW1vdmluZyAnICsgY29tbWFuZCk7Cisg
ICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgJ3gnKTsKKyAgICBw
cmludFN0YXRlKGNvbW1hbmQpOworfQorCit3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRp
b24odGVzdCwgMCk7CitydW5UZXh0RGVjb3JhdGlvblRlc3QoJ3VuZGVybGluZScpOworcnVuVGV4
dERlY29yYXRpb25UZXN0KCdzdHJpa2VUaHJvdWdoJyk7CisKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgo=
</data>
<flag name="review"
          id="57836"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>