<?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>92679</bug_id>
          
          <creation_ts>2012-07-30 14:25:19 -0700</creation_ts>
          <short_desc>Structures should be swept after all other objects</short_desc>
          <delta_ts>2012-07-31 16:05:29 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>92700</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>682383</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-07-30 14:25:19 -0700</bug_when>
    <thetext>In order to get rid of ClassInfo from our objects, we need to be able to safely get the ClassInfo during the destruction of objects. We&apos;d like to get the ClassInfo out of the Structure, but currently it is not safe to do so because the order of destruction of objects is not guaranteed to sweep objects before their corresponding Structure. We can fix this by sweeping Structures after everything else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682487</commentid>
    <comment_count>1</comment_count>
      <attachid>155389</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-07-30 15:57:05 -0700</bug_when>
    <thetext>Created attachment 155389
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682560</commentid>
    <comment_count>2</comment_count>
      <attachid>155389</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-30 17:26:50 -0700</bug_when>
    <thetext>Comment on attachment 155389
Patch

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

&gt; Source/JavaScriptCore/heap/HeapTimer.h:44
&gt; +

Kill it with fire!

&gt; Source/JavaScriptCore/heap/IncrementalSweeper.cpp:74
&gt; +    return !m_blocksToSweep.size() || m_currentBlockToSweepIndex &gt;= m_blocksToSweep.size();

I can has assert that m_currentBlockToSweepIndex &lt;= m_blocksToSweep.size()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682566</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-07-30 17:34:09 -0700</bug_when>
    <thetext>Committed r124123: &lt;http://trac.webkit.org/changeset/124123&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682583</commentid>
    <comment_count>4</comment_count>
      <attachid>155389</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-07-30 18:03:01 -0700</bug_when>
    <thetext>Comment on attachment 155389
Patch

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

