<?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>118750</bug_id>
          
          <creation_ts>2013-07-16 14:52:19 -0700</creation_ts>
          <short_desc>fourthTier: NaturalLoops should be able to quickly answer questions like &quot;what loops own this basic block&quot;</short_desc>
          <delta_ts>2013-07-16 15:49:46 -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>JavaScriptCore</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>
          
          <blocked>118749</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>909019</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-07-16 14:52:19 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909029</commentid>
    <comment_count>1</comment_count>
      <attachid>206817</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-07-16 15:11:55 -0700</bug_when>
    <thetext>Created attachment 206817
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909038</commentid>
    <comment_count>2</comment_count>
      <attachid>206819</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-07-16 15:36:12 -0700</bug_when>
    <thetext>Created attachment 206819
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909043</commentid>
    <comment_count>3</comment_count>
      <attachid>206819</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-07-16 15:47:58 -0700</bug_when>
    <thetext>Comment on attachment 206819
the patch

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

r=me with comments.

&gt; Source/JavaScriptCore/dfg/DFGNaturalLoops.cpp:190
&gt; +            ASSERT(simpleLoopsOf == fancyLoopsOf);

RELEASE_ASSERT

&gt; Source/JavaScriptCore/dfg/DFGNaturalLoops.h:116
&gt; +        for (
&gt; +            const NaturalLoop* loop = innerMostLoopOf(block);
&gt; +            loop;
&gt; +            loop = innerMostOuterLoop(*loop)) {
&gt; +            if (loop-&gt;header() == block)
&gt; +                return loop;

Don&apos;t need to for-loop. Modified version looks good.

&gt; Source/JavaScriptCore/dfg/DFGPlan.cpp:192
&gt; +    // to self-validate. Now is as good a time as any, to do this.

No comma :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909044</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-07-16 15:49:46 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/152745</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206817</attachid>
            <date>2013-07-16 15:11:55 -0700</date>
            <delta_ts>2013-07-16 15:36:12 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>8902</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUyNzQ0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBA
CisyMDEzLTA3LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogTmF0dXJhbExvb3BzIHNob3VsZCBiZSBhYmxlIHRvIHF1aWNrbHkgYW5zd2Vy
IHF1ZXN0aW9ucyBsaWtlICJ3aGF0IGxvb3BzIG93biB0aGlzIGJhc2ljIGJsb2NrIgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4NzUwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkZmcvREZHQmFzaWNC
bG9jay5oOgorICAgICAgICAoQmFzaWNCbG9jayk6CisgICAgICAgICogZGZnL0RGR05hdHVyYWxM
b29wcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6TmF0dXJhbExvb3BzOjpjb21wdXRlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpOYXR1cmFsTG9vcHM6Omxvb3BzT2YpOgorICAgICAgICAqIGRmZy9E
RkdOYXR1cmFsTG9vcHMuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6TmF0
dXJhbExvb3A6Ok5hdHVyYWxMb29wKToKKyAgICAgICAgKE5hdHVyYWxMb29wKToKKyAgICAgICAg
KEpTQzo6REZHOjpOYXR1cmFsTG9vcDo6aW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6Ok5hdHVy
YWxMb29wOjppc091dGVyTW9zdExvb3ApOgorICAgICAgICAoSlNDOjpERkc6Ok5hdHVyYWxMb29w
OjphZGRCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6TmF0dXJhbExvb3BzOjpoZWFkZXJPZik6
CisgICAgICAgIChKU0M6OkRGRzo6TmF0dXJhbExvb3BzOjppbm5lck1vc3RMb29wT2YpOgorICAg
ICAgICAoTmF0dXJhbExvb3BzKToKKyAgICAgICAgKEpTQzo6REZHOjpOYXR1cmFsTG9vcHM6Omlu
bmVyTW9zdE91dGVyTG9vcCk6CisgICAgICAgICogZGZnL0RGR1BsYW4uY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlBsYW46OmNvbXBpbGVJblRocmVhZEltcGwpOgorCiAyMDEzLTA3LTE2ICBGaWxp
cCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgZm91cnRoVGllcjogZG9uJ3Qg
R0Mgd2hlbiBzaHV0dGluZyBkb3duIHRoZSBWTQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCYXNpY0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHJldmlzaW9uIDE1Mjc0NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNiArMTI3
LDEwIEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICBPcGVy
YW5kczxBYnN0cmFjdFZhbHVlPiB2YWx1ZXNBdEhlYWQ7CiAgICAgT3BlcmFuZHM8QWJzdHJhY3RW
YWx1ZT4gdmFsdWVzQXRUYWlsOwogICAgIAorICAgIC8vIFRoZXNlIGZpZWxkcyBhcmUgcmVzZXJ2
ZWQgZm9yIE5hdHVyYWxMb29wcy4KKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZJ
bm5lck1vc3RMb29wSW5kaWNlcyA9IDI7CisgICAgdW5zaWduZWQgaW5uZXJNb3N0TG9vcEluZGlj
ZXNbbnVtYmVyT2ZJbm5lck1vc3RMb29wSW5kaWNlc107CisKICAgICBzdHJ1Y3QgU1NBRGF0YSB7
CiAgICAgICAgIE9wZXJhbmRzPEZsdXNoRm9ybWF0PiBmbHVzaEZvcm1hdEF0SGVhZDsKICAgICAg
ICAgT3BlcmFuZHM8Rmx1c2hGb3JtYXQ+IGZsdXNoRm9ybWF0QXRUYWlsOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTmF0dXJhbExvb3BzLmNwcAkocmV2aXNpb24gMTUy
NzQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgTmF0dXJhbExvb3BzOjpjb21wdXRl
KEdyYXBoJiBncmFwaCkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChmb3VuZCkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIE5hdHVyYWxMb29wIGxvb3Aoc3Vj
Y2Vzc29yKTsKKyAgICAgICAgICAgIE5hdHVyYWxMb29wIGxvb3Aoc3VjY2Vzc29yLCBtX2xvb3Bz
LnNpemUoKSk7CiAgICAgICAgICAgICBsb29wLmFkZEJsb2NrKGJsb2NrKTsKICAgICAgICAgICAg
IG1fbG9vcHMuYXBwZW5kKGxvb3ApOwogICAgICAgICB9CkBAIC0xMzEsNiArMTMxLDY1IEBAIHZv
aWQgTmF0dXJhbExvb3BzOjpjb21wdXRlKEdyYXBoJiBncmFwaCkKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KKworICAgIC8vIEZpZ3VyZSBvdXQgcmV2ZXJzZSBtYXBwaW5nIGZyb20g
YmxvY2tzIHRvIGxvb3BzLgorICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gZ3JhcGgu
bnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKKyAgICAgICAgQmFzaWNCbG9jayogYmxvY2sg
PSBncmFwaC5ibG9jayhibG9ja0luZGV4KTsKKyAgICAgICAgaWYgKCFibG9jaykKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBCYXNpY0Jsb2NrOjpudW1i
ZXJPZklubmVyTW9zdExvb3BJbmRpY2VzOyBpLS07KQorICAgICAgICAgICAgYmxvY2stPmlubmVy
TW9zdExvb3BJbmRpY2VzW2ldID0gVUlOVF9NQVg7CisgICAgfQorICAgIGZvciAodW5zaWduZWQg
aSA9IG1fbG9vcHMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIE5hdHVyYWxMb29wJiBsb29wID0g
bV9sb29wc1tpXTsKKyAgICAgICAgCisgICAgICAgIGZvciAodW5zaWduZWQgaiA9IGxvb3Auc2l6
ZSgpOyBqLS07KSB7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IGxvb3Bbal07Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBCYXNpY0Js
b2NrOjpudW1iZXJPZklubmVyTW9zdExvb3BJbmRpY2VzOyArK2spIHsKKyAgICAgICAgICAgICAg
ICB1bnNpZ25lZCB0aGlzSW5kZXggPSBibG9jay0+aW5uZXJNb3N0TG9vcEluZGljZXNba107Cisg
ICAgICAgICAgICAgICAgaWYgKHRoaXNJbmRleCA9PSBVSU5UX01BWCB8fCBsb29wLnNpemUoKSA8
IG1fbG9vcHNbdGhpc0luZGV4XS5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBsID0gQmFzaWNCbG9jazo6bnVtYmVyT2ZJbm5lck1vc3RMb29wSW5kaWNlczsgbC0t
ID4gayArIDE7KQorICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2stPmlubmVyTW9zdExvb3BJ
bmRpY2VzW2xdID0gYmxvY2stPmlubmVyTW9zdExvb3BJbmRpY2VzW2wgLSAxXTsKKyAgICAgICAg
ICAgICAgICAgICAgYmxvY2stPmlubmVyTW9zdExvb3BJbmRpY2VzW2tdID0gaTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorICAgIAorICAgIC8vIE5vdyBlYWNoIGJsb2NrIGtub3dzIGl0cyBpbm5l
ci1tb3N0IGxvb3AgYW5kIGl0cyBuZXh0LXRvLWlubmVyLW1vc3QgbG9vcC4gVXNlCisgICAgLy8g
dGhpcyB0byBmaWd1cmUgb3V0IGxvb3AgcGFyZW50aW5nLgorICAgIGZvciAodW5zaWduZWQgaSA9
IG1fbG9vcHMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIE5hdHVyYWxMb29wJiBsb29wID0gbV9s
b29wc1tpXTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobG9vcC5oZWFkZXIoKS0+aW5uZXJNb3N0
TG9vcEluZGljZXNbMF0gPT0gaSk7CisgICAgICAgIAorICAgICAgICBsb29wLm1fb3V0ZXJMb29w
SW5kZXggPSBsb29wLmhlYWRlcigpLT5pbm5lck1vc3RMb29wSW5kaWNlc1sxXTsKKyAgICB9Cisg
ICAgCisgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKKyAgICAgICAgLy8gRG8gc29tZSBz
ZWxmLXZlcmlmaWNhdGlvbiB0aGF0IHdlJ3ZlIGRvbmUgc29tZSBvZiB0aGlzIGNvcnJlY3RseS4K
KyAgICAgICAgCisgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gZ3JhcGgubnVt
QmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2Nr
ID0gZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CisgICAgICAgICAgICBpZiAoIWJsb2NrKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBWZWN0b3I8
Y29uc3QgTmF0dXJhbExvb3AqPiBzaW1wbGVMb29wc09mOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2xvb3BzLnNpemUoKTsgaS0tOykgeworICAgICAgICAg
ICAgICAgIGlmIChtX2xvb3BzW2ldLmNvbnRhaW5zKGJsb2NrKSkKKyAgICAgICAgICAgICAgICAg
ICAgc2ltcGxlTG9vcHNPZi5hcHBlbmQoJm1fbG9vcHNbaV0pOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgICAgICBWZWN0b3I8Y29uc3QgTmF0dXJhbExvb3AqPiBmYW5jeUxv
b3BzT2YgPSBsb29wc09mKGJsb2NrKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3RkOjpz
b3J0KHNpbXBsZUxvb3BzT2YuYmVnaW4oKSwgc2ltcGxlTG9vcHNPZi5lbmQoKSk7CisgICAgICAg
ICAgICBzdGQ6OnNvcnQoZmFuY3lMb29wc09mLmJlZ2luKCksIGZhbmN5TG9vcHNPZi5lbmQoKSk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFTU0VSVChzaW1wbGVMb29wc09mID09IGZhbmN5
TG9vcHNPZik7CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgaWYgKHZlcmJvc2UpCiAgICAg
ICAgIGRhdGFMb2coIlJlc3VsdHM6ICIsICp0aGlzLCAiXG4iKTsKQEAgLTEzOSwxMiArMTk4LDgg
QEAgdm9pZCBOYXR1cmFsTG9vcHM6OmNvbXB1dGUoR3JhcGgmIGdyYXBoKQogVmVjdG9yPGNvbnN0
IE5hdHVyYWxMb29wKj4gTmF0dXJhbExvb3BzOjpsb29wc09mKEJhc2ljQmxvY2sqIGJsb2NrKSBj
b25zdAogewogICAgIFZlY3Rvcjxjb25zdCBOYXR1cmFsTG9vcCo+IHJlc3VsdDsKLSAgICAKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBtX2xvb3BzLnNpemUoKTsgaS0tOykgewotICAgICAgICBpZiAo
bV9sb29wc1tpXS5jb250YWlucyhibG9jaykpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCZt
X2xvb3BzW2ldKTsKLSAgICB9Ci0gICAgCisgICAgZm9yIChjb25zdCBOYXR1cmFsTG9vcCogbG9v
cCA9IGlubmVyTW9zdExvb3BPZihibG9jayk7IGxvb3A7IGxvb3AgPSBpbm5lck1vc3RPdXRlckxv
b3AoKmxvb3ApKQorICAgICAgICByZXN1bHQuYXBwZW5kKGxvb3ApOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTmF0dXJhbExvb3Bz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9v
cHMuaAkocmV2aXNpb24gMTUyNzQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
YXR1cmFsTG9vcHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMjAgKzM2LDIzIEBACiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAorY2xhc3MgTmF0dXJhbExvb3BzOworCiBjbGFz
cyBOYXR1cmFsTG9vcCB7CiBwdWJsaWM6CiAgICAgTmF0dXJhbExvb3AoKQogICAgICAgICA6IG1f
aGVhZGVyKDApCisgICAgICAgICwgbV9vdXRlckxvb3BJbmRleChVSU5UX01BWCkKICAgICB7CiAg
ICAgfQogICAgIAotICAgIE5hdHVyYWxMb29wKEJhc2ljQmxvY2sqIGhlYWRlcikKKyAgICBOYXR1
cmFsTG9vcChCYXNpY0Jsb2NrKiBoZWFkZXIsIHVuc2lnbmVkIGluZGV4KQogICAgICAgICA6IG1f
aGVhZGVyKGhlYWRlcikKKyAgICAgICAgLCBtX291dGVyTG9vcEluZGV4KFVJTlRfTUFYKQorICAg
ICAgICAsIG1faW5kZXgoaW5kZXgpCiAgICAgewogICAgIH0KICAgICAKLSAgICB2b2lkIGFkZEJs
b2NrKEJhc2ljQmxvY2sqIGJsb2NrKSB7IG1fYm9keS5hcHBlbmQoYmxvY2spOyB9Ci0gICAgCiAg
ICAgQmFzaWNCbG9jayogaGVhZGVyKCkgY29uc3QgeyByZXR1cm4gbV9oZWFkZXI7IH0KICAgICAK
ICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9ib2R5LnNpemUoKTsgfQpAQCAt
NjUsMTEgKzY4LDIyIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGJsb2NrICE9IGhlYWRlcigp
KTsgLy8gSGVhZGVyIHNob3VsZCBiZSBjb250YWluZWQuCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CisKKyAgICAvLyBUaGUgaW5kZXggb2YgdGhpcyBsb29wIGluIE5hdHVyYWxMb29wcy4K
KyAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KKyAgICAKKyAg
ICBib29sIGlzT3V0ZXJNb3N0TG9vcCgpIGNvbnN0IHsgcmV0dXJuIG1fb3V0ZXJMb29wSW5kZXgg
PT0gVUlOVF9NQVg7IH0KICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsK
IHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE5hdHVyYWxMb29wczsKKyAgICAKKyAgICB2b2lk
IGFkZEJsb2NrKEJhc2ljQmxvY2sqIGJsb2NrKSB7IG1fYm9keS5hcHBlbmQoYmxvY2spOyB9Cisg
ICAgCiAgICAgQmFzaWNCbG9jayogbV9oZWFkZXI7CiAgICAgVmVjdG9yPEJhc2ljQmxvY2sqLCA0
PiBtX2JvZHk7CisgICAgdW5zaWduZWQgbV9vdXRlckxvb3BJbmRleDsKKyAgICB1bnNpZ25lZCBt
X2luZGV4OwogfTsKIAogY2xhc3MgTmF0dXJhbExvb3BzIDogcHVibGljIEFuYWx5c2lzPE5hdHVy
YWxMb29wcz4gewpAQCAtOTQsMTMgKzEwOCwzMSBAQCBwdWJsaWM6CiAgICAgLy8gbG9vcCBpdCBi
ZWxvbmdzIHRvLgogICAgIGNvbnN0IE5hdHVyYWxMb29wKiBoZWFkZXJPZihCYXNpY0Jsb2NrKiBi
bG9jaykgY29uc3QKICAgICB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fbG9vcHMuc2l6
ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICBpZiAobV9sb29wc1tpXS5oZWFkZXIoKSA9PSBibG9j
aykKLSAgICAgICAgICAgICAgICByZXR1cm4gJm1fbG9vcHNbaV07CisgICAgICAgIGZvciAoCisg
ICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IGlubmVyTW9zdExvb3BPZihibG9j
ayk7CisgICAgICAgICAgICBsb29wOworICAgICAgICAgICAgbG9vcCA9IGlubmVyTW9zdE91dGVy
TG9vcCgqbG9vcCkpIHsKKyAgICAgICAgICAgIGlmIChsb29wLT5oZWFkZXIoKSA9PSBibG9jaykK
KyAgICAgICAgICAgICAgICByZXR1cm4gbG9vcDsKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAgICAgCisgICAgY29uc3QgTmF0dXJhbExvb3AqIGlubmVyTW9zdExvb3BPZihC
YXNpY0Jsb2NrKiBibG9jaykgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0g
YmxvY2stPmlubmVyTW9zdExvb3BJbmRpY2VzWzBdOworICAgICAgICBpZiAoaW5kZXggPT0gVUlO
VF9NQVgpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuICZtX2xvb3BzW2lu
ZGV4XTsKKyAgICB9CisgICAgCisgICAgY29uc3QgTmF0dXJhbExvb3AqIGlubmVyTW9zdE91dGVy
TG9vcChjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChs
b29wLm1fb3V0ZXJMb29wSW5kZXggPT0gVUlOVF9NQVgpCisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuICZtX2xvb3BzW2xvb3AubV9vdXRlckxvb3BJbmRleF07CisgICAgfQor
ICAgIAogICAgIC8vIFJldHVybiB0aGUgaW5kaWNlcyBvZiBhbGwgbG9vcHMgdGhpcyBiZWxvbmdz
IHRvLgogICAgIFZlY3Rvcjxjb25zdCBOYXR1cmFsTG9vcCo+IGxvb3BzT2YoQmFzaWNCbG9jayop
IGNvbnN0OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlz
aW9uIDE1Mjc0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE4Nyw2ICsxODcsMTMgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBs
YW46OmNvbXBpbGVJblRocgogICAgIGRmZy5tX2ZpeHBvaW50U3RhdGUgPSBGaXhwb2ludENvbnZl
cmdlZDsKIAogICAgIHBlcmZvcm1TdG9yZUVsaW1pbmF0aW9uKGRmZyk7CisgICAgCisgICAgLy8g
SWYgd2UncmUgZG9pbmcgdmFsaWRhdGlvbiwgdGhlbiBydW4gc29tZSBhbmFseXNlcywgdG8gZ2l2
ZSB0aGVtIGFuIG9wcG9ydHVuaXR5CisgICAgLy8gdG8gc2VsZi12YWxpZGF0ZS4gTm93IGlzIGFz
IGdvb2QgYSB0aW1lIGFzIGFueSwgdG8gZG8gdGhpcy4KKyAgICBpZiAodmFsaWRhdGlvbkVuYWJs
ZWQoKSkgeworICAgICAgICBkZmcubV9kb21pbmF0b3JzLmNvbXB1dGVJZk5lY2Vzc2FyeShkZmcp
OworICAgICAgICBkZmcubV9uYXR1cmFsTG9vcHMuY29tcHV0ZUlmTmVjZXNzYXJ5KGRmZyk7Cisg
ICAgfQogCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAgICAgaWYgKE9wdGlvbnM6OnVzZUV4cGVyaW1l
bnRhbEZUTCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206819</attachid>
            <date>2013-07-16 15:36:12 -0700</date>
            <delta_ts>2013-07-16 15:47:58 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>10758</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUyNzQ0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBA
CisyMDEzLTA3LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogTmF0dXJhbExvb3BzIHNob3VsZCBiZSBhYmxlIHRvIHF1aWNrbHkgYW5zd2Vy
IHF1ZXN0aW9ucyBsaWtlICJ3aGF0IGxvb3BzIG93biB0aGlzIGJhc2ljIGJsb2NrIgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4NzUwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkZmcvREZHQmFzaWNC
bG9jay5oOgorICAgICAgICAoQmFzaWNCbG9jayk6CisgICAgICAgICogZGZnL0RGR05hdHVyYWxM
b29wcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6TmF0dXJhbExvb3BzOjpjb21wdXRlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpOYXR1cmFsTG9vcHM6Omxvb3BzT2YpOgorICAgICAgICAqIGRmZy9E
RkdOYXR1cmFsTG9vcHMuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6TmF0
dXJhbExvb3A6Ok5hdHVyYWxMb29wKToKKyAgICAgICAgKE5hdHVyYWxMb29wKToKKyAgICAgICAg
KEpTQzo6REZHOjpOYXR1cmFsTG9vcDo6aW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6Ok5hdHVy
YWxMb29wOjppc091dGVyTW9zdExvb3ApOgorICAgICAgICAoSlNDOjpERkc6Ok5hdHVyYWxMb29w
OjphZGRCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6TmF0dXJhbExvb3BzOjpoZWFkZXJPZik6
CisgICAgICAgIChKU0M6OkRGRzo6TmF0dXJhbExvb3BzOjppbm5lck1vc3RMb29wT2YpOgorICAg
ICAgICAoTmF0dXJhbExvb3BzKToKKyAgICAgICAgKEpTQzo6REZHOjpOYXR1cmFsTG9vcHM6Omlu
bmVyTW9zdE91dGVyTG9vcCk6CisgICAgICAgICogZGZnL0RGR1BsYW4uY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlBsYW46OmNvbXBpbGVJblRocmVhZEltcGwpOgorCiAyMDEzLTA3LTE2ICBGaWxp
cCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgZm91cnRoVGllcjogZG9uJ3Qg
R0Mgd2hlbiBzaHV0dGluZyBkb3duIHRoZSBWTQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCYXNpY0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHJldmlzaW9uIDE1Mjc0NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNiArMTI3
LDEwIEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICBPcGVy
YW5kczxBYnN0cmFjdFZhbHVlPiB2YWx1ZXNBdEhlYWQ7CiAgICAgT3BlcmFuZHM8QWJzdHJhY3RW
YWx1ZT4gdmFsdWVzQXRUYWlsOwogICAgIAorICAgIC8vIFRoZXNlIGZpZWxkcyBhcmUgcmVzZXJ2
ZWQgZm9yIE5hdHVyYWxMb29wcy4KKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZJ
bm5lck1vc3RMb29wSW5kaWNlcyA9IDI7CisgICAgdW5zaWduZWQgaW5uZXJNb3N0TG9vcEluZGlj
ZXNbbnVtYmVyT2ZJbm5lck1vc3RMb29wSW5kaWNlc107CisKICAgICBzdHJ1Y3QgU1NBRGF0YSB7
CiAgICAgICAgIE9wZXJhbmRzPEZsdXNoRm9ybWF0PiBmbHVzaEZvcm1hdEF0SGVhZDsKICAgICAg
ICAgT3BlcmFuZHM8Rmx1c2hGb3JtYXQ+IGZsdXNoRm9ybWF0QXRUYWlsOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTmF0dXJhbExvb3BzLmNwcAkocmV2aXNpb24gMTUy
NzQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgTmF0dXJhbExvb3BzOjpjb21wdXRl
KEdyYXBoJiBncmFwaCkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChmb3VuZCkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIE5hdHVyYWxMb29wIGxvb3Aoc3Vj
Y2Vzc29yKTsKKyAgICAgICAgICAgIE5hdHVyYWxMb29wIGxvb3Aoc3VjY2Vzc29yLCBtX2xvb3Bz
LnNpemUoKSk7CiAgICAgICAgICAgICBsb29wLmFkZEJsb2NrKGJsb2NrKTsKICAgICAgICAgICAg
IG1fbG9vcHMuYXBwZW5kKGxvb3ApOwogICAgICAgICB9CkBAIC0xMzEsNiArMTMxLDY1IEBAIHZv
aWQgTmF0dXJhbExvb3BzOjpjb21wdXRlKEdyYXBoJiBncmFwaCkKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KKworICAgIC8vIEZpZ3VyZSBvdXQgcmV2ZXJzZSBtYXBwaW5nIGZyb20g
YmxvY2tzIHRvIGxvb3BzLgorICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gZ3JhcGgu
bnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKKyAgICAgICAgQmFzaWNCbG9jayogYmxvY2sg
PSBncmFwaC5ibG9jayhibG9ja0luZGV4KTsKKyAgICAgICAgaWYgKCFibG9jaykKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBCYXNpY0Jsb2NrOjpudW1i
ZXJPZklubmVyTW9zdExvb3BJbmRpY2VzOyBpLS07KQorICAgICAgICAgICAgYmxvY2stPmlubmVy
TW9zdExvb3BJbmRpY2VzW2ldID0gVUlOVF9NQVg7CisgICAgfQorICAgIGZvciAodW5zaWduZWQg
bG9vcEluZGV4ID0gbV9sb29wcy5zaXplKCk7IGxvb3BJbmRleC0tOykgeworICAgICAgICBOYXR1
cmFsTG9vcCYgbG9vcCA9IG1fbG9vcHNbbG9vcEluZGV4XTsKKyAgICAgICAgCisgICAgICAgIGZv
ciAodW5zaWduZWQgYmxvY2tJbmRleEluTG9vcCA9IGxvb3Auc2l6ZSgpOyBibG9ja0luZGV4SW5M
b29wLS07KSB7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IGxvb3BbYmxvY2tJbmRl
eEluTG9vcF07CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBCYXNpY0Jsb2NrOjpudW1iZXJPZklubmVyTW9zdExvb3BJbmRpY2VzOyArK2kpIHsKKyAg
ICAgICAgICAgICAgICB1bnNpZ25lZCB0aGlzSW5kZXggPSBibG9jay0+aW5uZXJNb3N0TG9vcElu
ZGljZXNbaV07CisgICAgICAgICAgICAgICAgaWYgKHRoaXNJbmRleCA9PSBVSU5UX01BWCB8fCBs
b29wLnNpemUoKSA8IG1fbG9vcHNbdGhpc0luZGV4XS5zaXplKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaW5zZXJ0SW50b0JvdW5kZWRWZWN0b3IoCisgICAgICAgICAgICAgICAgICAgICAgICBi
bG9jay0+aW5uZXJNb3N0TG9vcEluZGljZXMsIEJhc2ljQmxvY2s6Om51bWJlck9mSW5uZXJNb3N0
TG9vcEluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBsb29wSW5kZXgsIGkpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy8gTm93IGVhY2ggYmxvY2sga25vd3MgaXRz
IGlubmVyLW1vc3QgbG9vcCBhbmQgaXRzIG5leHQtdG8taW5uZXItbW9zdCBsb29wLiBVc2UKKyAg
ICAvLyB0aGlzIHRvIGZpZ3VyZSBvdXQgbG9vcCBwYXJlbnRpbmcuCisgICAgZm9yICh1bnNpZ25l
ZCBpID0gbV9sb29wcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgTmF0dXJhbExvb3AmIGxvb3Ag
PSBtX2xvb3BzW2ldOworICAgICAgICBSRUxFQVNFX0FTU0VSVChsb29wLmhlYWRlcigpLT5pbm5l
ck1vc3RMb29wSW5kaWNlc1swXSA9PSBpKTsKKyAgICAgICAgCisgICAgICAgIGxvb3AubV9vdXRl
ckxvb3BJbmRleCA9IGxvb3AuaGVhZGVyKCktPmlubmVyTW9zdExvb3BJbmRpY2VzWzFdOworICAg
IH0KKyAgICAKKyAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgeworICAgICAgICAvLyBEbyBz
b21lIHNlbGYtdmVyaWZpY2F0aW9uIHRoYXQgd2UndmUgZG9uZSBzb21lIG9mIHRoaXMgY29ycmVj
dGx5LgorICAgICAgICAKKyAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBncmFw
aC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgeworICAgICAgICAgICAgQmFzaWNCbG9jayog
YmxvY2sgPSBncmFwaC5ibG9jayhibG9ja0luZGV4KTsKKyAgICAgICAgICAgIGlmICghYmxvY2sp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFZl
Y3Rvcjxjb25zdCBOYXR1cmFsTG9vcCo+IHNpbXBsZUxvb3BzT2Y7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fbG9vcHMuc2l6ZSgpOyBpLS07KSB7CisgICAg
ICAgICAgICAgICAgaWYgKG1fbG9vcHNbaV0uY29udGFpbnMoYmxvY2spKQorICAgICAgICAgICAg
ICAgICAgICBzaW1wbGVMb29wc09mLmFwcGVuZCgmbV9sb29wc1tpXSk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFZlY3Rvcjxjb25zdCBOYXR1cmFsTG9vcCo+IGZh
bmN5TG9vcHNPZiA9IGxvb3BzT2YoYmxvY2spOworICAgICAgICAgICAgCisgICAgICAgICAgICBz
dGQ6OnNvcnQoc2ltcGxlTG9vcHNPZi5iZWdpbigpLCBzaW1wbGVMb29wc09mLmVuZCgpKTsKKyAg
ICAgICAgICAgIHN0ZDo6c29ydChmYW5jeUxvb3BzT2YuYmVnaW4oKSwgZmFuY3lMb29wc09mLmVu
ZCgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQVNTRVJUKHNpbXBsZUxvb3BzT2YgPT0g
ZmFuY3lMb29wc09mKTsKKyAgICAgICAgfQorICAgIH0KICAgICAKICAgICBpZiAodmVyYm9zZSkK
ICAgICAgICAgZGF0YUxvZygiUmVzdWx0czogIiwgKnRoaXMsICJcbiIpOwpAQCAtMTM5LDEyICsx
OTgsOCBAQCB2b2lkIE5hdHVyYWxMb29wczo6Y29tcHV0ZShHcmFwaCYgZ3JhcGgpCiBWZWN0b3I8
Y29uc3QgTmF0dXJhbExvb3AqPiBOYXR1cmFsTG9vcHM6Omxvb3BzT2YoQmFzaWNCbG9jayogYmxv
Y2spIGNvbnN0CiB7CiAgICAgVmVjdG9yPGNvbnN0IE5hdHVyYWxMb29wKj4gcmVzdWx0OwotICAg
IAotICAgIGZvciAodW5zaWduZWQgaSA9IG1fbG9vcHMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAg
IGlmIChtX2xvb3BzW2ldLmNvbnRhaW5zKGJsb2NrKSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJm1fbG9vcHNbaV0pOwotICAgIH0KLSAgICAKKyAgICBmb3IgKGNvbnN0IE5hdHVyYWxMb29w
KiBsb29wID0gaW5uZXJNb3N0TG9vcE9mKGJsb2NrKTsgbG9vcDsgbG9vcCA9IGlubmVyTW9zdE91
dGVyTG9vcCgqbG9vcCkpCisgICAgICAgIHJlc3VsdC5hcHBlbmQobG9vcCk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFs
TG9vcHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05hdHVy
YWxMb29wcy5oCShyZXZpc2lvbiAxNTI3NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05hdHVyYWxMb29wcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwyMCArMzYsMjMgQEAKIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCitjbGFzcyBOYXR1cmFsTG9vcHM7CisK
IGNsYXNzIE5hdHVyYWxMb29wIHsKIHB1YmxpYzoKICAgICBOYXR1cmFsTG9vcCgpCiAgICAgICAg
IDogbV9oZWFkZXIoMCkKKyAgICAgICAgLCBtX291dGVyTG9vcEluZGV4KFVJTlRfTUFYKQogICAg
IHsKICAgICB9CiAgICAgCi0gICAgTmF0dXJhbExvb3AoQmFzaWNCbG9jayogaGVhZGVyKQorICAg
IE5hdHVyYWxMb29wKEJhc2ljQmxvY2sqIGhlYWRlciwgdW5zaWduZWQgaW5kZXgpCiAgICAgICAg
IDogbV9oZWFkZXIoaGVhZGVyKQorICAgICAgICAsIG1fb3V0ZXJMb29wSW5kZXgoVUlOVF9NQVgp
CisgICAgICAgICwgbV9pbmRleChpbmRleCkKICAgICB7CiAgICAgfQogICAgIAotICAgIHZvaWQg
YWRkQmxvY2soQmFzaWNCbG9jayogYmxvY2spIHsgbV9ib2R5LmFwcGVuZChibG9jayk7IH0KLSAg
ICAKICAgICBCYXNpY0Jsb2NrKiBoZWFkZXIoKSBjb25zdCB7IHJldHVybiBtX2hlYWRlcjsgfQog
ICAgIAogICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2JvZHkuc2l6ZSgpOyB9
CkBAIC02NSwxMSArNjgsMjIgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoYmxvY2sgIT0gaGVh
ZGVyKCkpOyAvLyBIZWFkZXIgc2hvdWxkIGJlIGNvbnRhaW5lZC4KICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KKworICAgIC8vIFRoZSBpbmRleCBvZiB0aGlzIGxvb3AgaW4gTmF0dXJhbExv
b3BzLgorICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQorICAg
IAorICAgIGJvb2wgaXNPdXRlck1vc3RMb29wKCkgY29uc3QgeyByZXR1cm4gbV9vdXRlckxvb3BJ
bmRleCA9PSBVSU5UX01BWDsgfQogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNv
bnN0OwogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTmF0dXJhbExvb3BzOworICAgIAorICAg
IHZvaWQgYWRkQmxvY2soQmFzaWNCbG9jayogYmxvY2spIHsgbV9ib2R5LmFwcGVuZChibG9jayk7
IH0KKyAgICAKICAgICBCYXNpY0Jsb2NrKiBtX2hlYWRlcjsKICAgICBWZWN0b3I8QmFzaWNCbG9j
ayosIDQ+IG1fYm9keTsKKyAgICB1bnNpZ25lZCBtX291dGVyTG9vcEluZGV4OworICAgIHVuc2ln
bmVkIG1faW5kZXg7CiB9OwogCiBjbGFzcyBOYXR1cmFsTG9vcHMgOiBwdWJsaWMgQW5hbHlzaXM8
TmF0dXJhbExvb3BzPiB7CkBAIC05NCwxMyArMTA4LDMxIEBAIHB1YmxpYzoKICAgICAvLyBsb29w
IGl0IGJlbG9uZ3MgdG8uCiAgICAgY29uc3QgTmF0dXJhbExvb3AqIGhlYWRlck9mKEJhc2ljQmxv
Y2sqIGJsb2NrKSBjb25zdAogICAgIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9sb29w
cy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgIGlmIChtX2xvb3BzW2ldLmhlYWRlcigpID09
IGJsb2NrKQotICAgICAgICAgICAgICAgIHJldHVybiAmbV9sb29wc1tpXTsKKyAgICAgICAgZm9y
ICgKKyAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBsb29wID0gaW5uZXJNb3N0TG9vcE9m
KGJsb2NrKTsKKyAgICAgICAgICAgIGxvb3A7CisgICAgICAgICAgICBsb29wID0gaW5uZXJNb3N0
T3V0ZXJMb29wKCpsb29wKSkgeworICAgICAgICAgICAgaWYgKGxvb3AtPmhlYWRlcigpID09IGJs
b2NrKQorICAgICAgICAgICAgICAgIHJldHVybiBsb29wOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KICAgICAKKyAgICBjb25zdCBOYXR1cmFsTG9vcCogaW5uZXJNb3N0TG9v
cE9mKEJhc2ljQmxvY2sqIGJsb2NrKSBjb25zdAorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW5k
ZXggPSBibG9jay0+aW5uZXJNb3N0TG9vcEluZGljZXNbMF07CisgICAgICAgIGlmIChpbmRleCA9
PSBVSU5UX01BWCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gJm1fbG9v
cHNbaW5kZXhdOworICAgIH0KKyAgICAKKyAgICBjb25zdCBOYXR1cmFsTG9vcCogaW5uZXJNb3N0
T3V0ZXJMb29wKGNvbnN0IE5hdHVyYWxMb29wJiBsb29wKSBjb25zdAorICAgIHsKKyAgICAgICAg
aWYgKGxvb3AubV9vdXRlckxvb3BJbmRleCA9PSBVSU5UX01BWCkKKyAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gJm1fbG9vcHNbbG9vcC5tX291dGVyTG9vcEluZGV4XTsKKyAg
ICB9CisgICAgCiAgICAgLy8gUmV0dXJuIHRoZSBpbmRpY2VzIG9mIGFsbCBsb29wcyB0aGlzIGJl
bG9uZ3MgdG8uCiAgICAgVmVjdG9yPGNvbnN0IE5hdHVyYWxMb29wKj4gbG9vcHNPZihCYXNpY0Js
b2NrKikgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAko
cmV2aXNpb24gMTUyNzQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTg3LDYgKzE4NywxMyBAQCBQbGFuOjpDb21waWxhdGlvblBh
dGggUGxhbjo6Y29tcGlsZUluVGhyCiAgICAgZGZnLm1fZml4cG9pbnRTdGF0ZSA9IEZpeHBvaW50
Q29udmVyZ2VkOwogCiAgICAgcGVyZm9ybVN0b3JlRWxpbWluYXRpb24oZGZnKTsKKyAgICAKKyAg
ICAvLyBJZiB3ZSdyZSBkb2luZyB2YWxpZGF0aW9uLCB0aGVuIHJ1biBzb21lIGFuYWx5c2VzLCB0
byBnaXZlIHRoZW0gYW4gb3Bwb3J0dW5pdHkKKyAgICAvLyB0byBzZWxmLXZhbGlkYXRlLiBOb3cg
aXMgYXMgZ29vZCBhIHRpbWUgYXMgYW55LCB0byBkbyB0aGlzLgorICAgIGlmICh2YWxpZGF0aW9u
RW5hYmxlZCgpKSB7CisgICAgICAgIGRmZy5tX2RvbWluYXRvcnMuY29tcHV0ZUlmTmVjZXNzYXJ5
KGRmZyk7CisgICAgICAgIGRmZy5tX25hdHVyYWxMb29wcy5jb21wdXRlSWZOZWNlc3NhcnkoZGZn
KTsKKyAgICB9CiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICBpZiAoT3B0aW9uczo6dXNlRXhw
ZXJpbWVudGFsRlRMKCkKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTI3NDQpCisrKyBTb3VyY2UvV1RGL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEzLTA3LTE2ICBGaWxp
cCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgZm91cnRoVGllcjogTmF0dXJh
bExvb3BzIHNob3VsZCBiZSBhYmxlIHRvIHF1aWNrbHkgYW5zd2VyIHF1ZXN0aW9ucyBsaWtlICJ3
aGF0IGxvb3BzIG93biB0aGlzIGJhc2ljIGJsb2NrIgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4NzUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBBZGQgYSB1dGlsaXR5IGZ1bmN0aW9uIGZv
ciBpbnNlcnRpbmcgYW4gZWxlbWVudCBpbnRvIGEgdmVjdG9yIHRoYXQgaGFzIGJvdW5kZWQgc2l6
ZSwKKyAgICAgICAgYW5kIHdoZXJlIHRoZSBpbnNlcnRpb24gY2F1c2VzIHRoaW5ncyB0byBkcm9w
IG9mZiB0aGUgZW5kLgorCisgICAgICAgICogd3RmL1N0ZExpYkV4dHJhcy5oOgorICAgICAgICAo
V1RGKToKKyAgICAgICAgKFdURjo6aW5zZXJ0SW50b0JvdW5kZWRWZWN0b3IpOgorCiAyMDEzLTA3
LTEyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgZm91cnRoVGll
cjogREZHIHNob3VsZCBoYXZlIGFuIFNTQSBmb3JtIGZvciB1c2UgYnkgRlRMCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9T
dGRMaWJFeHRyYXMuaAkocmV2aXNpb24gMTUyNzQ0KQorKysgU291cmNlL1dURi93dGYvU3RkTGli
RXh0cmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1OSw2ICsyNTksMTQgQEAgaW5saW5lIEFycmF5
RWxlbWVudFR5cGUqIGFwcHJveGltYXRlQmluYQogICAgIHJldHVybiBiaW5hcnlTZWFyY2hJbXBs
PEFycmF5RWxlbWVudFR5cGUsIEtleVR5cGUsIEFycmF5VHlwZSwgRXh0cmFjdEtleSwgUmV0dXJu
QWRqYWNlbnRFbGVtZW50SWZLZXlJc05vdFByZXNlbnQ+KGNvbnN0X2Nhc3Q8QXJyYXlUeXBlJj4o
YXJyYXkpLCBzaXplLCBrZXksIGV4dHJhY3RLZXkpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBW
ZWN0b3JUeXBlLCB0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2lubGluZSB2b2lkIGluc2VydEludG9C
b3VuZGVkVmVjdG9yKFZlY3RvclR5cGUmIHZlY3Rvciwgc2l6ZV90IHNpemUsIGNvbnN0IEVsZW1l
bnRUeXBlJiBlbGVtZW50LCBzaXplX3QgaW5kZXgpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
c2l6ZTsgaS0tID4gaW5kZXggKyAxOykKKyAgICAgICAgdmVjdG9yW2ldID0gdmVjdG9yW2kgLSAx
XTsKKyAgICB2ZWN0b3JbaW5kZXhdID0gZWxlbWVudDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RG
CiAKIC8vIFRoaXMgdmVyc2lvbiBvZiBwbGFjZW1lbnQgbmV3IG9taXRzIGEgMCBjaGVjay4KQEAg
LTI3MSw2ICsyNzksNyBAQCBpbmxpbmUgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVs
CiAKIHVzaW5nIFdURjo6S0I7CiB1c2luZyBXVEY6Ok1COwordXNpbmcgV1RGOjppbnNlcnRJbnRv
Qm91bmRlZFZlY3RvcjsKIHVzaW5nIFdURjo6aXNQb2ludGVyQWxpZ25lZDsKIHVzaW5nIFdURjo6
aXM4Qnl0ZUFsaWduZWQ7CiB1c2luZyBXVEY6OmJpbmFyeVNlYXJjaDsK
</data>
<flag name="review"
          id="228534"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>