<?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>55717</bug_id>
          
          <creation_ts>2011-03-03 15:27:36 -0800</creation_ts>
          <short_desc>On Mac, the bounding box sent to EditorClient::showCorrectionPanel() is incorrect when the correction occurs in an iframe.</short_desc>
          <delta_ts>2011-03-04 22:12:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.6</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jia Pu">jiapu.mail</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>362004</commentid>
    <comment_count>0</comment_count>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-03-03 15:27:36 -0800</bug_when>
    <thetext>The bounding box is expected to be in window&apos;s coordinate system. In the case of iframe, it is actually in the frame coordinate system.

&lt;rdar://problem/9018127&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362034</commentid>
    <comment_count>1</comment_count>
      <attachid>84642</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-03-03 15:57:36 -0800</bug_when>
    <thetext>Created attachment 84642
Proposed patch (v1)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362080</commentid>
    <comment_count>2</comment_count>
      <attachid>84642</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-03 16:45:54 -0800</bug_when>
    <thetext>Comment on attachment 84642
Proposed patch (v1)

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

Seems good. Almost right for landing, but I’d like you to at least rename Range::getBoundingRect and possibly split this up into more than once patch.

&gt; Source/WebCore/ChangeLog:17
&gt; +        2. Moved all Mac-only manuel test into manual-tests/platform/mac directory.

Typo here: &quot;manuel&quot;.

I know that our automated tests use the path platforms/mac, but I’m not sure it’s great for the manual tests. I guess it’s OK, but the extra level of hierarchy seems annoying. These already were in a directory named autocorrection. I’m not sure we needed to move them at all.

&gt; Source/WebCore/ChangeLog:18
&gt; +        3. Cleaned up code in Editor::removeSpellAndCorrectionMarkersFromWordsToBeEdited().

Could you land this in a separate patch? Is there some reason to combine these?

&gt; Source/WebCore/ChangeLog:28
&gt; +        * manual-tests/platforms/mac/autocorrection/autocorreciton-in-iframe.html: Added.

Typo in filename here: autocorreciton

&gt; Source/WebCore/dom/Range.cpp:1913
&gt; +FloatRect Range::getBoundingRect() const

This kind of function does not get the word “get” in its name in the WebKit project. The getBoundingClientRect function is different, because it is exposed to JavaScript and so its name is set by a cross-browser standard. But since this new function is for internal use inside WebKit it should just be named boundingRect not getBoundingRect.

&gt; Source/WebCore/dom/Range.cpp:1916
&gt; +        return FloatRect(0, 0, 0, 0);

This should just be FloatRect(). No reason to explicitly write out four zeroes.

&gt; Source/WebCore/editing/Editor.cpp:2407
&gt; +                    IntRect boundingBoxInWindow = frame()-&gt;view()-&gt;contentsToWindow(IntRect(boundingBox));

Can frame() or view() ever be 0 here? Same question for the other places this appears.

I think you should make a helper function in this class that returns the boundingBoxInWindow for a Range because this idiom is repeated three different times in this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362098</commentid>
    <comment_count>3</comment_count>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-03-03 17:05:36 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 84642 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=84642&amp;action=review
&gt; 
&gt; Seems good. Almost right for landing, but I’d like you to at least rename Range::getBoundingRect and possibly split this up into more than once patch.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:17
&gt; &gt; +        2. Moved all Mac-only manuel test into manual-tests/platform/mac directory.
&gt; 
&gt; Typo here: &quot;manuel&quot;.
&gt; 
&gt; I know that our automated tests use the path platforms/mac, but I’m not sure it’s great for the manual tests. I guess it’s OK, but the extra level of hierarchy seems annoying. These already were in a directory named autocorrection. I’m not sure we needed to move them at all.

I just want to be clear that they&apos;re all mac-only tests. If you think it&apos;s OK as it is, I will pull them out.

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:18
&gt; &gt; +        3. Cleaned up code in Editor::removeSpellAndCorrectionMarkersFromWordsToBeEdited().
&gt; 
&gt; Could you land this in a separate patch? Is there some reason to combine these?

I can certainly put this in separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362209</commentid>
    <comment_count>4</comment_count>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-03-03 19:33:19 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 84642 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=84642&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:28
&gt; &gt; +        * manual-tests/platforms/mac/autocorrection/autocorreciton-in-iframe.html: Added.
&gt; 
&gt; Typo in filename here: autocorreciton
&gt; 
&gt; &gt; Source/WebCore/editing/Editor.cpp:2407
&gt; &gt; +                    IntRect boundingBoxInWindow = frame()-&gt;view()-&gt;contentsToWindow(IntRect(boundingBox));
&gt; 
&gt; Can frame() or view() ever be 0 here? Same question for the other places this appears.

Judging by the fact that there are many calls to frame() without checking. I assume it&apos;s safe. We could put an assertion.  I will check the return value of view(). My thought is not to litter the code with unnecessary check of this sort.
&gt; 
&gt; I think you should make a helper function in this class that returns the boundingBoxInWindow for a Range because this idiom is repeated three different times in this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362583</commentid>
    <comment_count>5</comment_count>
      <attachid>84767</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-03-04 09:58:46 -0800</bug_when>
    <thetext>Created attachment 84767