&gt; Source/JavaScriptCore/heap/IncrementalSweeper.cpp:83
&gt; +        MarkedBlock* block = m_blocksToSweep[m_currentBlockToSweepIndex];
&gt; +        if (block-&gt;onlyContainsStructures()) {
&gt; +            m_currentBlockToSweepIndex++;
&gt; +            continue;

This logic gets a little whacky. Can&apos;t we just arrange for all the Structure blocks to be added to the array last, so we naturally sweep them last?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682603</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-30 18:37:53 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 92700</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683425</commentid>
    <comment_count>6</comment_count>
      <attachid>155621</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-07-31 13:25:20 -0700</bug_when>
    <thetext>Created attachment 155621
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683583</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-07-31 16:05:29 -0700</bug_when>
    <thetext>Committed r124265: &lt;http://trac.webkit.org/changeset/124265&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155389</attachid>
            <date>2012-07-30 15:57:05 -0700</date>
            <delta_ts>2012-07-31 13:25:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92679-20120730155649.patch</filename>
            <type>text/plain</type>
            <size>14554</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI0MTA1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBA
CisyMDEyLTA3LTMwICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgU3RydWN0dXJlcyBzaG91bGQgYmUgc3dlcHQgYWZ0ZXIgYWxsIG90aGVyIG9iamVj
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNjc5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gb3Jk
ZXIgdG8gZ2V0IHJpZCBvZiBDbGFzc0luZm8gZnJvbSBvdXIgb2JqZWN0cywgd2UgbmVlZCB0byBi
ZSBhYmxlIHRvIHNhZmVseSBnZXQgdGhlIAorICAgICAgICBDbGFzc0luZm8gZHVyaW5nIHRoZSBk
ZXN0cnVjdGlvbiBvZiBvYmplY3RzLiBXZSdkIGxpa2UgdG8gZ2V0IHRoZSBDbGFzc0luZm8gb3V0
IG9mIHRoZSAKKyAgICAgICAgU3RydWN0dXJlLCBidXQgY3VycmVudGx5IGl0IGlzIG5vdCBzYWZl
IHRvIGRvIHNvIGJlY2F1c2UgdGhlIG9yZGVyIG9mIGRlc3RydWN0aW9uIG9mIG9iamVjdHMgCisg
ICAgICAgIGlzIG5vdCBndWFyYW50ZWVkIHRvIHN3ZWVwIG9iamVjdHMgYmVmb3JlIHRoZWlyIGNv
cnJlc3BvbmRpbmcgU3RydWN0dXJlLiBXZSBjYW4gZml4IHRoaXMgYnkgCisgICAgICAgIHN3ZWVw
aW5nIFN0cnVjdHVyZXMgYWZ0ZXIgZXZlcnl0aGluZyBlbHNlLgorCisgICAgICAgICogaGVhcC9I
ZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6aXNTYWZlVG9Td2VlcFN0cnVjdHVyZXMpOiBB
ZGQgYSBmdW5jdGlvbiB0aGF0IGNoZWNrcyBpZiBpdCBpcyBzYWZlIHRvIHN3ZWVwIFN0cnVjdHVy
ZXMuCisgICAgICAgIElmIHRoZSBIZWFwJ3MgSW5jcmVtZW50YWxTd2VlcGVyIG1lbWJlciBpcyBu
dWxsLCB0aGF0IG1lYW5zIHdlJ3JlIHNodXR0aW5nIGRvd24gdGhpcyBWTSBhbmQgaXQgaXMgCisg
ICAgICAgIHNhZmUgdG8gc3dlZXAgc3RydWN0dXJlcyBzaW5jZSB3ZSdsbCBhbHdheXMgZG8gU3Ry
dWN0dXJlcyBsYXN0IGFueXdheXMgZHVlIHRvIHRoZSBvcmRlcmluZyBvZiAKKyAgICAgICAgTWFy
a2VkU3BhY2U6OmZvckVhY2hCbG9jay4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6Okhl
YXA6OmRpZFN0YXJ0Vk1TaHV0ZG93bik6IEFkZCB0aGlzIGludGVybWVkaWF0ZSBmdW5jdGlvbiB0
byB0aGUgSGVhcCB0aGF0IH5KU0dsb2JhbERhdGEgbm93CisgICAgICAgIGNhbGxzIHJhdGhlciB0
aGFuIGNhbGxpbmcgdGhlIHR3byBIZWFwVGltZXIgb2JqZWN0cyBpbmRpdmlkdWFsbHkuIFRoaXMg
YWxsb3dzIHRoZSBIZWFwIHRvIG51bGwgb3V0IAorICAgICAgICB0aGVzZSBwb2ludGVycyBhZnRl
ciBpdCBoYXMgaW52YWxpZGF0ZWQgdGhlbSB0byBwcmV2ZW50IGFjY2lkZW50YWwgdXNlLWFmdGVy
LWZyZWUgaW4gdGhlIHN3ZWVwKCkgCisgICAgICAgIGNhbGxzIGR1cmluZyBsYXN0Q2hhbmNlVG9G
aW5hbGl6ZSgpLgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAoSGVhcCk6CisgICAg
ICAgICogaGVhcC9IZWFwVGltZXIuaDoKKyAgICAgICAgKEhlYXBUaW1lcik6CisgICAgICAgICog
aGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwOgorICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3
ZWVwZXI6OnN0cnVjdHVyZXNDYW5CZVN3ZXB0KTogRGV0ZXJtaW5lcyBpZiBpdCBpcyBjdXJyZW50
bHkgc2FmZSB0byBzd2VlcCBTdHJ1Y3R1cmVzLgorICAgICAgICBUaGlzIGRlY2lzaW9uIGlzIGJh
c2VkIG9uIHdoZXRoZXIgd2UgaGF2ZSBnb3R0ZW4gdG8gdGhlIGVuZCBvZiB0aGUgdmVjdG9yIG9m
IGJsb2NrcyB0aGF0IG5lZWQgc3dlZXBpbmcKKyAgICAgICAgdGhlIGZpcnN0IHRpbWUuCisgICAg
ICAgIChKU0MpOgorICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3ZWVwZXI6OmRvU3dlZXApOiBX
ZSBhZGQgYSBzZWNvbmQgcGFzcyBvdmVyIHRoZSB2ZWN0b3IgdG8gc3dlZXAgU3RydWN0dXJlcyBh
ZnRlciB3ZSAKKyAgICAgICAgbWFrZSBvdXIgZmlyc3QgcGFzcy4gV2Ugbm93IG51bGwgb3V0IHRo
ZSBzbG90cyBhcyB3ZSBzd2VlcCB0aGVtIHNvIHRoYXQgd2UgY2FuIHF1aWNrbHkgZmluZCB0aGUg
CisgICAgICAgIFN0cnVjdHVyZXMgZHVyaW5nIHRoZSBzZWNvbmQgcGFzcy4KKyAgICAgICAgKEpT
Qzo6SW5jcmVtZW50YWxTd2VlcGVyOjpzdGFydFN3ZWVwaW5nKTogSW5pdGlhbGl6ZSBvdXIgbmV3
IFN0cnVjdHVyZSBzd2VlcGluZyBpbmRleC4KKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2Vl
cGVyOjp3aWxsRmluaXNoU3dlZXBpbmcpOiBDYWxsYmFjayB0aGF0IGlzIGNhbGxlZCBieSBNYXJr
ZWRTcGFjZTo6c3dlZXAgdG8gbm90aWZ5IAorICAgICAgICB0aGUgSW5jcmVtZW50YWxTd2VlcGVy
IHRoYXQgd2UgYXJlIGdvaW5nIHRvIHN3ZWVwIGFsbCBvZiB0aGUgcmVtYWluaW5nIGJsb2NrcyBp
biB0aGUgSGVhcCBzbyBpdCBjYW4gCisgICAgICAgIGFzc3VtZSB0aGF0IGV2ZXJ5dGhpbmcgaXMg
dGFrZW4gY2FyZSBvZiBpbiB0aGUgY29ycmVjdCBvcmRlci4gU2luY2UgTWFya2VkU3BhY2U6OmZv
ckVhY2hCbG9jayAKKyAgICAgICAgaXRlcmF0ZXMgb3ZlciB0aGUgU3RydWN0dXJlIGJsb2NrcyBh
ZnRlciBhbGwgb3RoZXIgYmxvY2tzLCB0aGUgb3JkZXJpbmcgcHJvcGVydHkgZm9yIHN3ZWVwaW5n
IFN0cnVjdHVyZXMgaG9sZHMuCisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6SW5j
cmVtZW50YWxTd2VlcGVyKTogSW5pdGlhbGl6ZSBTdHJ1Y3R1cmUgc3dlZXBpbmcgaW5kZXguCisg
ICAgICAgICogaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaDogQWRkIGRlY2xhcmF0aW9ucyBmb3Ig
bmV3IHN0dWZmLgorICAgICAgICAoSW5jcmVtZW50YWxTd2VlcGVyKToKKyAgICAgICAgKiBoZWFw
L01hcmtlZEFsbG9jYXRvci5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6dHJ5
QWxsb2NhdGVIZWxwZXIpOiBXZSBub3cgY2hlY2sgaWYgdGhlIGN1cnJlbnQgYmxvY2sgb25seSBj
b250YWlucyBzdHJ1Y3R1cmVzIGFuZCAKKyAgICAgICAgaWYgc28gYW5kIGl0IGlzbid0IHNhZmUg
dG8gc3dlZXAgU3RydWN0dXJlcyBhY2NvcmRpbmcgdG8gdGhlIEhlYXAsIHdlIGp1c3QgcmV0dXJu
IGVhcmx5IGluc3RlYWQgb2YgZG9pbmcgCisgICAgICAgIHRoZSBub3JtYWwgbGF6eSBzd2VlcC4g
SWYgdGhpcyBwcm92ZXMgdG8gYmUgdG9vIG11Y2ggb2YgYSB3YXN0ZSBpbiB0aGUgZnV0dXJlIHdl
IGNhbiBhZGQgYW4gZXh0cmEgY2xhdXNlIHRoYXQgCisgICAgICAgIHdpbGwgc3dlZXAgc29tZSBu
dW1iZXIgb2Ygb3RoZXIgYmxvY2tzIGluIHBsYWNlIG9mIHRoZSBjdXJyZW50IGJsb2NrIHRvIG1p
dGlnYXRlIHRoZSBjb3N0IG9mIHRoZSBmbG9hdGluZyAKKyAgICAgICAgU3RydWN0dXJlIGdhcmJh
Z2UuCisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6YWRkQmxvY2spOgorICAgICAgICAq
IGhlYXAvTWFya2VkQWxsb2NhdG9yLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6
emFwRnJlZUxpc3QpOiBXaGVuIHdlIHphcCB0aGUgZnJlZSBsaXN0IGluIHRoZSBNYXJrZWRBbGxv
Y2F0b3IsIHRoZSBjdXJyZW50IGJsb2NrIGlzIG5vIAorICAgICAgICBsb25nZXIgdmFsaWQgdG8g
YWxsb2NhdGUgZnJvbSwgc28gd2Ugc2V0IHRoZSBjdXJyZW50IGJsb2NrIHRvIG51bGwuCisgICAg
ICAgICogaGVhcC9NYXJrZWRCbG9jay5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpz
d2VlcEhlbHBlcik6IEFkZGVkIGEgY291cGxlIGFzc2VydGlvbnMgdG8gbWFrZSBzdXJlIHRoYXQg
d2Ugd2VyZW4ndCB0cnlpbmcgdG8gc3dlZXAgU3RydWN0dXJlcworICAgICAgICBhdCBhbiB1bnNh
ZmUgdGltZS4KKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6
TWFya2VkU3BhY2U6OnN3ZWVwKTogTm90aWZ5IHRoZSBJbmNyZW1lbnRhbFN3ZWVwZXIgdGhhdCB0
aGUgTWFya2VkU3BhY2Ugd2lsbCBmaW5pc2ggYWxsIGN1cnJlbnRseSByZW1haW5pbmcgc3dlZXBp
bmcuCisgICAgICAgIChKU0MpOiAKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxEYXRhOjp+SlNHbG9iYWxEYXRhKTogQ2FsbCB0aGUgbmV3IEhlYXA6OmRp
ZFN0YXJ0Vk1TaHV0ZG93bi4KKwogMjAxMi0wNy0yOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBw
bGUuY29tPgogCiAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5OjptX3Nob3VsZENhY2hlIGlzIG9u
bHkgYXNzaWduZWQgYW5kIG5ldmVyIHVzZWQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCShyZXZpc2lvbiAxMjQxMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMwLDQgKzgzMCwxOCBAQCB2b2lkIEhlYXA6OmFk
ZENvbXBpbGVkQ29kZShFeGVjdXRhYmxlQmFzCiAgICAgbV9jb21waWxlZENvZGUuYXBwZW5kKGV4
ZWN1dGFibGUpOwogfQogCitib29sIEhlYXA6OmlzU2FmZVRvU3dlZXBTdHJ1Y3R1cmVzKCkKK3sK
KyAgICByZXR1cm4gIW1fc3dlZXBlciB8fCBtX3N3ZWVwZXItPnN0cnVjdHVyZXNDYW5CZVN3ZXB0
KCk7Cit9CisKK3ZvaWQgSGVhcDo6ZGlkU3RhcnRWTVNodXRkb3duKCkKK3sKKyAgICBtX2FjdGl2
aXR5Q2FsbGJhY2stPmRpZFN0YXJ0Vk1TaHV0ZG93bigpOworICAgIG1fYWN0aXZpdHlDYWxsYmFj
ayA9IDA7CisgICAgbV9zd2VlcGVyLT5kaWRTdGFydFZNU2h1dGRvd24oKTsKKyAgICBtX3N3ZWVw
ZXIgPSAwOworICAgIGxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTI0MTA1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjgsNiArMTY4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZGlkQWJhbmRvbihz
aXplX3QpOwogCiAgICAgICAgIGJvb2wgaXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUpOworICAg
ICAgICBib29sIGlzU2FmZVRvU3dlZXBTdHJ1Y3R1cmVzKCk7CisgICAgICAgIHZvaWQgZGlkU3Rh
cnRWTVNodXRkb3duKCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgQ29k
ZUJsb2NrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmgJKHJldmlz
aW9uIDEyNDEwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBUaW1lci5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICAK
IGNsYXNzIEhlYXBUaW1lciB7CiBwdWJsaWM6CisKICNpZiBVU0UoQ0YpCiAgICAgSGVhcFRpbWVy
KEpTR2xvYmFsRGF0YSosIENGUnVuTG9vcFJlZik7CiAgICAgc3RhdGljIHZvaWQgdGltZXJEaWRG
aXJlKENGUnVuTG9vcFRpbWVyUmVmLCB2b2lkKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAJKHJldmlzaW9uIDEyNDEwNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY5LDEwICs2OSw0NSBAQCB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6
Y2FuY2VsVGltZXIoKQogICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKG1fdGltZXIu
Z2V0KCksIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgc19kZWNhZGUpOwogfQogCitib29s
IEluY3JlbWVudGFsU3dlZXBlcjo6c3RydWN0dXJlc0NhbkJlU3dlcHQoKQoreworICAgIHJldHVy
biAhbV9ibG9ja3NUb1N3ZWVwLnNpemUoKSB8fCBtX2N1cnJlbnRCbG9ja1RvU3dlZXBJbmRleCA+
PSBtX2Jsb2Nrc1RvU3dlZXAuc2l6ZSgpOworfQorCiB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6
ZG9Td2VlcChkb3VibGUgc3dlZXBCZWdpblRpbWUpCiB7CiAgICAgd2hpbGUgKG1fY3VycmVudEJs
b2NrVG9Td2VlcEluZGV4IDwgbV9ibG9ja3NUb1N3ZWVwLnNpemUoKSkgewotICAgICAgICBNYXJr
ZWRCbG9jayogYmxvY2sgPSBtX2Jsb2Nrc1RvU3dlZXBbbV9jdXJyZW50QmxvY2tUb1N3ZWVwSW5k
ZXgrK107CisgICAgICAgIE1hcmtlZEJsb2NrKiBibG9jayA9IG1fYmxvY2tzVG9Td2VlcFttX2N1
cnJlbnRCbG9ja1RvU3dlZXBJbmRleF07CisgICAgICAgIGlmIChibG9jay0+b25seUNvbnRhaW5z
U3RydWN0dXJlcygpKSB7CisgICAgICAgICAgICBtX2N1cnJlbnRCbG9ja1RvU3dlZXBJbmRleCsr
OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBtX2Jsb2Nrc1Rv
U3dlZXBbbV9jdXJyZW50QmxvY2tUb1N3ZWVwSW5kZXgrK10gPSAwOworCisgICAgICAgIGlmICgh
YmxvY2stPm5lZWRzU3dlZXBpbmcoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
IGJsb2NrLT5zd2VlcCgpOworICAgICAgICBtX2dsb2JhbERhdGEtPmhlYXAub2JqZWN0U3BhY2Uo
KS5mcmVlT3JTaHJpbmtCbG9jayhibG9jayk7CisKKyAgICAgICAgQ0ZUaW1lSW50ZXJ2YWwgZWxh
cHNlZFRpbWUgPSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gc3dlZXBCZWdp
blRpbWU7CisgICAgICAgIGlmIChlbGFwc2VkVGltZSA8IHN3ZWVwVGltZVNsaWNlKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgc2NoZWR1bGVUaW1lcigpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgd2hpbGUgKG1fY3VycmVudFN0cnVjdHVyZUJsb2NrVG9Td2VlcElu
ZGV4IDwgbV9ibG9ja3NUb1N3ZWVwLnNpemUoKSkgeworICAgICAgICBNYXJrZWRCbG9jayogYmxv
Y2sgPSBtX2Jsb2Nrc1RvU3dlZXBbbV9jdXJyZW50U3RydWN0dXJlQmxvY2tUb1N3ZWVwSW5kZXhd
OworICAgICAgICBpZiAoIWJsb2NrKSB7CisgICAgICAgICAgICBtX2N1cnJlbnRTdHJ1Y3R1cmVC
bG9ja1RvU3dlZXBJbmRleCsrOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwor
ICAgICAgICBtX2Jsb2Nrc1RvU3dlZXBbbV9jdXJyZW50U3RydWN0dXJlQmxvY2tUb1N3ZWVwSW5k
ZXgrK10gPSAwOworCiAgICAgICAgIGlmICghYmxvY2stPm5lZWRzU3dlZXBpbmcoKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCkBAIC05NSwxMyArMTMwLDIzIEBAIHZvaWQgSW5jcmVtZW50YWxT
d2VlcGVyOjpzdGFydFN3ZWVwaW5nKGMKIHsKICAgICBXVEY6OmNvcHlUb1ZlY3RvcihibG9ja1Nu
YXBzaG90LCBtX2Jsb2Nrc1RvU3dlZXApOwogICAgIG1fY3VycmVudEJsb2NrVG9Td2VlcEluZGV4
ID0gMDsKKyAgICBtX2N1cnJlbnRTdHJ1Y3R1cmVCbG9ja1RvU3dlZXBJbmRleCA9IDA7CiAgICAg
c2NoZWR1bGVUaW1lcigpOwogfQogCit2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6d2lsbEZpbmlz
aFN3ZWVwaW5nKCkKK3sKKyAgICBtX2N1cnJlbnRCbG9ja1RvU3dlZXBJbmRleCA9IG1fY3VycmVu
dFN0cnVjdHVyZUJsb2NrVG9Td2VlcEluZGV4ID0gMDsKKyAgICBtX2Jsb2Nrc1RvU3dlZXAuY2xl
YXIoKTsKKyAgICBpZiAobV9nbG9iYWxEYXRhKQorICAgICAgICBjYW5jZWxUaW1lcigpOworfQor
CiAjZWxzZQogCiBJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVudGFsU3dlZXBlcihKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEpCiAgICAgOiBIZWFwVGltZXIoZ2xvYmFsRGF0YSkKKyAgICAsIG1f
c3RydWN0dXJlc0NhbkJlU3dlcHQoZmFsc2UpCiB7CiB9CiAKQEAgLTExNCwxMCArMTU5LDIxIEBA
IEluY3JlbWVudGFsU3dlZXBlciogSW5jcmVtZW50YWxTd2VlcGVyOjoKICAgICByZXR1cm4gbmV3
IEluY3JlbWVudGFsU3dlZXBlcihoZWFwLT5nbG9iYWxEYXRhKCkpOwogfQogCitib29sIEluY3Jl
bWVudGFsU3dlZXBlcjo6c3RydWN0dXJlc0NhbkJlU3dlcHQoKQoreworICAgIHJldHVybiBtX3N0
cnVjdHVyZXNDYW5CZVN3ZXB0OworfQorCiB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6c3RhcnRT
d2VlcGluZyhjb25zdCBIYXNoU2V0PE1hcmtlZEJsb2NrKj4mKQogeworICAgIG1fc3RydWN0dXJl
c0NhbkJlU3dlcHQgPSBmYWxzZTsKIH0KLSAgICAKKwordm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6
OndpbGxGaW5pc2hTd2VlcGluZygpCit7CisgICAgbV9zdHJ1Y3R1cmVzQ2FuQmVTd2VwdCA9IHRy
dWU7Cit9CisKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCShyZXZpc2lvbiAxMjQx
MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyBJbmNy
ZW1lbnRhbFN3ZWVwZXIqIGNyZWF0ZShIZWFwKik7CiAgICAgdm9pZCBzdGFydFN3ZWVwaW5nKGNv
bnN0IEhhc2hTZXQ8TWFya2VkQmxvY2sqPiYgYmxvY2tTbmFwc2hvdCk7CiAgICAgdmlydHVhbCB2
b2lkIGRvV29yaygpOworICAgIGJvb2wgc3RydWN0dXJlc0NhbkJlU3dlcHQoKTsKKyAgICB2b2lk
IHdpbGxGaW5pc2hTd2VlcGluZygpOwogCiBwcml2YXRlOgorCiAjaWYgVVNFKENGKQogICAgIElu
Y3JlbWVudGFsU3dlZXBlcihIZWFwKiwgQ0ZSdW5Mb29wUmVmKTsKICAgICAKQEAgLTUyLDExICs1
NSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgY2FuY2VsVGltZXIoKTsKICAgICAKICAgICB1bnNp
Z25lZCBtX2N1cnJlbnRCbG9ja1RvU3dlZXBJbmRleDsKKyAgICB1bnNpZ25lZCBtX2N1cnJlbnRT
dHJ1Y3R1cmVCbG9ja1RvU3dlZXBJbmRleDsKICAgICBWZWN0b3I8TWFya2VkQmxvY2sqPiBtX2Js
b2Nrc1RvU3dlZXA7CiAjZWxzZQogICAgIAogICAgIEluY3JlbWVudGFsU3dlZXBlcihKU0dsb2Jh
bERhdGEqKTsKLSAgICAKKyAgIAorICAgIGJvb2wgbV9zdHJ1Y3R1cmVzQ2FuQmVTd2VwdDsKKwog
I2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxv
Y2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEFsbG9jYXRvci5jcHAJKHJldmlzaW9uIDEyNDEwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMsNiArMyw3IEBA
CiAKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJIZWFwLmgiCisj
aW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgi
CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKQEAgLTI5LDYgKzMwLDE0IEBAIGJvb2wg
TWFya2VkQWxsb2NhdG9yOjppc1BhZ2VkT3V0KGRvdWJsZSAKIGlubGluZSB2b2lkKiBNYXJrZWRB
bGxvY2F0b3I6OnRyeUFsbG9jYXRlSGVscGVyKCkKIHsKICAgICBpZiAoIW1fZnJlZUxpc3QuaGVh
ZCkgeworICAgICAgICBpZiAobV9vbmx5Q29udGFpbnNTdHJ1Y3R1cmVzICYmICFtX2hlYXAtPmlz
U2FmZVRvU3dlZXBTdHJ1Y3R1cmVzKCkpIHsKKyAgICAgICAgICAgIGlmIChtX2N1cnJlbnRCbG9j
aykgeworICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5kaWRDb25zdW1lRnJlZUxpc3Qo
KTsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IDA7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCiAgICAgICAgIGZvciAoTWFya2VkQmxv
Y2sqJiBibG9jayA9IG1fYmxvY2tzVG9Td2VlcDsgYmxvY2s7IGJsb2NrID0gc3RhdGljX2Nhc3Q8
TWFya2VkQmxvY2sqPihibG9jay0+bmV4dCgpKSkgewogICAgICAgICAgICAgbV9mcmVlTGlzdCA9
IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6U3dlZXBUb0ZyZWVMaXN0KTsKICAgICAgICAgICAg
IGlmIChtX2ZyZWVMaXN0LmhlYWQpIHsKQEAgLTEwNCw3ICsxMTMsNiBAQCBNYXJrZWRCbG9jayog
TWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZUJsCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6YWRkQmxv
Y2soTWFya2VkQmxvY2sqIGJsb2NrKQogewogICAgIEFTU0VSVCghbV9jdXJyZW50QmxvY2spOwot
ICAgIEFTU0VSVCghbV9ibG9ja3NUb1N3ZWVwKTsKICAgICBBU1NFUlQoIW1fZnJlZUxpc3QuaGVh
ZCk7CiAgICAgCiAgICAgbV9ibG9ja0xpc3QuYXBwZW5kKGJsb2NrKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCShyZXZpc2lvbiAxMjQxMDUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw3IEBAIGlubGluZSB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6
emFwRnJlZUxpc3QKICAgICB9CiAgICAgCiAgICAgbV9jdXJyZW50QmxvY2stPnphcEZyZWVMaXN0
KG1fZnJlZUxpc3QpOworICAgIG1fY3VycmVudEJsb2NrID0gMDsKICAgICBtX2ZyZWVMaXN0ID0g
TWFya2VkQmxvY2s6OkZyZWVMaXN0KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHJldmlzaW9uIDEyNDEwNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiAr
MjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCiAK
KyNpbmNsdWRlICJJbmNyZW1lbnRhbFN3ZWVwZXIuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNp
bmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKQEAgLTE0MCwxMCAr
MTQxLDEyIEBAIE1hcmtlZEJsb2NrOjpGcmVlTGlzdCBNYXJrZWRCbG9jazo6c3dlZXAKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwogICAg
IGNhc2UgTWFya2VkOgorICAgICAgICBBU1NFUlQoIW1fb25seUNvbnRhaW5zU3RydWN0dXJlcyB8
fCBoZWFwKCktPmlzU2FmZVRvU3dlZXBTdHJ1Y3R1cmVzKCkpOwogICAgICAgICByZXR1cm4gc3dl
ZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdAogICAgICAgICAgICAgPyBzcGVjaWFsaXplZFN3ZWVw
PE1hcmtlZCwgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdG9yQ2FsbE5lZWRlZD4oKQogICAgICAg
ICAgICAgOiBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBPbmx5LCBkZXN0cnVjdG9yQ2Fs
bE5lZWRlZD4oKTsKICAgICBjYXNlIFphcHBlZDoKKyAgICAgICAgQVNTRVJUKCFtX29ubHlDb250
YWluc1N0cnVjdHVyZXMgfHwgaGVhcCgpLT5pc1NhZmVUb1N3ZWVwU3RydWN0dXJlcygpKTsKICAg
ICAgICAgcmV0dXJuIHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QKICAgICAgICAgICAgID8g
c3BlY2lhbGl6ZWRTd2VlcDxaYXBwZWQsIFN3ZWVwVG9GcmVlTGlzdCwgZGVzdHJ1Y3RvckNhbGxO
ZWVkZWQ+KCkKICAgICAgICAgICAgIDogc3BlY2lhbGl6ZWRTd2VlcDxaYXBwZWQsIFN3ZWVwT25s
eSwgZGVzdHJ1Y3RvckNhbGxOZWVkZWQ+KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkU3BhY2UuY3BwCShyZXZpc2lvbiAxMjQxMDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIx
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgogCisj
aW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3Qu
aCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgpAQCAtMTA4LDYg
KzEwOSwxMiBAQCB2b2lkIE1hcmtlZFNwYWNlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiAgICAg
Zm9yRWFjaEJsb2NrPExhc3RDaGFuY2VUb0ZpbmFsaXplPigpOwogfQogCit2b2lkIE1hcmtlZFNw
YWNlOjpzd2VlcCgpCit7CisgICAgbV9oZWFwLT5zd2VlcGVyKCktPndpbGxGaW5pc2hTd2VlcGlu
ZygpOworICAgIGZvckVhY2hCbG9jazxTd2VlcD4oKTsKK30KKwogdm9pZCBNYXJrZWRTcGFjZTo6
cmVzZXRBbGxvY2F0b3JzKCkKIHsKICAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IHByZWNpc2VT
dGVwOyBjZWxsU2l6ZSA8PSBwcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBwcmVjaXNlU3RlcCkg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lv
biAxMjQxMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMzUsMTEgKzIzNSw2IEBAIGlubGluZSB2b2lkIE1hcmtlZFNwYWNl
OjpjbGVhck1hcmtzKCkKICAgICBmb3JFYWNoQmxvY2s8Q2xlYXJNYXJrcz4oKTsKIH0KIAotaW5s
aW5lIHZvaWQgTWFya2VkU3BhY2U6OnN3ZWVwKCkKLXsKLSAgICBmb3JFYWNoQmxvY2s8U3dlZXA+
KCk7Ci19Ci0KIGlubGluZSBzaXplX3QgTWFya2VkU3BhY2U6Om9iamVjdENvdW50KCkKIHsKICAg
ICByZXR1cm4gZm9yRWFjaEJsb2NrPE1hcmtDb3VudD4oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkocmV2aXNpb24gMTI0MTA1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjIzLDkgKzIyMyw3IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEds
b2JhbERhdGFUeXAKIEpTR2xvYmFsRGF0YTo6fkpTR2xvYmFsRGF0YSgpCiB7CiAgICAgQVNTRVJU
KCFtX2FwaUxvY2suY3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSk7Ci0gICAgaGVhcC5hY3Rp
dml0eUNhbGxiYWNrKCktPmRpZFN0YXJ0Vk1TaHV0ZG93bigpOwotICAgIGhlYXAuc3dlZXBlcigp
LT5kaWRTdGFydFZNU2h1dGRvd24oKTsKLSAgICBoZWFwLmxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7
CisgICAgaGVhcC5kaWRTdGFydFZNU2h1dGRvd24oKTsKIAogICAgIGRlbGV0ZSBpbnRlcnByZXRl
cjsKICNpZm5kZWYgTkRFQlVHCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155621</attachid>
            <date>2012-07-31 13:25:20 -0700</date>
            <delta_ts>2012-07-31 15:50:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92679-20120731132503.patch</filename>
            <type>text/plain</type>
            <size>13898</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI0MjQyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBA
CisyMDEyLTA3LTMxICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgU3RydWN0dXJlcyBzaG91bGQgYmUgc3dlcHQgYWZ0ZXIgYWxsIG90aGVyIG9iamVj
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNjc5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gb3Jk
ZXIgdG8gZ2V0IHJpZCBvZiBDbGFzc0luZm8gZnJvbSBvdXIgb2JqZWN0cywgd2UgbmVlZCB0byBi
ZSBhYmxlIHRvIHNhZmVseSBnZXQgdGhlIAorICAgICAgICBDbGFzc0luZm8gZHVyaW5nIHRoZSBk
ZXN0cnVjdGlvbiBvZiBvYmplY3RzLiBXZSdkIGxpa2UgdG8gZ2V0IHRoZSBDbGFzc0luZm8gb3V0
IG9mIHRoZSAKKyAgICAgICAgU3RydWN0dXJlLCBidXQgY3VycmVudGx5IGl0IGlzIG5vdCBzYWZl
IHRvIGRvIHNvIGJlY2F1c2UgdGhlIG9yZGVyIG9mIGRlc3RydWN0aW9uIG9mIG9iamVjdHMgCisg
ICAgICAgIGlzIG5vdCBndWFyYW50ZWVkIHRvIHN3ZWVwIG9iamVjdHMgYmVmb3JlIHRoZWlyIGNv
cnJlc3BvbmRpbmcgU3RydWN0dXJlLiBXZSBjYW4gZml4IHRoaXMgYnkgCisgICAgICAgIHN3ZWVw
aW5nIFN0cnVjdHVyZXMgYWZ0ZXIgZXZlcnl0aGluZyBlbHNlLgorCisgICAgICAgICogaGVhcC9I
ZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6aXNTYWZlVG9Td2VlcFN0cnVjdHVyZXMpOiBB
ZGQgYSBmdW5jdGlvbiB0aGF0IGNoZWNrcyBpZiBpdCBpcyBzYWZlIHRvIHN3ZWVwIFN0cnVjdHVy
ZXMuCisgICAgICAgIElmIHRoZSBIZWFwJ3MgSW5jcmVtZW50YWxTd2VlcGVyIG1lbWJlciBpcyBu
dWxsLCB0aGF0IG1lYW5zIHdlJ3JlIHNodXR0aW5nIGRvd24gdGhpcyBWTSBhbmQgaXQgaXMgCisg
ICAgICAgIHNhZmUgdG8gc3dlZXAgc3RydWN0dXJlcyBzaW5jZSB3ZSdsbCBhbHdheXMgZG8gU3Ry
dWN0dXJlcyBsYXN0IGFueXdheXMgZHVlIHRvIHRoZSBvcmRlcmluZyBvZiAKKyAgICAgICAgTWFy
a2VkU3BhY2U6OmZvckVhY2hCbG9jay4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6Okhl
YXA6OmRpZFN0YXJ0Vk1TaHV0ZG93bik6IEFkZCB0aGlzIGludGVybWVkaWF0ZSBmdW5jdGlvbiB0
byB0aGUgSGVhcCB0aGF0IH5KU0dsb2JhbERhdGEgbm93CisgICAgICAgIGNhbGxzIHJhdGhlciB0
aGFuIGNhbGxpbmcgdGhlIHR3byBIZWFwVGltZXIgb2JqZWN0cyBpbmRpdmlkdWFsbHkuIFRoaXMg
YWxsb3dzIHRoZSBIZWFwIHRvIG51bGwgb3V0IAorICAgICAgICB0aGVzZSBwb2ludGVycyBhZnRl
ciBpdCBoYXMgaW52YWxpZGF0ZWQgdGhlbSB0byBwcmV2ZW50IGFjY2lkZW50YWwgdXNlLWFmdGVy
LWZyZWUgaW4gdGhlIHN3ZWVwKCkgCisgICAgICAgIGNhbGxzIGR1cmluZyBsYXN0Q2hhbmNlVG9G
aW5hbGl6ZSgpLgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAoSGVhcCk6CisgICAg
ICAgICogaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwOgorICAgICAgICAoSlNDOjpJbmNyZW1l
bnRhbFN3ZWVwZXI6OkluY3JlbWVudGFsU3dlZXBlcik6CisgICAgICAgIChKU0M6OkluY3JlbWVu
dGFsU3dlZXBlcjo6ZG9Td2VlcCk6IFdlIG5vdyBjaGVjayBmb3IgdGhlIGZpcnN0IHRpbWUgd2Ug
ZW5jb3VudGVyIGEgYmxvY2sgZnVsbCBvZiAKKyAgICAgICAgU3RydWN0dXJlcyBhbmQgc2V0IHRo
ZSBmbGFnIHRoYXQgc2F5cyBpdCdzIG5vdyBzYWZlIHRvIHN3ZWVwIHN0cnVjdHVyZXMuIFdlIGFs
c28gYXNzZXJ0IHRoYXQgYWZ0ZXIgCisgICAgICAgIHRoYXQgcG9pbnQgd2UgZG9uJ3QgZW5jb3Vu
dGVyIGFueSBtb3JlIG5vbi1TdHJ1Y3R1cmUgYmxvY2tzLgorICAgICAgICAoSlNDOjpJbmNyZW1l
bnRhbFN3ZWVwZXI6OnN0YXJ0U3dlZXBpbmcpOiBSZXNpemVzIHRoZSBtX2Jsb2Nrc1RvU3dlZXAg
dmVjdG9yIHRvIGJlIHRoZSBhcHByb3ByaWF0ZSAKKyAgICAgICAgc2l6ZSB0byBjb250YWluIHRo
ZSBzbmFwc2hvdCBvZiB0aGUgTWFya2VkU3BhY2UuIFRoZW4gdXNlcyB0aGUgbmV3IENvcHlGdW5j
dG9yIHRvIGNvcHkgdGhlIGJsb2NrcworICAgICAgICBpbiB0aGUgTWFya2VkU3BhY2UgaW50byB0
aGUgdmVjdG9yIHdpdGggdGhlIFN0cnVjdHVyZXMgbmF0dXJhbGx5IGNvbWluZyBsYXN0IGluIHRo
ZSBsaXN0IGR1ZSB0byB0aGUgCisgICAgICAgIG9yZGVyaW5nIG9mIGl0ZXJhdGlvbiBpbiBNYXJr
ZWRTcGFjZTo6Zm9yRWFjaEJsb2NrKCkuIFdlIGFsc28gcmVzZXQgdGhlIG1fc3RydWN0dXJlc0Nh
bkJlU3dlcHQgZmxhZyB0byBmYWxzZS4KKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVy
Ojp3aWxsRmluaXNoU3dlZXBpbmcpOiBDYWxsYmFjayB0aGF0IGlzIGNhbGxlZCBieSBNYXJrZWRT
cGFjZTo6c3dlZXAgdG8gbm90aWZ5IAorICAgICAgICB0aGUgSW5jcmVtZW50YWxTd2VlcGVyIHRo
YXQgd2UgYXJlIGdvaW5nIHRvIHN3ZWVwIGFsbCBvZiB0aGUgcmVtYWluaW5nIGJsb2NrcyBpbiB0
aGUgSGVhcCBzbyBpdCBjYW4gCisgICAgICAgIGFzc3VtZSB0aGF0IGV2ZXJ5dGhpbmcgaXMgdGFr
ZW4gY2FyZSBvZiBpbiB0aGUgY29ycmVjdCBvcmRlci4gU2luY2UgTWFya2VkU3BhY2U6OmZvckVh
Y2hCbG9jayAKKyAgICAgICAgaXRlcmF0ZXMgb3ZlciB0aGUgU3RydWN0dXJlIGJsb2NrcyBhZnRl
ciBhbGwgb3RoZXIgYmxvY2tzLCB0aGUgb3JkZXJpbmcgcHJvcGVydHkgZm9yIHN3ZWVwaW5nIFN0
cnVjdHVyZXMgaG9sZHMuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpJbmNyZW1lbnRh
bFN3ZWVwZXI6OnN0cnVjdHVyZXNDYW5CZVN3ZXB0KTogCisgICAgICAgICogaGVhcC9JbmNyZW1l
bnRhbFN3ZWVwZXIuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkNvcHlGdW5jdG9y
OjpDb3B5RnVuY3Rvcik6IE5ldyBmdW5jdG9yIHRoYXQgY29waWVzIGEgcG9pbnRlciBvZiBlYWNo
IGJsb2NrIGl0IGVuY291bnRlcnMgaW50byB0aGUgCisgICAgICAgIHNuYXBzaG90IGZvciB0aGUg
SW5jcmVtZW50YWxTd2VlcGVyLiAKKyAgICAgICAgKENvcHlGdW5jdG9yKToKKyAgICAgICAgKEpT
Qzo6Q29weUZ1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSW5jcmVtZW50YWxTd2VlcGVy
KToKKyAgICAgICAgKiBoZWFwL01hcmtlZEFsbG9jYXRvci5jcHA6CisgICAgICAgIChKU0M6Ok1h
cmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVIZWxwZXIpOiBXZSBub3cgY2hlY2sgaWYgdGhlIGN1
cnJlbnQgYmxvY2sgb25seSBjb250YWlucyBzdHJ1Y3R1cmVzIGFuZCAgCisgICAgICAgIGlmIGl0
IGRvZXMgYW5kIGl0IGlzbid0IHNhZmUgdG8gc3dlZXAgU3RydWN0dXJlcyBhY2NvcmRpbmcgdG8g
dGhlIEhlYXAsIHdlIGp1c3QgcmV0dXJuIGVhcmx5IGluc3RlYWQgb2YgZG9pbmcgCisgICAgICAg
IHRoZSBub3JtYWwgbGF6eSBzd2VlcC4gSWYgdGhpcyBwcm92ZXMgdG8gYmUgdG9vIG11Y2ggb2Yg
YSB3YXN0ZSBpbiB0aGUgZnV0dXJlIHdlIGNhbiBhZGQgYW4gZXh0cmEgY2xhdXNlIHRoYXQgCisg
ICAgICAgIHdpbGwgc3dlZXAgc29tZSBudW1iZXIgb2Ygb3RoZXIgYmxvY2tzIGluIHBsYWNlIG9m
IHRoZSBjdXJyZW50IGJsb2NrIHRvIG1pdGlnYXRlIHRoZSBjb3N0IG9mIHRoZSBmbG9hdGluZyAg
CisgICAgICAgIFN0cnVjdHVyZSBnYXJiYWdlLgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0
b3I6OmFkZEJsb2NrKToKKyAgICAgICAgKiBoZWFwL01hcmtlZEFsbG9jYXRvci5oOgorICAgICAg
ICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnphcEZyZWVMaXN0KTogV2hlbiB3ZSB6YXAgdGhlIGZy
ZWUgbGlzdCBpbiB0aGUgTWFya2VkQWxsb2NhdG9yLCB0aGUgY3VycmVudCBibG9jayBpcyBubyAK
KyAgICAgICAgbG9uZ2VyIHZhbGlkIHRvIGFsbG9jYXRlIGZyb20sIHNvIHdlIHNldCB0aGUgY3Vy
cmVudCBibG9jayB0byBudWxsLgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c3dlZXBIZWxwZXIpOiBBZGRlZCBhIGNvdXBsZSBhc3Nl
cnRpb25zIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIHdlcmVuJ3QgdHJ5aW5nIHRvIHN3ZWVwIFN0cnVj
dHVyZXMKKyAgICAgICAgYXQgYW4gdW5zYWZlIHRpbWUuCisgICAgICAgICogaGVhcC9NYXJrZWRT
cGFjZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpzd2VlcCk6IE5vdGlmeSB0aGUg
SW5jcmVtZW50YWxTd2VlcGVyIHRoYXQgdGhlIE1hcmtlZFNwYWNlIHdpbGwgZmluaXNoIGFsbCBj
dXJyZW50bHkgcmVtYWluaW5nIHN3ZWVwaW5nLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBo
ZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjp+SlNHbG9iYWxEYXRh
KTogQ2FsbCB0aGUgbmV3IEhlYXA6OmRpZFN0YXJ0Vk1TaHV0ZG93bi4KKwogMjAxMi0wNy0zMSAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBPU1IgZXhpdCBw
cm9maWxpbmcgaGFzIHVudXN1YWwgb3ZlcnNpZ2h0cwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAJKHJldmlzaW9uIDEyNDIxNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MzAsNCArODMwLDE4IEBAIHZvaWQgSGVh
cDo6YWRkQ29tcGlsZWRDb2RlKEV4ZWN1dGFibGVCYXMKICAgICBtX2NvbXBpbGVkQ29kZS5hcHBl
bmQoZXhlY3V0YWJsZSk7CiB9CiAKK2Jvb2wgSGVhcDo6aXNTYWZlVG9Td2VlcFN0cnVjdHVyZXMo
KQoreworICAgIHJldHVybiAhbV9zd2VlcGVyIHx8IG1fc3dlZXBlci0+c3RydWN0dXJlc0NhbkJl
U3dlcHQoKTsKK30KKwordm9pZCBIZWFwOjpkaWRTdGFydFZNU2h1dGRvd24oKQoreworICAgIG1f
YWN0aXZpdHlDYWxsYmFjay0+ZGlkU3RhcnRWTVNodXRkb3duKCk7CisgICAgbV9hY3Rpdml0eUNh
bGxiYWNrID0gMDsKKyAgICBtX3N3ZWVwZXItPmRpZFN0YXJ0Vk1TaHV0ZG93bigpOworICAgIG1f
c3dlZXBlciA9IDA7CisgICAgbGFzdENoYW5jZVRvRmluYWxpemUoKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMjQy
MTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE2OCw2ICsxNjgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBkaWRBYmFu
ZG9uKHNpemVfdCk7CiAKICAgICAgICAgYm9vbCBpc1BhZ2VkT3V0KGRvdWJsZSBkZWFkbGluZSk7
CisgICAgICAgIGJvb2wgaXNTYWZlVG9Td2VlcFN0cnVjdHVyZXMoKTsKKyAgICAgICAgdm9pZCBk
aWRTdGFydFZNU2h1dGRvd24oKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBDb2RlQmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRh
bFN3ZWVwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lu
Y3JlbWVudGFsU3dlZXBlci5jcHAJKHJldmlzaW9uIDEyNDIxNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUx
LDYgKzUxLDcgQEAgdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmRvV29yaygpCiBJbmNyZW1lbnRh
bFN3ZWVwZXI6OkluY3JlbWVudGFsU3dlZXBlcihIZWFwKiBoZWFwLCBDRlJ1bkxvb3BSZWYgcnVu
TG9vcCkKICAgICA6IEhlYXBUaW1lcihoZWFwLT5nbG9iYWxEYXRhKCksIHJ1bkxvb3ApCiAgICAg
LCBtX2N1cnJlbnRCbG9ja1RvU3dlZXBJbmRleCgwKQorICAgICwgbV9zdHJ1Y3R1cmVzQ2FuQmVT
d2VwdChmYWxzZSkKIHsKIH0KIApAQCAtNzMsNiArNzQsMTEgQEAgdm9pZCBJbmNyZW1lbnRhbFN3
ZWVwZXI6OmRvU3dlZXAoZG91YmxlIAogewogICAgIHdoaWxlIChtX2N1cnJlbnRCbG9ja1RvU3dl
ZXBJbmRleCA8IG1fYmxvY2tzVG9Td2VlcC5zaXplKCkpIHsKICAgICAgICAgTWFya2VkQmxvY2sq
IGJsb2NrID0gbV9ibG9ja3NUb1N3ZWVwW21fY3VycmVudEJsb2NrVG9Td2VlcEluZGV4KytdOwor
ICAgICAgICBpZiAoYmxvY2stPm9ubHlDb250YWluc1N0cnVjdHVyZXMoKSkKKyAgICAgICAgICAg
IG1fc3RydWN0dXJlc0NhbkJlU3dlcHQgPSB0cnVlOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBBU1NFUlQoIW1fc3RydWN0dXJlc0NhbkJlU3dlcHQpOworCiAgICAgICAgIGlmICghYmxvY2st
Pm5lZWRzU3dlZXBpbmcoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC05MywxNSArOTks
MjggQEAgdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmRvU3dlZXAoZG91YmxlIAogCiB2b2lkIElu
Y3JlbWVudGFsU3dlZXBlcjo6c3RhcnRTd2VlcGluZyhjb25zdCBIYXNoU2V0PE1hcmtlZEJsb2Nr
Kj4mIGJsb2NrU25hcHNob3QpCiB7Ci0gICAgV1RGOjpjb3B5VG9WZWN0b3IoYmxvY2tTbmFwc2hv
dCwgbV9ibG9ja3NUb1N3ZWVwKTsKKyAgICBtX2Jsb2Nrc1RvU3dlZXAucmVzaXplKGJsb2NrU25h
cHNob3Quc2l6ZSgpKTsKKyAgICBDb3B5RnVuY3RvciBmdW5jdG9yKG1fYmxvY2tzVG9Td2VlcCk7
CisgICAgbV9nbG9iYWxEYXRhLT5oZWFwLm9iamVjdFNwYWNlKCkuZm9yRWFjaEJsb2NrKGZ1bmN0
b3IpOwogICAgIG1fY3VycmVudEJsb2NrVG9Td2VlcEluZGV4ID0gMDsKKyAgICBtX3N0cnVjdHVy
ZXNDYW5CZVN3ZXB0ID0gZmFsc2U7CiAgICAgc2NoZWR1bGVUaW1lcigpOwogfQogCit2b2lkIElu
Y3JlbWVudGFsU3dlZXBlcjo6d2lsbEZpbmlzaFN3ZWVwaW5nKCkKK3sKKyAgICBtX2N1cnJlbnRC
bG9ja1RvU3dlZXBJbmRleCA9IDA7CisgICAgbV9zdHJ1Y3R1cmVzQ2FuQmVTd2VwdCA9IHRydWU7
CisgICAgbV9ibG9ja3NUb1N3ZWVwLmNsZWFyKCk7CisgICAgaWYgKG1fZ2xvYmFsRGF0YSkKKyAg
ICAgICAgY2FuY2VsVGltZXIoKTsKK30KKwogI2Vsc2UKIAogSW5jcmVtZW50YWxTd2VlcGVyOjpJ
bmNyZW1lbnRhbFN3ZWVwZXIoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogICAgIDogSGVhcFRp
bWVyKGdsb2JhbERhdGEpCisgICAgLCBtX3N0cnVjdHVyZXNDYW5CZVN3ZXB0KGZhbHNlKQogewog
fQogCkBAIC0xMTYsOCArMTM1LDE5IEBAIEluY3JlbWVudGFsU3dlZXBlciogSW5jcmVtZW50YWxT
d2VlcGVyOjoKIAogdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OnN0YXJ0U3dlZXBpbmcoY29uc3Qg
SGFzaFNldDxNYXJrZWRCbG9jayo+JikKIHsKKyAgICBtX3N0cnVjdHVyZXNDYW5CZVN3ZXB0ID0g
ZmFsc2U7CiB9Ci0gICAgCisKK3ZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjp3aWxsRmluaXNoU3dl
ZXBpbmcoKQoreworICAgIG1fc3RydWN0dXJlc0NhbkJlU3dlcHQgPSB0cnVlOworfQorCiAjZW5k
aWYKIAorYm9vbCBJbmNyZW1lbnRhbFN3ZWVwZXI6OnN0cnVjdHVyZXNDYW5CZVN3ZXB0KCkKK3sK
KyAgICByZXR1cm4gbV9zdHJ1Y3R1cmVzQ2FuQmVTd2VwdDsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3
ZWVwZXIuaAkocmV2aXNpb24gMTI0MjE0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SW5jcmVtZW50YWxTd2VlcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEyICszNiwyNyBAQAog
bmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEhlYXA7Ci0gICAgCisKK3N0cnVjdCBDb3B5RnVuY3Rv
ciA6IHB1YmxpYyBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgeworICAgIENvcHlGdW5jdG9yKFZl
Y3RvcjxNYXJrZWRCbG9jayo+JiBibG9ja3MpIAorICAgICAgICA6IG1faW5kZXgoMCkgCisgICAg
ICAgICwgbV9ibG9ja3MoYmxvY2tzKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIG9wZXJhdG9y
KCkoTWFya2VkQmxvY2sqIGJsb2NrKSB7IG1fYmxvY2tzW21faW5kZXgrK10gPSBibG9jazsgfQor
CisgICAgc2l6ZV90IG1faW5kZXg7CisgICAgVmVjdG9yPE1hcmtlZEJsb2NrKj4mIG1fYmxvY2tz
OworfTsKKwogY2xhc3MgSW5jcmVtZW50YWxTd2VlcGVyIDogcHVibGljIEhlYXBUaW1lciB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIEluY3JlbWVudGFsU3dlZXBlciogY3JlYXRlKEhlYXAqKTsKICAg
ICB2b2lkIHN0YXJ0U3dlZXBpbmcoY29uc3QgSGFzaFNldDxNYXJrZWRCbG9jayo+JiBibG9ja1Nu
YXBzaG90KTsKICAgICB2aXJ0dWFsIHZvaWQgZG9Xb3JrKCk7CisgICAgYm9vbCBzdHJ1Y3R1cmVz
Q2FuQmVTd2VwdCgpOworICAgIHZvaWQgd2lsbEZpbmlzaFN3ZWVwaW5nKCk7CiAKIHByaXZhdGU6
CiAjaWYgVVNFKENGKQpAQCAtNTgsNiArNzMsNyBAQCBwcml2YXRlOgogICAgIEluY3JlbWVudGFs
U3dlZXBlcihKU0dsb2JhbERhdGEqKTsKICAgICAKICNlbmRpZgorICAgIGJvb2wgbV9zdHJ1Y3R1
cmVzQ2FuQmVTd2VwdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAxMjQy
MTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zLDYgKzMsNyBAQAogCiAjaW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxi
YWNrLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIkluY3JlbWVudGFsU3dlZXBlci5o
IgogI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgogCkBAIC0yOSw2ICszMCwxNCBAQCBib29sIE1hcmtlZEFsbG9jYXRvcjo6aXNQYWdlZE91dChk
b3VibGUgCiBpbmxpbmUgdm9pZCogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUhlbHBlcigp
CiB7CiAgICAgaWYgKCFtX2ZyZWVMaXN0LmhlYWQpIHsKKyAgICAgICAgaWYgKG1fb25seUNvbnRh
aW5zU3RydWN0dXJlcyAmJiAhbV9oZWFwLT5pc1NhZmVUb1N3ZWVwU3RydWN0dXJlcygpKSB7Cisg
ICAgICAgICAgICBpZiAobV9jdXJyZW50QmxvY2spIHsKKyAgICAgICAgICAgICAgICBtX2N1cnJl
bnRCbG9jay0+ZGlkQ29uc3VtZUZyZWVMaXN0KCk7CisgICAgICAgICAgICAgICAgbV9jdXJyZW50
QmxvY2sgPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IH0KKwogICAgICAgICBmb3IgKE1hcmtlZEJsb2NrKiYgYmxvY2sgPSBtX2Jsb2Nrc1RvU3dlZXA7
IGJsb2NrOyBibG9jayA9IHN0YXRpY19jYXN0PE1hcmtlZEJsb2NrKj4oYmxvY2stPm5leHQoKSkp
IHsKICAgICAgICAgICAgIG1fZnJlZUxpc3QgPSBibG9jay0+c3dlZXAoTWFya2VkQmxvY2s6OlN3
ZWVwVG9GcmVlTGlzdCk7CiAgICAgICAgICAgICBpZiAobV9mcmVlTGlzdC5oZWFkKSB7CkBAIC0x
MDQsNyArMTEzLDYgQEAgTWFya2VkQmxvY2sqIE1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVCbAog
dm9pZCBNYXJrZWRBbGxvY2F0b3I6OmFkZEJsb2NrKE1hcmtlZEJsb2NrKiBibG9jaykKIHsKICAg
ICBBU1NFUlQoIW1fY3VycmVudEJsb2NrKTsKLSAgICBBU1NFUlQoIW1fYmxvY2tzVG9Td2VlcCk7
CiAgICAgQVNTRVJUKCFtX2ZyZWVMaXN0LmhlYWQpOwogICAgIAogICAgIG1fYmxvY2tMaXN0LmFw
cGVuZChibG9jayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxv
Y2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRB
bGxvY2F0b3IuaAkocmV2aXNpb24gMTI0MjE0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw2ICsxMDEsNyBAQCBp
bmxpbmUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnphcEZyZWVMaXN0CiAgICAgfQogICAgIAogICAg
IG1fY3VycmVudEJsb2NrLT56YXBGcmVlTGlzdChtX2ZyZWVMaXN0KTsKKyAgICBtX2N1cnJlbnRC
bG9jayA9IDA7CiAgICAgbV9mcmVlTGlzdCA9IE1hcmtlZEJsb2NrOjpGcmVlTGlzdCgpOwogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCShyZXZp
c2lvbiAxMjQyMTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgogCisjaW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVy
LmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRl
ICJTY29wZUNoYWluLmgiCkBAIC0xNDAsMTAgKzE0MSwxMiBAQCBNYXJrZWRCbG9jazo6RnJlZUxp
c3QgTWFya2VkQmxvY2s6OnN3ZWVwCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICByZXR1cm4gRnJlZUxpc3QoKTsKICAgICBjYXNlIE1hcmtlZDoKKyAgICAgICAgQVNTRVJU
KCFtX29ubHlDb250YWluc1N0cnVjdHVyZXMgfHwgaGVhcCgpLT5pc1NhZmVUb1N3ZWVwU3RydWN0
dXJlcygpKTsKICAgICAgICAgcmV0dXJuIHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QKICAg
ICAgICAgICAgID8gc3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwVG9GcmVlTGlzdCwgZGVz
dHJ1Y3RvckNhbGxOZWVkZWQ+KCkKICAgICAgICAgICAgIDogc3BlY2lhbGl6ZWRTd2VlcDxNYXJr
ZWQsIFN3ZWVwT25seSwgZGVzdHJ1Y3RvckNhbGxOZWVkZWQ+KCk7CiAgICAgY2FzZSBaYXBwZWQ6
CisgICAgICAgIEFTU0VSVCghbV9vbmx5Q29udGFpbnNTdHJ1Y3R1cmVzIHx8IGhlYXAoKS0+aXNT
YWZlVG9Td2VlcFN0cnVjdHVyZXMoKSk7CiAgICAgICAgIHJldHVybiBzd2VlcE1vZGUgPT0gU3dl
ZXBUb0ZyZWVMaXN0CiAgICAgICAgICAgICA/IHNwZWNpYWxpemVkU3dlZXA8WmFwcGVkLCBTd2Vl
cFRvRnJlZUxpc3QsIGRlc3RydWN0b3JDYWxsTmVlZGVkPigpCiAgICAgICAgICAgICA6IHNwZWNp
YWxpemVkU3dlZXA8WmFwcGVkLCBTd2VlcE9ubHksIGRlc3RydWN0b3JDYWxsTmVlZGVkPigpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkocmV2aXNp
b24gMTI0MjE0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKIAorI2luY2x1ZGUgIkluY3JlbWVudGFsU3dlZXBlci5o
IgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5j
bHVkZSAiSlNPYmplY3QuaCIKQEAgLTEwOCw2ICsxMDksMTIgQEAgdm9pZCBNYXJrZWRTcGFjZTo6
bGFzdENoYW5jZVRvRmluYWxpemUoKQogICAgIGZvckVhY2hCbG9jazxMYXN0Q2hhbmNlVG9GaW5h
bGl6ZT4oKTsKIH0KIAordm9pZCBNYXJrZWRTcGFjZTo6c3dlZXAoKQoreworICAgIG1faGVhcC0+
c3dlZXBlcigpLT53aWxsRmluaXNoU3dlZXBpbmcoKTsKKyAgICBmb3JFYWNoQmxvY2s8U3dlZXA+
KCk7Cit9CisKIHZvaWQgTWFya2VkU3BhY2U6OnJlc2V0QWxsb2NhdG9ycygpCiB7CiAgICAgZm9y
IChzaXplX3QgY2VsbFNpemUgPSBwcmVjaXNlU3RlcDsgY2VsbFNpemUgPD0gcHJlY2lzZUN1dG9m
ZjsgY2VsbFNpemUgKz0gcHJlY2lzZVN0ZXApIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gMTI0MjE0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjM1LDExICsyMzUs
NiBAQCBpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6Y2xlYXJNYXJrcygpCiAgICAgZm9yRWFjaEJs
b2NrPENsZWFyTWFya3M+KCk7CiB9CiAKLWlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpzd2VlcCgp
Ci17Ci0gICAgZm9yRWFjaEJsb2NrPFN3ZWVwPigpOwotfQotCiBpbmxpbmUgc2l6ZV90IE1hcmtl
ZFNwYWNlOjpvYmplY3RDb3VudCgpCiB7CiAgICAgcmV0dXJuIGZvckVhY2hCbG9jazxNYXJrQ291
bnQ+KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
RGF0YS5jcHAJKHJldmlzaW9uIDEyNDIxNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMyw5ICsyMjMsNyBAQCBK
U0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiBKU0dsb2JhbERhdGE6On5K
U0dsb2JhbERhdGEoKQogewogICAgIEFTU0VSVCghbV9hcGlMb2NrLmN1cnJlbnRUaHJlYWRJc0hv
bGRpbmdMb2NrKCkpOwotICAgIGhlYXAuYWN0aXZpdHlDYWxsYmFjaygpLT5kaWRTdGFydFZNU2h1
dGRvd24oKTsKLSAgICBoZWFwLnN3ZWVwZXIoKS0+ZGlkU3RhcnRWTVNodXRkb3duKCk7Ci0gICAg
aGVhcC5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOworICAgIGhlYXAuZGlkU3RhcnRWTVNodXRkb3du
KCk7CiAKICAgICBkZWxldGUgaW50ZXJwcmV0ZXI7CiAjaWZuZGVmIE5ERUJVRwo=
</data>
<flag name="review"
          id="165126"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>