<?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>77766</bug_id>
          
          <creation_ts>2012-02-03 12:57:50 -0800</creation_ts>
          <short_desc>Need a WK2 API to filter which subframes go into WebArchives as they are created</short_desc>
          <delta_ts>2012-02-03 14:37:59 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>548976</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-02-03 12:57:50 -0800</bug_when>
    <thetext>Need a WK2 API to filter which subframes go into WebArchives as they are created

In radar as &lt;rdar://problem/10742441&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548994</commentid>
    <comment_count>1</comment_count>
      <attachid>125394</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-02-03 13:09:51 -0800</bug_when>
    <thetext>Created attachment 125394
Patch v1 - Add filtering capability to WebCore::LegacyWebArchive and expose as a new WK2 API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549025</commentid>
    <comment_count>2</comment_count>
      <attachid>125394</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-02-03 13:39:51 -0800</bug_when>
    <thetext>Comment on attachment 125394
Patch v1 - Add filtering capability to WebCore::LegacyWebArchive and expose as a new WK2 API

Instead of having a callback + context pointer, the more common way to do this in WebCore is to have an abstract class with a pure virtual member function and then make a subclass inside WebKit2. I think that would be more clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549082</commentid>
    <comment_count>3</comment_count>
      <attachid>125415</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-02-03 14:30:00 -0800</bug_when>
    <thetext>Created attachment 125415
Patch v2 - Use a callback object for the WebCore -&gt; WebKit interface</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549100</commentid>
    <comment_count>4</comment_count>
      <attachid>125415</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-02-03 14:37:59 -0800</bug_when>
    <thetext>Comment on attachment 125415
Patch v2 - Use a callback object for the WebCore -&gt; WebKit interface

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

