<?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>104630</bug_id>
          
          <creation_ts>2012-12-10 21:51:58 -0800</creation_ts>
          <short_desc>Memory instrumentation: make sure each edge is reported only once</short_desc>
          <delta_ts>2012-12-11 00:34:02 -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>Web Inspector (Deprecated)</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>apavlov</cc>
    
    <cc>benjamin</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>788027</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-10 21:51:58 -0800</bug_when>
    <thetext>In case of class B : public A we may come to object B first by B* and later by A* in which case all outgoing links will be reported twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788034</commentid>
    <comment_count>1</comment_count>
      <attachid>178713</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-10 21:56:55 -0800</bug_when>
    <thetext>Created attachment 178713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788036</commentid>
    <comment_count>2</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-10 21:57:40 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=178713) [details]
&gt; Patch

Exported symbol lists probably need to be updated to make linker happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788050</commentid>
    <comment_count>3</comment_count>
      <attachid>178713</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-12-10 22:18:03 -0800</bug_when>
    <thetext>Comment on attachment 178713
Patch

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

&gt; Source/WTF/wtf/MemoryInstrumentation.cpp:91
&gt; +    callReportMemoryUsage(&amp;memoryObjectInfo);
&gt; +
&gt; +    const void* realAddress = memoryObjectInfo.reportedPointer();

realAddress could be a return value for callReportMemoryUsage

&gt; Source/WTF/wtf/MemoryInstrumentation.cpp:115
&gt; +    if (!m_memoryObjectInfo-&gt;objectSize()) {
&gt; +        const void* instrumentedPointer = m_memoryObjectInfo-&gt;reportedPointer();
&gt; +        if (instrumentedPointer != objectAddress &amp;&amp; instrumentedPointer &amp;&amp; m_memoryInstrumentation-&gt;visited(objectAddress))
&gt; +            m_memoryObjectInfo-&gt;setAlreadyVisited();
&gt; +    }

I&apos;d move this logic into MemoryObjectInfo::reportObjectInfo method</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788055</commentid>
    <comment_count>4</comment_count>
      <attachid>178713</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-10 22:30:49 -0800</bug_when>
    <thetext>Comment on attachment 178713
Patch

Attachment 178713 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15257492</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788058</commentid>
    <comment_count>5</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-10 22:34:07 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 178713 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178713&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/MemoryInstrumentation.cpp:91
&gt; &gt; +    callReportMemoryUsage(&amp;memoryObjectInfo);
&gt; &gt; +
&gt; &gt; +    const void* realAddress = memoryObjectInfo.reportedPointer();
&gt; 
&gt; realAddress could be a return value for callReportMemoryUsage
&gt; 
The current approach seems more clear. Returning real address from callReportMemoryUsage would require access to memoryObjectInfo.reportedPointer() and MemoryObjectInfo definition is not available there. Alternative approach would be to return real address from reportMemoryUsage free function but that would touch too many files and I don&apos;t think it is justified.


&gt; &gt; Source/WTF/wtf/MemoryInstrumentation.cpp:115
&gt; &gt; +    if (!m_memoryObjectInfo-&gt;objectSize()) {
&gt; &gt; +        const void* instrumentedPointer = m_memoryObjectInfo-&gt;reportedPointer();
&gt; &gt; +        if (instrumentedPointer != objectAddress &amp;&amp; instrumentedPointer &amp;&amp; m_memoryInstrumentation-&gt;visited(objectAddress))
&gt; &gt; +            m_memoryObjectInfo-&gt;setAlreadyVisited();
&gt; &gt; +    }
&gt; 
&gt; I&apos;d move this logic into MemoryObjectInfo::reportObjectInfo method

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788059</commentid>
    <comment_count>6</comment_count>
      <attachid>178722</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-10 22:41:20 -0800</bug_when>
    <thetext>Created attachment 178722
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788071</commentid>
    <comment_count>7</comment_count>
      <attachid>178722</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-10 23:12:05 -0800</bug_when>
    <thetext>Comment on attachment 178722
Patch

Attachment 178722 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15272122</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788125</commentid>
    <comment_count>8</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-11 00:34:02 -0800</bug_when>
    <thetext>Committed r137261: &lt;http://trac.webkit.org/changeset/137261&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178713</attachid>
            <date>2012-12-10 21:56:55 -0800</date>
            <delta_ts>2012-12-10 22:41:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104630-20121211095416.patch</filename>
            <type>text/plain</type>
            <size>17200</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE1MGY0NTQ2OWNkNmM2YzBkNDRkMjUx
