<?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>27737</bug_id>
          
          <creation_ts>2009-07-27 15:05:23 -0700</creation_ts>
          <short_desc>[V8] Remove parameterless frame/window retrieval methods from V8Proxy</short_desc>
          <delta_ts>2009-07-27 15:40:41 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>abarth</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>135031</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-07-27 15:05:23 -0700</bug_when>
    <thetext>As part of cleaning up V8 bindings, I am removing parameterless retrieveFrame/retrieveWindow methods from V8Proxy to taper developers&apos; temptation to use &quot;the easiest-looking methods&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135034</commentid>
    <comment_count>1</comment_count>
      <attachid>33572</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-07-27 15:13:46 -0700</bug_when>
    <thetext>Created attachment 33572
Remove parameterless frame/window retrieval methods, v1.

 WebCore/ChangeLog                                  |   34 ++++++++++++++++++++
 WebCore/bindings/v8/ScriptCallStack.cpp            |    2 +-
 WebCore/bindings/v8/V8NPUtils.cpp                  |    2 +-
 WebCore/bindings/v8/V8Proxy.cpp                    |   18 +---------
 WebCore/bindings/v8/V8Proxy.h                      |    5 ---
 WebCore/bindings/v8/custom/V8DatabaseCustom.cpp    |   30 +++++++----------
 .../v8/custom/V8HTMLAudioElementConstructor.cpp    |    8 +++-
 .../v8/custom/V8HTMLImageElementConstructor.cpp    |    8 +++-
 .../v8/custom/V8HTMLOptionElementConstructor.cpp   |    8 +++-
 .../v8/custom/V8MessageChannelConstructor.cpp      |    2 +-
 .../bindings/v8/custom/V8SQLTransactionCustom.cpp  |    2 +-
 WebCore/bindings/v8/custom/V8WorkerCustom.cpp      |    2 +-
 .../v8/custom/V8XMLHttpRequestConstructor.cpp      |   10 +++++-
 13 files changed, 80 insertions(+), 51 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135040</commentid>
    <comment_count>2</comment_count>
      <attachid>33572</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-27 15:28:28 -0700</bug_when>
    <thetext>Comment on attachment 33572
Remove parameterless frame/window retrieval methods, v1.

Some minor things to fix on check-in.


&gt; diff --git a/WebCore/bindings/v8/custom/V8DatabaseCustom.cpp b/WebCore/bindings/v8/custom/V8DatabaseCustom.cpp
&gt; +    if (args.Length() == 0)

Since you&apos;re changing this line, may I suggest

 if (!args.Length())

&gt; +        return throwError(&quot;Transaction callback is required.&quot;, V8Proxy::SyntaxError);
&gt;  
&gt; +        if (!args[1]-&gt;IsObject())
&gt; +            throwError(&quot;Transaction success callback must be of valid type.&quot;);
Missing &quot;return&quot; before &quot;throwError&quot;