Proposed patch (v2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362618</commentid>
    <comment_count>6</comment_count>
      <attachid>84767</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-04 10:43:09 -0800</bug_when>
    <thetext>Comment on attachment 84767
Proposed patch (v2)

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

&gt; Source/WebCore/dom/Range.cpp:1907
&gt;      if (!m_start.container())
&gt;          return 0;

This code isn’t needed any more.

&gt; Source/WebCore/dom/Range.cpp:1979
&gt; +    for (size_t i = 0; i&lt; quads.size(); ++i)

Missing space here before the &quot;&lt;&quot;.

&gt; Source/WebCore/editing/Editor.cpp:3609
&gt; +FloatRect Editor::rectToWindow(const FloatRect&amp; rect) const

The function I was suggested we factor out was actually windowRectForRange, ranking a Range*.

&gt; Source/WebCore/editing/Editor.h:434
&gt; +    // Convert abolustion (page) coordinate to window space

abolustion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362648</commentid>
    <comment_count>7</comment_count>
      <attachid>84786</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-03-04 11:34:57 -0800</bug_when>
    <thetext>Created attachment 84786
Patch (v3)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362874</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-04 22:10:42 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 84786:

inspector/audits/audits-panel-functional.html bug 55776 (authors: apavlov@chromium.org, pfeldman@chromium.org, and rniwa@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362875</commentid>
    <comment_count>9</comment_count>
      <attachid>84786</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-04 22:12:51 -0800</bug_when>
    <thetext>Comment on attachment 84786
Patch (v3)

Clearing flags on attachment: 84786

Committed r80408: &lt;http://trac.webkit.org/changeset/80408&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362876</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-04 22:12:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84642</attachid>
            <date>2011-03-03 15:57:36 -0800</date>
            <delta_ts>2011-03-04 09:58:44 -0800</delta_ts>
            <desc>Proposed patch (v1)</desc>
            <filename>bug-55717-20110303155735.patch</filename>
            <type>text/plain</type>
            <size>18688</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODAyNDYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMjMxZDU5MGQ2N2ZkMTAx
ODVhNjI3ZmJlYzMxZGI2MGNjZjM3N2ExLi40ODYzMGM3YmUzYWI3ZGRmZWVkMWM1OWE0ZDliZDY4
M2NhZmRjZDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMDMtMDMgIEppYSBQ
dSAgPGpwdUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgT24gTWFjLCB0aGUgYm91bmRpbmcgYm94IHNlbnQgdG8gRWRpdG9yQ2xpZW50
OjpzaG93Q29ycmVjdGlvblBhbmVsKCkgaXMgaW5jb3JyZWN0IHdoZW4gdGhlIGNvcnJlY3Rpb24g
b2NjdXJzIGluIGFuIGlmcmFtZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU1NzE3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MDE4MTI3PgorCisg
ICAgICAgIG1hbnVhbC10ZXN0OiBtYW51YWwtdGVzdHMvcGxhdGZvcm1zL21hYy9hdXRvY29ycmVj
dGlvbi9hdXRvY29ycmVjaXRvbi1pbi1pZnJhbWUuaHRtbAorCisgICAgICAgIFByZXZpb3VzbHks
IHRoZSBib3VuZGluZyBib3ggcGFzc2VkIGludG8gRWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlv
blBhbmVsKCkgaXMgaW4gdGhlIGZyYW1lJ3MKKyAgICAgICAgY29vcmRpbmF0ZS4gVGhpcyBpcyBp
bmNvcnJlY3Qgd2hlbiB0aGUgY29ycmVjdGlvbiBvY2N1cnMgaW4gYW4gaWZyYW1lLiBUaGlzIHBh
dGNoIGFkZGVkIGNvZGUKKyAgICAgICAgdG8gY29udmVydCB0aGUgYm91bmRpbmcgYm94IHRvIHdp
bmRvdyBjb29yZGluYXRlIHVzaW5nIFNjcm9sbFZpZXc6OmNvbnRlbnRUb1dpbmRvdygpLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBjb250YWlucyBzb21lIG1pbm9yIGNoYW5nZXM6CisgICAg
ICAgIDEuIFJlZmFjdG9yZWQgUmFuZ2U6OmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIHNvIHRoYXQg
d2UgY2FuIGFjY2VzcyBib3VuZGluZyByZWN0IHdpdGhvdXQgY3JlYXRpbmcgQ2xpZW50UmVjdCBv
YmplY3QuCisgICAgICAgIDIuIE1vdmVkIGFsbCBNYWMtb25seSBtYW51ZWwgdGVzdCBpbnRvIG1h
bnVhbC10ZXN0cy9wbGF0Zm9ybS9tYWMgZGlyZWN0b3J5LgorICAgICAgICAzLiBDbGVhbmVkIHVw
IGNvZGUgaW4gRWRpdG9yOjpyZW1vdmVTcGVsbEFuZENvcnJlY3Rpb25NYXJrZXJzRnJvbVdvcmRz
VG9CZUVkaXRlZCgpLgorCisgICAgICAgICogZG9tL1JhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJhbmdlOjpnZXRCb3VuZGluZ0NsaWVudFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmFu
Z2U6OmdldEJvdW5kaW5nUmVjdCk6CisgICAgICAgICogZG9tL1JhbmdlLmg6CisgICAgICAgICog
ZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrQWxsTWlz
c3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6Y29ycmVjdGlvblBhbmVsVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OnJlbW92ZVNwZWxsQW5kQ29ycmVjdGlvbk1hcmtlcnNGcm9tV29yZHNUb0JlRWRpdGVkKToKKyAg
ICAgICAgKiBtYW51YWwtdGVzdHMvcGxhdGZvcm1zL21hYy9hdXRvY29ycmVjdGlvbi9hdXRvY29y
cmVjaXRvbi1pbi1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogbWFudWFsLXRlc3RzL3Bs
YXRmb3Jtcy9tYWMvYXV0b2NvcnJlY3Rpb24vYXV0b2NvcnJlY3Rpb24tY2FuY2VsbGVkLWJ5LUVT
Qy5odG1sOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL2F1dG9jb3Jy
ZWN0aW9uL2F1dG9jb3JyZWN0aW9uLWNhbmNlbGxlZC1ieS1FU0MuaHRtbC4KKyAgICAgICAgKiBt
YW51YWwtdGVzdHMvcGxhdGZvcm1zL21hYy9hdXRvY29ycmVjdGlvbi9hdXRvY29ycmVjdGlvbi1j
YW5jZWxsZWQtYnktdHlwaW5nLTEuaHRtbDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL21h
bnVhbC10ZXN0cy9hdXRvY29ycmVjdGlvbi9hdXRvY29ycmVjdGlvbi1jYW5jZWxsZWQtYnktdHlw
aW5nLTEuaHRtbC4KKyAgICAgICAgKiBtYW51YWwtdGVzdHMvcGxhdGZvcm1zL21hYy9hdXRvY29y
cmVjdGlvbi9hdXRvY29ycmVjdGlvbi1jb250cmFjdGlvbi5odG1sOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL2F1dG9jb3JyZWN0aW9uL2F1dG9jb3JyZWN0aW9uLWNv
bnRyYWN0aW9uLmh0bWwuCisgICAgICAgICogbWFudWFsLXRlc3RzL3BsYXRmb3Jtcy9tYWMvYXV0
b2NvcnJlY3Rpb24vY29udGludWUtdHlwaW5nLXRvLWRpc21pc3MtcmV2ZXJzaW9uLmh0bWw6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9tYW51YWwtdGVzdHMvYXV0b2NvcnJlY3Rpb24vY29u
dGludWUtdHlwaW5nLXRvLWRpc21pc3MtcmV2ZXJzaW9uLmh0bWwuCisgICAgICAgICogbWFudWFs
LXRlc3RzL3BsYXRmb3Jtcy9tYWMvYXV0b2NvcnJlY3Rpb24vZGVsZXRlLXRvLWRpc21pc3MtcmV2
ZXJzaW9uLmh0bWw6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9tYW51YWwtdGVzdHMvYXV0
b2NvcnJlY3Rpb24vZGVsZXRlLXRvLWRpc21pc3MtcmV2ZXJzaW9uLmh0bWwuCisgICAgICAgICog
bWFudWFsLXRlc3RzL3BsYXRmb3Jtcy9tYWMvYXV0b2NvcnJlY3Rpb24vZGVsZXRlLXRvLWVuZC1v
Zi13b3JkLXRvLXNob3ctcmV2ZXJzaW9uLmh0bWw6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9tYW51YWwtdGVzdHMvYXV0b2NvcnJlY3Rpb24vZGVsZXRlLXRvLWVuZC1vZi13b3JkLXRvLXNo
b3ctcmV2ZXJzaW9uLmh0bWwuCisgICAgICAgICogbWFudWFsLXRlc3RzL3BsYXRmb3Jtcy9tYWMv
YXV0b2NvcnJlY3Rpb24vZGlzbWlzcy1tdWx0aXBsZS1ndWVzc2VzLmh0bWw6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9tYW51YWwtdGVzdHMvYXV0b2NvcnJlY3Rpb24vZGlzbWlzcy1tdWx0
aXBsZS1ndWVzc2VzLmh0bWwuCisgICAgICAgICogbWFudWFsLXRlc3RzL3BsYXRmb3Jtcy9tYWMv
YXV0b2NvcnJlY3Rpb24vZG9jdW1lbnQtZm9yLWlmcmFtZS10ZXN0Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIG1hbnVhbC10ZXN0cy9wbGF0Zm9ybXMvbWFjL2F1dG9jb3JyZWN0aW9uL21vdmUtdG8t
ZW5kLW9mLXdvcmQtdG8tc2hvdy1yZXZlcnNpb24uaHRtbDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL21hbnVhbC10ZXN0cy9hdXRvY29ycmVjdGlvbi9tb3ZlLXRvLWVuZC1vZi13b3JkLXRv
LXNob3ctcmV2ZXJzaW9uLmh0bWwuCisgICAgICAgICogbWFudWFsLXRlc3RzL3BsYXRmb3Jtcy9t
YWMvYXV0b2NvcnJlY3Rpb24vc2VsZWN0LWZyb20tbXVsdGlwbGUtZ3Vlc3Nlcy5odG1sOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL2F1dG9jb3JyZWN0aW9uL3NlbGVj
dC1mcm9tLW11bHRpcGxlLWd1ZXNzZXMuaHRtbC4KKyAgICAgICAgKiBtYW51YWwtdGVzdHMvcGxh
dGZvcm1zL21hYy9hdXRvY29ycmVjdGlvbi9zcGVsbC1jaGVja2luZy1hZnRlci1yZXZlcnNpb24u
aHRtbDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL21hbnVhbC10ZXN0cy9hdXRvY29ycmVj
dGlvbi9zcGVsbC1jaGVja2luZy1hZnRlci1yZXZlcnNpb24uaHRtbC4KKyAgICAgICAgKiBtYW51
YWwtdGVzdHMvcGxhdGZvcm1zL21hYy9hdXRvY29ycmVjdGlvbi9zcGVsbGNoZWNrLW9uLWNvbnRy
YWN0aW9uLXdoZW4tYXV0b2NvcnJlY3Rpb24taXMtb2ZmLmh0bWw6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9tYW51YWwtdGVzdHMvYXV0b2NvcnJlY3Rpb24vc3BlbGxjaGVjay1vbi1jb250
cmFjdGlvbi13aGVuLWF1dG9jb3JyZWN0aW9uLWlzLW9mZi5odG1sLgorICAgICAgICAqIG1hbnVh
bC10ZXN0cy9wbGF0Zm9ybXMvbWFjL2F1dG9jb3JyZWN0aW9uL3R5cGUtd2hpdGVzcGFjZS10by1k
aXNtaXNzLXJldmVyc2lvbi5odG1sOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbWFudWFs
LXRlc3RzL2F1dG9jb3JyZWN0aW9uL3R5cGUtd2hpdGVzcGFjZS10by1kaXNtaXNzLXJldmVyc2lv
bi5odG1sLgorICAgICAgICAqIG1hbnVhbC10ZXN0cy9wbGF0Zm9ybXMvbWFjL2F1dG9jb3JyZWN0
aW9uL3VuZG8tYXV0b2NvcnJlY3Rpb24uaHRtbDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L21hbnVhbC10ZXN0cy9hdXRvY29ycmVjdGlvbi91bmRvLWF1dG9jb3JyZWN0aW9uLmh0bWwuCisK
IDIwMTEtMDMtMDMgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFhIVE1MTVAgYnVpbGQgYnJva2VuIGFmdGVyIHI3ODM0MgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAK
aW5kZXggZGIwN2UxZDk1ZmQ4ZjIxNWYxNjJlMTlhZTA4OGYwOGUwM2I2NzEzMy4uMTJmZWNjZGUw
ZTUxMTQyYTYxMTYwOTUzNzRhMmFlM2NmMzllZTE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1JhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCkBAIC0x
OTA2LDE5ICsxOTA2LDI4IEBAIFBhc3NSZWZQdHI8Q2xpZW50UmVjdD4gUmFuZ2U6OmdldEJvdW5k
aW5nQ2xpZW50UmVjdCgpIGNvbnN0CiAgICAgaWYgKCFtX3N0YXJ0LmNvbnRhaW5lcigpKQogICAg
ICAgICByZXR1cm4gMDsKIAorICAgIEZsb2F0UmVjdCByZWN0ID0gZ2V0Qm91bmRpbmdSZWN0KCk7
CisgICAgcmV0dXJuIHJlY3QuaXNFbXB0eSgpID8gMCA6IENsaWVudFJlY3Q6OmNyZWF0ZShyZWN0
KTsKK30KKworRmxvYXRSZWN0IFJhbmdlOjpnZXRCb3VuZGluZ1JlY3QoKSBjb25zdAoreworICAg
IGlmICghbV9zdGFydC5jb250YWluZXIoKSkKKyAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgwLCAw
LCAwLCAwKTsKKwogICAgIG1fb3duZXJEb2N1bWVudC0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzKCk7CiAKICAgICBWZWN0b3I8RmxvYXRRdWFkPiBxdWFkczsKICAgICBnZXRC
b3JkZXJBbmRUZXh0UXVhZHMocXVhZHMpOwogCiAgICAgaWYgKHF1YWRzLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gRmxvYXRS
ZWN0KDAsIDAsIDAsIDApOwogCiAgICAgRmxvYXRSZWN0IHJlc3VsdDsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHF1YWRzLnNpemUoKTsgKytpKQogICAgICAgICByZXN1bHQudW5pdGUocXVh
ZHNbaV0uYm91bmRpbmdCb3goKSk7CiAKLSAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKHJl
c3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIHZvaWQgYWRqdXN0RmxvYXRR
dWFkc0ZvclNjcm9sbEFuZEFic29sdXRlWm9vbShWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIERv
Y3VtZW50KiBkb2N1bWVudCwgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgKaW5k
ZXggMDFjMTJlM2RmYjQxMjliMmI5OTQzYjA2OWY5MTY4MGI3ZDRhYjFjYS4uNGQ4ZTYzZTgyYWFl
NGIxMDAyYmQ0NTQyMTMzNTMxOTE5YzBkZTI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1JhbmdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgKQEAgLTEyOCw2ICsx
MjgsNyBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPENsaWVudFJlY3RMaXN0PiBnZXRDbGll
bnRSZWN0cygpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8Q2xpZW50UmVjdD4gZ2V0Qm91bmRpbmdD
bGllbnRSZWN0KCkgY29uc3Q7CisgICAgRmxvYXRSZWN0IGdldEJvdW5kaW5nUmVjdCgpIGNvbnN0
OwogCiAjaWZuZGVmIE5ERUJVRwogICAgIHZvaWQgZm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYnVm
ZmVyLCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmlu
ZGV4IDMyODcyMzFkNzMwMTkxNTVlOTc5NTFjMThkMWFjYzkwNTY3Y2M0MzAuLjlkODQ0YTFmNTU4
ZDgxMGVjNjJjZDlkNzQxMTYyMDJhMWJlOGU4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKQEAgLTEwMiwxOSArMTAyLDYgQEAgc3RhdGljIGlubGluZSBib29sIGlzQW1iaWd1b3VzQm91
bmRhcnlDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyKQogICAgIHJldHVybiBjaGFyYWN0ZXIgPT0g
J1wnJyB8fCBjaGFyYWN0ZXIgPT0gcmlnaHRTaW5nbGVRdW90YXRpb25NYXJrIHx8IGNoYXJhY3Rl
ciA9PSBoZWJyZXdQdW5jdHVhdGlvbkdlcnNoYXlpbTsKIH0KIAotI2lmIFNVUFBPUlRfQVVUT0NP
UlJFQ1RJT05fUEFORUwKLXN0YXRpYyBGbG9hdFJlY3QgYm91bmRpbmdCb3hGb3JSYW5nZShSYW5n
ZSogcmFuZ2UpCi17Ci0gICAgVmVjdG9yPEZsb2F0UXVhZD4gdGV4dFF1YWRzOwotICAgIHJhbmdl
LT5nZXRCb3JkZXJBbmRUZXh0UXVhZHModGV4dFF1YWRzKTsKLSAgICBGbG9hdFJlY3QgdG90YWxC
b3VuZGluZ0JveDsKLSAgICBzaXplX3Qgc2l6ZSA9IHRleHRRdWFkcy5zaXplKCk7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGk8IHNpemU7ICsraSkKLSAgICAgICAgdG90YWxCb3VuZGluZ0JveC51
bml0ZSh0ZXh0UXVhZHNbaV0uYm91bmRpbmdCb3goKSk7Ci0gICAgcmV0dXJuIHRvdGFsQm91bmRp
bmdCb3g7Ci19Ci0jZW5kaWYgLy8gU1VQUE9SVF9BVVRPQ09SUkVDVElPTl9QQU5FTAotCiBzdGF0
aWMgY29uc3QgVmVjdG9yPERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiYgbWFya2VyVHlwZXNG
b3JBdXRvY29ycmVjdGlvbigpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8RG9j
dW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+LCBtYXJrZXJUeXBlc0ZvckF1dG9Db3JyZWN0aW9uLCAo
KSk7CkBAIC0yNDE0LDE3ICsyNDAxLDE1IEBAIHZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxp
bmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENoCiAgICAg
ICAgICAgICBpZiAoc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCkgewogICAgICAgICAgICAgICAg
IGlmIChyZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA9PSBzcGVsbGluZ1JhbmdlRW5kT2Zm
c2V0KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgc2hvdyB0aGUgY29ycmVjdGlv
biBwYW5lbCBvbiB0aGUgbGFzdCB3b3JkLgotICAgICAgICAgICAgICAgICAgICBWZWN0b3I8Rmxv
YXRRdWFkPiB0ZXh0UXVhZHM7Ci0gICAgICAgICAgICAgICAgICAgIHJhbmdlVG9SZXBsYWNlLT5n
ZXRCb3JkZXJBbmRUZXh0UXVhZHModGV4dFF1YWRzKTsKLSAgICAgICAgICAgICAgICAgICAgVmVj
dG9yPEZsb2F0UXVhZD46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHRleHRRdWFkcy5lbmQoKTsKLSAg
ICAgICAgICAgICAgICAgICAgRmxvYXRSZWN0IHRvdGFsQm91bmRpbmdCb3g7Ci0gICAgICAgICAg
ICAgICAgICAgIGZvciAoVmVjdG9yPEZsb2F0UXVhZD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdGV4
dFF1YWRzLmJlZ2luKCk7IGl0IDwgZW5kOyArK2l0KQotICAgICAgICAgICAgICAgICAgICAgICAg
dG90YWxCb3VuZGluZ0JveC51bml0ZShpdC0+Ym91bmRpbmdCb3goKSk7CisgICAgICAgICAgICAg
ICAgICAgIEZsb2F0UmVjdCBib3VuZGluZ0JveCA9IHJhbmdlVG9SZXBsYWNlLT5nZXRCb3VuZGlu
Z1JlY3QoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJvdW5kaW5nQm94LmlzRW1wdHkoKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBJbnRS
ZWN0IGJvdW5kaW5nQm94SW5XaW5kb3cgPSBmcmFtZSgpLT52aWV3KCktPmNvbnRlbnRzVG9XaW5k
b3coSW50UmVjdChib3VuZGluZ0JveCkpOwogICAgICAgICAgICAgICAgICAgICBtX2NvcnJlY3Rp
b25QYW5lbEluZm8ucmFuZ2VUb0JlUmVwbGFjZWQgPSByYW5nZVRvUmVwbGFjZTsKICAgICAgICAg
ICAgICAgICAgICAgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJlcGxhY2VkU3RyaW5nID0gcGxhaW5U
ZXh0KHJhbmdlVG9SZXBsYWNlLmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgbV9jb3JyZWN0
aW9uUGFuZWxJbmZvLnJlcGxhY2VtZW50U3RyaW5nID0gcmVzdWx0LT5yZXBsYWNlbWVudDsKICAg
ICAgICAgICAgICAgICAgICAgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLmlzQWN0aXZlID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICAgICAgY2xpZW50KCktPnNob3dDb3JyZWN0aW9uUGFuZWwobV9jb3Jy
ZWN0aW9uUGFuZWxJbmZvLnBhbmVsVHlwZSwgdG90YWxCb3VuZGluZ0JveCwgbV9jb3JyZWN0aW9u
UGFuZWxJbmZvLnJlcGxhY2VkU3RyaW5nLCByZXN1bHQtPnJlcGxhY2VtZW50LCBWZWN0b3I8U3Ry
aW5nPigpLCB0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50KCktPnNob3dDb3JyZWN0
aW9uUGFuZWwobV9jb3JyZWN0aW9uUGFuZWxJbmZvLnBhbmVsVHlwZSwgYm91bmRpbmdCb3hJbldp
bmRvdywgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJlcGxhY2VkU3RyaW5nLCByZXN1bHQtPnJlcGxh
Y2VtZW50LCBWZWN0b3I8U3RyaW5nPigpLCB0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgZnVuY3Rp
b24gaXMgY2FsbGVkIGZvciBzaG93aW5nIGNvcnJlY3Rpb24gcGFuZWwsIHdlIGlnbm9yZSBvdGhl
ciBjb3JyZWN0aW9uIG9yIHJlcGxhY2VtZW50LgpAQCAtMjU1Miw3ICsyNTM3LDkgQEAgdm9pZCBF
ZGl0b3I6OmNvcnJlY3Rpb25QYW5lbFRpbWVyRmlyZWQoVGltZXI8RWRpdG9yPiopCiAgICAgY2Fz
ZSBDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGVSZXZlcnNpb246IHsKICAgICAgICAgbV9j
b3JyZWN0aW9uUGFuZWxJbmZvLmlzQWN0aXZlID0gdHJ1ZTsKICAgICAgICAgbV9jb3JyZWN0aW9u
UGFuZWxJbmZvLnJlcGxhY2VkU3RyaW5nID0gcGxhaW5UZXh0KG1fY29ycmVjdGlvblBhbmVsSW5m
by5yYW5nZVRvQmVSZXBsYWNlZC5nZXQoKSk7Ci0gICAgICAgIGNsaWVudCgpLT5zaG93Q29ycmVj
dGlvblBhbmVsKG1fY29ycmVjdGlvblBhbmVsSW5mby5wYW5lbFR5cGUsIGJvdW5kaW5nQm94Rm9y
UmFuZ2UobV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJhbmdlVG9CZVJlcGxhY2VkLmdldCgpKSwgbV9j
b3JyZWN0aW9uUGFuZWxJbmZvLnJlcGxhY2VkU3RyaW5nLCBtX2NvcnJlY3Rpb25QYW5lbEluZm8u
cmVwbGFjZW1lbnRTdHJpbmcsIFZlY3RvcjxTdHJpbmc+KCksIHRoaXMpOworICAgICAgICBGbG9h
dFJlY3QgYm91bmRpbmdCb3ggPSBtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmFuZ2VUb0JlUmVwbGFj
ZWQtPmdldEJvdW5kaW5nUmVjdCgpOworICAgICAgICBpZiAoIWJvdW5kaW5nQm94LmlzRW1wdHko
KSkKKyAgICAgICAgICAgIGNsaWVudCgpLT5zaG93Q29ycmVjdGlvblBhbmVsKG1fY29ycmVjdGlv
blBhbmVsSW5mby5wYW5lbFR5cGUsIGZyYW1lKCktPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhJ
bnRSZWN0KGJvdW5kaW5nQm94KSksIG1fY29ycmVjdGlvblBhbmVsSW5mby5yZXBsYWNlZFN0cmlu
ZywgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJlcGxhY2VtZW50U3RyaW5nLCBWZWN0b3I8U3RyaW5n
PigpLCB0aGlzKTsKICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29ycmVjdGlvblBh
bmVsSW5mbzo6UGFuZWxUeXBlU3BlbGxpbmdTdWdnZXN0aW9uczogewpAQCAtMjU2OCw3ICsyNTU1
LDkgQEAgdm9pZCBFZGl0b3I6OmNvcnJlY3Rpb25QYW5lbFRpbWVyRmlyZWQoVGltZXI8RWRpdG9y
PiopCiAgICAgICAgIFN0cmluZyB0b3BTdWdnZXN0aW9uID0gc3VnZ2VzdGlvbnMuZmlyc3QoKTsK
ICAgICAgICAgc3VnZ2VzdGlvbnMucmVtb3ZlKDApOwogICAgICAgICBtX2NvcnJlY3Rpb25QYW5l
bEluZm8uaXNBY3RpdmUgPSB0cnVlOwotICAgICAgICBjbGllbnQoKS0+c2hvd0NvcnJlY3Rpb25Q
YW5lbChtX2NvcnJlY3Rpb25QYW5lbEluZm8ucGFuZWxUeXBlLCBib3VuZGluZ0JveEZvclJhbmdl
KG1fY29ycmVjdGlvblBhbmVsSW5mby5yYW5nZVRvQmVSZXBsYWNlZC5nZXQoKSksIG1fY29ycmVj
dGlvblBhbmVsSW5mby5yZXBsYWNlZFN0cmluZywgdG9wU3VnZ2VzdGlvbiwgc3VnZ2VzdGlvbnMs
IHRoaXMpOworICAgICAgICBGbG9hdFJlY3QgYm91bmRpbmdCb3ggPSBtX2NvcnJlY3Rpb25QYW5l
bEluZm8ucmFuZ2VUb0JlUmVwbGFjZWQtPmdldEJvdW5kaW5nUmVjdCgpOworICAgICAgICBpZiAo
IWJvdW5kaW5nQm94LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNsaWVudCgpLT5zaG93Q29ycmVj
dGlvblBhbmVsKG1fY29ycmVjdGlvblBhbmVsSW5mby5wYW5lbFR5cGUsIGZyYW1lKCktPnZpZXco
KS0+Y29udGVudHNUb1dpbmRvdyhJbnRSZWN0KGJvdW5kaW5nQm94KSksIG1fY29ycmVjdGlvblBh
bmVsSW5mby5yZXBsYWNlZFN0cmluZywgdG9wU3VnZ2VzdGlvbiwgc3VnZ2VzdGlvbnMsIHRoaXMp
OwogICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjY5MCwyMSArMjY3OSwyNCBAQCB2
b2lkIEVkaXRvcjo6cmVtb3ZlU3BlbGxBbmRDb3JyZWN0aW9uTWFya2Vyc0Zyb21Xb3Jkc1RvQmVF
ZGl0ZWQoYm9vbCBkb05vdFJlbW92ZQogICAgIFZpc2libGVQb3NpdGlvbiBzdGFydE9mTGFzdFdv
cmQgPSBzdGFydE9mV29yZChlbmRPZlNlbGVjdGlvbiwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsK
ICAgICBWaXNpYmxlUG9zaXRpb24gZW5kT2ZMYXN0V29yZCA9IGVuZE9mV29yZChlbmRPZlNlbGVj
dGlvbiwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKIAotICAgIC8vIFRoaXMgY2FuIGJlIHRoZSBj
YXNlIGlmIHRoZSBlbmQgb2Ygc2VsZWN0aW9uIGlzIGF0IHRoZSBlbmQgb2YgZG9jdW1lbnQuCi0g
ICAgaWYgKGVuZE9mTGFzdFdvcmQuZGVlcEVxdWl2YWxlbnQoKS5hbmNob3JUeXBlKCkgIT0gUG9z
aXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcikgewotICAgICAgICBzdGFydE9mTGFzdFdv
cmQgPSBzdGFydE9mV29yZChmcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkuc3RhcnQo
KSwgTGVmdFdvcmRJZk9uQm91bmRhcnkpOwotICAgICAgICBlbmRPZkxhc3RXb3JkID0gZW5kT2ZX
b3JkKGZyYW1lKCktPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS5zdGFydCgpLCBMZWZ0V29yZElm
T25Cb3VuZGFyeSk7CisgICAgaWYgKHN0YXJ0T2ZGaXJzdFdvcmQuaXNOdWxsKCkpIHsKKyAgICAg
ICAgc3RhcnRPZkZpcnN0V29yZCA9IHN0YXJ0T2ZXb3JkKHN0YXJ0T2ZTZWxlY3Rpb24sIFJpZ2h0
V29yZElmT25Cb3VuZGFyeSk7CisgICAgICAgIGVuZE9mRmlyc3RXb3JkID0gZW5kT2ZXb3JkKHN0
YXJ0T2ZTZWxlY3Rpb24sIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7CisgICAgfQorCisgICAgaWYg
KGVuZE9mTGFzdFdvcmQuaXNOdWxsKCkpIHsKKyAgICAgICAgc3RhcnRPZkxhc3RXb3JkID0gc3Rh
cnRPZldvcmQoZW5kT2ZTZWxlY3Rpb24sIExlZnRXb3JkSWZPbkJvdW5kYXJ5KTsKKyAgICAgICAg
ZW5kT2ZMYXN0V29yZCA9IGVuZE9mV29yZChlbmRPZlNlbGVjdGlvbiwgTGVmdFdvcmRJZk9uQm91
bmRhcnkpOwogICAgIH0KIAogICAgIC8vIElmIGRvTm90UmVtb3ZlSWZTZWxlY3Rpb25BdFdvcmRC
b3VuZGFyeSBpcyB0cnVlLCBhbmQgZmlyc3Qgd29yZCBlbmRzIGF0IHRoZSBzdGFydCBvZiBzZWxl
Y3Rpb24sCiAgICAgLy8gd2UgY2hvb3NlIG5leHQgd29yZCBhcyB0aGUgZmlyc3Qgd29yZC4KICAg
ICBpZiAoZG9Ob3RSZW1vdmVJZlNlbGVjdGlvbkF0V29yZEJvdW5kYXJ5ICYmIGVuZE9mRmlyc3RX
b3JkID09IHN0YXJ0T2ZTZWxlY3Rpb24pIHsKICAgICAgICAgc3RhcnRPZkZpcnN0V29yZCA9IG5l
eHRXb3JkUG9zaXRpb24oc3RhcnRPZkZpcnN0V29yZCk7Ci0gICAgICAgIGlmIChzdGFydE9mRmly
c3RXb3JkLmlzTnVsbCgpIHx8IHN0YXJ0T2ZGaXJzdFdvcmQgPT0gZW5kT2ZTZWxlY3Rpb24pCi0g
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGVuZE9mRmlyc3RXb3JkID0gZW5kT2ZXb3JkKHN0
YXJ0T2ZGaXJzdFdvcmQsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7Ci0gICAgICAgIGlmIChlbmRP
ZkZpcnN0V29yZC5kZWVwRXF1aXZhbGVudCgpLmFuY2hvclR5cGUoKSAhPSBQb3NpdGlvbjo6UG9z
aXRpb25Jc09mZnNldEluQW5jaG9yKQorICAgICAgICBpZiAoc3RhcnRPZkZpcnN0V29yZC5pc051
bGwoKSB8fCBzdGFydE9mRmlyc3RXb3JkID09IGVuZE9mU2VsZWN0aW9uIHx8IGVuZE9mRmlyc3RX
b3JkLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKICAgICB9CiAKICAg
ICAvLyBJZiBkb05vdFJlbW92ZUlmU2VsZWN0aW9uQXRXb3JkQm91bmRhcnkgaXMgdHJ1ZSwgYW5k
IGxhc3Qgd29yZCBiZWdpbnMgYXQgdGhlIGVuZCBvZiBzZWxlY3Rpb24sCkBAIC0yNzEyLDkgKzI3
MDQsMTIgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVNwZWxsQW5kQ29ycmVjdGlvbk1hcmtlcnNGcm9t
V29yZHNUb0JlRWRpdGVkKGJvb2wgZG9Ob3RSZW1vdmUKICAgICBpZiAoZG9Ob3RSZW1vdmVJZlNl
bGVjdGlvbkF0V29yZEJvdW5kYXJ5ICYmIHN0YXJ0T2ZMYXN0V29yZCA9PSBlbmRPZlNlbGVjdGlv
bikgewogICAgICAgICBzdGFydE9mTGFzdFdvcmQgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihzdGFy
dE9mTGFzdFdvcmQpOwogICAgICAgICBlbmRPZkxhc3RXb3JkID0gZW5kT2ZXb3JkKHN0YXJ0T2ZM
YXN0V29yZCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKLSAgICAgICAgaWYgKGVuZE9mTGFzdFdv
cmQgPT0gc3RhcnRPZkZpcnN0V29yZCkKKyAgICAgICAgaWYgKHN0YXJ0T2ZMYXN0V29yZC5pc051
bGwoKSB8fCBlbmRPZkxhc3RXb3JkLmlzTnVsbCgpIHx8IGVuZE9mTGFzdFdvcmQgPT0gc3RhcnRP
ZkZpcnN0V29yZCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgCisgICAgaWYgKHN0
YXJ0T2ZGaXJzdFdvcmQuaXNOdWxsKCkgfHwgZW5kT2ZGaXJzdFdvcmQuaXNOdWxsKCkgfHwgc3Rh
cnRPZkxhc3RXb3JkLmlzTnVsbCgpIHx8IGVuZE9mTGFzdFdvcmQuaXNOdWxsKCkpCisgICAgICAg
IHJldHVybjsKIAogICAgIC8vIE5vdyB3ZSByZW1vdmUgbWFya2VycyBvbiBldmVyeXRoaW5nIGJl
dHdlZW4gc3RhcnRPZkZpcnN0V29yZCBhbmQgZW5kT2ZMYXN0V29yZC4KICAgICAvLyBIb3dldmVy
LCBpZiBhbiBhdXRvY29ycmVjdGlvbiBjaGFuZ2UgYSBzaW5nbGUgd29yZCB0byBtdWx0aXBsZSB3
b3Jkcywgd2Ugd2FudCB0byByZW1vdmUgY29ycmVjdGlvbiBtYXJrIGZyb20gYWxsIHRoZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL3BsYXRmb3Jtcy9tYWMvYXV0b2Nv
cnJlY3Rpb24vYXV0b2NvcnJlY2l0b24taW4taWZyYW1lLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9t
YW51YWwtdGVzdHMvcGxhdGZvcm1zL21hYy9hdXRvY29ycmVjdGlvbi9hdXRvY29ycmVjaXRvbi1p
bi1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNGViYmNmMjc2MmFlMmJiNjk2NGUwZDYzNmIxZjQx
YmI4OTk4NDUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3Rz
L3BsYXRmb3Jtcy9tYWMvYXV0b2NvcnJlY3Rpb24vYXV0b2NvcnJlY2l0b24taW4taWZyYW1lLmh0
bWwKQEAgLTAsMCArMSwxNiBAQAorPGh0bWw+Cis8aGVhZD4KKworPHRpdGxlPlRlc3QgYXV0b2Nv
cnJlY2l0b24gVUkgcG9zaXRpb25pbmcgaW4gaWZyYW1lPC90aXRsZT4KKzwvaGVhZD4KKzxib2R5
PgorPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYXV0b2NvcnJlY3Rpb24gVUkgaXMgcG9zaXRp
b25lZCBjb3JyZWN0bHkgd2hlbiB0aGUgY29ycmVjdGVkIHdvcmQgaXMgaW4gYW4gaWZyYW1lLjwv
cD4KKzxwPkFmdGVyIHR5cGluZyAidGhlIG1hbmFnIiwgeW91IHNob3VsZCBzZWUgdGhlIGF1dG9j
b3JyZWN0aW9uIFVJIGlzIHNob3duIGJlbG93IHRoZSBib3VuZGluZyBib3ggb2YgdGhlIGNvcnJl
Y3RlZCB3b3JkICJtYW5hZyIuPC9wPgorPGJyPgorPGJyPgorPGJyPgorPGRpdiBzdHlsZT0iLXdl
YmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDBweCwgMTAwcHgpIHJvdGF0ZSgyMGRlZykiPgor
ICA8aWZyYW1lIHNyYz0iZG9jdW1lbnQtZm9yLWlmcmFtZS10ZXN0Lmh0bWwiPjwvaWZyYW1lPgor
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYW51
YWwtdGVzdHMvcGxhdGZvcm1zL21hYy9hdXRvY29ycmVjdGlvbi9kb2N1bWVudC1mb3ItaWZyYW1l
LXRlc3QuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL21hbnVhbC10ZXN0cy9wbGF0Zm9ybXMvbWFjL2F1
dG9jb3JyZWN0aW9uL2RvY3VtZW50LWZvci1pZnJhbWUtdGVzdC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNj
YzBlYmE1N2Y1NjQwYzlkNjZjODhhZGE1ZjJmYzdiODZhNzNkMjkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9tYW51YWwtdGVzdHMvcGxhdGZvcm1zL21hYy9hdXRvY29ycmVjdGlv
bi9kb2N1bWVudC1mb3ItaWZyYW1lLXRlc3QuaHRtbApAQCAtMCwwICsxLDM2IEBACis8aHRtbD4K
KzxoZWFkPgorPHN0eWxlPgorLmVkaXRpbmcgeworICAgIGJvcmRlcjogMnB4IHNvbGlkIHJlZDsK
KyAgICBwYWRkaW5nOiAxMnB4OworICAgIGZvbnQtc2l6ZTogMjRweDsKK30KKzwvc3R5bGU+CisK
KzxzY3JpcHQgc3JjPS4uLy4uLy4uLy4uLy4uLy4uL0xheW91dFRlc3RzL2VkaXRpbmcvZWRpdGlu
Zy5qcyBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9KYXZhU2NyaXB0IiA+PC9zY3Jp
cHQ+CisKKzxzY3JpcHQ+CitmdW5jdGlvbiBlZGl0aW5nVGVzdCgpIHsKKyAgICB0eXBlQ2hhcmFj
dGVyQ29tbWFuZCgndCcpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdoJyk7CisgICAgdHlw
ZUNoYXJhY3RlckNvbW1hbmQoJ2UnKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnICcpOwor
ICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdtJyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQo
J2EnKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnbicpOworICAgIHR5cGVDaGFyYWN0ZXJD
b21tYW5kKCdhJyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ2cnKTsKK30KKzwvc2NyaXB0
PgorCis8ZGl2IGNvbnRlbnRlZGl0YWJsZSBpZD0icm9vdCIgY2xhc3M9ImVkaXRpbmciPgorPHNw
YW4gaWQ9InRlc3QiPjwvc3Bhbj4KKzwvZGl2PgorCis8c2NyaXB0PgorcnVuRWRpdGluZ1Rlc3Qo
KTsKKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMjc3
MGFiODYzZDgzODdhZWEwYzI5ZGIwMGQ1MjMyODg5Mzc0MWNiMy4uNDc0MDIxNTQwMzg1ZmJkNTFj
OGRhYTZiNTk4OWUyMWQ5MmNhYzAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDExLTAzLTAzICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE9uIE1hYywgdGhlIGJvdW5kaW5nIGJveCBz
ZW50IHRvIEVkaXRvckNsaWVudDo6c2hvd0NvcnJlY3Rpb25QYW5lbCgpIGlzIGluY29ycmVjdCB3
aGVuIHRoZSBjb3JyZWN0aW9uIG9jY3VycyBpbiBhbiBpZnJhbWUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTcxNworICAgICAgICA8cmRhcjovL3By
b2JsZW0vOTAxODEyNz4KKworICAgICAgICBXaXRoIHRoZSBjaGFuZ2UgaW4gV2ViQ29yZSwgdGhl
IGJvdW5kaW5nQm94IHBhc3NlZCBpbnRvIEVkaXRvckNsaWVudDo6c2hvd0NvcnJlY3Rpb25QYW5l
bCgpIGlzCisgICAgICAgIGFscmVhZHkgaW4gd2luZG93IGNvb3JkaW5hdGUuIFdlIGRvbid0IG5l
ZWQgdG8gZG8gZnVydGhlciBjb252ZXJzaW9uIGFueW1vcmUuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnNo
b3dDb3JyZWN0aW9uUGFuZWwpOgorCiAyMDExLTAzLTAyICBKZXNzaWUgQmVybGluICA8amJlcmxp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgRGFuIEJlcm5zdGVpbi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbQppbmRleCAzZjdhNTNmNGYwMGM4Y2ExMDA5NjE2NjFlMjU0MDZiYmU3YzU2ODQ3Li5hZDhl
MWJlMzRjZjI2ZGM0MTkxNjdjODYxNzkzMDQ4YmUyOGU0M2QzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC04OTQsMTAg
Kzg5NCw2IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1t
YXJTdHJpbmcoY29uc3QgU3RyaW5nJiBiYWRHcmFtbWFyCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6
c2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5
cGUgcGFuZWxUeXBlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmlu
ZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVu
dFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJp
bmdzLCBFZGl0b3IqIGVkaXRvcikgewogICAgIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29u
Rm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbElnbm9yZWQpOwogCi0gICAgTlNSZWN0IGJvdW5k
aW5nQm94QXNOU1JlY3QgPSBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmc7Ci0gICAgTlNSZWN0
IHdlYlZpZXdGcmFtZSA9IG1fd2ViVmlldy5mcmFtZTsKLSAgICBib3VuZGluZ0JveEFzTlNSZWN0
Lm9yaWdpbi55ID0gd2ViVmlld0ZyYW1lLnNpemUuaGVpZ2h0LU5TTWF4WShib3VuZGluZ0JveEFz
TlNSZWN0KTsKLQogICAgIC8vIE5lZWQgdG8gZXhwbGljaXRseSB1c2UgdGhlc2UgbG9jYWwgTlNT
dHJpbmcgb2JqZWN0cywgYmVjYXVzZSB0aGUgQysrIHJlZmVyZW5jZXMgbWF5IGJlIGludmFsaWRh
dGVkIGJ5IHRoZSB0aW1lIHRoZSBibG9jayBiZWxvdyBpcyBleGVjdXRlZC4KICAgICBOU1N0cmlu
ZyAqcmVwbGFjZWRTdHJpbmdBc05TU3RyaW5nID0gcmVwbGFjZWRTdHJpbmc7CiAgICAgTlNTdHJp
bmcgKnJlcGxhY2VtZW50U3RyaW5nQXNOU1N0cmluZyA9IHJlcGxhY2VtZW50U3RyaW5nOwpAQCAt
OTE1LDcgKzkxMSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlvblBhbmVs
KFdlYkNvcmU6OkNvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwCiAgICAgICAgICAgICBbYWx0
ZXJuYXRpdmVTdHJpbmdzIGFkZE9iamVjdDooTlNTdHJpbmcqKWFsdGVybmF0aXZlUmVwbGFjZW1l
bnRTdHJpbmdzW2ldXTsKICAgICB9CiAgICAgTlNTcGVsbENoZWNrZXIgKnNwZWxsQ2hlY2tlciA9
IFtOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdOwotICAgIFtbTlNTcGVsbENoZWNr
ZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBzaG93Q29ycmVjdGlvbkJ1YmJsZU9mVHlwZTpidWJibGVU
eXBlIHByaW1hcnlTdHJpbmc6cmVwbGFjZW1lbnRTdHJpbmdBc05TU3RyaW5nIGFsdGVybmF0aXZl
U3RyaW5nczphbHRlcm5hdGl2ZVN0cmluZ3MgZm9yU3RyaW5nSW5SZWN0OmJvdW5kaW5nQm94QXNO
U1JlY3QgdmlldzptX3dlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyAqYWNjZXB0
ZWRTdHJpbmcpIHsKKyAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gc2hv
d0NvcnJlY3Rpb25CdWJibGVPZlR5cGU6YnViYmxlVHlwZSBwcmltYXJ5U3RyaW5nOnJlcGxhY2Vt
ZW50U3RyaW5nQXNOU1N0cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVTdHJpbmdz
IGZvclN0cmluZ0luUmVjdDpib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcgdmlldzptX3dlYlZp
ZXcgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyAqYWNjZXB0ZWRTdHJpbmcpIHsKICAgICAg
ICAgc3dpdGNoIChidWJibGVUeXBlKSB7CiAgICAgICAgIGNhc2UgTlNDb3JyZWN0aW9uQnViYmxl
VHlwZUNvcnJlY3Rpb246CiAgICAgICAgICAgICBpZiAoYWNjZXB0ZWRTdHJpbmcpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84767</attachid>
            <date>2011-03-04 09:58:46 -0800</date>
            <delta_ts>2011-03-04 11:34:54 -0800</delta_ts>
            <desc>Proposed patch (v2)</desc>
            <filename>bug-55717-20110304095845.patch</filename>
            <type>text/plain</type>
            <size>14374</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODAyNDYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMjMxZDU5MGQ2N2ZkMTAx
ODVhNjI3ZmJlYzMxZGI2MGNjZjM3N2ExLi4xYzZhY2U2YzAzZjg5OGU3ZWJmNzhhY2M0OGVlMTkz
YjAzOWQ3NzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDMtMDQgIEppYSBQ
dSAgPGpwdUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgT24gTWFjLCB0aGUgYm91bmRpbmcgYm94IHNlbnQgdG8gRWRpdG9yQ2xpZW50
OjpzaG93Q29ycmVjdGlvblBhbmVsKCkgaXMgaW5jb3JyZWN0IHdoZW4gdGhlIGNvcnJlY3Rpb24g
b2NjdXJzIGluIGFuIGlmcmFtZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU1NzE3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MDE4MTI3PgorCisg
ICAgICAgIG1hbnVhbC10ZXN0OiBtYW51YWwtdGVzdHMvcGxhdGZvcm1zL21hYy9hdXRvY29ycmVj
dGlvbi9hdXRvY29ycmVjdGlvbi1pbi1pZnJhbWUuaHRtbAorCisgICAgICAgIFByZXZpb3VzbHks
IHRoZSBib3VuZGluZyBib3ggcGFzc2VkIGludG8gRWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlv
blBhbmVsKCkgaXMgaW4gdGhlIGZyYW1lJ3MKKyAgICAgICAgY29vcmRpbmF0ZS4gVGhpcyBpcyBp
bmNvcnJlY3Qgd2hlbiB0aGUgY29ycmVjdGlvbiBvY2N1cnMgaW4gYW4gaWZyYW1lLiBUaGlzIHBh
dGNoIGFkZGVkIGNvZGUKKyAgICAgICAgdG8gY29udmVydCB0aGUgYm91bmRpbmcgYm94IHRvIHdp
bmRvdyBjb29yZGluYXRlIHVzaW5nIFNjcm9sbFZpZXc6OmNvbnRlbnRUb1dpbmRvdygpLgorCisg
ICAgICAgICogZG9tL1JhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpnZXRCb3Vu
ZGluZ0NsaWVudFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OmJvdW5kaW5nUmVjdCk6
CisgICAgICAgICogZG9tL1JhbmdlLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1h
ckluUmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y29ycmVjdGlvblBhbmVsVGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlY3RUb1dpbmRvdyk6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBtYW51YWwtdGVzdHMvYXV0b2NvcnJl
Y3Rpb24vYXV0b2NvcnJlY3Rpb24taW4taWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1h
bnVhbC10ZXN0cy9hdXRvY29ycmVjdGlvbi9kb2N1bWVudC1mb3ItaWZyYW1lLXRlc3QuaHRtbDog
QWRkZWQuCisKIDIwMTEtMDMtMDMgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFhIVE1MTVAgYnVpbGQgYnJva2VuIGFmdGVyIHI3ODM0MgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9S
YW5nZS5jcHAKaW5kZXggZGIwN2UxZDk1ZmQ4ZjIxNWYxNjJlMTlhZTA4OGYwOGUwM2I2NzEzMy4u
YjhmMzdjY2NhMjk2Zjg5ODMzMDIyY2I0MmNmNDA4MTNjYTBhNmVmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2Uu
Y3BwCkBAIC0xOTA2LDE5ICsxOTA2LDggQEAgUGFzc1JlZlB0cjxDbGllbnRSZWN0PiBSYW5nZTo6
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgY29uc3QKICAgICBpZiAoIW1fc3RhcnQuY29udGFpbmVy
KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgbV9vd25lckRvY3VtZW50LT51cGRhdGVMYXlv
dXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKLQotICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1
YWRzOwotICAgIGdldEJvcmRlckFuZFRleHRRdWFkcyhxdWFkcyk7Ci0KLSAgICBpZiAocXVhZHMu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKCk7Ci0KLSAgICBG
bG9hdFJlY3QgcmVzdWx0OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVhZHMuc2l6ZSgp
OyArK2kpCi0gICAgICAgIHJlc3VsdC51bml0ZShxdWFkc1tpXS5ib3VuZGluZ0JveCgpKTsKLQot
ICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUocmVzdWx0KTsKKyAgICBGbG9hdFJlY3QgcmVj
dCA9IGJvdW5kaW5nUmVjdCgpOworICAgIHJldHVybiByZWN0LmlzRW1wdHkoKSA/IDAgOiBDbGll
bnRSZWN0OjpjcmVhdGUocmVjdCk7CiB9CiAKIHN0YXRpYyB2b2lkIGFkanVzdEZsb2F0UXVhZHNG
b3JTY3JvbGxBbmRBYnNvbHV0ZVpvb20oVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBEb2N1bWVu
dCogZG9jdW1lbnQsIFJlbmRlck9iamVjdCogcmVuZGVyZXIpCkBAIC0xOTczLDYgKzE5NjIsMjYg
QEAgdm9pZCBSYW5nZTo6Z2V0Qm9yZGVyQW5kVGV4dFF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBx
dWFkcykgY29uc3QKICAgICB9CiB9CiAKKyAgICAKK0Zsb2F0UmVjdCBSYW5nZTo6Ym91bmRpbmdS
ZWN0KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fc3RhcnQuY29udGFpbmVyKCkpCisgICAgICAgIHJl
dHVybiBGbG9hdFJlY3QoKTsKKworICAgIG1fb3duZXJEb2N1bWVudC0+dXBkYXRlTGF5b3V0SWdu
b3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisKKyAgICBWZWN0b3I8RmxvYXRRdWFkPiBxdWFkczsK
KyAgICBnZXRCb3JkZXJBbmRUZXh0UXVhZHMocXVhZHMpOworICAgIGlmIChxdWFkcy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKKworICAgIEZsb2F0UmVjdCByZXN1bHQ7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGk8IHF1YWRzLnNpemUoKTsgKytpKQorICAgICAgICBy
ZXN1bHQudW5pdGUocXVhZHNbaV0uYm91bmRpbmdCb3goKSk7CisKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5n
ZS5oCmluZGV4IDAxYzEyZTNkZmI0MTI5YjJiOTk0M2IwNjlmOTE2ODBiN2Q0YWIxY2EuLjU2Mzdi
NzdhYjE3ZjRkNjc3ODg1NjdlNTFjNzE0MWEwNzBjOTM1ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9SYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5oCkBAIC0x
MTEsNiArMTExLDcgQEAgcHVibGljOgogICAgIC8vIFRyYW5zZm9ybS1mcmllbmRseQogICAgIHZv
aWQgdGV4dFF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQg
PSBmYWxzZSk7CiAgICAgdm9pZCBnZXRCb3JkZXJBbmRUZXh0UXVhZHMoVmVjdG9yPEZsb2F0UXVh
ZD4mKSBjb25zdDsKKyAgICBGbG9hdFJlY3QgYm91bmRpbmdSZWN0KCkgY29uc3Q7CiAKICAgICB2
b2lkIG5vZGVDaGlsZHJlbkNoYW5nZWQoQ29udGFpbmVyTm9kZSopOwogICAgIHZvaWQgbm9kZUNo
aWxkcmVuV2lsbEJlUmVtb3ZlZChDb250YWluZXJOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKaW5kZXggMzI4NzIzMWQ3MzAxOTE1NWU5Nzk1MWMxOGQxYWNjOTA1NjdjYzQzMC4uOWY1
OTVjNDI3N2RkNDQ3Zjc4MzczNzVhYTU1YzA2ZWNjYTQzMzlhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcApAQCAtMTAyLDE5ICsxMDIsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNBbWJp
Z3VvdXNCb3VuZGFyeUNoYXJhY3RlcihVQ2hhciBjaGFyYWN0ZXIpCiAgICAgcmV0dXJuIGNoYXJh
Y3RlciA9PSAnXCcnIHx8IGNoYXJhY3RlciA9PSByaWdodFNpbmdsZVF1b3RhdGlvbk1hcmsgfHwg
Y2hhcmFjdGVyID09IGhlYnJld1B1bmN0dWF0aW9uR2Vyc2hheWltOwogfQogCi0jaWYgU1VQUE9S
VF9BVVRPQ09SUkVDVElPTl9QQU5FTAotc3RhdGljIEZsb2F0UmVjdCBib3VuZGluZ0JveEZvclJh
bmdlKFJhbmdlKiByYW5nZSkKLXsKLSAgICBWZWN0b3I8RmxvYXRRdWFkPiB0ZXh0UXVhZHM7Ci0g
ICAgcmFuZ2UtPmdldEJvcmRlckFuZFRleHRRdWFkcyh0ZXh0UXVhZHMpOwotICAgIEZsb2F0UmVj
dCB0b3RhbEJvdW5kaW5nQm94OwotICAgIHNpemVfdCBzaXplID0gdGV4dFF1YWRzLnNpemUoKTsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaTwgc2l6ZTsgKytpKQotICAgICAgICB0b3RhbEJvdW5k
aW5nQm94LnVuaXRlKHRleHRRdWFkc1tpXS5ib3VuZGluZ0JveCgpKTsKLSAgICByZXR1cm4gdG90
YWxCb3VuZGluZ0JveDsKLX0KLSNlbmRpZiAvLyBTVVBQT1JUX0FVVE9DT1JSRUNUSU9OX1BBTkVM
Ci0KIHN0YXRpYyBjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+JiBtYXJr
ZXJUeXBlc0ZvckF1dG9jb3JyZWN0aW9uKCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFZl
Y3RvcjxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4sIG1hcmtlclR5cGVzRm9yQXV0b0NvcnJl
Y3Rpb24sICgpKTsKQEAgLTI0MTQsMTcgKzI0MDEsMTQgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbGxN
aXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0
Q2gKICAgICAgICAgICAgIGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVuZ3RoID09IHNwZWxsaW5nUmFu
Z2VFbmRPZmZzZXQpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gV2Ugb25seSBzaG93IHRoZSBj
b3JyZWN0aW9uIHBhbmVsIG9uIHRoZSBsYXN0IHdvcmQuCi0gICAgICAgICAgICAgICAgICAgIFZl
Y3RvcjxGbG9hdFF1YWQ+IHRleHRRdWFkczsKLSAgICAgICAgICAgICAgICAgICAgcmFuZ2VUb1Jl
cGxhY2UtPmdldEJvcmRlckFuZFRleHRRdWFkcyh0ZXh0UXVhZHMpOwotICAgICAgICAgICAgICAg
ICAgICBWZWN0b3I8RmxvYXRRdWFkPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gdGV4dFF1YWRzLmVu
ZCgpOwotICAgICAgICAgICAgICAgICAgICBGbG9hdFJlY3QgdG90YWxCb3VuZGluZ0JveDsKLSAg
ICAgICAgICAgICAgICAgICAgZm9yIChWZWN0b3I8RmxvYXRRdWFkPjo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSB0ZXh0UXVhZHMuYmVnaW4oKTsgaXQgPCBlbmQ7ICsraXQpCi0gICAgICAgICAgICAgICAg
ICAgICAgICB0b3RhbEJvdW5kaW5nQm94LnVuaXRlKGl0LT5ib3VuZGluZ0JveCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gcmVjdFRvV2luZG93KHJhbmdl
VG9SZXBsYWNlLT5ib3VuZGluZ1JlY3QoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChib3Vu
ZGluZ0JveC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJhbmdlVG9CZVJlcGxhY2VkID0g
cmFuZ2VUb1JlcGxhY2U7CiAgICAgICAgICAgICAgICAgICAgIG1fY29ycmVjdGlvblBhbmVsSW5m
by5yZXBsYWNlZFN0cmluZyA9IHBsYWluVGV4dChyYW5nZVRvUmVwbGFjZS5nZXQoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIG1fY29ycmVjdGlvblBhbmVsSW5mby5yZXBsYWNlbWVudFN0cmluZyA9
IHJlc3VsdC0+cmVwbGFjZW1lbnQ7CiAgICAgICAgICAgICAgICAgICAgIG1fY29ycmVjdGlvblBh
bmVsSW5mby5pc0FjdGl2ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGNsaWVudCgpLT5z
aG93Q29ycmVjdGlvblBhbmVsKG1fY29ycmVjdGlvblBhbmVsSW5mby5wYW5lbFR5cGUsIHRvdGFs
Qm91bmRpbmdCb3gsIG1fY29ycmVjdGlvblBhbmVsSW5mby5yZXBsYWNlZFN0cmluZywgcmVzdWx0
LT5yZXBsYWNlbWVudCwgVmVjdG9yPFN0cmluZz4oKSwgdGhpcyk7CisgICAgICAgICAgICAgICAg
ICAgIGNsaWVudCgpLT5zaG93Q29ycmVjdGlvblBhbmVsKG1fY29ycmVjdGlvblBhbmVsSW5mby5w
YW5lbFR5cGUsIGJvdW5kaW5nQm94LCBtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmVwbGFjZWRTdHJp
bmcsIHJlc3VsdC0+cmVwbGFjZW1lbnQsIFZlY3RvcjxTdHJpbmc+KCksIHRoaXMpOwogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
Ly8gSWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIHNob3dpbmcgY29ycmVjdGlvbiBwYW5l
bCwgd2UgaWdub3JlIG90aGVyIGNvcnJlY3Rpb24gb3IgcmVwbGFjZW1lbnQuCkBAIC0yNTUyLDcg
KzI1MzYsOSBAQCB2b2lkIEVkaXRvcjo6Y29ycmVjdGlvblBhbmVsVGltZXJGaXJlZChUaW1lcjxF
ZGl0b3I+KikKICAgICBjYXNlIENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZVJldmVyc2lv
bjogewogICAgICAgICBtX2NvcnJlY3Rpb25QYW5lbEluZm8uaXNBY3RpdmUgPSB0cnVlOwogICAg
ICAgICBtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmVwbGFjZWRTdHJpbmcgPSBwbGFpblRleHQobV9j
b3JyZWN0aW9uUGFuZWxJbmZvLnJhbmdlVG9CZVJlcGxhY2VkLmdldCgpKTsKLSAgICAgICAgY2xp
ZW50KCktPnNob3dDb3JyZWN0aW9uUGFuZWwobV9jb3JyZWN0aW9uUGFuZWxJbmZvLnBhbmVsVHlw
ZSwgYm91bmRpbmdCb3hGb3JSYW5nZShtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmFuZ2VUb0JlUmVw
bGFjZWQuZ2V0KCkpLCBtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmVwbGFjZWRTdHJpbmcsIG1fY29y
cmVjdGlvblBhbmVsSW5mby5yZXBsYWNlbWVudFN0cmluZywgVmVjdG9yPFN0cmluZz4oKSwgdGhp
cyk7CisgICAgICAgIEZsb2F0UmVjdCBib3VuZGluZ0JveCA9IHJlY3RUb1dpbmRvdyhtX2NvcnJl
Y3Rpb25QYW5lbEluZm8ucmFuZ2VUb0JlUmVwbGFjZWQtPmJvdW5kaW5nQm94KCkpOworICAgICAg
ICBpZiAoIWJvdW5kaW5nQm94LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNsaWVudCgpLT5zaG93
Q29ycmVjdGlvblBhbmVsKG1fY29ycmVjdGlvblBhbmVsSW5mby5wYW5lbFR5cGUsIGJvdW5kaW5n
Qm94LCBtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmVwbGFjZWRTdHJpbmcsIG1fY29ycmVjdGlvblBh
bmVsSW5mby5yZXBsYWNlbWVudFN0cmluZywgVmVjdG9yPFN0cmluZz4oKSwgdGhpcyk7CiAgICAg
fQogICAgICAgICBicmVhazsKICAgICBjYXNlIENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlw
ZVNwZWxsaW5nU3VnZ2VzdGlvbnM6IHsKQEAgLTI1NjgsNyArMjU1NCw5IEBAIHZvaWQgRWRpdG9y
Ojpjb3JyZWN0aW9uUGFuZWxUaW1lckZpcmVkKFRpbWVyPEVkaXRvcj4qKQogICAgICAgICBTdHJp
bmcgdG9wU3VnZ2VzdGlvbiA9IHN1Z2dlc3Rpb25zLmZpcnN0KCk7CiAgICAgICAgIHN1Z2dlc3Rp
b25zLnJlbW92ZSgwKTsKICAgICAgICAgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLmlzQWN0aXZlID0g
dHJ1ZTsKLSAgICAgICAgY2xpZW50KCktPnNob3dDb3JyZWN0aW9uUGFuZWwobV9jb3JyZWN0aW9u
UGFuZWxJbmZvLnBhbmVsVHlwZSwgYm91bmRpbmdCb3hGb3JSYW5nZShtX2NvcnJlY3Rpb25QYW5l
bEluZm8ucmFuZ2VUb0JlUmVwbGFjZWQuZ2V0KCkpLCBtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmVw
bGFjZWRTdHJpbmcsIHRvcFN1Z2dlc3Rpb24sIHN1Z2dlc3Rpb25zLCB0aGlzKTsKKyAgICAgICAg
RmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gcmVjdFRvV2luZG93KG1fY29ycmVjdGlvblBhbmVsSW5m
by5yYW5nZVRvQmVSZXBsYWNlZC0+Ym91bmRpbmdCb3goKSk7CisgICAgICAgIGlmICghYm91bmRp
bmdCb3guaXNFbXB0eSgpKQorICAgICAgICAgICAgY2xpZW50KCktPnNob3dDb3JyZWN0aW9uUGFu
ZWwobV9jb3JyZWN0aW9uUGFuZWxJbmZvLnBhbmVsVHlwZSwgYm91bmRpbmdCb3gsIG1fY29ycmVj
dGlvblBhbmVsSW5mby5yZXBsYWNlZFN0cmluZywgdG9wU3VnZ2VzdGlvbiwgc3VnZ2VzdGlvbnMs
IHRoaXMpOwogICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzYxOCw0ICszNjA2LDE2
IEBAIGJvb2wgRWRpdG9yOjpzZWxlY3Rpb25TdGFydEhhc1NwZWxsaW5nTWFya2VyRm9yKGludCBm
cm9tLCBpbnQgbGVuZ3RoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorRmxvYXRSZWN0
IEVkaXRvcjo6cmVjdFRvV2luZG93KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKK3sKKyAg
ICBpZiAocmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiByZWN0OworCisgICAgRnJhbWVW
aWV3KiB2aWV3ID0gZnJhbWUoKS0+dmlldygpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0
dXJuIEZsb2F0UmVjdCgpOworCisgICAgcmV0dXJuIHZpZXctPmNvbnRlbnRzVG9XaW5kb3coSW50
UmVjdChyZWN0KSk7Cit9ICAgICAgICAKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmgKaW5kZXggNTk1Yjc3ZWYyNTgzMjFhOGM2OWQ3ZGRjYzYzNDk3Mjc2MWQx
MmZiNi4uM2Y5N2ZjOGRhYjY4MjQyZTMwM2FjMmM2MDJiNzVkOTlkMGU4NjFhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oCkBAIC00MzAsNiArNDMwLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFw
cGx5Q29ycmVjdGlvblBhbmVsSW5mbyhjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtl
clR5cGU+JiBtYXJrZXJUeXBlc1RvQWRkKTsKICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBjb3JyZWN0
aW9uIHdhcyBhcHBsaWVkLCBmYWxzZSBvdGhlcndpc2UuCiAgICAgYm9vbCBhcHBseUF1dG9jb3Jy
ZWN0aW9uQmVmb3JlVHlwaW5nSWZBcHByb3ByaWF0ZSgpOworCisgICAgLy8gQ29udmVydCBhYm9s
dXN0aW9uIChwYWdlKSBjb29yZGluYXRlIHRvIHdpbmRvdyBzcGFjZQorICAgIEZsb2F0UmVjdCBy
ZWN0VG9XaW5kb3coY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CiB9OwogCiBpbmxpbmUgdm9pZCBF
ZGl0b3I6OnNldFN0YXJ0TmV3S2lsbFJpbmdTZXF1ZW5jZShib29sIGZsYWcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9tYW51YWwtdGVzdHMvYXV0b2NvcnJlY3Rpb24vYXV0b2NvcnJlY3Rp
b24taW4taWZyYW1lLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9tYW51YWwtdGVzdHMvYXV0b2NvcnJl
Y3Rpb24vYXV0b2NvcnJlY3Rpb24taW4taWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzRlYmJjZjI3
NjJhZTJiYjY5NjRlMGQ2MzZiMWY0MWJiODk5ODQ1MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL21hbnVhbC10ZXN0cy9hdXRvY29ycmVjdGlvbi9hdXRvY29ycmVjdGlvbi1pbi1p
ZnJhbWUuaHRtbApAQCAtMCwwICsxLDE2IEBACis8aHRtbD4KKzxoZWFkPgorCis8dGl0bGU+VGVz
dCBhdXRvY29ycmVjaXRvbiBVSSBwb3NpdGlvbmluZyBpbiBpZnJhbWU8L3RpdGxlPgorPC9oZWFk
PgorPGJvZHk+Cis8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhdXRvY29ycmVjdGlvbiBVSSBp
cyBwb3NpdGlvbmVkIGNvcnJlY3RseSB3aGVuIHRoZSBjb3JyZWN0ZWQgd29yZCBpcyBpbiBhbiBp
ZnJhbWUuPC9wPgorPHA+QWZ0ZXIgdHlwaW5nICJ0aGUgbWFuYWciLCB5b3Ugc2hvdWxkIHNlZSB0
aGUgYXV0b2NvcnJlY3Rpb24gVUkgaXMgc2hvd24gYmVsb3cgdGhlIGJvdW5kaW5nIGJveCBvZiB0
aGUgY29ycmVjdGVkIHdvcmQgIm1hbmFnIi48L3A+Cis8YnI+Cis8YnI+Cis8YnI+Cis8ZGl2IHN0
eWxlPSItd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDEwMHB4LCAxMDBweCkgcm90YXRlKDIw
ZGVnKSI+CisgIDxpZnJhbWUgc3JjPSJkb2N1bWVudC1mb3ItaWZyYW1lLXRlc3QuaHRtbCI+PC9p
ZnJhbWU+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL21hbnVhbC10ZXN0cy9hdXRvY29ycmVjdGlvbi9kb2N1bWVudC1mb3ItaWZyYW1lLXRlc3Qu
aHRtbCBiL1NvdXJjZS9XZWJDb3JlL21hbnVhbC10ZXN0cy9hdXRvY29ycmVjdGlvbi9kb2N1bWVu
dC1mb3ItaWZyYW1lLXRlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MjlhODMwZjhhNmE2ZTgyZDUyOTNk
ZTBjNjVlMmFkYjgxMTYyYmU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbWFu
dWFsLXRlc3RzL2F1dG9jb3JyZWN0aW9uL2RvY3VtZW50LWZvci1pZnJhbWUtdGVzdC5odG1sCkBA
IC0wLDAgKzEsMzYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisuZWRpdGluZyB7CisgICAg
Ym9yZGVyOiAycHggc29saWQgcmVkOworICAgIHBhZGRpbmc6IDEycHg7CisgICAgZm9udC1zaXpl
OiAyNHB4OworfQorPC9zdHlsZT4KKworPHNjcmlwdCBzcmM9Li4vLi4vLi4vLi4vTGF5b3V0VGVz
dHMvZWRpdGluZy9lZGl0aW5nLmpzIGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0ph
dmFTY3JpcHQiID48L3NjcmlwdD4KKworPHNjcmlwdD4KK2Z1bmN0aW9uIGVkaXRpbmdUZXN0KCkg
eworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCd0Jyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1h
bmQoJ2gnKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnZScpOworICAgIHR5cGVDaGFyYWN0
ZXJDb21tYW5kKCcgJyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ20nKTsKKyAgICB0eXBl
Q2hhcmFjdGVyQ29tbWFuZCgnYScpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCduJyk7Cisg
ICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ2EnKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgn
ZycpOworfQorPC9zY3JpcHQ+CisKKzxkaXYgY29udGVudGVkaXRhYmxlIGlkPSJyb290IiBjbGFz
cz0iZWRpdGluZyI+Cis8c3BhbiBpZD0idGVzdCI+PC9zcGFuPgorPC9kaXY+CisKKzxzY3JpcHQ+
CitydW5FZGl0aW5nVGVzdCgpOworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwppbmRleCAyNzcwYWI4NjNkODM4N2FlYTBjMjlkYjAwZDUyMzI4ODkzNzQxY2IzLi4z
YjhlNDA2MmNkZjc3NmIxZWQ5ZTc3MTBiMzViMzQzNWUzNmYxMTk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDMtMDQgIEppYSBQdSAgPGpwdUBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT24gTWFjLCB0
aGUgYm91bmRpbmcgYm94IHNlbnQgdG8gRWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlvblBhbmVs
KCkgaXMgaW5jb3JyZWN0IHdoZW4gdGhlIGNvcnJlY3Rpb24gb2NjdXJzIGluIGFuIGlmcmFtZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1NzE3Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MDE4MTI3PgorCisgICAgICAgIFdpdGggdGhlIGNoYW5n
ZSBpbiBXZWJDb3JlLCB0aGUgYm91bmRpbmcgYm94IHBhc3NlZCBpbnRvIEVkaXRvckNsaWVudDo6
c2hvd0NvcnJlY3Rpb25QYW5lbCgpCisgICAgICAgIGlzIGFscmVhZHkgaW4gd2luZG93IGNvb3Jk
aW5hdGUuIFdlIGRvbid0IG5lZWQgdG8gZG8gZnVydGhlciBjb252ZXJzaW9uIGFueW1vcmUuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChX
ZWJFZGl0b3JDbGllbnQ6OnNob3dDb3JyZWN0aW9uUGFuZWwpOgorCiAyMDExLTAzLTAyICBKZXNz
aWUgQmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQg
YnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCAzZjdhNTNmNGYwMGM4Y2ExMDA5NjE2NjFlMjU0
MDZiYmU3YzU2ODQ3Li5hZDhlMWJlMzRjZjI2ZGM0MTkxNjdjODYxNzkzMDQ4YmUyOGU0M2QzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lm1tCkBAIC04OTQsMTAgKzg5NCw2IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp1cGRhdGVT
cGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgU3RyaW5nJiBiYWRHcmFtbWFyCiB2b2lk
IFdlYkVkaXRvckNsaWVudDo6c2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9u
UGFuZWxJbmZvOjpQYW5lbFR5cGUgcGFuZWxUeXBlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5n
Qm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0
aXZlUmVwbGFjZW1lbnRTdHJpbmdzLCBFZGl0b3IqIGVkaXRvcikgewogICAgIGRpc21pc3NDb3Jy
ZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbElnbm9yZWQpOwog
Ci0gICAgTlNSZWN0IGJvdW5kaW5nQm94QXNOU1JlY3QgPSBib3VuZGluZ0JveE9mUmVwbGFjZWRT
dHJpbmc7Ci0gICAgTlNSZWN0IHdlYlZpZXdGcmFtZSA9IG1fd2ViVmlldy5mcmFtZTsKLSAgICBi
b3VuZGluZ0JveEFzTlNSZWN0Lm9yaWdpbi55ID0gd2ViVmlld0ZyYW1lLnNpemUuaGVpZ2h0LU5T
TWF4WShib3VuZGluZ0JveEFzTlNSZWN0KTsKLQogICAgIC8vIE5lZWQgdG8gZXhwbGljaXRseSB1
c2UgdGhlc2UgbG9jYWwgTlNTdHJpbmcgb2JqZWN0cywgYmVjYXVzZSB0aGUgQysrIHJlZmVyZW5j
ZXMgbWF5IGJlIGludmFsaWRhdGVkIGJ5IHRoZSB0aW1lIHRoZSBibG9jayBiZWxvdyBpcyBleGVj
dXRlZC4KICAgICBOU1N0cmluZyAqcmVwbGFjZWRTdHJpbmdBc05TU3RyaW5nID0gcmVwbGFjZWRT
dHJpbmc7CiAgICAgTlNTdHJpbmcgKnJlcGxhY2VtZW50U3RyaW5nQXNOU1N0cmluZyA9IHJlcGxh
Y2VtZW50U3RyaW5nOwpAQCAtOTE1LDcgKzkxMSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpz
aG93Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OkNvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlw
CiAgICAgICAgICAgICBbYWx0ZXJuYXRpdmVTdHJpbmdzIGFkZE9iamVjdDooTlNTdHJpbmcqKWFs
dGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzW2ldXTsKICAgICB9CiAgICAgTlNTcGVsbENoZWNr
ZXIgKnNwZWxsQ2hlY2tlciA9IFtOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdOwot
ICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBzaG93Q29ycmVjdGlvbkJ1
YmJsZU9mVHlwZTpidWJibGVUeXBlIHByaW1hcnlTdHJpbmc6cmVwbGFjZW1lbnRTdHJpbmdBc05T
U3RyaW5nIGFsdGVybmF0aXZlU3RyaW5nczphbHRlcm5hdGl2ZVN0cmluZ3MgZm9yU3RyaW5nSW5S
ZWN0OmJvdW5kaW5nQm94QXNOU1JlY3QgdmlldzptX3dlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6
XihOU1N0cmluZyAqYWNjZXB0ZWRTdHJpbmcpIHsKKyAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJl
ZFNwZWxsQ2hlY2tlcl0gc2hvd0NvcnJlY3Rpb25CdWJibGVPZlR5cGU6YnViYmxlVHlwZSBwcmlt
YXJ5U3RyaW5nOnJlcGxhY2VtZW50U3RyaW5nQXNOU1N0cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6
YWx0ZXJuYXRpdmVTdHJpbmdzIGZvclN0cmluZ0luUmVjdDpib3VuZGluZ0JveE9mUmVwbGFjZWRT
dHJpbmcgdmlldzptX3dlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyAqYWNjZXB0
ZWRTdHJpbmcpIHsKICAgICAgICAgc3dpdGNoIChidWJibGVUeXBlKSB7CiAgICAgICAgIGNhc2Ug
TlNDb3JyZWN0aW9uQnViYmxlVHlwZUNvcnJlY3Rpb246CiAgICAgICAgICAgICBpZiAoYWNjZXB0
ZWRTdHJpbmcpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84786</attachid>
            <date>2011-03-04 11:34:57 -0800</date>
            <delta_ts>2011-03-04 22:12:51 -0800</delta_ts>
            <desc>Patch (v3)</desc>
            <filename>bug-55717-20110304113455.patch</filename>
            <type>text/plain</type>
            <size>14318</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODAyNDYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMjMxZDU5MGQ2N2ZkMTAx
ODVhNjI3ZmJlYzMxZGI2MGNjZjM3N2ExLi45MTI5OGU1YjkxM2Y1ZDg3ZTM5ODE5YzhhZGUwZDAw
NzY5ODhkZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDMtMDQgIEppYSBQ
dSAgPGpwdUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgT24gTWFjLCB0aGUgYm91bmRpbmcgYm94IHNlbnQgdG8gRWRpdG9yQ2xpZW50
OjpzaG93Q29ycmVjdGlvblBhbmVsKCkgaXMgaW5jb3JyZWN0IHdoZW4gdGhlIGNvcnJlY3Rpb24g
b2NjdXJzIGluIGFuIGlmcmFtZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU1NzE3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MDE4MTI3PgorCisg
ICAgICAgIG1hbnVhbC10ZXN0OiBtYW51YWwtdGVzdHMvcGxhdGZvcm1zL21hYy9hdXRvY29ycmVj
dGlvbi9hdXRvY29ycmVjdGlvbi1pbi1pZnJhbWUuaHRtbAorCisgICAgICAgIFByZXZpb3VzbHks
IHRoZSBib3VuZGluZyBib3ggcGFzc2VkIGludG8gRWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlv
blBhbmVsKCkgaXMgaW4gdGhlIGZyYW1lJ3MKKyAgICAgICAgY29vcmRpbmF0ZS4gVGhpcyBpcyBp
bmNvcnJlY3Qgd2hlbiB0aGUgY29ycmVjdGlvbiBvY2N1cnMgaW4gYW4gaWZyYW1lLiBUaGlzIHBh
dGNoIGFkZGVkIGNvZGUKKyAgICAgICAgdG8gY29udmVydCB0aGUgYm91bmRpbmcgYm94IHRvIHdp
bmRvdyBjb29yZGluYXRlIHVzaW5nIFNjcm9sbFZpZXc6OmNvbnRlbnRUb1dpbmRvdygpLgorCisg
ICAgICAgICogZG9tL1JhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpnZXRCb3Vu
ZGluZ0NsaWVudFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OmJvdW5kaW5nUmVjdCk6
CisgICAgICAgICogZG9tL1JhbmdlLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1h
ckluUmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y29ycmVjdGlvblBhbmVsVGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndpbmRvd1JlY3RGb3JSYW5nZSk6
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBtYW51YWwtdGVzdHMvYXV0
b2NvcnJlY3Rpb24vYXV0b2NvcnJlY3Rpb24taW4taWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIG1hbnVhbC10ZXN0cy9hdXRvY29ycmVjdGlvbi9kb2N1bWVudC1mb3ItaWZyYW1lLXRlc3Qu
aHRtbDogQWRkZWQuCisKIDIwMTEtMDMtMDMgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFhIVE1MTVAgYnVpbGQgYnJva2VuIGFmdGVyIHI3ODM0Mgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9SYW5nZS5jcHAKaW5kZXggZGIwN2UxZDk1ZmQ4ZjIxNWYxNjJlMTlhZTA4OGYwOGUwM2I2
NzEzMy4uYTAzNzBmYWRmMTBmNTkzZGFhMjQ3ZGRkZjdmYTc4YmRmOTU2OGE2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
UmFuZ2UuY3BwCkBAIC0xOTAzLDIyICsxOTAzLDggQEAgUGFzc1JlZlB0cjxDbGllbnRSZWN0TGlz
dD4gUmFuZ2U6OmdldENsaWVudFJlY3RzKCkgY29uc3QKIAogUGFzc1JlZlB0cjxDbGllbnRSZWN0
PiBSYW5nZTo6Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgY29uc3QKIHsKLSAgICBpZiAoIW1fc3Rh
cnQuY29udGFpbmVyKCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgbV9vd25lckRvY3VtZW50
LT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKLQotICAgIFZlY3RvcjxG
bG9hdFF1YWQ+IHF1YWRzOwotICAgIGdldEJvcmRlckFuZFRleHRRdWFkcyhxdWFkcyk7Ci0KLSAg
ICBpZiAocXVhZHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRl
KCk7Ci0KLSAgICBGbG9hdFJlY3QgcmVzdWx0OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cXVhZHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHJlc3VsdC51bml0ZShxdWFkc1tpXS5ib3VuZGlu
Z0JveCgpKTsKLQotICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUocmVzdWx0KTsKKyAgICBG
bG9hdFJlY3QgcmVjdCA9IGJvdW5kaW5nUmVjdCgpOworICAgIHJldHVybiByZWN0LmlzRW1wdHko
KSA/IDAgOiBDbGllbnRSZWN0OjpjcmVhdGUocmVjdCk7CiB9CiAKIHN0YXRpYyB2b2lkIGFkanVz
dEZsb2F0UXVhZHNGb3JTY3JvbGxBbmRBYnNvbHV0ZVpvb20oVmVjdG9yPEZsb2F0UXVhZD4mIHF1
YWRzLCBEb2N1bWVudCogZG9jdW1lbnQsIFJlbmRlck9iamVjdCogcmVuZGVyZXIpCkBAIC0xOTcz
LDYgKzE5NTksMjYgQEAgdm9pZCBSYW5nZTo6Z2V0Qm9yZGVyQW5kVGV4dFF1YWRzKFZlY3RvcjxG
bG9hdFF1YWQ+JiBxdWFkcykgY29uc3QKICAgICB9CiB9CiAKKyAgICAKK0Zsb2F0UmVjdCBSYW5n
ZTo6Ym91bmRpbmdSZWN0KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fc3RhcnQuY29udGFpbmVyKCkp
CisgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKKworICAgIG1fb3duZXJEb2N1bWVudC0+dXBk
YXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisKKyAgICBWZWN0b3I8RmxvYXRR
dWFkPiBxdWFkczsKKyAgICBnZXRCb3JkZXJBbmRUZXh0UXVhZHMocXVhZHMpOworICAgIGlmIChx
dWFkcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKKworICAgIEZsb2F0
UmVjdCByZXN1bHQ7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkcy5zaXplKCk7ICsr
aSkKKyAgICAgICAgcmVzdWx0LnVuaXRlKHF1YWRzW2ldLmJvdW5kaW5nQm94KCkpOworCisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjaWZuZGVmIE5E
RUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUmFuZ2UuaAppbmRleCAwMWMxMmUzZGZiNDEyOWIyYjk5NDNiMDY5ZjkxNjgwYjdk
NGFiMWNhLi41NjM3Yjc3YWIxN2Y0ZDY3Nzg4NTY3ZTUxYzcxNDFhMDcwYzkzNWRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
UmFuZ2UuaApAQCAtMTExLDYgKzExMSw3IEBAIHB1YmxpYzoKICAgICAvLyBUcmFuc2Zvcm0tZnJp
ZW5kbHkKICAgICB2b2lkIHRleHRRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wgdXNlU2Vs
ZWN0aW9uSGVpZ2h0ID0gZmFsc2UpOwogICAgIHZvaWQgZ2V0Qm9yZGVyQW5kVGV4dFF1YWRzKFZl
Y3RvcjxGbG9hdFF1YWQ+JikgY29uc3Q7CisgICAgRmxvYXRSZWN0IGJvdW5kaW5nUmVjdCgpIGNv
bnN0OwogCiAgICAgdm9pZCBub2RlQ2hpbGRyZW5DaGFuZ2VkKENvbnRhaW5lck5vZGUqKTsKICAg
ICB2b2lkIG5vZGVDaGlsZHJlbldpbGxCZVJlbW92ZWQoQ29udGFpbmVyTm9kZSopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDMyODcyMzFkNzMwMTkxNTVlOTc5NTFjMThkMWFjYzkw
NTY3Y2M0MzAuLjJlNjNiYTBmOGQzMzI2NWQ4ZGI0NDZmYmEwODI1NWNmMDg0NzM3NWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTEwMiwxOSArMTAyLDYgQEAgc3RhdGljIGlubGlu
ZSBib29sIGlzQW1iaWd1b3VzQm91bmRhcnlDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyKQogICAg
IHJldHVybiBjaGFyYWN0ZXIgPT0gJ1wnJyB8fCBjaGFyYWN0ZXIgPT0gcmlnaHRTaW5nbGVRdW90
YXRpb25NYXJrIHx8IGNoYXJhY3RlciA9PSBoZWJyZXdQdW5jdHVhdGlvbkdlcnNoYXlpbTsKIH0K
IAotI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKLXN0YXRpYyBGbG9hdFJlY3QgYm91
bmRpbmdCb3hGb3JSYW5nZShSYW5nZSogcmFuZ2UpCi17Ci0gICAgVmVjdG9yPEZsb2F0UXVhZD4g
dGV4dFF1YWRzOwotICAgIHJhbmdlLT5nZXRCb3JkZXJBbmRUZXh0UXVhZHModGV4dFF1YWRzKTsK
LSAgICBGbG9hdFJlY3QgdG90YWxCb3VuZGluZ0JveDsKLSAgICBzaXplX3Qgc2l6ZSA9IHRleHRR
dWFkcy5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGk8IHNpemU7ICsraSkKLSAgICAg
ICAgdG90YWxCb3VuZGluZ0JveC51bml0ZSh0ZXh0UXVhZHNbaV0uYm91bmRpbmdCb3goKSk7Ci0g
ICAgcmV0dXJuIHRvdGFsQm91bmRpbmdCb3g7Ci19Ci0jZW5kaWYgLy8gU1VQUE9SVF9BVVRPQ09S
UkVDVElPTl9QQU5FTAotCiBzdGF0aWMgY29uc3QgVmVjdG9yPERvY3VtZW50TWFya2VyOjpNYXJr
ZXJUeXBlPiYgbWFya2VyVHlwZXNGb3JBdXRvY29ycmVjdGlvbigpCiB7CiAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+LCBtYXJrZXJUeXBl
c0ZvckF1dG9Db3JyZWN0aW9uLCAoKSk7CkBAIC0yNDE0LDE3ICsyNDAxLDE0IEBAIHZvaWQgRWRp
dG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2lu
Z09wdGlvbnMgdGV4dENoCiAgICAgICAgICAgICBpZiAoc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5l
bCkgewogICAgICAgICAgICAgICAgIGlmIChyZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA9
PSBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG9u
bHkgc2hvdyB0aGUgY29ycmVjdGlvbiBwYW5lbCBvbiB0aGUgbGFzdCB3b3JkLgotICAgICAgICAg
ICAgICAgICAgICBWZWN0b3I8RmxvYXRRdWFkPiB0ZXh0UXVhZHM7Ci0gICAgICAgICAgICAgICAg
ICAgIHJhbmdlVG9SZXBsYWNlLT5nZXRCb3JkZXJBbmRUZXh0UXVhZHModGV4dFF1YWRzKTsKLSAg
ICAgICAgICAgICAgICAgICAgVmVjdG9yPEZsb2F0UXVhZD46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IHRleHRRdWFkcy5lbmQoKTsKLSAgICAgICAgICAgICAgICAgICAgRmxvYXRSZWN0IHRvdGFsQm91
bmRpbmdCb3g7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoVmVjdG9yPEZsb2F0UXVhZD46OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gdGV4dFF1YWRzLmJlZ2luKCk7IGl0IDwgZW5kOyArK2l0KQotICAg
ICAgICAgICAgICAgICAgICAgICAgdG90YWxCb3VuZGluZ0JveC51bml0ZShpdC0+Ym91bmRpbmdC
b3goKSk7CisgICAgICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBib3VuZGluZ0JveCA9IHdpbmRv
d1JlY3RGb3JSYW5nZShyYW5nZVRvUmVwbGFjZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChib3VuZGluZ0JveC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJhbmdlVG9CZVJl
cGxhY2VkID0gcmFuZ2VUb1JlcGxhY2U7CiAgICAgICAgICAgICAgICAgICAgIG1fY29ycmVjdGlv
blBhbmVsSW5mby5yZXBsYWNlZFN0cmluZyA9IHBsYWluVGV4dChyYW5nZVRvUmVwbGFjZS5nZXQo
KSk7CiAgICAgICAgICAgICAgICAgICAgIG1fY29ycmVjdGlvblBhbmVsSW5mby5yZXBsYWNlbWVu
dFN0cmluZyA9IHJlc3VsdC0+cmVwbGFjZW1lbnQ7CiAgICAgICAgICAgICAgICAgICAgIG1fY29y
cmVjdGlvblBhbmVsSW5mby5pc0FjdGl2ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGNs
aWVudCgpLT5zaG93Q29ycmVjdGlvblBhbmVsKG1fY29ycmVjdGlvblBhbmVsSW5mby5wYW5lbFR5
cGUsIHRvdGFsQm91bmRpbmdCb3gsIG1fY29ycmVjdGlvblBhbmVsSW5mby5yZXBsYWNlZFN0cmlu
ZywgcmVzdWx0LT5yZXBsYWNlbWVudCwgVmVjdG9yPFN0cmluZz4oKSwgdGhpcyk7CisgICAgICAg
ICAgICAgICAgICAgIGNsaWVudCgpLT5zaG93Q29ycmVjdGlvblBhbmVsKG1fY29ycmVjdGlvblBh
bmVsSW5mby5wYW5lbFR5cGUsIGJvdW5kaW5nQm94LCBtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmVw
bGFjZWRTdHJpbmcsIHJlc3VsdC0+cmVwbGFjZW1lbnQsIFZlY3RvcjxTdHJpbmc+KCksIHRoaXMp
OwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgLy8gSWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIHNob3dpbmcgY29ycmVj
dGlvbiBwYW5lbCwgd2UgaWdub3JlIG90aGVyIGNvcnJlY3Rpb24gb3IgcmVwbGFjZW1lbnQuCkBA
IC0yNTUyLDcgKzI1MzYsOSBAQCB2b2lkIEVkaXRvcjo6Y29ycmVjdGlvblBhbmVsVGltZXJGaXJl
ZChUaW1lcjxFZGl0b3I+KikKICAgICBjYXNlIENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlw
ZVJldmVyc2lvbjogewogICAgICAgICBtX2NvcnJlY3Rpb25QYW5lbEluZm8uaXNBY3RpdmUgPSB0
cnVlOwogICAgICAgICBtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmVwbGFjZWRTdHJpbmcgPSBwbGFp
blRleHQobV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJhbmdlVG9CZVJlcGxhY2VkLmdldCgpKTsKLSAg
ICAgICAgY2xpZW50KCktPnNob3dDb3JyZWN0aW9uUGFuZWwobV9jb3JyZWN0aW9uUGFuZWxJbmZv
LnBhbmVsVHlwZSwgYm91bmRpbmdCb3hGb3JSYW5nZShtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmFu
Z2VUb0JlUmVwbGFjZWQuZ2V0KCkpLCBtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmVwbGFjZWRTdHJp
bmcsIG1fY29ycmVjdGlvblBhbmVsSW5mby5yZXBsYWNlbWVudFN0cmluZywgVmVjdG9yPFN0cmlu
Zz4oKSwgdGhpcyk7CisgICAgICAgIEZsb2F0UmVjdCBib3VuZGluZ0JveCA9IHdpbmRvd1JlY3RG
b3JSYW5nZShtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmFuZ2VUb0JlUmVwbGFjZWQuZ2V0KCkpOwor
ICAgICAgICBpZiAoIWJvdW5kaW5nQm94LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNsaWVudCgp
LT5zaG93Q29ycmVjdGlvblBhbmVsKG1fY29ycmVjdGlvblBhbmVsSW5mby5wYW5lbFR5cGUsIGJv
dW5kaW5nQm94LCBtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmVwbGFjZWRTdHJpbmcsIG1fY29ycmVj
dGlvblBhbmVsSW5mby5yZXBsYWNlbWVudFN0cmluZywgVmVjdG9yPFN0cmluZz4oKSwgdGhpcyk7
CiAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIENvcnJlY3Rpb25QYW5lbEluZm86OlBh
bmVsVHlwZVNwZWxsaW5nU3VnZ2VzdGlvbnM6IHsKQEAgLTI1NjgsNyArMjU1NCw5IEBAIHZvaWQg
RWRpdG9yOjpjb3JyZWN0aW9uUGFuZWxUaW1lckZpcmVkKFRpbWVyPEVkaXRvcj4qKQogICAgICAg
ICBTdHJpbmcgdG9wU3VnZ2VzdGlvbiA9IHN1Z2dlc3Rpb25zLmZpcnN0KCk7CiAgICAgICAgIHN1
Z2dlc3Rpb25zLnJlbW92ZSgwKTsKICAgICAgICAgbV9jb3JyZWN0aW9uUGFuZWxJbmZvLmlzQWN0
aXZlID0gdHJ1ZTsKLSAgICAgICAgY2xpZW50KCktPnNob3dDb3JyZWN0aW9uUGFuZWwobV9jb3Jy
ZWN0aW9uUGFuZWxJbmZvLnBhbmVsVHlwZSwgYm91bmRpbmdCb3hGb3JSYW5nZShtX2NvcnJlY3Rp
b25QYW5lbEluZm8ucmFuZ2VUb0JlUmVwbGFjZWQuZ2V0KCkpLCBtX2NvcnJlY3Rpb25QYW5lbElu
Zm8ucmVwbGFjZWRTdHJpbmcsIHRvcFN1Z2dlc3Rpb24sIHN1Z2dlc3Rpb25zLCB0aGlzKTsKKyAg
ICAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gd2luZG93UmVjdEZvclJhbmdlKG1fY29ycmVj
dGlvblBhbmVsSW5mby5yYW5nZVRvQmVSZXBsYWNlZC5nZXQoKSk7CisgICAgICAgIGlmICghYm91
bmRpbmdCb3guaXNFbXB0eSgpKQorICAgICAgICAgICAgY2xpZW50KCktPnNob3dDb3JyZWN0aW9u
UGFuZWwobV9jb3JyZWN0aW9uUGFuZWxJbmZvLnBhbmVsVHlwZSwgYm91bmRpbmdCb3gsIG1fY29y
cmVjdGlvblBhbmVsSW5mby5yZXBsYWNlZFN0cmluZywgdG9wU3VnZ2VzdGlvbiwgc3VnZ2VzdGlv
bnMsIHRoaXMpOwogICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzYxOCw0ICszNjA2
LDEwIEBAIGJvb2wgRWRpdG9yOjpzZWxlY3Rpb25TdGFydEhhc1NwZWxsaW5nTWFya2VyRm9yKGlu
dCBmcm9tLCBpbnQgbGVuZ3RoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorRmxvYXRS
ZWN0IEVkaXRvcjo6d2luZG93UmVjdEZvclJhbmdlKGNvbnN0IFJhbmdlKiByYW5nZSkgY29uc3QK
K3sKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZSgpLT52aWV3KCk7CisgICAgcmV0dXJuIHZp
ZXcgPyB2aWV3LT5jb250ZW50c1RvV2luZG93KEludFJlY3QocmFuZ2UtPmJvdW5kaW5nUmVjdCgp
KSkgOiBGbG9hdFJlY3QoKTsKK30gICAgICAgIAorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCA1OTViNzdlZjI1ODMyMWE4YzY5ZDdkZGNjNjM0OTcy
NzYxZDEyZmI2Li44ZjJjZTQ1YzZkNzQ2NzU4NWEyZTRlMWMyMTRiZmZiNmMwZTdkOTczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTQzMCw2ICs0MzAsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgYXBwbHlDb3JyZWN0aW9uUGFuZWxJbmZvKGNvbnN0IFZlY3RvcjxEb2N1bWVudE1hcmtlcjo6
TWFya2VyVHlwZT4mIG1hcmtlclR5cGVzVG9BZGQpOwogICAgIC8vIFJldHVybiB0cnVlIGlmIGNv
cnJlY3Rpb24gd2FzIGFwcGxpZWQsIGZhbHNlIG90aGVyd2lzZS4KICAgICBib29sIGFwcGx5QXV0
b2NvcnJlY3Rpb25CZWZvcmVUeXBpbmdJZkFwcHJvcHJpYXRlKCk7CisgICAgRmxvYXRSZWN0IHdp
bmRvd1JlY3RGb3JSYW5nZShjb25zdCBSYW5nZSopIGNvbnN0OwogfTsKIAogaW5saW5lIHZvaWQg
RWRpdG9yOjpzZXRTdGFydE5ld0tpbGxSaW5nU2VxdWVuY2UoYm9vbCBmbGFnKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL2F1dG9jb3JyZWN0aW9uL2F1dG9jb3JyZWN0
aW9uLWluLWlmcmFtZS5odG1sIGIvU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL2F1dG9jb3Jy
ZWN0aW9uL2F1dG9jb3JyZWN0aW9uLWluLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0ZWJiY2Yy
NzYyYWUyYmI2OTY0ZTBkNjM2YjFmNDFiYjg5OTg0NTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9tYW51YWwtdGVzdHMvYXV0b2NvcnJlY3Rpb24vYXV0b2NvcnJlY3Rpb24taW4t
aWZyYW1lLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPGh0bWw+Cis8aGVhZD4KKworPHRpdGxlPlRl
c3QgYXV0b2NvcnJlY2l0b24gVUkgcG9zaXRpb25pbmcgaW4gaWZyYW1lPC90aXRsZT4KKzwvaGVh
ZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYXV0b2NvcnJlY3Rpb24gVUkg
aXMgcG9zaXRpb25lZCBjb3JyZWN0bHkgd2hlbiB0aGUgY29ycmVjdGVkIHdvcmQgaXMgaW4gYW4g
aWZyYW1lLjwvcD4KKzxwPkFmdGVyIHR5cGluZyAidGhlIG1hbmFnIiwgeW91IHNob3VsZCBzZWUg
dGhlIGF1dG9jb3JyZWN0aW9uIFVJIGlzIHNob3duIGJlbG93IHRoZSBib3VuZGluZyBib3ggb2Yg
dGhlIGNvcnJlY3RlZCB3b3JkICJtYW5hZyIuPC9wPgorPGJyPgorPGJyPgorPGJyPgorPGRpdiBz
dHlsZT0iLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDBweCwgMTAwcHgpIHJvdGF0ZSgy
MGRlZykiPgorICA8aWZyYW1lIHNyYz0iZG9jdW1lbnQtZm9yLWlmcmFtZS10ZXN0Lmh0bWwiPjwv
aWZyYW1lPgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9tYW51YWwtdGVzdHMvYXV0b2NvcnJlY3Rpb24vZG9jdW1lbnQtZm9yLWlmcmFtZS10ZXN0
Lmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9tYW51YWwtdGVzdHMvYXV0b2NvcnJlY3Rpb24vZG9jdW1l
bnQtZm9yLWlmcmFtZS10ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjI5YTgzMGY4YTZhNmU4MmQ1Mjkz
ZGUwYzY1ZTJhZGI4MTE2MmJlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL21h
bnVhbC10ZXN0cy9hdXRvY29ycmVjdGlvbi9kb2N1bWVudC1mb3ItaWZyYW1lLXRlc3QuaHRtbApA
QCAtMCwwICsxLDM2IEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLmVkaXRpbmcgeworICAg
IGJvcmRlcjogMnB4IHNvbGlkIHJlZDsKKyAgICBwYWRkaW5nOiAxMnB4OworICAgIGZvbnQtc2l6
ZTogMjRweDsKK30KKzwvc3R5bGU+CisKKzxzY3JpcHQgc3JjPS4uLy4uLy4uLy4uL0xheW91dFRl
c3RzL2VkaXRpbmcvZWRpdGluZy5qcyBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9K
YXZhU2NyaXB0IiA+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+CitmdW5jdGlvbiBlZGl0aW5nVGVzdCgp
IHsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgndCcpOworICAgIHR5cGVDaGFyYWN0ZXJDb21t
YW5kKCdoJyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ2UnKTsKKyAgICB0eXBlQ2hhcmFj
dGVyQ29tbWFuZCgnICcpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdtJyk7CisgICAgdHlw
ZUNoYXJhY3RlckNvbW1hbmQoJ2EnKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnbicpOwor
ICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdhJyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQo
J2cnKTsKK30KKzwvc2NyaXB0PgorCis8ZGl2IGNvbnRlbnRlZGl0YWJsZSBpZD0icm9vdCIgY2xh
c3M9ImVkaXRpbmciPgorPHNwYW4gaWQ9InRlc3QiPjwvc3Bhbj4KKzwvZGl2PgorCis8c2NyaXB0
PgorcnVuRWRpdGluZ1Rlc3QoKTsKKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKaW5kZXggMjc3MGFiODYzZDgzODdhZWEwYzI5ZGIwMGQ1MjMyODg5Mzc0MWNiMy4u
M2I4ZTQwNjJjZGY3NzZiMWVkOWU3NzEwYjM1YjM0MzVlMzZmMTE5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTAzLTA0ICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE9uIE1hYywg
dGhlIGJvdW5kaW5nIGJveCBzZW50IHRvIEVkaXRvckNsaWVudDo6c2hvd0NvcnJlY3Rpb25QYW5l
bCgpIGlzIGluY29ycmVjdCB3aGVuIHRoZSBjb3JyZWN0aW9uIG9jY3VycyBpbiBhbiBpZnJhbWUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTcxNwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTAxODEyNz4KKworICAgICAgICBXaXRoIHRoZSBjaGFu
Z2UgaW4gV2ViQ29yZSwgdGhlIGJvdW5kaW5nIGJveCBwYXNzZWQgaW50byBFZGl0b3JDbGllbnQ6
OnNob3dDb3JyZWN0aW9uUGFuZWwoKQorICAgICAgICBpcyBhbHJlYWR5IGluIHdpbmRvdyBjb29y
ZGluYXRlLiBXZSBkb24ndCBuZWVkIHRvIGRvIGZ1cnRoZXIgY29udmVyc2lvbiBhbnltb3JlLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAo
V2ViRWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlvblBhbmVsKToKKwogMjAxMS0wMy0wMiAgSmVz
c2llIEJlcmxpbiAgPGpiZXJsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVk
IGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggM2Y3YTUzZjRmMDBjOGNhMTAwOTYxNjYxZTI1
NDA2YmJlN2M1Njg0Ny4uYWQ4ZTFiZTM0Y2YyNmRjNDE5MTY3Yzg2MTc5MzA0OGJlMjhlNDNkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5tbQpAQCAtODk0LDEwICs4OTQsNiBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dXBkYXRl
U3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYgYmFkR3JhbW1hcgogdm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OnNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29ycmVjdGlv
blBhbmVsSW5mbzo6UGFuZWxUeXBlIHBhbmVsVHlwZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGlu
Z0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5h
dGl2ZVJlcGxhY2VtZW50U3RyaW5ncywgRWRpdG9yKiBlZGl0b3IpIHsKICAgICBkaXNtaXNzQ29y
cmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWxJZ25vcmVkKTsK
IAotICAgIE5TUmVjdCBib3VuZGluZ0JveEFzTlNSZWN0ID0gYm91bmRpbmdCb3hPZlJlcGxhY2Vk
U3RyaW5nOwotICAgIE5TUmVjdCB3ZWJWaWV3RnJhbWUgPSBtX3dlYlZpZXcuZnJhbWU7Ci0gICAg
Ym91bmRpbmdCb3hBc05TUmVjdC5vcmlnaW4ueSA9IHdlYlZpZXdGcmFtZS5zaXplLmhlaWdodC1O
U01heFkoYm91bmRpbmdCb3hBc05TUmVjdCk7Ci0KICAgICAvLyBOZWVkIHRvIGV4cGxpY2l0bHkg
dXNlIHRoZXNlIGxvY2FsIE5TU3RyaW5nIG9iamVjdHMsIGJlY2F1c2UgdGhlIEMrKyByZWZlcmVu
Y2VzIG1heSBiZSBpbnZhbGlkYXRlZCBieSB0aGUgdGltZSB0aGUgYmxvY2sgYmVsb3cgaXMgZXhl
Y3V0ZWQuCiAgICAgTlNTdHJpbmcgKnJlcGxhY2VkU3RyaW5nQXNOU1N0cmluZyA9IHJlcGxhY2Vk
U3RyaW5nOwogICAgIE5TU3RyaW5nICpyZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJpbmcgPSByZXBs
YWNlbWVudFN0cmluZzsKQEAgLTkxNSw3ICs5MTEsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6
c2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5
cAogICAgICAgICAgICAgW2FsdGVybmF0aXZlU3RyaW5ncyBhZGRPYmplY3Q6KE5TU3RyaW5nKilh
bHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5nc1tpXV07CiAgICAgfQogICAgIE5TU3BlbGxDaGVj
a2VyICpzcGVsbENoZWNrZXIgPSBbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXTsK
LSAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gc2hvd0NvcnJlY3Rpb25C
dWJibGVPZlR5cGU6YnViYmxlVHlwZSBwcmltYXJ5U3RyaW5nOnJlcGxhY2VtZW50U3RyaW5nQXNO
U1N0cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVTdHJpbmdzIGZvclN0cmluZ0lu
UmVjdDpib3VuZGluZ0JveEFzTlNSZWN0IHZpZXc6bV93ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVy
Ol4oTlNTdHJpbmcgKmFjY2VwdGVkU3RyaW5nKSB7CisgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFy
ZWRTcGVsbENoZWNrZXJdIHNob3dDb3JyZWN0aW9uQnViYmxlT2ZUeXBlOmJ1YmJsZVR5cGUgcHJp
bWFyeVN0cmluZzpyZXBsYWNlbWVudFN0cmluZ0FzTlNTdHJpbmcgYWx0ZXJuYXRpdmVTdHJpbmdz
OmFsdGVybmF0aXZlU3RyaW5ncyBmb3JTdHJpbmdJblJlY3Q6Ym91bmRpbmdCb3hPZlJlcGxhY2Vk
U3RyaW5nIHZpZXc6bV93ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcgKmFjY2Vw
dGVkU3RyaW5nKSB7CiAgICAgICAgIHN3aXRjaCAoYnViYmxlVHlwZSkgewogICAgICAgICBjYXNl
IE5TQ29ycmVjdGlvbkJ1YmJsZVR5cGVDb3JyZWN0aW9uOgogICAgICAgICAgICAgaWYgKGFjY2Vw
dGVkU3RyaW5nKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>