YjdhNzNlZTUyNjg0MzQyYmQuLmU0OGYwZjZhYzNkZWZmNDRlNmUzOTM1MDAzMjkxOWNiNDI5MGJm
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTItMTItMTAgIFl1cnkgU2VtaWtoYXRza3kgIDx5
dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWVtb3J5IGluc3RydW1lbnRhdGlvbjogbWFr
ZSBzdXJlIGVhY2ggZWRnZSBpcyByZXBvcnRlZCBvbmx5IG9uY2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDYzMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ugc3VyZSB0aGF0IG91dGdvaW5nIGVk
Z2VzIGFyZSByZXBvcnRlZCBvbmx5IG9uY2UgaWYgd2UgY29tZSB0byB0aGUgc2FtZQorICAgICAg
ICBvYmplY3QgdHdpY2U6IGZpcnN0IGJ5IGFuIGFkZHJlc3Mgb2YgYSBiYXNlIGNsYXNzIGFuZCB0
aGVuIGJ5IGEgcmVhbCBhZGRyZXNzCisgICAgICAgIG9mIHRoZSBvYmplY3QuCisKKyAgICAgICAg
KiB3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6TWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjpNZW1vcnlJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV1RGOjpNZW1v
cnlJbnN0cnVtZW50YXRpb246OnJlcG9ydExpbmtUb0J1ZmZlcik6CisgICAgICAgIChXVEY6Ok1l
bW9yeUluc3RydW1lbnRhdGlvbjo6SW5zdHJ1bWVudGVkUG9pbnRlckJhc2U6Okluc3RydW1lbnRl
ZFBvaW50ZXJCYXNlKToKKyAgICAgICAgKFdURjo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpJbnN0
cnVtZW50ZWRQb2ludGVyQmFzZTo6cHJvY2Vzcyk6CisgICAgICAgIChXVEY6Ok1lbW9yeUNsYXNz
SW5mbzo6aW5pdCk6CisgICAgICAgIChXVEY6Ok1lbW9yeUNsYXNzSW5mbzo6YWRkUmF3QnVmZmVy
KToKKyAgICAgICAgKFdURjo6TWVtb3J5Q2xhc3NJbmZvOjphZGRQcml2YXRlQnVmZmVyKToKKyAg
ICAgICAgKiB3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChJbnN0cnVtZW50
ZWRQb2ludGVyQmFzZSk6CisgICAgICAgIChNZW1vcnlJbnN0cnVtZW50YXRpb24pOgorICAgICAg
ICAoSW5zdHJ1bWVudGVkUG9pbnRlcik6CisgICAgICAgIChXVEY6Ok1lbW9yeUNsYXNzSW5mbzo6
TWVtb3J5Q2xhc3NJbmZvKToKKyAgICAgICAgKFdURjo6TWVtb3J5Q2xhc3NJbmZvOjphZGRNZW1i
ZXIpOgorICAgICAgICAoTWVtb3J5Q2xhc3NJbmZvKToKKyAgICAgICAgKFdURjo6OjpJbnN0cnVt
ZW50ZWRQb2ludGVyKToKKyAgICAgICAgKFdURjo6OjpjYWxsUmVwb3J0TWVtb3J5VXNhZ2UpOgor
ICAgICAgICAqIHd0Zi9NZW1vcnlPYmplY3RJbmZvLmg6CisgICAgICAgIChXVEY6Ok1lbW9yeU9i
amVjdEluZm86Ok1lbW9yeU9iamVjdEluZm8pOgorICAgICAgICAoV1RGOjpNZW1vcnlPYmplY3RJ
bmZvOjpmaXJzdFZpc2l0KToKKyAgICAgICAgKFdURjo6TWVtb3J5T2JqZWN0SW5mbzo6Y2xhc3NO
YW1lKToKKyAgICAgICAgKFdURjo6TWVtb3J5T2JqZWN0SW5mbzo6bmFtZSk6CisgICAgICAgIChX
VEY6Ok1lbW9yeU9iamVjdEluZm86OnNldEFscmVhZHlWaXNpdGVkKToKKyAgICAgICAgKE1lbW9y
eU9iamVjdEluZm8pOgorCiAyMDEyLTEyLTA4ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3
ZWJraXQub3JnPgogCiAgICAgICAgIENvbXBpbGluZyBXVEYgb3V0c2lkZSBvZiBXZWJLaXQgZmFp
bGVkIG9uIFdpbmRvd3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1l
bnRhdGlvbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwCmlu
ZGV4IGRjOWViZTJjOWU2NzEyZDgzMGE4OWQyMTJlZmYzOWZkYjU2NzJhOTAuLjhlNDg0MGI3NGNj
MWE0ZjBkODlhYzFhOTMzODQzYmU0YmMwNjQ1MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L01lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmNwcApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpNZW1vcnlJbnN0cnVtZW50YXRpb24oTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uQ2xpZW50KiBjbGllbnQpCiAgICAgOiBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX3Jv
b3RPYmplY3RJbmZvKGFkb3B0UHRyKG5ldyBNZW1vcnlPYmplY3RJbmZvKHRoaXMsIDApKSkKKyAg
ICAsIG1fcm9vdE9iamVjdEluZm8oYWRvcHRQdHIobmV3IE1lbW9yeU9iamVjdEluZm8odGhpcywg
MCwgMCkpKQogewogfQogCkBAIC02NywxNCArNjcsMTUgQEAgdm9pZCBNZW1vcnlJbnN0cnVtZW50
YXRpb246OmNhbGxSZXBvcnRPYmplY3RJbmZvKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVj
dEkKIAogdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydExpbmtUb0J1ZmZlcihjb25z
dCB2b2lkKiBvd25lciwgY29uc3Qgdm9pZCogYnVmZmVyLCBNZW1vcnlPYmplY3RUeXBlIG93bmVy
T2JqZWN0VHlwZSwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIG5vZGVOYW1lLCBjb25zdCBjaGFy
KiBlZGdlTmFtZSkKIHsKLSAgICBNZW1vcnlPYmplY3RJbmZvIG1lbW9yeU9iamVjdEluZm8odGhp
cywgb3duZXJPYmplY3RUeXBlKTsKKyAgICBNZW1vcnlPYmplY3RJbmZvIG1lbW9yeU9iamVjdElu
Zm8odGhpcywgb3duZXJPYmplY3RUeXBlLCAwKTsKICAgICBtZW1vcnlPYmplY3RJbmZvLnJlcG9y
dE9iamVjdEluZm8oYnVmZmVyLCBvd25lck9iamVjdFR5cGUsIHNpemUpOwogICAgIG1lbW9yeU9i
amVjdEluZm8uc2V0TmFtZShub2RlTmFtZSk7CiAgICAgbV9jbGllbnQtPnJlcG9ydExlYWYob3du
ZXIsIG1lbW9yeU9iamVjdEluZm8sIGVkZ2VOYW1lKTsKIH0KIAotTWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjpJbnN0cnVtZW50ZWRQb2ludGVyQmFzZTo6SW5zdHJ1bWVudGVkUG9pbnRlckJhc2UoTWVt
b3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykKLSAgICA6IG1fb3duZXJPYmplY3RUeXBl
KG1lbW9yeU9iamVjdEluZm8tPm9iamVjdFR5cGUoKSkKK01lbW9yeUluc3RydW1lbnRhdGlvbjo6
SW5zdHJ1bWVudGVkUG9pbnRlckJhc2U6Okluc3RydW1lbnRlZFBvaW50ZXJCYXNlKE1lbW9yeU9i
amVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8sIGNvbnN0IHZvaWQqIHBvaW50ZXIpCisgICAgOiBt
X3BvaW50ZXIocG9pbnRlcikKKyAgICAsIG1fb3duZXJPYmplY3RUeXBlKG1lbW9yeU9iamVjdElu
Zm8tPm9iamVjdFR5cGUoKSkKIHsKICNpZiBERUJVR19QT0lOVEVSX0lOU1RSVU1FTlRBVElPTgog
ICAgIG1fY2FsbFN0YWNrU2l6ZSA9IHNfbWF4Q2FsbFN0YWNrU2l6ZTsKQEAgLTg0LDE5ICs4NSwx
OSBAQCBNZW1vcnlJbnN0cnVtZW50YXRpb246Okluc3RydW1lbnRlZFBvaW50ZXJCYXNlOjpJbnN0
cnVtZW50ZWRQb2ludGVyQmFzZShNZW1vcnlPYgogCiB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlv
bjo6SW5zdHJ1bWVudGVkUG9pbnRlckJhc2U6OnByb2Nlc3MoTWVtb3J5SW5zdHJ1bWVudGF0aW9u
KiBtZW1vcnlJbnN0cnVtZW50YXRpb24pCiB7Ci0gICAgTWVtb3J5T2JqZWN0SW5mbyBtZW1vcnlP
YmplY3RJbmZvKG1lbW9yeUluc3RydW1lbnRhdGlvbiwgbV9vd25lck9iamVjdFR5cGUpOwotICAg
IGNvbnN0IHZvaWQqIG9yaWdpbmFsUG9pbnRlciA9IGNhbGxSZXBvcnRNZW1vcnlVc2FnZSgmbWVt
b3J5T2JqZWN0SW5mbyk7Ci0KLSAgICBjb25zdCB2b2lkKiBwb2ludGVyID0gbWVtb3J5T2JqZWN0
SW5mby5yZXBvcnRlZFBvaW50ZXIoKTsKLSAgICBBU1NFUlQocG9pbnRlcik7Ci0gICAgaWYgKHBv
aW50ZXIgIT0gb3JpZ2luYWxQb2ludGVyKSB7Ci0gICAgICAgIG1lbW9yeUluc3RydW1lbnRhdGlv
bi0+bV9jbGllbnQtPnJlcG9ydEJhc2VBZGRyZXNzKG9yaWdpbmFsUG9pbnRlciwgcG9pbnRlcik7
Ci0gICAgICAgIGlmIChtZW1vcnlJbnN0cnVtZW50YXRpb24tPnZpc2l0ZWQocG9pbnRlcikpCisg
ICAgTWVtb3J5T2JqZWN0SW5mbyBtZW1vcnlPYmplY3RJbmZvKG1lbW9yeUluc3RydW1lbnRhdGlv
biwgbV9vd25lck9iamVjdFR5cGUsIG1fcG9pbnRlcik7CisgICAgY2FsbFJlcG9ydE1lbW9yeVVz
YWdlKCZtZW1vcnlPYmplY3RJbmZvKTsKKworICAgIGNvbnN0IHZvaWQqIHJlYWxBZGRyZXNzID0g
bWVtb3J5T2JqZWN0SW5mby5yZXBvcnRlZFBvaW50ZXIoKTsKKyAgICBBU1NFUlQocmVhbEFkZHJl
c3MpOworICAgIGlmIChyZWFsQWRkcmVzcyAhPSBtX3BvaW50ZXIpIHsKKyAgICAgICAgbWVtb3J5
SW5zdHJ1bWVudGF0aW9uLT5tX2NsaWVudC0+cmVwb3J0QmFzZUFkZHJlc3MobV9wb2ludGVyLCBy
ZWFsQWRkcmVzcyk7CisgICAgICAgIGlmICghbWVtb3J5T2JqZWN0SW5mby5maXJzdFZpc2l0KCkp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1lbW9yeUluc3RydW1lbnRhdGlvbi0+
Y291bnRPYmplY3RTaXplKHBvaW50ZXIsIG1lbW9yeU9iamVjdEluZm8ub2JqZWN0VHlwZSgpLCBt
ZW1vcnlPYmplY3RJbmZvLm9iamVjdFNpemUoKSk7CisgICAgbWVtb3J5SW5zdHJ1bWVudGF0aW9u
LT5jb3VudE9iamVjdFNpemUocmVhbEFkZHJlc3MsIG1lbW9yeU9iamVjdEluZm8ub2JqZWN0VHlw
ZSgpLCBtZW1vcnlPYmplY3RJbmZvLm9iamVjdFNpemUoKSk7CiAgICAgbWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLT5tX2NsaWVudC0+cmVwb3J0Tm9kZShtZW1vcnlPYmplY3RJbmZvKTsKLSAgICBpZiAo
IW1lbW9yeUluc3RydW1lbnRhdGlvbi0+Y2hlY2tDb3VudGVkT2JqZWN0KHBvaW50ZXIpKSB7Cisg
ICAgaWYgKCFtZW1vcnlJbnN0cnVtZW50YXRpb24tPmNoZWNrQ291bnRlZE9iamVjdChyZWFsQWRk
cmVzcykpIHsKICNpZiBERUJVR19QT0lOVEVSX0lOU1RSVU1FTlRBVElPTgogICAgICAgICBmcHV0
cygiVW5rbm93biBvYmplY3QgY291bnRlZDpcbiIsIHN0ZGVycik7CiAgICAgICAgIFdURlByaW50
QmFja3RyYWNlKG1fY2FsbFN0YWNrLCBtX2NhbGxTdGFja1NpemUpOwpAQCAtMTA0LDIyICsxMDUs
MzEgQEAgdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246Okluc3RydW1lbnRlZFBvaW50ZXJCYXNl
Ojpwcm9jZXNzKE1lbW9yeUluc3RydW1lbnRhdGkKICAgICB9CiB9CiAKLXZvaWQgTWVtb3J5Q2xh
c3NJbmZvOjppbml0KGNvbnN0IHZvaWQqIHBvaW50ZXIsIE1lbW9yeU9iamVjdFR5cGUgb2JqZWN0
VHlwZSwgc2l6ZV90IGFjdHVhbFNpemUpCit2b2lkIE1lbW9yeUNsYXNzSW5mbzo6aW5pdChjb25z
dCB2b2lkKiBvYmplY3RBZGRyZXNzLCBNZW1vcnlPYmplY3RUeXBlIG9iamVjdFR5cGUsIHNpemVf
dCBhY3R1YWxTaXplKQogewotICAgIG1fbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5m
byhwb2ludGVyLCBvYmplY3RUeXBlLCBhY3R1YWxTaXplKTsKICAgICBtX21lbW9yeUluc3RydW1l
bnRhdGlvbiA9IG1fbWVtb3J5T2JqZWN0SW5mby0+bWVtb3J5SW5zdHJ1bWVudGF0aW9uKCk7Cisg
ICAgaWYgKCFtX21lbW9yeU9iamVjdEluZm8tPm9iamVjdFNpemUoKSkgeworICAgICAgICBjb25z
dCB2b2lkKiBpbnN0cnVtZW50ZWRQb2ludGVyID0gbV9tZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRl
ZFBvaW50ZXIoKTsKKyAgICAgICAgaWYgKGluc3RydW1lbnRlZFBvaW50ZXIgIT0gb2JqZWN0QWRk
cmVzcyAmJiBpbnN0cnVtZW50ZWRQb2ludGVyICYmIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT52
aXNpdGVkKG9iamVjdEFkZHJlc3MpKQorICAgICAgICAgICAgbV9tZW1vcnlPYmplY3RJbmZvLT5z
ZXRBbHJlYWR5VmlzaXRlZCgpOworICAgIH0KKyAgICBtX3NraXBNZW1iZXJzID0gIW1fbWVtb3J5
T2JqZWN0SW5mby0+Zmlyc3RWaXNpdCgpOworICAgIG1fbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0
T2JqZWN0SW5mbyhvYmplY3RBZGRyZXNzLCBvYmplY3RUeXBlLCBhY3R1YWxTaXplKTsKICAgICBt
X29iamVjdFR5cGUgPSBtX21lbW9yeU9iamVjdEluZm8tPm9iamVjdFR5cGUoKTsKIH0KIAogdm9p
ZCBNZW1vcnlDbGFzc0luZm86OmFkZFJhd0J1ZmZlcihjb25zdCB2b2lkKiBidWZmZXIsIHNpemVf
dCBzaXplLCBjb25zdCBjaGFyKiBub2RlTmFtZSwgY29uc3QgY2hhciogZWRnZU5hbWUpCiB7Ci0g
ICAgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZFJhd0J1ZmZlcihtX21lbW9yeU9iamVjdElu
Zm8tPnJlcG9ydGVkUG9pbnRlcigpLCBidWZmZXIsIG1fb2JqZWN0VHlwZSwgc2l6ZSwgbm9kZU5h
bWUsIGVkZ2VOYW1lKTsKKyAgICBpZiAoIW1fc2tpcE1lbWJlcnMpCisgICAgICAgIG1fbWVtb3J5
SW5zdHJ1bWVudGF0aW9uLT5hZGRSYXdCdWZmZXIobV9tZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRl
ZFBvaW50ZXIoKSwgYnVmZmVyLCBtX29iamVjdFR5cGUsIHNpemUsIG5vZGVOYW1lLCBlZGdlTmFt
ZSk7CiB9CiAKIHZvaWQgTWVtb3J5Q2xhc3NJbmZvOjphZGRQcml2YXRlQnVmZmVyKHNpemVfdCBz
aXplLCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgY29uc3QgY2hhciogbm9kZU5h
bWUsIGNvbnN0IGNoYXIqIGVkZ2VOYW1lKQogewogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0
dXJuOworICAgIGlmIChtX3NraXBNZW1iZXJzKQorICAgICAgICByZXR1cm47CiAgICAgaWYgKCFv
d25lck9iamVjdFR5cGUpCiAgICAgICAgIG93bmVyT2JqZWN0VHlwZSA9IG1fb2JqZWN0VHlwZTsK
ICAgICBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+Y291bnRPYmplY3RTaXplKDAsIG93bmVyT2Jq
ZWN0VHlwZSwgc2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVt
ZW50YXRpb24uaCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCmluZGV4
IDBkNWI2Njg1MTAxNTdkNzY3MGI0Nzk0YzJjY2NhM2Y5OTFkYzBlYmMuLmI5NDQxMjE0MjhjMWRj
ZjQ0ZDgxMTdkMmI5ZjAwODFhYzUzY2YwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01l
bW9yeUluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1l
bnRhdGlvbi5oCkBAIC03OSwxMiArNzksMTMgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIGNs
YXNzIEluc3RydW1lbnRlZFBvaW50ZXJCYXNlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFdURl9F
WFBPUlRfUFJJVkFURSBleHBsaWNpdCBJbnN0cnVtZW50ZWRQb2ludGVyQmFzZShNZW1vcnlPYmpl
Y3RJbmZvKik7CisgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSBJbnN0cnVtZW50ZWRQb2ludGVy
QmFzZShNZW1vcnlPYmplY3RJbmZvKiwgY29uc3Qgdm9pZCogcG9pbnRlcik7CiAgICAgICAgIHZp
cnR1YWwgfkluc3RydW1lbnRlZFBvaW50ZXJCYXNlKCkgeyB9CiAgICAgICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIHByb2Nlc3MoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKik7CiAKICAgICBwcm90
ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgY29uc3Qgdm9pZCogY2FsbFJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBjYWxsUmVwb3J0
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopID0gMDsKKyAgICAgICAgY29uc3Qgdm9pZCog
bV9wb2ludGVyOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgY29uc3QgTWVtb3J5T2JqZWN0VHlw
ZSBtX293bmVyT2JqZWN0VHlwZTsKQEAgLTEwNyw2ICsxMDgsNyBAQCBwcml2YXRlOgogCiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBNZW1vcnlPYmplY3RUeXBlIGdldE9iamVjdFR5cGUo
TWVtb3J5T2JqZWN0SW5mbyopOwogCisgICAgZnJpZW5kIGNsYXNzIE1lbW9yeU9iamVjdEluZm87
CiAgICAgZnJpZW5kIGNsYXNzIE1lbW9yeUNsYXNzSW5mbzsKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBmcmllbmQgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShjb25zdCBUKiwgTWVtb3J5T2JqZWN0
SW5mbyopOwogCkBAIC0xMzYsMTAgKzEzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIEluc3RydW1l
bnRlZFBvaW50ZXIoY29uc3QgVCogcG9pbnRlciwgTWVtb3J5T2JqZWN0SW5mbyogb3duZXJPYmpl
Y3RJbmZvKTsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCBjb25zdCB2b2lkKiBj
YWxsUmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIE9WRVJSSURFOwotCi0gICAg
cHJpdmF0ZToKLSAgICAgICAgY29uc3QgVCogbV9wb2ludGVyOworICAgICAgICB2aXJ0dWFsIHZv
aWQgY2FsbFJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBPVkVSUklERTsKICAg
ICB9OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmplY3QoY29uc3QgVCYg
dCwgTWVtb3J5T2JqZWN0SW5mbyogb3duZXJPYmplY3RJbmZvLCBjb25zdCBjaGFyKiBlZGdlTmFt
ZSkgeyBPd25pbmdUcmFpdHM8VD46OmFkZE9iamVjdCh0aGlzLCB0LCBvd25lck9iamVjdEluZm8s
IGVkZ2VOYW1lKTsgfQpAQCAtMTgzLDEzICsxODIsMTUgQEAgcHVibGljOgogICAgICAgICA6IG1f
bWVtb3J5T2JqZWN0SW5mbyhtZW1vcnlPYmplY3RJbmZvKQogICAgICAgICAsIG1fbWVtb3J5SW5z
dHJ1bWVudGF0aW9uKDApCiAgICAgICAgICwgbV9vYmplY3RUeXBlKDApCisgICAgICAgICwgbV9z
a2lwTWVtYmVycyhmYWxzZSkKICAgICB7CiAgICAgICAgIGluaXQocG9pbnRlciwgb2JqZWN0VHlw
ZSwgYWN0dWFsU2l6ZSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTT4gdm9pZCBh
ZGRNZW1iZXIoY29uc3QgTSYgbWVtYmVyLCBjb25zdCBjaGFyKiBlZGdlTmFtZSA9IDApCiAgICAg
ewotICAgICAgICBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkT2JqZWN0KG1lbWJlciwgbV9t
ZW1vcnlPYmplY3RJbmZvLCBlZGdlTmFtZSk7CisgICAgICAgIGlmICghbV9za2lwTWVtYmVycykK
KyAgICAgICAgICAgIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRPYmplY3QobWVtYmVyLCBt
X21lbW9yeU9iamVjdEluZm8sIGVkZ2VOYW1lKTsKICAgICB9CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgYWRkUmF3QnVmZmVyKGNvbnN0IHZvaWQqIGJ1ZmZlciwgc2l6ZV90LCBjb25zdCBj
aGFyKiBub2RlTmFtZSA9IDAsIGNvbnN0IGNoYXIqIGVkZ2VOYW1lID0gMCk7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgYWRkUHJpdmF0ZUJ1ZmZlcihzaXplX3QsIE1lbW9yeU9iamVjdFR5
cGUgb3duZXJPYmplY3RUeXBlID0gMCwgY29uc3QgY2hhciogbm9kZU5hbWUgPSAwLCBjb25zdCBj
aGFyKiBlZGdlTmFtZSA9IDApOwpAQCAtMjAyLDYgKzIwMyw3IEBAIHByaXZhdGU6CiAgICAgTWVt
b3J5T2JqZWN0SW5mbyogbV9tZW1vcnlPYmplY3RJbmZvOwogICAgIE1lbW9yeUluc3RydW1lbnRh
dGlvbiogbV9tZW1vcnlJbnN0cnVtZW50YXRpb247CiAgICAgTWVtb3J5T2JqZWN0VHlwZSBtX29i
amVjdFR5cGU7CisgICAgYm9vbCBtX3NraXBNZW1iZXJzOwogfTsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgVD4KQEAgLTI0MSwxNiArMjQzLDE0IEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjph
ZGRPYmplY3RJbXBsKGNvbnN0IFJlZlB0cjxUPiogb2JqZWN0LCBNZW1vcnlPYmplY3RJCiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CiBNZW1vcnlJbnN0cnVtZW50YXRpb246Okluc3RydW1lbnRlZFBv
aW50ZXI8VD46Okluc3RydW1lbnRlZFBvaW50ZXIoY29uc3QgVCogcG9pbnRlciwgTWVtb3J5T2Jq
ZWN0SW5mbyogb3duZXJPYmplY3RJbmZvKQotICAgIDogSW5zdHJ1bWVudGVkUG9pbnRlckJhc2Uo
b3duZXJPYmplY3RJbmZvKQotICAgICwgbV9wb2ludGVyKHBvaW50ZXIpCisgICAgOiBJbnN0cnVt
ZW50ZWRQb2ludGVyQmFzZShvd25lck9iamVjdEluZm8sIHBvaW50ZXIpCiB7CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci1jb25zdCB2b2lkKiBNZW1vcnlJbnN0cnVtZW50YXRpb246Okluc3Ry
dW1lbnRlZFBvaW50ZXI8VD46OmNhbGxSZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KiBtZW1vcnlPYmplY3RJbmZvKQordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246Okluc3RydW1l
bnRlZFBvaW50ZXI8VD46OmNhbGxSZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBt
ZW1vcnlPYmplY3RJbmZvKQogewotICAgIHJlcG9ydE1lbW9yeVVzYWdlKG1fcG9pbnRlciwgbWVt
b3J5T2JqZWN0SW5mbyk7Ci0gICAgcmV0dXJuIG1fcG9pbnRlcjsKKyAgICByZXBvcnRNZW1vcnlV
c2FnZShzdGF0aWNfY2FzdDxjb25zdCBUKj4obV9wb2ludGVyKSwgbWVtb3J5T2JqZWN0SW5mbyk7
CiB9CiAKIC8vIExpbmsgdGltZSBndWFyZCBmb3IgY2xhc3NlcyB3aXRoIGV4dGVybmFsIG1lbW9y
eSBpbnN0cnVtZW50YXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlPYmpl
Y3RJbmZvLmggYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlPYmplY3RJbmZvLmgKaW5kZXggOTQwYWQ4
YmMwZWE5MzZjNGFkNzkzNmExN2I3NDhlMjFmYjNkODkzMC4uMGZhNmI5YjJmZDBkMmY5ODVlMzFm
MmFjNmY5MTg2M2Q4YTQwNDlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5T2Jq
ZWN0SW5mby5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeU9iamVjdEluZm8uaApAQCAtNDIs
MTEgKzQyLDEyIEBAIHR5cGVkZWYgY29uc3QgY2hhciogTWVtb3J5T2JqZWN0VHlwZTsKIAogY2xh
c3MgTWVtb3J5T2JqZWN0SW5mbyB7CiBwdWJsaWM6Ci0gICAgTWVtb3J5T2JqZWN0SW5mbyhNZW1v
cnlJbnN0cnVtZW50YXRpb24qIG1lbW9yeUluc3RydW1lbnRhdGlvbiwgTWVtb3J5T2JqZWN0VHlw
ZSBvd25lck9iamVjdFR5cGUpCisgICAgTWVtb3J5T2JqZWN0SW5mbyhNZW1vcnlJbnN0cnVtZW50
YXRpb24qIG1lbW9yeUluc3RydW1lbnRhdGlvbiwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVj
dFR5cGUsIGNvbnN0IHZvaWQqIHBvaW50ZXIpCiAgICAgICAgIDogbV9tZW1vcnlJbnN0cnVtZW50
YXRpb24obWVtb3J5SW5zdHJ1bWVudGF0aW9uKQogICAgICAgICAsIG1fb2JqZWN0VHlwZShvd25l
ck9iamVjdFR5cGUpCiAgICAgICAgICwgbV9vYmplY3RTaXplKDApCi0gICAgICAgICwgbV9wb2lu
dGVyKDApCisgICAgICAgICwgbV9wb2ludGVyKHBvaW50ZXIpCisgICAgICAgICwgbV9maXJzdFZp
c2l0KHRydWUpCiAgICAgeyB9CiAKICAgICB0eXBlZGVmIE1lbW9yeUNsYXNzSW5mbyBDbGFzc0lu
Zm87CkBAIC01NCw5ICs1NSwxMiBAQCBwdWJsaWM6CiAgICAgTWVtb3J5T2JqZWN0VHlwZSBvYmpl
Y3RUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RUeXBlOyB9CiAgICAgc2l6ZV90IG9iamVj
dFNpemUoKSBjb25zdCB7IHJldHVybiBtX29iamVjdFNpemU7IH0KICAgICBjb25zdCB2b2lkKiBy
ZXBvcnRlZFBvaW50ZXIoKSBjb25zdCB7IHJldHVybiBtX3BvaW50ZXI7IH0KKyAgICBib29sIGZp
cnN0VmlzaXQoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0VmlzaXQ7IH0KIAogICAgIHZvaWQgc2V0
Q2xhc3NOYW1lKGNvbnN0IFN0cmluZyYgY2xhc3NOYW1lKSB7IG1fY2xhc3NOYW1lID0gY2xhc3NO
YW1lOyB9CisgICAgY29uc3QgU3RyaW5nJiBjbGFzc05hbWUoKSBjb25zdCB7IHJldHVybiBtX2Ns
YXNzTmFtZTsgfQogICAgIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgbV9uYW1l
ID0gbmFtZTsgfQorICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFt
ZTsgfQogCiAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBtZW1vcnlJbnN0cnVtZW50YXRpb24o
KSB7IHJldHVybiBtX21lbW9yeUluc3RydW1lbnRhdGlvbjsgfQogCkBAIC02NCw2ICs2OCwxMSBA
QCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBNZW1vcnlDbGFzc0luZm87CiAgICAgZnJpZW5k
IGNsYXNzIE1lbW9yeUluc3RydW1lbnRhdGlvbjsKIAorICAgIHZvaWQgc2V0QWxyZWFkeVZpc2l0
ZWQoKQorICAgIHsKKyAgICAgICAgbV9maXJzdFZpc2l0ID0gZmFsc2U7CisgICAgfQorCiAgICAg
dm9pZCByZXBvcnRPYmplY3RJbmZvKGNvbnN0IHZvaWQqIHBvaW50ZXIsIE1lbW9yeU9iamVjdFR5
cGUgb2JqZWN0VHlwZSwgc2l6ZV90IG9iamVjdFNpemUpCiAgICAgewogICAgICAgICBpZiAoIW1f
b2JqZWN0U2l6ZSkgewpAQCAtNzgsNiArODcsNyBAQCBwcml2YXRlOgogICAgIE1lbW9yeU9iamVj
dFR5cGUgbV9vYmplY3RUeXBlOwogICAgIHNpemVfdCBtX29iamVjdFNpemU7CiAgICAgY29uc3Qg
dm9pZCogbV9wb2ludGVyOworICAgIGJvb2wgbV9maXJzdFZpc2l0OwogICAgIFN0cmluZyBtX2Ns
YXNzTmFtZTsKICAgICBTdHJpbmcgbV9uYW1lOwogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwNzU4YzEwMjgwZGZjOTI1ZGZjMWFlODk2MzBk
OWFlMTNmZGZlNDY0Li4yN2RjY2VjYWJjYWUxYjJjNjZhYWExZTc0ZjUzNjU3MzgyOWM2YWVjIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTItMTItMTAgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgTWVtb3J5IGluc3RydW1lbnRhdGlvbjogbWFrZSBzdXJlIGVhY2ggZWRn
ZSBpcyByZXBvcnRlZCBvbmx5IG9uY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwNDYzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRlc3QgdGhhdCBvdXRnb2luZyBlZGdlcyBhcmUgcmVwb3J0ZWQgb25s
eSBvbmNlIGlmIHdlIGNvbWUgdG8gdGhlIHNhbWUKKyAgICAgICAgb2JqZWN0IHR3aWNlOiBmaXJz
dCBieSBhbiBhZGRyZXNzIG9mIGEgYmFzZSBjbGFzcyBhbmQgdGhlbiBieSBhIHJlYWwgYWRkcmVz
cworICAgICAgICBvZiB0aGUgb2JqZWN0LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdC5jcHA6CisKIDIwMTItMTItMTAgIFbDrWN0
b3IgTWFudWVsIErDoXF1ZXogTGVhbCAgPHZqYXF1ZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OKHIxMzU4NjMpOiBHdGtMYXVuY2hlciAtLWhlbHAgbm8gbG9uZ2VyIGRpc3BsYXlz
IGFsbCBoZWxwIG9wdGlvbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL01lbW9yeUluc3RydW1lbnRhdGlvblRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdC5jcHAKaW5kZXggYThkZDc5YzM1ZmM0
ZjUyZGZkOWY4NWYzN2NhZmYwZmMyNDJlMDVmOC4uZmM1NWJlMDM4MWFlMzI4YTAyN2Q1YzEwOGNl
NzI4MjI0ZGRjOGY1NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
TWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdC5jcHAKQEAgLTE2NywxMyArMTY3LDIx
IEBAIHB1YmxpYzoKIGNsYXNzIEluc3RydW1lbnRlZCB7CiBwdWJsaWM6CiAgICAgSW5zdHJ1bWVu
dGVkKCkgOiBtX25vdEluc3RydW1lbnRlZChuZXcgTm90SW5zdHJ1bWVudGVkKSB7IH0KLSAgICB2
aXJ0dWFsIH5JbnN0cnVtZW50ZWQoKSB7IGRlbGV0ZSBtX25vdEluc3RydW1lbnRlZDsgfQorICAg
IHZpcnR1YWwgfkluc3RydW1lbnRlZCgpIHsgZGlzcG9zZU93bmVkT2JqZWN0KCk7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlP
YmplY3RJbmZvKSBjb25zdAogICAgIHsKICAgICAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVt
b3J5T2JqZWN0SW5mbywgdGhpcywgVGVzdFR5cGUpOwotICAgICAgICBpbmZvLmFkZE1lbWJlciht
X25vdEluc3RydW1lbnRlZCk7CisgICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnNldENsYXNzTmFt
ZSgiSW5zdHJ1bWVudGVkIik7CisgICAgICAgIGluZm8uYWRkTWVtYmVyKG1fbm90SW5zdHJ1bWVu
dGVkLCAibV9ub3RJbnN0cnVtZW50ZWQiKTsKKyAgICB9CisKKyAgICB2b2lkIGRpc3Bvc2VPd25l
ZE9iamVjdCgpCisgICAgeworICAgICAgICBkZWxldGUgbV9ub3RJbnN0cnVtZW50ZWQ7CisgICAg
ICAgIG1fbm90SW5zdHJ1bWVudGVkID0gMDsKICAgICB9CisKICAgICBOb3RJbnN0cnVtZW50ZWQq
IG1fbm90SW5zdHJ1bWVudGVkOwogfTsKIApAQCAtNzk5LDYgKzgwNyw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5
T2JqZWN0SW5mbykgY29uc3QKICAgICB7CiAgICAgICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1l
bW9yeU9iamVjdEluZm8sIHRoaXMsIFRlc3RUeXBlKTsKKyAgICAgICAgSW5zdHJ1bWVudGVkOjpy
ZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKICAgICB9CiB9OwogCkBAIC04MTQs
OCArODIzLDggQEAgVEVTVChNZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LCBpbnN0cnVtZW50ZWRX
aXRoTXVsdGlwbGVBbmNlc3RvcnMpCiAKICAgICBoZWxwZXIuYWRkUm9vdE9iamVjdChkZXNjZW5k
YW50UG9pbnRlck93bmVyKTsKICAgICBoZWxwZXIuYWRkUm9vdE9iamVjdChhbmNlc3RvclBvaW50
ZXJPd25lcik7Ci0gICAgRVhQRUNUX0VRKHNpemVvZihDbGFzc1dpdGhUd29BbmNlc3RvcnMpLCBo
ZWxwZXIucmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDJ1LCBoZWxw
ZXIudmlzaXRlZE9iamVjdHMoKSk7CisgICAgRVhQRUNUX0VRKHNpemVvZihDbGFzc1dpdGhUd29B
bmNlc3RvcnMpICsgc2l6ZW9mKE5vdEluc3RydW1lbnRlZCksIGhlbHBlci5yZXBvcnRlZFNpemVG
b3JBbGxUeXBlcygpKTsKKyAgICBFWFBFQ1RfRVEoM3UsIGhlbHBlci52aXNpdGVkT2JqZWN0cygp
KTsKIH0KIAogY2xhc3MgQ2hlY2tDb3VudGVkT2JqZWN0c0NsaWVudCA6IHB1YmxpYyBNZW1vcnlJ
bnN0cnVtZW50YXRpb25UZXN0Q2xpZW50IHsKQEAgLTgzNyw2ICs4NDYsNyBAQCBwcml2YXRlOgog
VEVTVChNZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LCBjaGVja0NvdW50ZWRPYmplY3RXaXRoTXVs
dGlwbGVBbmNlc3RvcnMpCiB7CiAgICAgT3duUHRyPENsYXNzV2l0aFR3b0FuY2VzdG9ycz4gaW5z
dGFuY2UgPSBhZG9wdFB0cihuZXcgQ2xhc3NXaXRoVHdvQW5jZXN0b3JzKCkpOworICAgIGluc3Rh
bmNlLT5kaXNwb3NlT3duZWRPYmplY3QoKTsKICAgICBDbGFzc1dpdGhUd29BbmNlc3RvcnMqIGRl
c2NlbmRhbnRQb2ludGVyID0gaW5zdGFuY2UuZ2V0KCk7CiAgICAgSW5zdHJ1bWVudGVkT3duZXI8
Q2xhc3NXaXRoVHdvQW5jZXN0b3JzKj4gZGVzY2VuZGFudFBvaW50ZXJPd25lcihkZXNjZW5kYW50
UG9pbnRlcik7CiAgICAgSW5zdHJ1bWVudGVkKiBhbmNlc3RvclBvaW50ZXIgPSBkZXNjZW5kYW50
UG9pbnRlcjsKQEAgLTg1MCw1ICs4NjAsNDkgQEAgVEVTVChNZW1vcnlJbnN0cnVtZW50YXRpb25U
ZXN0LCBjaGVja0NvdW50ZWRPYmplY3RXaXRoTXVsdGlwbGVBbmNlc3RvcnMpCiAgICAgRVhQRUNU
X1RSVUUoY2xpZW50LmV4cGVjdGVkUG9pbnRlckZvdW5kKCkpOwogfQogCitjbGFzcyBUd29Qb2lu
dGVyc1RvU2FtZUluc3J1bWVudGVkIHsKK3B1YmxpYzoKKyAgICBUd29Qb2ludGVyc1RvU2FtZUlu
c3J1bWVudGVkKCkKKyAgICAgICAgOiBtX293blB0cihhZG9wdFB0cihuZXcgQ2xhc3NXaXRoVHdv
QW5jZXN0b3JzKCkpKQorICAgICAgICAsIG1fYmFzZUNsYXNzUHRyKG1fb3duUHRyLmdldCgpKQor
ICAgIHsKKyAgICAgICAgRVhQRUNUX05FKHN0YXRpY19jYXN0PHZvaWQqPihtX293blB0ci5nZXQo
KSksIHN0YXRpY19jYXN0PHZvaWQqPihtX2Jhc2VDbGFzc1B0cikpOworICAgIH0KKyAgICB2b2lk
IHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNv
bnN0CisgICAgeworICAgICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZv
LCB0aGlzLCBUZXN0VHlwZSk7CisgICAgICAgIGluZm8uYWRkTWVtYmVyKG1fb3duUHRyKTsKKyAg
ICAgICAgaW5mby5hZGRNZW1iZXIobV9iYXNlQ2xhc3NQdHIpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBPd25QdHI8Q2xhc3NXaXRoVHdvQW5jZXN0b3JzPiBtX293blB0cjsKKyAgICBJbnN0cnVt
ZW50ZWQqIG1fYmFzZUNsYXNzUHRyOworfTsKKworY2xhc3MgQ291bnRMaW5rc0Zyb21JbnN0cnVt
ZW50ZWRPYmplY3QgOiBwdWJsaWMgTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdENsaWVudCB7Citw
dWJsaWM6CisgICAgQ291bnRMaW5rc0Zyb21JbnN0cnVtZW50ZWRPYmplY3QoKSA6IG1fbGlua0Nv
dW50KDApIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFZGdlKGNvbnN0IHZvaWQqIHNvdXJj
ZSwgY29uc3Qgdm9pZCogZGVzdGluYXRpb24sIGNvbnN0IGNoYXIqIG5hbWUpIE9WRVJSSURFCisg
ICAgeworICAgICAgICBpZiAobmFtZSAmJiAhc3RyY21wKCJtX25vdEluc3RydW1lbnRlZCIsIG5h
bWUpKQorICAgICAgICAgICAgbV9saW5rQ291bnQrKzsKKyAgICB9CisgICAgaW50IGxpbmtDb3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbGlua0NvdW50OyB9CisKK3ByaXZhdGU6CisgICAgaW50IG1f
bGlua0NvdW50OworfTsKKworCitURVNUKE1lbW9yeUluc3RydW1lbnRhdGlvblRlc3QsIGRvTm90
UmVwb3J0RWRnZVR3aWNlKQoreworICAgIE93blB0cjxUd29Qb2ludGVyc1RvU2FtZUluc3J1bWVu
dGVkPiBpbnN0YW5jZSA9IGFkb3B0UHRyKG5ldyBUd29Qb2ludGVyc1RvU2FtZUluc3J1bWVudGVk
KCkpOworCisgICAgQ291bnRMaW5rc0Zyb21JbnN0cnVtZW50ZWRPYmplY3QgY2xpZW50OworICAg
IEluc3RydW1lbnRhdGlvblRlc3RJbXBsIGluc3RydW1lbnRhdGlvbigmY2xpZW50KTsKKyAgICBp
bnN0cnVtZW50YXRpb24uYWRkUm9vdE9iamVjdChpbnN0YW5jZSk7CisgICAgRVhQRUNUX0VRKDEs
IGNsaWVudC5saW5rQ291bnQoKSk7Cit9CiB9IC8vIG5hbWVzcGFjZQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178722</attachid>
            <date>2012-12-10 22:41:20 -0800</date>
            <delta_ts>2012-12-10 23:46:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104630-20121211103840.patch</filename>
            <type>text/plain</type>
            <size>17137</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE1MGY0NTQ2OWNkNmM2YzBkNDRkMjUx
