<?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>128941</bug_id>
          
          <creation_ts>2014-02-17 16:30:46 -0800</creation_ts>
          <short_desc>Make it possible to start and stop the bytecode sampler.</short_desc>
          <delta_ts>2014-02-18 11:08:04 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>981702</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-02-17 16:30:46 -0800</bug_when>
    <thetext>Make it possible to start and stop the bytecode sampler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981708</commentid>
    <comment_count>1</comment_count>
      <attachid>224445</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-02-17 16:40:18 -0800</bug_when>
    <thetext>Created attachment 224445
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981717</commentid>
    <comment_count>2</comment_count>
      <attachid>224445</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-17 16:55:14 -0800</bug_when>
    <thetext>Comment on attachment 224445
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        Refactor the bytecode sampler logic to allow us to start and stop
&gt; +        profiling sessions dynamically.

What is this for?

&gt; Source/JavaScriptCore/runtime/VM.cpp:419
&gt; +void VM::initializeBytecodeProfiler()
&gt; +{
&gt; +    ASSERT(m_bytecodeProfilerEnabled);
&gt; +    if (m_perBytecodeProfiler)
&gt; +        return;
&gt; +    
&gt; +    m_perBytecodeProfiler = adoptPtr(new Profiler::Database(*this));
&gt; +}
&gt; +
&gt; +void VM::startBytecodeProfiler()
&gt; +{
&gt; +    if (m_bytecodeProfilerEnabled)
&gt; +        return;
&gt; +    m_bytecodeProfilerEnabled = true;
&gt; +    if (entryScope)
&gt; +        entryScope-&gt;setRecompilationNeeded(true);
&gt; +    else
&gt; +        initializeBytecodeProfiler();
&gt; +    
&gt; +}

Why are starting and initializing two different things?

&gt; Source/JavaScriptCore/runtime/VM.cpp:438
&gt; +String VM::stopBytecodeProfiler()
&gt; +{
&gt; +    m_bytecodeProfilerEnabled = false;
&gt; +    if (!m_perBytecodeProfiler)
&gt; +        return String();
&gt; +    String result = m_perBytecodeProfiler-&gt;toJSON();
&gt; +    if (entryScope)
&gt; +        entryScope-&gt;setRecompilationNeeded(true);
&gt; +    else
&gt; +        destroyBytecodeProfiler();
&gt; +    return result;
&gt; +}

I really don&apos;t like this API.  I think it&apos;s weird that stopping the profiler, and getting its JSON, are part of the same thing.  Why can&apos;t you have two separate APIs?

&gt; Source/JavaScriptCore/runtime/VM.h:516
&gt; +        void prepareProfilerIfNecessary()
&gt; +        {
&gt; +            if (m_perBytecodeProfiler &amp;&amp; !m_bytecodeProfilerEnabled)
&gt; +                destroyBytecodeProfiler();
&gt; +            else if (m_bytecodeProfilerEnabled &amp;&amp; !m_perBytecodeProfiler)
&gt; +                initializeBytecodeProfiler();
&gt; +        }

This is really weird.  A method called &quot;prapare&quot; that destroys the profiler, or initializes it?  I don&apos;t understand this method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981727</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-02-17 17:12:52 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 224445 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=224445&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:9
&gt; &gt; +        Refactor the bytecode sampler logic to allow us to start and stop
&gt; &gt; +        profiling sessions dynamically.
&gt; 
&gt; What is this for?

So we&apos;ll be able to profile pages in browser

