<?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>154269</bug_id>
          
          <creation_ts>2016-02-15 16:56:38 -0800</creation_ts>
          <short_desc>FTL should support CompareEq(String:, String:)</short_desc>
          <delta_ts>2016-02-16 21:30:30 -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>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>
          
          <blocked>154266</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1164970</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-02-15 16:56:38 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165293</commentid>
    <comment_count>1</comment_count>
      <attachid>271478</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-02-16 13:31:14 -0800</bug_when>
    <thetext>Created attachment 271478
voila

Haven&apos;t tried it yet</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165318</commentid>
    <comment_count>2</comment_count>
      <attachid>271484</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-02-16 14:31:14 -0800</bug_when>
    <thetext>Created attachment 271484
maybe the patch

Still running tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165374</commentid>
    <comment_count>3</comment_count>
      <attachid>271500</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-02-16 15:54:13 -0800</bug_when>
    <thetext>Created attachment 271500
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165446</commentid>
    <comment_count>4</comment_count>
      <attachid>271500</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-02-16 18:26:41 -0800</bug_when>
    <thetext>Comment on attachment 271500
the patch

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

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:7739
&gt; +        m_out.branch(m_out.notNull(left), usually(leftReadyCase), rarely(slowCase));
&gt; +
&gt; +        m_out.appendTo(leftReadyCase, rightReadyCase);

Do you also need those checks for StringIdent?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165459</commentid>
    <comment_count>5</comment_count>
      <attachid>271500</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-02-16 18:32:23 -0800</bug_when>
    <thetext>Comment on attachment 271500
the patch

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

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:7739
&gt;&gt; +        m_out.appendTo(leftReadyCase, rightReadyCase);
&gt; 
&gt; Do you also need those checks for StringIdent?

StringIdent is handled elsewhere.  I believe that speculates that left and right are resolved, as opposed to this, which handles that on the slow path.  But no matter how it does it, it&apos;s unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165482</commentid>
    <comment_count>6</comment_count>
      <attachid>271523</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-02-16 20:28:01 -0800</bug_when>
    <thetext>Created attachment 271523
rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165505</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-02-16 21:30:30 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/196685</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271478</attachid>
            <date>2016-02-16 13:31:14 -0800</date>
            <delta_ts>2016-02-16 14:31:14 -0800</delta_ts>
            <desc>voila</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>6602</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwCShyZXZpc2lvbiAxOTY2NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgzOCw3ICs0ODM4LDggQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVjdFVzZSkK
ICAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpCiAgICAg
ICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChTeW1ib2xVc2UpCi0gICAgICAgICAg
ICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkpIHsKKyAgICAgICAg
ICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlKQorICAgICAgICAg
ICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlKSkgewogICAgICAgICAgICAg
Y29tcGlsZUNvbXBhcmVTdHJpY3RFcSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC00OTA1LDYgKzQ5MDYsMzEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdVc2Up
KSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQyKCkpOwor
CisgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RUcml2aWFsbHlFcXVhbENhc2UgPSBGVExfTkVX
X0JMT0NLKG1fb3V0LCAoIkNvbXBhcmVTdHJpY3RFcS9TdHJpbmcgbm90IHRyaXZpYWxseSBlcXVh
bCBjYXNlIikpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gRlRMX05F
V19CTE9DSyhtX291dCwgKCJDb21wYXJlU3RyaWN0RXEvU3RyaW5nIGNvbnRpbnVhdGlvbiIpKTsK
KworICAgICAgICAgICAgc3BlY3VsYXRlU3RyaW5nKG1fbm9kZS0+Y2hpbGQxKCksIGxlZnQpOwor
CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1f
b3V0LmJvb2xlYW5UcnVlKTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAg
ICAgICBtX291dC5lcXVhbChsZWZ0LCByaWdodCksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1
cmUobm90VHJpdmlhbGx5RXF1YWxDYXNlKSk7CisKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxh
c3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8obm90VHJpdmlhbGx5RXF1YWxDYXNlLCBjb250aW51YXRp
b24pOworCisgICAgICAgICAgICBzcGVjdWxhdGVTdHJpbmcobV9ub2RlLT5jaGlsZDIoKSwgcmln
aHQpOworICAgICAgICAgICAgCisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0
ID0gbV9vdXQuYW5jaG9yKHN0cmluZ3NFcXVhbChsZWZ0LCByaWdodCkpOworICAgICAgICAgICAg
bV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhj
b250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhp
KG1fb3V0LmJvb2xlYW4sIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChP
YmplY3RVc2UsIFVudHlwZWRVc2UpKSB7CiAgICAgICAgICAgICBzZXRCb29sZWFuKAogICAgICAg
ICAgICAgICAgIG1fb3V0LmVxdWFsKApAQCAtNzYxOSw2ICs3NjQ1LDEwMSBAQCBwcml2YXRlOgog
ICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShtX291dC5ib29sZWFuLCBmYXN0UmVzdWx0LCBz
bG93UmVzdWx0KSk7CiAgICAgfQogCisgICAgTFZhbHVlIHN0cmluZ3NFcXVhbChMVmFsdWUgbGVm
dEpTU3RyaW5nLCBMVmFsdWUgcmlnaHRKU1N0cmluZykKKyAgICB7CisgICAgICAgIExCYXNpY0Js
b2NrIG5vdFRyaXZpYWxseVVuZXF1YWxDYXNlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJzdHJp
bmdzRXF1YWwgbm90IHRyaXZpYWxseSB1bmVxdWFsIGNhc2UiKSk7CisgICAgICAgIExCYXNpY0Js
b2NrIG5vdEVtcHR5Q2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgic3RyaW5nc0VxdWFsIG5v
dCBlbXB0eSBjYXNlIikpOworICAgICAgICBMQmFzaWNCbG9jayBsZWZ0UmVhZHlDYXNlID0gRlRM
X05FV19CTE9DSyhtX291dCwgKCJzdHJpbmdzRXF1YWwgbGVmdCByZWFkeSBjYXNlIikpOworICAg
ICAgICBMQmFzaWNCbG9jayByaWdodFJlYWR5Q2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgi
c3RyaW5nc0VxdWFsIHJpZ2h0IHJlYWR5IGNhc2UiKSk7CisgICAgICAgIExCYXNpY0Jsb2NrIGxl
ZnQ4Qml0Q2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgic3RyaW5nc0VxdWFsIGxlZnQgOC1i
aXQgY2FzZSIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgcmlnaHQ4Qml0Q2FzZSA9IEZUTF9ORVdf
QkxPQ0sobV9vdXQsICgic3RyaW5nc0VxdWFsIHJpZ2h0IDgtYml0IGNhc2UiKSk7CisgICAgICAg
IExCYXNpY0Jsb2NrIGxvb3AgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoInN0cmluZ3NFcXVhbCBs
b29wIikpOworICAgICAgICBMQmFzaWNCbG9jayBieXRlc0VxdWFsID0gRlRMX05FV19CTE9DSyht
X291dCwgKCJzdHJpbmdzRXF1YWwgYnl0ZXMgZXF1YWwiKSk7CisgICAgICAgIExCYXNpY0Jsb2Nr
IHRydWVDYXNlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJzdHJpbmdzRXF1YWwgdHJ1ZSBjYXNl
IikpOworICAgICAgICBMQmFzaWNCbG9jayBmYWxzZUNhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0
LCAoInN0cmluZ3NFcXVhbCBmYWxzZSBjYXNlIikpOworICAgICAgICBMQmFzaWNCbG9jayBzbG93
Q2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgic3RyaW5nc0VxdWFsIHNsb3cgY2FzZSIpKTsK
KyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwg
KCJzdHJpbmdzRXF1YWwgY29udGludWF0aW9uIikpOworCisgICAgICAgIExWYWx1ZSBsZW5ndGgg
PSBtX291dC5sb2FkMzIobGVmdEpTU3RyaW5nLCBtX2hlYXBzLkpTU3RyaW5nX2xlbmd0aCk7CisK
KyAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgbV9vdXQubm90RXF1YWwobGVuZ3Ro
LCBtX291dC5sb2FkMzIocmlnaHRKU1N0cmluZywgbV9oZWFwcy5KU1N0cmluZ19sZW5ndGgpKSwK
KyAgICAgICAgICAgIHVuc3VyZShmYWxzZUNhc2UpLCB1bnN1cmUobm90VHJpdmlhbGx5VW5lcXVh
bENhc2UpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRv
KG5vdFRyaXZpYWxseVVuZXF1YWxDYXNlLCBub3RFbXB0eUNhc2UpOworCisgICAgICAgIG1fb3V0
LmJyYW5jaChtX291dC5pc1plcm8zMihsZW5ndGgpLCB1bnN1cmUodHJ1ZUNhc2UpLCB1bnN1cmUo
bm90RW1wdHlDYXNlKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90RW1wdHlDYXNlLCBs
ZWZ0UmVhZHlDYXNlKTsKKworICAgICAgICBMVmFsdWUgbGVmdCA9IG1fb3V0LmxvYWRQdHIobGVm
dEpTU3RyaW5nLCBtX2hlYXBzLkpTU3RyaW5nX3ZhbHVlKTsKKyAgICAgICAgTFZhbHVlIHJpZ2h0
ID0gbV9vdXQubG9hZFB0cihyaWdodEpTU3RyaW5nLCBtX2hlYXBzLkpTU3RyaW5nX3ZhbHVlKTsK
KworICAgICAgICBtX291dC5icmFuY2gobV9vdXQubm90TnVsbChsZWZ0KSwgdXN1YWxseShsZWZ0
UmVhZHlDYXNlKSwgcmFyZWx5KHNsb3dDYXNlKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8o
bGVmdFJlYWR5Q2FzZSwgcmlnaHRSZWFkeUNhc2UpOworICAgICAgICAKKyAgICAgICAgbV9vdXQu
YnJhbmNoKG1fb3V0Lm5vdE51bGwocmlnaHQpLCB1c3VhbGx5KHJpZ2h0UmVhZHlDYXNlKSwgcmFy
ZWx5KHNsb3dDYXNlKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8ocmlnaHRSZWFkeUNBc2Us
IGxlZnQ4Qml0Q2FzZSk7CisKKyAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgbV9v
dXQudGVzdElzWmVybzMyKAorICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQzMihsZWZ0LCBtX2hl
YXBzLlN0cmluZ0ltcGxfaGFzaEFuZEZsYWdzKSwKKyAgICAgICAgICAgICAgICBtX291dC5jb25z
dEludDMyKFN0cmluZ0ltcGw6OmZsYWdJczhCaXQoKSkpLAorICAgICAgICAgICAgdW5zdXJlKHNs
b3dDYXNlKSwgdW5zdXJlKGxlZnQ4Qml0Q2FzZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGxlZnQ4Qml0Q2FzZSwgcmlnaHQ4Qml0Q2FzZSk7CisKKyAgICAgICAgbV9vdXQuYnJhbmNoKAor
ICAgICAgICAgICAgbV9vdXQudGVzdElzWmVybzMyKAorICAgICAgICAgICAgICAgIG1fb3V0Lmxv
YWQzMihyaWdodCwgbV9oZWFwcy5TdHJpbmdJbXBsX2hhc2hBbmRGbGFncyksCisgICAgICAgICAg
ICAgICAgbV9vdXQuY29uc3RJbnQzMihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpKSwKKyAgICAg
ICAgICAgIHVuc3VyZShzbG93Q2FzZSksIHVuc3VyZShyaWdodDhCaXRDYXNlKSk7CisKKyAgICAg
ICAgbV9vdXQuYXBwZW5kVG8ocmlnaHQ4Qml0Q2FzZSwgbG9vcCk7CisKKyAgICAgICAgTFZhbHVl
IGxlZnREYXRhID0gbV9vdXQubG9hZFB0cihsZWZ0LCBtX2hlYXBzLlN0cmluZ0ltcGxfZGF0YSk7
CisgICAgICAgIExWYWx1ZSByaWdodERhdGEgPSBtX291dC5sb2FkUHRyKHJpZ2h0LCBtX2hlYXBz
LlN0cmluZ0ltcGxfZGF0YSk7CisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgaW5kZXhBdFN0YXJ0
ID0gbV9vdXQuYW5jaG9yKGxlbmd0aCk7CisKKyAgICAgICAgbV9vdXQuanVtcChsb29wKTsKKwor
ICAgICAgICBMVmFsdWUgaW5kZXhBdExvb3BUb3AgPSBtX291dC5waGkobV9vdXQuaW50MzIsIGlu
ZGV4QXRTdGFydCk7CisgICAgICAgIExWYWx1ZSBpbmRleEluTG9vcCA9IG1fb3V0LnN1YihpbmRl
eEF0TG9vcFRvcCwgbV9vdXQuaW50MzJPbmUpOworCisgICAgICAgIExWYWx1ZSBsZWZ0Qnl0ZSA9
IG1fb3V0LmxvYWQ4WmVyb0V4dDMyKAorICAgICAgICAgICAgbV9vdXQuYmFzZUluZGV4KG1faGVh
cHMuY2hhcmFjdGVyczgsIGxlZnREYXRhLCBtX291dC56ZXJvRXh0UHRyKGluZGV4SW5Mb29wKSkp
OworICAgICAgICBMVmFsdWUgcmlnaHRCeXRlID0gbV9vdXQubG9hZDhaZXJvRXh0MzIoCisgICAg
ICAgICAgICBtX291dC5iYXNlSW5kZXgobV9oZWFwcy5jaGFyYWN0ZXJzOCwgcmlnaHREYXRhLCBt
X291dC56ZXJvRXh0UHRyKGluZGV4SW5Mb29wKSkpOworCisgICAgICAgIG1fb3V0LmJyYW5jaCht
X291dC5ub3RFcXVhbChsZWZ0Qnl0ZSwgcmlnaHRCeXRlKSwgdW5zdXJlKGZhbHNlQ2FzZSksIHVu
c3VyZShieXRlc0VxdWFsKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oYnl0ZXNFcXVhbCwg
dHJ1ZUNhc2UpOworCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGluZGV4Rm9yTmV4dEl0ZXJhdGlv
biA9IG1fb3V0LmFuY2hvcihpbmRleEluTG9vcCk7CisgICAgICAgIG1fb3V0LmFkZEluY29taW5n
VG9QaGkoaW5kZXhBdExvb3BUb3AsIGluZGV4Rm9yTmV4dEl0ZXJhdGlvbik7CisgICAgICAgIG1f
b3V0LmJyYW5jaChtX291dC5ub3RaZXJvMzIoaW5kZXhJbkxvb3ApLCB1bnN1cmUobG9vcCksIHVu
c3VyZSh0cnVlQ2FzZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHRydWVDYXNlLCBmYWxz
ZUNhc2UpOworICAgICAgICAKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgdHJ1ZVJlc3VsdCA9IG1f
b3V0LmFuY2hvcihtX291dC5ib29sZWFuVHJ1ZSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBmYWxzZVJlc3VsdCA9IG1fb3V0LmFu
Y2hvcihtX291dC5ib29sZWFuRmFsc2UpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7CisKKyAgICAgICAgTFZhbHVlIHNsb3dSZXN1bHRWYWx1ZSA9IHZtQ2FsbCgKKyAgICAgICAg
ICAgIG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0cmluZ0Vx
KSwgbV9jYWxsRnJhbWUsCisgICAgICAgICAgICBsZWZ0SlNTdHJpbmcsIHJpZ2h0SlNTdHJpbmcp
OworICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHVuYm94
Qm9vbGVhbihzbG93UmVzdWx0VmFsdWUpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwor
ICAgICAgICByZXR1cm4gbV9vdXQucGhpKG1fb3V0LmJvb2xlYW4sIHRydWVSZXN1bHQsIGZhbHNl
UmVzdWx0LCBzbG93UmVzdWx0KTsKKyAgICB9CisKICNpZiBGVExfVVNFU19CMwogICAgIGVudW0g
U2NyYXRjaEZQUlVzYWdlIHsKICAgICAgICAgRG9udE5lZWRTY3JhdGNoRlBSLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271484</attachid>
            <date>2016-02-16 14:31:14 -0800</date>
            <delta_ts>2016-02-16 15:54:13 -0800</delta_ts>
            <desc>maybe the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>11681</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk2NjU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBA
