<?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>65356</bug_id>
          
          <creation_ts>2011-07-28 19:42:42 -0700</creation_ts>
          <short_desc>positionForPoint returns wrong VisiblePosition at bidi boundaries</short_desc>
          <delta_ts>2011-08-18 16:07:19 -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>UI Events</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>57340</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>enrica</cc>
    
    <cc>mitz</cc>
    
    <cc>playmobil</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xji</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>443779</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-28 19:42:42 -0700</bug_when>
    <thetext>Reproduction steps:
1. Paste &quot;‎לשנת12&quot; into a LTR block; e.g. http://simple-rte.rniwa.com/?editor=%3Cspan%20style%3D%22font-size%3A%205em%3Bpadding%3A%2020px%3B%22%3E%u200E%u05DC%u05E9%u05E0%u05EA12%3C/span%3E&amp;dir=ltr&amp;designmode=false&amp;script=document.getElementById%28%27editor%27%29.focus%28%29%3B
2. Click on the right of ל.
3. Observe that the caret is placed on the left of 1.

Expected result:
Caret is placed on the right of ל.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443781</commentid>
    <comment_count>1</comment_count>
      <attachid>102328</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-28 19:44:09 -0700</bug_when>
    <thetext>Created attachment 102328
test cases

Here&apos;s some test cases (offset values are obtained on ToT WebKit with my work-in-progress patch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443782</commentid>
    <comment_count>2</comment_count>
      <attachid>102329</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-28 19:44:49 -0700</bug_when>
    <thetext>Created attachment 102329
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443783</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-28 19:47:14 -0700</bug_when>
    <thetext>Attachment 102329 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/rendering/InlineTextBox.cpp...&quot; exit_code: 1

Source/WebCore/rendering/RenderText.cpp:498:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/WebCore/rendering/RenderText.cpp:526:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 2 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>443784</commentid>
    <comment_count>4</comment_count>
      <attachid>102329</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-07-28 19:53:01 -0700</bug_when>
    <thetext>Comment on attachment 102329
work in progress

Attachment 102329 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9262408</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443787</commentid>
    <comment_count>5</comment_count>
      <attachid>102329</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-28 20:18:30 -0700</bug_when>
    <thetext>Comment on attachment 102329
work in progress

Attachment 102329 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9266371</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443795</commentid>
    <comment_count>6</comment_count>
      <attachid>102329</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-28 20:32:35 -0700</bug_when>
    <thetext>Comment on attachment 102329
work in progress

Attachment 102329 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/9266377</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443801</commentid>
    <comment_count>7</comment_count>
      <attachid>102329</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-28 20:49:39 -0700</bug_when>
    <thetext>Comment on attachment 102329
work in progress

Attachment 102329 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9267354</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443806</commentid>
    <comment_count>8</comment_count>
      <attachid>102329</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-28 21:37:37 -0700</bug_when>
    <thetext>Comment on attachment 102329
work in progress

Attachment 102329 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9265372</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445070</commentid>
    <comment_count>9</comment_count>
      <attachid>102608</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-01 18:32:37 -0700</bug_when>
    <thetext>Created attachment 102608
fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445071</commentid>
    <comment_count>10</comment_count>
      <attachid>102608</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-08-01 18:41:59 -0700</bug_when>
    <thetext>Comment on attachment 102608
fixes the bug

Attachment 102608 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9289500</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445080</commentid>
    <comment_count>11</comment_count>
      <attachid>102610</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-01 18:56:42 -0700</bug_when>
    <thetext>Created attachment 102610
fixed qt build failure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445182</commentid>
    <comment_count>12</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2011-08-02 04:27:41 -0700</bug_when>
    <thetext>With the patch applied, when running the attached testcase when I click between the &quot;ת&quot; and the 2 in לשנת12 then the caret is placed to the right of the ל instead of between the ת and the 2 like I&apos;d expect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445308</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-02 09:12:34 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; With the patch applied, when running the attached testcase when I click between the &quot;ת&quot; and the 2 in לשנת12 then the caret is placed to the right of the ל instead of between the ת and the 2 like I&apos;d expect.

Right.  That&apos;s because there&apos;s no caret position between ת and 2 in WebKit.  Offsets are assigned as:
(0)(4)1(5)2D(3)C(2)B(1)A(6)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445716</commentid>
    <comment_count>14</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2011-08-02 21:53:34 -0700</bug_when>
    <thetext>In TextEdit and FF I can place the caret between the ת and the 2 .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445732</commentid>
    <comment_count>15</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-02 23:35:29 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; In TextEdit and FF I can place the caret between the ת and the 2 .

You need to set the writing direction to LTR (Format &gt; Text &gt; Writing Direction) first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451946</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-16 16:07:15 -0700</bug_when>
    <thetext>Ping reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453213</commentid>
    <comment_count>17</comment_count>
      <attachid>102610</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-08-18 11:55:30 -0700</bug_when>
    <thetext>Comment on attachment 102610
fixed qt build failure

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453227</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-18 12:04:33 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 102610 [details])
&gt; r=me

Thanks for the review!  I&apos;m very excited to land this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453466</commentid>
    <comment_count>19</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-18 16:07:19 -0700</bug_when>
    <thetext>Committed r93369: &lt;http://trac.webkit.org/changeset/93369&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>102328</attachid>
            <date>2011-07-28 19:44:09 -0700</date>
            <delta_ts>2011-07-28 19:44:09 -0700</delta_ts>
            <desc>test cases</desc>
            <filename>caret-at-bidi-boundary.html</filename>
            <type>text/html</type>
            <size>2087</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgo8c3R5bGUgdHlwZT0idGV4
dC9jc3MiPgojdGVzdHMgeyBmb250LXNpemU6IDVlbTsgcGFkZGluZzogMHB4OyBtYXJnaW46IDBw
eDsgfQpkdCB7IHdpZHRoOiAxNWV4OyBwYWRkaW5nOiAwcHggMTBweDsgbWFyZ2luOiAwcHg7IH0K
ZGQgeyBmb250LXNpemU6IDAuNmVtOyBtYXJnaW46IDBweDsgcGFkZGluZzogMHB4IDEwcHg7IH0K
PC9zdHlsZT4KPC9oZWFkPgo8Ym9keSBvbnNlbGVjdGlvbmNoYW5nZT0ibG9nZ2VyKCkiPgo8cD5U
aGlzIHRlc3QgZW5zdXJlcyBXZWJLaXQgcGxhY2VzIGNhcmV0IGF0IHByb3BlciBwbGFjZSBpbiBi
ZXR3ZWVuIGJpZGkgYm91bmRhcmllcy4KVG8gbWFudWFsbHkgdGVzdCwgY2xpY2sgb24gdGhlIGJv
dGggc2lkZXMgb2YgZWFjaCBjaGFyYWN0ZXIgZnJvbSB2aXN1YWxseSBsZWZ0IHRvIHJpZ2h0LgpU
aGUgb2Zmc2V0cyByZWNvcmRlZCBvbiB0aGUgbG9nIHNob3VsZCBtYXRjaCBvbmVzIGluIHRoZSBz
cXVhcmUgYnJhY2tldHMgYmVsb3cgZWFjaCB0ZXN0IGNhc2UuCk9mZnNldHMgYXJlIGdyb3VwZWQg
YnkgcGFyZW50aGVzaXMgd2hlbiB0aGV5IGNvcnJlc3BvbmQgdG8gdGhlIHNhbWUgdmlzdWFsIGxv
Y2F0aW9uLjwvcD4KPHA+TCgpIGFuZCBSKCkgbm90YXRpb25zIGRlc2NyaWJlIGJ5dGUtb3JkZXIg
b2YgbGV0dGVycyBiZWZvcmUgVUJBIGlzIGFwcGxpZWQuPC9wPgo8ZGwgaWQ9InRlc3RzIj4KPGR0
IGNvbnRlbnRlZGl0YWJsZT7XnNep16DXqjEyPC9kdD48ZGQ+WzQgNSA2IDMgMiAxIDZdIFIoTCgx
MikgQUJDRCk8L2RkPgo8ZHQgY29udGVudGVkaXRhYmxlPmHXp9ecMTLXmdedZDwvZHQ+PGRkPlsw
IDEgNiAzIDQgNSAyIDcgOF0gTChhIFIoQUIgTCgxMikgQ0QpIGIpPC9kZD4KPGR0IGNvbnRlbnRl
ZGl0YWJsZT48c3BhbiBkaXI9InJ0bCI+MTI8Yj7Xp9ecNDM8L2I+PC9zcGFuPmFiPC9kdD4KPGRk
Pls0IDUgNiAzIDAgMSAoMiA2KSA3IDhdIEwoUntMKDEyKSBBQiBMKDM0KX0gYWIpPC9kZD4KPGR0
IGNvbnRlbnRlZGl0YWJsZSBkaXI9InJ0bCI+PHNwYW4gZGlyPSJsdHIiPmFiY9ec16nXoDwvc3Bh
bj48L2R0Pgo8ZGQ+WzYgMSAyIDYgNSA0IDNdIFIoTHthYmMgUihDQkEpfSk8L2RkPgo8L2RsPgo8
ZGl2IGlkPSJsb2ciPjwvZGl2Pgo8c2NyaXB0PgoKdmFyIHRlc3RzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Rlc3RzJyk7CgpmdW5jdGlvbiB0ZXN0VGV4dChub2RlKSB7CiAgICB3aGlsZSAo
bm9kZSAmJiBub2RlLnBhcmVudE5vZGUgIT0gdGVzdHMpCiAgICAgICAgbm9kZSA9IG5vZGUucGFy
ZW50Tm9kZTsKICAgIGlmICghbm9kZSkKICAgICAgICByZXR1cm4gbnVsbDsKICAgIHJldHVybiBu
b2RlLnRleHRDb250ZW50Owp9CgovLyBUaGlzIGZ1bmN0aW9uIGNvbnZlcnRzIChub2RlLCBvZmZz
ZXQpIHBhaXIgdG8gYSBnbG9iYWwgb2Zmc2V0IChsaWtlIFRleHRJdGVyYXRvciBpbmRleCkuCmZ1
bmN0aW9uIGdsb2JhbE9mZnNldEZyb21Ob2RlT2Zmc2V0UGFpcihub2RlLCBvZmZzZXRJbk5vZGUp
IHsKICAgIHZhciB0ZXh0ID0gdGVzdFRleHQobm9kZSk7CiAgICBpZiAoIXRleHQpCiAgICAgICAg
cmV0dXJuIC0xOwogICAgdmFyIG9mZnNldE9mTm9kZSA9IHRleHQuaW5kZXhPZihub2RlLnRleHRD
b250ZW50KTsKICAgIGlmIChvZmZzZXRPZk5vZGUgPCAwKQogICAgICAgIHJldHVybiAtMTsKICAg
IHJldHVybiBvZmZzZXRPZk5vZGUgKyBvZmZzZXRJbk5vZGU7Cn0KCmZ1bmN0aW9uIGxvZ2dlcigp
IHsKICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAgICBsb2cuaW5u
ZXJIVE1MID0gZ2xvYmFsT2Zmc2V0RnJvbU5vZGVPZmZzZXRQYWlyKHNlbGVjdGlvbi5iYXNlTm9k
ZSwgc2VsZWN0aW9uLmJhc2VPZmZzZXQpICsgJywgJyArCiAgICAgICAgZ2xvYmFsT2Zmc2V0RnJv
bU5vZGVPZmZzZXRQYWlyKHNlbGVjdGlvbi5leHRlbnROb2RlLCBzZWxlY3Rpb24uZXh0ZW50T2Zm
c2V0KTsKfQoKPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102329</attachid>
            <date>2011-07-28 19:44:49 -0700</date>
            <delta_ts>2011-08-01 18:32:33 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>wip65356</filename>
            <type>text/plain</type>
            <size>9406</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHJldmlzaW9uIDkx
OTQxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MzAsOSArNDMwLDExIEBACiAgICAgcmV0dXJuIHM7CiB9CiAKLXN0YXRpYyBi
b29sIGxpbmVEaXJlY3Rpb25Qb2ludEZpdHNJbkJveChpbnQgcG9pbnRMaW5lRGlyZWN0aW9uLCBJ
bmxpbmVUZXh0Qm94KiBib3gsIGludCBvZmZzZXQsIEVBZmZpbml0eSYgYWZmaW5pdHkpCitlbnVt
IFNob3VsZEFmZmluaXR5QmVEb3duc3RyZWFtIHsgQWx3YXlzRG93bnN0cmVhbSwgQWx3YXlzVXBz
dHJlYW0sIFVwc3RyZWFtSWZQb3NpdGlvbklzTm90QXRTdGFydCB9OworCitzdGF0aWMgYm9vbCBs
aW5lRGlyZWN0aW9uUG9pbnRGaXRzSW5Cb3goaW50IHBvaW50TGluZURpcmVjdGlvbiwgSW5saW5l
VGV4dEJveCogYm94LCBTaG91bGRBZmZpbml0eUJlRG93bnN0cmVhbSYgc2hvdWxkQWZmaW5pdHlC
ZURvd25zdHJlYW0pCiB7Ci0gICAgYWZmaW5pdHkgPSBET1dOU1RSRUFNOworICAgIHNob3VsZEFm
ZmluaXR5QmVEb3duc3RyZWFtID0gQWx3YXlzRG93bnN0cmVhbTsKIAogICAgIC8vIHRoZSB4IGNv
b3JkaW5hdGUgaXMgZXF1YWwgdG8gdGhlIGxlZnQgZWRnZSBvZiB0aGlzIGJveAogICAgIC8vIHRo
ZSBhZmZpbml0eSBtdXN0IGJlIGRvd25zdHJlYW0gc28gdGhlIHBvc2l0aW9uIGRvZXNuJ3QganVt
cCBiYWNrIHRvIHRoZSBwcmV2aW91cyBsaW5lCkBAIC00NDIsNyArNDQ0LDcgQEAKICAgICAvLyBh
bmQgdGhlIHggY29vcmRpbmF0ZSBpcyB0byB0aGUgbGVmdCBvZiB0aGUgcmlnaHQgZWRnZSBvZiB0
aGlzIGJveAogICAgIC8vIGNoZWNrIHRvIHNlZSBpZiBwb3NpdGlvbiBnb2VzIGluIHRoaXMgYm94
CiAgICAgaWYgKHBvaW50TGluZURpcmVjdGlvbiA8IGJveC0+bG9naWNhbFJpZ2h0KCkpIHsKLSAg
ICAgICAgYWZmaW5pdHkgPSBvZmZzZXQgPiAwID8gVlBfVVBTVFJFQU1fSUZfUE9TU0lCTEUgOiBE
T1dOU1RSRUFNOworICAgICAgICBzaG91bGRBZmZpbml0eUJlRG93bnN0cmVhbSA9IFVwc3RyZWFt
SWZQb3NpdGlvbklzTm90QXRTdGFydDsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBA
IC00NTQsMTQgKzQ1Niw5OCBAQAogICAgIGlmICghYm94LT5uZXh0T25MaW5lKCkpIHsKICAgICAg
ICAgLy8gYm94IGlzIGxhc3Qgb24gbGluZQogICAgICAgICAvLyBhbmQgdGhlIHggY29vcmRpbmF0
ZSBpcyB0byB0aGUgcmlnaHQgb2YgdGhlIGxhc3QgdGV4dCBib3ggcmlnaHQgZWRnZQotICAgICAg
ICAvLyBnZW5lcmF0ZSBWaXNpYmxlUG9zaXRpb24sIHVzZSBVUFNUUkVBTSBhZmZpbml0eSBpZiBw
b3NzaWJsZQotICAgICAgICBhZmZpbml0eSA9IG9mZnNldCA+IDAgPyBWUF9VUFNUUkVBTV9JRl9Q
T1NTSUJMRSA6IERPV05TVFJFQU07CisgICAgICAgIC8vIGdlbmVyYXRlIFZpc2libGVQb3NpdGlv
biwgdXNlIFVQU1RSRUFNIGFmZmluaXR5IGlmIHBvc3NpYmxlICAgICAgICAKKyAgICAgICAgc2hv
dWxkQWZmaW5pdHlCZURvd25zdHJlYW0gPSBVcHN0cmVhbUlmUG9zaXRpb25Jc05vdEF0U3RhcnQ7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKIH0KIAor
c3RhdGljIFZpc2libGVQb3NpdGlvbiBjcmVhdGVWaXNpYmxlUG9zaXRpb25Gb3JCb3goY29uc3Qg
SW5saW5lQm94KiBib3gsIGludCBvZmZzZXQsIFNob3VsZEFmZmluaXR5QmVEb3duc3RyZWFtIHNo
b3VsZEFmZmluaXR5QmVEb3duc3RyZWFtKQoreworICAgIEVBZmZpbml0eSBhZmZpbml0eTsKKyAg
ICBzd2l0Y2ggKHNob3VsZEFmZmluaXR5QmVEb3duc3RyZWFtKSB7CisgICAgY2FzZSBBbHdheXNE
b3duc3RyZWFtOgorICAgICAgICBhZmZpbml0eSA9IERPV05TVFJFQU07CisgICAgY2FzZSBBbHdh
eXNVcHN0cmVhbToKKyAgICAgICAgYWZmaW5pdHkgPSBWUF9VUFNUUkVBTV9JRl9QT1NTSUJMRTsK
KyAgICBjYXNlIFVwc3RyZWFtSWZQb3NpdGlvbklzTm90QXRTdGFydDoKKyAgICAgICAgYWZmaW5p
dHkgPSBvZmZzZXQgPiAwID8gVlBfVVBTVFJFQU1fSUZfUE9TU0lCTEUgOiBET1dOU1RSRUFNOwor
ICAgIH0KKyAgICByZXR1cm4gYm94LT5yZW5kZXJlcigpLT5jcmVhdGVWaXNpYmxlUG9zaXRpb24o
b2Zmc2V0LCBhZmZpbml0eSk7Cit9CisKK3N0YXRpYyBWaXNpYmxlUG9zaXRpb24gY3JlYXRlVmlz
aWJsZVBvc2l0aW9uQWZ0ZXJBZGp1c3RpbmdPZmZzZXRGb3JCaURpKGNvbnN0IElubGluZVRleHRC
b3gqIGJveCwgaW50IG9mZnNldCwgU2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0gc2hvdWxkQWZm
aW5pdHlCZURvd25zdHJlYW0pCit7CisgICAgQVNTRVJUKGJveCk7CisgICAgQVNTRVJUKGJveC0+
cmVuZGVyZXIoKSk7CisgICAgQVNTRVJUKG9mZnNldCA+PSAwKTsKKworICAgIGlmICgob2Zmc2V0
ICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihvZmZzZXQpIDwgYm94LT5sZW4oKSkKKyAgICAgICAg
fHwgYm94LT5yZW5kZXJlcigpLT5jb250YWluaW5nQmxvY2soKS0+c3R5bGUoKS0+ZGlyZWN0aW9u
KCkgPT0gYm94LT5kaXJlY3Rpb24oKSkKKyAgICAgICAgLy8gRklYTUU6IGxlZnQgb24gMTJDQkEK
KyAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbkZvckJveChib3gsIGJveC0+c3Rh
cnQoKSArIG9mZnNldCwgc2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0pOworCisgICAgYm9vbCBw
b3NpdGlvbklzQXRTdGFydE9mQm94ID0gIW9mZnNldDsKKyAgICBpZiAocG9zaXRpb25Jc0F0U3Rh
cnRPZkJveCA9PSBib3gtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkgeworICAgICAgICAvLyBv
ZmZzZXQgaXMgb24gdGhlIGxlZnQgZWRnZQorCisgICAgICAgIGNvbnN0IElubGluZUJveCogcHJl
dkJveCA9IGJveC0+cHJldkxlYWZDaGlsZCgpOworICAgICAgICBpZiAocHJldkJveCAmJiBwcmV2
Qm94LT5iaWRpTGV2ZWwoKSA+IGJveC0+YmlkaUxldmVsKCkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIC8vIGUuZy4gbGVmdCBvZiBCIGluIGFEQzEyQkFiCisgICAgICAgICAgICBjb25zdCBJbmxp
bmVCb3gqIGxlZnRtb3N0Qm94OworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIGxl
ZnRtb3N0Qm94ID0gcHJldkJveDsKKyAgICAgICAgICAgICAgICBwcmV2Qm94ID0gbGVmdG1vc3RC
b3gtPnByZXZMZWFmQ2hpbGQoKTsKKyAgICAgICAgICAgIH0gd2hpbGUgKHByZXZCb3ggJiYgcHJl
dkJveC0+YmlkaUxldmVsKCkgPiBib3gtPmJpZGlMZXZlbCgpKTsKKyAgICAgICAgICAgIHJldHVy
biBjcmVhdGVWaXNpYmxlUG9zaXRpb25Gb3JCb3gobGVmdG1vc3RCb3gsIGxlZnRtb3N0Qm94LT5j
YXJldFJpZ2h0bW9zdE9mZnNldCgpLCBzaG91bGRBZmZpbml0eUJlRG93bnN0cmVhbSk7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIXByZXZCb3ggfHwgcHJldkJveC0+YmlkaUxldmVsKCkgPCBi
b3gtPmJpZGlMZXZlbCgpKSB7CisgICAgICAgICAgICAvLyBlLmcuIGxlZnQgb2YgRCBpbiBhREMx
MkJBYgorICAgICAgICAgICAgY29uc3QgSW5saW5lQm94KiByaWdodG1vc3RCb3g7CisgICAgICAg
ICAgICBjb25zdCBJbmxpbmVCb3gqIG5leHRCb3ggPSBib3g7CisgICAgICAgICAgICBkbyB7Cisg
ICAgICAgICAgICAgICAgcmlnaHRtb3N0Qm94ID0gbmV4dEJveDsKKyAgICAgICAgICAgICAgICBu
ZXh0Qm94ID0gcmlnaHRtb3N0Qm94LT5uZXh0TGVhZkNoaWxkKCk7CisgICAgICAgICAgICB9IHdo
aWxlIChuZXh0Qm94ICYmIG5leHRCb3gtPmJpZGlMZXZlbCgpID49IGJveC0+YmlkaUxldmVsKCkp
OworICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbkZvckJveChyaWdodG1v
c3RCb3gsCisgICAgICAgICAgICAgICAgYm94LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBy
aWdodG1vc3RCb3gtPmNhcmV0TWF4T2Zmc2V0KCkgOiByaWdodG1vc3RCb3gtPmNhcmV0TWluT2Zm
c2V0KCksIHNob3VsZEFmZmluaXR5QmVEb3duc3RyZWFtKTsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb25Gb3JCb3goYm94LCBib3gtPmNhcmV0UmlnaHRt
b3N0T2Zmc2V0KCksIHNob3VsZEFmZmluaXR5QmVEb3duc3RyZWFtKTsKKyAgICB9CisKKyAgICAv
LyBvZmZzZXQgaXMgb24gdGhlIHJpZ2h0IGVkZ2UKKyAgICBjb25zdCBJbmxpbmVCb3gqIG5leHRC
b3ggPSBib3gtPm5leHRMZWFmQ2hpbGQoKTsKKyAgICBpZiAobmV4dEJveCAmJiBuZXh0Qm94LT5i
aWRpTGV2ZWwoKSA+IGJveC0+YmlkaUxldmVsKCkpCisgICAgeworICAgICAgICAvLyBlLmcuIHJp
Z2h0IG9mIEMgaW4gYURDMTJCQWIKKyAgICAgICAgY29uc3QgSW5saW5lQm94KiByaWdodG1vc3RC
b3g7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIHJpZ2h0bW9zdEJveCA9IG5leHRCb3g7Cisg
ICAgICAgICAgICBuZXh0Qm94ID0gcmlnaHRtb3N0Qm94LT5uZXh0TGVhZkNoaWxkKCk7CisgICAg
ICAgIH0gd2hpbGUgKG5leHRCb3ggJiYgbmV4dEJveC0+YmlkaUxldmVsKCkgPiBib3gtPmJpZGlM
ZXZlbCgpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbkZvckJveChyaWdo
dG1vc3RCb3gsIHJpZ2h0bW9zdEJveC0+Y2FyZXRMZWZ0bW9zdE9mZnNldCgpLCBzaG91bGRBZmZp
bml0eUJlRG93bnN0cmVhbSk7CisgICAgfQorCisgICAgaWYgKCFuZXh0Qm94IHx8IG5leHRCb3gt
PmJpZGlMZXZlbCgpIDwgYm94LT5iaWRpTGV2ZWwoKSkgeworICAgICAgICAvLyBlLmcuIHJpZ2h0
IG9mIEEgaW4gYURDMTJCQWIKKyAgICAgICAgY29uc3QgSW5saW5lQm94KiBsZWZ0bW9zdEJveDsK
KyAgICAgICAgY29uc3QgSW5saW5lQm94KiBwcmV2Qm94ID0gYm94OworICAgICAgICBkbyB7Cisg
ICAgICAgICAgICBsZWZ0bW9zdEJveCA9IHByZXZCb3g7CisgICAgICAgICAgICBwcmV2Qm94ID0g
bGVmdG1vc3RCb3gtPnByZXZMZWFmQ2hpbGQoKTsKKyAgICAgICAgfSB3aGlsZSAocHJldkJveCAm
JiBwcmV2Qm94LT5iaWRpTGV2ZWwoKSA+PSBib3gtPmJpZGlMZXZlbCgpKTsKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbkZvckJveChsZWZ0bW9zdEJveCwKKyAgICAgICAgICAg
IGJveC0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gbGVmdG1vc3RCb3gtPmNhcmV0TWluT2Zm
c2V0KCkgOiBsZWZ0bW9zdEJveC0+Y2FyZXRNYXhPZmZzZXQoKSwgc2hvdWxkQWZmaW5pdHlCZURv
d25zdHJlYW0pOworICAgIH0KKworICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb25Gb3JC
b3goYm94LCBib3gtPmNhcmV0TGVmdG1vc3RPZmZzZXQoKSwgc2hvdWxkQWZmaW5pdHlCZURvd25z
dHJlYW0pOworfQorCiBWaXNpYmxlUG9zaXRpb24gUmVuZGVyVGV4dDo6cG9zaXRpb25Gb3JQb2lu
dChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCiB7CiAgICAgaWYgKCFmaXJzdFRleHRCb3goKSB8
fCB0ZXh0TGVuZ3RoKCkgPT0gMCkKQEAgLTQ3OCwxMyArNTY0LDEzIEBACiAgICAgICAgIC8vIGF0
IHRoZSB5IGNvb3JkaW5hdGUgb2YgdGhlIGZpcnN0IGxpbmUgb3IgYWJvdmUKICAgICAgICAgLy8g
YW5kIHRoZSB4IGNvb3JkaW5hdGUgaXMgdG8gdGhlIGxlZnQgb2YgdGhlIGZpcnN0IHRleHQgYm94
IGxlZnQgZWRnZQogICAgICAgICBvZmZzZXQgPSBmaXJzdFRleHRCb3goKS0+b2Zmc2V0Rm9yUG9z
aXRpb24ocG9pbnRMaW5lRGlyZWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQ
b3NpdGlvbihvZmZzZXQgKyBmaXJzdFRleHRCb3goKS0+c3RhcnQoKSwgb2Zmc2V0ID4gMCA/IFZQ
X1VQU1RSRUFNX0lGX1BPU1NJQkxFIDogRE9XTlNUUkVBTSk7CisgICAgICAgIHJldHVybiBjcmVh
dGVWaXNpYmxlUG9zaXRpb25BZnRlckFkanVzdGluZ09mZnNldEZvckJpRGkoZmlyc3RUZXh0Qm94
KCksIG9mZnNldCwgVXBzdHJlYW1JZlBvc2l0aW9uSXNOb3RBdFN0YXJ0KTsKICAgICB9CiAgICAg
aWYgKGxhc3RUZXh0Qm94KCkgJiYgcG9pbnRCbG9ja0RpcmVjdGlvbiA+PSBsYXN0VGV4dEJveCgp
LT5yb290KCktPnNlbGVjdGlvblRvcCgpICYmIHBvaW50TGluZURpcmVjdGlvbiA+PSBsYXN0VGV4
dEJveCgpLT5sb2dpY2FsUmlnaHQoKSkgewogICAgICAgICAvLyBhdCB0aGUgeSBjb29yZGluYXRl
IG9mIHRoZSBsYXN0IGxpbmUgb3IgYmVsb3cKICAgICAgICAgLy8gYW5kIHRoZSB4IGNvb3JkaW5h
dGUgaXMgdG8gdGhlIHJpZ2h0IG9mIHRoZSBsYXN0IHRleHQgYm94IHJpZ2h0IGVkZ2UKICAgICAg
ICAgb2Zmc2V0ID0gbGFzdFRleHRCb3goKS0+b2Zmc2V0Rm9yUG9zaXRpb24ocG9pbnRMaW5lRGly
ZWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbihvZmZzZXQgKyBs
YXN0VGV4dEJveCgpLT5zdGFydCgpLCBWUF9VUFNUUkVBTV9JRl9QT1NTSUJMRSk7CisgICAgICAg
IHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb25BZnRlckFkanVzdGluZ09mZnNldEZvckJpRGko
bGFzdFRleHRCb3goKSwgb2Zmc2V0LCBBbHdheXNVcHN0cmVhbSk7CiAgICAgfQogCiAgICAgSW5s
aW5lVGV4dEJveCogbGFzdEJveEFib3ZlID0gMDsKQEAgLTQ5NiwxNiArNTgyLDE2IEBACiAgICAg
ICAgICAgICAgICAgYm90dG9tID0gbWluKGJvdHRvbSwgcm9vdEJveC0+bmV4dFJvb3RCb3goKS0+
bGluZVRvcCgpKTsKIAogICAgICAgICAgICAgaWYgKHBvaW50QmxvY2tEaXJlY3Rpb24gPCBib3R0
b20pIHsKLSAgICAgICAgICAgICAgICBFQWZmaW5pdHkgYWZmaW5pdHk7Ci0gICAgICAgICAgICAg
ICAgaW50IG9mZnNldCA9IGJveC0+b2Zmc2V0Rm9yUG9zaXRpb24ocG9pbnRMaW5lRGlyZWN0aW9u
KTsKLSAgICAgICAgICAgICAgICBpZiAobGluZURpcmVjdGlvblBvaW50Rml0c0luQm94KHBvaW50
TGluZURpcmVjdGlvbiwgYm94LCBvZmZzZXQsIGFmZmluaXR5KSkKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbihvZmZzZXQgKyBib3gtPnN0YXJ0KCksIGFm
ZmluaXR5KTsKKyAgICAgICAgICAgICAgICBTaG91bGRBZmZpbml0eUJlRG93bnN0cmVhbSBzaG91
bGRBZmZpbml0eUJlRG93bnN0cmVhbTsKKyAgICAgICAgICAgICAgICBvZmZzZXQgPSBib3gtPm9m
ZnNldEZvclBvc2l0aW9uKHBvaW50TGluZURpcmVjdGlvbik7CisgICAgICAgICAgICAgICAgaWYg
KGxpbmVEaXJlY3Rpb25Qb2ludEZpdHNJbkJveChwb2ludExpbmVEaXJlY3Rpb24sIGJveCwgc2hv
dWxkQWZmaW5pdHlCZURvd25zdHJlYW0pKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3Jl
YXRlVmlzaWJsZVBvc2l0aW9uQWZ0ZXJBZGp1c3RpbmdPZmZzZXRGb3JCaURpKGJveCwgb2Zmc2V0
LCBzaG91bGRBZmZpbml0eUJlRG93bnN0cmVhbSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBsYXN0Qm94QWJvdmUgPSBib3g7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gY3Jl
YXRlVmlzaWJsZVBvc2l0aW9uKGxhc3RCb3hBYm92ZSA/IGxhc3RCb3hBYm92ZS0+c3RhcnQoKSAr
IGxhc3RCb3hBYm92ZS0+bGVuKCkgOiAwLCBET1dOU1RSRUFNKTsKKyAgICByZXR1cm4gY3JlYXRl
VmlzaWJsZVBvc2l0aW9uKGxhc3RCb3hBYm92ZSA/IGxhc3RCb3hBYm92ZS0+bGVuKCkgOiAwLCBE
T1dOU1RSRUFNKTsKIH0KIAogSW50UmVjdCBSZW5kZXJUZXh0Ojpsb2NhbENhcmV0UmVjdChJbmxp
bmVCb3gqIGlubGluZUJveCwgaW50IGNhcmV0T2Zmc2V0LCBpbnQqIGV4dHJhV2lkdGhUb0VuZE9m
TGluZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJ
KHJldmlzaW9uIDkxOTQxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRC
b3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjI4LDI2ICsxMjI4LDE3IEBACiAgICAgaWYgKGlz
TGluZUJyZWFrKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaW50IGxlZnRPZmZzZXQgPSBp
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyAwIDogbV9sZW47Ci0gICAgaW50IHJpZ2h0T2Zmc2V0
ID0gaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gbV9sZW4gOiAwOwotICAgIGJvb2wgYmxvY2tJ
c0luT3Bwb3NpdGVEaXJlY3Rpb24gPSByZW5kZXJlcigpLT5jb250YWluaW5nQmxvY2soKS0+c3R5
bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpICE9IGlzTGVmdFRvUmlnaHREaXJlY3Rpb24o
KTsKLSAgICBpZiAoYmxvY2tJc0luT3Bwb3NpdGVEaXJlY3Rpb24pCi0gICAgICAgIHN3YXAobGVm
dE9mZnNldCwgcmlnaHRPZmZzZXQpOwotCiAgICAgaWYgKGxpbmVPZmZzZXQgLSBsb2dpY2FsTGVm
dCgpID4gbG9naWNhbFdpZHRoKCkpCi0gICAgICAgIHJldHVybiByaWdodE9mZnNldDsKKyAgICAg
ICAgcmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGxlbigpIDogMDsKICAgICBpZiAo
bGluZU9mZnNldCAtIGxvZ2ljYWxMZWZ0KCkgPCAwKQotICAgICAgICByZXR1cm4gbGVmdE9mZnNl
dDsKKyAgICAgICAgcmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IDAgOiBsZW4oKTsK
IAogICAgIEZvbnRDYWNoZVB1cmdlUHJldmVudGVyIGZvbnRDYWNoZVB1cmdlUHJldmVudGVyOwog
CiAgICAgUmVuZGVyVGV4dCogdGV4dCA9IHRvUmVuZGVyVGV4dChyZW5kZXJlcigpKTsKICAgICBS
ZW5kZXJTdHlsZSogc3R5bGUgPSB0ZXh0LT5zdHlsZShtX2ZpcnN0TGluZSk7CiAgICAgY29uc3Qg
Rm9udCYgZm9udCA9IHN0eWxlLT5mb250KCk7Ci0gICAgaW50IG9mZnNldCA9IGZvbnQub2Zmc2V0
Rm9yUG9zaXRpb24oY29uc3RydWN0VGV4dFJ1bihzdHlsZSwgZm9udCksIGxpbmVPZmZzZXQgLSBs
b2dpY2FsTGVmdCgpLCBpbmNsdWRlUGFydGlhbEdseXBocyk7Ci0gICAgaWYgKGJsb2NrSXNJbk9w
cG9zaXRlRGlyZWN0aW9uICYmICghb2Zmc2V0IHx8IG9mZnNldCA9PSBtX2xlbikpCi0gICAgICAg
IHJldHVybiAhb2Zmc2V0ID8gbV9sZW4gOiAwOwotICAgIHJldHVybiBvZmZzZXQ7CisgICAgcmV0
dXJuIGZvbnQub2Zmc2V0Rm9yUG9zaXRpb24oY29uc3RydWN0VGV4dFJ1bihzdHlsZSwgZm9udCks
IGxpbmVPZmZzZXQgLSBsb2dpY2FsTGVmdCgpLCBpbmNsdWRlUGFydGlhbEdseXBocyk7CiB9CiAK
IGZsb2F0IElubGluZVRleHRCb3g6OnBvc2l0aW9uRm9yT2Zmc2V0KGludCBvZmZzZXQpIGNvbnN0
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102608</attachid>
            <date>2011-08-01 18:32:37 -0700</date>
            <delta_ts>2011-08-01 18:56:38 -0700</delta_ts>
            <desc>fixes the bug</desc>
            <filename>bug-65356-20110801183236.patch</filename>
            <type>text/plain</type>
            <size>18252</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyMTU5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDgtMDEgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgcG9zaXRpb25Gb3JQb2ludCByZXR1