YjdhNzNlZTUyNjg0MzQyYmQuLmU0OGYwZjZhYzNkZWZmNDRlNmUzOTM1MDAzMjkxOWNiNDI5MGJm
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTItMTItMTAgIFl1cnkgU2VtaWtoYXRza3kgIDx5
dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWVtb3J5IGluc3RydW1lbnRhdGlvbjogbWFr
ZSBzdXJlIGVhY2ggZWRnZSBpcyByZXBvcnRlZCBvbmx5IG9uY2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDYzMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ugc3VyZSB0aGF0IG91dGdvaW5nIGVk
Z2VzIGFyZSByZXBvcnRlZCBvbmx5IG9uY2UgaWYgd2UgY29tZSB0byB0aGUgc2FtZQorICAgICAg
ICBvYmplY3QgdHdpY2U6IGZpcnN0IGJ5IGFuIGFkZHJlc3Mgb2YgYSBiYXNlIGNsYXNzIGFuZCB0
aGVuIGJ5IGEgcmVhbCBhZGRyZXNzCisgICAgICAgIG9mIHRoZSBvYmplY3QuCisKKyAgICAgICAg
KiB3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6TWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjpNZW1vcnlJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV1RGOjpNZW1v
cnlJbnN0cnVtZW50YXRpb246OnJlcG9ydExpbmtUb0J1ZmZlcik6CisgICAgICAgIChXVEY6Ok1l
bW9yeUluc3RydW1lbnRhdGlvbjo6SW5zdHJ1bWVudGVkUG9pbnRlckJhc2U6Okluc3RydW1lbnRl
ZFBvaW50ZXJCYXNlKToKKyAgICAgICAgKFdURjo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpJbnN0
cnVtZW50ZWRQb2ludGVyQmFzZTo6cHJvY2Vzcyk6CisgICAgICAgIChXVEY6Ok1lbW9yeUNsYXNz
SW5mbzo6aW5pdCk6CisgICAgICAgIChXVEY6Ok1lbW9yeUNsYXNzSW5mbzo6YWRkUmF3QnVmZmVy
KToKKyAgICAgICAgKFdURjo6TWVtb3J5Q2xhc3NJbmZvOjphZGRQcml2YXRlQnVmZmVyKToKKyAg
ICAgICAgKiB3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChJbnN0cnVtZW50
ZWRQb2ludGVyQmFzZSk6CisgICAgICAgIChNZW1vcnlJbnN0cnVtZW50YXRpb24pOgorICAgICAg
ICAoSW5zdHJ1bWVudGVkUG9pbnRlcik6CisgICAgICAgIChXVEY6Ok1lbW9yeUNsYXNzSW5mbzo6
TWVtb3J5Q2xhc3NJbmZvKToKKyAgICAgICAgKFdURjo6TWVtb3J5Q2xhc3NJbmZvOjphZGRNZW1i
ZXIpOgorICAgICAgICAoTWVtb3J5Q2xhc3NJbmZvKToKKyAgICAgICAgKFdURjo6OjpJbnN0cnVt
ZW50ZWRQb2ludGVyKToKKyAgICAgICAgKFdURjo6OjpjYWxsUmVwb3J0TWVtb3J5VXNhZ2UpOgor
ICAgICAgICAqIHd0Zi9NZW1vcnlPYmplY3RJbmZvLmg6CisgICAgICAgIChXVEY6Ok1lbW9yeU9i
amVjdEluZm86Ok1lbW9yeU9iamVjdEluZm8pOgorICAgICAgICAoV1RGOjpNZW1vcnlPYmplY3RJ
bmZvOjpmaXJzdFZpc2l0KToKKyAgICAgICAgKFdURjo6TWVtb3J5T2JqZWN0SW5mbzo6Y2xhc3NO
YW1lKToKKyAgICAgICAgKFdURjo6TWVtb3J5T2JqZWN0SW5mbzo6bmFtZSk6CisgICAgICAgIChX
VEY6Ok1lbW9yeU9iamVjdEluZm86OnNldEFscmVhZHlWaXNpdGVkKToKKyAgICAgICAgKE1lbW9y
eU9iamVjdEluZm8pOgorCiAyMDEyLTEyLTA4ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3
ZWJraXQub3JnPgogCiAgICAgICAgIENvbXBpbGluZyBXVEYgb3V0c2lkZSBvZiBXZWJLaXQgZmFp
bGVkIG9uIFdpbmRvd3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1l
bnRhdGlvbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwCmlu
ZGV4IGRjOWViZTJjOWU2NzEyZDgzMGE4OWQyMTJlZmYzOWZkYjU2NzJhOTAuLjFiNTY2YmJkYmE1
M2ExNGE2ZDM3MjM0ZTI3MmJlNjhhYzhjNDZkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L01lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmNwcApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpNZW1vcnlJbnN0cnVtZW50YXRpb24oTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uQ2xpZW50KiBjbGllbnQpCiAgICAgOiBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX3Jv
b3RPYmplY3RJbmZvKGFkb3B0UHRyKG5ldyBNZW1vcnlPYmplY3RJbmZvKHRoaXMsIDApKSkKKyAg
ICAsIG1fcm9vdE9iamVjdEluZm8oYWRvcHRQdHIobmV3IE1lbW9yeU9iamVjdEluZm8odGhpcywg
MCwgMCkpKQogewogfQogCkBAIC02NywxNCArNjcsMTUgQEAgdm9pZCBNZW1vcnlJbnN0cnVtZW50
YXRpb246OmNhbGxSZXBvcnRPYmplY3RJbmZvKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVj
dEkKIAogdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydExpbmtUb0J1ZmZlcihjb25z
dCB2b2lkKiBvd25lciwgY29uc3Qgdm9pZCogYnVmZmVyLCBNZW1vcnlPYmplY3RUeXBlIG93bmVy
T2JqZWN0VHlwZSwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIG5vZGVOYW1lLCBjb25zdCBjaGFy
KiBlZGdlTmFtZSkKIHsKLSAgICBNZW1vcnlPYmplY3RJbmZvIG1lbW9yeU9iamVjdEluZm8odGhp
cywgb3duZXJPYmplY3RUeXBlKTsKKyAgICBNZW1vcnlPYmplY3RJbmZvIG1lbW9yeU9iamVjdElu
Zm8odGhpcywgb3duZXJPYmplY3RUeXBlLCAwKTsKICAgICBtZW1vcnlPYmplY3RJbmZvLnJlcG9y
dE9iamVjdEluZm8oYnVmZmVyLCBvd25lck9iamVjdFR5cGUsIHNpemUpOwogICAgIG1lbW9yeU9i
amVjdEluZm8uc2V0TmFtZShub2RlTmFtZSk7CiAgICAgbV9jbGllbnQtPnJlcG9ydExlYWYob3du
ZXIsIG1lbW9yeU9iamVjdEluZm8sIGVkZ2VOYW1lKTsKIH0KIAotTWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjpJbnN0cnVtZW50ZWRQb2ludGVyQmFzZTo6SW5zdHJ1bWVudGVkUG9pbnRlckJhc2UoTWVt
b3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykKLSAgICA6IG1fb3duZXJPYmplY3RUeXBl
KG1lbW9yeU9iamVjdEluZm8tPm9iamVjdFR5cGUoKSkKK01lbW9yeUluc3RydW1lbnRhdGlvbjo6
SW5zdHJ1bWVudGVkUG9pbnRlckJhc2U6Okluc3RydW1lbnRlZFBvaW50ZXJCYXNlKE1lbW9yeU9i
amVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8sIGNvbnN0IHZvaWQqIHBvaW50ZXIpCisgICAgOiBt
X3BvaW50ZXIocG9pbnRlcikKKyAgICAsIG1fb3duZXJPYmplY3RUeXBlKG1lbW9yeU9iamVjdElu
Zm8tPm9iamVjdFR5cGUoKSkKIHsKICNpZiBERUJVR19QT0lOVEVSX0lOU1RSVU1FTlRBVElPTgog
ICAgIG1fY2FsbFN0YWNrU2l6ZSA9IHNfbWF4Q2FsbFN0YWNrU2l6ZTsKQEAgLTg0LDE5ICs4NSwx
OSBAQCBNZW1vcnlJbnN0cnVtZW50YXRpb246Okluc3RydW1lbnRlZFBvaW50ZXJCYXNlOjpJbnN0
cnVtZW50ZWRQb2ludGVyQmFzZShNZW1vcnlPYgogCiB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlv
bjo6SW5zdHJ1bWVudGVkUG9pbnRlckJhc2U6OnByb2Nlc3MoTWVtb3J5SW5zdHJ1bWVudGF0aW9u
KiBtZW1vcnlJbnN0cnVtZW50YXRpb24pCiB7Ci0gICAgTWVtb3J5T2JqZWN0SW5mbyBtZW1vcnlP
YmplY3RJbmZvKG1lbW9yeUluc3RydW1lbnRhdGlvbiwgbV9vd25lck9iamVjdFR5cGUpOwotICAg
IGNvbnN0IHZvaWQqIG9yaWdpbmFsUG9pbnRlciA9IGNhbGxSZXBvcnRNZW1vcnlVc2FnZSgmbWVt
b3J5T2JqZWN0SW5mbyk7Ci0KLSAgICBjb25zdCB2b2lkKiBwb2ludGVyID0gbWVtb3J5T2JqZWN0
SW5mby5yZXBvcnRlZFBvaW50ZXIoKTsKLSAgICBBU1NFUlQocG9pbnRlcik7Ci0gICAgaWYgKHBv
aW50ZXIgIT0gb3JpZ2luYWxQb2ludGVyKSB7Ci0gICAgICAgIG1lbW9yeUluc3RydW1lbnRhdGlv
bi0+bV9jbGllbnQtPnJlcG9ydEJhc2VBZGRyZXNzKG9yaWdpbmFsUG9pbnRlciwgcG9pbnRlcik7
Ci0gICAgICAgIGlmIChtZW1vcnlJbnN0cnVtZW50YXRpb24tPnZpc2l0ZWQocG9pbnRlcikpCisg
ICAgTWVtb3J5T2JqZWN0SW5mbyBtZW1vcnlPYmplY3RJbmZvKG1lbW9yeUluc3RydW1lbnRhdGlv
biwgbV9vd25lck9iamVjdFR5cGUsIG1fcG9pbnRlcik7CisgICAgY2FsbFJlcG9ydE1lbW9yeVVz
YWdlKCZtZW1vcnlPYmplY3RJbmZvKTsKKworICAgIGNvbnN0IHZvaWQqIHJlYWxBZGRyZXNzID0g
bWVtb3J5T2JqZWN0SW5mby5yZXBvcnRlZFBvaW50ZXIoKTsKKyAgICBBU1NFUlQocmVhbEFkZHJl
c3MpOworICAgIGlmIChyZWFsQWRkcmVzcyAhPSBtX3BvaW50ZXIpIHsKKyAgICAgICAgbWVtb3J5
SW5zdHJ1bWVudGF0aW9uLT5tX2NsaWVudC0+cmVwb3J0QmFzZUFkZHJlc3MobV9wb2ludGVyLCBy
ZWFsQWRkcmVzcyk7CisgICAgICAgIGlmICghbWVtb3J5T2JqZWN0SW5mby5maXJzdFZpc2l0KCkp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1lbW9yeUluc3RydW1lbnRhdGlvbi0+
Y291bnRPYmplY3RTaXplKHBvaW50ZXIsIG1lbW9yeU9iamVjdEluZm8ub2JqZWN0VHlwZSgpLCBt
ZW1vcnlPYmplY3RJbmZvLm9iamVjdFNpemUoKSk7CisgICAgbWVtb3J5SW5zdHJ1bWVudGF0aW9u
LT5jb3VudE9iamVjdFNpemUocmVhbEFkZHJlc3MsIG1lbW9yeU9iamVjdEluZm8ub2JqZWN0VHlw
ZSgpLCBtZW1vcnlPYmplY3RJbmZvLm9iamVjdFNpemUoKSk7CiAgICAgbWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLT5tX2NsaWVudC0+cmVwb3J0Tm9kZShtZW1vcnlPYmplY3RJbmZvKTsKLSAgICBpZiAo
IW1lbW9yeUluc3RydW1lbnRhdGlvbi0+Y2hlY2tDb3VudGVkT2JqZWN0KHBvaW50ZXIpKSB7Cisg
ICAgaWYgKCFtZW1vcnlJbnN0cnVtZW50YXRpb24tPmNoZWNrQ291bnRlZE9iamVjdChyZWFsQWRk
cmVzcykpIHsKICNpZiBERUJVR19QT0lOVEVSX0lOU1RSVU1FTlRBVElPTgogICAgICAgICBmcHV0
cygiVW5rbm93biBvYmplY3QgY291bnRlZDpcbiIsIHN0ZGVycik7CiAgICAgICAgIFdURlByaW50
QmFja3RyYWNlKG1fY2FsbFN0YWNrLCBtX2NhbGxTdGFja1NpemUpOwpAQCAtMTA0LDIyICsxMDUs
MjYgQEAgdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246Okluc3RydW1lbnRlZFBvaW50ZXJCYXNl
Ojpwcm9jZXNzKE1lbW9yeUluc3RydW1lbnRhdGkKICAgICB9CiB9CiAKLXZvaWQgTWVtb3J5Q2xh
c3NJbmZvOjppbml0KGNvbnN0IHZvaWQqIHBvaW50ZXIsIE1lbW9yeU9iamVjdFR5cGUgb2JqZWN0
VHlwZSwgc2l6ZV90IGFjdHVhbFNpemUpCit2b2lkIE1lbW9yeUNsYXNzSW5mbzo6aW5pdChjb25z
dCB2b2lkKiBvYmplY3RBZGRyZXNzLCBNZW1vcnlPYmplY3RUeXBlIG9iamVjdFR5cGUsIHNpemVf
dCBhY3R1YWxTaXplKQogewotICAgIG1fbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5m
byhwb2ludGVyLCBvYmplY3RUeXBlLCBhY3R1YWxTaXplKTsKKyAgICBtX21lbW9yeU9iamVjdElu
Zm8tPnJlcG9ydE9iamVjdEluZm8ob2JqZWN0QWRkcmVzcywgb2JqZWN0VHlwZSwgYWN0dWFsU2l6
ZSk7CiAgICAgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24gPSBtX21lbW9yeU9iamVjdEluZm8tPm1l
bW9yeUluc3RydW1lbnRhdGlvbigpOwogICAgIG1fb2JqZWN0VHlwZSA9IG1fbWVtb3J5T2JqZWN0
SW5mby0+b2JqZWN0VHlwZSgpOworICAgIG1fc2tpcE1lbWJlcnMgPSAhbV9tZW1vcnlPYmplY3RJ
bmZvLT5maXJzdFZpc2l0KCk7CiB9CiAKIHZvaWQgTWVtb3J5Q2xhc3NJbmZvOjphZGRSYXdCdWZm
ZXIoY29uc3Qgdm9pZCogYnVmZmVyLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciogbm9kZU5hbWUs
IGNvbnN0IGNoYXIqIGVkZ2VOYW1lKQogewotICAgIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5h
ZGRSYXdCdWZmZXIobV9tZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRlZFBvaW50ZXIoKSwgYnVmZmVy
LCBtX29iamVjdFR5cGUsIHNpemUsIG5vZGVOYW1lLCBlZGdlTmFtZSk7CisgICAgaWYgKCFtX3Nr
aXBNZW1iZXJzKQorICAgICAgICBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkUmF3QnVmZmVy
KG1fbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0ZWRQb2ludGVyKCksIGJ1ZmZlciwgbV9vYmplY3RU
eXBlLCBzaXplLCBub2RlTmFtZSwgZWRnZU5hbWUpOwogfQogCiB2b2lkIE1lbW9yeUNsYXNzSW5m
bzo6YWRkUHJpdmF0ZUJ1ZmZlcihzaXplX3Qgc2l6ZSwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9i
amVjdFR5cGUsIGNvbnN0IGNoYXIqIG5vZGVOYW1lLCBjb25zdCBjaGFyKiBlZGdlTmFtZSkKIHsK
ICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybjsKKyAgICBpZiAobV9za2lwTWVtYmVycykK
KyAgICAgICAgcmV0dXJuOwogICAgIGlmICghb3duZXJPYmplY3RUeXBlKQogICAgICAgICBvd25l
ck9iamVjdFR5cGUgPSBtX29iamVjdFR5cGU7CiAgICAgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24t
PmNvdW50T2JqZWN0U2l6ZSgwLCBvd25lck9iamVjdFR5cGUsIHNpemUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi9N
ZW1vcnlJbnN0cnVtZW50YXRpb24uaAppbmRleCAwZDViNjY4NTEwMTU3ZDc2NzBiNDc5NGMyY2Nj
YTNmOTkxZGMwZWJjLi5iOTQ0MTIxNDI4YzFkY2Y0NGQ4MTE3ZDJiOWYwMDgxYWM1M2NmMDkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaApAQCAtNzksMTIgKzc5LDEzIEBA
IHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBjbGFzcyBJbnN0cnVtZW50ZWRQb2ludGVyQmFzZSB7
CiAgICAgcHVibGljOgotICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgSW5zdHJ1
bWVudGVkUG9pbnRlckJhc2UoTWVtb3J5T2JqZWN0SW5mbyopOworICAgICAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgSW5zdHJ1bWVudGVkUG9pbnRlckJhc2UoTWVtb3J5T2JqZWN0SW5mbyosIGNvbnN0
IHZvaWQqIHBvaW50ZXIpOwogICAgICAgICB2aXJ0dWFsIH5JbnN0cnVtZW50ZWRQb2ludGVyQmFz
ZSgpIHsgfQogICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcm9jZXNzKE1lbW9yeUlu
c3RydW1lbnRhdGlvbiopOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIGNvbnN0
IHZvaWQqIGNhbGxSZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgPSAwOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgY2FsbFJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
KSA9IDA7CisgICAgICAgIGNvbnN0IHZvaWQqIG1fcG9pbnRlcjsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIGNvbnN0IE1lbW9yeU9iamVjdFR5cGUgbV9vd25lck9iamVjdFR5cGU7CkBAIC0xMDcs
NiArMTA4LDcgQEAgcHJpdmF0ZToKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgTWVt
b3J5T2JqZWN0VHlwZSBnZXRPYmplY3RUeXBlKE1lbW9yeU9iamVjdEluZm8qKTsKIAorICAgIGZy
aWVuZCBjbGFzcyBNZW1vcnlPYmplY3RJbmZvOwogICAgIGZyaWVuZCBjbGFzcyBNZW1vcnlDbGFz
c0luZm87CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gZnJpZW5kIHZvaWQgcmVwb3J0TWVtb3J5
VXNhZ2UoY29uc3QgVCosIE1lbW9yeU9iamVjdEluZm8qKTsKIApAQCAtMTM2LDEwICsxMzgsNyBA
QCBwcml2YXRlOgogICAgICAgICBJbnN0cnVtZW50ZWRQb2ludGVyKGNvbnN0IFQqIHBvaW50ZXIs
IE1lbW9yeU9iamVjdEluZm8qIG93bmVyT2JqZWN0SW5mbyk7CiAKICAgICBwcm90ZWN0ZWQ6Ci0g
ICAgICAgIHZpcnR1YWwgY29uc3Qgdm9pZCogY2FsbFJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qKSBPVkVSUklERTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGNvbnN0IFQqIG1f
cG9pbnRlcjsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNhbGxSZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKikgT1ZFUlJJREU7CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHZvaWQgYWRkT2JqZWN0KGNvbnN0IFQmIHQsIE1lbW9yeU9iamVjdEluZm8qIG93bmVyT2Jq
ZWN0SW5mbywgY29uc3QgY2hhciogZWRnZU5hbWUpIHsgT3duaW5nVHJhaXRzPFQ+OjphZGRPYmpl
Y3QodGhpcywgdCwgb3duZXJPYmplY3RJbmZvLCBlZGdlTmFtZSk7IH0KQEAgLTE4MywxMyArMTgy
LDE1IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX21lbW9yeU9iamVjdEluZm8obWVtb3J5T2JqZWN0
SW5mbykKICAgICAgICAgLCBtX21lbW9yeUluc3RydW1lbnRhdGlvbigwKQogICAgICAgICAsIG1f
b2JqZWN0VHlwZSgwKQorICAgICAgICAsIG1fc2tpcE1lbWJlcnMoZmFsc2UpCiAgICAgewogICAg
ICAgICBpbml0KHBvaW50ZXIsIG9iamVjdFR5cGUsIGFjdHVhbFNpemUpOwogICAgIH0KIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE0+IHZvaWQgYWRkTWVtYmVyKGNvbnN0IE0mIG1lbWJlciwgY29u
c3QgY2hhciogZWRnZU5hbWUgPSAwKQogICAgIHsKLSAgICAgICAgbV9tZW1vcnlJbnN0cnVtZW50
YXRpb24tPmFkZE9iamVjdChtZW1iZXIsIG1fbWVtb3J5T2JqZWN0SW5mbywgZWRnZU5hbWUpOwor
ICAgICAgICBpZiAoIW1fc2tpcE1lbWJlcnMpCisgICAgICAgICAgICBtX21lbW9yeUluc3RydW1l
bnRhdGlvbi0+YWRkT2JqZWN0KG1lbWJlciwgbV9tZW1vcnlPYmplY3RJbmZvLCBlZGdlTmFtZSk7
CiAgICAgfQogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFkZFJhd0J1ZmZlcihjb25zdCB2
b2lkKiBidWZmZXIsIHNpemVfdCwgY29uc3QgY2hhciogbm9kZU5hbWUgPSAwLCBjb25zdCBjaGFy
KiBlZGdlTmFtZSA9IDApOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFkZFByaXZhdGVC
dWZmZXIoc2l6ZV90LCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSA9IDAsIGNvbnN0
IGNoYXIqIG5vZGVOYW1lID0gMCwgY29uc3QgY2hhciogZWRnZU5hbWUgPSAwKTsKQEAgLTIwMiw2
ICsyMDMsNyBAQCBwcml2YXRlOgogICAgIE1lbW9yeU9iamVjdEluZm8qIG1fbWVtb3J5T2JqZWN0
SW5mbzsKICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb24qIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9u
OwogICAgIE1lbW9yeU9iamVjdFR5cGUgbV9vYmplY3RUeXBlOworICAgIGJvb2wgbV9za2lwTWVt
YmVyczsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0yNDEsMTYgKzI0MywxNCBAQCB2
b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25zdCBSZWZQdHI8VD4q
IG9iamVjdCwgTWVtb3J5T2JqZWN0SQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjpJbnN0cnVtZW50ZWRQb2ludGVyPFQ+OjpJbnN0cnVtZW50ZWRQb2ludGVy
KGNvbnN0IFQqIHBvaW50ZXIsIE1lbW9yeU9iamVjdEluZm8qIG93bmVyT2JqZWN0SW5mbykKLSAg
ICA6IEluc3RydW1lbnRlZFBvaW50ZXJCYXNlKG93bmVyT2JqZWN0SW5mbykKLSAgICAsIG1fcG9p
bnRlcihwb2ludGVyKQorICAgIDogSW5zdHJ1bWVudGVkUG9pbnRlckJhc2Uob3duZXJPYmplY3RJ
bmZvLCBwb2ludGVyKQogewogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3Qgdm9pZCog
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpJbnN0cnVtZW50ZWRQb2ludGVyPFQ+OjpjYWxsUmVwb3J0
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykKK3ZvaWQgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpJbnN0cnVtZW50ZWRQb2ludGVyPFQ+OjpjYWxsUmVwb3J0TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykKIHsKLSAgICByZXBv
cnRNZW1vcnlVc2FnZShtX3BvaW50ZXIsIG1lbW9yeU9iamVjdEluZm8pOwotICAgIHJldHVybiBt
X3BvaW50ZXI7CisgICAgcmVwb3J0TWVtb3J5VXNhZ2Uoc3RhdGljX2Nhc3Q8Y29uc3QgVCo+KG1f
cG9pbnRlciksIG1lbW9yeU9iamVjdEluZm8pOwogfQogCiAvLyBMaW5rIHRpbWUgZ3VhcmQgZm9y
IGNsYXNzZXMgd2l0aCBleHRlcm5hbCBtZW1vcnkgaW5zdHJ1bWVudGF0aW9uLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvTWVtb3J5T2JqZWN0SW5mby5oIGIvU291cmNlL1dURi93dGYvTWVt
b3J5T2JqZWN0SW5mby5oCmluZGV4IDk0MGFkOGJjMGVhOTM2YzRhZDc5MzZhMTdiNzQ4ZTIxZmIz
ZDg5MzAuLmJjNWUyOTk0MzBiNjdiMWFjNTBiYTZlMWY1MWUwZjFhYWRmNGQzMzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeU9iamVjdEluZm8uaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9NZW1vcnlPYmplY3RJbmZvLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpZm5kZWYgTWVtb3J5T2Jq
ZWN0SW5mb19oCiAjZGVmaW5lIE1lbW9yeU9iamVjdEluZm9faAogCisjaW5jbHVkZSA8d3RmL01l
bW9yeUluc3RydW1lbnRhdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV1RGIHsKQEAgLTQyLDExICs0MywxMiBAQCB0eXBlZGVmIGNvbnN0IGNoYXIq
IE1lbW9yeU9iamVjdFR5cGU7CiAKIGNsYXNzIE1lbW9yeU9iamVjdEluZm8gewogcHVibGljOgot
ICAgIE1lbW9yeU9iamVjdEluZm8oTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBtZW1vcnlJbnN0cnVt
ZW50YXRpb24sIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlKQorICAgIE1lbW9yeU9i
amVjdEluZm8oTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBtZW1vcnlJbnN0cnVtZW50YXRpb24sIE1l
bW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBjb25zdCB2b2lkKiBwb2ludGVyKQogICAg
ICAgICA6IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uKG1lbW9yeUluc3RydW1lbnRhdGlvbikKICAg
ICAgICAgLCBtX29iamVjdFR5cGUob3duZXJPYmplY3RUeXBlKQogICAgICAgICAsIG1fb2JqZWN0
U2l6ZSgwKQotICAgICAgICAsIG1fcG9pbnRlcigwKQorICAgICAgICAsIG1fcG9pbnRlcihwb2lu
dGVyKQorICAgICAgICAsIG1fZmlyc3RWaXNpdCh0cnVlKQogICAgIHsgfQogCiAgICAgdHlwZWRl
ZiBNZW1vcnlDbGFzc0luZm8gQ2xhc3NJbmZvOwpAQCAtNTQsOSArNTYsMTIgQEAgcHVibGljOgog
ICAgIE1lbW9yeU9iamVjdFR5cGUgb2JqZWN0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0
VHlwZTsgfQogICAgIHNpemVfdCBvYmplY3RTaXplKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RT
aXplOyB9CiAgICAgY29uc3Qgdm9pZCogcmVwb3J0ZWRQb2ludGVyKCkgY29uc3QgeyByZXR1cm4g
bV9wb2ludGVyOyB9CisgICAgYm9vbCBmaXJzdFZpc2l0KCkgY29uc3QgeyByZXR1cm4gbV9maXJz
dFZpc2l0OyB9CiAKICAgICB2b2lkIHNldENsYXNzTmFtZShjb25zdCBTdHJpbmcmIGNsYXNzTmFt
ZSkgeyBtX2NsYXNzTmFtZSA9IGNsYXNzTmFtZTsgfQorICAgIGNvbnN0IFN0cmluZyYgY2xhc3NO
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc05hbWU7IH0KICAgICB2b2lkIHNldE5hbWUoY29u
c3QgU3RyaW5nJiBuYW1lKSB7IG1fbmFtZSA9IG5hbWU7IH0KKyAgICBjb25zdCBTdHJpbmcmIG5h
bWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KIAogICAgIE1lbW9yeUluc3RydW1lbnRhdGlv
biogbWVtb3J5SW5zdHJ1bWVudGF0aW9uKCkgeyByZXR1cm4gbV9tZW1vcnlJbnN0cnVtZW50YXRp
b247IH0KIApAQCAtNjcsNiArNzIsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVwb3J0T2JqZWN0
SW5mbyhjb25zdCB2b2lkKiBwb2ludGVyLCBNZW1vcnlPYmplY3RUeXBlIG9iamVjdFR5cGUsIHNp
emVfdCBvYmplY3RTaXplKQogICAgIHsKICAgICAgICAgaWYgKCFtX29iamVjdFNpemUpIHsKKyAg
ICAgICAgICAgIGlmIChtX3BvaW50ZXIgIT0gcG9pbnRlciAmJiBtX3BvaW50ZXIgJiYgbV9tZW1v
cnlJbnN0cnVtZW50YXRpb24tPnZpc2l0ZWQocG9pbnRlcikpCisgICAgICAgICAgICAgICAgbV9m
aXJzdFZpc2l0ID0gZmFsc2U7CiAgICAgICAgICAgICBtX3BvaW50ZXIgPSBwb2ludGVyOwogICAg
ICAgICAgICAgbV9vYmplY3RTaXplID0gb2JqZWN0U2l6ZTsKICAgICAgICAgICAgIGlmIChvYmpl
Y3RUeXBlKQpAQCAtNzgsNiArODUsNyBAQCBwcml2YXRlOgogICAgIE1lbW9yeU9iamVjdFR5cGUg
bV9vYmplY3RUeXBlOwogICAgIHNpemVfdCBtX29iamVjdFNpemU7CiAgICAgY29uc3Qgdm9pZCog
bV9wb2ludGVyOworICAgIGJvb2wgbV9maXJzdFZpc2l0OwogICAgIFN0cmluZyBtX2NsYXNzTmFt
ZTsKICAgICBTdHJpbmcgbV9uYW1lOwogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwNzU4YzEwMjgwZGZjOTI1ZGZjMWFlODk2MzBkOWFlMTNm
ZGZlNDY0Li4yN2RjY2VjYWJjYWUxYjJjNjZhYWExZTc0ZjUzNjU3MzgyOWM2YWVjIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTItMTItMTAgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgTWVtb3J5IGluc3RydW1lbnRhdGlvbjogbWFrZSBzdXJlIGVhY2ggZWRnZSBpcyBy
ZXBvcnRlZCBvbmx5IG9uY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNDYzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRlc3QgdGhhdCBvdXRnb2luZyBlZGdlcyBhcmUgcmVwb3J0ZWQgb25seSBvbmNl
IGlmIHdlIGNvbWUgdG8gdGhlIHNhbWUKKyAgICAgICAgb2JqZWN0IHR3aWNlOiBmaXJzdCBieSBh
biBhZGRyZXNzIG9mIGEgYmFzZSBjbGFzcyBhbmQgdGhlbiBieSBhIHJlYWwgYWRkcmVzcworICAg
ICAgICBvZiB0aGUgb2JqZWN0LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
TWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdC5jcHA6CisKIDIwMTItMTItMTAgIFbDrWN0b3IgTWFu
dWVsIErDoXF1ZXogTGVhbCAgPHZqYXF1ZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNT
SU9OKHIxMzU4NjMpOiBHdGtMYXVuY2hlciAtLWhlbHAgbm8gbG9uZ2VyIGRpc3BsYXlzIGFsbCBo
ZWxwIG9wdGlvbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01l
bW9yeUluc3RydW1lbnRhdGlvblRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdC5jcHAKaW5kZXggYThkZDc5YzM1ZmM0ZjUyZGZk
OWY4NWYzN2NhZmYwZmMyNDJlMDVmOC4uZmM1NWJlMDM4MWFlMzI4YTAyN2Q1YzEwOGNlNzI4MjI0
ZGRjOGY1NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTWVtb3J5
SW5zdHJ1bWVudGF0aW9uVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdC5jcHAKQEAgLTE2NywxMyArMTY3LDIxIEBAIHB1
YmxpYzoKIGNsYXNzIEluc3RydW1lbnRlZCB7CiBwdWJsaWM6CiAgICAgSW5zdHJ1bWVudGVkKCkg
OiBtX25vdEluc3RydW1lbnRlZChuZXcgTm90SW5zdHJ1bWVudGVkKSB7IH0KLSAgICB2aXJ0dWFs
IH5JbnN0cnVtZW50ZWQoKSB7IGRlbGV0ZSBtX25vdEluc3RydW1lbnRlZDsgfQorICAgIHZpcnR1
YWwgfkluc3RydW1lbnRlZCgpIHsgZGlzcG9zZU93bmVkT2JqZWN0KCk7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJ
bmZvKSBjb25zdAogICAgIHsKICAgICAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2Jq
ZWN0SW5mbywgdGhpcywgVGVzdFR5cGUpOwotICAgICAgICBpbmZvLmFkZE1lbWJlcihtX25vdElu
c3RydW1lbnRlZCk7CisgICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnNldENsYXNzTmFtZSgiSW5z
dHJ1bWVudGVkIik7CisgICAgICAgIGluZm8uYWRkTWVtYmVyKG1fbm90SW5zdHJ1bWVudGVkLCAi
bV9ub3RJbnN0cnVtZW50ZWQiKTsKKyAgICB9CisKKyAgICB2b2lkIGRpc3Bvc2VPd25lZE9iamVj
dCgpCisgICAgeworICAgICAgICBkZWxldGUgbV9ub3RJbnN0cnVtZW50ZWQ7CisgICAgICAgIG1f
bm90SW5zdHJ1bWVudGVkID0gMDsKICAgICB9CisKICAgICBOb3RJbnN0cnVtZW50ZWQqIG1fbm90
SW5zdHJ1bWVudGVkOwogfTsKIApAQCAtNzk5LDYgKzgwNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0
SW5mbykgY29uc3QKICAgICB7CiAgICAgICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHRoaXMsIFRlc3RUeXBlKTsKKyAgICAgICAgSW5zdHJ1bWVudGVkOjpyZXBvcnRN
ZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKICAgICB9CiB9OwogCkBAIC04MTQsOCArODIz
LDggQEAgVEVTVChNZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LCBpbnN0cnVtZW50ZWRXaXRoTXVs
dGlwbGVBbmNlc3RvcnMpCiAKICAgICBoZWxwZXIuYWRkUm9vdE9iamVjdChkZXNjZW5kYW50UG9p
bnRlck93bmVyKTsKICAgICBoZWxwZXIuYWRkUm9vdE9iamVjdChhbmNlc3RvclBvaW50ZXJPd25l
cik7Ci0gICAgRVhQRUNUX0VRKHNpemVvZihDbGFzc1dpdGhUd29BbmNlc3RvcnMpLCBoZWxwZXIu
cmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDJ1LCBoZWxwZXIudmlz
aXRlZE9iamVjdHMoKSk7CisgICAgRVhQRUNUX0VRKHNpemVvZihDbGFzc1dpdGhUd29BbmNlc3Rv
cnMpICsgc2l6ZW9mKE5vdEluc3RydW1lbnRlZCksIGhlbHBlci5yZXBvcnRlZFNpemVGb3JBbGxU
eXBlcygpKTsKKyAgICBFWFBFQ1RfRVEoM3UsIGhlbHBlci52aXNpdGVkT2JqZWN0cygpKTsKIH0K
IAogY2xhc3MgQ2hlY2tDb3VudGVkT2JqZWN0c0NsaWVudCA6IHB1YmxpYyBNZW1vcnlJbnN0cnVt
ZW50YXRpb25UZXN0Q2xpZW50IHsKQEAgLTgzNyw2ICs4NDYsNyBAQCBwcml2YXRlOgogVEVTVChN
ZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LCBjaGVja0NvdW50ZWRPYmplY3RXaXRoTXVsdGlwbGVB
bmNlc3RvcnMpCiB7CiAgICAgT3duUHRyPENsYXNzV2l0aFR3b0FuY2VzdG9ycz4gaW5zdGFuY2Ug
PSBhZG9wdFB0cihuZXcgQ2xhc3NXaXRoVHdvQW5jZXN0b3JzKCkpOworICAgIGluc3RhbmNlLT5k
aXNwb3NlT3duZWRPYmplY3QoKTsKICAgICBDbGFzc1dpdGhUd29BbmNlc3RvcnMqIGRlc2NlbmRh
bnRQb2ludGVyID0gaW5zdGFuY2UuZ2V0KCk7CiAgICAgSW5zdHJ1bWVudGVkT3duZXI8Q2xhc3NX
aXRoVHdvQW5jZXN0b3JzKj4gZGVzY2VuZGFudFBvaW50ZXJPd25lcihkZXNjZW5kYW50UG9pbnRl
cik7CiAgICAgSW5zdHJ1bWVudGVkKiBhbmNlc3RvclBvaW50ZXIgPSBkZXNjZW5kYW50UG9pbnRl
cjsKQEAgLTg1MCw1ICs4NjAsNDkgQEAgVEVTVChNZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LCBj
aGVja0NvdW50ZWRPYmplY3RXaXRoTXVsdGlwbGVBbmNlc3RvcnMpCiAgICAgRVhQRUNUX1RSVUUo
Y2xpZW50LmV4cGVjdGVkUG9pbnRlckZvdW5kKCkpOwogfQogCitjbGFzcyBUd29Qb2ludGVyc1Rv
U2FtZUluc3J1bWVudGVkIHsKK3B1YmxpYzoKKyAgICBUd29Qb2ludGVyc1RvU2FtZUluc3J1bWVu
dGVkKCkKKyAgICAgICAgOiBtX293blB0cihhZG9wdFB0cihuZXcgQ2xhc3NXaXRoVHdvQW5jZXN0
b3JzKCkpKQorICAgICAgICAsIG1fYmFzZUNsYXNzUHRyKG1fb3duUHRyLmdldCgpKQorICAgIHsK
KyAgICAgICAgRVhQRUNUX05FKHN0YXRpY19jYXN0PHZvaWQqPihtX293blB0ci5nZXQoKSksIHN0
YXRpY19jYXN0PHZvaWQqPihtX2Jhc2VDbGFzc1B0cikpOworICAgIH0KKyAgICB2b2lkIHJlcG9y
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cisg
ICAgeworICAgICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlz
LCBUZXN0VHlwZSk7CisgICAgICAgIGluZm8uYWRkTWVtYmVyKG1fb3duUHRyKTsKKyAgICAgICAg
aW5mby5hZGRNZW1iZXIobV9iYXNlQ2xhc3NQdHIpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBP
d25QdHI8Q2xhc3NXaXRoVHdvQW5jZXN0b3JzPiBtX293blB0cjsKKyAgICBJbnN0cnVtZW50ZWQq
IG1fYmFzZUNsYXNzUHRyOworfTsKKworY2xhc3MgQ291bnRMaW5rc0Zyb21JbnN0cnVtZW50ZWRP
YmplY3QgOiBwdWJsaWMgTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdENsaWVudCB7CitwdWJsaWM6
CisgICAgQ291bnRMaW5rc0Zyb21JbnN0cnVtZW50ZWRPYmplY3QoKSA6IG1fbGlua0NvdW50KDAp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFZGdlKGNvbnN0IHZvaWQqIHNvdXJjZSwgY29u
c3Qgdm9pZCogZGVzdGluYXRpb24sIGNvbnN0IGNoYXIqIG5hbWUpIE9WRVJSSURFCisgICAgewor
ICAgICAgICBpZiAobmFtZSAmJiAhc3RyY21wKCJtX25vdEluc3RydW1lbnRlZCIsIG5hbWUpKQor
ICAgICAgICAgICAgbV9saW5rQ291bnQrKzsKKyAgICB9CisgICAgaW50IGxpbmtDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGlua0NvdW50OyB9CisKK3ByaXZhdGU6CisgICAgaW50IG1fbGlua0Nv
dW50OworfTsKKworCitURVNUKE1lbW9yeUluc3RydW1lbnRhdGlvblRlc3QsIGRvTm90UmVwb3J0
RWRnZVR3aWNlKQoreworICAgIE93blB0cjxUd29Qb2ludGVyc1RvU2FtZUluc3J1bWVudGVkPiBp
bnN0YW5jZSA9IGFkb3B0UHRyKG5ldyBUd29Qb2ludGVyc1RvU2FtZUluc3J1bWVudGVkKCkpOwor
CisgICAgQ291bnRMaW5rc0Zyb21JbnN0cnVtZW50ZWRPYmplY3QgY2xpZW50OworICAgIEluc3Ry
dW1lbnRhdGlvblRlc3RJbXBsIGluc3RydW1lbnRhdGlvbigmY2xpZW50KTsKKyAgICBpbnN0cnVt
ZW50YXRpb24uYWRkUm9vdE9iamVjdChpbnN0YW5jZSk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVu
dC5saW5rQ291bnQoKSk7Cit9CiB9IC8vIG5hbWVzcGFjZQogCg==
</data>
<flag name="review"
          id="195328"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="195333"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>