CisyMDE2LTAyLTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIHNob3VsZCBzdXBwb3J0IENvbXBhcmVFcShTdHJpbmc6LCBTdHJpbmc6KQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MjY5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwv
RlRMTG93ZXJERkdUb0xMVk0uY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0xMVk06OmNvbXBpbGVDb21wYXJlRXEpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0xMVk06OmNvbXBpbGVDb21wYXJlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0xMVk06Om5vblNwZWN1bGF0aXZlQ29tcGFyZSk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6c3RyaW5nc0VxdWFsKToKKyAgICAgICAgKiB0ZXN0
cy9zdHJlc3MvZnRsLXN0cmluZy1lcXVhbGl0eS5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMv
c3RyZXNzL2Z0bC1zdHJpbmctaWRlbnQtZXF1YWxpdHkuanM6IEFkZGVkLgorICAgICAgICAqIHRl
c3RzL3N0cmVzcy9mdGwtc3RyaW5nLXN0cmljdC1lcXVhbGl0eS5qczogQWRkZWQuCisKIDIwMTYt
MDItMTYgIFNhYW0gYmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgU2FtcGxp
bmdQcm9maWxlciBzdGlsbCBmYWlscyB3aXRoIEFTYW4gZW5hYmxlZApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMTk2NjQz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMzYsNiArMzM2LDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5D
b21waWxlKE5vZGUqIAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UpKQogICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlKSkKKyAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN5bWJvbFVzZSkpCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChPYmplY3RVc2Up
KQpAQCAtMzYwLDYgKzM2Miw4IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShO
b2RlKiAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VL
aW5kKFN0cmluZ0lkZW50VXNlKSkKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAobm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSkpCisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChPYmplY3RVc2UsIFVudHlwZWRVc2UpKQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBl
ZFVzZSwgT2JqZWN0VXNlKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxOTY2NDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgz
OCw3ICs0ODM4LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKE9iamVjdFVzZSkKICAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEJvb2xlYW5Vc2UpCiAgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChTeW1i
b2xVc2UpCi0gICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVu
dFVzZSkpIHsKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lk
ZW50VXNlKQorICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNl
KSkgewogICAgICAgICAgICAgY29tcGlsZUNvbXBhcmVTdHJpY3RFcSgpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC00OTA1LDYgKzQ5MDYsMzEgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5
VXNlS2luZChTdHJpbmdVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0NlbGwo
bV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RUcml2aWFsbHlF
cXVhbENhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkNvbXBhcmVTdHJpY3RFcS9TdHJpbmcg
bm90IHRyaXZpYWxseSBlcXVhbCBjYXNlIikpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29u
dGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJDb21wYXJlU3RyaWN0RXEvU3RyaW5n
IGNvbnRpbnVhdGlvbiIpKTsKKworICAgICAgICAgICAgc3BlY3VsYXRlU3RyaW5nKG1fbm9kZS0+
Y2hpbGQxKCksIGxlZnQpOworCisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0
ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5UcnVlKTsKKyAgICAgICAgICAgIG1fb3V0LmJy
YW5jaCgKKyAgICAgICAgICAgICAgICBtX291dC5lcXVhbChsZWZ0LCByaWdodCksIHVuc3VyZShj
b250aW51YXRpb24pLCB1bnN1cmUobm90VHJpdmlhbGx5RXF1YWxDYXNlKSk7CisKKyAgICAgICAg
ICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8obm90VHJpdmlhbGx5RXF1
YWxDYXNlLCBjb250aW51YXRpb24pOworCisgICAgICAgICAgICBzcGVjdWxhdGVTdHJpbmcobV9u
b2RlLT5jaGlsZDIoKSwgcmlnaHQpOworICAgICAgICAgICAgCisgICAgICAgICAgICBWYWx1ZUZy
b21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHN0cmluZ3NFcXVhbChsZWZ0LCByaWdo
dCkpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAg
ICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAgIHNl
dEJvb2xlYW4obV9vdXQucGhpKG1fb3V0LmJvb2xlYW4sIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGlmIChtX25vZGUt
PmlzQmluYXJ5VXNlS2luZChPYmplY3RVc2UsIFVudHlwZWRVc2UpKSB7CiAgICAgICAgICAgICBz
ZXRCb29sZWFuKAogICAgICAgICAgICAgICAgIG1fb3V0LmVxdWFsKApAQCAtNzYxOSw2ICs3NjQ1
LDEwNyBAQCBwcml2YXRlOgogICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShtX291dC5ib29s
ZWFuLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CiAgICAgfQogCisgICAgTFZhbHVlIHN0cmlu
Z3NFcXVhbChMVmFsdWUgbGVmdEpTU3RyaW5nLCBMVmFsdWUgcmlnaHRKU1N0cmluZykKKyAgICB7
CisgICAgICAgIExCYXNpY0Jsb2NrIG5vdFRyaXZpYWxseVVuZXF1YWxDYXNlID0gRlRMX05FV19C
TE9DSyhtX291dCwgKCJzdHJpbmdzRXF1YWwgbm90IHRyaXZpYWxseSB1bmVxdWFsIGNhc2UiKSk7
CisgICAgICAgIExCYXNpY0Jsb2NrIG5vdEVtcHR5Q2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQs
ICgic3RyaW5nc0VxdWFsIG5vdCBlbXB0eSBjYXNlIikpOworICAgICAgICBMQmFzaWNCbG9jayBs
ZWZ0UmVhZHlDYXNlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJzdHJpbmdzRXF1YWwgbGVmdCBy
ZWFkeSBjYXNlIikpOworICAgICAgICBMQmFzaWNCbG9jayByaWdodFJlYWR5Q2FzZSA9IEZUTF9O
RVdfQkxPQ0sobV9vdXQsICgic3RyaW5nc0VxdWFsIHJpZ2h0IHJlYWR5IGNhc2UiKSk7CisgICAg
ICAgIExCYXNpY0Jsb2NrIGxlZnQ4Qml0Q2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgic3Ry
aW5nc0VxdWFsIGxlZnQgOC1iaXQgY2FzZSIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgcmlnaHQ4
Qml0Q2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgic3RyaW5nc0VxdWFsIHJpZ2h0IDgtYml0
IGNhc2UiKSk7CisgICAgICAgIExCYXNpY0Jsb2NrIGxvb3AgPSBGVExfTkVXX0JMT0NLKG1fb3V0
LCAoInN0cmluZ3NFcXVhbCBsb29wIikpOworICAgICAgICBMQmFzaWNCbG9jayBieXRlc0VxdWFs
ID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJzdHJpbmdzRXF1YWwgYnl0ZXMgZXF1YWwiKSk7Cisg
ICAgICAgIExCYXNpY0Jsb2NrIHRydWVDYXNlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJzdHJp
bmdzRXF1YWwgdHJ1ZSBjYXNlIikpOworICAgICAgICBMQmFzaWNCbG9jayBmYWxzZUNhc2UgPSBG
VExfTkVXX0JMT0NLKG1fb3V0LCAoInN0cmluZ3NFcXVhbCBmYWxzZSBjYXNlIikpOworICAgICAg
ICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgic3RyaW5nc0Vx
dWFsIHNsb3cgY2FzZSIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gRlRM
X05FV19CTE9DSyhtX291dCwgKCJzdHJpbmdzRXF1YWwgY29udGludWF0aW9uIikpOworCisgICAg
ICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2FkMzIobGVmdEpTU3RyaW5nLCBtX2hlYXBzLkpT
U3RyaW5nX2xlbmd0aCk7CisKKyAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgbV9v
dXQubm90RXF1YWwobGVuZ3RoLCBtX291dC5sb2FkMzIocmlnaHRKU1N0cmluZywgbV9oZWFwcy5K
U1N0cmluZ19sZW5ndGgpKSwKKyAgICAgICAgICAgIHVuc3VyZShmYWxzZUNhc2UpLCB1bnN1cmUo
bm90VHJpdmlhbGx5VW5lcXVhbENhc2UpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4
dCA9IG1fb3V0LmFwcGVuZFRvKG5vdFRyaXZpYWxseVVuZXF1YWxDYXNlLCBub3RFbXB0eUNhc2Up
OworCisgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5pc1plcm8zMihsZW5ndGgpLCB1bnN1cmUo
dHJ1ZUNhc2UpLCB1bnN1cmUobm90RW1wdHlDYXNlKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5k
VG8obm90RW1wdHlDYXNlLCBsZWZ0UmVhZHlDYXNlKTsKKworICAgICAgICBMVmFsdWUgbGVmdCA9
IG1fb3V0LmxvYWRQdHIobGVmdEpTU3RyaW5nLCBtX2hlYXBzLkpTU3RyaW5nX3ZhbHVlKTsKKyAg
ICAgICAgTFZhbHVlIHJpZ2h0ID0gbV9vdXQubG9hZFB0cihyaWdodEpTU3RyaW5nLCBtX2hlYXBz
LkpTU3RyaW5nX3ZhbHVlKTsKKworICAgICAgICBtX291dC5icmFuY2gobV9vdXQubm90TnVsbChs
ZWZ0KSwgdXN1YWxseShsZWZ0UmVhZHlDYXNlKSwgcmFyZWx5KHNsb3dDYXNlKSk7CisKKyAgICAg
ICAgbV9vdXQuYXBwZW5kVG8obGVmdFJlYWR5Q2FzZSwgcmlnaHRSZWFkeUNhc2UpOworICAgICAg
ICAKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0Lm5vdE51bGwocmlnaHQpLCB1c3VhbGx5KHJp
Z2h0UmVhZHlDYXNlKSwgcmFyZWx5KHNsb3dDYXNlKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5k
VG8ocmlnaHRSZWFkeUNhc2UsIGxlZnQ4Qml0Q2FzZSk7CisKKyAgICAgICAgbV9vdXQuYnJhbmNo
KAorICAgICAgICAgICAgbV9vdXQudGVzdElzWmVybzMyKAorICAgICAgICAgICAgICAgIG1fb3V0
LmxvYWQzMihsZWZ0LCBtX2hlYXBzLlN0cmluZ0ltcGxfaGFzaEFuZEZsYWdzKSwKKyAgICAgICAg
ICAgICAgICBtX291dC5jb25zdEludDMyKFN0cmluZ0ltcGw6OmZsYWdJczhCaXQoKSkpLAorICAg
ICAgICAgICAgdW5zdXJlKHNsb3dDYXNlKSwgdW5zdXJlKGxlZnQ4Qml0Q2FzZSkpOworCisgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKGxlZnQ4Qml0Q2FzZSwgcmlnaHQ4Qml0Q2FzZSk7CisKKyAgICAg
ICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgbV9vdXQudGVzdElzWmVybzMyKAorICAgICAg
ICAgICAgICAgIG1fb3V0LmxvYWQzMihyaWdodCwgbV9oZWFwcy5TdHJpbmdJbXBsX2hhc2hBbmRG
bGFncyksCisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihTdHJpbmdJbXBsOjpmbGFn
SXM4Qml0KCkpKSwKKyAgICAgICAgICAgIHVuc3VyZShzbG93Q2FzZSksIHVuc3VyZShyaWdodDhC
aXRDYXNlKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8ocmlnaHQ4Qml0Q2FzZSwgbG9vcCk7
CisKKyAgICAgICAgTFZhbHVlIGxlZnREYXRhID0gbV9vdXQubG9hZFB0cihsZWZ0LCBtX2hlYXBz
LlN0cmluZ0ltcGxfZGF0YSk7CisgICAgICAgIExWYWx1ZSByaWdodERhdGEgPSBtX291dC5sb2Fk
UHRyKHJpZ2h0LCBtX2hlYXBzLlN0cmluZ0ltcGxfZGF0YSk7CisKKyAgICAgICAgVmFsdWVGcm9t
QmxvY2sgaW5kZXhBdFN0YXJ0ID0gbV9vdXQuYW5jaG9yKGxlbmd0aCk7CisKKyAgICAgICAgbV9v
dXQuanVtcChsb29wKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhsb29wLCBieXRlc0VxdWFs
KTsKKworICAgICAgICBMVmFsdWUgaW5kZXhBdExvb3BUb3AgPSBtX291dC5waGkobV9vdXQuaW50
MzIsIGluZGV4QXRTdGFydCk7CisgICAgICAgIExWYWx1ZSBpbmRleEluTG9vcCA9IG1fb3V0LnN1
YihpbmRleEF0TG9vcFRvcCwgbV9vdXQuaW50MzJPbmUpOworCisgICAgICAgIExWYWx1ZSBsZWZ0
Qnl0ZSA9IG1fb3V0LmxvYWQ4WmVyb0V4dDMyKAorICAgICAgICAgICAgbV9vdXQuYmFzZUluZGV4
KG1faGVhcHMuY2hhcmFjdGVyczgsIGxlZnREYXRhLCBtX291dC56ZXJvRXh0UHRyKGluZGV4SW5M
b29wKSkpOworICAgICAgICBMVmFsdWUgcmlnaHRCeXRlID0gbV9vdXQubG9hZDhaZXJvRXh0MzIo
CisgICAgICAgICAgICBtX291dC5iYXNlSW5kZXgobV9oZWFwcy5jaGFyYWN0ZXJzOCwgcmlnaHRE
YXRhLCBtX291dC56ZXJvRXh0UHRyKGluZGV4SW5Mb29wKSkpOworCisgICAgICAgIG1fb3V0LmJy
YW5jaChtX291dC5ub3RFcXVhbChsZWZ0Qnl0ZSwgcmlnaHRCeXRlKSwgdW5zdXJlKGZhbHNlQ2Fz
ZSksIHVuc3VyZShieXRlc0VxdWFsKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oYnl0ZXNF
cXVhbCwgdHJ1ZUNhc2UpOworCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGluZGV4Rm9yTmV4dEl0
ZXJhdGlvbiA9IG1fb3V0LmFuY2hvcihpbmRleEluTG9vcCk7CisgICAgICAgIG1fb3V0LmFkZElu
Y29taW5nVG9QaGkoaW5kZXhBdExvb3BUb3AsIGluZGV4Rm9yTmV4dEl0ZXJhdGlvbik7CisgICAg
ICAgIG1fb3V0LmJyYW5jaChtX291dC5ub3RaZXJvMzIoaW5kZXhJbkxvb3ApLCB1bnN1cmUobG9v
cCksIHVuc3VyZSh0cnVlQ2FzZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHRydWVDYXNl
LCBmYWxzZUNhc2UpOworICAgICAgICAKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgdHJ1ZVJlc3Vs
dCA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuVHJ1ZSk7CisgICAgICAgIG1fb3V0Lmp1bXAo
Y29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhmYWxzZUNhc2UsIHNsb3dD
YXNlKTsKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBmYWxzZVJlc3VsdCA9IG1fb3V0LmFuY2hv
cihtX291dC5ib29sZWFuRmFsc2UpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7
CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CisKKyAg
ICAgICAgTFZhbHVlIHNsb3dSZXN1bHRWYWx1ZSA9IHZtQ2FsbCgKKyAgICAgICAgICAgIG1fb3V0
LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0cmluZ0VxKSwgbV9jYWxs
RnJhbWUsCisgICAgICAgICAgICBsZWZ0SlNTdHJpbmcsIHJpZ2h0SlNTdHJpbmcpOworICAgICAg
ICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHVuYm94Qm9vbGVhbihz
bG93UmVzdWx0VmFsdWUpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBy
ZXR1cm4gbV9vdXQucGhpKG1fb3V0LmJvb2xlYW4sIHRydWVSZXN1bHQsIGZhbHNlUmVzdWx0LCBz
bG93UmVzdWx0KTsKKyAgICB9CisKICNpZiBGVExfVVNFU19CMwogICAgIGVudW0gU2NyYXRjaEZQ
UlVzYWdlIHsKICAgICAgICAgRG9udE5lZWRTY3JhdGNoRlBSLApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9mdGwtc3RyaW5nLWVxdWFsaXR5LmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1lcXVhbGl0
eS5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
ZnRsLXN0cmluZy1lcXVhbGl0eS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1IEBACitm
dW5jdGlvbiBtYWtlU3RyaW5nKGNoYXIpIHsKKyAgICB2YXIgcmVzdWx0ID0gIiI7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKQorICAgICAgICByZXN1bHQgKz0gY2hhcjsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCit2YXIgYXJyYXkgPSBbICJhIiwgImIiLCAiYyIsICJkIiBdOwor
Citmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKQorICAgIGFycmF5W2ldID0g
bWFrZVN0cmluZyhhcnJheVtpXSk7CisKK2Z1bmN0aW9uIGZvbyhhcnJheSwgcykgeworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKGFycmF5
W2ldID09IHMpCisgICAgICAgICAgICByZXR1cm4gaTsKKyAgICB9CisgICAgcmV0dXJuIG51bGw7
Cit9CisKK25vSW5saW5lKGZvbyk7CisKK3ZhciBhcnJheTIgPSBbICJhIiwgImIiLCAiYyIsICJk
IiwgImUiIF07CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkyLmxlbmd0aDsgKytpKQorICAg
IGFycmF5MltpXSA9IG1ha2VTdHJpbmcoYXJyYXkyW2ldKTsKKworZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwMDA7ICsraSkgeworICAgIHZhciBpbmRleCA9IGkgJSBhcnJheTIubGVuZ3RoOworICAg
IHZhciByZXN1bHQgPSBmb28oYXJyYXksIGFycmF5MltpbmRleF0pOworICAgIHZhciBleHBlY3Rl
ZCA9IGluZGV4ID49IGFycmF5Lmxlbmd0aCA/IG51bGwgOiBpbmRleAorICAgIGlmIChyZXN1bHQg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1
bHQ7Cit9CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZnRsLXN0
cmluZy1pZGVudC1lcXVhbGl0eS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Z0bC1zdHJpbmctaWRlbnQtZXF1YWxpdHkuanMJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Z0bC1zdHJpbmctaWRlbnQt
ZXF1YWxpdHkuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOCBAQAordmFyIGFycmF5ID0g
WyAiYSIsICJiIiwgImMiLCAiZCIgXTsKKworZnVuY3Rpb24gZm9vKGFycmF5LCBzKSB7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkgeworICAgICAgICBpZiAoYXJy
YXlbaV0gPT0gcykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK25vSW5saW5lKGZvbyk7CisKK3ZhciByZXN1bHQgPSAwOworZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwMDA7ICsraSkKKyAgICByZXN1bHQgKz0gZm9vKGFycmF5LCAiZCIpOwor
CitpZiAocmVzdWx0ICE9IDEwMDAwMCkKKyAgICB0aHJvdyAiQmFkIHJlc3VsdDogIiArIHJlc3Vs
dDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1z
dHJpY3QtZXF1YWxpdHkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9mdGwtc3RyaW5nLXN0cmljdC1lcXVhbGl0eS5qcwkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1zdHJpY3QtZXF1
YWxpdHkuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorZnVuY3Rpb24gbWFrZVN0
cmluZyhjaGFyKSB7CisgICAgdmFyIHJlc3VsdCA9ICIiOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMTA7ICsraSkKKyAgICAgICAgcmVzdWx0ICs9IGNoYXI7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKwordmFyIGFycmF5ID0gWyAiYSIsICJiIiwgImMiLCAiZCIgXTsKKworZm9yICh2YXIgaSA9
IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkKKyAgICBhcnJheVtpXSA9IG1ha2VTdHJpbmcoYXJy
YXlbaV0pOworCitmdW5jdGlvbiBmb28oYXJyYXksIHMpIHsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIGlmIChhcnJheVtpXSA9PT0gcykKKyAg
ICAgICAgICAgIHJldHVybiBpOworICAgIH0KKyAgICByZXR1cm4gbnVsbDsKK30KKworbm9Jbmxp
bmUoZm9vKTsKKwordmFyIGFycmF5MiA9IFsgImEiLCAiYiIsICJjIiwgImQiLCAiZSIgXTsKKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheTIubGVuZ3RoOyArK2kpCisgICAgYXJyYXkyW2ldID0g
bWFrZVN0cmluZyhhcnJheTJbaV0pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytp
KSB7CisgICAgdmFyIGluZGV4ID0gaSAlIGFycmF5Mi5sZW5ndGg7CisgICAgdmFyIHJlc3VsdCA9
IGZvbyhhcnJheSwgYXJyYXkyW2luZGV4XSk7CisgICAgdmFyIGV4cGVjdGVkID0gaW5kZXggPj0g
YXJyYXkubGVuZ3RoID8gbnVsbCA6IGluZGV4CisgICAgaWYgKHJlc3VsdCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271500</attachid>
            <date>2016-02-16 15:54:13 -0800</date>
            <delta_ts>2016-02-16 20:28:01 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>12036</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk2NjU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBA
CisyMDE2LTAyLTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIHNob3VsZCBzdXBwb3J0IENvbXBhcmVFcShTdHJpbmc6LCBTdHJpbmc6KQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MjY5CisgICAgICAgIHJk
YXI6Ly9wcm9ibGVtLzI0NDk5OTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTG9va3MgbGlrZSBhIHNsaWdodCBwZGZqcyBzbG93LWRvd24sIHByb2Jh
Ymx5IGJlY2F1c2Ugd2UncmUgaGF2aW5nIHNvbWUgcmVjb21waWxhdGlvbnMuIEkKKyAgICAgICAg
dGhpbmsgd2Ugc2hvdWxkIGxhbmQgdGhlIGluY3JlYXNlZCBjb3ZlcmFnZSBmaXJzdCBhbmQgZml4
IHRoZSBpc3N1ZXMgYWZ0ZXIsIGVzcGVjaWFsbHkgc2luY2UKKyAgICAgICAgdGhlIHJlZ3Jlc3Np
b24gaXMgc28gc21hbGwgYW5kIGRvZXNuJ3QgaGF2ZSBhIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNh
bnQgZWZmZWN0IG9uIHRoZSBvdmVyYWxsCisgICAgICAgIHNjb3JlLgorCisgICAgICAgICogZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6Cisg
ICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ29tcGFyZUVxKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpub25TcGVjdWxhdGl2ZUNvbXBhcmUpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OnN0cmluZ3NFcXVhbCk6Cisg
ICAgICAgICogdGVzdHMvc3RyZXNzL2Z0bC1zdHJpbmctZXF1YWxpdHkuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9mdGwtc3RyaW5nLWlkZW50LWVxdWFsaXR5LmpzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1zdHJpY3QtZXF1YWxpdHkuanM6IEFk
ZGVkLgorCiAyMDE2LTAyLTE2ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAg
ICAgICAgIFNhbXBsaW5nUHJvZmlsZXIgc3RpbGwgZmFpbHMgd2l0aCBBU2FuIGVuYWJsZWQKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJl
dmlzaW9uIDE5NjY1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM3LDYgKzMzNyw4IEBAIGlubGluZSBDYXBhYmls
aXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBp
ZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlKSkKICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSkpCisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChTeW1ib2xV
c2UpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtp
bmQoT2JqZWN0VXNlKSkKQEAgLTM2MSw2ICszNjMsOCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVs
IGNhbkNvbXBpbGUoTm9kZSogCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKG5vZGUt
PmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkpCiAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdVc2UpKQorICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlLCBVbnR5
cGVkVXNlKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlV
c2VLaW5kKFVudHlwZWRVc2UsIE9iamVjdFVzZSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTk2NjU4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4OTcsNyArNDg5Nyw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB8fCBtX25v
ZGUtPmlzQmluYXJ5VXNlS2luZChPYmplY3RVc2UpCiAgICAgICAgICAgICB8fCBtX25vZGUtPmlz
QmluYXJ5VXNlS2luZChCb29sZWFuVXNlKQogICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFy
eVVzZUtpbmQoU3ltYm9sVXNlKQotICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtp
bmQoU3RyaW5nSWRlbnRVc2UpKSB7CisgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNl
S2luZChTdHJpbmdJZGVudFVzZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKFN0cmluZ1VzZSkpIHsKICAgICAgICAgICAgIGNvbXBpbGVDb21wYXJlU3RyaWN0RXEoKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNDk2NCw2ICs0OTY1LDMxIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBpZiAobV9u
b2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxl
ZnQgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0
ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTEJhc2ljQmxvY2sg
bm90VHJpdmlhbGx5RXF1YWxDYXNlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJDb21wYXJlU3Ry
aWN0RXEvU3RyaW5nIG5vdCB0cml2aWFsbHkgZXF1YWwgY2FzZSIpKTsKKyAgICAgICAgICAgIExC
YXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiQ29tcGFyZVN0
cmljdEVxL1N0cmluZyBjb250aW51YXRpb24iKSk7CisKKyAgICAgICAgICAgIHNwZWN1bGF0ZVN0
cmluZyhtX25vZGUtPmNoaWxkMSgpLCBsZWZ0KTsKKworICAgICAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuVHJ1ZSk7CisgICAgICAg
ICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAgbV9vdXQuZXF1YWwobGVmdCwgcmln
aHQpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKG5vdFRyaXZpYWxseUVxdWFsQ2FzZSkp
OworCisgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKG5v
dFRyaXZpYWxseUVxdWFsQ2FzZSwgY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgc3BlY3Vs
YXRlU3RyaW5nKG1fbm9kZS0+Y2hpbGQyKCksIHJpZ2h0KTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihzdHJpbmdzRXF1
YWwobGVmdCwgcmlnaHQpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsK
KworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Cisg
ICAgICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShtX291dC5ib29sZWFuLCBmYXN0UmVzdWx0
LCBzbG93UmVzdWx0KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAg
ICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlLCBVbnR5cGVkVXNlKSkgewog
ICAgICAgICAgICAgc2V0Qm9vbGVhbigKICAgICAgICAgICAgICAgICBtX291dC5lcXVhbCgKQEAg
LTc2NzgsNiArNzcwNCwxMDcgQEAgcHJpdmF0ZToKICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5w
aGkobV9vdXQuYm9vbGVhbiwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOwogICAgIH0KIAorICAg
IExWYWx1ZSBzdHJpbmdzRXF1YWwoTFZhbHVlIGxlZnRKU1N0cmluZywgTFZhbHVlIHJpZ2h0SlNT
dHJpbmcpCisgICAgeworICAgICAgICBMQmFzaWNCbG9jayBub3RUcml2aWFsbHlVbmVxdWFsQ2Fz
ZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgic3RyaW5nc0VxdWFsIG5vdCB0cml2aWFsbHkgdW5l
cXVhbCBjYXNlIikpOworICAgICAgICBMQmFzaWNCbG9jayBub3RFbXB0eUNhc2UgPSBGVExfTkVX
X0JMT0NLKG1fb3V0LCAoInN0cmluZ3NFcXVhbCBub3QgZW1wdHkgY2FzZSIpKTsKKyAgICAgICAg
TEJhc2ljQmxvY2sgbGVmdFJlYWR5Q2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgic3RyaW5n
c0VxdWFsIGxlZnQgcmVhZHkgY2FzZSIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgcmlnaHRSZWFk
eUNhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoInN0cmluZ3NFcXVhbCByaWdodCByZWFkeSBj
YXNlIikpOworICAgICAgICBMQmFzaWNCbG9jayBsZWZ0OEJpdENhc2UgPSBGVExfTkVXX0JMT0NL
KG1fb3V0LCAoInN0cmluZ3NFcXVhbCBsZWZ0IDgtYml0IGNhc2UiKSk7CisgICAgICAgIExCYXNp
Y0Jsb2NrIHJpZ2h0OEJpdENhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoInN0cmluZ3NFcXVh
bCByaWdodCA4LWJpdCBjYXNlIikpOworICAgICAgICBMQmFzaWNCbG9jayBsb29wID0gRlRMX05F
V19CTE9DSyhtX291dCwgKCJzdHJpbmdzRXF1YWwgbG9vcCIpKTsKKyAgICAgICAgTEJhc2ljQmxv
Y2sgYnl0ZXNFcXVhbCA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgic3RyaW5nc0VxdWFsIGJ5dGVz
IGVxdWFsIikpOworICAgICAgICBMQmFzaWNCbG9jayB0cnVlQ2FzZSA9IEZUTF9ORVdfQkxPQ0so
bV9vdXQsICgic3RyaW5nc0VxdWFsIHRydWUgY2FzZSIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sg
ZmFsc2VDYXNlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJzdHJpbmdzRXF1YWwgZmFsc2UgY2Fz
ZSIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0
LCAoInN0cmluZ3NFcXVhbCBzbG93IGNhc2UiKSk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRp
bnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgic3RyaW5nc0VxdWFsIGNvbnRpbnVhdGlv
biIpKTsKKworICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDMyKGxlZnRKU1N0cmlu
ZywgbV9oZWFwcy5KU1N0cmluZ19sZW5ndGgpOworCisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAg
ICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKGxlbmd0aCwgbV9vdXQubG9hZDMyKHJpZ2h0SlNTdHJp
bmcsIG1faGVhcHMuSlNTdHJpbmdfbGVuZ3RoKSksCisgICAgICAgICAgICB1bnN1cmUoZmFsc2VD
YXNlKSwgdW5zdXJlKG5vdFRyaXZpYWxseVVuZXF1YWxDYXNlKSk7CisKKyAgICAgICAgTEJhc2lj
QmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhub3RUcml2aWFsbHlVbmVxdWFsQ2FzZSwg
bm90RW1wdHlDYXNlKTsKKworICAgICAgICBtX291dC5icmFuY2gobV9vdXQuaXNaZXJvMzIobGVu
Z3RoKSwgdW5zdXJlKHRydWVDYXNlKSwgdW5zdXJlKG5vdEVtcHR5Q2FzZSkpOworCisgICAgICAg
IG1fb3V0LmFwcGVuZFRvKG5vdEVtcHR5Q2FzZSwgbGVmdFJlYWR5Q2FzZSk7CisKKyAgICAgICAg
TFZhbHVlIGxlZnQgPSBtX291dC5sb2FkUHRyKGxlZnRKU1N0cmluZywgbV9oZWFwcy5KU1N0cmlu
Z192YWx1ZSk7CisgICAgICAgIExWYWx1ZSByaWdodCA9IG1fb3V0LmxvYWRQdHIocmlnaHRKU1N0
cmluZywgbV9oZWFwcy5KU1N0cmluZ192YWx1ZSk7CisKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1f
b3V0Lm5vdE51bGwobGVmdCksIHVzdWFsbHkobGVmdFJlYWR5Q2FzZSksIHJhcmVseShzbG93Q2Fz
ZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRSZWFkeUNhc2UsIHJpZ2h0UmVhZHlD
YXNlKTsKKyAgICAgICAgCisgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5ub3ROdWxsKHJpZ2h0
KSwgdXN1YWxseShyaWdodFJlYWR5Q2FzZSksIHJhcmVseShzbG93Q2FzZSkpOworCisgICAgICAg
IG1fb3V0LmFwcGVuZFRvKHJpZ2h0UmVhZHlDYXNlLCBsZWZ0OEJpdENhc2UpOworCisgICAgICAg
IG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgIG1fb3V0LnRlc3RJc1plcm8zMigKKyAgICAgICAg
ICAgICAgICBtX291dC5sb2FkMzIobGVmdCwgbV9oZWFwcy5TdHJpbmdJbXBsX2hhc2hBbmRGbGFn
cyksCisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihTdHJpbmdJbXBsOjpmbGFnSXM4
Qml0KCkpKSwKKyAgICAgICAgICAgIHVuc3VyZShzbG93Q2FzZSksIHVuc3VyZShsZWZ0OEJpdENh
c2UpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhsZWZ0OEJpdENhc2UsIHJpZ2h0OEJpdENh
c2UpOworCisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgIG1fb3V0LnRlc3RJc1pl
cm8zMigKKyAgICAgICAgICAgICAgICBtX291dC5sb2FkMzIocmlnaHQsIG1faGVhcHMuU3RyaW5n
SW1wbF9oYXNoQW5kRmxhZ3MpLAorICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoU3Ry
aW5nSW1wbDo6ZmxhZ0lzOEJpdCgpKSksCisgICAgICAgICAgICB1bnN1cmUoc2xvd0Nhc2UpLCB1
bnN1cmUocmlnaHQ4Qml0Q2FzZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHJpZ2h0OEJp
dENhc2UsIGxvb3ApOworCisgICAgICAgIExWYWx1ZSBsZWZ0RGF0YSA9IG1fb3V0LmxvYWRQdHIo
bGVmdCwgbV9oZWFwcy5TdHJpbmdJbXBsX2RhdGEpOworICAgICAgICBMVmFsdWUgcmlnaHREYXRh
ID0gbV9vdXQubG9hZFB0cihyaWdodCwgbV9oZWFwcy5TdHJpbmdJbXBsX2RhdGEpOworCisgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIGluZGV4QXRTdGFydCA9IG1fb3V0LmFuY2hvcihsZW5ndGgpOwor
CisgICAgICAgIG1fb3V0Lmp1bXAobG9vcCk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8obG9v
cCwgYnl0ZXNFcXVhbCk7CisKKyAgICAgICAgTFZhbHVlIGluZGV4QXRMb29wVG9wID0gbV9vdXQu
cGhpKG1fb3V0LmludDMyLCBpbmRleEF0U3RhcnQpOworICAgICAgICBMVmFsdWUgaW5kZXhJbkxv
b3AgPSBtX291dC5zdWIoaW5kZXhBdExvb3BUb3AsIG1fb3V0LmludDMyT25lKTsKKworICAgICAg
ICBMVmFsdWUgbGVmdEJ5dGUgPSBtX291dC5sb2FkOFplcm9FeHQzMigKKyAgICAgICAgICAgIG1f
b3V0LmJhc2VJbmRleChtX2hlYXBzLmNoYXJhY3RlcnM4LCBsZWZ0RGF0YSwgbV9vdXQuemVyb0V4
dFB0cihpbmRleEluTG9vcCkpKTsKKyAgICAgICAgTFZhbHVlIHJpZ2h0Qnl0ZSA9IG1fb3V0Lmxv
YWQ4WmVyb0V4dDMyKAorICAgICAgICAgICAgbV9vdXQuYmFzZUluZGV4KG1faGVhcHMuY2hhcmFj
dGVyczgsIHJpZ2h0RGF0YSwgbV9vdXQuemVyb0V4dFB0cihpbmRleEluTG9vcCkpKTsKKworICAg
ICAgICBtX291dC5icmFuY2gobV9vdXQubm90RXF1YWwobGVmdEJ5dGUsIHJpZ2h0Qnl0ZSksIHVu
c3VyZShmYWxzZUNhc2UpLCB1bnN1cmUoYnl0ZXNFcXVhbCkpOworCisgICAgICAgIG1fb3V0LmFw
cGVuZFRvKGJ5dGVzRXF1YWwsIHRydWVDYXNlKTsKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBp
bmRleEZvck5leHRJdGVyYXRpb24gPSBtX291dC5hbmNob3IoaW5kZXhJbkxvb3ApOworICAgICAg
ICBtX291dC5hZGRJbmNvbWluZ1RvUGhpKGluZGV4QXRMb29wVG9wLCBpbmRleEZvck5leHRJdGVy
YXRpb24pOworICAgICAgICBtX291dC5icmFuY2gobV9vdXQubm90WmVybzMyKGluZGV4SW5Mb29w
KSwgdW5zdXJlKGxvb3ApLCB1bnN1cmUodHJ1ZUNhc2UpKTsKKworICAgICAgICBtX291dC5hcHBl
bmRUbyh0cnVlQ2FzZSwgZmFsc2VDYXNlKTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlRnJvbUJs
b2NrIHRydWVSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhblRydWUpOworICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oZmFs
c2VDYXNlLCBzbG93Q2FzZSk7CisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFsc2VSZXN1bHQg
PSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhbkZhbHNlKTsKKyAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51
YXRpb24pOworCisgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSB2bUNhbGwoCisgICAg
ICAgICAgICBtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJp
bmdFcSksIG1fY2FsbEZyYW1lLAorICAgICAgICAgICAgbGVmdEpTU3RyaW5nLCByaWdodEpTU3Ry
aW5nKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih1
bmJveEJvb2xlYW4oc2xvd1Jlc3VsdFZhbHVlKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0
KTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LnBoaShtX291dC5ib29sZWFuLCB0cnVlUmVzdWx0LCBm
YWxzZVJlc3VsdCwgc2xvd1Jlc3VsdCk7CisgICAgfQorCiAjaWYgRlRMX1VTRVNfQjMKICAgICBl
bnVtIFNjcmF0Y2hGUFJVc2FnZSB7CiAgICAgICAgIERvbnROZWVkU2NyYXRjaEZQUiwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1lcXVhbGl0eS5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Z0bC1z
dHJpbmctZXF1YWxpdHkuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Z0bC1zdHJpbmctZXF1YWxpdHkuanMJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwzNSBAQAorZnVuY3Rpb24gbWFrZVN0cmluZyhjaGFyKSB7CisgICAgdmFyIHJlc3VsdCA9
ICIiOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkKKyAgICAgICAgcmVzdWx0ICs9
IGNoYXI7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordmFyIGFycmF5ID0gWyAiYSIsICJiIiwg
ImMiLCAiZCIgXTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkKKyAg
ICBhcnJheVtpXSA9IG1ha2VTdHJpbmcoYXJyYXlbaV0pOworCitmdW5jdGlvbiBmb28oYXJyYXks
IHMpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7CisgICAg
ICAgIGlmIChhcnJheVtpXSA9PSBzKQorICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgfQorICAg
IHJldHVybiBudWxsOworfQorCitub0lubGluZShmb28pOworCit2YXIgYXJyYXkyID0gWyAiYSIs
ICJiIiwgImMiLCAiZCIsICJlIiBdOworCitmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Mi5sZW5n
dGg7ICsraSkKKyAgICBhcnJheTJbaV0gPSBtYWtlU3RyaW5nKGFycmF5MltpXSk7CisKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAgICB2YXIgaW5kZXggPSBpICUgYXJyYXky
Lmxlbmd0aDsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKGFycmF5LCBhcnJheTJbaW5kZXhdKTsKKyAg
ICB2YXIgZXhwZWN0ZWQgPSBpbmRleCA+PSBhcnJheS5sZW5ndGggPyBudWxsIDogaW5kZXgKKyAg
ICBpZiAocmVzdWx0ICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVz
dWx0OiAiICsgcmVzdWx0OworfQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Z0bC1zdHJpbmctaWRlbnQtZXF1YWxpdHkuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9mdGwtc3RyaW5nLWlkZW50LWVxdWFsaXR5Lmpz
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9mdGwt
c3RyaW5nLWlkZW50LWVxdWFsaXR5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTggQEAK
K3ZhciBhcnJheSA9IFsgImEiLCAiYiIsICJjIiwgImQiIF07CisKK2Z1bmN0aW9uIGZvbyhhcnJh
eSwgcykgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgaWYgKGFycmF5W2ldID09IHMpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitub0lubGluZShmb28pOworCit2YXIgcmVzdWx0ID0g
MDsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpCisgICAgcmVzdWx0ICs9IGZvbyhh
cnJheSwgImQiKTsKKworaWYgKHJlc3VsdCAhPSAxMDAwMDApCisgICAgdGhyb3cgIkJhZCByZXN1
bHQ6ICIgKyByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Z0bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1zdHJpY3QtZXF1YWxpdHkuanMJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Z0bC1zdHJp
bmctc3RyaWN0LWVxdWFsaXR5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUgQEAKK2Z1
bmN0aW9uIG1ha2VTdHJpbmcoY2hhcikgeworICAgIHZhciByZXN1bHQgPSAiIjsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDEwOyArK2kpCisgICAgICAgIHJlc3VsdCArPSBjaGFyOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK3ZhciBhcnJheSA9IFsgImEiLCAiYiIsICJjIiwgImQiIF07CisK
K2ZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kpCisgICAgYXJyYXlbaV0gPSBt
YWtlU3RyaW5nKGFycmF5W2ldKTsKKworZnVuY3Rpb24gZm9vKGFycmF5LCBzKSB7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkgeworICAgICAgICBpZiAoYXJyYXlb
aV0gPT09IHMpCisgICAgICAgICAgICByZXR1cm4gaTsKKyAgICB9CisgICAgcmV0dXJuIG51bGw7
Cit9CisKK25vSW5saW5lKGZvbyk7CisKK3ZhciBhcnJheTIgPSBbICJhIiwgImIiLCAiYyIsICJk
IiwgImUiIF07CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkyLmxlbmd0aDsgKytpKQorICAg
IGFycmF5MltpXSA9IG1ha2VTdHJpbmcoYXJyYXkyW2ldKTsKKworZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwMDA7ICsraSkgeworICAgIHZhciBpbmRleCA9IGkgJSBhcnJheTIubGVuZ3RoOworICAg
IHZhciByZXN1bHQgPSBmb28oYXJyYXksIGFycmF5MltpbmRleF0pOworICAgIHZhciBleHBlY3Rl
ZCA9IGluZGV4ID49IGFycmF5Lmxlbmd0aCA/IG51bGwgOiBpbmRleAorICAgIGlmIChyZXN1bHQg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1
bHQ7Cit9CisK
</data>
<flag name="review"
          id="296316"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271523</attachid>
            <date>2016-02-16 20:28:01 -0800</date>
            <delta_ts>2016-02-16 20:28:01 -0800</delta_ts>
            <desc>rebased patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>12021</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk2Njg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBA
CisyMDE2LTAyLTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIHNob3VsZCBzdXBwb3J0IENvbXBhcmVFcShTdHJpbmc6LCBTdHJpbmc6KQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MjY5CisgICAgICAgIHJk
YXI6Ly9wcm9ibGVtLzI0NDk5OTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTG9va3MgbGlrZSBhIHNsaWdodCBwZGZqcyBzbG93LWRvd24sIHByb2Jh
Ymx5IGJlY2F1c2Ugd2UncmUgaGF2aW5nIHNvbWUgcmVjb21waWxhdGlvbnMuIEkKKyAgICAgICAg
dGhpbmsgd2Ugc2hvdWxkIGxhbmQgdGhlIGluY3JlYXNlZCBjb3ZlcmFnZSBmaXJzdCBhbmQgZml4
IHRoZSBpc3N1ZXMgYWZ0ZXIsIGVzcGVjaWFsbHkgc2luY2UKKyAgICAgICAgdGhlIHJlZ3Jlc3Np
b24gaXMgc28gc21hbGwgYW5kIGRvZXNuJ3QgaGF2ZSBhIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNh
bnQgZWZmZWN0IG9uIHRoZSBvdmVyYWxsCisgICAgICAgIHNjb3JlLgorCisgICAgICAgICogZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6Cisg
ICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ29tcGFyZUVxKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpub25TcGVjdWxhdGl2ZUNvbXBhcmUpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OnN0cmluZ3NFcXVhbCk6Cisg
ICAgICAgICogdGVzdHMvc3RyZXNzL2Z0bC1zdHJpbmctZXF1YWxpdHkuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9mdGwtc3RyaW5nLWlkZW50LWVxdWFsaXR5LmpzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1zdHJpY3QtZXF1YWxpdHkuanM6IEFk
ZGVkLgorCiAyMDE2LTAyLTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgRlRMIHNob3VsZCBzdXBwb3J0IE5ld1R5cGVkQXJyYXkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDE5NjY4NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzM3LDYgKzMzNyw4IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29t
cGlsZShOb2RlKiAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAobm9kZS0+aXNCaW5h
cnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlKSkKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBp
ZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSkpCisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChTeW1ib2xVc2UpKQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlKSkK
QEAgLTM2MSw2ICszNjMsOCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9k
ZSogCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChTdHJpbmdJZGVudFVzZSkpCiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKG5vZGUt
PmlzQmluYXJ5VXNlS2luZChTdHJpbmdVc2UpKQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlLCBVbnR5cGVkVXNlKSkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRV
c2UsIE9iamVjdFVzZSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTk2Njg0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5MjAs
NyArNDkyMCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNl
S2luZChPYmplY3RVc2UpCiAgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChC
b29sZWFuVXNlKQogICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3ltYm9s
VXNlKQotICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRV
c2UpKSB7CisgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVu
dFVzZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSkp
IHsKICAgICAgICAgICAgIGNvbXBpbGVDb21wYXJlU3RyaWN0RXEoKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtNDk4Nyw2ICs0OTg4LDMxIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoU3RyaW5nVXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93Q2VsbChtX25v
ZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90VHJpdmlhbGx5RXF1
YWxDYXNlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJDb21wYXJlU3RyaWN0RXEvU3RyaW5nIG5v
dCB0cml2aWFsbHkgZXF1YWwgY2FzZSIpKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRp
bnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiQ29tcGFyZVN0cmljdEVxL1N0cmluZyBj
b250aW51YXRpb24iKSk7CisKKyAgICAgICAgICAgIHNwZWN1bGF0ZVN0cmluZyhtX25vZGUtPmNo
aWxkMSgpLCBsZWZ0KTsKKworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9
IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuVHJ1ZSk7CisgICAgICAgICAgICBtX291dC5icmFu
Y2goCisgICAgICAgICAgICAgICAgbV9vdXQuZXF1YWwobGVmdCwgcmlnaHQpLCB1bnN1cmUoY29u
dGludWF0aW9uKSwgdW5zdXJlKG5vdFRyaXZpYWxseUVxdWFsQ2FzZSkpOworCisgICAgICAgICAg
ICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKG5vdFRyaXZpYWxseUVxdWFs
Q2FzZSwgY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgc3BlY3VsYXRlU3RyaW5nKG1fbm9k
ZS0+Y2hpbGQyKCksIHJpZ2h0KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgVmFsdWVGcm9t
QmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihzdHJpbmdzRXF1YWwobGVmdCwgcmlnaHQp
KTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgICAgICBzZXRC
b29sZWFuKG1fb3V0LnBoaShtX291dC5ib29sZWFuLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBpZiAobV9ub2RlLT5p
c0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlLCBVbnR5cGVkVXNlKSkgewogICAgICAgICAgICAgc2V0
Qm9vbGVhbigKICAgICAgICAgICAgICAgICBtX291dC5lcXVhbCgKQEAgLTc3MDEsNiArNzcyNywx
MDcgQEAgcHJpdmF0ZToKICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkobV9vdXQuYm9vbGVh
biwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOwogICAgIH0KIAorICAgIExWYWx1ZSBzdHJpbmdz
RXF1YWwoTFZhbHVlIGxlZnRKU1N0cmluZywgTFZhbHVlIHJpZ2h0SlNTdHJpbmcpCisgICAgewor
ICAgICAgICBMQmFzaWNCbG9jayBub3RUcml2aWFsbHlVbmVxdWFsQ2FzZSA9IEZUTF9ORVdfQkxP
Q0sobV9vdXQsICgic3RyaW5nc0VxdWFsIG5vdCB0cml2aWFsbHkgdW5lcXVhbCBjYXNlIikpOwor
ICAgICAgICBMQmFzaWNCbG9jayBub3RFbXB0eUNhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAo
InN0cmluZ3NFcXVhbCBub3QgZW1wdHkgY2FzZSIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgbGVm
dFJlYWR5Q2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgic3RyaW5nc0VxdWFsIGxlZnQgcmVh
ZHkgY2FzZSIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgcmlnaHRSZWFkeUNhc2UgPSBGVExfTkVX
X0JMT0NLKG1fb3V0LCAoInN0cmluZ3NFcXVhbCByaWdodCByZWFkeSBjYXNlIikpOworICAgICAg
ICBMQmFzaWNCbG9jayBsZWZ0OEJpdENhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoInN0cmlu
Z3NFcXVhbCBsZWZ0IDgtYml0IGNhc2UiKSk7CisgICAgICAgIExCYXNpY0Jsb2NrIHJpZ2h0OEJp
dENhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoInN0cmluZ3NFcXVhbCByaWdodCA4LWJpdCBj
YXNlIikpOworICAgICAgICBMQmFzaWNCbG9jayBsb29wID0gRlRMX05FV19CTE9DSyhtX291dCwg
KCJzdHJpbmdzRXF1YWwgbG9vcCIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgYnl0ZXNFcXVhbCA9
IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgic3RyaW5nc0VxdWFsIGJ5dGVzIGVxdWFsIikpOworICAg
ICAgICBMQmFzaWNCbG9jayB0cnVlQ2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgic3RyaW5n
c0VxdWFsIHRydWUgY2FzZSIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgZmFsc2VDYXNlID0gRlRM
X05FV19CTE9DSyhtX291dCwgKCJzdHJpbmdzRXF1YWwgZmFsc2UgY2FzZSIpKTsKKyAgICAgICAg
TEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoInN0cmluZ3NFcXVh
bCBzbG93IGNhc2UiKSk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9O
RVdfQkxPQ0sobV9vdXQsICgic3RyaW5nc0VxdWFsIGNvbnRpbnVhdGlvbiIpKTsKKworICAgICAg
ICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDMyKGxlZnRKU1N0cmluZywgbV9oZWFwcy5KU1N0
cmluZ19sZW5ndGgpOworCisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgIG1fb3V0
Lm5vdEVxdWFsKGxlbmd0aCwgbV9vdXQubG9hZDMyKHJpZ2h0SlNTdHJpbmcsIG1faGVhcHMuSlNT
dHJpbmdfbGVuZ3RoKSksCisgICAgICAgICAgICB1bnN1cmUoZmFsc2VDYXNlKSwgdW5zdXJlKG5v
dFRyaXZpYWxseVVuZXF1YWxDYXNlKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQg
PSBtX291dC5hcHBlbmRUbyhub3RUcml2aWFsbHlVbmVxdWFsQ2FzZSwgbm90RW1wdHlDYXNlKTsK
KworICAgICAgICBtX291dC5icmFuY2gobV9vdXQuaXNaZXJvMzIobGVuZ3RoKSwgdW5zdXJlKHRy
dWVDYXNlKSwgdW5zdXJlKG5vdEVtcHR5Q2FzZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRv
KG5vdEVtcHR5Q2FzZSwgbGVmdFJlYWR5Q2FzZSk7CisKKyAgICAgICAgTFZhbHVlIGxlZnQgPSBt
X291dC5sb2FkUHRyKGxlZnRKU1N0cmluZywgbV9oZWFwcy5KU1N0cmluZ192YWx1ZSk7CisgICAg
ICAgIExWYWx1ZSByaWdodCA9IG1fb3V0LmxvYWRQdHIocmlnaHRKU1N0cmluZywgbV9oZWFwcy5K
U1N0cmluZ192YWx1ZSk7CisKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0Lm5vdE51bGwobGVm
dCksIHVzdWFsbHkobGVmdFJlYWR5Q2FzZSksIHJhcmVseShzbG93Q2FzZSkpOworCisgICAgICAg
IG1fb3V0LmFwcGVuZFRvKGxlZnRSZWFkeUNhc2UsIHJpZ2h0UmVhZHlDYXNlKTsKKyAgICAgICAg
CisgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5ub3ROdWxsKHJpZ2h0KSwgdXN1YWxseShyaWdo
dFJlYWR5Q2FzZSksIHJhcmVseShzbG93Q2FzZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRv
KHJpZ2h0UmVhZHlDYXNlLCBsZWZ0OEJpdENhc2UpOworCisgICAgICAgIG1fb3V0LmJyYW5jaCgK
KyAgICAgICAgICAgIG1fb3V0LnRlc3RJc1plcm8zMigKKyAgICAgICAgICAgICAgICBtX291dC5s
b2FkMzIobGVmdCwgbV9oZWFwcy5TdHJpbmdJbXBsX2hhc2hBbmRGbGFncyksCisgICAgICAgICAg
ICAgICAgbV9vdXQuY29uc3RJbnQzMihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpKSwKKyAgICAg
ICAgICAgIHVuc3VyZShzbG93Q2FzZSksIHVuc3VyZShsZWZ0OEJpdENhc2UpKTsKKworICAgICAg
ICBtX291dC5hcHBlbmRUbyhsZWZ0OEJpdENhc2UsIHJpZ2h0OEJpdENhc2UpOworCisgICAgICAg
IG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgIG1fb3V0LnRlc3RJc1plcm8zMigKKyAgICAgICAg
ICAgICAgICBtX291dC5sb2FkMzIocmlnaHQsIG1faGVhcHMuU3RyaW5nSW1wbF9oYXNoQW5kRmxh
Z3MpLAorICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoU3RyaW5nSW1wbDo6ZmxhZ0lz
OEJpdCgpKSksCisgICAgICAgICAgICB1bnN1cmUoc2xvd0Nhc2UpLCB1bnN1cmUocmlnaHQ4Qml0
Q2FzZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHJpZ2h0OEJpdENhc2UsIGxvb3ApOwor
CisgICAgICAgIExWYWx1ZSBsZWZ0RGF0YSA9IG1fb3V0LmxvYWRQdHIobGVmdCwgbV9oZWFwcy5T
dHJpbmdJbXBsX2RhdGEpOworICAgICAgICBMVmFsdWUgcmlnaHREYXRhID0gbV9vdXQubG9hZFB0
cihyaWdodCwgbV9oZWFwcy5TdHJpbmdJbXBsX2RhdGEpOworCisgICAgICAgIFZhbHVlRnJvbUJs
b2NrIGluZGV4QXRTdGFydCA9IG1fb3V0LmFuY2hvcihsZW5ndGgpOworCisgICAgICAgIG1fb3V0
Lmp1bXAobG9vcCk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8obG9vcCwgYnl0ZXNFcXVhbCk7
CisKKyAgICAgICAgTFZhbHVlIGluZGV4QXRMb29wVG9wID0gbV9vdXQucGhpKG1fb3V0LmludDMy
LCBpbmRleEF0U3RhcnQpOworICAgICAgICBMVmFsdWUgaW5kZXhJbkxvb3AgPSBtX291dC5zdWIo
aW5kZXhBdExvb3BUb3AsIG1fb3V0LmludDMyT25lKTsKKworICAgICAgICBMVmFsdWUgbGVmdEJ5
dGUgPSBtX291dC5sb2FkOFplcm9FeHQzMigKKyAgICAgICAgICAgIG1fb3V0LmJhc2VJbmRleCht
X2hlYXBzLmNoYXJhY3RlcnM4LCBsZWZ0RGF0YSwgbV9vdXQuemVyb0V4dFB0cihpbmRleEluTG9v
cCkpKTsKKyAgICAgICAgTFZhbHVlIHJpZ2h0Qnl0ZSA9IG1fb3V0LmxvYWQ4WmVyb0V4dDMyKAor
ICAgICAgICAgICAgbV9vdXQuYmFzZUluZGV4KG1faGVhcHMuY2hhcmFjdGVyczgsIHJpZ2h0RGF0
YSwgbV9vdXQuemVyb0V4dFB0cihpbmRleEluTG9vcCkpKTsKKworICAgICAgICBtX291dC5icmFu
Y2gobV9vdXQubm90RXF1YWwobGVmdEJ5dGUsIHJpZ2h0Qnl0ZSksIHVuc3VyZShmYWxzZUNhc2Up
LCB1bnN1cmUoYnl0ZXNFcXVhbCkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJ5dGVzRXF1
YWwsIHRydWVDYXNlKTsKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBpbmRleEZvck5leHRJdGVy
YXRpb24gPSBtX291dC5hbmNob3IoaW5kZXhJbkxvb3ApOworICAgICAgICBtX291dC5hZGRJbmNv
bWluZ1RvUGhpKGluZGV4QXRMb29wVG9wLCBpbmRleEZvck5leHRJdGVyYXRpb24pOworICAgICAg
ICBtX291dC5icmFuY2gobV9vdXQubm90WmVybzMyKGluZGV4SW5Mb29wKSwgdW5zdXJlKGxvb3Ap
LCB1bnN1cmUodHJ1ZUNhc2UpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyh0cnVlQ2FzZSwg
ZmFsc2VDYXNlKTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHRydWVSZXN1bHQg
PSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhblRydWUpOworICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oZmFsc2VDYXNlLCBzbG93Q2Fz
ZSk7CisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFsc2VSZXN1bHQgPSBtX291dC5hbmNob3Io
bV9vdXQuYm9vbGVhbkZhbHNlKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwor
CisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOworCisgICAg
ICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSB2bUNhbGwoCisgICAgICAgICAgICBtX291dC5p
bnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpbmdFcSksIG1fY2FsbEZy
YW1lLAorICAgICAgICAgICAgbGVmdEpTU3RyaW5nLCByaWdodEpTU3RyaW5nKTsKKyAgICAgICAg
VmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih1bmJveEJvb2xlYW4oc2xv
d1Jlc3VsdFZhbHVlKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAg
ICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgcmV0
dXJuIG1fb3V0LnBoaShtX291dC5ib29sZWFuLCB0cnVlUmVzdWx0LCBmYWxzZVJlc3VsdCwgc2xv
d1Jlc3VsdCk7CisgICAgfQorCiAjaWYgRlRMX1VTRVNfQjMKICAgICBlbnVtIFNjcmF0Y2hGUFJV
c2FnZSB7CiAgICAgICAgIERvbnROZWVkU2NyYXRjaEZQUiwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1lcXVhbGl0eS5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Z0bC1zdHJpbmctZXF1YWxpdHku
anMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Z0
bC1zdHJpbmctZXF1YWxpdHkuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorZnVu
Y3Rpb24gbWFrZVN0cmluZyhjaGFyKSB7CisgICAgdmFyIHJlc3VsdCA9ICIiOworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMTA7ICsraSkKKyAgICAgICAgcmVzdWx0ICs9IGNoYXI7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwordmFyIGFycmF5ID0gWyAiYSIsICJiIiwgImMiLCAiZCIgXTsKKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkKKyAgICBhcnJheVtpXSA9IG1h
a2VTdHJpbmcoYXJyYXlbaV0pOworCitmdW5jdGlvbiBmb28oYXJyYXksIHMpIHsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIGlmIChhcnJheVtp
XSA9PSBzKQorICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgfQorICAgIHJldHVybiBudWxsOwor
fQorCitub0lubGluZShmb28pOworCit2YXIgYXJyYXkyID0gWyAiYSIsICJiIiwgImMiLCAiZCIs
ICJlIiBdOworCitmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Mi5sZW5ndGg7ICsraSkKKyAgICBh
cnJheTJbaV0gPSBtYWtlU3RyaW5nKGFycmF5MltpXSk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MTAwMDAwOyArK2kpIHsKKyAgICB2YXIgaW5kZXggPSBpICUgYXJyYXkyLmxlbmd0aDsKKyAgICB2
YXIgcmVzdWx0ID0gZm9vKGFycmF5LCBhcnJheTJbaW5kZXhdKTsKKyAgICB2YXIgZXhwZWN0ZWQg
PSBpbmRleCA+PSBhcnJheS5sZW5ndGggPyBudWxsIDogaW5kZXgKKyAgICBpZiAocmVzdWx0ICE9
PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0
OworfQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Z0bC1zdHJp
bmctaWRlbnQtZXF1YWxpdHkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9mdGwtc3RyaW5nLWlkZW50LWVxdWFsaXR5LmpzCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9mdGwtc3RyaW5nLWlkZW50LWVx
dWFsaXR5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTggQEAKK3ZhciBhcnJheSA9IFsg
ImEiLCAiYiIsICJjIiwgImQiIF07CisKK2Z1bmN0aW9uIGZvbyhhcnJheSwgcykgeworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKGFycmF5
W2ldID09IHMpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitub0lubGluZShmb28pOworCit2YXIgcmVzdWx0ID0gMDsKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDAwOyArK2kpCisgICAgcmVzdWx0ICs9IGZvbyhhcnJheSwgImQiKTsKKwor
aWYgKHJlc3VsdCAhPSAxMDAwMDApCisgICAgdGhyb3cgIkJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Z0bC1zdHJpbmctc3Ry
aWN0LWVxdWFsaXR5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZnRsLXN0cmluZy1zdHJpY3QtZXF1YWxpdHkuanMJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0LWVxdWFs
aXR5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUgQEAKK2Z1bmN0aW9uIG1ha2VTdHJp
bmcoY2hhcikgeworICAgIHZhciByZXN1bHQgPSAiIjsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDEwOyArK2kpCisgICAgICAgIHJlc3VsdCArPSBjaGFyOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK3ZhciBhcnJheSA9IFsgImEiLCAiYiIsICJjIiwgImQiIF07CisKK2ZvciAodmFyIGkgPSAw
OyBpIDwgYXJyYXkubGVuZ3RoOyArK2kpCisgICAgYXJyYXlbaV0gPSBtYWtlU3RyaW5nKGFycmF5
W2ldKTsKKworZnVuY3Rpb24gZm9vKGFycmF5LCBzKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBhcnJheS5sZW5ndGg7ICsraSkgeworICAgICAgICBpZiAoYXJyYXlbaV0gPT09IHMpCisgICAg
ICAgICAgICByZXR1cm4gaTsKKyAgICB9CisgICAgcmV0dXJuIG51bGw7Cit9CisKK25vSW5saW5l
KGZvbyk7CisKK3ZhciBhcnJheTIgPSBbICJhIiwgImIiLCAiYyIsICJkIiwgImUiIF07CisKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgYXJyYXkyLmxlbmd0aDsgKytpKQorICAgIGFycmF5MltpXSA9IG1h
a2VTdHJpbmcoYXJyYXkyW2ldKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkg
eworICAgIHZhciBpbmRleCA9IGkgJSBhcnJheTIubGVuZ3RoOworICAgIHZhciByZXN1bHQgPSBm
b28oYXJyYXksIGFycmF5MltpbmRleF0pOworICAgIHZhciBleHBlY3RlZCA9IGluZGV4ID49IGFy
cmF5Lmxlbmd0aCA/IG51bGwgOiBpbmRleAorICAgIGlmIChyZXN1bHQgIT09IGV4cGVjdGVkKQor
ICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CisK
</data>

          </attachment>
      

    </bug>

</bugzilla>