&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/VM.cpp:419
&gt; &gt; +void VM::initializeBytecodeProfiler()
&gt; &gt; +{
&gt; &gt; +    ASSERT(m_bytecodeProfilerEnabled);
&gt; &gt; +    if (m_perBytecodeProfiler)
&gt; &gt; +        return;
&gt; &gt; +    
&gt; &gt; +    m_perBytecodeProfiler = adoptPtr(new Profiler::Database(*this));
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +void VM::startBytecodeProfiler()
&gt; &gt; +{
&gt; &gt; +    if (m_bytecodeProfilerEnabled)
&gt; &gt; +        return;
&gt; &gt; +    m_bytecodeProfilerEnabled = true;
&gt; &gt; +    if (entryScope)
&gt; &gt; +        entryScope-&gt;setRecompilationNeeded(true);
&gt; &gt; +    else
&gt; &gt; +        initializeBytecodeProfiler();
&gt; &gt; +    
&gt; &gt; +}
&gt; 
&gt; Why are starting and initializing two different things?

So you can start the profiler from inside JS, i guess that&apos;s not strictly necessary but it was useful for testing.

&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/VM.cpp:438
&gt; &gt; +String VM::stopBytecodeProfiler()
&gt; &gt; +{
&gt; &gt; +    m_bytecodeProfilerEnabled = false;
&gt; &gt; +    if (!m_perBytecodeProfiler)
&gt; &gt; +        return String();
&gt; &gt; +    String result = m_perBytecodeProfiler-&gt;toJSON();
&gt; &gt; +    if (entryScope)
&gt; &gt; +        entryScope-&gt;setRecompilationNeeded(true);
&gt; &gt; +    else
&gt; &gt; +        destroyBytecodeProfiler();
&gt; &gt; +    return result;
&gt; &gt; +}
&gt; 
&gt; I really don&apos;t like this API.  I think it&apos;s weird that stopping the profiler, and getting its JSON, are part of the same thing.  Why can&apos;t you have two separate APIs?

If we don&apos;t have the ability to start/stop from js this ins&apos;t necessary

&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/VM.h:516
&gt; &gt; +        void prepareProfilerIfNecessary()
&gt; &gt; +        {
&gt; &gt; +            if (m_perBytecodeProfiler &amp;&amp; !m_bytecodeProfilerEnabled)
&gt; &gt; +                destroyBytecodeProfiler();
&gt; &gt; +            else if (m_bytecodeProfilerEnabled &amp;&amp; !m_perBytecodeProfiler)
&gt; &gt; +                initializeBytecodeProfiler();
&gt; &gt; +        }
&gt; 
&gt; This is really weird.  A method called &quot;prapare&quot; that destroys the profiler, or initializes it?  I don&apos;t understand this method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981987</commentid>
    <comment_count>4</comment_count>
      <attachid>224522</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-02-18 10:58:07 -0800</bug_when>
    <thetext>Created attachment 224522
Patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224445</attachid>
            <date>2014-02-17 16:40:18 -0800</date>
            <delta_ts>2014-02-18 10:57:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128941-20140217164017.patch</filename>
            <type>text/plain</type>
            <size>8327</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0MjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ODA4ZDc2MmZhMDUxNjcyNDhlY2I0YjBiNzY4MmRhYmY2OTViYmVlLi5kMzVjMGE0MzEwOTcxMjM1
OTFiNzdlY2YyZjEzNTFlMmJkOTM4YTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAxNC0wMi0xNyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gc3RhcnQgYW5kIHN0b3AgdGhlIGJ5dGVjb2Rl
IHNhbXBsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjg5NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZWZhY3RvciB0aGUgYnl0ZWNvZGUgc2FtcGxlciBsb2dpYyB0byBhbGxvdyB1cyB0byBzdGFy
dCBhbmQgc3RvcAorICAgICAgICBwcm9maWxpbmcgc2Vzc2lvbnMgZHluYW1pY2FsbHkuCisKKyAg
ICAgICAgQSBmYWlybHkgc2ltcGxlIEFQSSB0aGF0IGNhbiBiZSB1c2VkIHRvIHN0YXJ0IHRoZSBi
eXRlY29kZSBwcm9maWxlciwKKyAgICAgICAgd2hpY2ggZm9yY2VzIHRoZSBWTSB0byBkaXNjYXJk
IGFsbCBjb2RlIGFuZCBpbnN0YW50aWF0ZSBhIHByb2ZpbGVyIGF0CisgICAgICAgIHRoZSBmaXJz
dCBwb3NzaWJsZSBWTSBlbnRyeS4gV2hlbiB0aGUgcHJvZmlsaW5nIGlzIHN0b3BwZWQgd2Ugc2Vy
aWFsaXNlCisgICAgICAgIHRoZSBwcm9maWxlIHRvIGEgSlNPTiBlbmNvZGVkIHN0cmluZywgYW5k
IHJlbW92ZSB0aGUgcHJvZmlsZXIgYW5kCisgICAgICAgIGRpc2NhcmQgdGhlIGNvZGUgYWdhaW4u
CisKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChmdW5jdGlvblN0YXJ0Qnl0ZWNvZGVQcm9maWxlcik6CisgICAgICAg
IChmdW5jdGlvbkVuZEJ5dGVjb2RlUHJvZmlsZXIpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3Bw
OgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAoSlNDOjpWTTo6aW5pdGlhbGl6ZUJ5
dGVjb2RlUHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6c3RhcnRCeXRlY29kZVByb2ZpbGVy
KToKKyAgICAgICAgKEpTQzo6Vk06OmRlc3Ryb3lCeXRlY29kZVByb2ZpbGVyKToKKyAgICAgICAg
KEpTQzo6Vk06OnN0b3BCeXRlY29kZVByb2ZpbGVyKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6
CisgICAgICAgIChKU0M6OlZNOjpwcmVwYXJlUHJvZmlsZXJJZk5lY2Vzc2FyeSk6CisgICAgICAg
ICogcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpWTUVudHJ5U2NvcGU6
OlZNRW50cnlTY29wZSk6CisKIDIwMTQtMDItMTcgIFNlcmdpbyBDb3JyZWlhICA8c2VyZ2lvLmNv
cnJlaWFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXBsYWNlIHVzZXMgb2YgUGFzc093blB0
ci9Pd25QdHIgd2l0aCBzdGQ6OnVuaXF1ZV9wdHIgaW4gV2ViQ29yZS9pbnNwZWN0b3IKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAKaW5kZXggZjU3Mjc3MGM3ODllOTAxMDI5NmMwM2Y1N2ExZWI1MmVkYmM3ZjAy
YS4uNDNjNjkwMTVkOTlkMTFjMjVjNGM4NmQzMTczMDg3Y2ZjNWIwMDRkOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAKQEAgLTI0NSw2ICsyNDUsOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvblNldFNhbXBsaW5nRmxhZ3MoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNsZWFyU2FtcGxpbmdGbGFncyhFeGVj
U3RhdGUqKTsKICNlbmRpZgogCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblN0YXJ0Qnl0ZWNvZGVQcm9maWxlcihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRW5kQnl0ZWNvZGVQcm9maWxlcihFeGVjU3Rh
dGUqKTsKKwogc3RydWN0IFNjcmlwdCB7CiAgICAgYm9vbCBpc0ZpbGU7CiAgICAgY2hhciogYXJn
dW1lbnQ7CkBAIC0zNzQsNiArMzc3LDkgQEAgcHJvdGVjdGVkOgogICAgICAgICAKICAgICAgICAg
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIElkZW50aWZpZXIoJnZtLCAiREZHVHJ1
ZSIpLCAwLCBmdW5jdGlvbkZhbHNlLCBERkdUcnVlLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24p
OwogICAgICAgICAKKyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJzdGFydEJ5dGVjb2RlUHJvZmls
ZXIiLCBmdW5jdGlvblN0YXJ0Qnl0ZWNvZGVQcm9maWxlciwgMCk7CisgICAgICAgIGFkZEZ1bmN0
aW9uKHZtLCAic3RvcEJ5dGVjb2RlUHJvZmlsZXIiLCBmdW5jdGlvbkVuZEJ5dGVjb2RlUHJvZmls
ZXIsIDApOworICAgICAgICAKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJlZmZlY3RmdWw0MiIs
IGZ1bmN0aW9uRWZmZWN0ZnVsNDIsIDApOwogICAgICAgICAKICAgICAgICAgSlNBcnJheSogYXJy
YXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbEV4ZWMoKSwgMCk7CkBAIC03MzUsNiArNzQx
LDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FZmZlY3RmdWw0MihF
eGVjU3RhdGUqKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoNDIpKTsKIH0K
IAorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU3RhcnRCeXRlY29kZVBy
b2ZpbGVyKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBleGVjLT52bSgpLnN0YXJ0Qnl0ZWNvZGVQ
cm9maWxlcigpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOworfQorCisK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FbmRCeXRlY29kZVByb2ZpbGVy
KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5n
KGV4ZWMsIGV4ZWMtPnZtKCkuc3RvcEJ5dGVjb2RlUHJvZmlsZXIoKSkpOworfQorCisKIC8vIFVz
ZSBTRUggZm9yIFJlbGVhc2UgYnVpbGRzIG9ubHkgdG8gZ2V0IHJpZCBvZiB0aGUgY3Jhc2ggcmVw
b3J0IGRpYWxvZwogLy8gKGx1Y2tpbHkgdGhlIHNhbWUgdGVzdHMgZmFpbCBpbiBSZWxlYXNlIGFu
ZCBEZWJ1ZyBidWlsZHMgc28gZmFyKS4gTmVlZCB0bwogLy8gYmUgaW4gYSBzZXBhcmF0ZSBtYWlu
IGZ1bmN0aW9uIGJlY2F1c2UgdGhlIGpzY21haW4gZnVuY3Rpb24gcmVxdWlyZXMgb2JqZWN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggZGJkZDYwMDcyZDllOTMzM2RmMDJl
MjYxMzMzNmVkY2M5NGFlYWIyNC4uZTU0YzMxYzA5ZjhkMWNiOTc4ODUzMjBhODgxODU2YTgyYzc3
NWFhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtODAsNiArODAsNyBA
QAogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJWTUVudHJ5U2Nv
cGUuaCIKICNpbmNsdWRlICJXZWFrTWFwRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC0yMDQsNiArMjA1LDcgQEAgVk06OlZN
KFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwganNGaW5hbE9iamVjdENs
YXNzSW5mbyhKU0ZpbmFsT2JqZWN0OjppbmZvKCkpCiAgICAgLCBzaXplT2ZMYXN0U2NyYXRjaEJ1
ZmZlcigwKQogICAgICwgZW50cnlTY29wZSgwKQorICAgICwgbV9ieXRlY29kZVByb2ZpbGVyRW5h
YmxlZChmYWxzZSkKICAgICAsIG1fcmVnRXhwQ2FjaGUobmV3IFJlZ0V4cENhY2hlKHRoaXMpKQog
I2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKICAgICAsIG1fcnRUcmFjZUxpc3QobmV3IFJUVHJh
Y2VMaXN0KCkpCkBAIC0zMDMsOCArMzA1LDkgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBU
eXBlIGhlYXBUeXBlKQogICAgIExMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucygqdGhpcyk7
CiAgICAgCiAgICAgaWYgKE9wdGlvbnM6OmVuYWJsZVByb2ZpbGVyKCkpIHsKLSAgICAgICAgbV9w
ZXJCeXRlY29kZVByb2ZpbGVyID0gYWRvcHRQdHIobmV3IFByb2ZpbGVyOjpEYXRhYmFzZSgqdGhp
cykpOwotCisgICAgICAgIHN0YXJ0Qnl0ZWNvZGVQcm9maWxlcigpOworICAgICAgICBBU1NFUlQo
bV9ieXRlY29kZVByb2ZpbGVyRW5hYmxlZCk7CisgICAgICAgIEFTU0VSVChtX3BlckJ5dGVjb2Rl
UHJvZmlsZXIpOwogICAgICAgICBTdHJpbmdQcmludFN0cmVhbSBwYXRoT3V0OwogI2lmICFPUyhX
SU5DRSkKICAgICAgICAgY29uc3QgY2hhciogcHJvZmlsZXJQYXRoID0gZ2V0ZW52KCJKU0NfUFJP
RklMRVJfUEFUSCIpOwpAQCAtMzEzLDYgKzMxNiw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBI
ZWFwVHlwZSBoZWFwVHlwZSkKICNlbmRpZgogICAgICAgICBwYXRoT3V0LnByaW50KCJKU0NQcm9m
aWxlLSIsIGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIi0iLCBtX3BlckJ5dGVjb2RlUHJvZmlsZXIt
PmRhdGFiYXNlSUQoKSwgIi5qc29uIik7CiAgICAgICAgIG1fcGVyQnl0ZWNvZGVQcm9maWxlci0+
cmVnaXN0ZXJUb1NhdmVBdEV4aXQocGF0aE91dC50b0NTdHJpbmcoKS5kYXRhKCkpOworICAgICAg
ICAKICAgICB9CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTM5Myw2ICszOTcsNDYgQEAgVk06
On5WTSgpCiAjZW5kaWYKIH0KIAordm9pZCBWTTo6aW5pdGlhbGl6ZUJ5dGVjb2RlUHJvZmlsZXIo
KQoreworICAgIEFTU0VSVChtX2J5dGVjb2RlUHJvZmlsZXJFbmFibGVkKTsKKyAgICBpZiAobV9w
ZXJCeXRlY29kZVByb2ZpbGVyKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9wZXJCeXRl
Y29kZVByb2ZpbGVyID0gYWRvcHRQdHIobmV3IFByb2ZpbGVyOjpEYXRhYmFzZSgqdGhpcykpOwor
fQorCit2b2lkIFZNOjpzdGFydEJ5dGVjb2RlUHJvZmlsZXIoKQoreworICAgIGlmIChtX2J5dGVj
b2RlUHJvZmlsZXJFbmFibGVkKQorICAgICAgICByZXR1cm47CisgICAgbV9ieXRlY29kZVByb2Zp
bGVyRW5hYmxlZCA9IHRydWU7CisgICAgaWYgKGVudHJ5U2NvcGUpCisgICAgICAgIGVudHJ5U2Nv
cGUtPnNldFJlY29tcGlsYXRpb25OZWVkZWQodHJ1ZSk7CisgICAgZWxzZQorICAgICAgICBpbml0
aWFsaXplQnl0ZWNvZGVQcm9maWxlcigpOworICAgIAorfQorCit2b2lkIFZNOjpkZXN0cm95Qnl0
ZWNvZGVQcm9maWxlcigpCit7CisgICAgQVNTRVJUKCFtX2J5dGVjb2RlUHJvZmlsZXJFbmFibGVk
KTsKKyAgICBtX3BlckJ5dGVjb2RlUHJvZmlsZXIuY2xlYXIoKTsKK30KKworU3RyaW5nIFZNOjpz
dG9wQnl0ZWNvZGVQcm9maWxlcigpCit7CisgICAgbV9ieXRlY29kZVByb2ZpbGVyRW5hYmxlZCA9
IGZhbHNlOworICAgIGlmICghbV9wZXJCeXRlY29kZVByb2ZpbGVyKQorICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CisgICAgU3RyaW5nIHJlc3VsdCA9IG1fcGVyQnl0ZWNvZGVQcm9maWxlci0+dG9K
U09OKCk7CisgICAgaWYgKGVudHJ5U2NvcGUpCisgICAgICAgIGVudHJ5U2NvcGUtPnNldFJlY29t
cGlsYXRpb25OZWVkZWQodHJ1ZSk7CisgICAgZWxzZQorICAgICAgICBkZXN0cm95Qnl0ZWNvZGVQ
cm9maWxlcigpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIFBhc3NSZWZQdHI8Vk0+IFZNOjpj
cmVhdGVDb250ZXh0R3JvdXAoSGVhcFR5cGUgaGVhcFR5cGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBWTShBUElDb250ZXh0R3JvdXAsIGhlYXBUeXBlKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAppbmRleCBlNGI3MTA0ZmRlZTBkOTkxNWVlYjBjODg0ZjE2YjVjMTk2OWU1YzUw
Li5iYWVlMmMyZDA4NTQ3NDkwMDRkYWNhOTM1YzI2MDUxNjk3NzNlYmM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTQ1MCw2ICs0NTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgU3RyaW5nIGNhY2hlZERhdGVTdHJpbmc7CiAgICAgICAgIGRvdWJsZSBjYWNoZWREYXRl
U3RyaW5nVmFsdWU7CiAKKyAgICAgICAgYm9vbCBtX2J5dGVjb2RlUHJvZmlsZXJFbmFibGVkOwog
ICAgICAgICBPd25QdHI8UHJvZmlsZXI6OkRhdGFiYXNlPiBtX3BlckJ5dGVjb2RlUHJvZmlsZXI7
CiAgICAgICAgIFJlZlB0cjxUeXBlZEFycmF5Q29udHJvbGxlcj4gbV90eXBlZEFycmF5Q29udHJv
bGxlcjsKICAgICAgICAgUmVnRXhwQ2FjaGUqIG1fcmVnRXhwQ2FjaGU7CkBAIC01MDUsNiArNTA2
LDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFk
ZEltcHVyZVByb3BlcnR5KGNvbnN0IFN0cmluZyYpOwogICAgICAgICAKICAgICAgICAgQnVpbHRp
bkV4ZWN1dGFibGVzKiBidWlsdGluRXhlY3V0YWJsZXMoKSB7IHJldHVybiBtX2J1aWx0aW5FeGVj
dXRhYmxlcy5nZXQoKTsgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBwcmVwYXJlUHJvZmlsZXJJ
Zk5lY2Vzc2FyeSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX3BlckJ5dGVjb2RlUHJv
ZmlsZXIgJiYgIW1fYnl0ZWNvZGVQcm9maWxlckVuYWJsZWQpCisgICAgICAgICAgICAgICAgZGVz
dHJveUJ5dGVjb2RlUHJvZmlsZXIoKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG1fYnl0ZWNvZGVQ
cm9maWxlckVuYWJsZWQgJiYgIW1fcGVyQnl0ZWNvZGVQcm9maWxlcikKKyAgICAgICAgICAgICAg
ICBpbml0aWFsaXplQnl0ZWNvZGVQcm9maWxlcigpOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHN0YXJ0Qnl0ZWNvZGVQcm9maWxlcigpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgc3RvcEJ5dGVjb2RlUHJvZmlsZXIoKTsKIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CkBAIC01MTYsNyArNTI4LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgY3JlYXRl
TmF0aXZlVGh1bmsoKTsKIAogICAgICAgICB2b2lkIHVwZGF0ZVN0YWNrTGltaXQoKTsKLQorICAg
ICAgICB2b2lkIGluaXRpYWxpemVCeXRlY29kZVByb2ZpbGVyKCk7CisgICAgICAgIHZvaWQgZGVz
dHJveUJ5dGVjb2RlUHJvZmlsZXIoKTsKKyAgICAgICAgCiAjaWYgRU5BQkxFKEFTU0VNQkxFUikK
ICAgICAgICAgYm9vbCBtX2NhblVzZUFzc2VtYmxlcjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAKaW5kZXggYTVlMjU5ZjMwMDBmNDIx
NWRlM2JhOTI4Yjk2ZGM1NTQyYjNkYWNjNS4uNTAyMWMyNTYwMTRhYTgyNmE1MGE0YWJjODAzYWJk
MWU2YjY1ZjE0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1F
bnRyeVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5
U2NvcGUuY3BwCkBAIC00OSw2ICs0OSw3IEBAIFZNRW50cnlTY29wZTo6Vk1FbnRyeVNjb3BlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAgICAgLy8gUmVzZXQgdGhl
IGRhdGUgY2FjaGUgYmV0d2VlbiBKUyBpbnZvY2F0aW9ucyB0byBmb3JjZSB0aGUgVk0gdG8KICAg
ICAgICAgLy8gb2JzZXJ2ZSB0aW1lIHhvbmUgY2hhbmdlcy4KICAgICAgICAgdm0ucmVzZXREYXRl
Q2FjaGUoKTsKKyAgICAgICAgdm0ucHJlcGFyZVByb2ZpbGVySWZOZWNlc3NhcnkoKTsKICAgICB9
CiAKICAgICAvLyBDbGVhciB0aGUgY2FwdHVyZWQgZXhjZXB0aW9uIHN0YWNrIGJldHdlZW4gZW50
cmllcwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224522</attachid>
            <date>2014-02-18 10:58:07 -0800</date>
            <delta_ts>2014-02-18 11:07:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128941-20140218105800.patch</filename>
            <type>text/plain</type>
            <size>7441</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0MjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ODA4ZDc2MmZhMDUxNjcyNDhlY2I0YjBiNzY4MmRhYmY2OTViYmVlLi5kNmE4NDI0YmU0YzQ0NDMw
NGJlYjVmZTA2ZDY4NjFiNTg2YzYwZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxNC0wMi0xNyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gc3RhcnQgYW5kIHN0b3AgdGhlIGJ5dGVjb2Rl
IHNhbXBsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjg5NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZWZhY3RvciB0aGUgYnl0ZWNvZGUgc2FtcGxlciBsb2dpYyB0byBhbGxvdyB1cyB0byBzdGFy
dCBhbmQgc3RvcAorICAgICAgICBwcm9maWxpbmcgc2Vzc2lvbnMgZHluYW1pY2FsbHkuCisKKyAg
ICAgICAgQSBmYWlybHkgc2ltcGxlIEFQSSB0aGF0IGNhbiBiZSB1c2VkIHRvIHN0YXJ0IHRoZSBi
eXRlY29kZSBwcm9maWxlciwKKyAgICAgICAgd2hpY2ggZm9yY2VzIHRoZSBWTSB0byBkaXNjYXJk
IGFsbCBjb2RlIGFuZCBpbnN0YW50aWF0ZSBhIHByb2ZpbGVyIGF0CisgICAgICAgIHRoZSBmaXJz
dCBwb3NzaWJsZSBWTSBlbnRyeS4gV2hlbiB0aGUgcHJvZmlsaW5nIGlzIHN0b3BwZWQgd2Ugc2Vy
aWFsaXNlCisgICAgICAgIHRoZSBwcm9maWxlIHRvIGEgSlNPTiBlbmNvZGVkIHN0cmluZywgYW5k
IHJlbW92ZSB0aGUgcHJvZmlsZXIgYW5kCisgICAgICAgIGRpc2NhcmQgdGhlIGNvZGUgYWdhaW4u
CisKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChmdW5jdGlvblN0YXJ0Qnl0ZWNvZGVQcm9maWxlcik6CisgICAgICAg
IChmdW5jdGlvbkdldEN1cnJlbnRCeXRlY29kZVByb2ZpbGUpOgorICAgICAgICAoZnVuY3Rpb25T
dG9wQnl0ZWNvZGVQcm9maWxlcik6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAg
IChKU0M6OlZNOjpWTSk6CisgICAgICAgIChKU0M6OlZNOjpzdGFydEJ5dGVjb2RlUHJvZmlsZXIp
OgorICAgICAgICAoSlNDOjpWTTo6ZGVnZXRDdXJyZW50Qnl0ZWNvZGVQcm9maWxlKToKKyAgICAg
ICAgKEpTQzo6Vk06OnN0b3BCeXRlY29kZVByb2ZpbGVyKToKKyAgICAgICAgKiBydW50aW1lL1ZN
Lmg6CisKIDIwMTQtMDItMTcgIFNlcmdpbyBDb3JyZWlhICA8c2VyZ2lvLmNvcnJlaWFAb3BlbmJv
c3NhLm9yZz4KIAogICAgICAgICBSZXBsYWNlIHVzZXMgb2YgUGFzc093blB0ci9Pd25QdHIgd2l0
aCBzdGQ6OnVuaXF1ZV9wdHIgaW4gV2ViQ29yZS9pbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
aW5kZXggZjU3Mjc3MGM3ODllOTAxMDI5NmMwM2Y1N2ExZWI1MmVkYmM3ZjAyYS4uNzQ2OGVhNzk3
YTc4ZjY4NWVmYzhiMDk1ZDBkNjVlN2FlMDcwMTUxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAg
LTI0NSw2ICsyNDUsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25TZXRTYW1wbGluZ0ZsYWdzKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DbGVhclNhbXBsaW5nRmxhZ3MoRXhlY1N0YXRlKik7CiAj
ZW5kaWYKIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TdGFy
dEJ5dGVjb2RlUHJvZmlsZXIoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkdldEN1cnJlbnRCeXRlY29kZVByb2ZpbGUoRXhlY1N0YXRlKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblN0b3BCeXRlY29k
ZVByb2ZpbGVyKEV4ZWNTdGF0ZSopOworCiBzdHJ1Y3QgU2NyaXB0IHsKICAgICBib29sIGlzRmls
ZTsKICAgICBjaGFyKiBhcmd1bWVudDsKQEAgLTM3NCw2ICszNzgsMTAgQEAgcHJvdGVjdGVkOgog
ICAgICAgICAKICAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIElkZW50
aWZpZXIoJnZtLCAiREZHVHJ1ZSIpLCAwLCBmdW5jdGlvbkZhbHNlLCBERkdUcnVlLCBEb250RW51
bSB8IEpTQzo6RnVuY3Rpb24pOwogICAgICAgICAKKyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJz
dGFydEJ5dGVjb2RlUHJvZmlsZXIiLCBmdW5jdGlvblN0YXJ0Qnl0ZWNvZGVQcm9maWxlciwgMCk7
CisgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZ2V0Q3VycmVudEJ5dGVjb2RlUHJvZmlsZSIsIGZ1
bmN0aW9uR2V0Q3VycmVudEJ5dGVjb2RlUHJvZmlsZSwgMCk7CisgICAgICAgIGFkZEZ1bmN0aW9u
KHZtLCAic3RvcEJ5dGVjb2RlUHJvZmlsZXIiLCBmdW5jdGlvblN0b3BCeXRlY29kZVByb2ZpbGVy
LCAwKTsKKyAgICAgICAgCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZWZmZWN0ZnVsNDIiLCBm
dW5jdGlvbkVmZmVjdGZ1bDQyLCAwKTsKICAgICAgICAgCiAgICAgICAgIEpTQXJyYXkqIGFycmF5
ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxFeGVjKCksIDApOwpAQCAtNzM1LDYgKzc0Mywz
NCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRWZmZWN0ZnVsNDIoRXhl
Y1N0YXRlKikKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKDQyKSk7CiB9CiAK
K2VudW0gQnl0ZWNvZGVQcm9maWxlclN0YXRlIHsKKyAgICBCeXRlY29kZVByb2ZpbGVyRGlzYWJs
ZWQsCisgICAgQnl0ZWNvZGVQcm9maWxlclN0YXJ0aW5nLAorICAgIEJ5dGVjb2RlUHJvZmlsZXJS
dW5uaW5nLAorICAgIEJ5dGVjb2RlUHJvZmlsZXJTdG9wcGluZworfTsKK0J5dGVjb2RlUHJvZmls
ZXJTdGF0ZSBzX2J5dGVjb2RlUHJvZmlsZXJTdGF0ZTsKKworCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uU3RhcnRCeXRlY29kZVByb2ZpbGVyKEV4ZWNTdGF0ZSopCit7Cisg
ICAgaWYgKHNfYnl0ZWNvZGVQcm9maWxlclN0YXRlID09IEJ5dGVjb2RlUHJvZmlsZXJEaXNhYmxl
ZCkKKyAgICAgICAgc19ieXRlY29kZVByb2ZpbGVyU3RhdGUgPSBCeXRlY29kZVByb2ZpbGVyU3Rh
cnRpbmc7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldEN1cnJlbnRCeXRlY29kZVBy
b2ZpbGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNT
dHJpbmcoZXhlYywgZXhlYy0+dm0oKS5nZXRDdXJyZW50Qnl0ZWNvZGVQcm9maWxlKCkpKTsKK30K
KworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblN0b3BCeXRlY29kZVByb2Zp
bGVyKEV4ZWNTdGF0ZSopCit7CisgICAgc19ieXRlY29kZVByb2ZpbGVyU3RhdGUgPSBCeXRlY29k
ZVByb2ZpbGVyU3RvcHBpbmc7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKK30KKworCiAvLyBVc2UgU0VIIGZvciBSZWxlYXNlIGJ1aWxkcyBvbmx5IHRvIGdldCBy
aWQgb2YgdGhlIGNyYXNoIHJlcG9ydCBkaWFsb2cKIC8vIChsdWNraWx5IHRoZSBzYW1lIHRlc3Rz
IGZhaWwgaW4gUmVsZWFzZSBhbmQgRGVidWcgYnVpbGRzIHNvIGZhcikuIE5lZWQgdG8KIC8vIGJl
IGluIGEgc2VwYXJhdGUgbWFpbiBmdW5jdGlvbiBiZWNhdXNlIHRoZSBqc2NtYWluIGZ1bmN0aW9u
IHJlcXVpcmVzIG9iamVjdApAQCAtOTAyLDYgKzkzOCwxMyBAQCBzdGF0aWMgdm9pZCBydW5JbnRl
cmFjdGl2ZShHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAKICAgICBib29sIHNob3Vs
ZFF1aXQgPSBmYWxzZTsKICAgICB3aGlsZSAoIXNob3VsZFF1aXQpIHsKKyAgICAgICAgaWYgKHNf
Ynl0ZWNvZGVQcm9maWxlclN0YXRlID09IEJ5dGVjb2RlUHJvZmlsZXJTdGFydGluZykgeworICAg
ICAgICAgICAgZ2xvYmFsT2JqZWN0LT52bSgpLnN0YXJ0Qnl0ZWNvZGVQcm9maWxlcigpOworICAg
ICAgICAgICAgc19ieXRlY29kZVByb2ZpbGVyU3RhdGUgPSBCeXRlY29kZVByb2ZpbGVyUnVubmlu
ZzsKKyAgICAgICAgfSBlbHNlIGlmIChzX2J5dGVjb2RlUHJvZmlsZXJTdGF0ZSA9PSBCeXRlY29k
ZVByb2ZpbGVyU3RvcHBpbmcpIHsKKyAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+dm0oKS5zdG9w
Qnl0ZWNvZGVQcm9maWxlcigpOworICAgICAgICAgICAgc19ieXRlY29kZVByb2ZpbGVyU3RhdGUg
PSBCeXRlY29kZVByb2ZpbGVyRGlzYWJsZWQ7CisgICAgICAgIH0KICNpZiBIQVZFKFJFQURMSU5F
KSAmJiAhUlVOTklOR19GUk9NX1hDT0RFCiAgICAgICAgIFBhcnNlckVycm9yIGVycm9yOwogICAg
ICAgICBTdHJpbmcgc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4
IGRiZGQ2MDA3MmQ5ZTkzMzNkZjAyZTI2MTMzMzZlZGNjOTRhZWFiMjQuLjgyNzkxOTZlM2YwM2Ez
ZWQ1YTRjZmQ2M2UzMzM5ZmJiMzc1N2QxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKQEAgLTgwLDYgKzgwLDcgQEAKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgi
CisjaW5jbHVkZSAiVk1FbnRyeVNjb3BlLmgiCiAjaW5jbHVkZSAiV2Vha01hcERhdGEuaCIKICNp
bmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAt
MzAzLDggKzMwNCw4IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkK
ICAgICBMTEludDo6RGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoKnRoaXMpOwogICAgIAogICAgIGlm
IChPcHRpb25zOjplbmFibGVQcm9maWxlcigpKSB7Ci0gICAgICAgIG1fcGVyQnl0ZWNvZGVQcm9m
aWxlciA9IGFkb3B0UHRyKG5ldyBQcm9maWxlcjo6RGF0YWJhc2UoKnRoaXMpKTsKLQorICAgICAg
ICBzdGFydEJ5dGVjb2RlUHJvZmlsZXIoKTsKKyAgICAgICAgQVNTRVJUKG1fcGVyQnl0ZWNvZGVQ
cm9maWxlcik7CiAgICAgICAgIFN0cmluZ1ByaW50U3RyZWFtIHBhdGhPdXQ7CiAjaWYgIU9TKFdJ
TkNFKQogICAgICAgICBjb25zdCBjaGFyKiBwcm9maWxlclBhdGggPSBnZXRlbnYoIkpTQ19QUk9G
SUxFUl9QQVRIIik7CkBAIC0zMTMsNiArMzE0LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhl
YXBUeXBlIGhlYXBUeXBlKQogI2VuZGlmCiAgICAgICAgIHBhdGhPdXQucHJpbnQoIkpTQ1Byb2Zp
bGUtIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAiLSIsIG1fcGVyQnl0ZWNvZGVQcm9maWxlci0+
ZGF0YWJhc2VJRCgpLCAiLmpzb24iKTsKICAgICAgICAgbV9wZXJCeXRlY29kZVByb2ZpbGVyLT5y
ZWdpc3RlclRvU2F2ZUF0RXhpdChwYXRoT3V0LnRvQ1N0cmluZygpLmRhdGEoKSk7CisgICAgICAg
IAogICAgIH0KIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMzkzLDYgKzM5NSwzMSBAQCBWTTo6
flZNKCkKICNlbmRpZgogfQogCit2b2lkIFZNOjpzdGFydEJ5dGVjb2RlUHJvZmlsZXIoKQorewor
ICAgIEFTU0VSVCghZW50cnlTY29wZSk7CisgICAgaWYgKG1fcGVyQnl0ZWNvZGVQcm9maWxlcikK
KyAgICAgICAgcmV0dXJuOworICAgIG1fcGVyQnl0ZWNvZGVQcm9maWxlciA9IGFkb3B0UHRyKG5l
dyBQcm9maWxlcjo6RGF0YWJhc2UoKnRoaXMpKTsKKyAgICBkaXNjYXJkQWxsQ29kZSgpOworfQor
CitTdHJpbmcgVk06OmdldEN1cnJlbnRCeXRlY29kZVByb2ZpbGUoKQoreworICAgIGlmICghbV9w
ZXJCeXRlY29kZVByb2ZpbGVyKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJu
IG1fcGVyQnl0ZWNvZGVQcm9maWxlci0+dG9KU09OKCk7Cit9CisKK3ZvaWQgVk06OnN0b3BCeXRl
Y29kZVByb2ZpbGVyKCkKK3sKKyAgICBBU1NFUlQoIWVudHJ5U2NvcGUpOworICAgIGlmICghbV9w
ZXJCeXRlY29kZVByb2ZpbGVyKQorICAgICAgICByZXR1cm47CisgICAgZGlzY2FyZEFsbENvZGUo
KTsKKyAgICBtX3BlckJ5dGVjb2RlUHJvZmlsZXIuY2xlYXIoKTsKK30KKwogUGFzc1JlZlB0cjxW
TT4gVk06OmNyZWF0ZUNvbnRleHRHcm91cChIZWFwVHlwZSBoZWFwVHlwZSkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFZNKEFQSUNvbnRleHRHcm91cCwgaGVhcFR5cGUpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCmluZGV4IGU0YjcxMDRmZGVlMGQ5OTE1ZWViMGM4ODRmMTZiNWMx
OTY5ZTVjNTAuLmU3OWE5MGYxMDBiZGMzZmQ0MDcxOTA1MjY0YzRkNmZkZjZiNzJhYTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNTA1LDYgKzUwNSwxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRJbXB1cmVQcm9wZXJ0eShj
b25zdCBTdHJpbmcmKTsKICAgICAgICAgCiAgICAgICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyogYnVp
bHRpbkV4ZWN1dGFibGVzKCkgeyByZXR1cm4gbV9idWlsdGluRXhlY3V0YWJsZXMuZ2V0KCk7IH0K
KyAgICAgICAgCisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RhcnRCeXRlY29kZVBy
b2ZpbGVyKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBnZXRDdXJyZW50Qnl0
ZWNvZGVQcm9maWxlKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RvcEJ5dGVj
b2RlUHJvZmlsZXIoKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CkBAIC01MTYsNyArNTIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQgY3JlYXRlTmF0aXZlVGh1bmsoKTsKIAogICAgICAgICB2b2lkIHVwZGF0ZVN0
YWNrTGltaXQoKTsKLQorICAgICAgICAKICNpZiBFTkFCTEUoQVNTRU1CTEVSKQogICAgICAgICBi
b29sIG1fY2FuVXNlQXNzZW1ibGVyOwogI2VuZGlmCg==
</data>
<flag name="review"
          id="248606"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>