<?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>164600</bug_id>
          
          <creation_ts>2016-11-10 10:30:29 -0800</creation_ts>
          <short_desc>Graph::methodOfGettingAValueProfileFor() should be returning the profile for the operand node.</short_desc>
          <delta_ts>2016-11-10 13:23:58 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1249845</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-10 10:30:29 -0800</bug_when>
    <thetext>Currently, Graph::methodOfGettingAValueProfileFor() assumes that the operand DFG node that it is provided with always has a different origin than the node that is using that operand.  For example, in a DFG graph that looks like this:
    a: ...
    b: ArithAdd(@a, ...)

... when emitting speculation checks on @a for the ArithAdd node at @b, Graph::methodOfGettingAValueProfileFor() is passed @a, and expects @a&apos;s to originate from a different bytecode than @b.

However, op_negate can be compiled into the following series of nodes:

    a: BooleanToNumber(...)
    b: DoubleRep(@a)
    c: ArithNegate(@b)

All 3 nodes maps to the same op_negate bytecode i.e. they have the same origin.  When the speculativeJIT does a speculationCheck in DoubleRep, it calls Graph::methodOfGettingAValueProfileFor() to get the ArithProfile for the BooleanToNumber node.  But because all 3 nodes have the same origin, Graph::methodOfGettingAValueProfileFor() erroneously returns the ArithProfile for the op_negate.  Subsequently, the OSR exit ramp will modify the ArithProfile of the op_negate and corrupt its profile.  Instead, what the OSR exit ramp should be doing is update the ArithProfile of op_negate&apos;s operand i.e. BooleanToNumber&apos;s operand in this case.

The fix is to always pass the current node we&apos;re generating code for (in addition to the operand node) to Graph::methodOfGettingAValueProfileFor().  This way, we can determine if the profile is valid if and only if the current node and its operand node does not have the same origin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249846</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-10 10:30:54 -0800</bug_when>
    <thetext>&lt;rdar://problem/28828676&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249857</commentid>
    <comment_count>2</comment_count>
      <attachid>294385</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-10 10:54:49 -0800</bug_when>
    <thetext>Created attachment 294385
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249871</commentid>
    <comment_count>3</comment_count>
      <attachid>294385</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-11-10 11:09:39 -0800</bug_when>
    <thetext>Comment on attachment 294385
proposed patch.

Thank you for cleaning this up!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249873</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-11-10 11:20:25 -0800</bug_when>
    <thetext>Seems correct to me. We probably need Phil to review this.

