<?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>84766</bug_id>
          
          <creation_ts>2012-04-24 14:08:17 -0700</creation_ts>
          <short_desc>REGRESSION (r109022) Safari not placing service data on pasteboard</short_desc>
          <delta_ts>2012-04-24 17:25:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>OS X 10.7</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="Enrica Casucci">enrica</reporter>
          <assigned_to name="Enrica Casucci">enrica</assigned_to>
          <cc>ap</cc>
    
    <cc>jeffm</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>609038</commentid>
    <comment_count>0</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2012-04-24 14:08:17 -0700</bug_when>
    <thetext>This is a regression introduced during one of the changes to move access to the pasteboard out of the WebProcess.
The support for OS X Services requires that all the write operation to the pasteboard are made synchronously.

&lt;rdar://problem/11085756&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609055</commentid>
    <comment_count>1</comment_count>
      <attachid>138642</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2012-04-24 14:19:07 -0700</bug_when>
    <thetext>Created attachment 138642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609060</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-24 14:23:57 -0700</bug_when>
    <thetext>Attachment 138642 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebKit2/WebProcess/WebPage/WebPage.h:414:  The parameter name &quot;handle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 11 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>609074</commentid>
    <comment_count>3</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2012-04-24 14:31:30 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 138642 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
&gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:414:  The parameter name &quot;handle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; Total errors found: 1 in 11 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

Already fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609130</commentid>
    <comment_count>4</comment_count>
      <attachid>138642</attachid>
    <who name="Jeff Miller">jeffm</who>
    <bug_when>2012-04-24 15:17:19 -0700</bug_when>
    <thetext>Comment on attachment 138642
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        the pasteboard occurr synchronously. This behavior was changed with r109022.

Type - occurr

&gt; Source/WebKit2/ChangeLog:8
&gt; +        the pasteboard occurr synchronously. This behavior was changed with r109022.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609131</commentid>
    <comment_count>5</comment_count>
    <who name="Jeff Miller">jeffm</who>
    <bug_when>2012-04-24 15:17:47 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 138642 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=138642&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        the pasteboard occurr synchronously. This behavior was changed with r109022.
&gt; 
&gt; Type - occurr

I meant typo, not type. :)

&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:8
&gt; &gt; +        the pasteboard occurr synchronously. This behavior was changed with r109022.
&gt; 
&gt; Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609142</commentid>
    <comment_count>6</comment_count>
      <attachid>138642</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-04-24 15:25:24 -0700</bug_when>
    <thetext>Comment on attachment 138642
Patch

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

&gt; Source/WebCore/editing/mac/EditorMac.mm:33
&gt;  #import &quot;DocumentFragment.h&quot;
&gt; +#import &quot;DOMRangeInternal.h&quot;

This is out of order, style bit should have complained.

&gt; Source/WebCore/editing/mac/EditorMac.mm:50
&gt;  #import &quot;htmlediting.h&quot;
&gt; +#import &quot;WebNSAttributedStringExtras.h&quot;

This too - upper case comes first in ASCII order.

&gt; Source/WebCore/editing/mac/EditorMac.mm:318
&gt; +PassRefPtr&lt;SharedBuffer&gt; Editor::getBufferSelectionForPasteboard(const String&amp; pasteboardType)

Did this code come from WebKit1? Can it be deleted there now?

This most definitely doesn&apos;t look like something we want to maintain in two places forever.

&gt; Source/WebKit2/UIProcess/WebPageProxy.h:473
&gt; +    PassRefPtr&lt;WebCore::SharedBuffer&gt; getBufferSelectionForPasteboard(const String&amp; pasteboardType);

I&apos;m not sure if I can parse &quot;buffer selection&quot;. Maybe &quot;PasteboardDataFromSelection&quot;? Or &quot;SerializedAttributedStringFromSelection&quot;?

This applies to the whole cascade of functions, of course, not just this proxy wrapper.

&gt; Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm:-263
&gt; -    if (!isValid())
&gt; -        return false;

Why is this not necessary any more?

&gt; Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm:278
&gt; +    return SharedBuffer::create(static_cast&lt;unsigned char *&gt;(sharedMemoryBuffer-&gt;data()), size);