cm5zIHdyb25nIFZpc2libGVQb3NpdGlvbiBhdCBiaWRpIGJvdW5kYXJpZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MzU2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGJ1ZyB3YXMgY2F1c2VkIGJ5
IFJlbmRlclRleHQ6OnBvc2l0aW9uRm9yUG9pbnQncyBhc3N1bWluZyB0aGF0IHRoZSBwb3NpdGlv
biB3aWxsIGFsd2F5cyByZXNpZGUKKyAgICAgICAgaW5zaWRlIHRoZSBpbmxpbmUgYm94IHRoYXQg
Y29udGFpbnMgdGhlIHBvaW50LCB3aGljaCBpcyBub3QgdHJ1ZSBhdCB0aGUgYm91bmRhcmllcyBv
ZiBiaWRpLXJ1bnMuCisKKyAgICAgICAgRm9yIGV4YW1wbGUsIGluIGFEQzEyQkFiIHdoZXJlIEFC
MTJDRCBpcyBhIFJUTCB0ZXh0LCB0aGUgb2Zmc2V0IG9uIHRoZSByaWdodCBvZiBBIGlzIDcgZXZl
biB0aG91Z2gKKyAgICAgICAgdGhlIGlubGluZSBib3ggZm9yICJCQSIgb25seSBjb250YWlucyBv
ZmZzZXRzIDEsIDIsIGFuZCAzLiBXZSBtdXN0IHRyYXZlcnNlIHRoZSBiaWRpLXJ1biAiREMxMkJB
IgorICAgICAgICB1bnRpbCB0aGUgZW5kIHRvIG9idGFpbiB0aGUgb2Zmc2V0IDcgZnJvbSB0aGUg
aW5saW5lIGJveCBmb3IgIkRDIi4KKworICAgICAgICBGaXhlZCB0aGUgYnVnIGJ5IGludHJvZHVj
aW5nIGNyZWF0ZVZpc2libGVQb3NpdGlvbkFmdGVyQWRqdXN0aW5nT2Zmc2V0Rm9yQmlEaSB3aGlj
aCB0cmF2ZXJzZXMgcnVucworICAgICAgICBvbiB0aGUgbGVmdCBvciB0aGUgcmlnaHQgb2YgdGhl
IHBvc2l0aW9uIHRvIGNvbXB1dGUgdGhlIGFwcHJvcHJpYXRlIG9mZnNldCBmb2xsb3dpbmcgdGhl
IE5TVGV4dFZpZXcgY29udmVudGlvbi4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gZml4ZXMg
YSByZWdyZXNzaW9uIGZyb20gcjc0OTcxIHRoYXQgY2FyZXQgaXMgcGxhY2VkIGluY29ycmVjdGx5
IGJldHdlZW4gaW5saW5lIGJveGVzIG9mCisgICAgICAgIExUUiBvciBSVEwgdGV4dCBpbiBhIFJU
TCBvciBMVFIgYmxvY2sgcmVzcGVjdGl2ZWx5LgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvc2Vs
ZWN0aW9uL2NhcmV0LWF0LWJpZGktYm91bmRhcnkuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5n
L0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6b2Zm
c2V0Rm9yUG9zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmxpbmVEaXJlY3Rpb25Qb2ludEZpdHNJbkJveCk6IFRha2VzIFNob3Vs
ZEFmZmluaXR5QmVEb3duc3RyZWFtIGluc3RlYWQgb2YgRUFmaW5pdHkuCisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVWaXNpYmxlUG9zaXRpb25Gb3JCb3gpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlVmlzaWJsZVBvc2l0aW9uQWZ0ZXJBZGp1c3RpbmdPZmZzZXRGb3JCaURpKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRleHQ6OnBvc2l0aW9uRm9yUG9pbnQpOgorCiAyMDExLTA4LTAxICBC
cmFkbGV5IE5lbHNvbiAgPGJyYWRuZWxzb25AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFNoYXJk
IHdlYmNvcmVfcmVtYWluaW5nIGZvciBtc3ZzIG9mZmljaWFsIGJ1aWxkcwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAkocmV2aXNpb24gOTIxMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyMjgsMjYgKzEyMjgsMTcgQEAgaW50IElubGluZVRleHRCb3g6Om9mZnNldEZvclBv
c2l0aW9uKGZsbwogICAgIGlmIChpc0xpbmVCcmVhaygpKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIGludCBsZWZ0T2Zmc2V0ID0gaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gMCA6IG1fbGVu
OwotICAgIGludCByaWdodE9mZnNldCA9IGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IG1fbGVu
IDogMDsKLSAgICBib29sIGJsb2NrSXNJbk9wcG9zaXRlRGlyZWN0aW9uID0gcmVuZGVyZXIoKS0+
Y29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSAhPSBp
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7Ci0gICAgaWYgKGJsb2NrSXNJbk9wcG9zaXRlRGlyZWN0
aW9uKQotICAgICAgICBzd2FwKGxlZnRPZmZzZXQsIHJpZ2h0T2Zmc2V0KTsKLQogICAgIGlmIChs
aW5lT2Zmc2V0IC0gbG9naWNhbExlZnQoKSA+IGxvZ2ljYWxXaWR0aCgpKQotICAgICAgICByZXR1
cm4gcmlnaHRPZmZzZXQ7CisgICAgICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkg
PyBsZW4oKSA6IDA7CiAgICAgaWYgKGxpbmVPZmZzZXQgLSBsb2dpY2FsTGVmdCgpIDwgMCkKLSAg
ICAgICAgcmV0dXJuIGxlZnRPZmZzZXQ7CisgICAgICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkgPyAwIDogbGVuKCk7CiAKICAgICBGb250Q2FjaGVQdXJnZVByZXZlbnRlciBmb250
Q2FjaGVQdXJnZVByZXZlbnRlcjsKIAogICAgIFJlbmRlclRleHQqIHRleHQgPSB0b1JlbmRlclRl
eHQocmVuZGVyZXIoKSk7CiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gdGV4dC0+c3R5bGUobV9m
aXJzdExpbmUpOwogICAgIGNvbnN0IEZvbnQmIGZvbnQgPSBzdHlsZS0+Zm9udCgpOwotICAgIGlu
dCBvZmZzZXQgPSBmb250Lm9mZnNldEZvclBvc2l0aW9uKGNvbnN0cnVjdFRleHRSdW4oc3R5bGUs
IGZvbnQpLCBsaW5lT2Zmc2V0IC0gbG9naWNhbExlZnQoKSwgaW5jbHVkZVBhcnRpYWxHbHlwaHMp
OwotICAgIGlmIChibG9ja0lzSW5PcHBvc2l0ZURpcmVjdGlvbiAmJiAoIW9mZnNldCB8fCBvZmZz
ZXQgPT0gbV9sZW4pKQotICAgICAgICByZXR1cm4gIW9mZnNldCA/IG1fbGVuIDogMDsKLSAgICBy
ZXR1cm4gb2Zmc2V0OworICAgIHJldHVybiBmb250Lm9mZnNldEZvclBvc2l0aW9uKGNvbnN0cnVj
dFRleHRSdW4oc3R5bGUsIGZvbnQpLCBsaW5lT2Zmc2V0IC0gbG9naWNhbExlZnQoKSwgaW5jbHVk
ZVBhcnRpYWxHbHlwaHMpOwogfQogCiBmbG9hdCBJbmxpbmVUZXh0Qm94Ojpwb3NpdGlvbkZvck9m
ZnNldChpbnQgb2Zmc2V0KSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmNwcAkocmV2aXNpb24gOTIxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzMCw5ICs0MzAsMTEgQEAgSW5saW5l
VGV4dEJveCogUmVuZGVyVGV4dDo6ZmluZE5leHRJbmxpbgogICAgIHJldHVybiBzOwogfQogCi1z
dGF0aWMgYm9vbCBsaW5lRGlyZWN0aW9uUG9pbnRGaXRzSW5Cb3goaW50IHBvaW50TGluZURpcmVj
dGlvbiwgSW5saW5lVGV4dEJveCogYm94LCBpbnQgb2Zmc2V0LCBFQWZmaW5pdHkmIGFmZmluaXR5
KQorZW51bSBTaG91bGRBZmZpbml0eUJlRG93bnN0cmVhbSB7IEFsd2F5c0Rvd25zdHJlYW0sIEFs
d2F5c1Vwc3RyZWFtLCBVcHN0cmVhbUlmUG9zaXRpb25Jc05vdEF0U3RhcnQgfTsKKworc3RhdGlj
IGJvb2wgbGluZURpcmVjdGlvblBvaW50Rml0c0luQm94KGludCBwb2ludExpbmVEaXJlY3Rpb24s
IElubGluZVRleHRCb3gqIGJveCwgU2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0mIHNob3VsZEFm
ZmluaXR5QmVEb3duc3RyZWFtKQogewotICAgIGFmZmluaXR5ID0gRE9XTlNUUkVBTTsKKyAgICBz
aG91bGRBZmZpbml0eUJlRG93bnN0cmVhbSA9IEFsd2F5c0Rvd25zdHJlYW07CiAKICAgICAvLyB0
aGUgeCBjb29yZGluYXRlIGlzIGVxdWFsIHRvIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhpcyBib3gKICAg
ICAvLyB0aGUgYWZmaW5pdHkgbXVzdCBiZSBkb3duc3RyZWFtIHNvIHRoZSBwb3NpdGlvbiBkb2Vz
bid0IGp1bXAgYmFjayB0byB0aGUgcHJldmlvdXMgbGluZQpAQCAtNDQyLDcgKzQ0NCw3IEBAIHN0
YXRpYyBib29sIGxpbmVEaXJlY3Rpb25Qb2ludEZpdHNJbkJveCgKICAgICAvLyBhbmQgdGhlIHgg
Y29vcmRpbmF0ZSBpcyB0byB0aGUgbGVmdCBvZiB0aGUgcmlnaHQgZWRnZSBvZiB0aGlzIGJveAog
ICAgIC8vIGNoZWNrIHRvIHNlZSBpZiBwb3NpdGlvbiBnb2VzIGluIHRoaXMgYm94CiAgICAgaWYg
KHBvaW50TGluZURpcmVjdGlvbiA8IGJveC0+bG9naWNhbFJpZ2h0KCkpIHsKLSAgICAgICAgYWZm
aW5pdHkgPSBvZmZzZXQgPiAwID8gVlBfVVBTVFJFQU1fSUZfUE9TU0lCTEUgOiBET1dOU1RSRUFN
OworICAgICAgICBzaG91bGRBZmZpbml0eUJlRG93bnN0cmVhbSA9IFVwc3RyZWFtSWZQb3NpdGlv
bklzTm90QXRTdGFydDsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC00NTUsMTMg
KzQ1NywxMDQgQEAgc3RhdGljIGJvb2wgbGluZURpcmVjdGlvblBvaW50Rml0c0luQm94KAogICAg
ICAgICAvLyBib3ggaXMgbGFzdCBvbiBsaW5lCiAgICAgICAgIC8vIGFuZCB0aGUgeCBjb29yZGlu
YXRlIGlzIHRvIHRoZSByaWdodCBvZiB0aGUgbGFzdCB0ZXh0IGJveCByaWdodCBlZGdlCiAgICAg
ICAgIC8vIGdlbmVyYXRlIFZpc2libGVQb3NpdGlvbiwgdXNlIFVQU1RSRUFNIGFmZmluaXR5IGlm
IHBvc3NpYmxlCi0gICAgICAgIGFmZmluaXR5ID0gb2Zmc2V0ID4gMCA/IFZQX1VQU1RSRUFNX0lG
X1BPU1NJQkxFIDogRE9XTlNUUkVBTTsKKyAgICAgICAgc2hvdWxkQWZmaW5pdHlCZURvd25zdHJl
YW0gPSBVcHN0cmVhbUlmUG9zaXRpb25Jc05vdEF0U3RhcnQ7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorc3RhdGljIFZpc2libGVQb3NpdGlv
biBjcmVhdGVWaXNpYmxlUG9zaXRpb25Gb3JCb3goY29uc3QgSW5saW5lQm94KiBib3gsIGludCBv
ZmZzZXQsIFNob3VsZEFmZmluaXR5QmVEb3duc3RyZWFtIHNob3VsZEFmZmluaXR5QmVEb3duc3Ry
ZWFtKQoreworICAgIEVBZmZpbml0eSBhZmZpbml0eTsKKyAgICBzd2l0Y2ggKHNob3VsZEFmZmlu
aXR5QmVEb3duc3RyZWFtKSB7CisgICAgY2FzZSBBbHdheXNEb3duc3RyZWFtOgorICAgICAgICBh
ZmZpbml0eSA9IERPV05TVFJFQU07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWx3YXlzVXBz
dHJlYW06CisgICAgICAgIGFmZmluaXR5ID0gVlBfVVBTVFJFQU1fSUZfUE9TU0lCTEU7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgVXBzdHJlYW1JZlBvc2l0aW9uSXNOb3RBdFN0YXJ0OgorICAg
ICAgICBhZmZpbml0eSA9IG9mZnNldCA+IGJveC0+Y2FyZXRNaW5PZmZzZXQoKSA/IFZQX1VQU1RS
RUFNX0lGX1BPU1NJQkxFIDogRE9XTlNUUkVBTTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IHJldHVybiBib3gtPnJlbmRlcmVyKCktPmNyZWF0ZVZpc2libGVQb3NpdGlvbihvZmZzZXQsIGFm
ZmluaXR5KTsKK30KKworc3RhdGljIFZpc2libGVQb3NpdGlvbiBjcmVhdGVWaXNpYmxlUG9zaXRp
b25BZnRlckFkanVzdGluZ09mZnNldEZvckJpRGkoY29uc3QgSW5saW5lVGV4dEJveCogYm94LCBp
bnQgb2Zmc2V0LCBTaG91bGRBZmZpbml0eUJlRG93bnN0cmVhbSBzaG91bGRBZmZpbml0eUJlRG93
bnN0cmVhbSkKK3sKKyAgICBBU1NFUlQoYm94KTsKKyAgICBBU1NFUlQoYm94LT5yZW5kZXJlcigp
KTsKKyAgICBBU1NFUlQob2Zmc2V0ID49IDApOworCisgICAgaWYgKG9mZnNldCAmJiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4ob2Zmc2V0KSA8IGJveC0+bGVuKCkpCisgICAgICAgIHJldHVybiBjcmVh
dGVWaXNpYmxlUG9zaXRpb25Gb3JCb3goYm94LCBib3gtPnN0YXJ0KCkgKyBvZmZzZXQsIHNob3Vs
ZEFmZmluaXR5QmVEb3duc3RyZWFtKTsKKworICAgIGJvb2wgcG9zaXRpb25Jc0F0U3RhcnRPZkJv
eCA9ICFvZmZzZXQ7CisgICAgaWYgKHBvc2l0aW9uSXNBdFN0YXJ0T2ZCb3ggPT0gYm94LT5pc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCkpIHsKKyAgICAgICAgLy8gb2Zmc2V0IGlzIG9uIHRoZSBsZWZ0
IGVkZ2UKKworICAgICAgICBjb25zdCBJbmxpbmVCb3gqIHByZXZCb3ggPSBib3gtPnByZXZMZWFm
Q2hpbGQoKTsKKyAgICAgICAgaWYgKChwcmV2Qm94ICYmIHByZXZCb3gtPmJpZGlMZXZlbCgpID09
IGJveC0+YmlkaUxldmVsKCkpCisgICAgICAgICAgICB8fCBib3gtPnJlbmRlcmVyKCktPmNvbnRh
aW5pbmdCbG9jaygpLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBib3gtPmRpcmVjdGlvbigpKSAv
LyBGSVhNRTogbGVmdCBvbiAxMkNCQQorICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQ
b3NpdGlvbkZvckJveChib3gsIGJveC0+Y2FyZXRMZWZ0bW9zdE9mZnNldCgpLCBzaG91bGRBZmZp
bml0eUJlRG93bnN0cmVhbSk7CisKKyAgICAgICAgaWYgKHByZXZCb3ggJiYgcHJldkJveC0+Ymlk
aUxldmVsKCkgPiBib3gtPmJpZGlMZXZlbCgpKSB7CisgICAgICAgICAgICAvLyBlLmcuIGxlZnQg
b2YgQiBpbiBhREMxMkJBYgorICAgICAgICAgICAgY29uc3QgSW5saW5lQm94KiBsZWZ0bW9zdEJv
eDsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBsZWZ0bW9zdEJveCA9IHByZXZC
b3g7CisgICAgICAgICAgICAgICAgcHJldkJveCA9IGxlZnRtb3N0Qm94LT5wcmV2TGVhZkNoaWxk
KCk7CisgICAgICAgICAgICB9IHdoaWxlIChwcmV2Qm94ICYmIHByZXZCb3gtPmJpZGlMZXZlbCgp
ID4gYm94LT5iaWRpTGV2ZWwoKSk7CisgICAgICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBv
c2l0aW9uRm9yQm94KGxlZnRtb3N0Qm94LCBsZWZ0bW9zdEJveC0+Y2FyZXRSaWdodG1vc3RPZmZz
ZXQoKSwgc2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0pOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKCFwcmV2Qm94IHx8IHByZXZCb3gtPmJpZGlMZXZlbCgpIDwgYm94LT5iaWRpTGV2ZWwoKSkg
eworICAgICAgICAgICAgLy8gZS5nLiBsZWZ0IG9mIEQgaW4gYURDMTJCQWIKKyAgICAgICAgICAg
IGNvbnN0IElubGluZUJveCogcmlnaHRtb3N0Qm94OworICAgICAgICAgICAgY29uc3QgSW5saW5l
Qm94KiBuZXh0Qm94ID0gYm94OworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIHJp
Z2h0bW9zdEJveCA9IG5leHRCb3g7CisgICAgICAgICAgICAgICAgbmV4dEJveCA9IHJpZ2h0bW9z
dEJveC0+bmV4dExlYWZDaGlsZCgpOworICAgICAgICAgICAgfSB3aGlsZSAobmV4dEJveCAmJiBu
ZXh0Qm94LT5iaWRpTGV2ZWwoKSA+PSBib3gtPmJpZGlMZXZlbCgpKTsKKyAgICAgICAgICAgIHJl
dHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb25Gb3JCb3gocmlnaHRtb3N0Qm94LAorICAgICAgICAg
ICAgICAgIGJveC0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gcmlnaHRtb3N0Qm94LT5jYXJl
dE1heE9mZnNldCgpIDogcmlnaHRtb3N0Qm94LT5jYXJldE1pbk9mZnNldCgpLCBzaG91bGRBZmZp
bml0eUJlRG93bnN0cmVhbSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gY3JlYXRlVmlz
aWJsZVBvc2l0aW9uRm9yQm94KGJveCwgYm94LT5jYXJldFJpZ2h0bW9zdE9mZnNldCgpLCBzaG91
bGRBZmZpbml0eUJlRG93bnN0cmVhbSk7CisgICAgfQorCisgICAgY29uc3QgSW5saW5lQm94KiBu
ZXh0Qm94ID0gYm94LT5uZXh0TGVhZkNoaWxkKCk7CisgICAgaWYgKChuZXh0Qm94ICYmIG5leHRC
b3gtPmJpZGlMZXZlbCgpID09IGJveC0+YmlkaUxldmVsKCkpCisgICAgICAgIHx8IGJveC0+cmVu
ZGVyZXIoKS0+Y29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCktPmRpcmVjdGlvbigpID09IGJveC0+
ZGlyZWN0aW9uKCkpCisgICAgICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb25Gb3JCb3go
Ym94LCBib3gtPmNhcmV0UmlnaHRtb3N0T2Zmc2V0KCksIHNob3VsZEFmZmluaXR5QmVEb3duc3Ry
ZWFtKTsKKworICAgIC8vIG9mZnNldCBpcyBvbiB0aGUgcmlnaHQgZWRnZQorICAgIGlmIChuZXh0
Qm94ICYmIG5leHRCb3gtPmJpZGlMZXZlbCgpID4gYm94LT5iaWRpTGV2ZWwoKSkgeworICAgICAg
ICAvLyBlLmcuIHJpZ2h0IG9mIEMgaW4gYURDMTJCQWIKKyAgICAgICAgY29uc3QgSW5saW5lQm94
KiByaWdodG1vc3RCb3g7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIHJpZ2h0bW9zdEJveCA9
IG5leHRCb3g7CisgICAgICAgICAgICBuZXh0Qm94ID0gcmlnaHRtb3N0Qm94LT5uZXh0TGVhZkNo
aWxkKCk7CisgICAgICAgIH0gd2hpbGUgKG5leHRCb3ggJiYgbmV4dEJveC0+YmlkaUxldmVsKCkg
PiBib3gtPmJpZGlMZXZlbCgpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlv
bkZvckJveChyaWdodG1vc3RCb3gsIHJpZ2h0bW9zdEJveC0+Y2FyZXRMZWZ0bW9zdE9mZnNldCgp
LCBzaG91bGRBZmZpbml0eUJlRG93bnN0cmVhbSk7CisgICAgfQorCisgICAgaWYgKCFuZXh0Qm94
IHx8IG5leHRCb3gtPmJpZGlMZXZlbCgpIDwgYm94LT5iaWRpTGV2ZWwoKSkgeworICAgICAgICAv
LyBlLmcuIHJpZ2h0IG9mIEEgaW4gYURDMTJCQWIKKyAgICAgICAgY29uc3QgSW5saW5lQm94KiBs
ZWZ0bW9zdEJveDsKKyAgICAgICAgY29uc3QgSW5saW5lQm94KiBwcmV2Qm94ID0gYm94OworICAg
ICAgICBkbyB7CisgICAgICAgICAgICBsZWZ0bW9zdEJveCA9IHByZXZCb3g7CisgICAgICAgICAg
ICBwcmV2Qm94ID0gbGVmdG1vc3RCb3gtPnByZXZMZWFmQ2hpbGQoKTsKKyAgICAgICAgfSB3aGls
ZSAocHJldkJveCAmJiBwcmV2Qm94LT5iaWRpTGV2ZWwoKSA+PSBib3gtPmJpZGlMZXZlbCgpKTsK
KyAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbkZvckJveChsZWZ0bW9zdEJveCwK
KyAgICAgICAgICAgIGJveC0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gbGVmdG1vc3RCb3gt
PmNhcmV0TWluT2Zmc2V0KCkgOiBsZWZ0bW9zdEJveC0+Y2FyZXRNYXhPZmZzZXQoKSwgc2hvdWxk
QWZmaW5pdHlCZURvd25zdHJlYW0pOworICAgIH0KKworICAgIHJldHVybiBjcmVhdGVWaXNpYmxl
UG9zaXRpb25Gb3JCb3goYm94LCBib3gtPmNhcmV0TGVmdG1vc3RPZmZzZXQoKSwgc2hvdWxkQWZm
aW5pdHlCZURvd25zdHJlYW0pOworfQorCiBWaXNpYmxlUG9zaXRpb24gUmVuZGVyVGV4dDo6cG9z
aXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCiB7CiAgICAgaWYgKCFmaXJz
dFRleHRCb3goKSB8fCB0ZXh0TGVuZ3RoKCkgPT0gMCkKQEAgLTQ3OCwxMyArNTcxLDEzIEBAIFZp
c2libGVQb3NpdGlvbiBSZW5kZXJUZXh0Ojpwb3NpdGlvbkZvclAKICAgICAgICAgLy8gYXQgdGhl
IHkgY29vcmRpbmF0ZSBvZiB0aGUgZmlyc3QgbGluZSBvciBhYm92ZQogICAgICAgICAvLyBhbmQg
dGhlIHggY29vcmRpbmF0ZSBpcyB0byB0aGUgbGVmdCBvZiB0aGUgZmlyc3QgdGV4dCBib3ggbGVm
dCBlZGdlCiAgICAgICAgIG9mZnNldCA9IGZpcnN0VGV4dEJveCgpLT5vZmZzZXRGb3JQb3NpdGlv
bihwb2ludExpbmVEaXJlY3Rpb24pOwotICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0
aW9uKG9mZnNldCArIGZpcnN0VGV4dEJveCgpLT5zdGFydCgpLCBvZmZzZXQgPiAwID8gVlBfVVBT
VFJFQU1fSUZfUE9TU0lCTEUgOiBET1dOU1RSRUFNKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVZp
c2libGVQb3NpdGlvbkFmdGVyQWRqdXN0aW5nT2Zmc2V0Rm9yQmlEaShmaXJzdFRleHRCb3goKSwg
b2Zmc2V0LCBVcHN0cmVhbUlmUG9zaXRpb25Jc05vdEF0U3RhcnQpOwogICAgIH0KICAgICBpZiAo
bGFzdFRleHRCb3goKSAmJiBwb2ludEJsb2NrRGlyZWN0aW9uID49IGxhc3RUZXh0Qm94KCktPnJv
b3QoKS0+c2VsZWN0aW9uVG9wKCkgJiYgcG9pbnRMaW5lRGlyZWN0aW9uID49IGxhc3RUZXh0Qm94
KCktPmxvZ2ljYWxSaWdodCgpKSB7CiAgICAgICAgIC8vIGF0IHRoZSB5IGNvb3JkaW5hdGUgb2Yg
dGhlIGxhc3QgbGluZSBvciBiZWxvdwogICAgICAgICAvLyBhbmQgdGhlIHggY29vcmRpbmF0ZSBp
cyB0byB0aGUgcmlnaHQgb2YgdGhlIGxhc3QgdGV4dCBib3ggcmlnaHQgZWRnZQogICAgICAgICBv
ZmZzZXQgPSBsYXN0VGV4dEJveCgpLT5vZmZzZXRGb3JQb3NpdGlvbihwb2ludExpbmVEaXJlY3Rp
b24pOwotICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKG9mZnNldCArIGxhc3RU
ZXh0Qm94KCktPnN0YXJ0KCksIFZQX1VQU1RSRUFNX0lGX1BPU1NJQkxFKTsKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbkFmdGVyQWRqdXN0aW5nT2Zmc2V0Rm9yQmlEaShsYXN0
VGV4dEJveCgpLCBvZmZzZXQsIEFsd2F5c1Vwc3RyZWFtKTsKICAgICB9CiAKICAgICBJbmxpbmVU
ZXh0Qm94KiBsYXN0Qm94QWJvdmUgPSAwOwpAQCAtNDk2LDEwICs1ODksMTAgQEAgVmlzaWJsZVBv
c2l0aW9uIFJlbmRlclRleHQ6OnBvc2l0aW9uRm9yUAogICAgICAgICAgICAgICAgIGJvdHRvbSA9
IG1pbihib3R0b20sIHJvb3RCb3gtPm5leHRSb290Qm94KCktPmxpbmVUb3AoKSk7CiAKICAgICAg
ICAgICAgIGlmIChwb2ludEJsb2NrRGlyZWN0aW9uIDwgYm90dG9tKSB7Ci0gICAgICAgICAgICAg
ICAgRUFmZmluaXR5IGFmZmluaXR5OwotICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSBib3gt
Pm9mZnNldEZvclBvc2l0aW9uKHBvaW50TGluZURpcmVjdGlvbik7Ci0gICAgICAgICAgICAgICAg
aWYgKGxpbmVEaXJlY3Rpb25Qb2ludEZpdHNJbkJveChwb2ludExpbmVEaXJlY3Rpb24sIGJveCwg
b2Zmc2V0LCBhZmZpbml0eSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVWaXNp
YmxlUG9zaXRpb24ob2Zmc2V0ICsgYm94LT5zdGFydCgpLCBhZmZpbml0eSk7CisgICAgICAgICAg
ICAgICAgU2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0gc2hvdWxkQWZmaW5pdHlCZURvd25zdHJl
YW07CisgICAgICAgICAgICAgICAgb2Zmc2V0ID0gYm94LT5vZmZzZXRGb3JQb3NpdGlvbihwb2lu
dExpbmVEaXJlY3Rpb24pOworICAgICAgICAgICAgICAgIGlmIChsaW5lRGlyZWN0aW9uUG9pbnRG
aXRzSW5Cb3gocG9pbnRMaW5lRGlyZWN0aW9uLCBib3gsIHNob3VsZEFmZmluaXR5QmVEb3duc3Ry
ZWFtKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbkFm
dGVyQWRqdXN0aW5nT2Zmc2V0Rm9yQmlEaShib3gsIG9mZnNldCwgc2hvdWxkQWZmaW5pdHlCZURv
d25zdHJlYW0pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbGFzdEJveEFib3ZlID0gYm94
OwogICAgICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MjE1OSkKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTA4LTAxICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIHBvc2l0aW9uRm9yUG9pbnQg
cmV0dXJucyB3cm9uZyBWaXNpYmxlUG9zaXRpb24gYXQgYmlkaSBib3VuZGFyaWVzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTM1NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rp
b24vY2FyZXQtYXQtYmlkaS1ib3VuZGFyeS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LWF0LWJpZGktYm91bmRhcnkuaHRtbDogQWRkZWQuCisK
IDIwMTEtMDgtMDEgIEFsaWNlIEJveGhhbGwgIDxhYm94aGFsbEBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgV0FJLUFSSUEgdGV4dGJveCByb2xlIHNob3VsZCBiZSBBWFRleHRBcmVhIGZvciBhcmlh
LW11bHRpbGluZT10cnVlLCBBWFRleHRGaWVsZCBmb3IgYXJpYS1tdWx0aWxpbmU9ZmFsc2UKSW5k
ZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LWF0LWJpZGktYm91bmRhcnkt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L2NhcmV0LWF0LWJpZGktYm91bmRhcnktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtYXQtYmlkaS1ib3VuZGFyeS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzggQEAKK1RoaXMgdGVzdCBlbnN1cmVzIFdl
YktpdCBsZXRzIHVzZXIgcGxhY2UgY2FyZXQgYXJvdW5kIGJpZGlyZWN0aW9uYWwgdGV4dCBwcm9w
ZXJseS4KKworQ3VycmVudCBvZmZzZXQ6CithYmPXkNeR15IKKzAgMSAyIDMgNSA0IDYKK9eg16ox
MgorMiAzIDQgMSA0IChUaGVyZSBpcyBhIGJ1Zy4gQ2xpY2tpbmcgb24gdGhlIGxlZnQgb2YgMTIg
c2hvdWxkIHJlc3VsdCBpbiBvZmZzZXQgMC4pCivXnNep16DXqgorMCAzIDIgMSA0Cith16fXnDEy
15nXnWQKKzAgMSA2IDMgNCA1IDIgNyA4CisxMten15w0M2FiCis0IDUgNiAzIDAgMSAyIDcgOAor
YWJj15zXqdegCis2IDEgMiA2IDUgNCAzCitUZXN0ICJhYmPXkNeR15IiOgorUEFTUyBjYXJldCBp
cyBhdCAwCitQQVNTIGNhcmV0IGlzIGF0IDEKK1BBU1MgY2FyZXQgaXMgYXQgMgorUEFTUyBjYXJl
dCBpcyBhdCAzCitQQVNTIGNhcmV0IGlzIGF0IDUKK1BBU1MgY2FyZXQgaXMgYXQgNAorUEFTUyBj
YXJldCBpcyBhdCA2CisKK1Rlc3QgIteg16oxMiI6CitQQVNTIGNhcmV0IGlzIGF0IDIKK1BBU1Mg
Y2FyZXQgaXMgYXQgMworUEFTUyBjYXJldCBpcyBhdCA0CitQQVNTIGNhcmV0IGlzIGF0IDEKK1BB
U1MgY2FyZXQgaXMgYXQgNAorCitUZXN0ICLXnNep16DXqiI6CitQQVNTIGNhcmV0IGlzIGF0IDAK
K1BBU1MgY2FyZXQgaXMgYXQgMworUEFTUyBjYXJldCBpcyBhdCAyCitQQVNTIGNhcmV0IGlzIGF0
IDEKK1BBU1MgY2FyZXQgaXMgYXQgNAorCitUZXN0ICJh16fXnDEy15nXnWQiOgorUEFTUyBjYXJl
dCBpcyBhdCAwCitQQVNTIGNhcmV0IGlzIGF0IDEKK1BBU1MgY2FyZXQgaXMgYXQgNgorUEFTUyBj
YXJldCBpcyBhdCAzCitQQVNTIGNhcmV0IGlzIGF0IDQKK1BBU1MgY2FyZXQgaXMgYXQgNQorUEFT
UyBjYXJldCBpcyBhdCAyCitQQVNTIGNhcmV0IGlzIGF0IDcKK1BBU1MgY2FyZXQgaXMgYXQgOAor
CitUZXN0ICIxMten15w0M2FiIjoKK1BBU1MgY2FyZXQgaXMgYXQgNAorUEFTUyBjYXJldCBpcyBh
dCA1CitQQVNTIGNhcmV0IGlzIGF0IDYKK1BBU1MgY2FyZXQgaXMgYXQgMworUEFTUyBjYXJldCBp
cyBhdCAwCitQQVNTIGNhcmV0IGlzIGF0IDEKK1BBU1MgY2FyZXQgaXMgYXQgMgorRkFJTCBjYXJl
dCB3YXMgYXQgNiBidXQgZXhwZWN0ZWQgdG8gYmUgYXQgNworUEFTUyBjYXJldCBpcyBhdCA3CitQ
QVNTIGNhcmV0IGlzIGF0IDgKKworVGVzdCAiYWJj15zXqdegIjoKK1BBU1MgY2FyZXQgaXMgYXQg
NgorUEFTUyBjYXJldCBpcyBhdCAxCitQQVNTIGNhcmV0IGlzIGF0IDIKK1BBU1MgY2FyZXQgaXMg
YXQgNgorUEFTUyBjYXJldCBpcyBhdCA1CitQQVNTIGNhcmV0IGlzIGF0IDQKK1BBU1MgY2FyZXQg
aXMgYXQgMworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKworCisKKworCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1h
dC1iaWRpLWJvdW5kYXJ5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vY2FyZXQtYXQtYmlkaS1ib3VuZGFyeS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtYXQtYmlkaS1ib3VuZGFyeS5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7
IGNoYXJzZXQ9dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxlIHR5cGU9InRl
eHQvY3NzIj4KKyN0ZXN0cyB7IGZvbnQtc2l6ZTogMi41ZW07IHBhZGRpbmc6IDBweDsgbWFyZ2lu
OiAwcHg7IH0KK2R0IHsgd2lkdGg6IDE1ZXg7IHBhZGRpbmc6IDBweCAxMHB4OyBtYXJnaW46IDBw
eDsgfQorZGQgeyBmb250LXNpemU6IDAuNmVtOyBtYXJnaW46IDBweDsgcGFkZGluZzogMHB4IDEw
cHg7IH0KKy50YXJnZXQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjYmJlZWZmOyB9Cis8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3QgZW5zdXJlcyBXZWJLaXQgbGV0cyB1c2VyIHBs
YWNlIGNhcmV0IGFyb3VuZCBiaWRpcmVjdGlvbmFsIHRleHQgcHJvcGVybHkuPC9wPgorPGRpdj5D
dXJyZW50IG9mZnNldDogPHNwYW4gaWQ9ImxvZyI+PC9zcGFuPjwvZGl2PgorPGRsIGlkPSJ0ZXN0
cyI+Cis8ZHQgY29udGVudGVkaXRhYmxlPmFiY9eQ15HXkjwvZHQ+Cis8ZGQ+MCAxIDIgMyA1IDQg
NjwvZGQ+CisKKzxkdCBjb250ZW50ZWRpdGFibGU+16DXqjEyPC9kdD4KKzxkZD4yIDMgNCAxIDQg
KFRoZXJlIGlzIGEgYnVnLiBDbGlja2luZyBvbiB0aGUgbGVmdCBvZiAxMiBzaG91bGQgcmVzdWx0
IGluIG9mZnNldCAwLik8L2RkPgorCis8ZHQgY29udGVudGVkaXRhYmxlPtec16k8Yj7XoDwvYj7X
qjwvZHQ+Cis8ZGQ+MCAzIDIgMSA0PC9kZD4KKworPGR0IGNvbnRlbnRlZGl0YWJsZT5h16fXnDEy
15nXnWQ8L2R0PgorPGRkPjAgMSA2IDMgNCA1IDIgNyA4PC9kZD4KKworPGR0PjxzcGFuIGRpcj0i
cnRsIj4xMjxiPten15w0MzwvYj48L3NwYW4+YWI8L2R0PgorPGRkPjQgNSA2IDMgMCAxIDIgNyA4
PC9kZD4KKworPGR0IGRpcj0icnRsIj48c3BhbiBkaXI9Imx0ciI+YWJj15zXqdegPC9zcGFuPjwv
ZHQ+Cis8ZGQ+NiAxIDIgNiA1IDQgMzwvZGQ+CisKKzwvZGw+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxwcmU+PHNjcmlwdD4KKworLy8gVGhpcyBmdW5jdGlvbiBjb252ZXJ0cyAobm9kZSwg
b2Zmc2V0KSBwYWlyIHRvIGEgZ2xvYmFsIG9mZnNldCAobGlrZSBUZXh0SXRlcmF0b3IgaW5kZXgp
LgorZnVuY3Rpb24gZ2xvYmFsT2Zmc2V0RnJvbU5vZGVPZmZzZXRQYWlyKG5vZGUsIG9mZnNldElu
Tm9kZSkgeworICAgIHZhciB0ZXN0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0cycp
OworICAgIHZhciB0ZXN0Q29udGFpbmVyID0gbm9kZTsKKyAgICB3aGlsZSAodGVzdENvbnRhaW5l
ciAmJiB0ZXN0Q29udGFpbmVyLnBhcmVudE5vZGUgIT0gdGVzdHMpCisgICAgICAgIHRlc3RDb250
YWluZXIgPSB0ZXN0Q29udGFpbmVyLnBhcmVudE5vZGU7CisgICAgaWYgKCF0ZXN0Q29udGFpbmVy
KQorICAgICAgICByZXR1cm4gJ2Egbm9kZSBvdXRzaWRlIG9mIHRlc3RzJzsKKworICAgIHJldHVy
biB0ZXN0Q29udGFpbmVyLnRleHRDb250ZW50LmluZGV4T2Yobm9kZS50ZXh0Q29udGVudCkgKyBv
ZmZzZXRJbk5vZGU7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QodGFyZ2V0LCBleHBlY3RhdGlvbnMp
IHsKKyAgICB2YXIgeSA9IHRhcmdldC5vZmZzZXRUb3AgKyB0YXJnZXQub2Zmc2V0SGVpZ2h0IC8g
MjsKKworICAgIHZhciBwcmV2aW91c09mZnNldCA9IC0xOworICAgIHZhciBqID0gMDsKKyAgICBm
b3IgKHZhciB4ID0gNTsgeCA8PSB0YXJnZXQub2Zmc2V0V2lkdGggLSA1OyB4KyspIHsKKyAgICAg
ICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMTAwMCk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHRhcmdldC5vZmZzZXRMZWZ0ICsgeCwgeSk7CisgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlRG93bigpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisKKyAgICAgICAg
dmFyIGN1cnJlbnRPZmZzZXQgPSBnbG9iYWxPZmZzZXRGcm9tTm9kZU9mZnNldFBhaXIoZ2V0U2Vs
ZWN0aW9uKCkuYmFzZU5vZGUsIGdldFNlbGVjdGlvbigpLmJhc2VPZmZzZXQpOworICAgICAgICBp
ZiAoIWdldFNlbGVjdGlvbigpLmlzQ29sbGFwc2VkKQorICAgICAgICAgICAgdGVzdEZhaWxlZCgn
c2VsZWN0aW9uIHdhcyBub3QgY29sbGFwc2VkJyk7CisgICAgICAgIGVsc2UgaWYgKHByZXZpb3Vz
T2Zmc2V0ID09IGN1cnJlbnRPZmZzZXQpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBwcmV2aW91c09mZnNldCA9IGN1cnJlbnRPZmZzZXQ7CisKKyAg
ICAgICAgICAgIGlmIChleHBlY3RhdGlvbnNbal0gIT0gY3VycmVudE9mZnNldCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCdjYXJldCB3YXMgYXQgJyArIGN1cnJlbnRPZmZzZXQgKyAnIGJ1
dCBleHBlY3RlZCB0byBiZSBhdCAnICsgZXhwZWN0YXRpb25zW2pdKTsKKyAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ2NhcmV0IGlzIGF0ICcgKyBjdXJyZW50
T2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBqKys7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAoaiA8IGV4cGVjdGF0aW9ucy5sZW5ndGgpCisgICAgICAgIHRlc3RG
YWlsZWQoJ2NhcmV0IG5ldmVyIHJlYWNoZWQgb2Zmc2V0JyArIGV4cGVjdGF0aW9uc1tqXSk7Cit9
CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICB2YXIgdGVzdHMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndGVzdHMnKS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZHQnKTsKKyAgICB2YXIgdGVz
dEV4cGVjdGF0aW9ucyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0cycpLmdldEVsZW1l
bnRzQnlUYWdOYW1lKCdkZCcpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgICAgZGVidWcoJ1Rlc3QgIicgKyB0ZXN0c1tpXS50ZXh0Q29udGVudCAr
ICciOicpOworICAgICAgICBydW5UZXN0KHRlc3RzW2ldLCB0ZXN0RXhwZWN0YXRpb25zW2ldLnRl
eHRDb250ZW50LnJlcGxhY2UoL1xzKlwoLitcKVxzKi8sICcnKS5zcGxpdCgvXHMrLykubWFwKGZ1
bmN0aW9uICh4KSB7cmV0dXJuIHBhcnNlSW50KHgpO30pKTsKKyAgICAgICAgZGVidWcoJycpOwor
ICAgIH0KK30gZWxzZSB7CisgICAgZGVidWcoJ1RoaXMgdGVzdCByZXF1aXJlcyBldmVudFNlbmRl
cicpOworICAgIGRvY3VtZW50Lm9uc2VsZWN0aW9uY2hhbmdlID0gZnVuY3Rpb24gKCkgeworICAg
ICAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJykudGV4dENvbnRlbnQgPSBnbG9iYWxPZmZzZXRGcm9t
Tm9kZU9mZnNldFBhaXIoc2VsZWN0aW9uLmJhc2VOb2RlLCBzZWxlY3Rpb24uYmFzZU9mZnNldCkg
KyAnLCAnICsKKyAgICAgICAgICAgIGdsb2JhbE9mZnNldEZyb21Ob2RlT2Zmc2V0UGFpcihzZWxl
Y3Rpb24uZXh0ZW50Tm9kZSwgc2VsZWN0aW9uLmV4dGVudE9mZnNldCk7CisgICAgfQorfQorCit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102610</attachid>
            <date>2011-08-01 18:56:42 -0700</date>
            <delta_ts>2011-08-18 11:55:30 -0700</delta_ts>
            <desc>fixed qt build failure</desc>
            <filename>bug-65356-20110801185641.patch</filename>
            <type>text/plain</type>
            <size>18213</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyMTYyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDgtMDEgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgcG9zaXRpb25Gb3JQb2ludCByZXR1