&gt; Source/JavaScriptCore/dfg/DFGGraph.cpp:1619
&gt; +    Node* node = operandNode;
&gt;      while (node) {

I think this would be clearer as: for (Node* node = operandNode; node; )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249876</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-10 11:30:04 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Seems correct to me. We probably need Phil to review this.
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGGraph.cpp:1619
&gt; &gt; +    Node* node = operandNode;
&gt; &gt;      while (node) {
&gt; 
&gt; I think this would be clearer as: for (Node* node = operandNode; node; )

Thanks.  I&apos;ll apply this before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249948</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-10 13:23:58 -0800</bug_when>
    <thetext>Thanks for the reviews.  Landed in r208560: &lt;http://trac.webkit.org/r208560&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294385</attachid>
            <date>2016-11-10 10:54:49 -0800</date>
            <delta_ts>2016-11-10 11:09:39 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-164600.patch</filename>
            <type>text/plain</type>
            <size>14563</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDg1NDUpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE2LTExLTEwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBHcmFwaDo6bWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcigpIHNo
b3VsZCBiZSByZXR1cm5pbmcgdGhlIHByb2ZpbGUgZm9yIHRoZSBvcGVyYW5kIG5vZGUuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ2MDAKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzI4ODI4Njc2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL29zci1leGl0LW9uLW9wLW5lZ2F0ZS1zaG91
bGQtbm8tZmFpbC1hc3NlcnRpb25zLmpzOiBBZGRlZC4KKwogMjAxNi0xMS0wOCAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBBdm9pZCBjbG9u
ZWQgYXJndW1lbnRzIGFsbG9jYXRpb24gaW4gQXJyYXlQcm90b3R5cGUgbWV0aG9kcwpJbmRleDog
SlNUZXN0cy9zdHJlc3Mvb3NyLWV4aXQtb24tb3AtbmVnYXRlLXNob3VsZC1uby1mYWlsLWFzc2Vy
dGlvbnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3Mvb3NyLWV4aXQtb24tb3AtbmVn
YXRlLXNob3VsZC1uby1mYWlsLWFzc2VydGlvbnMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0
cy9zdHJlc3Mvb3NyLWV4aXQtb24tb3AtbmVnYXRlLXNob3VsZC1uby1mYWlsLWFzc2VydGlvbnMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMiBAQAorLy9AIHJ1bkZUTE5vQ0pJVAorLy8g
VGhpcyB0ZXN0IHBhc3NlcyBpZiBpdCBkb2VzIG5vdCBjcmFzaCBvciBmYWlsIGFueSBhc3NlcnRp
b25zLgorCitmdW5jdGlvbiBpbmxpbmVhYmxlKHgpIHsKKyAgICByZXR1cm4gLXg7Cit9CisKK2Z1
bmN0aW9uIHRlc3QoeSkgeworICAgIHZhciByZXN1bHRzID0gW107CisgICAgZm9yICh2YXIgaiA9
IDA7IGogPCAzMDA7IGorKykgeworICAgICAgICB2YXIgayA9IGogJSB5Lmxlbmd0aDsKKyAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgIHJlc3VsdHMucHVzaChpbmxpbmVhYmxlKHlba10pKTsKKyAg
ICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB9CisgICAgfQorfQorbm9JbmxpbmUodGVzdCk7
CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgdGVzdChbZmFsc2UsIC1J
bmZpbml0eSwgSW5maW5pdHksIDB4NTA1MDUwNTAsIHVuZGVmaW5lZF0pOworfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDg1MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjggQEAKKzIwMTYtMTEt
MTAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoOjptZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKCkgc2hvdWxkIGJlIHJldHVybmluZyB0aGUgcHJv
ZmlsZSBmb3IgdGhlIG9wZXJhbmQgbm9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NDYwMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjg4Mjg2
NzY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3Vy
cmVudGx5LCBHcmFwaDo6bWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcigpIGFzc3VtZXMg
dGhhdCB0aGUgb3BlcmFuZCBERkcKKyAgICAgICAgbm9kZSB0aGF0IGl0IGlzIHByb3ZpZGVkIHdp
dGggYWx3YXlzIGhhcyBhIGRpZmZlcmVudCBvcmlnaW4gdGhhbiB0aGUgbm9kZSB0aGF0IGlzCisg
ICAgICAgIHVzaW5nIHRoYXQgb3BlcmFuZC4gIEZvciBleGFtcGxlLCBpbiBhIERGRyBncmFwaCB0
aGF0IGxvb2tzIGxpa2UgdGhpczoKKworICAgICAgICAgICAgYTogLi4uCisgICAgICAgICAgICBi
OiBBcml0aEFkZChAYSwgLi4uKQorCisgICAgICAgIC4uLiB3aGVuIGVtaXR0aW5nIHNwZWN1bGF0
aW9uIGNoZWNrcyBvbiBAYSBmb3IgdGhlIEFyaXRoQWRkIG5vZGUgYXQgQGIsCisgICAgICAgIEdy
YXBoOjptZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKCkgaXMgcGFzc2VkIEBhLCBhbmQg
ZXhwZWN0cyBAYSdzIHRvCisgICAgICAgIG9yaWdpbmF0ZSBmcm9tIGEgZGlmZmVyZW50IGJ5dGVj
b2RlIHRoYW4gQGIuICBUaGUgaW50ZW50IGhlcmUgaXMgdG8gZ2V0IHRoZQorICAgICAgICBwcm9m
aWxlIGZvciBAYSBzbyB0aGF0IHRoZSBPU1IgZXhpdCByYW1wIGZvciBAYiBjYW4gdXBkYXRlIEBh
J3MgcHJvZmlsZSB3aXRoIHRoZQorICAgICAgICBvYnNlcnZlZCByZXN1bHQgdHlwZSBmcm9tIEBh
IHNvIHRoYXQgZnV0dXJlIHR5cGUgcHJlZGljdGlvbiBvbiBpbmNvbWluZyBhcmdzIGZvcgorICAg
ICAgICB0aGUgQXJpdGhBZGQgbm9kZSBjYW4gdGFrZSB0aGlzIGludG8gY29uc2lkZXJhdGlvbi4K
KworICAgICAgICBIb3dldmVyLCBvcF9uZWdhdGUgY2FuIGJlIGNvbXBpbGVkIGludG8gdGhlIGZv
bGxvd2luZyBzZXJpZXMgb2Ygbm9kZXM6CisKKyAgICAgICAgICAgIGE6IC4uLgorICAgICAgICAg
ICAgYjogQm9vbGVhblRvTnVtYmVyKEBhKQorICAgICAgICAgICAgYzogRG91YmxlUmVwKEBiKQor
ICAgICAgICAgICAgZDogQXJpdGhOZWdhdGUoQGMpCisKKyAgICAgICAgQWxsIDMgbm9kZXMgQGIs
IEBjLCBhbmQgQGQgbWFwcyB0byB0aGUgc2FtZSBvcF9uZWdhdGUgYnl0ZWNvZGUgaS5lLiB0aGV5
IGhhdmUgdGhlCisgICAgICAgIHNhbWUgb3JpZ2luLiAgV2hlbiB0aGUgc3BlY3VsYXRpdmVKSVQg
ZW1pdHMgYSBzcGVjdWxhdGlvbkNoZWNrIGZvciBEb3VibGVSZXAsIGl0CisgICAgICAgIGNhbGxz
IEdyYXBoOjptZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKCkgdG8gZ2V0IHRoZSBBcml0
aFByb2ZpbGUgZm9yIHRoZQorICAgICAgICBCb29sZWFuVG9OdW1iZXIgbm9kZS4gIEJ1dCBiZWNh
dXNlIGFsbCAzIG5vZGVzIGhhdmUgdGhlIHNhbWUgb3JpZ2luLAorICAgICAgICBHcmFwaDo6bWV0
aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcigpIGVycm9uZW91c2x5IHJldHVybnMgdGhlIEFy
aXRoUHJvZmlsZSBmb3IKKyAgICAgICAgdGhlIG9wX25lZ2F0ZS4gIFN1YnNlcXVlbnRseSwgdGhl
IE9TUiBleGl0IHJhbXAgd2lsbCBtb2RpZnkgdGhlIEFyaXRoUHJvZmlsZSBvZgorICAgICAgICB0
aGUgb3BfbmVnYXRlIGFuZCBjb3JydXB0IGl0cyBwcm9maWxlLiAgSW5zdGVhZCwgd2hhdCB0aGUg
T1NSIGV4aXQgcmFtcCBzaG91bGQgYmUKKyAgICAgICAgZG9pbmcgaXMgdXBkYXRlIHRoZSBBcml0
aFByb2ZpbGUgb2Ygb3BfbmVnYXRlJ3Mgb3BlcmFuZCBpLmUuIEJvb2xlYW5Ub051bWJlcidzCisg
ICAgICAgIG9wZXJhbmQgQGEgaW4gdGhpcyBjYXNlLgorCisgICAgICAgIFRoZSBmaXggaXMgdG8g
YWx3YXlzIHBhc3MgdGhlIGN1cnJlbnQgbm9kZSB3ZSdyZSBnZW5lcmF0aW5nIGNvZGUgZm9yIChp
biBhZGRpdGlvbgorICAgICAgICB0byB0aGUgb3BlcmFuZCBub2RlKSB0byBHcmFwaDo6bWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcigpLiAgVGhpcyB3YXksIHdlCisgICAgICAgIGtub3cg
dGhlIHByb2ZpbGUgaXMgdmFsaWQgaWYgYW5kIG9ubHkgaWYgdGhlIGN1cnJlbnQgbm9kZSBhbmQg
aXRzIG9wZXJhbmQgbm9kZQorICAgICAgICBkb2VzIG5vdCBoYXZlIHRoZSBzYW1lIG9yaWdpbi4K
KworICAgICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBhbHNvIGZpeGVkIHRoZSBmb2xsb3dpbmc6Cisg
ICAgICAgIDEuIFRlYWNoIEdyYXBoOjptZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKCkg
dG8gZ2V0IHRoZSBwcm9maWxlIGZvcgorICAgICAgICAgICBCb29sZWFuVG9OdW1iZXIncyBvcGVy
YW5kIGlmIHRoZSBvcGVyYW5kIG5vZGUgaXQgaXMgZ2l2ZW4gaXMgQm9vbGVhblRvTnVtYmVyLgor
ICAgICAgICAyLiBDaGFuZ2UgSklUQ29tcGlsZXI6OmFwcGVuZEV4Y2VwdGlvbkhhbmRsaW5nT1NS
RXhpdCgpIHRvIGV4cGxpY2l0bHkgcGFzcyBhbgorICAgICAgICAgICBlbXB0eSBNZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlKCkuICBJdCB3YXMgaW1wbGljaXRseSBkb2luZyB0aGlzIGJlZm9y
ZS4KKyAgICAgICAgMy4gQ2hhbmdlIFNwZWN1bGF0aXZlSklUOjplbWl0SW52YWxpZGF0aW9uUG9p
bnQoKSB0byBwYXNzIGFuIGVtcHR5CisgICAgICAgICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVBy
b2ZpbGUoKS4gIEl0IGhhcyBubyBjaGlsZCBub2RlLiAgSGVuY2UsIGl0IGRvZXNuJ3QKKyAgICAg
ICAgICAgbWFrZSBzZW5zZSB0byBjYWxsIEdyYXBoOjptZXRob2RPZkdldHRpbmdBVmFsdWVQcm9m
aWxlRm9yKCkgZm9yIGEgY2hpbGQgbm9kZQorICAgICAgICAgICB0aGF0IGRvZXMgbm90IGV4aXN0
LgorCisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6bWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcik6CisgICAgICAgICogZGZnL0RGR0dy
YXBoLmg6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6YXBwZW5kRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0KToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGlvbkNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZW1pdEludmFsaWRhdGlvblBvaW50KToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6YXBwZW5k
T1NSRXhpdERlc2NyaXB0b3IpOgorCiAyMDE2LTExLTEwICBDc2FiYSBPc3p0cm9nb27DoWMgIDxv
c3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0FSTV0gVW5yZXZpZXdlZCBidWlsZGZpeCBhZnRl
ciByMjA4NDUwLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJl
dmlzaW9uIDIwODUzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjEzLDQ1ICsxNjEzLDQ4IEBAIENvbnRyb2xFcXVpdmFsZW5j
ZUFuYWx5c2lzJiBHcmFwaDo6ZW5zdXIKICAgICByZXR1cm4gKm1fY29udHJvbEVxdWl2YWxlbmNl
QW5hbHlzaXM7CiB9CiAKLU1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgR3JhcGg6Om1ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IoTm9kZSogbm9kZSkKK01ldGhvZE9mR2V0dGluZ0FW
YWx1ZVByb2ZpbGUgR3JhcGg6Om1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IoTm9kZSog
Y3VycmVudE5vZGUsIE5vZGUqIG9wZXJhbmROb2RlKQogeworICAgIE5vZGUqIG5vZGUgPSBvcGVy
YW5kTm9kZTsKICAgICB3aGlsZSAobm9kZSkgewotICAgICAgICBDb2RlQmxvY2sqIHByb2ZpbGVk
QmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAg
ICAgICAKLSAgICAgICAgaWYgKG5vZGUtPmFjY2Vzc2VzU3RhY2soKnRoaXMpKSB7Ci0gICAgICAg
ICAgICBWYWx1ZVByb2ZpbGUqIHJlc3VsdCA9IFsmXSAoKSAtPiBWYWx1ZVByb2ZpbGUqIHsKLSAg
ICAgICAgICAgICAgICBpZiAoIW5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICBpbnQgYXJndW1lbnQg
PSBub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKTsKLSAgICAgICAgICAgICAgICBOb2RlKiBhcmd1
bWVudE5vZGUgPSBtX2FyZ3VtZW50c1thcmd1bWVudF07Ci0gICAgICAgICAgICAgICAgaWYgKCFh
cmd1bWVudE5vZGUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAg
ICAgICAgICAgIGlmIChub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSAhPSBhcmd1bWVudE5vZGUt
PnZhcmlhYmxlQWNjZXNzRGF0YSgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgICAgICAgICByZXR1cm4gcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlRm9y
QXJndW1lbnQoYXJndW1lbnQpOwotICAgICAgICAgICAgfSgpOwotICAgICAgICAgICAgaWYgKHJl
c3VsdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBHZXRMb2NhbCkgewotICAgICAgICAgICAgICAgIHJl
dHVybiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpmcm9tTGF6eU9wZXJhbmQoCi0gICAg
ICAgICAgICAgICAgICAgIHByb2ZpbGVkQmxvY2ssCi0gICAgICAgICAgICAgICAgICAgIExhenlP
cGVyYW5kVmFsdWVQcm9maWxlS2V5KAotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgsIG5vZGUtPmxvY2FsKCkpKTsKKyAgICAgICAgLy8g
Y3VycmVudE5vZGUgaXMgbnVsbCB3aGVuIHdlJ3JlIGRvaW5nIHNwZWN1bGF0aW9uIGNoZWNrcyBm
b3IgY2hlY2tBcmd1bWVudFR5cGVzKCkuCisgICAgICAgIGlmICghY3VycmVudE5vZGUgfHwgbm9k
ZS0+b3JpZ2luICE9IGN1cnJlbnROb2RlLT5vcmlnaW4pIHsKKyAgICAgICAgICAgIENvZGVCbG9j
ayogcHJvZmlsZWRCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7CisKKyAgICAgICAgICAgIGlmIChub2RlLT5hY2Nlc3Nlc1N0YWNrKCp0aGlzKSkgewor
ICAgICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcmVzdWx0ID0gWyZdICgpIC0+IFZhbHVlUHJv
ZmlsZSogeworICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmxvY2FsKCkuaXNBcmd1bWVu
dCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAg
ICAgICAgICAgIGludCBhcmd1bWVudCA9IG5vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpOworICAg
ICAgICAgICAgICAgICAgICBOb2RlKiBhcmd1bWVudE5vZGUgPSBtX2FyZ3VtZW50c1thcmd1bWVu
dF07CisgICAgICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnROb2RlKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAgICAgICAgIGlmIChub2Rl
LT52YXJpYWJsZUFjY2Vzc0RhdGEoKSAhPSBhcmd1bWVudE5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0
YSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBwcm9maWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVGb3JBcmd1bWVudChh
cmd1bWVudCk7CisgICAgICAgICAgICAgICAgfSgpOworICAgICAgICAgICAgICAgIGlmIChyZXN1
bHQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+b3AoKSA9PSBHZXRMb2NhbCkgeworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZnJvbUxhenlPcGVyYW5kKAorICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAg
IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5KAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4LCBub2RlLT5sb2NhbCgpKSk7Cisg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBpZiAobm9kZS0+aGFzSGVhcFByZWRpY3Rpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBw
cm9maWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChub2RlLT5vcmlnaW4u
c2VtYW50aWMuYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAgIAotICAgICAgICB7CisKKyAgICAgICAg
ICAgIGlmIChub2RlLT5oYXNIZWFwUHJlZGljdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVy
biBwcm9maWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChub2RlLT5vcmln
aW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCk7CisKICAgICAgICAgICAgIGlmIChwcm9maWxlZEJs
b2NrLT5oYXNCYXNlbGluZUpJVFByb2ZpbGluZygpKSB7CiAgICAgICAgICAgICAgICAgaWYgKEFy
aXRoUHJvZmlsZSogcmVzdWx0ID0gcHJvZmlsZWRCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNv
ZGVPZmZzZXQobm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgpKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAg
ICAgIAorCiAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgeworICAgICAgICBjYXNlIEJvb2xl
YW5Ub051bWJlcjoKICAgICAgICAgY2FzZSBJZGVudGl0eToKICAgICAgICAgY2FzZSBWYWx1ZVJl
cDoKICAgICAgICAgY2FzZSBEb3VibGVSZXA6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5oCShyZXZpc2lvbiAyMDg1MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxNyw3ICs0MTcsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMsIGV4aXRLaW5k
KTsKICAgICB9CiAgICAgCi0gICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBtZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKE5vZGUqKTsKKyAgICBNZXRob2RPZkdldHRpbmdBVmFs
dWVQcm9maWxlIG1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IoTm9kZSogY3VycmVudE5v
ZGUsIE5vZGUqIG9wZXJhbmROb2RlKTsKICAgICAKICAgICBCbG9ja0luZGV4IG51bUJsb2Nrcygp
IGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tzLnNpemUoKTsgfQogICAgIEJhc2ljQmxvY2sqIGJsb2Nr
KEJsb2NrSW5kZXggYmxvY2tJbmRleCkgY29uc3QgeyByZXR1cm4gbV9ibG9ja3NbYmxvY2tJbmRl
eF0uZ2V0KCk7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwCShyZXZpc2lvbiAyMDg1MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTg4LDcgKzU4OCw3IEBAIHZv
aWQgSklUQ29tcGlsZXI6Om5vdGljZU9TUkVudHJ5KEJhc2ljQmwKIAogdm9pZCBKSVRDb21waWxl
cjo6YXBwZW5kRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0KEV4aXRLaW5kIGtpbmQsIHVuc2lnbmVk
IGV2ZW50U3RyZWFtSW5kZXgsIENvZGVPcmlnaW4gb3BDYXRjaE9yaWdpbiwgSGFuZGxlckluZm8q
IGV4Y2VwdGlvbkhhbmRsZXIsIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIE1hY3JvQXNzZW1ibGVy
OjpKdW1wTGlzdCBqdW1wc1RvRmFpbCkKIHsKLSAgICBPU1JFeGl0IGV4aXQoa2luZCwgSlNWYWx1
ZVJlZ3MoKSwgZ3JhcGgoKS5tZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKG51bGxwdHIp
LCBtX3NwZWN1bGF0aXZlLmdldCgpLCBldmVudFN0cmVhbUluZGV4KTsKKyAgICBPU1JFeGl0IGV4
aXQoa2luZCwgSlNWYWx1ZVJlZ3MoKSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSgpLCBt
X3NwZWN1bGF0aXZlLmdldCgpLCBldmVudFN0cmVhbUluZGV4KTsKICAgICBleGl0Lm1fY29kZU9y
aWdpbiA9IG9wQ2F0Y2hPcmlnaW47CiAgICAgZXhpdC5tX2V4Y2VwdGlvbkhhbmRsZXJDYWxsU2l0
ZUluZGV4ID0gY2FsbFNpdGU7CiAgICAgT1NSRXhpdENvbXBpbGF0aW9uSW5mbyYgZXhpdEluZm8g
PSBhcHBlbmRFeGl0SW5mbyhqdW1wc1RvRmFpbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjA4NTM4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGlv
bkNoZWNrKEV4CiAgICAgICAgIG1faml0LmFwcGVuZEV4aXRJbmZvKGp1bXBzVG9GYWlsKTsKICAg
ICB9IGVsc2UKICAgICAgICAgbV9qaXQuYXBwZW5kRXhpdEluZm8oanVtcFRvRmFpbCk7Ci0gICAg
bV9qaXQuaml0Q29kZSgpLT5hcHBlbmRPU1JFeGl0KE9TUkV4aXQoa2luZCwganNWYWx1ZVNvdXJj
ZSwgbV9qaXQuZ3JhcGgoKS5tZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKG5vZGUpLCB0
aGlzLCBtX3N0cmVhbS0+c2l6ZSgpKSk7CisgICAgbV9qaXQuaml0Q29kZSgpLT5hcHBlbmRPU1JF
eGl0KE9TUkV4aXQoa2luZCwganNWYWx1ZVNvdXJjZSwgbV9qaXQuZ3JhcGgoKS5tZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlRm9yKG1fY3VycmVudE5vZGUsIG5vZGUpLCB0aGlzLCBtX3N0cmVh
bS0+c2l6ZSgpKSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uQ2hlY2so
RXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBOb2RlKiBub2RlLCBj
b25zdCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIGp1bXBzVG9GYWlsKQpAQCAtMjY2LDcgKzI2
Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uQ2hlY2soRXgKICAgICAgICAg
bV9qaXQuYXBwZW5kRXhpdEluZm8obXlKdW1wc1RvRmFpbCk7CiAgICAgfSBlbHNlCiAgICAgICAg
IG1faml0LmFwcGVuZEV4aXRJbmZvKGp1bXBzVG9GYWlsKTsKLSAgICBtX2ppdC5qaXRDb2RlKCkt
PmFwcGVuZE9TUkV4aXQoT1NSRXhpdChraW5kLCBqc1ZhbHVlU291cmNlLCBtX2ppdC5ncmFwaCgp
Lm1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3Iobm9kZSksIHRoaXMsIG1fc3RyZWFtLT5z
aXplKCkpKTsKKyAgICBtX2ppdC5qaXRDb2RlKCktPmFwcGVuZE9TUkV4aXQoT1NSRXhpdChraW5k
LCBqc1ZhbHVlU291cmNlLCBtX2ppdC5ncmFwaCgpLm1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGVGb3IobV9jdXJyZW50Tm9kZSwgbm9kZSksIHRoaXMsIG1fc3RyZWFtLT5zaXplKCkpKTsKIH0K
IAogT1NSRXhpdEp1bXBQbGFjZWhvbGRlciBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRpb25DaGVj
ayhFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE5vZGUqIG5vZGUp
CkBAIC0yNzUsNyArMjc1LDcgQEAgT1NSRXhpdEp1bXBQbGFjZWhvbGRlciBTcGVjdWxhdGl2ZUpJ
VDo6cwogICAgICAgICByZXR1cm4gT1NSRXhpdEp1bXBQbGFjZWhvbGRlcigpOwogICAgIHVuc2ln
bmVkIGluZGV4ID0gbV9qaXQuaml0Q29kZSgpLT5vc3JFeGl0LnNpemUoKTsKICAgICBtX2ppdC5h
cHBlbmRFeGl0SW5mbygpOwotICAgIG1faml0LmppdENvZGUoKS0+YXBwZW5kT1NSRXhpdChPU1JF
eGl0KGtpbmQsIGpzVmFsdWVTb3VyY2UsIG1faml0LmdyYXBoKCkubWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZUZvcihub2RlKSwgdGhpcywgbV9zdHJlYW0tPnNpemUoKSkpOworICAgIG1faml0
LmppdENvZGUoKS0+YXBwZW5kT1NSRXhpdChPU1JFeGl0KGtpbmQsIGpzVmFsdWVTb3VyY2UsIG1f
aml0LmdyYXBoKCkubWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcihtX2N1cnJlbnROb2Rl
LCBub2RlKSwgdGhpcywgbV9zdHJlYW0tPnNpemUoKSkpOwogICAgIHJldHVybiBPU1JFeGl0SnVt
cFBsYWNlaG9sZGVyKGluZGV4KTsKIH0KIApAQCAtMzAwLDcgKzMwMCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0aW9uQ2hlY2soRXgKICAgICAgICAgcmV0dXJuOwogICAgIHVuc2ln
bmVkIHJlY292ZXJ5SW5kZXggPSBtX2ppdC5qaXRDb2RlKCktPmFwcGVuZFNwZWN1bGF0aW9uUmVj
b3ZlcnkocmVjb3ZlcnkpOwogICAgIG1faml0LmFwcGVuZEV4aXRJbmZvKGp1bXBUb0ZhaWwpOwot
ICAgIG1faml0LmppdENvZGUoKS0+YXBwZW5kT1NSRXhpdChPU1JFeGl0KGtpbmQsIGpzVmFsdWVT
b3VyY2UsIG1faml0LmdyYXBoKCkubWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcihub2Rl
KSwgdGhpcywgbV9zdHJlYW0tPnNpemUoKSwgcmVjb3ZlcnlJbmRleCkpOworICAgIG1faml0Lmpp
dENvZGUoKS0+YXBwZW5kT1NSRXhpdChPU1JFeGl0KGtpbmQsIGpzVmFsdWVTb3VyY2UsIG1faml0
LmdyYXBoKCkubWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcihtX2N1cnJlbnROb2RlLCBu
b2RlKSwgdGhpcywgbV9zdHJlYW0tPnNpemUoKSwgcmVjb3ZlcnlJbmRleCkpOwogfQogCiB2b2lk
IFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVT
b3VyY2UganNWYWx1ZVNvdXJjZSwgRWRnZSBub2RlVXNlLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBq
dW1wVG9GYWlsLCBjb25zdCBTcGVjdWxhdGlvblJlY292ZXJ5JiByZWNvdmVyeSkKQEAgLTMxNCw4
ICszMTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0SW52YWxpZGF0aW9uUG9pCiAgICAg
ICAgIHJldHVybjsKICAgICBPU1JFeGl0Q29tcGlsYXRpb25JbmZvJiBpbmZvID0gbV9qaXQuYXBw
ZW5kRXhpdEluZm8oSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOwogICAgIG1faml0LmppdENvZGUo
KS0+YXBwZW5kT1NSRXhpdChPU1JFeGl0KAotICAgICAgICBVbmNvdW50YWJsZUludmFsaWRhdGlv
biwgSlNWYWx1ZVNvdXJjZSgpLAotICAgICAgICBtX2ppdC5ncmFwaCgpLm1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGVGb3Iobm9kZSksCisgICAgICAgIFVuY291bnRhYmxlSW52YWxpZGF0aW9u
LCBKU1ZhbHVlU291cmNlKCksIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUoKSwKICAgICAg
ICAgdGhpcywgbV9zdHJlYW0tPnNpemUoKSkpOwogICAgIGluZm8ubV9yZXBsYWNlbWVudFNvdXJj
ZSA9IG1faml0LndhdGNocG9pbnRMYWJlbCgpOwogICAgIEFTU0VSVChpbmZvLm1fcmVwbGFjZW1l
bnRTb3VyY2UuaXNTZXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyMDg1MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNDEyLDcg
KzEyNDEyLDcgQEAgcHJpdmF0ZToKICAgICBPU1JFeGl0RGVzY3JpcHRvciogYXBwZW5kT1NSRXhp
dERlc2NyaXB0b3IoRm9ybWF0dGVkVmFsdWUgbG93VmFsdWUsIE5vZGUqIGhpZ2hWYWx1ZSkKICAg
ICB7CiAgICAgICAgIHJldHVybiAmbV9mdGxTdGF0ZS5qaXRDb2RlLT5vc3JFeGl0RGVzY3JpcHRv
cnMuYWxsb2MoCi0gICAgICAgICAgICBsb3dWYWx1ZS5mb3JtYXQoKSwgbV9ncmFwaC5tZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKGhpZ2hWYWx1ZSksCisgICAgICAgICAgICBsb3dWYWx1
ZS5mb3JtYXQoKSwgbV9ncmFwaC5tZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKG1fbm9k
ZSwgaGlnaFZhbHVlKSwKICAgICAgICAgICAgIGF2YWlsYWJpbGl0eU1hcCgpLm1fbG9jYWxzLm51
bWJlck9mQXJndW1lbnRzKCksCiAgICAgICAgICAgICBhdmFpbGFiaWxpdHlNYXAoKS5tX2xvY2Fs
cy5udW1iZXJPZkxvY2FscygpKTsKICAgICB9Cg==
</data>
<flag name="review"
          id="317072"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>