&gt; diff --git a/WebCore/bindings/v8/custom/V8XMLHttpRequestConstructor.cpp b/WebCore/bindings/v8/custom/V8XMLHttpRequestConstructor.cpp
&gt; index 8c447c6..a3e523c 100644
&gt; --- a/WebCore/bindings/v8/custom/V8XMLHttpRequestConstructor.cpp
&gt; +++ b/WebCore/bindings/v8/custom/V8XMLHttpRequestConstructor.cpp
&gt; @@ -55,9 +55,15 @@ CALLBACK_FUNC_DECL(XMLHttpRequestConstructor)
&gt;      WorkerContextExecutionProxy* proxy = WorkerContextExecutionProxy::retrieve();
&gt;      if (proxy)
&gt;          context = proxy-&gt;workerContext();
&gt; -    else
&gt; +    else {
&gt; +#endif
&gt; +        Frame* frame = V8Proxy::retrieveFrameForCurrentContext();
&gt; +        if (!frame)
&gt; +            return throwError(&quot;Frame associated with XMLHttpRequest constructor is not available.&quot;, V8Proxy::ReferenceError);

Why did you go with a different style of error message here?

This would match the format of the others:

 &quot;XMLHttpRequest constructor associated frame is not available&quot;

But actually I like the format in this one better.


Also, I think they would read better with a &apos;s
 &quot;XMLHttpRequest constructor&apos;s associated frame is not available&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135047</commentid>
    <comment_count>3</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-07-27 15:40:41 -0700</bug_when>
    <thetext>Thanks for review and comments, Dave!

Landed as http://trac.webkit.org/changeset/46435 with your comments addressed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33572</attachid>
            <date>2009-07-27 15:13:46 -0700</date>
            <delta_ts>2009-07-27 15:28:27 -0700</delta_ts>
            <desc>Remove parameterless frame/window retrieval methods, v1.</desc>
            <filename>Remove-parameterless-frame-window-retrieval-methods-v1..patch</filename>
            <type>text/plain</type>
            <size>15272</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">M2YwZjk3MWVlZmRiODA0NDgwNmI1MmMxMzMyYjJlYjJkN2FlOTc1NApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwZGEzNDg5Li4yYzcxZTgy
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM3IEBACisyMDA5LTA3LTI3ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgW1Y4XSBSZW1vdmUgcGFyYW1ldGVybGVzcyBmcmFtZS93aW5kb3cgcmV0cmlldmFsIG1l
dGhvZHMgZnJvbSBWOFByb3h5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mjc3MzcKKworICAgICAgICBSZWZhY3RvcmluZywgbm8gbmV3IGJlaGF2aW9y
LCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogYmluZGluZ3MvdjgvU2Ny
aXB0Q2FsbFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6U2Ny
aXB0Q2FsbFN0YWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOE5QVXRpbHMuY3BwOgorICAg
ICAgICAoY29udmVydFY4T2JqZWN0VG9OUFZhcmlhbnQpOiBEaXR0by4KKyAgICAgICAgKiBiaW5k
aW5ncy92OC9WOFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OnJldHJpZXZl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpjYW5BY2Nlc3NQcml2YXRlKTog
RGl0dG8uCisgICAgICAgICogYmluZGluZ3MvdjgvVjhQcm94eS5oOiBSZW1vdmVkIHBhcmFtZXRl
cmxlc3MgcmV0cmlldmVXaW5kb3cvcmV0cmlldmVQcm94eSBkZWNscy4KKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhEYXRhYmFzZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
QUxMQkFDS19GVU5DX0RFQ0wpOiBDaGFuZ2VkIHRvIHVzZSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1l
Rm9yQ3VycmVudENvbnRleHQoKS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
QXVkaW9FbGVtZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FMTEJBQ0tf
RlVOQ19ERUNMKTogRGl0dG8uCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElt
YWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNBTExCQUNLX0ZV
TkNfREVDTCk6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRp
b25FbGVtZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FMTEJBQ0tfRlVO
Q19ERUNMKTogRGl0dG8uCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNo
YW5uZWxDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQUxMQkFDS19GVU5DX0RF
Q0wpOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlv
bkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQUxMQkFDS19GVU5DX0RFQ0wpOiBEaXR0
by4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0FMTEJBQ0tfRlVOQ19ERUNMKTogRGl0dG8uCisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQUxMQkFDS19GVU5DX0RFQ0wpOiBEaXR0by4KKwogMjAwOS0wNy0yNyAgRHVt
aXRydSBEYW5pbGl1YyAgPGR1bWlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
Q2FsbFN0YWNrLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcApp
bmRleCAzM2Q2ZTc4Li44ZWI5NDc4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdENhbGxTdGFjay5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3Rh
Y2suY3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2NyaXB0Q2Fs
bFN0YWNrOjpTY3JpcHRDYWxsU3RhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJndW1lbnRzLCB1
bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCkKICAgICA6IG1fbGFzdENhbGxlcihTdHJpbmcoKSwg
VjhQcm94eTo6c291cmNlTmFtZSgpLCBWOFByb3h5Ojpzb3VyY2VMaW5lTnVtYmVyKCkgKyAxLCBh
cmd1bWVudHMsIHNraXBBcmd1bWVudENvdW50KQotICAgICwgbV9zY3JpcHRTdGF0ZShuZXcgU2Ny
aXB0U3RhdGUoVjhQcm94eTo6cmV0cmlldmVGcmFtZSgpKSkKKyAgICAsIG1fc2NyaXB0U3RhdGUo
bmV3IFNjcmlwdFN0YXRlKFY4UHJveHk6OnJldHJpZXZlRnJhbWVGb3JDdXJyZW50Q29udGV4dCgp
KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QVXRpbHMuY3Bw
IGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QVXRpbHMuY3BwCmluZGV4IGU5MmRiMTIuLjFkYjkx
OGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUFV0aWxzLmNwcAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBVdGlscy5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBj
b252ZXJ0VjhPYmplY3RUb05QVmFyaWFudCh2ODo6TG9jYWw8djg6OlZhbHVlPiBvYmplY3QsIE5Q
T2JqZWN0KiBvd25lciwgTlAKICAgICAgICAgY2hhciogdXRmOF9jaGFycyA9IHN0cmR1cCgqdXRm
OCk7CiAgICAgICAgIFNUUklOR05fVE9fTlBWQVJJQU5UKHV0ZjhfY2hhcnMsIHV0ZjgubGVuZ3Ro
KCksICpyZXN1bHQpOwogICAgIH0gZWxzZSBpZiAob2JqZWN0LT5Jc09iamVjdCgpKSB7Ci0gICAg
ICAgIFdlYkNvcmU6OkRPTVdpbmRvdyogd2luZG93ID0gV2ViQ29yZTo6VjhQcm94eTo6cmV0cmll
dmVXaW5kb3coKTsKKyAgICAgICAgV2ViQ29yZTo6RE9NV2luZG93KiB3aW5kb3cgPSBXZWJDb3Jl
OjpWOFByb3h5OjpyZXRyaWV2ZVdpbmRvdyhXZWJDb3JlOjpWOFByb3h5OjpjdXJyZW50Q29udGV4
dCgpKTsKICAgICAgICAgTlBPYmplY3QqIG5wb2JqZWN0ID0gbnBDcmVhdGVWOFNjcmlwdE9iamVj
dCgwLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KG9iamVjdCksIHdpbmRvdyk7CiAgICAg
ICAgIGlmIChucG9iamVjdCkKICAgICAgICAgICAgIF9OUE5fUmVnaXN0ZXJPYmplY3QobnBvYmpl
Y3QsIG93bmVyKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCmluZGV4IDg0ZjUxZjcuLjdiODgwNjMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKKysrIGIvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcApAQCAtNDkzLDE0ICs0OTMsNiBAQCBib29sIFY4UHJv
eHk6OmlzQ29udGV4dEluaXRpYWxpemVkKCkKICAgICByZXR1cm4gIW1fY29udGV4dC5Jc0VtcHR5
KCk7CiB9CiAKLURPTVdpbmRvdyogVjhQcm94eTo6cmV0cmlldmVXaW5kb3coKQotewotICAgIC8v
IEZJWE1FOiBUaGlzIHNlZW1zIHZlcnkgZnJhZ2lsZS4gSG93IGRvIHdlIGtub3cgdGhhdCB0aGUg
Z2xvYmFsIG9iamVjdAotICAgIC8vIGZyb20gdGhlIGN1cnJlbnQgY29udGV4dCBpcyBzb21ldGhp
bmcgc2Vuc2libGU/IERvIHdlIG5lZWQgdG8gdXNlIHRoZQotICAgIC8vIGxhc3QgZW50ZXJlZCBo
ZXJlPyBXaG8gY2FsbHMgdGhpcz8KLSAgICByZXR1cm4gcmV0cmlldmVXaW5kb3codjg6OkNvbnRl
eHQ6OkdldEN1cnJlbnQoKSk7Ci19Ci0KIERPTVdpbmRvdyogVjhQcm94eTo6cmV0cmlldmVXaW5k
b3codjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCkKIHsKICAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGdsb2JhbCA9IGNvbnRleHQtPkdsb2JhbCgpOwpAQCAtNTM5LDE1ICs1MzEsOSBA
QCBGcmFtZSogVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckNhbGxpbmdDb250ZXh0KCkKICAgICBy
ZXR1cm4gcmV0cmlldmVGcmFtZShjb250ZXh0KTsKIH0KIAotRnJhbWUqIFY4UHJveHk6OnJldHJp
ZXZlRnJhbWUoKQotewotICAgIERPTVdpbmRvdyogd2luZG93ID0gcmV0cmlldmVXaW5kb3coKTsK
LSAgICByZXR1cm4gd2luZG93ID8gd2luZG93LT5mcmFtZSgpIDogMDsKLX0KLQogVjhQcm94eSog
VjhQcm94eTo6cmV0cmlldmUoKQogewotICAgIERPTVdpbmRvdyogd2luZG93ID0gcmV0cmlldmVX
aW5kb3coKTsKKyAgICBET01XaW5kb3cqIHdpbmRvdyA9IHJldHJpZXZlV2luZG93KGN1cnJlbnRD
b250ZXh0KCkpOwogICAgIEFTU0VSVCh3aW5kb3cpOwogICAgIHJldHVybiByZXRyaWV2ZSh3aW5k
b3ctPmZyYW1lKCkpOwogfQpAQCAtODIwLDcgKzgwNiw3IEBAIGJvb2wgVjhQcm94eTo6Y2FuQWNj
ZXNzUHJpdmF0ZShET01XaW5kb3cqIHRhcmdldFdpbmRvdykKIAogICAgIFN0cmluZyBtZXNzYWdl
OwogCi0gICAgRE9NV2luZG93KiBvcmlnaW5XaW5kb3cgPSByZXRyaWV2ZVdpbmRvdygpOworICAg
IERPTVdpbmRvdyogb3JpZ2luV2luZG93ID0gcmV0cmlldmVXaW5kb3coY3VycmVudENvbnRleHQo
KSk7CiAgICAgaWYgKG9yaWdpbldpbmRvdyA9PSB0YXJnZXRXaW5kb3cpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaCBiL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCmluZGV4IDlmNThhYWMuLjFkOTc2MTkgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhQcm94eS5oCkBAIC0yMzcsOCArMjM3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICAvLyBUaGlzIGlzIGZhc3RlciB0aGFuIGdvaW5nIHRocm91Z2ggdGhlIGZ1bGwgb2Jq
ZWN0IGNyZWF0aW9uIHByb2Nlc3MuCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBjcmVh
dGVXcmFwcGVyRnJvbUNhY2hlKFY4Q2xhc3NJbmRleDo6VjhXcmFwcGVyVHlwZSk7CiAKLSAgICAg
ICAgLy8gUmV0dXJucyB0aGUgd2luZG93IG9iamVjdCBvZiB0aGUgY3VycmVudGx5IGV4ZWN1dGlu
ZyBjb250ZXh0LgotICAgICAgICBzdGF0aWMgRE9NV2luZG93KiByZXRyaWV2ZVdpbmRvdygpOwog
ICAgICAgICAvLyBSZXR1cm5zIHRoZSB3aW5kb3cgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCBhIGNv
bnRleHQuCiAgICAgICAgIHN0YXRpYyBET01XaW5kb3cqIHJldHJpZXZlV2luZG93KHY4OjpIYW5k
bGU8djg6OkNvbnRleHQ+KTsKICAgICAgICAgLy8gUmV0dXJucyBWOFByb3h5IG9iamVjdCBvZiB0
aGUgY3VycmVudGx5IGV4ZWN1dGluZyBjb250ZXh0LgpAQCAtMjQ4LDkgKzI0Niw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gUmV0dXJucyBWOFByb3h5IG9iamVjdCBhc3NvY2lh
dGVkIHdpdGggYSBzY3JpcHQgZXhlY3V0aW9uIGNvbnRleHQuCiAgICAgICAgIHN0YXRpYyBWOFBy
b3h5KiByZXRyaWV2ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKLSAgICAgICAgLy8gUmV0
dXJucyB0aGUgZnJhbWUgb2JqZWN0IG9mIHRoZSB3aW5kb3cgb2JqZWN0IGFzc29jaWF0ZWQKLSAg
ICAgICAgLy8gd2l0aCB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBjb250ZXh0LgotICAgICAgICBz
dGF0aWMgRnJhbWUqIHJldHJpZXZlRnJhbWUoKTsKICAgICAgICAgLy8gUmV0dXJucyB0aGUgZnJh
bWUgb2JqZWN0IG9mIHRoZSB3aW5kb3cgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aAogICAgICAgICAv
LyBhIGNvbnRleHQuCiAgICAgICAgIHN0YXRpYyBGcmFtZSogcmV0cmlldmVGcmFtZSh2ODo6SGFu
ZGxlPHY4OjpDb250ZXh0Pik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERhdGFiYXNlQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0
YWJhc2VDdXN0b20uY3BwCmluZGV4IDliZTcyMzUuLjBjMjFiNTkgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VDdXN0b20uY3BwCkBAIC01MiwzNyArNTIsMzMg
QEAgQ0FMTEJBQ0tfRlVOQ19ERUNMKERhdGFiYXNlVHJhbnNhY3Rpb24pCiB7CiAgICAgSU5DX1NU
QVRTKCJET00uRGF0YWJhc2UudHJhbnNhY3Rpb24oKSIpOwogCi0gICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgPT0gMCkgewotICAgICAgICBWOFByb3h5Ojp0aHJvd0Vycm9yKFY4UHJveHk6OlN5bnRheEVy
cm9yLCAiVHJhbnNhY3Rpb24gY2FsbGJhY2sgaXMgcmVxdWlyZWQuIik7Ci0gICAgICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7Ci0gICAgfQorICAgIGlmIChhcmdzLkxlbmd0aCgpID09IDApCisg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJUcmFuc2FjdGlvbiBjYWxsYmFjayBpcyByZXF1aXJl
ZC4iLCBWOFByb3h5OjpTeW50YXhFcnJvcik7CiAKLSAgICBpZiAoIWFyZ3NbMF0tPklzT2JqZWN0
KCkpIHsKLSAgICAgICAgVjhQcm94eTo6dGhyb3dFcnJvcihWOFByb3h5OjpUeXBlRXJyb3IsICJU
cmFuc2FjdGlvbiBjYWxsYmFjayBtdXN0IGJlIG9mIHZhbGlkIHR5cGUuIik7Ci0gICAgICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0gICAgfQorICAgIGlmICghYXJnc1swXS0+SXNPYmplY3Qo
KSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlRyYW5zYWN0aW9uIGNhbGxiYWNrIG11c3Qg
YmUgb2YgdmFsaWQgdHlwZS4iKTsKIAogICAgIERhdGFiYXNlKiBkYXRhYmFzZSA9IFY4RE9NV3Jh
cHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PERhdGFiYXNlPihWOENsYXNzSW5kZXg6OkRBVEFC
QVNFLCBhcmdzLkhvbGRlcigpKTsKIAotICAgIEZyYW1lKiBmcmFtZSA9IFY4UHJveHk6OnJldHJp
ZXZlRnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lRm9y
Q3VycmVudENvbnRleHQoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOwogCiAgICAgUmVmUHRyPFY4Q3VzdG9tU1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4g
Y2FsbGJhY2sgPSBWOEN1c3RvbVNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s6OmNyZWF0ZShhcmdzWzBd
LCBmcmFtZSk7CiAKICAgICBSZWZQdHI8VjhDdXN0b21TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJh
Y2s+IGVycm9yQ2FsbGJhY2s7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAg
IGlmICghYXJnc1sxXS0+SXNPYmplY3QoKSkgewotICAgICAgICAgICAgVjhQcm94eTo6dGhyb3dF
cnJvcihWOFByb3h5OjpUeXBlRXJyb3IsICJUcmFuc2FjdGlvbiBlcnJvciBjYWxsYmFjayBtdXN0
IGJlIG9mIHZhbGlkIHR5cGUuIik7Ci0gICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgp
OwotICAgICAgICB9CisgICAgICAgIGlmICghYXJnc1sxXS0+SXNPYmplY3QoKSkKKyAgICAgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKCJUcmFuc2FjdGlvbiBlcnJvciBjYWxsYmFjayBtdXN0IGJl
IG9mIHZhbGlkIHR5cGUuIik7CisKICAgICAgICAgZXJyb3JDYWxsYmFjayA9IFY4Q3VzdG9tU1FM
VHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrOjpjcmVhdGUoYXJnc1sxXSwgZnJhbWUpOwogICAgIH0K
IAogICAgIFJlZlB0cjxWOEN1c3RvbVZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrOwogICAg
IGlmIChhcmdzLkxlbmd0aCgpID4gMikgewotICAgICAgICBpZiAoIWFyZ3NbMV0tPklzT2JqZWN0
KCkpIHsKLSAgICAgICAgICAgIFY4UHJveHk6OnRocm93RXJyb3IoVjhQcm94eTo6VHlwZUVycm9y
LCAiVHJhbnNhY3Rpb24gc3VjY2VzcyBjYWxsYmFjayBtdXN0IGJlIG9mIHZhbGlkIHR5cGUuIik7
Ci0gICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotICAgICAgICB9CisgICAgICAg
IGlmICghYXJnc1sxXS0+SXNPYmplY3QoKSkKKyAgICAgICAgICAgIHRocm93RXJyb3IoIlRyYW5z
YWN0aW9uIHN1Y2Nlc3MgY2FsbGJhY2sgbXVzdCBiZSBvZiB2YWxpZCB0eXBlLiIpOworCiAgICAg
ICAgIHN1Y2Nlc3NDYWxsYmFjayA9IFY4Q3VzdG9tVm9pZENhbGxiYWNrOjpjcmVhdGUoYXJnc1sy
XSwgZnJhbWUpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MQXVkaW9FbGVtZW50Q29uc3RydWN0b3IuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MQXVkaW9FbGVtZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IGMwOTQ1Y2Mu
LjZmOWI3NjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEF1
ZGlvRWxlbWVudENvbnN0cnVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxBdWRpb0VsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ5LDcgKzQ5LDExIEBAIENB
TExCQUNLX0ZVTkNfREVDTChIVE1MQXVkaW9FbGVtZW50Q29uc3RydWN0b3IpCiAgICAgaWYgKCFh
cmdzLklzQ29uc3RydWN0Q2FsbCgpKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiRE9NIG9i
amVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIik7CiAKLSAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lKCktPmRvY3VtZW50
KCk7CisgICAgRnJhbWUqIGZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckN1cnJlbnRD
b250ZXh0KCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkF1
ZGlvIGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZnJhbWUgaXMgdW5hdmFpbGFibGUiLCBWOFByb3h5
OjpSZWZlcmVuY2VFcnJvcik7CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9j
dW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigi
QXVkaW8gY29uc3RydWN0b3IgYXNzb2NpYXRlZCBkb2N1bWVudCBpcyB1bmF2YWlsYWJsZSIsIFY4
UHJveHk6OlJlZmVyZW5jZUVycm9yKTsKIApAQCAtNTcsNyArNjEsNyBAQCBDQUxMQkFDS19GVU5D
X0RFQ0woSFRNTEF1ZGlvRWxlbWVudENvbnN0cnVjdG9yKQogICAgIC8vIG1heSBlbmQgdXAgYmVp
bmcgdGhlIG9ubHkgbm9kZSBpbiB0aGUgbWFwIGFuZCBnZXQgZ2FyYmFnZS1jY29sbGVjdGVkIHBy
ZW1hdHVyZWx5LgogICAgIFY4RE9NV3JhcHBlcjo6Y29udmVydE5vZGVUb1Y4T2JqZWN0KGRvY3Vt
ZW50KTsKIAotICAgIFJlZlB0cjxIVE1MQXVkaW9FbGVtZW50PiBhdWRpbyA9IG5ldyBIVE1MQXVk
aW9FbGVtZW50KEhUTUxOYW1lczo6YXVkaW9UYWcsIFY4UHJveHk6OnJldHJpZXZlRnJhbWUoKS0+
ZG9jdW1lbnQoKSk7CisgICAgUmVmUHRyPEhUTUxBdWRpb0VsZW1lbnQ+IGF1ZGlvID0gbmV3IEhU
TUxBdWRpb0VsZW1lbnQoSFRNTE5hbWVzOjphdWRpb1RhZywgZG9jdW1lbnQpOwogICAgIGlmIChh
cmdzLkxlbmd0aCgpID4gMCkKICAgICAgICAgYXVkaW8tPnNldFNyYyh0b1dlYkNvcmVTdHJpbmco
YXJnc1swXSkpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMjdkZTQ2YS4uOTFlYmQ1
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVt
ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcApAQCAtNDksNyArNDksMTEgQEAgQ0FMTEJBQ0tf
RlVOQ19ERUNMKEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3RvcikKICAgICBpZiAoIWFyZ3MuSXND
b25zdHJ1Y3RDYWxsKCkpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJET00gb2JqZWN0IGNv
bnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iKTsKIAotICAgIERvY3Vt
ZW50KiBkb2N1bWVudCA9IFY4UHJveHk6OnJldHJpZXZlRnJhbWUoKS0+ZG9jdW1lbnQoKTsKKyAg
ICBGcmFtZSogZnJhbWUgPSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lRm9yQ3VycmVudENvbnRleHQo
KTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiSW1hZ2UgY29u
c3RydWN0b3IgYXNzb2NpYXRlZCBmcmFtZSBpcyB1bmF2YWlsYWJsZSIsIFY4UHJveHk6OlJlZmVy
ZW5jZUVycm9yKTsKKworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgp
OwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJJbWFnZSBj
b25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIiwgVjhQcm94eTo6
UmVmZXJlbmNlRXJyb3IpOwogCkBAIC01Nyw3ICs2MSw3IEBAIENBTExCQUNLX0ZVTkNfREVDTChI
VE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IpCiAgICAgLy8gbWF5IGVuZCB1cCBiZWluZyB0aGUg
b25seSBub2RlIGluIHRoZSBtYXAgYW5kIGdldCBnYXJiYWdlLWNjb2xsZWN0ZWQgcHJlbWF0dXJl
bHkuCiAgICAgVjhET01XcmFwcGVyOjpjb252ZXJ0Tm9kZVRvVjhPYmplY3QoZG9jdW1lbnQpOwog
Ci0gICAgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGltYWdlID0gbmV3IEhUTUxJbWFnZUVsZW1l
bnQoSFRNTE5hbWVzOjppbWdUYWcsIFY4UHJveHk6OnJldHJpZXZlRnJhbWUoKS0+ZG9jdW1lbnQo
KSk7CisgICAgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGltYWdlID0gbmV3IEhUTUxJbWFnZUVs
ZW1lbnQoSFRNTE5hbWVzOjppbWdUYWcsIGRvY3VtZW50KTsKICAgICBpZiAoYXJncy5MZW5ndGgo
KSA+IDApIHsKICAgICAgICAgaW1hZ2UtPnNldFdpZHRoKHRvSW50MzIoYXJnc1swXSkpOwogICAg
ICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDEpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IuY3BwIGIvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yLmNwcAppbmRl
eCBjOTM1OGNhLi5jMjJkMTI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTUwLDEx
ICs1MCwxNSBAQCBDQUxMQkFDS19GVU5DX0RFQ0woSFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rv
cikKICAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCiAgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5j
dGlvbi4iKTsKIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IFY4UHJveHk6OnJldHJpZXZlRnJh
bWUoKS0+ZG9jdW1lbnQoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBWOFByb3h5OjpyZXRyaWV2ZUZy
YW1lRm9yQ3VycmVudENvbnRleHQoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4g
dGhyb3dFcnJvcigiT3B0aW9uIGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZnJhbWUgaXMgdW5hdmFp
bGFibGUiLCBWOFByb3h5OjpSZWZlcmVuY2VFcnJvcik7CisKKyAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcigiT3B0aW9uIGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZG9jdW1lbnQgaXMg
dW5hdmFpbGFibGUiLCBWOFByb3h5OjpSZWZlcmVuY2VFcnJvcik7CiAKLSAgICBSZWZQdHI8SFRN
TE9wdGlvbkVsZW1lbnQ+IG9wdGlvbiA9IG5ldyBIVE1MT3B0aW9uRWxlbWVudChIVE1MTmFtZXM6
Om9wdGlvblRhZywgVjhQcm94eTo6cmV0cmlldmVGcmFtZSgpLT5kb2N1bWVudCgpKTsKKyAgICBS
ZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+IG9wdGlvbiA9IG5ldyBIVE1MT3B0aW9uRWxlbWVudChI
VE1MTmFtZXM6Om9wdGlvblRhZywgZG9jdW1lbnQpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgUmVmUHRyPFRleHQ+IHRleHQgPSBkb2N1bWVudC0+Y3JlYXRlVGV4dE5vZGUoIiIp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlQ2hhbm5l
bENvbnN0cnVjdG9yLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNo
YW5uZWxDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNDVkY2NkYy4uZjQ1YWVjZiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yLmNw
cAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VDaGFubmVsQ29uc3Ry
dWN0b3IuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIENBTExCQUNLX0ZVTkNfREVDTChNZXNzYWdlQ2hh
bm5lbENvbnN0cnVjdG9yKQogICAgIGlmIChwcm94eSkKICAgICAgICAgY29udGV4dCA9IHByb3h5
LT53b3JrZXJDb250ZXh0KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIEZyYW1lKiBmcmFtZSA9IFY4
UHJveHk6OnJldHJpZXZlRnJhbWUoKTsKKyAgICAgICAgRnJhbWUqIGZyYW1lID0gVjhQcm94eTo6
cmV0cmlldmVGcmFtZUZvckN1cnJlbnRDb250ZXh0KCk7CiAgICAgICAgIGlmICghZnJhbWUpCiAg
ICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgICAgICBjb250ZXh0ID0gZnJh
bWUtPmRvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFNRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCmluZGV4IDE2NjRkYmMuLjhmYTViZGUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20uY3Bw
CisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20u
Y3BwCkBAIC04MSw3ICs4MSw3IEBAIENBTExCQUNLX0ZVTkNfREVDTChTUUxUcmFuc2FjdGlvbkV4
ZWN1dGVTcWwpCiAKICAgICBTUUxUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24gPSBWOERPTVdyYXBw
ZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxTUUxUcmFuc2FjdGlvbj4oVjhDbGFzc0luZGV4OjpT
UUxUUkFOU0FDVElPTiwgYXJncy5Ib2xkZXIoKSk7CiAKLSAgICBGcmFtZSogZnJhbWUgPSBWOFBy
b3h5OjpyZXRyaWV2ZUZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gVjhQcm94eTo6cmV0cmll
dmVGcmFtZUZvckN1cnJlbnRDb250ZXh0KCk7CiAKICAgICBSZWZQdHI8U1FMU3RhdGVtZW50Q2Fs
bGJhY2s+IGNhbGxiYWNrOwogICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMikgewpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwIGIvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwCmluZGV4IDczMTdlMzQuLjFm
OGFlYWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3Vz
dG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5j
cHAKQEAgLTcwLDcgKzcwLDcgQEAgQ0FMTEJBQ0tfRlVOQ19ERUNMKFdvcmtlckNvbnN0cnVjdG9y
KQogICAgIGlmIChwcm94eSkKICAgICAgICAgY29udGV4dCA9IHByb3h5LT53b3JrZXJDb250ZXh0
KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIEZyYW1lKiBmcmFtZSA9IFY4UHJveHk6OnJldHJpZXZl
RnJhbWUoKTsKKyAgICAgICAgRnJhbWUqIGZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZv
ckN1cnJlbnRDb250ZXh0KCk7CiAgICAgICAgIGlmICghZnJhbWUpCiAgICAgICAgICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgICAgICBjb250ZXh0ID0gZnJhbWUtPmRvY3VtZW50KCk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0
Q29uc3RydWN0b3IuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVx
dWVzdENvbnN0cnVjdG9yLmNwcAppbmRleCA4YzQ0N2M2Li5hM2U1MjNjIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3Bw
CisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1
Y3Rvci5jcHAKQEAgLTU1LDkgKzU1LDE1IEBAIENBTExCQUNLX0ZVTkNfREVDTChYTUxIdHRwUmVx
dWVzdENvbnN0cnVjdG9yKQogICAgIFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eSogcHJveHkg
PSBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OnJldHJpZXZlKCk7CiAgICAgaWYgKHByb3h5
KQogICAgICAgICBjb250ZXh0ID0gcHJveHktPndvcmtlckNvbnRleHQoKTsKLSAgICBlbHNlCisg
ICAgZWxzZSB7CisjZW5kaWYKKyAgICAgICAgRnJhbWUqIGZyYW1lID0gVjhQcm94eTo6cmV0cmll
dmVGcmFtZUZvckN1cnJlbnRDb250ZXh0KCk7CisgICAgICAgIGlmICghZnJhbWUpCisgICAgICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcigiRnJhbWUgYXNzb2NpYXRlZCB3aXRoIFhNTEh0dHBSZXF1
ZXN0IGNvbnN0cnVjdG9yIGlzIG5vdCBhdmFpbGFibGUuIiwgVjhQcm94eTo6UmVmZXJlbmNlRXJy
b3IpOworICAgICAgICBjb250ZXh0ID0gZnJhbWUtPmRvY3VtZW50KCk7CisjaWYgRU5BQkxFKFdP
UktFUlMpCisgICAgfQogI2VuZGlmCi0gICAgICAgIGNvbnRleHQgPSBWOFByb3h5OjpyZXRyaWV2
ZUZyYW1lKCktPmRvY3VtZW50KCk7CiAgICAgUmVmUHRyPFhNTEh0dHBSZXF1ZXN0PiB4bWxIdHRw
UmVxdWVzdCA9IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCk7CiAgICAgVjhET01XcmFw
cGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksIFY4Q2xhc3NJbmRleDo6VG9JbnQoVjhD
bGFzc0luZGV4OjpYTUxIVFRQUkVRVUVTVCksIHhtbEh0dHBSZXF1ZXN0LmdldCgpKTsKIAo=
</data>
<flag name="review"
          id="17832"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>