Style nit: star goes with the type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609160</commentid>
    <comment_count>7</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2012-04-24 15:42:29 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 138642 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=138642&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; &gt; +        the pasteboard occurr synchronously. This behavior was changed with r109022.
&gt; &gt; 
&gt; &gt; Type - occurr
&gt; 
&gt; I meant typo, not type. :)
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/ChangeLog:8
&gt; &gt; &gt; +        the pasteboard occurr synchronously. This behavior was changed with r109022.
&gt; &gt; 
&gt; &gt; Ditto.

I&apos;ll fix it. Thanks! :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609164</commentid>
    <comment_count>8</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2012-04-24 15:45:45 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 138642 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=138642&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/mac/EditorMac.mm:33
&gt; &gt;  #import &quot;DocumentFragment.h&quot;
&gt; &gt; +#import &quot;DOMRangeInternal.h&quot;
&gt; 
&gt; This is out of order, style bit should have complained.
&gt; 
&gt; &gt; Source/WebCore/editing/mac/EditorMac.mm:50
&gt; &gt;  #import &quot;htmlediting.h&quot;
&gt; &gt; +#import &quot;WebNSAttributedStringExtras.h&quot;
&gt; 
&gt; This too - upper case comes first in ASCII order.
Will do.
&gt; 
&gt; &gt; Source/WebCore/editing/mac/EditorMac.mm:318
&gt; &gt; +PassRefPtr&lt;SharedBuffer&gt; Editor::getBufferSelectionForPasteboard(const String&amp; pasteboardType)
&gt; 
&gt; Did this code come from WebKit1? Can it be deleted there now?


&gt; 
&gt; This most definitely doesn&apos;t look like something we want to maintain in two places forever.
&gt; 
No, this code comes from PasteboardMac. I&apos;ll refactor it, to avoid duplicates.

&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.h:473
&gt; &gt; +    PassRefPtr&lt;WebCore::SharedBuffer&gt; getBufferSelectionForPasteboard(const String&amp; pasteboardType);
&gt; 
&gt; I&apos;m not sure if I can parse &quot;buffer selection&quot;. Maybe &quot;PasteboardDataFromSelection&quot;? Or &quot;SerializedAttributedStringFromSelection&quot;?
I think I&apos;ll go for dataFromSelection and stringFromSelection.

&gt; 
&gt; This applies to the whole cascade of functions, of course, not just this proxy wrapper.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm:-263
&gt; &gt; -    if (!isValid())
&gt; &gt; -        return false;
&gt; 
Removed by accident. Thanks for noticing.
&gt; Why is this not necessary any more?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm:278
&gt; &gt; +    return SharedBuffer::create(static_cast&lt;unsigned char *&gt;(sharedMemoryBuffer-&gt;data()), size);
&gt; 
&gt; Style nit: star goes with the type.
Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609187</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-04-24 15:57:20 -0700</bug_when>
    <thetext>&gt; I think I&apos;ll go for dataFromSelection and stringFromSelection.

I&apos;m still not sure if that would be clear enough later - when there is a SharedData buffer, it would be helpful to have names explain format for the buffer.

&gt; Removed by accident. Thanks for noticing.

Please add it to the new function as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609296</commentid>
    <comment_count>10</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2012-04-24 17:25:23 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/115145</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138642</attachid>
            <date>2012-04-24 14:19:07 -0700</date>
            <delta_ts>2012-04-24 15:25:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>fixservices.txt</filename>
            <type>text/plain</type>
            <size>16181</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNTEwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA0LTI0ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjEwOTAy
MikgU2FmYXJpIG5vdCBwbGFjaW5nIHNlcnZpY2UgZGF0YSBvbiBwYXN0ZWJvYXJkLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ3NjYKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzExMDg1NzU2PgorICAgICAgICAKKyAgICAgICAgVGhlIHN1cHBvcnQg
Zm9yIE9TIFggc2VydmljZXMgcmVxdWlyZXMgdGhhdCB0aGUgd3JpdGUgb3BlcmF0aW9ucyB0bwor
ICAgICAgICB0aGUgcGFzdGVib2FyZCBvY2N1cnIgc3luY2hyb25vdXNseS4gVGhpcyBiZWhhdmlv
ciB3YXMgY2hhbmdlZCB3aXRoIHIxMDkwMjIuCisgICAgICAgIFRoaXMgY2hhbmdlIHJlbW92ZXMg
dGhlIG9yaWdpbmFsIHN5bmNocm9ub3VzIGNhbGwgdG8gdGhlIFdlYlByb2Nlc3MgdG8gcGVyZm9y
bQorICAgICAgICB0aGUgcGFzdGVib2FyZCB3cml0ZSB0aGF0IGhhZCBiZWNvbWUgYXN5bmNocm9u
b3VzIGFmdGVyIHIxMDkwMjIuCisgICAgICAgIEl0IGltcGxlbWVudHMgaW5zdGVhZCBhIHN5bmNo
cm9ub3VzIGNhbGwgdG8gcmV0cml2ZSB0aGUgY29udGVudCB0byBiZSBwbGFjZWQKKyAgICAgICAg
aW4gdGhlIHBhc3RlYm9hcmQuCisgICAgICAgIFRoZSBXZWJDb3JlIGNoYW5nZSBhZGRzIHRoZSBF
ZGl0b3IgZnVuY3Rpb25zIHRvIGltcGxlbWVudCB0aGUgbmV3IGZ1bmN0aW9ucy4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmlu
OiBBZGRlZCBuZXcgZXhwb3J0ZWQgZnVuY3Rpb25zLgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9y
Lmg6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpnZXRTdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OmdldEJ1ZmZlclNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOiBB
ZGRlZC4KKwogMjAxMi0wNC0yNCAgSm9lIE1hc29uICA8am1hc29uQHJpbS5jb20+CiAKICAgICAg
ICAgW0JsYWNrQmVycnldIFJldmVydCBicm9rZW4gY2hhbmdlcyB0byBhdXRoZW50aWNhdGlvbiBk
aWFsb2cKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMTQ5MDgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtODk2LDYgKzg5Niw4
IEBAIF9fWk43V2ViQ29yZTZFZGl0b3IyOWNhbkluY3JlYXNlU2VsZWN0aW8KIF9fWk43V2ViQ29y
ZTZFZGl0b3IyOWhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0RVJLTjNXVEY2U3RyaW5nRQog
X19aTjdXZWJDb3JlNkVkaXRvcjMwZGVsZXRlU2VsZWN0aW9uV2l0aFNtYXJ0RGVsZXRlRWIKIF9f
Wk43V2ViQ29yZTZFZGl0b3IzMHBhc3RlQXNQbGFpblRleHRCeXBhc3NpbmdESFRNTEV2CitfX1pO
N1dlYkNvcmU2RWRpdG9yMzFnZXRCdWZmZXJTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkRVJLTjNXVEY2
U3RyaW5nRQorX19aTjdXZWJDb3JlNkVkaXRvcjMxZ2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZEV2CiBfX1pON1dlYkNvcmU2RWRpdG9yMzJndWVzc2VzRm9yVW5ncmFtbWF0aWNhbFNlbGVj
dGlvbkV2CiBfX1pON1dlYkNvcmU2RWRpdG9yMzNpbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbE9y
ZGVyZWRFdgogX19aTjdXZWJDb3JlNkVkaXRvcjM0c2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdo
bGlnaHRlZEViCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHJldmlzaW9uIDExNDkwOCkK
KysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3
Niw2ICszNzYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB0YWtlRmluZFN0cmluZ0Zyb21TZWxlY3Rp
b24oKTsKICAgICB2b2lkIHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMpOwog
ICAgIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpOworICAgIFN0cmluZyBnZXRTdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7
CisgICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGdldEJ1ZmZlclNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAjZW5kaWYKIAogICAgIHZvaWQg
cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
LCBib29sIHNlbGVjdFJlcGxhY2VtZW50LCBib29sIHNtYXJ0UmVwbGFjZSwgYm9vbCBtYXRjaFN0
eWxlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0JKHJldmlz
aW9uIDExNDkwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzAsMTkgKzMwLDI0IEBACiAjaW1wb3J0ICJDbGlwYm9hcmRNYWMu
aCIKICNpbXBvcnQgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW1wb3J0ICJEb2N1bWVudEZy
YWdtZW50LmgiCisjaW1wb3J0ICJET01SYW5nZUludGVybmFsLmgiCiAjaW1wb3J0ICJFZGl0aW5n
VGV4dC5oIgogI2ltcG9ydCAiRWRpdG9yLmgiCiAjaW1wb3J0ICJFZGl0b3JDbGllbnQuaCIKICNp
bXBvcnQgIkZyYW1lLmgiCiAjaW1wb3J0ICJGcmFtZVZpZXcuaCIKKyNpbXBvcnQgIkhUTUxDb252
ZXJ0ZXIuaCIKICNpbXBvcnQgIkhUTUxOYW1lcy5oIgorI2ltcG9ydCAiTGVnYWN5V2ViQXJjaGl2
ZS5oIgogI2ltcG9ydCAiUGFzdGVib2FyZC5oIgogI2ltcG9ydCAiUGFzdGVib2FyZFN0cmF0ZWd5
LmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKKyNpbXBvcnQgIlJhbmdlLmgiCiAj
aW1wb3J0ICJSZW5kZXJCbG9jay5oIgogI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tz
LmgiCiAjaW1wb3J0ICJTb3VuZC5oIgogI2ltcG9ydCAiaHRtbGVkaXRpbmcuaCIKKyNpbXBvcnQg
IldlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTMwMyw0ICszMDgsNDUgQEAgdm9pZCBFZGl0b3I6OnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVi
b2FyZAogICAgICAgICBwYXN0ZUFzUGxhaW5UZXh0V2l0aFBhc3RlYm9hcmQoJnBhc3RlYm9hcmQp
OyAgIAogfQogCitTdHJpbmcgRWRpdG9yOjpnZXRTdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KCkKK3sKKyAgICBTdHJpbmcgdGV4dCA9IHNlbGVjdGVkVGV4dCgpOworICAgIHRleHQucmVwbGFj
ZShub0JyZWFrU3BhY2UsICcgJyk7CisgICAgcmV0dXJuIHRleHQ7Cit9CisKK1Bhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmdldEJ1ZmZlclNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK3sKKyAgICBFeGNlcHRpb25Db2RlIGVjOworICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBzZWxlY3RlZFJhbmdlKCk7CisgICAgTm9kZSogY29tbW9u
QW5jZXN0b3IgPSByYW5nZS0+Y29tbW9uQW5jZXN0b3JDb250YWluZXIoZWMpOworICAgIEFTU0VS
VChjb21tb25BbmNlc3Rvcik7CisgICAgTm9kZSogZW5jbG9zaW5nQW5jaG9yID0gZW5jbG9zaW5n
Tm9kZVdpdGhUYWcoZmlyc3RQb3NpdGlvbkluTm9kZShjb21tb25BbmNlc3RvciksIEhUTUxOYW1l
czo6YVRhZyk7CisgICAgaWYgKGVuY2xvc2luZ0FuY2hvciAmJiBjb21wYXJlUG9zaXRpb25zKGZp
cnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShyYW5nZS0+c3RhcnRQb3NpdGlvbigpLmFuY2hvck5v
ZGUoKSksIHJhbmdlLT5zdGFydFBvc2l0aW9uKCkpID49IDApCisgICAgICAgIHJhbmdlLT5zZXRT
dGFydChlbmNsb3NpbmdBbmNob3IsIDAsIGVjKTsKKworICAgIGlmIChwYXN0ZWJvYXJkVHlwZSA9
PSBXZWJBcmNoaXZlUGJvYXJkVHlwZSkgeworICAgICAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2
ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24obV9mcmFt
ZSk7CisgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBhcmNoaXZlID8gYXJjaGl2
ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkgOiAwOworICAgICAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjp3cmFwTlNEYXRhKChOU0RhdGEgKilkYXRhLmdldCgpKTsKKyAgICB9CisKKyAgICBOU0F0
dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBuaWw7CisgICAgUmV0YWluUHRyPFdl
YkhUTUxDb252ZXJ0ZXI+IGNvbnZlcnRlcihBZG9wdE5TLCBbW1dlYkhUTUxDb252ZXJ0ZXIgYWxs
b2NdIGluaXRXaXRoRE9NUmFuZ2U6a2l0KHJhbmdlLmdldCgpKV0pOworICAgIGlmIChjb252ZXJ0
ZXIpCisgICAgICAgIGF0dHJpYnV0ZWRTdHJpbmcgPSBbY29udmVydGVyLmdldCgpIGF0dHJpYnV0
ZWRTdHJpbmddOworICAgIAorICAgIGlmIChwYXN0ZWJvYXJkVHlwZSA9PSBTdHJpbmcoTlNSVEZE
UGJvYXJkVHlwZSkpIHsKKyAgICAgICAgTlNEYXRhICpSVEZERGF0YSA9IFthdHRyaWJ1dGVkU3Ry
aW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW2F0dHJpYnV0ZWRTdHJpbmcgbGVuZ3Ro
XSkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF07CisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OndyYXBOU0RhdGEoKE5TRGF0YSAqKVJURkREYXRhKTsKKyAgICB9CisgICAgaWYgKHBhc3RlYm9h
cmRUeXBlID09IFN0cmluZyhOU1JURlBib2FyZFR5cGUpKSB7CisgICAgICAgIGlmIChbYXR0cmli
dXRlZFN0cmluZyBjb250YWluc0F0dGFjaG1lbnRzXSkKKyAgICAgICAgICAgIGF0dHJpYnV0ZWRT
dHJpbmcgPSBhdHRyaWJ1dGVkU3RyaW5nQnlTdHJpcHBpbmdBdHRhY2htZW50Q2hhcmFjdGVycyhh
dHRyaWJ1dGVkU3RyaW5nKTsKKyAgICAgICAgTlNEYXRhICpSVEZEYXRhID0gW2F0dHJpYnV0ZWRT
dHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFthdHRyaWJ1dGVkU3RyaW5nIGxlbmd0
aF0pIGRvY3VtZW50QXR0cmlidXRlczpuaWxdOworICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVy
Ojp3cmFwTlNEYXRhKChOU0RhdGEgKilSVEZEYXRhKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNTEw
NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDMxIEBACisyMDEyLTA0LTI0ICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisK
KyAgICAgICAgUkVHUkVTU0lPTiAocjEwOTAyMikgU2FmYXJpIG5vdCBwbGFjaW5nIHNlcnZpY2Ug
ZGF0YSBvbiBwYXN0ZWJvYXJkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODQ3NjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzExMDg1NzU2PgorICAg
ICAgICAKKyAgICAgICAgVGhlIHN1cHBvcnQgZm9yIE9TIFggc2VydmljZXMgcmVxdWlyZXMgdGhh
dCB0aGUgd3JpdGUgb3BlcmF0aW9ucyB0bworICAgICAgICB0aGUgcGFzdGVib2FyZCBvY2N1cnIg
c3luY2hyb25vdXNseS4gVGhpcyBiZWhhdmlvciB3YXMgY2hhbmdlZCB3aXRoIHIxMDkwMjIuCisg
ICAgICAgIFRoaXMgY2hhbmdlIHJlbW92ZXMgdGhlIG9yaWdpbmFsIHN5bmNocm9ub3VzIGNhbGwg
dG8gdGhlIFdlYlByb2Nlc3MgdG8gcGVyZm9ybQorICAgICAgICB0aGUgcGFzdGVib2FyZCB3cml0
ZSB0aGF0IGhhZCBiZWNvbWUgYXN5bmNocm9ub3VzIGFmdGVyIHIxMDkwMjIuCisgICAgICAgIEl0
IGltcGxlbWVudHMgaW5zdGVhZCBhIHN5bmNocm9ub3VzIGNhbGwgdG8gcmV0cml2ZSB0aGUgY29u
dGVudCB0byBiZSBwbGFjZWQKKyAgICAgICAgaW4gdGhlIHBhc3RlYm9hcmQuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyB3cml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZDp0eXBlczpdKTogVXNlcyBuZXcgbWV0aG9kcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06IFJl
bW92ZWQgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQuCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Z2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldEJ1ZmZlclNlbGVjdGlvbkZvclBhc3RlYm9hcmQp
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOiBBZGRlZCBz
dXBwb3J0IGZvciB0aGUgbmV3IG1lc3NhZ2VzIGFuZAorICAgICAgICByZW1vdmVkIG9sZCBtZXNz
YWdlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOiBE
aXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06IERp
dHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9h
cmQpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0QnVmZmVyU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZCk6IEFkZGVkLgorCiAyMDEyLTA0LTI0ICBKZXN1cyBTYW5jaGV6LVBhbGVu
Y2lhICA8amVzdXMucGFsZW5jaWFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBbUXRdIFVucmV2
aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHIxMTUwODMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDExNDkwOCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDY4LDggKzQ2OCw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihj
b25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAgICAgLy8gQ2FsbGVkIGJ5IHRoZSBVSSBw
cm9jZXNzIHdoZW4gaXQgaXMgcmVhZHkgdG8gc2VuZCBpdHMgdG9rZW5zIHRvIHRoZSB3ZWIgcHJv
Y2Vzcy4KICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25z
dCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiBlbGVtZW5Ub2tlbiwgY29uc3QgQ29yZUlQQzo6RGF0
YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOwotICAgIGJvb2wgd3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcyk7CiAgICAgYm9vbCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CisgICAgU3RyaW5nIGdldFN0cmluZ1NlbGVj
dGlvbkZvclBhc3RlYm9hcmQoKTsKKyAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gZ2V0QnVmZmVyU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlKTsKICAgICB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpOwogI2VuZGlmCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0JKHJldmlzaW9uIDEx
NDkwOCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNTM3LDExICs1MzcsMTcgQEAgV0VCQ09SRV9DT01NQU5EKHlhbmtBbmRT
ZWxlY3QpCiAKIC0gKEJPT0wpd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQ6KE5TUGFzdGVib2Fy
ZCAqKXBhc3RlYm9hcmQgdHlwZXM6KE5TQXJyYXkgKil0eXBlcwogewotICAgIFZlY3RvcjxTdHJp
bmc+IHBhc3RlYm9hcmRUeXBlczsKICAgICBzaXplX3QgbnVtVHlwZXMgPSBbdHlwZXMgY291bnRd
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtVHlwZXM7ICsraSkKLSAgICAgICAgcGFz
dGVib2FyZFR5cGVzLmFwcGVuZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7Ci0gICAgcmV0dXJu
IF9kYXRhLT5fcGFnZS0+d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoW3Bhc3RlYm9hcmQgbmFt
ZV0sIHBhc3RlYm9hcmRUeXBlcyk7CisgICAgW3Bhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOnR5cGVz
IG93bmVyOm5pbF07CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1UeXBlczsgKytpKSB7
CisgICAgICAgIGlmIChbW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0gaXNFcXVhbFRvOk5TU3RyaW5n
UGJvYXJkVHlwZV0pCisgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6X2RhdGEtPl9w
YWdlLT5nZXRTdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkgZm9yVHlwZTpOU1N0cmluZ1Bi
b2FyZFR5cGVdOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IF9kYXRhLT5fcGFnZS0+Z2V0QnVmZmVyU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CisgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXRE
YXRhOmJ1ZmZlciA/IFtidWZmZXItPmNyZWF0ZU5TRGF0YSgpIGF1dG9yZWxlYXNlXSA6IG5pbCBm
b3JUeXBlOlt0eXBlcyBvYmplY3RBdEluZGV4OmldXTsKKyAgICAgICB9CisgICAgfQorICAgIHJl
dHVybiBZRVM7CiB9CiAKIC0gKHZvaWQpY2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYTooaWQp
c2VuZGVyIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW0JKHJldmlzaW9uIDExNDkwOCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNTcsMTUgKzI1Nywy
NSBAQCBib29sIFdlYlBhZ2VQcm94eTo6ZXhlY3V0ZUtleXByZXNzQ29tbWFuCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotYm9vbCBXZWJQYWdlUHJveHk6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMpCitTdHJpbmcgV2ViUGFnZVByb3h5OjpnZXRTdHJpbmdTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKCkKIHsKLSAgICBpZiAoIWlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIFN0cmluZyB2YWx1ZTsKKyAgICBjb25zdCBkb3VibGUgbWVzc2FnZVRpbWVvdXQg
PSAyMDsKKyAgICBwcm9jZXNzKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTdHJp
bmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTdHJpbmdT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkOjpSZXBseSh2YWx1ZSksIG1fcGFnZUlELCBtZXNzYWdlVGlt
ZW91dCk7CisgICAgcmV0dXJuIHZhbHVlOworfQogCi0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsK
K1Bhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmdldEJ1ZmZl
clNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK3sK
KyAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CisgICAgdWludDY0X3Qgc2l6ZSA9IDA7
CiAgICAgY29uc3QgZG91YmxlIG1lc3NhZ2VUaW1lb3V0ID0gMjA7Ci0gICAgcHJvY2VzcygpLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlcyksIE1lc3NhZ2VzOjpXZWJQYWdlOjpXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZDo6UmVwbHkocmVzdWx0KSwgbV9wYWdlSUQsIG1lc3NhZ2VUaW1l
b3V0KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHByb2Nlc3MoKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkdldEJ1ZmZlclNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5
cGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVz
c2FnZXM6OldlYlBhZ2U6OkdldEJ1ZmZlclNlbGVjdGlvbkZvclBhc3RlYm9hcmQ6OlJlcGx5KGhh
bmRsZSwgc2l6ZSksIG1fcGFnZUlELCBtZXNzYWdlVGltZW91dCk7CisgICAgaWYgKGhhbmRsZS5p
c051bGwoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hh
cmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjpjcmVhdGUoaGFuZGxlLCBTaGFyZWRNZW1v
cnk6OlJlYWRPbmx5KTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIHNpemUpOwog
fQogCiBib29sIFdlYlBhZ2VQcm94eTo6cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDExNDkwOCkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwOSw4ICs0
MDksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGFyYWN0ZXJJbmRleEZvclBvaW50KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50NjRfdCYgcmVzdWx0KTsKICAgICB2b2lkIGZpcnN0
UmVjdEZvckNoYXJhY3RlclJhbmdlKHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgs
IFdlYkNvcmU6OkludFJlY3QmIHJlc3VsdFJlY3QpOwogICAgIHZvaWQgZXhlY3V0ZUtleXByZXNz
Q29tbWFuZHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4mLCBib29sJiBo
YW5kbGVkLCBFZGl0b3JTdGF0ZSYgbmV3U3RhdGUpOwotICAgIHZvaWQgd3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoY29uc3QgV1RGOjpTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXVEY6
OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgYm9vbCYgcmVzdWx0KTsKICAg
ICB2b2lkIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBXVEY6OlN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGJvb2wmIHJlc3VsdCk7CisgICAgdm9pZCBnZXRTdHJpbmdTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKFdURjo6U3RyaW5nJiBzdHJpbmdWYWx1ZSk7CisgICAgdm9pZCBnZXRCdWZm
ZXJTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFdURjo6U3RyaW5nIHBhc3RlYm9hcmRUeXBl
LCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgaGFuZGxlLCB1aW50NjRfdCYgc2l6ZSk7CiAgICAgdm9p
ZCBzaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQoY29uc3QgV2ViS2l0OjpXZWJNb3VzZUV2
ZW50JiwgYm9vbCYgcmVzdWx0KTsKICAgICB2b2lkIGFjY2VwdHNGaXJzdE1vdXNlKGludCBldmVu
dE51bWJlciwgY29uc3QgV2ViS2l0OjpXZWJNb3VzZUV2ZW50JiwgYm9vbCYgcmVzdWx0KTsKICAg
ICBib29sIHBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JTZWxlY3Rvcihjb25zdCBTdHJpbmcm
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxMTQ5MDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAt
MjI5LDcgKzIyOSw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogICAgIFNldFdpbmRvd0lzVmlz
aWJsZShib29sIHdpbmRvd0lzVmlzaWJsZSkKICAgICBXaW5kb3dBbmRWaWV3RnJhbWVzQ2hhbmdl
ZChXZWJDb3JlOjpJbnRSZWN0IHdpbmRvd0ZyYW1lSW5TY3JlZW5Db29yZGluYXRlcywgV2ViQ29y
ZTo6SW50UmVjdCB2aWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzLCBXZWJDb3JlOjpJbnRQb2lu
dCBhY2Nlc3NpYmlsaXR5Vmlld0Nvb3JkaW5hdGVzKQogICAgIFJlZ2lzdGVyVUlQcm9jZXNzQWNj
ZXNzaWJpbGl0eVRva2VucyhDb3JlSVBDOjpEYXRhUmVmZXJlbmNlIGVsZW1lblRva2VuLCBDb3Jl
SVBDOjpEYXRhUmVmZXJlbmNlIHdpbmRvd1Rva2VuKQotICAgIFdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKFdURjo6U3RyaW5nIHBhc3RlYm9hcmROYW1lLCBXVEY6OlZlY3RvcjxXVEY6OlN0cmlu
Zz4gcGFzdGVib2FyZFR5cGVzKSAtPiAoYm9vbCByZXN1bHQpCisgICAgR2V0U3RyaW5nU2VsZWN0
aW9uRm9yUGFzdGVib2FyZCgpIC0+IChXVEY6OlN0cmluZyBzdHJpbmdWYWx1ZSkKKyAgICBHZXRC
dWZmZXJTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFdURjo6U3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAt
PiAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IHNpemUpCiAg
ICAgUmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKFdURjo6U3RyaW5nIHBhc3RlYm9hcmROYW1l
KSAtPiAoYm9vbCByZXN1bHQpCiAKICAgICAjIFRleHQgaW5wdXQuCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCShyZXZp
c2lvbiAxMTQ5MDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTYwOCwyOCArNjA4LDQzIEBAIHZvaWQgV2Vi
UGFnZTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmkKICAgICBbYWNjZXNzaWJpbGl0eVJlbW90
ZU9iamVjdCgpIHNldFJlbW90ZVBhcmVudDpyZW1vdGVFbGVtZW50XTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBib29sJiByZXN1bHQp
Cit2b2lkIFdlYlBhZ2U6OnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBib29sJiByZXN1bHQpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgaWYgKCFm
cmFtZSB8fCBmcmFtZS0+c2VsZWN0aW9uKCktPmlzTm9uZSgpKSB7CiAgICAgICAgIHJlc3VsdCA9
IGZhbHNlOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGZyYW1lLT5lZGl0b3IoKS0+d3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlcyk7
CisgICAgZnJhbWUtPmVkaXRvcigpLT5yZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQocGFzdGVi
b2FyZE5hbWUpOwogICAgIHJlc3VsdCA9IHRydWU7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVhZFNl
bGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGJvb2wm
IHJlc3VsdCkKK3ZvaWQgV2ViUGFnZTo6Z2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZChT
dHJpbmcmIHN0cmluZ1ZhbHVlKQogewogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmICghZnJhbWUgfHwgZnJh
bWUtPnNlbGVjdGlvbigpLT5pc05vbmUoKSkgewotICAgICAgICByZXN1bHQgPSBmYWxzZTsKKyAg
ICBpZiAoIWZyYW1lIHx8IGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNOb25lKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIHN0cmluZ1ZhbHVlID0gZnJhbWUtPmVkaXRvcigpLT5nZXRTdHJpbmdTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6Z2V0QnVmZmVyU2VsZWN0
aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFNoYXJlZE1lbW9y
eTo6SGFuZGxlJiBoYW5kbGUsIHVpbnQ2NF90JiBzaXplKQoreworICAgIEZyYW1lKiBmcmFtZSA9
IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGlm
ICghZnJhbWUgfHwgZnJhbWUtPnNlbGVjdGlvbigpLT5pc05vbmUoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmVkaXRvcigpLT5n
ZXRCdWZmZXJTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKKyAgICBpZiAo
IWJ1ZmZlcikgeworICAgICAgICBzaXplID0gMDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBmcmFtZS0+ZWRpdG9yKCktPnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSk7Ci0gICAgcmVzdWx0ID0gdHJ1ZTsKKyAgICBzaXplID0gYnVmZmVyLT5zaXplKCk7Cisg
ICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5
OjpjcmVhdGUoc2l6ZSk7CisgICAgbWVtY3B5KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPmRhdGEoKSwgc2l6ZSk7CisgICAgc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVIYW5k
bGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlJlYWRPbmx5KTsKIH0KLSAgICAKKwogV0tBY2Nlc3Np
YmlsaXR5V2ViUGFnZU9iamVjdCogV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgp
CiB7CiAgICAgcmV0dXJuIG1fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50LmdldCgpOwo=
</data>
<flag name="review"
          id="144058"
          type_id="1"
          status="+"
          setter="ap"
    />
    <flag name="commit-queue"
          id="144088"
          type_id="3"
          status="-"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>