&gt; Source/WebCore/loader/archive/cf/LegacyWebArchive.h:40
&gt; +class LegacyWebArchiveSubframeFilterCallback {

Could just call this FrameFilter. There’s nothing here that is specific to LegacyWebArchive.

&gt; Source/WebCore/loader/archive/cf/LegacyWebArchive.h:43
&gt; +    virtual bool shouldIncludeSubframe(Frame*) = 0;

I think this should be const.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleFrame.h:77
&gt; +typedef bool (*WKBundleFrameCopyWebArchiveSubframeFilterCallback)(WKBundleFrameRef frame, WKBundleFrameRef subframe, void* context);

I don’t think the type needs to include the name of the function it’s used in. I would call this a WKBundleFrameFilterFunction.

&gt; Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:744
&gt; +    virtual bool shouldIncludeSubframe(Frame*);

This should be private rather than public. This should use the override keyword.

&gt; Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:761
&gt; +    WebFrame* webFrame = static_cast&lt;WebFrameLoaderClient*&gt;(frame-&gt;loader()-&gt;client())-&gt;webFrame();

Might want to restructure this to use an early return so we don’t do all this work if m_callback is 0.

&gt; Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:763
&gt; +    return m_callback ? m_callback(toAPI(m_topLevelWebFrame), toAPI(webFrame), m_context) : true;

I sometimes write this as:

    return !m_callback || m_callback(xxx);

Eliminates that thing where &quot;: true&quot; is so far from the &quot;?&quot;.

&gt; Source/WebKit2/WebProcess/WebPage/WebFrame.h:141
&gt; +    typedef bool (*WebFrameCopyWebArchiveSubframeFilterCallback)(WKBundleFrameRef, WKBundleFrameRef subframe, void* context);

Since this type is a member, I suggest keeping its name much smaller. Maybe FrameFilterFunction.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125394</attachid>
            <date>2012-02-03 13:09:51 -0800</date>
            <delta_ts>2012-02-03 14:30:00 -0800</delta_ts>
            <desc>Patch v1 - Add filtering capability to WebCore::LegacyWebArchive and expose as a new WK2 API</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>13606</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxY2Q3YTcyLi45ZmU3NzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTItMDItMDMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8xMDc0MjQ0MT4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03Nzc2NgorICAgICAgICBOZWVkIGEgV0syIEFQSSB0byBmaWx0ZXIg
d2hpY2ggc3ViZnJhbWVzIGdvIGludG8gV2ViQXJjaGl2ZXMgYXMgdGhleSBhcmUgY3JlYXRlZC4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFk
ZHMgYSBmaWx0ZXIgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBhbGxvd3MgY2xpZW50cyB0byBnZXQg
Y2FsbGVkIGJhY2sgZm9yIGVhY2gKKyAgICAgICAgc3ViZnJhbWUgdGhhdCBtaWdodCBiZSBhZGRl
ZCB0byBhIFdlYkFyY2hpdmUuCisKKyAgICAgICAgQVBJIG9ubHksIE5vIG5ldyBsYXlvdXQgdGVz
dHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2
ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGVGcm9tU2VsZWN0aW9uKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlLmg6CisgICAgICAgIChMZWdhY3lXZWJBcmNoaXZlKToKKwogMjAxMi0wMi0wMyAgRGFu
IEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8x
MDM1MjA3Mz4gRmxvYXRpbmcgaW1hZ2UgbGVhdmVzIGhvbGUgaW4gcHJldmlvdXMgY29sdW1uIHdo
ZW4gd3JhcHBlZCB0byBuZXh0IGNvbHVtbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBjYzkwNjky
Li5lYjUyMTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNDk0LDcgKzQ5NCw3IEBAIF9fWk43
V2ViQ29yZTE2TGVnYWN5V2ViQXJjaGl2ZTE5Y3JlYXRlRnJvbVNlbGVjdGlvbkVQTlNfNUZyYW1l
RQogX19aTjdXZWJDb3JlMTZMZWdhY3lXZWJBcmNoaXZlMjFyYXdEYXRhUmVwcmVzZW50YXRpb25F
dgogX19aTjdXZWJDb3JlMTZMZWdhY3lXZWJBcmNoaXZlNmNyZWF0ZUVOM1dURjEwUGFzc1JlZlB0
cklOU18xNUFyY2hpdmVSZXNvdXJjZUVFRVJOUzFfNlZlY3RvcklTNF9MbTBFRUVSTlM1X0lOUzJf
SVMwX0VFTG0wRUVFCiBfX1pON1dlYkNvcmUxNkxlZ2FjeVdlYkFyY2hpdmU2Y3JlYXRlRVBOU18x
MlNoYXJlZEJ1ZmZlckUKLV9fWk43V2ViQ29yZTE2TGVnYWN5V2ViQXJjaGl2ZTZjcmVhdGVFUE5T
XzROb2RlRQorX19aTjdXZWJDb3JlMTZMZWdhY3lXZWJBcmNoaXZlNmNyZWF0ZUVQTlNfNE5vZGVF
UEZiUE5TXzVGcmFtZUVQdkVTNV8KIF9fWk43V2ViQ29yZTE2TGVnYWN5V2ViQXJjaGl2ZTZjcmVh
dGVFUE5TXzVGcmFtZUUKIF9fWk43V2ViQ29yZTE2TGVnYWN5V2ViQXJjaGl2ZTZjcmVhdGVFUE5T
XzVSYW5nZUUKIF9fWk43V2ViQ29yZTE2TGVnYWN5V2ViQXJjaGl2ZTZjcmVhdGVFdgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNw
cAppbmRleCA1NWUzZWZjLi4zNDBkMWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtNDI4LDcgKzQyOCw3IEBA
IFJldGFpblB0cjxDRkRhdGFSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlz
dFJlcHJlc2VudGF0aW9uKGNvbnN0IFJlCiAKICNlbmRpZgogCi1QYXNzUmVmUHRyPExlZ2FjeVdl
YkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShOb2RlKiBub2RlKQorUGFzc1JlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoTm9kZSogbm9kZSwg
TGVnYWN5V2ViQXJjaGl2ZVN1YmZyYW1lRmlsdGVyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNv
bnRleHQpCiB7CiAgICAgQVNTRVJUKG5vZGUpOwogICAgIGlmICghbm9kZSkKQEAgLTQ0NSw3ICs0
NDUsNyBAQCBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNy
ZWF0ZShOb2RlKiBub2RlKQogICAgIGlmIChub2RlVHlwZSAhPSBOb2RlOjpET0NVTUVOVF9OT0RF
ICYmIG5vZGVUeXBlICE9IE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERSkKICAgICAgICAgbWFya3Vw
U3RyaW5nID0gZnJhbWUtPmRvY3VtZW50VHlwZVN0cmluZygpICsgbWFya3VwU3RyaW5nOwogCi0g
ICAgcmV0dXJuIGNyZWF0ZShtYXJrdXBTdHJpbmcsIGZyYW1lLCBub2RlTGlzdCk7CisgICAgcmV0
dXJuIGNyZWF0ZShtYXJrdXBTdHJpbmcsIGZyYW1lLCBub2RlTGlzdCwgY2FsbGJhY2ssIGNvbnRl
eHQpOwogfQogCiBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZShGcmFtZSogZnJhbWUpCkBAIC00OTQsMTAgKzQ5NCwxMCBAQCBQYXNzUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShSYW5nZSogcmFuZ2UpCiAg
ICAgLy8gRklYTUU6IFRoaXMgaXMgYWx3YXlzICJmb3IgaW50ZXJjaGFuZ2UiLiBJcyB0aGF0IHJp
Z2h0PyBTZWUgdGhlIHByZXZpb3VzIG1ldGhvZC4KICAgICBTdHJpbmcgbWFya3VwU3RyaW5nID0g
ZnJhbWUtPmRvY3VtZW50VHlwZVN0cmluZygpICsgY3JlYXRlTWFya3VwKHJhbmdlLCAmbm9kZUxp
c3QsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2UpOwogCi0gICAgcmV0dXJuIGNyZWF0ZShtYXJrdXBT
dHJpbmcsIGZyYW1lLCBub2RlTGlzdCk7CisgICAgcmV0dXJuIGNyZWF0ZShtYXJrdXBTdHJpbmcs
IGZyYW1lLCBub2RlTGlzdCwgMCwgMCk7CiB9CiAKLVBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2
ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBG
cmFtZSogZnJhbWUsIGNvbnN0IFZlY3RvcjxOb2RlKj4mIG5vZGVzKQorUGFzc1JlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJr
dXBTdHJpbmcsIEZyYW1lKiBmcmFtZSwgY29uc3QgVmVjdG9yPE5vZGUqPiYgbm9kZXMsIExlZ2Fj
eVdlYkFyY2hpdmVTdWJmcmFtZUZpbHRlckNhbGxiYWNrIHN1YmZyYW1lQ2FsbGJhY2ssIHZvaWQq
IGNhbGxiYWNrQ29udGV4dCkKIHsKICAgICBBU1NFUlQoZnJhbWUpOwogICAgIApAQCAtNTIxLDcg
KzUyMSwxMCBAQCBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZwogICAgICAgICBGcmFtZSogY2hpbGRG
cmFtZTsKICAgICAgICAgaWYgKChub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6ZnJhbWVUYWcp
IHx8IG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppZnJhbWVUYWcpIHx8IG5vZGUtPmhhc1Rh
Z05hbWUoSFRNTE5hbWVzOjpvYmplY3RUYWcpKSAmJgogICAgICAgICAgICAgIChjaGlsZEZyYW1l
ID0gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lT3duZXJFbGVtZW50Kj4obm9kZSktPmNvbnRlbnRGcmFt
ZSgpKSkgewotICAgICAgICAgICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IHN1YmZyYW1lQXJj
aGl2ZSA9IGNyZWF0ZShjaGlsZEZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICAgICAgICAgIGlmIChz
dWJmcmFtZUNhbGxiYWNrICYmICFzdWJmcmFtZUNhbGxiYWNrKGNoaWxkRnJhbWUsIGNhbGxiYWNr
Q29udGV4dCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gc3ViZnJhbWVBcmNoaXZlID0gY3Jl
YXRlKGNoaWxkRnJhbWUtPmRvY3VtZW50KCksIHN1YmZyYW1lQ2FsbGJhY2ssIGNhbGxiYWNrQ29u
dGV4dCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUpCiAg
ICAgICAgICAgICAgICAgc3ViZnJhbWVBcmNoaXZlcy5hcHBlbmQoc3ViZnJhbWVBcmNoaXZlKTsK
QEAgLTU4NCw3ICs1ODcsNyBAQCBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQogICAgIFZlY3RvcjxO
b2RlKj4gbm9kZUxpc3Q7CiAgICAgU3RyaW5nIG1hcmt1cFN0cmluZyA9IGZyYW1lLT5kb2N1bWVu
dFR5cGVTdHJpbmcoKSArIGNyZWF0ZU1hcmt1cChzZWxlY3Rpb25SYW5nZS5nZXQoKSwgJm5vZGVM
aXN0LCBBbm5vdGF0ZUZvckludGVyY2hhbmdlKTsKICAgICAKLSAgICBSZWZQdHI8TGVnYWN5V2Vi
QXJjaGl2ZT4gYXJjaGl2ZSA9IGNyZWF0ZShtYXJrdXBTdHJpbmcsIGZyYW1lLCBub2RlTGlzdCk7
CisgICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBjcmVhdGUobWFya3VwU3Ry
aW5nLCBmcmFtZSwgbm9kZUxpc3QsIDAsIDApOwogICAgIAogICAgIGlmICghZnJhbWUtPmRvY3Vt
ZW50KCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpLT5pc0ZyYW1lU2V0KCkpCiAgICAgICAgIHJldHVy
biBhcmNoaXZlLnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaAppbmRleCBlZTE5ZWE2Li41ZDFiNzk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5o
CkBAIC00Myw3ICs0MywxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TGVnYWN5
V2ViQXJjaGl2ZT4gY3JlYXRlKFNoYXJlZEJ1ZmZlciopOwogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBLVVJMJiwgU2hhcmVkQnVmZmVyKik7CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKFBhc3NSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBtYWluUmVzb3VyY2UsIFZlY3RvcjxQYXNzUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gPiYgc3VicmVzb3VyY2VzLCBWZWN0b3I8UGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiA+JiBzdWJmcmFtZUFyY2hpdmVzKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxMZWdhY3lX
ZWJBcmNoaXZlPiBjcmVhdGUoTm9kZSopOworCisgICAgdHlwZWRlZiBib29sICgqTGVnYWN5V2Vi
QXJjaGl2ZVN1YmZyYW1lRmlsdGVyQ2FsbGJhY2spKEZyYW1lKiwgdm9pZCogY29udGV4dCk7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKE5vZGUqLCBMZWdh
Y3lXZWJBcmNoaXZlU3ViZnJhbWVGaWx0ZXJDYWxsYmFjayA9IDAsIHZvaWQqIGNvbnRleHQgPSAw
KTsKKyAgICAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUo
RnJhbWUqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGVG
cm9tU2VsZWN0aW9uKEZyYW1lKik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJj
aGl2ZT4gY3JlYXRlKFJhbmdlKik7CkBAIC01Nyw3ICs2MCw3IEBAIHByaXZhdGU6CiAKICAgICBl
bnVtIE1haW5SZXNvdXJjZVN0YXR1cyB7IFN1YnJlc291cmNlLCBNYWluUmVzb3VyY2UgfTsKIAot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBTdHJp
bmcmIG1hcmt1cFN0cmluZywgRnJhbWUqLCBjb25zdCBWZWN0b3I8Tm9kZSo+JiBub2Rlcyk7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgbWFya3VwU3RyaW5nLCBGcmFtZSosIGNvbnN0IFZlY3RvcjxOb2RlKj4mIG5vZGVzLCBMZWdh
Y3lXZWJBcmNoaXZlU3ViZnJhbWVGaWx0ZXJDYWxsYmFjaywgdm9pZCogY29udGV4dCk7CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGVSZXNvdXJjZShDRkRpY3Rp
b25hcnlSZWYpOwogICAgIHN0YXRpYyBSZXNvdXJjZVJlc3BvbnNlIGNyZWF0ZVJlc291cmNlUmVz
cG9uc2VGcm9tTWFjQXJjaGl2ZWREYXRhKENGRGF0YVJlZik7CiAgICAgc3RhdGljIFJlc291cmNl
UmVzcG9uc2UgY3JlYXRlUmVzb3VyY2VSZXNwb25zZUZyb21Qcm9wZXJ0eUxpc3REYXRhKENGRGF0
YVJlZiwgQ0ZTdHJpbmdSZWYgcmVzcG9uc2VEYXRhVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTIzZmE4
OC4uNTkyMzExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTAyLTAzICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MTA3NDI0NDE+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc3
NjYKKyAgICAgICAgTmVlZCBhIFdLMiBBUEkgdG8gZmlsdGVyIHdoaWNoIHN1YmZyYW1lcyBnbyBp
bnRvIFdlYkFyY2hpdmVzIGFzIHRoZXkgYXJlIGNyZWF0ZWQuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IFdLQnVuZGxlRnJhbWUgQVBJ
IHRoYXQgdGFrZXMgYSBmaWx0ZXIgY2FsbGJhY2sgb2JqZWN0IHRvIGFsbG93IG9yIHJlamVjdAor
ICAgICAgICBzdWJmcmFtZXMgZnJvbSBhIFdlYkFyY2hpdmU6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcDoKKyAgICAgICAgKFdLQnVu
ZGxlRnJhbWVDb3B5V2ViQXJjaGl2ZSk6CisgICAgICAgIChXS0J1bmRsZUZyYW1lQ29weVdlYkFy
Y2hpdmVGaWx0ZXJpbmdTdWJmcmFtZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5oOgorCisgICAgICAgIEltcGxlbWVudCB0aGUgYWJv
dmUgQVBJIGJ5IGNhbGxpbmcgdGhyb3VnaCB0byBXZWJDb3JlOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmxlZ2FjeVdlYkFyY2hp
dmVTdWJmcmFtZUZpbHRlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6Ondl
YkFyY2hpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoK
KyAgICAgICAgKFdlYkZyYW1lKToKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUp
OgorCiAyMDEyLTAyLTAzICBObydhbSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5j
b20+CiAKICAgICAgICAgW1F0XVtUZXhtYXBdIFJlZmFjdG9yIFRleHR1cmVNYXBwZXIgQVBJIHRv
IHVzZSBJbWFnZUJ1ZmZlcnMgd2hlbiBwb3NzaWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJh
bWUuY3BwCmluZGV4IGYyZDVjYjQuLmIyMGMyNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZy
YW1lLmNwcApAQCAtMjQ5LDggKzI0OSwxMyBAQCB2b2lkIFdLQnVuZGxlRnJhbWVTZXRUZXh0RGly
ZWN0aW9uKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLU3RyaW5nUmVmIGRpcmVjdAogCiBX
S0RhdGFSZWYgV0tCdW5kbGVGcmFtZUNvcHlXZWJBcmNoaXZlKFdLQnVuZGxlRnJhbWVSZWYgZnJh
bWVSZWYpCiB7CisgICAgcmV0dXJuIFdLQnVuZGxlRnJhbWVDb3B5V2ViQXJjaGl2ZUZpbHRlcmlu
Z1N1YmZyYW1lcyhmcmFtZVJlZiwgMCwgMCk7Cit9CisKK1dLRGF0YVJlZiBXS0J1bmRsZUZyYW1l
Q29weVdlYkFyY2hpdmVGaWx0ZXJpbmdTdWJmcmFtZXMoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJl
ZiwgV0tCdW5kbGVGcmFtZUNvcHlXZWJBcmNoaXZlU3ViZnJhbWVGaWx0ZXJDYWxsYmFjayBzdWJm
cmFtZUZpbHRlckNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQorewogI2lmIFBMQVRGT1JNKE1BQykg
fHwgUExBVEZPUk0oV0lOKQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSB0b0ltcGwo
ZnJhbWVSZWYpLT53ZWJBcmNoaXZlRGF0YSgpOworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRh
dGEgPSB0b0ltcGwoZnJhbWVSZWYpLT53ZWJBcmNoaXZlRGF0YShzdWJmcmFtZUZpbHRlckNhbGxi
YWNrLCBjb250ZXh0KTsKICAgICBpZiAoZGF0YSkKICAgICAgICAgcmV0dXJuIFdLRGF0YUNyZWF0
ZShDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQo
KSkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5oCmluZGV4IDhmMjc4MWEuLmJl
OTkxODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5oCkBAIC03MSw5ICs3MSwxMiBAQCBX
S19FWFBPUlQgYm9vbCBXS0J1bmRsZUZyYW1lR2V0RG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoV0tC
dW5kbGVGcmFtZVJlZiBmcmFtZSwgZAogCiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVG
cmFtZUNvcHlTdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChXS0J1bmRsZUZyYW1l
UmVmIGZyYW1lLCBXS1VSTFJlZiB1cmwpOwogV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLQnVuZGxl
RnJhbWVDb3B5TUlNRVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwoV0tCdW5kbGVGcmFtZVJlZiBmcmFt
ZSwgV0tVUkxSZWYgdXJsKTsKLSAgICAKKwogV0tfRVhQT1JUIFdLRGF0YVJlZiBXS0J1bmRsZUZy
YW1lQ29weVdlYkFyY2hpdmUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSk7CiAKK3R5cGVkZWYgYm9v
bCAoKldLQnVuZGxlRnJhbWVDb3B5V2ViQXJjaGl2ZVN1YmZyYW1lRmlsdGVyQ2FsbGJhY2spKFdL
QnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLQnVuZGxlRnJhbWVSZWYgc3ViZnJhbWUsIHZvaWQqIGNv
bnRleHQpOworV0tfRVhQT1JUIFdLRGF0YVJlZiBXS0J1bmRsZUZyYW1lQ29weVdlYkFyY2hpdmVG
aWx0ZXJpbmdTdWJmcmFtZXMoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVGcmFtZUNv
cHlXZWJBcmNoaXZlU3ViZnJhbWVGaWx0ZXJDYWxsYmFjayBzdWJmcmFtZUZpbHRlckNhbGxiYWNr
LCB2b2lkKiBjb250ZXh0KTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDQzZjQ0
MzguLjBhZDkzMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcApAQCAtMzAsNiArMzAsOCBAQAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaCIKICNpbmNs
dWRlICJJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmgiCisjaW5jbHVkZSAiV0tBUElDYXN0Lmgi
CisjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViQ2hyb21lQ2xpZW50
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2Vz
LmgiCkBAIC03MzQsOSArNzM2LDI2IEBAIHZvaWQgV2ViRnJhbWU6OnNldFRleHREaXJlY3Rpb24o
Y29uc3QgU3RyaW5nJiBkaXJlY3Rpb24pCiB9CiAKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRG
T1JNKFdJTikKLVJldGFpblB0cjxDRkRhdGFSZWY+IFdlYkZyYW1lOjp3ZWJBcmNoaXZlRGF0YSgp
IGNvbnN0CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBXZWJGcmFtZSogdG9wTGV2ZWxXZWJGcmFt
ZTsKKyAgICBXZWJGcmFtZTo6V2ViRnJhbWVDb3B5V2ViQXJjaGl2ZVN1YmZyYW1lRmlsdGVyQ2Fs
bGJhY2sgY2FsbGJhY2s7CisgICAgdm9pZCogY29udGV4dDsKK30gQ29yZUxlZ2FjeVdlYkFyY2hp
dmVTdWJmcmFtZUZpbHRlckNvbnRleHQ7CisKK3N0YXRpYyBib29sIGxlZ2FjeVdlYkFyY2hpdmVT
dWJmcmFtZUZpbHRlckNhbGxiYWNrKEZyYW1lKiBjb3JlRnJhbWUsIHZvaWQqIGNvbnRleHQpCiB7
Ci0gICAgaWYgKFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlKGNvcmVGcmFtZSgpLT5kb2N1bWVudCgpKSkKKyAgICBDb3JlTGVnYWN5V2Vi
QXJjaGl2ZVN1YmZyYW1lRmlsdGVyQ29udGV4dCogY29yZUNvbnRleHQgPSBzdGF0aWNfY2FzdDxD
b3JlTGVnYWN5V2ViQXJjaGl2ZVN1YmZyYW1lRmlsdGVyQ29udGV4dCo+KGNvbnRleHQpOworICAg
IFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Kj4o
Y29yZUZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkpLT53ZWJGcmFtZSgpOworICAgIAorICAgIHJl
dHVybiBjb3JlQ29udGV4dC0+Y2FsbGJhY2sgPyBjb3JlQ29udGV4dC0+Y2FsbGJhY2sodG9BUEko
Y29yZUNvbnRleHQtPnRvcExldmVsV2ViRnJhbWUpLCB0b0FQSSh3ZWJGcmFtZSksIGNvcmVDb250
ZXh0LT5jb250ZXh0KSA6IHRydWU7Cit9CisKK1JldGFpblB0cjxDRkRhdGFSZWY+IFdlYkZyYW1l
Ojp3ZWJBcmNoaXZlRGF0YShXZWJGcmFtZUNvcHlXZWJBcmNoaXZlU3ViZnJhbWVGaWx0ZXJDYWxs
YmFjayBjYWxsYmFjaywgdm9pZCogY29udGV4dCkKK3sKKyAgICBDb3JlTGVnYWN5V2ViQXJjaGl2
ZVN1YmZyYW1lRmlsdGVyQ29udGV4dCBjb3JlQ29udGV4dCA9IHt0aGlzLCBjYWxsYmFjaywgY29u
dGV4dH07CisKKyAgICBpZiAoUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGUoY29yZUZyYW1lKCktPmRvY3VtZW50KCksIGxlZ2FjeVdlYkFy
Y2hpdmVTdWJmcmFtZUZpbHRlckNhbGxiYWNrLCAmY29yZUNvbnRleHQpKQogICAgICAgICByZXR1
cm4gYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCk7CiAgICAgCiAgICAgcmV0dXJuIDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCmluZGV4IDI5
NTM2YzIuLjMzODg2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNp
bmNsdWRlICJJbW11dGFibGVBcnJheS5oIgorI2luY2x1ZGUgIldLQmFzZS5oIgogI2luY2x1ZGUg
IldlYkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlckNsaWVudC5oPgpAQCAtMTM3LDcgKzEz
OCw4IEBAIHB1YmxpYzoKICAgICBMb2FkTGlzdGVuZXIqIGxvYWRMaXN0ZW5lcigpIGNvbnN0IHsg
cmV0dXJuIG1fbG9hZExpc3RlbmVyOyB9CiAgICAgCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFU
Rk9STShXSU4pCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gd2ViQXJjaGl2ZURhdGEoKSBjb25z
dDsKKyAgICB0eXBlZGVmIGJvb2wgKCpXZWJGcmFtZUNvcHlXZWJBcmNoaXZlU3ViZnJhbWVGaWx0
ZXJDYWxsYmFjaykoV0tCdW5kbGVGcmFtZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiBzdWJmcmFtZSwg
dm9pZCogY29udGV4dCk7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gd2ViQXJjaGl2ZURhdGEo
V2ViRnJhbWVDb3B5V2ViQXJjaGl2ZVN1YmZyYW1lRmlsdGVyQ2FsbGJhY2ssIHZvaWQqIGNvbnRl
eHQpOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggM2I5YTQ4Ny4uZTJmNGU1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTc5Nyw3ICsxNzk3LDcg
QEAgdm9pZCBXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBjYWxsYmFja0lEKQogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oV0lOKQog
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYkZyYW1lKGZyYW1lSUQpKSB7Ci0gICAgICAgIGlmICgo
ZGF0YSA9IGZyYW1lLT53ZWJBcmNoaXZlRGF0YSgpKSkKKyAgICAgICAgaWYgKChkYXRhID0gZnJh
bWUtPndlYkFyY2hpdmVEYXRhKDAsIDApKSkKICAgICAgICAgICAgIGRhdGFSZWZlcmVuY2UgPSBD
b3JlSVBDOjpEYXRhUmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSksIENGRGF0
YUdldExlbmd0aChkYXRhLmdldCgpKSk7CiAgICAgfQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125415</attachid>
            <date>2012-02-03 14:30:00 -0800</date>
            <delta_ts>2012-02-03 14:37:59 -0800</delta_ts>
            <desc>Patch v2 - Use a callback object for the WebCore -&gt; WebKit interface</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>14427</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxY2Q3YTcyLi4xNDYwZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMTItMDItMDMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8xMDc0MjQ0MT4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03Nzc2NgorICAgICAgICBOZWVkIGEgV0syIEFQSSB0byBmaWx0ZXIg
d2hpY2ggc3ViZnJhbWVzIGdvIGludG8gV2ViQXJjaGl2ZXMgYXMgdGhleSBhcmUgY3JlYXRlZC4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFk
ZHMgYSBmaWx0ZXIgY2FsbGJhY2sgb2JqZWN0IHRoYXQgYWxsb3dzIGNsaWVudHMgdG8gZ2V0IGNh
bGxlZCBiYWNrIGZvciBlYWNoCisgICAgICAgIHN1YmZyYW1lIHRoYXQgbWlnaHQgYmUgYWRkZWQg
dG8gYSBXZWJBcmNoaXZlLgorCisgICAgICAgIEFQSSBvbmx5LCBObyBuZXcgbGF5b3V0IHRlc3Rz
LgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
RnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5oOgorICAgICAgICAoTGVnYWN5V2ViQXJjaGl2ZVN1YmZyYW1lRmlsdGVyQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZVN1YmZyYW1lRmlsdGVyQ2FsbGJh
Y2s6On5MZWdhY3lXZWJBcmNoaXZlU3ViZnJhbWVGaWx0ZXJDYWxsYmFjayk6CisgICAgICAgIChM
ZWdhY3lXZWJBcmNoaXZlKToKKwogMjAxMi0wMi0wMyAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBw
bGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDM1MjA3Mz4gRmxvYXRpbmcgaW1h
Z2UgbGVhdmVzIGhvbGUgaW4gcHJldmlvdXMgY29sdW1uIHdoZW4gd3JhcHBlZCB0byBuZXh0IGNv
bHVtbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBjYzkwNjkyLi40MzY2MTU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgpAQCAtNDk0LDcgKzQ5NCw3IEBAIF9fWk43V2ViQ29yZTE2TGVnYWN5V2ViQXJj
aGl2ZTE5Y3JlYXRlRnJvbVNlbGVjdGlvbkVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3JlMTZMZWdh
Y3lXZWJBcmNoaXZlMjFyYXdEYXRhUmVwcmVzZW50YXRpb25FdgogX19aTjdXZWJDb3JlMTZMZWdh
Y3lXZWJBcmNoaXZlNmNyZWF0ZUVOM1dURjEwUGFzc1JlZlB0cklOU18xNUFyY2hpdmVSZXNvdXJj
ZUVFRVJOUzFfNlZlY3RvcklTNF9MbTBFRUVSTlM1X0lOUzJfSVMwX0VFTG0wRUVFCiBfX1pON1dl
YkNvcmUxNkxlZ2FjeVdlYkFyY2hpdmU2Y3JlYXRlRVBOU18xMlNoYXJlZEJ1ZmZlckUKLV9fWk43
V2ViQ29yZTE2TGVnYWN5V2ViQXJjaGl2ZTZjcmVhdGVFUE5TXzROb2RlRQorX19aTjdXZWJDb3Jl
MTZMZWdhY3lXZWJBcmNoaXZlNmNyZWF0ZUVQTlNfNE5vZGVFUE5TXzM4TGVnYWN5V2ViQXJjaGl2
ZVN1YmZyYW1lRmlsdGVyQ2FsbGJhY2tFCiBfX1pON1dlYkNvcmUxNkxlZ2FjeVdlYkFyY2hpdmU2
Y3JlYXRlRVBOU181RnJhbWVFCiBfX1pON1dlYkNvcmUxNkxlZ2FjeVdlYkFyY2hpdmU2Y3JlYXRl
RVBOU181UmFuZ2VFCiBfX1pON1dlYkNvcmUxNkxlZ2FjeVdlYkFyY2hpdmU2Y3JlYXRlRXYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2
ZS5jcHAKaW5kZXggNTVlM2VmYy4uYzAyZjMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTQyOCw3ICs0Mjgs
NyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0
eUxpc3RSZXByZXNlbnRhdGlvbihjb25zdCBSZQogCiAjZW5kaWYKIAotUGFzc1JlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoTm9kZSogbm9kZSkKK1Bhc3NS
ZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKE5vZGUqIG5v
ZGUsIExlZ2FjeVdlYkFyY2hpdmVTdWJmcmFtZUZpbHRlckNhbGxiYWNrKiBjYWxsYmFjaykKIHsK
ICAgICBBU1NFUlQobm9kZSk7CiAgICAgaWYgKCFub2RlKQpAQCAtNDQ1LDcgKzQ0NSw3IEBAIFBh
c3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKE5vZGUq
IG5vZGUpCiAgICAgaWYgKG5vZGVUeXBlICE9IE5vZGU6OkRPQ1VNRU5UX05PREUgJiYgbm9kZVR5
cGUgIT0gTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFKQogICAgICAgICBtYXJrdXBTdHJpbmcgPSBm
cmFtZS0+ZG9jdW1lbnRUeXBlU3RyaW5nKCkgKyBtYXJrdXBTdHJpbmc7CiAKLSAgICByZXR1cm4g
Y3JlYXRlKG1hcmt1cFN0cmluZywgZnJhbWUsIG5vZGVMaXN0KTsKKyAgICByZXR1cm4gY3JlYXRl
KG1hcmt1cFN0cmluZywgZnJhbWUsIG5vZGVMaXN0LCBjYWxsYmFjayk7CiB9CiAKIFBhc3NSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKEZyYW1lKiBmcmFt
ZSkKQEAgLTQ5NCwxMCArNDk0LDEwIEBAIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFJhbmdlKiByYW5nZSkKICAgICAvLyBGSVhNRTogVGhpcyBp
cyBhbHdheXMgImZvciBpbnRlcmNoYW5nZSIuIElzIHRoYXQgcmlnaHQ/IFNlZSB0aGUgcHJldmlv
dXMgbWV0aG9kLgogICAgIFN0cmluZyBtYXJrdXBTdHJpbmcgPSBmcmFtZS0+ZG9jdW1lbnRUeXBl
U3RyaW5nKCkgKyBjcmVhdGVNYXJrdXAocmFuZ2UsICZub2RlTGlzdCwgQW5ub3RhdGVGb3JJbnRl
cmNoYW5nZSk7CiAKLSAgICByZXR1cm4gY3JlYXRlKG1hcmt1cFN0cmluZywgZnJhbWUsIG5vZGVM
aXN0KTsKKyAgICByZXR1cm4gY3JlYXRlKG1hcmt1cFN0cmluZywgZnJhbWUsIG5vZGVMaXN0LCAw
KTsKIH0KIAotUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcsIEZyYW1lKiBmcmFtZSwgY29uc3QgVmVj
dG9yPE5vZGUqPiYgbm9kZXMpCitQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZywgRnJhbWUqIGZyYW1l
LCBjb25zdCBWZWN0b3I8Tm9kZSo+JiBub2RlcywgTGVnYWN5V2ViQXJjaGl2ZVN1YmZyYW1lRmls
dGVyQ2FsbGJhY2sqIHN1YmZyYW1lQ2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKGZyYW1lKTsKICAg
ICAKQEAgLTUyMSw3ICs1MjEsMTAgQEAgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcKICAgICAgICAg
RnJhbWUqIGNoaWxkRnJhbWU7CiAgICAgICAgIGlmICgobm9kZS0+aGFzVGFnTmFtZShIVE1MTmFt
ZXM6OmZyYW1lVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aWZyYW1lVGFnKSB8
fCBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6b2JqZWN0VGFnKSkgJiYKICAgICAgICAgICAg
ICAoY2hpbGRGcmFtZSA9IHN0YXRpY19jYXN0PEhUTUxGcmFtZU93bmVyRWxlbWVudCo+KG5vZGUp
LT5jb250ZW50RnJhbWUoKSkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZl
PiBzdWJmcmFtZUFyY2hpdmUgPSBjcmVhdGUoY2hpbGRGcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAg
ICAgICAgICBpZiAoc3ViZnJhbWVDYWxsYmFjayAmJiAhc3ViZnJhbWVDYWxsYmFjay0+c2hvdWxk
SW5jbHVkZVN1YmZyYW1lKGNoaWxkRnJhbWUpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IHN1
YmZyYW1lQXJjaGl2ZSA9IGNyZWF0ZShjaGlsZEZyYW1lLT5kb2N1bWVudCgpLCBzdWJmcmFtZUNh
bGxiYWNrKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKHN1YmZyYW1lQXJjaGl2ZSkK
ICAgICAgICAgICAgICAgICBzdWJmcmFtZUFyY2hpdmVzLmFwcGVuZChzdWJmcmFtZUFyY2hpdmUp
OwpAQCAtNTg0LDcgKzU4Nyw3IEBAIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAgICAgVmVjdG9y
PE5vZGUqPiBub2RlTGlzdDsKICAgICBTdHJpbmcgbWFya3VwU3RyaW5nID0gZnJhbWUtPmRvY3Vt
ZW50VHlwZVN0cmluZygpICsgY3JlYXRlTWFya3VwKHNlbGVjdGlvblJhbmdlLmdldCgpLCAmbm9k
ZUxpc3QsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2UpOwogICAgIAotICAgIFJlZlB0cjxMZWdhY3lX
ZWJBcmNoaXZlPiBhcmNoaXZlID0gY3JlYXRlKG1hcmt1cFN0cmluZywgZnJhbWUsIG5vZGVMaXN0
KTsKKyAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IGNyZWF0ZShtYXJrdXBT
dHJpbmcsIGZyYW1lLCBub2RlTGlzdCwgMCk7CiAgICAgCiAgICAgaWYgKCFmcmFtZS0+ZG9jdW1l
bnQoKSB8fCAhZnJhbWUtPmRvY3VtZW50KCktPmlzRnJhbWVTZXQoKSkKICAgICAgICAgcmV0dXJu
IGFyY2hpdmUucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCmluZGV4IGVlMTllYTYuLjdjNTU0NGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgK
QEAgLTM3LDEzICszNywxOSBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSYW5n
ZTsKIAorY2xhc3MgTGVnYWN5V2ViQXJjaGl2ZVN1YmZyYW1lRmlsdGVyQ2FsbGJhY2sgeworcHVi
bGljOgorICAgIHZpcnR1YWwgfkxlZ2FjeVdlYkFyY2hpdmVTdWJmcmFtZUZpbHRlckNhbGxiYWNr
KCkgeyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZEluY2x1ZGVTdWJmcmFtZShGcmFtZSopID0g
MDsKK307CisKIGNsYXNzIExlZ2FjeVdlYkFyY2hpdmUgOiBwdWJsaWMgQXJjaGl2ZSB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKCk7CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKFNoYXJlZEJ1ZmZl
ciopOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShjb25z
dCBLVVJMJiwgU2hhcmVkQnVmZmVyKik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TGVnYWN5V2Vi
QXJjaGl2ZT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBtYWluUmVzb3VyY2Us
IFZlY3RvcjxQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gPiYgc3VicmVzb3VyY2VzLCBWZWN0
b3I8UGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiA+JiBzdWJmcmFtZUFyY2hpdmVzKTsKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoTm9kZSopOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShOb2RlKiwgTGVnYWN5
V2ViQXJjaGl2ZVN1YmZyYW1lRmlsdGVyQ2FsbGJhY2sqID0gMCk7CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKEZyYW1lKik7CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSopOwogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShSYW5nZSopOwpAQCAt
NTcsNyArNjMsNyBAQCBwcml2YXRlOgogCiAgICAgZW51bSBNYWluUmVzb3VyY2VTdGF0dXMgeyBT
dWJyZXNvdXJjZSwgTWFpblJlc291cmNlIH07CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcsIEZyYW1lKiwg
Y29uc3QgVmVjdG9yPE5vZGUqPiYgbm9kZXMpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZywgRnJhbWUqLCBj
b25zdCBWZWN0b3I8Tm9kZSo+JiBub2RlcywgTGVnYWN5V2ViQXJjaGl2ZVN1YmZyYW1lRmlsdGVy
Q2FsbGJhY2sqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0
ZVJlc291cmNlKENGRGljdGlvbmFyeVJlZik7CiAgICAgc3RhdGljIFJlc291cmNlUmVzcG9uc2Ug
Y3JlYXRlUmVzb3VyY2VSZXNwb25zZUZyb21NYWNBcmNoaXZlZERhdGEoQ0ZEYXRhUmVmKTsKICAg
ICBzdGF0aWMgUmVzb3VyY2VSZXNwb25zZSBjcmVhdGVSZXNvdXJjZVJlc3BvbnNlRnJvbVByb3Bl
cnR5TGlzdERhdGEoQ0ZEYXRhUmVmLCBDRlN0cmluZ1JlZiByZXNwb25zZURhdGFUeXBlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCBhMjNmYTg4Li5jZjBkYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAK
KzIwMTItMDItMDMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8xMDc0MjQ0MT4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03Nzc2NgorICAgICAgICBOZWVkIGEgV0syIEFQSSB0byBmaWx0ZXIgd2hp
Y2ggc3ViZnJhbWVzIGdvIGludG8gV2ViQXJjaGl2ZXMgYXMgdGhleSBhcmUgY3JlYXRlZC4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcg
V0tCdW5kbGVGcmFtZSBBUEkgdGhhdCB0YWtlcyBhIGZpbHRlciBjYWxsYmFjayBvYmplY3QgdG8g
YWxsb3cgb3IgcmVqZWN0CisgICAgICAgIHN1YmZyYW1lcyBmcm9tIGEgV2ViQXJjaGl2ZToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3Bw
OgorICAgICAgICAoV0tCdW5kbGVGcmFtZUNvcHlXZWJBcmNoaXZlKToKKyAgICAgICAgKFdLQnVu
ZGxlRnJhbWVDb3B5V2ViQXJjaGl2ZUZpbHRlcmluZ1N1YmZyYW1lcyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmg6CisKKyAgICAgICAg
SW1wbGVtZW50IHRoZSBhYm92ZSBBUEkgYnkgY2FsbGluZyB0aHJvdWdoIHRvIFdlYkNvcmU6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkxl
Z2FjeVdlYkFyY2hpdmVTdWJmcmFtZUZpbHRlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTGVnYWN5V2ViQXJjaGl2ZVN1YmZyYW1lRmlsdGVyQ2FsbGJhY2s6OldlYkxlZ2FjeVdlYkFy
Y2hpdmVTdWJmcmFtZUZpbHRlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGVnYWN5
V2ViQXJjaGl2ZVN1YmZyYW1lRmlsdGVyQ2FsbGJhY2s6OnNob3VsZEluY2x1ZGVTdWJmcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjp3ZWJBcmNoaXZlRGF0YSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6CisgICAgICAgIChXZWJGcmFtZSk6CisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKToKKwogMjAxMi0wMi0wMyAgTm8nYW0gUm9z
ZW50aGFsICA8bm9hbS5yb3NlbnRoYWxAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF1bVGV4bWFw
XSBSZWZhY3RvciBUZXh0dXJlTWFwcGVyIEFQSSB0byB1c2UgSW1hZ2VCdWZmZXJzIHdoZW4gcG9z
c2libGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcAppbmRleCBmMmQ1Y2I0Li5iMjBj
MjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKQEAgLTI0OSw4ICsyNDksMTMg
QEAgdm9pZCBXS0J1bmRsZUZyYW1lU2V0VGV4dERpcmVjdGlvbihXS0J1bmRsZUZyYW1lUmVmIGZy
YW1lUmVmLCBXS1N0cmluZ1JlZiBkaXJlY3QKIAogV0tEYXRhUmVmIFdLQnVuZGxlRnJhbWVDb3B5
V2ViQXJjaGl2ZShXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmKQogeworICAgIHJldHVybiBXS0J1
bmRsZUZyYW1lQ29weVdlYkFyY2hpdmVGaWx0ZXJpbmdTdWJmcmFtZXMoZnJhbWVSZWYsIDAsIDAp
OworfQorCitXS0RhdGFSZWYgV0tCdW5kbGVGcmFtZUNvcHlXZWJBcmNoaXZlRmlsdGVyaW5nU3Vi
ZnJhbWVzKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLQnVuZGxlRnJhbWVDb3B5V2ViQXJj
aGl2ZVN1YmZyYW1lRmlsdGVyQ2FsbGJhY2sgc3ViZnJhbWVGaWx0ZXJDYWxsYmFjaywgdm9pZCog
Y29udGV4dCkKK3sKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikKLSAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gdG9JbXBsKGZyYW1lUmVmKS0+d2ViQXJjaGl2ZURhdGEo
KTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gdG9JbXBsKGZyYW1lUmVmKS0+d2Vi
QXJjaGl2ZURhdGEoc3ViZnJhbWVGaWx0ZXJDYWxsYmFjaywgY29udGV4dCk7CiAgICAgaWYgKGRh
dGEpCiAgICAgICAgIHJldHVybiBXS0RhdGFDcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdl
dCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZy
YW1lLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlRnJhbWUuaAppbmRleCA4ZjI3ODFhLi5iZTk5MTg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlRnJhbWUuaApAQCAtNzEsOSArNzEsMTIgQEAgV0tfRVhQT1JUIGJvb2wgV0tCdW5kbGVGcmFt
ZUdldERvY3VtZW50QmFja2dyb3VuZENvbG9yKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIGQKIAog
V0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLQnVuZGxlRnJhbWVDb3B5U3VnZ2VzdGVkRmlsZW5hbWVG
b3JSZXNvdXJjZVdpdGhVUkwoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tVUkxSZWYgdXJsKTsK
IFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29weU1JTUVUeXBlRm9yUmVzb3Vy
Y2VXaXRoVVJMKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVVJMUmVmIHVybCk7Ci0gICAgCisK
IFdLX0VYUE9SVCBXS0RhdGFSZWYgV0tCdW5kbGVGcmFtZUNvcHlXZWJBcmNoaXZlKFdLQnVuZGxl
RnJhbWVSZWYgZnJhbWUpOwogCit0eXBlZGVmIGJvb2wgKCpXS0J1bmRsZUZyYW1lQ29weVdlYkFy
Y2hpdmVTdWJmcmFtZUZpbHRlckNhbGxiYWNrKShXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0J1
bmRsZUZyYW1lUmVmIHN1YmZyYW1lLCB2b2lkKiBjb250ZXh0KTsKK1dLX0VYUE9SVCBXS0RhdGFS
ZWYgV0tCdW5kbGVGcmFtZUNvcHlXZWJBcmNoaXZlRmlsdGVyaW5nU3ViZnJhbWVzKFdLQnVuZGxl
RnJhbWVSZWYgZnJhbWUsIFdLQnVuZGxlRnJhbWVDb3B5V2ViQXJjaGl2ZVN1YmZyYW1lRmlsdGVy
Q2FsbGJhY2sgc3ViZnJhbWVGaWx0ZXJDYWxsYmFjaywgdm9pZCogY29udGV4dCk7CisKICNpZmRl
ZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA0M2Y0NDM4Li43ZTMzNzEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTMwLDYgKzMwLDgg
QEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaCIKICNpbmNsdWRlICJJbmpl
Y3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVTY3JpcHRX
b3JsZC5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2Fz
dC5oIgogI2luY2x1ZGUgIldlYkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgpAQCAtNzM0LDkgKzczNiwzOCBAQCB2
b2lkIFdlYkZyYW1lOjpzZXRUZXh0RGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uKQog
fQogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4pCi1SZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBXZWJGcmFtZTo6d2ViQXJjaGl2ZURhdGEoKSBjb25zdAorCitjbGFzcyBXZWJMZWdhY3lX
ZWJBcmNoaXZlU3ViZnJhbWVGaWx0ZXJDYWxsYmFjayA6IHB1YmxpYyBMZWdhY3lXZWJBcmNoaXZl
U3ViZnJhbWVGaWx0ZXJDYWxsYmFjayB7CitwdWJsaWM6CisgICAgV2ViTGVnYWN5V2ViQXJjaGl2
ZVN1YmZyYW1lRmlsdGVyQ2FsbGJhY2soV2ViRnJhbWUqLCBXZWJGcmFtZTo6V2ViRnJhbWVDb3B5
V2ViQXJjaGl2ZVN1YmZyYW1lRmlsdGVyQ2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpOworICAgIAor
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbmNsdWRlU3ViZnJhbWUoRnJhbWUqKTsKKyAgICAKK3By
aXZhdGU6CisgICAgV2ViRnJhbWUqIG1fdG9wTGV2ZWxXZWJGcmFtZTsKKyAgICBXZWJGcmFtZTo6
V2ViRnJhbWVDb3B5V2ViQXJjaGl2ZVN1YmZyYW1lRmlsdGVyQ2FsbGJhY2sgbV9jYWxsYmFjazsK
KyAgICB2b2lkKiBtX2NvbnRleHQ7Cit9OworCitXZWJMZWdhY3lXZWJBcmNoaXZlU3ViZnJhbWVG
aWx0ZXJDYWxsYmFjazo6V2ViTGVnYWN5V2ViQXJjaGl2ZVN1YmZyYW1lRmlsdGVyQ2FsbGJhY2so
V2ViRnJhbWUqIHRvcExldmVsV2ViRnJhbWUsIFdlYkZyYW1lOjpXZWJGcmFtZUNvcHlXZWJBcmNo
aXZlU3ViZnJhbWVGaWx0ZXJDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogY29udGV4dCkKKyAgICA6
IG1fdG9wTGV2ZWxXZWJGcmFtZSh0b3BMZXZlbFdlYkZyYW1lKQorICAgICwgbV9jYWxsYmFjayhj
YWxsYmFjaykKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQoreworfQorCitib29sIFdlYkxlZ2Fj
eVdlYkFyY2hpdmVTdWJmcmFtZUZpbHRlckNhbGxiYWNrOjpzaG91bGRJbmNsdWRlU3ViZnJhbWUo
RnJhbWUqIGZyYW1lKQoreworICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHN0YXRpY19jYXN0PFdl
YkZyYW1lTG9hZGVyQ2xpZW50Kj4oZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKSktPndlYkZyYW1l
KCk7CisKKyAgICByZXR1cm4gbV9jYWxsYmFjayA/IG1fY2FsbGJhY2sodG9BUEkobV90b3BMZXZl
bFdlYkZyYW1lKSwgdG9BUEkod2ViRnJhbWUpLCBtX2NvbnRleHQpIDogdHJ1ZTsKK30KKworUmV0
YWluUHRyPENGRGF0YVJlZj4gV2ViRnJhbWU6OndlYkFyY2hpdmVEYXRhKFdlYkZyYW1lQ29weVdl
YkFyY2hpdmVTdWJmcmFtZUZpbHRlckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQog
ewotICAgIGlmIChSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZShjb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKSkpCisgICAgV2ViTGVnYWN5V2Vi
QXJjaGl2ZVN1YmZyYW1lRmlsdGVyQ2FsbGJhY2sgY29yZUNhbGxiYWNrKHRoaXMsIGNhbGxiYWNr
LCBjb250ZXh0KTsKKworICAgIGlmIChSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKSwgJmNvcmVD
YWxsYmFjaykpCiAgICAgICAgIHJldHVybiBhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24o
KTsKICAgICAKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmgKaW5kZXggMjk1MzZjMi4uMzM4ODYzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lu
Y2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCisjaW5jbHVk
ZSAiV0tCYXNlLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVy
Q2xpZW50Lmg+CkBAIC0xMzcsNyArMTM4LDggQEAgcHVibGljOgogICAgIExvYWRMaXN0ZW5lciog
bG9hZExpc3RlbmVyKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkTGlzdGVuZXI7IH0KICAgICAKICNp
ZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiB3ZWJBcmNoaXZlRGF0YSgpIGNvbnN0OworICAgIHR5cGVkZWYgYm9vbCAoKldlYkZyYW1lQ29w
eVdlYkFyY2hpdmVTdWJmcmFtZUZpbHRlckNhbGxiYWNrKShXS0J1bmRsZUZyYW1lUmVmLCBXS0J1
bmRsZUZyYW1lUmVmIHN1YmZyYW1lLCB2b2lkKiBjb250ZXh0KTsKKyAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiB3ZWJBcmNoaXZlRGF0YShXZWJGcmFtZUNvcHlXZWJBcmNoaXZlU3ViZnJhbWVGaWx0
ZXJDYWxsYmFjaywgdm9pZCogY29udGV4dCk7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAzYjlhNDg3Li5l
MmY0ZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC0xNzk3LDcgKzE3OTcsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAjaWYgUExBVEZPUk0o
TUFDKSB8fCBQTEFURk9STShXSU4pCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKICAg
ICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViRnJhbWUoZnJh
bWVJRCkpIHsKLSAgICAgICAgaWYgKChkYXRhID0gZnJhbWUtPndlYkFyY2hpdmVEYXRhKCkpKQor
ICAgICAgICBpZiAoKGRhdGEgPSBmcmFtZS0+d2ViQXJjaGl2ZURhdGEoMCwgMCkpKQogICAgICAg
ICAgICAgZGF0YVJlZmVyZW5jZSA9IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UoQ0ZEYXRhR2V0Qnl0
ZVB0cihkYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKTsKICAgICB9CiAj
ZW5kaWYK
</data>
<flag name="review"
          id="126913"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>