cm5zIHdyb25nIFZpc2libGVQb3NpdGlvbiBhdCBiaWRpIGJvdW5kYXJpZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MzU2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGJ1ZyB3YXMgY2F1c2VkIGJ5
IFJlbmRlclRleHQ6OnBvc2l0aW9uRm9yUG9pbnQncyBhc3N1bWluZyB0aGF0IHRoZSBwb3NpdGlv
biB3aWxsIGFsd2F5cyByZXNpZGUKKyAgICAgICAgaW5zaWRlIHRoZSBpbmxpbmUgYm94IHRoYXQg
Y29udGFpbnMgdGhlIHBvaW50LCB3aGljaCBpcyBub3QgdHJ1ZSBhdCB0aGUgYm91bmRhcmllcyBv
ZiBiaWRpLXJ1bnMuCisKKyAgICAgICAgRm9yIGV4YW1wbGUsIGluIGFEQzEyQkFiIHdoZXJlIEFC
MTJDRCBpcyBhIFJUTCB0ZXh0LCB0aGUgb2Zmc2V0IG9uIHRoZSByaWdodCBvZiBBIGlzIDcgZXZl
biB0aG91Z2gKKyAgICAgICAgdGhlIGlubGluZSBib3ggZm9yICJCQSIgb25seSBjb250YWlucyBv
ZmZzZXRzIDEsIDIsIGFuZCAzLiBXZSBtdXN0IHRyYXZlcnNlIHRoZSBiaWRpLXJ1biAiREMxMkJB
IgorICAgICAgICB1bnRpbCB0aGUgZW5kIHRvIG9idGFpbiB0aGUgb2Zmc2V0IDcgZnJvbSB0aGUg
aW5saW5lIGJveCBmb3IgIkRDIi4KKworICAgICAgICBGaXhlZCB0aGUgYnVnIGJ5IGludHJvZHVj
aW5nIGNyZWF0ZVZpc2libGVQb3NpdGlvbkFmdGVyQWRqdXN0aW5nT2Zmc2V0Rm9yQmlEaSB3aGlj
aCB0cmF2ZXJzZXMgcnVucworICAgICAgICBvbiB0aGUgbGVmdCBvciB0aGUgcmlnaHQgb2YgdGhl
IHBvc2l0aW9uIHRvIGNvbXB1dGUgdGhlIGFwcHJvcHJpYXRlIG9mZnNldCBmb2xsb3dpbmcgdGhl
IE5TVGV4dFZpZXcgY29udmVudGlvbi4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gZml4ZXMg
YSByZWdyZXNzaW9uIGZyb20gcjc0OTcxIHRoYXQgY2FyZXQgaXMgcGxhY2VkIGluY29ycmVjdGx5
IGJldHdlZW4gaW5saW5lIGJveGVzIG9mCisgICAgICAgIExUUiBvciBSVEwgdGV4dCBpbiBhIFJU
TCBvciBMVFIgYmxvY2sgcmVzcGVjdGl2ZWx5LgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvc2Vs
ZWN0aW9uL2NhcmV0LWF0LWJpZGktYm91bmRhcnkuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5n
L0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6b2Zm
c2V0Rm9yUG9zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmxpbmVEaXJlY3Rpb25Qb2ludEZpdHNJbkJveCk6IFRha2VzIFNob3Vs
ZEFmZmluaXR5QmVEb3duc3RyZWFtIGluc3RlYWQgb2YgRUFmaW5pdHkuCisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVWaXNpYmxlUG9zaXRpb25Gb3JCb3gpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlVmlzaWJsZVBvc2l0aW9uQWZ0ZXJBZGp1c3RpbmdPZmZzZXRGb3JCaURpKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRleHQ6OnBvc2l0aW9uRm9yUG9pbnQpOgorCiAyMDExLTA4LTAxICBK
ZWFuLWx1YyBCcm91aWxsZXQgIDxqZWFubHVjQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1v
dmluZyBvbGQgc291cmNlIGZpbGVzIGluIGd5cCBmaWxlcyB0aGF0IHNsb3cgYnVpbGQKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHJldmlzaW9uIDky
MTYyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjI4LDI2ICsxMjI4LDE3IEBAIGludCBJbmxpbmVUZXh0Qm94OjpvZmZz
ZXRGb3JQb3NpdGlvbihmbG8KICAgICBpZiAoaXNMaW5lQnJlYWsoKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBpbnQgbGVmdE9mZnNldCA9IGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IDAg
OiBtX2xlbjsKLSAgICBpbnQgcmlnaHRPZmZzZXQgPSBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkg
PyBtX2xlbiA6IDA7Ci0gICAgYm9vbCBibG9ja0lzSW5PcHBvc2l0ZURpcmVjdGlvbiA9IHJlbmRl
cmVyKCktPmNvbnRhaW5pbmdCbG9jaygpLT5zdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KCkgIT0gaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOwotICAgIGlmIChibG9ja0lzSW5PcHBvc2l0
ZURpcmVjdGlvbikKLSAgICAgICAgc3dhcChsZWZ0T2Zmc2V0LCByaWdodE9mZnNldCk7Ci0KICAg
ICBpZiAobGluZU9mZnNldCAtIGxvZ2ljYWxMZWZ0KCkgPiBsb2dpY2FsV2lkdGgoKSkKLSAgICAg
ICAgcmV0dXJuIHJpZ2h0T2Zmc2V0OworICAgICAgICByZXR1cm4gaXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpID8gbGVuKCkgOiAwOwogICAgIGlmIChsaW5lT2Zmc2V0IC0gbG9naWNhbExlZnQoKSA8
IDApCi0gICAgICAgIHJldHVybiBsZWZ0T2Zmc2V0OworICAgICAgICByZXR1cm4gaXNMZWZ0VG9S
aWdodERpcmVjdGlvbigpID8gMCA6IGxlbigpOwogCiAgICAgRm9udENhY2hlUHVyZ2VQcmV2ZW50
ZXIgZm9udENhY2hlUHVyZ2VQcmV2ZW50ZXI7CiAKICAgICBSZW5kZXJUZXh0KiB0ZXh0ID0gdG9S
ZW5kZXJUZXh0KHJlbmRlcmVyKCkpOwogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHRleHQtPnN0
eWxlKG1fZmlyc3RMaW5lKTsKICAgICBjb25zdCBGb250JiBmb250ID0gc3R5bGUtPmZvbnQoKTsK
LSAgICBpbnQgb2Zmc2V0ID0gZm9udC5vZmZzZXRGb3JQb3NpdGlvbihjb25zdHJ1Y3RUZXh0UnVu
KHN0eWxlLCBmb250KSwgbGluZU9mZnNldCAtIGxvZ2ljYWxMZWZ0KCksIGluY2x1ZGVQYXJ0aWFs
R2x5cGhzKTsKLSAgICBpZiAoYmxvY2tJc0luT3Bwb3NpdGVEaXJlY3Rpb24gJiYgKCFvZmZzZXQg
fHwgb2Zmc2V0ID09IG1fbGVuKSkKLSAgICAgICAgcmV0dXJuICFvZmZzZXQgPyBtX2xlbiA6IDA7
Ci0gICAgcmV0dXJuIG9mZnNldDsKKyAgICByZXR1cm4gZm9udC5vZmZzZXRGb3JQb3NpdGlvbihj
b25zdHJ1Y3RUZXh0UnVuKHN0eWxlLCBmb250KSwgbGluZU9mZnNldCAtIGxvZ2ljYWxMZWZ0KCks
IGluY2x1ZGVQYXJ0aWFsR2x5cGhzKTsKIH0KIAogZmxvYXQgSW5saW5lVGV4dEJveDo6cG9zaXRp
b25Gb3JPZmZzZXQoaW50IG9mZnNldCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dC5jcHAJKHJldmlzaW9uIDkyMTYyKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzAsOSArNDMwLDExIEBA
IElubGluZVRleHRCb3gqIFJlbmRlclRleHQ6OmZpbmROZXh0SW5saW4KICAgICByZXR1cm4gczsK
IH0KIAotc3RhdGljIGJvb2wgbGluZURpcmVjdGlvblBvaW50Rml0c0luQm94KGludCBwb2ludExp
bmVEaXJlY3Rpb24sIElubGluZVRleHRCb3gqIGJveCwgaW50IG9mZnNldCwgRUFmZmluaXR5JiBh
ZmZpbml0eSkKK2VudW0gU2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0geyBBbHdheXNEb3duc3Ry
ZWFtLCBBbHdheXNVcHN0cmVhbSwgVXBzdHJlYW1JZlBvc2l0aW9uSXNOb3RBdFN0YXJ0IH07CisK
K3N0YXRpYyBib29sIGxpbmVEaXJlY3Rpb25Qb2ludEZpdHNJbkJveChpbnQgcG9pbnRMaW5lRGly
ZWN0aW9uLCBJbmxpbmVUZXh0Qm94KiBib3gsIFNob3VsZEFmZmluaXR5QmVEb3duc3RyZWFtJiBz
aG91bGRBZmZpbml0eUJlRG93bnN0cmVhbSkKIHsKLSAgICBhZmZpbml0eSA9IERPV05TVFJFQU07
CisgICAgc2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0gPSBBbHdheXNEb3duc3RyZWFtOwogCiAg
ICAgLy8gdGhlIHggY29vcmRpbmF0ZSBpcyBlcXVhbCB0byB0aGUgbGVmdCBlZGdlIG9mIHRoaXMg
Ym94CiAgICAgLy8gdGhlIGFmZmluaXR5IG11c3QgYmUgZG93bnN0cmVhbSBzbyB0aGUgcG9zaXRp
b24gZG9lc24ndCBqdW1wIGJhY2sgdG8gdGhlIHByZXZpb3VzIGxpbmUKQEAgLTQ0Miw3ICs0NDQs
NyBAQCBzdGF0aWMgYm9vbCBsaW5lRGlyZWN0aW9uUG9pbnRGaXRzSW5Cb3goCiAgICAgLy8gYW5k
IHRoZSB4IGNvb3JkaW5hdGUgaXMgdG8gdGhlIGxlZnQgb2YgdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhp
cyBib3gKICAgICAvLyBjaGVjayB0byBzZWUgaWYgcG9zaXRpb24gZ29lcyBpbiB0aGlzIGJveAog
ICAgIGlmIChwb2ludExpbmVEaXJlY3Rpb24gPCBib3gtPmxvZ2ljYWxSaWdodCgpKSB7Ci0gICAg
ICAgIGFmZmluaXR5ID0gb2Zmc2V0ID4gMCA/IFZQX1VQU1RSRUFNX0lGX1BPU1NJQkxFIDogRE9X
TlNUUkVBTTsKKyAgICAgICAgc2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0gPSBVcHN0cmVhbUlm
UG9zaXRpb25Jc05vdEF0U3RhcnQ7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAt
NDU1LDEzICs0NTcsMTA0IEBAIHN0YXRpYyBib29sIGxpbmVEaXJlY3Rpb25Qb2ludEZpdHNJbkJv
eCgKICAgICAgICAgLy8gYm94IGlzIGxhc3Qgb24gbGluZQogICAgICAgICAvLyBhbmQgdGhlIHgg
Y29vcmRpbmF0ZSBpcyB0byB0aGUgcmlnaHQgb2YgdGhlIGxhc3QgdGV4dCBib3ggcmlnaHQgZWRn
ZQogICAgICAgICAvLyBnZW5lcmF0ZSBWaXNpYmxlUG9zaXRpb24sIHVzZSBVUFNUUkVBTSBhZmZp
bml0eSBpZiBwb3NzaWJsZQotICAgICAgICBhZmZpbml0eSA9IG9mZnNldCA+IDAgPyBWUF9VUFNU
UkVBTV9JRl9QT1NTSUJMRSA6IERPV05TVFJFQU07CisgICAgICAgIHNob3VsZEFmZmluaXR5QmVE
b3duc3RyZWFtID0gVXBzdHJlYW1JZlBvc2l0aW9uSXNOb3RBdFN0YXJ0OwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3N0YXRpYyBWaXNpYmxl
UG9zaXRpb24gY3JlYXRlVmlzaWJsZVBvc2l0aW9uRm9yQm94KGNvbnN0IElubGluZUJveCogYm94
LCBpbnQgb2Zmc2V0LCBTaG91bGRBZmZpbml0eUJlRG93bnN0cmVhbSBzaG91bGRBZmZpbml0eUJl
RG93bnN0cmVhbSkKK3sKKyAgICBFQWZmaW5pdHkgYWZmaW5pdHkgPSBWUF9ERUZBVUxUX0FGRklO
SVRZOworICAgIHN3aXRjaCAoc2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0pIHsKKyAgICBjYXNl
IEFsd2F5c0Rvd25zdHJlYW06CisgICAgICAgIGFmZmluaXR5ID0gRE9XTlNUUkVBTTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBBbHdheXNVcHN0cmVhbToKKyAgICAgICAgYWZmaW5pdHkgPSBW
UF9VUFNUUkVBTV9JRl9QT1NTSUJMRTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVcHN0cmVh
bUlmUG9zaXRpb25Jc05vdEF0U3RhcnQ6CisgICAgICAgIGFmZmluaXR5ID0gb2Zmc2V0ID4gYm94
LT5jYXJldE1pbk9mZnNldCgpID8gVlBfVVBTVFJFQU1fSUZfUE9TU0lCTEUgOiBET1dOU1RSRUFN
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGJveC0+cmVuZGVyZXIoKS0+Y3Jl
YXRlVmlzaWJsZVBvc2l0aW9uKG9mZnNldCwgYWZmaW5pdHkpOworfQorCitzdGF0aWMgVmlzaWJs
ZVBvc2l0aW9uIGNyZWF0ZVZpc2libGVQb3NpdGlvbkFmdGVyQWRqdXN0aW5nT2Zmc2V0Rm9yQmlE
aShjb25zdCBJbmxpbmVUZXh0Qm94KiBib3gsIGludCBvZmZzZXQsIFNob3VsZEFmZmluaXR5QmVE
b3duc3RyZWFtIHNob3VsZEFmZmluaXR5QmVEb3duc3RyZWFtKQoreworICAgIEFTU0VSVChib3gp
OworICAgIEFTU0VSVChib3gtPnJlbmRlcmVyKCkpOworICAgIEFTU0VSVChvZmZzZXQgPj0gMCk7
CisKKyAgICBpZiAob2Zmc2V0ICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihvZmZzZXQpIDwgYm94
LT5sZW4oKSkKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbkZvckJveChib3gs
IGJveC0+c3RhcnQoKSArIG9mZnNldCwgc2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0pOworCisg
ICAgYm9vbCBwb3NpdGlvbklzQXRTdGFydE9mQm94ID0gIW9mZnNldDsKKyAgICBpZiAocG9zaXRp
b25Jc0F0U3RhcnRPZkJveCA9PSBib3gtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkgeworICAg
ICAgICAvLyBvZmZzZXQgaXMgb24gdGhlIGxlZnQgZWRnZQorCisgICAgICAgIGNvbnN0IElubGlu
ZUJveCogcHJldkJveCA9IGJveC0+cHJldkxlYWZDaGlsZCgpOworICAgICAgICBpZiAoKHByZXZC
b3ggJiYgcHJldkJveC0+YmlkaUxldmVsKCkgPT0gYm94LT5iaWRpTGV2ZWwoKSkKKyAgICAgICAg
ICAgIHx8IGJveC0+cmVuZGVyZXIoKS0+Y29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCktPmRpcmVj
dGlvbigpID09IGJveC0+ZGlyZWN0aW9uKCkpIC8vIEZJWE1FOiBsZWZ0IG9uIDEyQ0JBCisgICAg
ICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uRm9yQm94KGJveCwgYm94LT5jYXJl
dExlZnRtb3N0T2Zmc2V0KCksIHNob3VsZEFmZmluaXR5QmVEb3duc3RyZWFtKTsKKworICAgICAg
ICBpZiAocHJldkJveCAmJiBwcmV2Qm94LT5iaWRpTGV2ZWwoKSA+IGJveC0+YmlkaUxldmVsKCkp
IHsKKyAgICAgICAgICAgIC8vIGUuZy4gbGVmdCBvZiBCIGluIGFEQzEyQkFiCisgICAgICAgICAg
ICBjb25zdCBJbmxpbmVCb3gqIGxlZnRtb3N0Qm94OworICAgICAgICAgICAgZG8geworICAgICAg
ICAgICAgICAgIGxlZnRtb3N0Qm94ID0gcHJldkJveDsKKyAgICAgICAgICAgICAgICBwcmV2Qm94
ID0gbGVmdG1vc3RCb3gtPnByZXZMZWFmQ2hpbGQoKTsKKyAgICAgICAgICAgIH0gd2hpbGUgKHBy
ZXZCb3ggJiYgcHJldkJveC0+YmlkaUxldmVsKCkgPiBib3gtPmJpZGlMZXZlbCgpKTsKKyAgICAg
ICAgICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb25Gb3JCb3gobGVmdG1vc3RCb3gsIGxl
ZnRtb3N0Qm94LT5jYXJldFJpZ2h0bW9zdE9mZnNldCgpLCBzaG91bGRBZmZpbml0eUJlRG93bnN0
cmVhbSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXByZXZCb3ggfHwgcHJldkJveC0+Ymlk
aUxldmVsKCkgPCBib3gtPmJpZGlMZXZlbCgpKSB7CisgICAgICAgICAgICAvLyBlLmcuIGxlZnQg
b2YgRCBpbiBhREMxMkJBYgorICAgICAgICAgICAgY29uc3QgSW5saW5lQm94KiByaWdodG1vc3RC
b3g7CisgICAgICAgICAgICBjb25zdCBJbmxpbmVCb3gqIG5leHRCb3ggPSBib3g7CisgICAgICAg
ICAgICBkbyB7CisgICAgICAgICAgICAgICAgcmlnaHRtb3N0Qm94ID0gbmV4dEJveDsKKyAgICAg
ICAgICAgICAgICBuZXh0Qm94ID0gcmlnaHRtb3N0Qm94LT5uZXh0TGVhZkNoaWxkKCk7CisgICAg
ICAgICAgICB9IHdoaWxlIChuZXh0Qm94ICYmIG5leHRCb3gtPmJpZGlMZXZlbCgpID49IGJveC0+
YmlkaUxldmVsKCkpOworICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbkZv
ckJveChyaWdodG1vc3RCb3gsCisgICAgICAgICAgICAgICAgYm94LT5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkgPyByaWdodG1vc3RCb3gtPmNhcmV0TWF4T2Zmc2V0KCkgOiByaWdodG1vc3RCb3gt
PmNhcmV0TWluT2Zmc2V0KCksIHNob3VsZEFmZmluaXR5QmVEb3duc3RyZWFtKTsKKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb25Gb3JCb3goYm94LCBib3gt
PmNhcmV0UmlnaHRtb3N0T2Zmc2V0KCksIHNob3VsZEFmZmluaXR5QmVEb3duc3RyZWFtKTsKKyAg
ICB9CisKKyAgICBjb25zdCBJbmxpbmVCb3gqIG5leHRCb3ggPSBib3gtPm5leHRMZWFmQ2hpbGQo
KTsKKyAgICBpZiAoKG5leHRCb3ggJiYgbmV4dEJveC0+YmlkaUxldmVsKCkgPT0gYm94LT5iaWRp
TGV2ZWwoKSkKKyAgICAgICAgfHwgYm94LT5yZW5kZXJlcigpLT5jb250YWluaW5nQmxvY2soKS0+
c3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gYm94LT5kaXJlY3Rpb24oKSkKKyAgICAgICAgcmV0dXJu
IGNyZWF0ZVZpc2libGVQb3NpdGlvbkZvckJveChib3gsIGJveC0+Y2FyZXRSaWdodG1vc3RPZmZz
ZXQoKSwgc2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0pOworCisgICAgLy8gb2Zmc2V0IGlzIG9u
IHRoZSByaWdodCBlZGdlCisgICAgaWYgKG5leHRCb3ggJiYgbmV4dEJveC0+YmlkaUxldmVsKCkg
PiBib3gtPmJpZGlMZXZlbCgpKSB7CisgICAgICAgIC8vIGUuZy4gcmlnaHQgb2YgQyBpbiBhREMx
MkJBYgorICAgICAgICBjb25zdCBJbmxpbmVCb3gqIHJpZ2h0bW9zdEJveDsKKyAgICAgICAgZG8g
eworICAgICAgICAgICAgcmlnaHRtb3N0Qm94ID0gbmV4dEJveDsKKyAgICAgICAgICAgIG5leHRC
b3ggPSByaWdodG1vc3RCb3gtPm5leHRMZWFmQ2hpbGQoKTsKKyAgICAgICAgfSB3aGlsZSAobmV4
dEJveCAmJiBuZXh0Qm94LT5iaWRpTGV2ZWwoKSA+IGJveC0+YmlkaUxldmVsKCkpOworICAgICAg
ICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uRm9yQm94KHJpZ2h0bW9zdEJveCwgcmlnaHRt
b3N0Qm94LT5jYXJldExlZnRtb3N0T2Zmc2V0KCksIHNob3VsZEFmZmluaXR5QmVEb3duc3RyZWFt
KTsKKyAgICB9CisKKyAgICBpZiAoIW5leHRCb3ggfHwgbmV4dEJveC0+YmlkaUxldmVsKCkgPCBi
b3gtPmJpZGlMZXZlbCgpKSB7CisgICAgICAgIC8vIGUuZy4gcmlnaHQgb2YgQSBpbiBhREMxMkJB
YgorICAgICAgICBjb25zdCBJbmxpbmVCb3gqIGxlZnRtb3N0Qm94OworICAgICAgICBjb25zdCBJ
bmxpbmVCb3gqIHByZXZCb3ggPSBib3g7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGxlZnRt
b3N0Qm94ID0gcHJldkJveDsKKyAgICAgICAgICAgIHByZXZCb3ggPSBsZWZ0bW9zdEJveC0+cHJl
dkxlYWZDaGlsZCgpOworICAgICAgICB9IHdoaWxlIChwcmV2Qm94ICYmIHByZXZCb3gtPmJpZGlM
ZXZlbCgpID49IGJveC0+YmlkaUxldmVsKCkpOworICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJs
ZVBvc2l0aW9uRm9yQm94KGxlZnRtb3N0Qm94LAorICAgICAgICAgICAgYm94LT5pc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uKCkgPyBsZWZ0bW9zdEJveC0+Y2FyZXRNaW5PZmZzZXQoKSA6IGxlZnRtb3N0
Qm94LT5jYXJldE1heE9mZnNldCgpLCBzaG91bGRBZmZpbml0eUJlRG93bnN0cmVhbSk7CisgICAg
fQorCisgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbkZvckJveChib3gsIGJveC0+Y2Fy
ZXRMZWZ0bW9zdE9mZnNldCgpLCBzaG91bGRBZmZpbml0eUJlRG93bnN0cmVhbSk7Cit9CisKIFZp
c2libGVQb3NpdGlvbiBSZW5kZXJUZXh0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBv
aW50JiBwb2ludCkKIHsKICAgICBpZiAoIWZpcnN0VGV4dEJveCgpIHx8IHRleHRMZW5ndGgoKSA9
PSAwKQpAQCAtNDc4LDEzICs1NzEsMTMgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlclRleHQ6OnBv
c2l0aW9uRm9yUAogICAgICAgICAvLyBhdCB0aGUgeSBjb29yZGluYXRlIG9mIHRoZSBmaXJzdCBs
aW5lIG9yIGFib3ZlCiAgICAgICAgIC8vIGFuZCB0aGUgeCBjb29yZGluYXRlIGlzIHRvIHRoZSBs
ZWZ0IG9mIHRoZSBmaXJzdCB0ZXh0IGJveCBsZWZ0IGVkZ2UKICAgICAgICAgb2Zmc2V0ID0gZmly
c3RUZXh0Qm94KCktPm9mZnNldEZvclBvc2l0aW9uKHBvaW50TGluZURpcmVjdGlvbik7Ci0gICAg
ICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24ob2Zmc2V0ICsgZmlyc3RUZXh0Qm94KCkt
PnN0YXJ0KCksIG9mZnNldCA+IDAgPyBWUF9VUFNUUkVBTV9JRl9QT1NTSUJMRSA6IERPV05TVFJF
QU0pOworICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uQWZ0ZXJBZGp1c3RpbmdP
ZmZzZXRGb3JCaURpKGZpcnN0VGV4dEJveCgpLCBvZmZzZXQsIFVwc3RyZWFtSWZQb3NpdGlvbklz
Tm90QXRTdGFydCk7CiAgICAgfQogICAgIGlmIChsYXN0VGV4dEJveCgpICYmIHBvaW50QmxvY2tE
aXJlY3Rpb24gPj0gbGFzdFRleHRCb3goKS0+cm9vdCgpLT5zZWxlY3Rpb25Ub3AoKSAmJiBwb2lu
dExpbmVEaXJlY3Rpb24gPj0gbGFzdFRleHRCb3goKS0+bG9naWNhbFJpZ2h0KCkpIHsKICAgICAg
ICAgLy8gYXQgdGhlIHkgY29vcmRpbmF0ZSBvZiB0aGUgbGFzdCBsaW5lIG9yIGJlbG93CiAgICAg
ICAgIC8vIGFuZCB0aGUgeCBjb29yZGluYXRlIGlzIHRvIHRoZSByaWdodCBvZiB0aGUgbGFzdCB0
ZXh0IGJveCByaWdodCBlZGdlCiAgICAgICAgIG9mZnNldCA9IGxhc3RUZXh0Qm94KCktPm9mZnNl
dEZvclBvc2l0aW9uKHBvaW50TGluZURpcmVjdGlvbik7Ci0gICAgICAgIHJldHVybiBjcmVhdGVW
aXNpYmxlUG9zaXRpb24ob2Zmc2V0ICsgbGFzdFRleHRCb3goKS0+c3RhcnQoKSwgVlBfVVBTVFJF
QU1fSUZfUE9TU0lCTEUpOworICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uQWZ0
ZXJBZGp1c3RpbmdPZmZzZXRGb3JCaURpKGxhc3RUZXh0Qm94KCksIG9mZnNldCwgQWx3YXlzVXBz
dHJlYW0pOwogICAgIH0KIAogICAgIElubGluZVRleHRCb3gqIGxhc3RCb3hBYm92ZSA9IDA7CkBA
IC00OTYsMTAgKzU4OSwxMCBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyVGV4dDo6cG9zaXRpb25G
b3JQCiAgICAgICAgICAgICAgICAgYm90dG9tID0gbWluKGJvdHRvbSwgcm9vdEJveC0+bmV4dFJv
b3RCb3goKS0+bGluZVRvcCgpKTsKIAogICAgICAgICAgICAgaWYgKHBvaW50QmxvY2tEaXJlY3Rp
b24gPCBib3R0b20pIHsKLSAgICAgICAgICAgICAgICBFQWZmaW5pdHkgYWZmaW5pdHk7Ci0gICAg
ICAgICAgICAgICAgaW50IG9mZnNldCA9IGJveC0+b2Zmc2V0Rm9yUG9zaXRpb24ocG9pbnRMaW5l
RGlyZWN0aW9uKTsKLSAgICAgICAgICAgICAgICBpZiAobGluZURpcmVjdGlvblBvaW50Rml0c0lu
Qm94KHBvaW50TGluZURpcmVjdGlvbiwgYm94LCBvZmZzZXQsIGFmZmluaXR5KSkKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbihvZmZzZXQgKyBib3gtPnN0
YXJ0KCksIGFmZmluaXR5KTsKKyAgICAgICAgICAgICAgICBTaG91bGRBZmZpbml0eUJlRG93bnN0
cmVhbSBzaG91bGRBZmZpbml0eUJlRG93bnN0cmVhbTsKKyAgICAgICAgICAgICAgICBvZmZzZXQg
PSBib3gtPm9mZnNldEZvclBvc2l0aW9uKHBvaW50TGluZURpcmVjdGlvbik7CisgICAgICAgICAg
ICAgICAgaWYgKGxpbmVEaXJlY3Rpb25Qb2ludEZpdHNJbkJveChwb2ludExpbmVEaXJlY3Rpb24s
IGJveCwgc2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0pKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uQWZ0ZXJBZGp1c3RpbmdPZmZzZXRGb3JCaURpKGJv
eCwgb2Zmc2V0LCBzaG91bGRBZmZpbml0eUJlRG93bnN0cmVhbSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBsYXN0Qm94QWJvdmUgPSBib3g7CiAgICAgICAgIH0KSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDkyMTYyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTEtMDgtMDEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgcG9zaXRpb25Gb3JQb2ludCByZXR1cm5zIHdyb25nIFZpc2libGVQb3NpdGlv
biBhdCBiaWRpIGJvdW5kYXJpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY1MzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1hdC1iaWRpLWJvdW5kYXJ5LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtYXQt
YmlkaS1ib3VuZGFyeS5odG1sOiBBZGRlZC4KKwogMjAxMS0wOC0wMSAgWmhlbnlhbyBNbyAgPHpt
b0Bnb29nbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJlYmFzZWxpbmUsIHdlYmtpdCBn
YXJkZW5lciBzdHVmZi4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0
LWF0LWJpZGktYm91bmRhcnktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LWF0LWJpZGktYm91bmRhcnktZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtYXQtYmlk
aS1ib3VuZGFyeS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzggQEAKK1Ro
aXMgdGVzdCBlbnN1cmVzIFdlYktpdCBsZXRzIHVzZXIgcGxhY2UgY2FyZXQgYXJvdW5kIGJpZGly
ZWN0aW9uYWwgdGV4dCBwcm9wZXJseS4KKworQ3VycmVudCBvZmZzZXQ6CithYmPXkNeR15IKKzAg
MSAyIDMgNSA0IDYKK9eg16oxMgorMiAzIDQgMSA0IChUaGVyZSBpcyBhIGJ1Zy4gQ2xpY2tpbmcg
b24gdGhlIGxlZnQgb2YgMTIgc2hvdWxkIHJlc3VsdCBpbiBvZmZzZXQgMC4pCivXnNep16DXqgor
MCAzIDIgMSA0Cith16fXnDEy15nXnWQKKzAgMSA2IDMgNCA1IDIgNyA4CisxMten15w0M2FiCis0
IDUgNiAzIDAgMSAyIDcgOAorYWJj15zXqdegCis2IDEgMiA2IDUgNCAzCitUZXN0ICJhYmPXkNeR
15IiOgorUEFTUyBjYXJldCBpcyBhdCAwCitQQVNTIGNhcmV0IGlzIGF0IDEKK1BBU1MgY2FyZXQg
aXMgYXQgMgorUEFTUyBjYXJldCBpcyBhdCAzCitQQVNTIGNhcmV0IGlzIGF0IDUKK1BBU1MgY2Fy
ZXQgaXMgYXQgNAorUEFTUyBjYXJldCBpcyBhdCA2CisKK1Rlc3QgIteg16oxMiI6CitQQVNTIGNh
cmV0IGlzIGF0IDIKK1BBU1MgY2FyZXQgaXMgYXQgMworUEFTUyBjYXJldCBpcyBhdCA0CitQQVNT
IGNhcmV0IGlzIGF0IDEKK1BBU1MgY2FyZXQgaXMgYXQgNAorCitUZXN0ICLXnNep16DXqiI6CitQ
QVNTIGNhcmV0IGlzIGF0IDAKK1BBU1MgY2FyZXQgaXMgYXQgMworUEFTUyBjYXJldCBpcyBhdCAy
CitQQVNTIGNhcmV0IGlzIGF0IDEKK1BBU1MgY2FyZXQgaXMgYXQgNAorCitUZXN0ICJh16fXnDEy
15nXnWQiOgorUEFTUyBjYXJldCBpcyBhdCAwCitQQVNTIGNhcmV0IGlzIGF0IDEKK1BBU1MgY2Fy
ZXQgaXMgYXQgNgorUEFTUyBjYXJldCBpcyBhdCAzCitQQVNTIGNhcmV0IGlzIGF0IDQKK1BBU1Mg
Y2FyZXQgaXMgYXQgNQorUEFTUyBjYXJldCBpcyBhdCAyCitQQVNTIGNhcmV0IGlzIGF0IDcKK1BB
U1MgY2FyZXQgaXMgYXQgOAorCitUZXN0ICIxMten15w0M2FiIjoKK1BBU1MgY2FyZXQgaXMgYXQg
NAorUEFTUyBjYXJldCBpcyBhdCA1CitQQVNTIGNhcmV0IGlzIGF0IDYKK1BBU1MgY2FyZXQgaXMg
YXQgMworUEFTUyBjYXJldCBpcyBhdCAwCitQQVNTIGNhcmV0IGlzIGF0IDEKK1BBU1MgY2FyZXQg
aXMgYXQgMgorRkFJTCBjYXJldCB3YXMgYXQgNiBidXQgZXhwZWN0ZWQgdG8gYmUgYXQgNworUEFT
UyBjYXJldCBpcyBhdCA3CitQQVNTIGNhcmV0IGlzIGF0IDgKKworVGVzdCAiYWJj15zXqdegIjoK
K1BBU1MgY2FyZXQgaXMgYXQgNgorUEFTUyBjYXJldCBpcyBhdCAxCitQQVNTIGNhcmV0IGlzIGF0
IDIKK1BBU1MgY2FyZXQgaXMgYXQgNgorUEFTUyBjYXJldCBpcyBhdCA1CitQQVNTIGNhcmV0IGlz
IGF0IDQKK1BBU1MgY2FyZXQgaXMgYXQgMworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKworCisKKworCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9jYXJldC1hdC1iaWRpLWJvdW5kYXJ5Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtYXQtYmlkaS1ib3VuZGFyeS5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtYXQtYmlk
aS1ib3VuZGFyeS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwOCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBj
b250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyN0ZXN0cyB7IGZvbnQtc2l6ZTogMi41ZW07IHBh
ZGRpbmc6IDBweDsgbWFyZ2luOiAwcHg7IH0KK2R0IHsgd2lkdGg6IDE1ZXg7IHBhZGRpbmc6IDBw
eCAxMHB4OyBtYXJnaW46IDBweDsgfQorZGQgeyBmb250LXNpemU6IDAuNmVtOyBtYXJnaW46IDBw
eDsgcGFkZGluZzogMHB4IDEwcHg7IH0KKy50YXJnZXQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjYmJl
ZWZmOyB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3QgZW5zdXJlcyBX
ZWJLaXQgbGV0cyB1c2VyIHBsYWNlIGNhcmV0IGFyb3VuZCBiaWRpcmVjdGlvbmFsIHRleHQgcHJv
cGVybHkuPC9wPgorPGRpdj5DdXJyZW50IG9mZnNldDogPHNwYW4gaWQ9ImxvZyI+PC9zcGFuPjwv
ZGl2PgorPGRsIGlkPSJ0ZXN0cyI+Cis8ZHQgY29udGVudGVkaXRhYmxlPmFiY9eQ15HXkjwvZHQ+
Cis8ZGQ+MCAxIDIgMyA1IDQgNjwvZGQ+CisKKzxkdCBjb250ZW50ZWRpdGFibGU+16DXqjEyPC9k
dD4KKzxkZD4yIDMgNCAxIDQgKFRoZXJlIGlzIGEgYnVnLiBDbGlja2luZyBvbiB0aGUgbGVmdCBv
ZiAxMiBzaG91bGQgcmVzdWx0IGluIG9mZnNldCAwLik8L2RkPgorCis8ZHQgY29udGVudGVkaXRh
YmxlPtec16k8Yj7XoDwvYj7XqjwvZHQ+Cis8ZGQ+MCAzIDIgMSA0PC9kZD4KKworPGR0IGNvbnRl
bnRlZGl0YWJsZT5h16fXnDEy15nXnWQ8L2R0PgorPGRkPjAgMSA2IDMgNCA1IDIgNyA4PC9kZD4K
KworPGR0PjxzcGFuIGRpcj0icnRsIj4xMjxiPten15w0MzwvYj48L3NwYW4+YWI8L2R0PgorPGRk
PjQgNSA2IDMgMCAxIDIgNyA4PC9kZD4KKworPGR0IGRpcj0icnRsIj48c3BhbiBkaXI9Imx0ciI+
YWJj15zXqdegPC9zcGFuPjwvZHQ+Cis8ZGQ+NiAxIDIgNiA1IDQgMzwvZGQ+CisKKzwvZGw+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxwcmU+PHNjcmlwdD4KKworLy8gVGhpcyBmdW5jdGlv
biBjb252ZXJ0cyAobm9kZSwgb2Zmc2V0KSBwYWlyIHRvIGEgZ2xvYmFsIG9mZnNldCAobGlrZSBU
ZXh0SXRlcmF0b3IgaW5kZXgpLgorZnVuY3Rpb24gZ2xvYmFsT2Zmc2V0RnJvbU5vZGVPZmZzZXRQ
YWlyKG5vZGUsIG9mZnNldEluTm9kZSkgeworICAgIHZhciB0ZXN0cyA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd0ZXN0cycpOworICAgIHZhciB0ZXN0Q29udGFpbmVyID0gbm9kZTsKKyAgICB3
aGlsZSAodGVzdENvbnRhaW5lciAmJiB0ZXN0Q29udGFpbmVyLnBhcmVudE5vZGUgIT0gdGVzdHMp
CisgICAgICAgIHRlc3RDb250YWluZXIgPSB0ZXN0Q29udGFpbmVyLnBhcmVudE5vZGU7CisgICAg
aWYgKCF0ZXN0Q29udGFpbmVyKQorICAgICAgICByZXR1cm4gJ2Egbm9kZSBvdXRzaWRlIG9mIHRl
c3RzJzsKKworICAgIHJldHVybiB0ZXN0Q29udGFpbmVyLnRleHRDb250ZW50LmluZGV4T2Yobm9k
ZS50ZXh0Q29udGVudCkgKyBvZmZzZXRJbk5vZGU7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QodGFy
Z2V0LCBleHBlY3RhdGlvbnMpIHsKKyAgICB2YXIgeSA9IHRhcmdldC5vZmZzZXRUb3AgKyB0YXJn
ZXQub2Zmc2V0SGVpZ2h0IC8gMjsKKworICAgIHZhciBwcmV2aW91c09mZnNldCA9IC0xOworICAg
IHZhciBqID0gMDsKKyAgICBmb3IgKHZhciB4ID0gNTsgeCA8PSB0YXJnZXQub2Zmc2V0V2lkdGgg
LSA1OyB4KyspIHsKKyAgICAgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMTAwMCk7CisgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHRhcmdldC5vZmZzZXRMZWZ0ICsgeCwgeSk7Cisg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVVwKCk7CisKKyAgICAgICAgdmFyIGN1cnJlbnRPZmZzZXQgPSBnbG9iYWxPZmZzZXRGcm9tTm9k
ZU9mZnNldFBhaXIoZ2V0U2VsZWN0aW9uKCkuYmFzZU5vZGUsIGdldFNlbGVjdGlvbigpLmJhc2VP
ZmZzZXQpOworICAgICAgICBpZiAoIWdldFNlbGVjdGlvbigpLmlzQ29sbGFwc2VkKQorICAgICAg
ICAgICAgdGVzdEZhaWxlZCgnc2VsZWN0aW9uIHdhcyBub3QgY29sbGFwc2VkJyk7CisgICAgICAg
IGVsc2UgaWYgKHByZXZpb3VzT2Zmc2V0ID09IGN1cnJlbnRPZmZzZXQpCisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwcmV2aW91c09mZnNldCA9IGN1
cnJlbnRPZmZzZXQ7CisKKyAgICAgICAgICAgIGlmIChleHBlY3RhdGlvbnNbal0gIT0gY3VycmVu
dE9mZnNldCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdjYXJldCB3YXMgYXQgJyArIGN1
cnJlbnRPZmZzZXQgKyAnIGJ1dCBleHBlY3RlZCB0byBiZSBhdCAnICsgZXhwZWN0YXRpb25zW2pd
KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ2NhcmV0
IGlzIGF0ICcgKyBjdXJyZW50T2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBqKys7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoaiA8IGV4cGVjdGF0aW9ucy5sZW5n
dGgpCisgICAgICAgIHRlc3RGYWlsZWQoJ2NhcmV0IG5ldmVyIHJlYWNoZWQgb2Zmc2V0JyArIGV4
cGVjdGF0aW9uc1tqXSk7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICB2YXIgdGVzdHMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdHMnKS5nZXRFbGVtZW50c0J5VGFnTmFtZSgn
ZHQnKTsKKyAgICB2YXIgdGVzdEV4cGVjdGF0aW9ucyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCd0ZXN0cycpLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdkZCcpOworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgdGVzdHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgZGVidWcoJ1Rlc3QgIicgKyB0ZXN0
c1tpXS50ZXh0Q29udGVudCArICciOicpOworICAgICAgICBydW5UZXN0KHRlc3RzW2ldLCB0ZXN0
RXhwZWN0YXRpb25zW2ldLnRleHRDb250ZW50LnJlcGxhY2UoL1xzKlwoLitcKVxzKi8sICcnKS5z
cGxpdCgvXHMrLykubWFwKGZ1bmN0aW9uICh4KSB7cmV0dXJuIHBhcnNlSW50KHgpO30pKTsKKyAg
ICAgICAgZGVidWcoJycpOworICAgIH0KK30gZWxzZSB7CisgICAgZGVidWcoJ1RoaXMgdGVzdCBy
ZXF1aXJlcyBldmVudFNlbmRlcicpOworICAgIGRvY3VtZW50Lm9uc2VsZWN0aW9uY2hhbmdlID0g
ZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlv
bigpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJykudGV4dENvbnRlbnQg
PSBnbG9iYWxPZmZzZXRGcm9tTm9kZU9mZnNldFBhaXIoc2VsZWN0aW9uLmJhc2VOb2RlLCBzZWxl
Y3Rpb24uYmFzZU9mZnNldCkgKyAnLCAnICsKKyAgICAgICAgICAgIGdsb2JhbE9mZnNldEZyb21O
b2RlT2Zmc2V0UGFpcihzZWxlY3Rpb24uZXh0ZW50Tm9kZSwgc2VsZWN0aW9uLmV4dGVudE9mZnNl
dCk7CisgICAgfQorfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="97908"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>