<?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>103232</bug_id>
          
          <creation_ts>2012-11-26 02:37:03 -0800</creation_ts>
          <short_desc>Web Inspector: NMI introduce heap graph recording API</short_desc>
          <delta_ts>2012-12-04 14:03:15 -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="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>apavlov</cc>
    
    <cc>benjamin</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>ojan</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>775285</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-11-26 02:37:03 -0800</bug_when>
    <thetext>Currently we have a plain memory usage statistic based on types.
Unfortunately this &apos;type&apos; to &apos;size&apos; information couldn&apos;t help to web developers.
They need an information about instances and owners.

As example even about:blank page has ~5MB of Page.Image.
This fact confuses the developers. Actually this image is a part of Inspector backend
because it creates and uses a canvas in InspectorOverlay.

After long offline discussion we came to the conclusion that we need to record a heap graph.

We need to have 2 methods for that. reportNode and reportEdge.
But due to c++ multiple inheritance we need a helper method reportAssociation which associates a pointer to parent class with pointer to descendant class.

patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775338</commentid>
    <comment_count>1</comment_count>
      <attachid>175966</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-11-26 04:04:46 -0800</bug_when>
    <thetext>Created attachment 175966
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775347</commentid>
    <comment_count>2</comment_count>
      <attachid>175966</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-11-26 04:27:34 -0800</bug_when>
    <thetext>Comment on attachment 175966
Patch

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

Let&apos;s split the patch into smaller parts.

&gt; Source/WTF/ChangeLog:8
&gt; +        reportNode, reportEdge and reportAssociation were added to the client API

There is no reportAssociation.

&gt; Source/WTF/ChangeLog:10
&gt; +        InstrumentedPointerBase and InstrumentedPointer&lt;T&gt; wer renamed to PointerBase

wer-&gt; were

&gt; Source/WTF/ChangeLog:13
&gt; +        Pointer&lt;T&gt;::m_pointer was upstreamed to PointerBase because it needs to PointerBase::process method.

it needs to PointerBase::process method -&gt;  PointerBase::process uses it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775350</commentid>
    <comment_count>3</comment_count>
      <attachid>175966</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-26 04:31:48 -0800</bug_when>
    <thetext>Comment on attachment 175966
Patch

Attachment 175966 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14981638</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775363</commentid>
    <comment_count>4</comment_count>
      <attachid>175966</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-26 04:51:27 -0800</bug_when>
    <thetext>Comment on attachment 175966
Patch

Attachment 175966 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14992601</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781604</commentid>
    <comment_count>5</comment_count>
      <attachid>177282</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-03 10:29:23 -0800</bug_when>
    <thetext>Created attachment 177282
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781616</commentid>
    <comment_count>6</comment_count>
      <attachid>177282</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-12-03 10:38:43 -0800</bug_when>
    <thetext>Comment on attachment 177282
WIP

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

&gt; Source/WTF/wtf/MemoryInstrumentation.h:45
&gt; +class String;

unnecessary line

&gt; Source/WTF/wtf/MemoryInstrumentation.h:169
&gt; +    template&lt;typename T&gt; void addObjectImpl(const T* const&amp;, MemoryObjectInfo*, MemoryOwningType, const char* name);

I think it should be called edgeName.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781662</commentid>
    <comment_count>7</comment_count>
      <attachid>177282</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-03 11:04:49 -0800</bug_when>
    <thetext>Comment on attachment 177282
WIP

Attachment 177282 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15120419</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781665</commentid>
    <comment_count>8</comment_count>
      <attachid>177282</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-03 11:07:00 -0800</bug_when>
    <thetext>Comment on attachment 177282
WIP

Attachment 177282 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15132023</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781754</commentid>
    <comment_count>9</comment_count>
      <attachid>177282</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-12-03 12:14:41 -0800</bug_when>
    <thetext>Comment on attachment 177282
WIP

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

&gt; Source/WTF/wtf/MemoryInstrumentation.h:63
&gt; +    virtual void reportHeapObject(const MemoryObjectInfo&amp;) { }

I prefer reportNode method name.

&gt; Source/WTF/wtf/MemoryInstrumentation.h:64
&gt; +    virtual void reportEdge(const void* source, const void* target, const char* name) { }

looks like we need a method for leafs: reportNodeLeaf
which will be used for reporting private buffers with no pointer. 
it is required because we have no pointer and have to report the size together with edge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782031</commentid>
    <comment_count>10</comment_count>
      <attachid>177371</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-03 16:43:08 -0800</bug_when>
    <thetext>Created attachment 177371
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782032</commentid>
    <comment_count>11</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-03 16:44:47 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 177282 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177282&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/MemoryInstrumentation.h:63
&gt; &gt; +    virtual void reportHeapObject(const MemoryObjectInfo&amp;) { }
&gt; 
&gt; I prefer reportNode method name.
&gt; 
Done.

&gt; &gt; Source/WTF/wtf/MemoryInstrumentation.h:64
&gt; &gt; +    virtual void reportEdge(const void* source, const void* target, const char* name) { }
&gt; 
&gt; looks like we need a method for leafs: reportNodeLeaf
&gt; which will be used for reporting private buffers with no pointer. 
&gt; it is required because we have no pointer and have to report the size together with edge.
Added reportLeaf for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782037</commentid>
    <comment_count>12</comment_count>
      <attachid>177371</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-12-03 16:49:37 -0800</bug_when>
    <thetext>Comment on attachment 177371
WIP

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

&gt; Source/WTF/wtf/MemoryInstrumentation.cpp:115
&gt; +    m_memoryInstrumentation-&gt;addRawBuffer(m_memoryObjectInfo-&gt;reportedPointer(), buffer, m_objectType, size);

I think we need a node name argument here with default value 0

&gt; Source/WTF/wtf/MemoryInstrumentation.cpp:125
&gt; +    m_memoryInstrumentation-&gt;reportLinkToBuffer(m_memoryObjectInfo-&gt;reportedPointer(), 0, ownerObjectType, size);

ditto

&gt; Source/WTF/wtf/MemoryInstrumentation.h:45
&gt; +class String;

unnecessary forward declaration

&gt; Source/WTF/wtf/MemoryInstrumentation.h:146
&gt; +    template&lt;typename T&gt; void addObject(const T&amp; t, MemoryObjectInfo* ownerObjectInfo, const char* name) { OwningTraits&lt;T&gt;::addObject(this, t, ownerObjectInfo, name); }

name -&gt; edgeName</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782062</commentid>
    <comment_count>13</comment_count>
      <attachid>177380</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-03 17:17:58 -0800</bug_when>
    <thetext>Created attachment 177380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782071</commentid>
    <comment_count>14</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-03 17:34:51 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 177371 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177371&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/MemoryInstrumentation.cpp:115
&gt; &gt; +    m_memoryInstrumentation-&gt;addRawBuffer(m_memoryObjectInfo-&gt;reportedPointer(), buffer, m_objectType, size);
&gt; 
&gt; I think we need a node name argument here with default value 0
&gt; 
Done.

&gt; &gt; Source/WTF/wtf/MemoryInstrumentation.cpp:125
&gt; &gt; +    m_memoryInstrumentation-&gt;reportLinkToBuffer(m_memoryObjectInfo-&gt;reportedPointer(), 0, ownerObjectType, size);
&gt; 
&gt; ditto
&gt; 
Done.

&gt; &gt; Source/WTF/wtf/MemoryInstrumentation.h:45
&gt; &gt; +class String;
&gt; 
&gt; unnecessary forward declaration
&gt; 
Done.

&gt; &gt; Source/WTF/wtf/MemoryInstrumentation.h:146
&gt; &gt; +    template&lt;typename T&gt; void addObject(const T&amp; t, MemoryObjectInfo* ownerObjectInfo, const char* name) { OwningTraits&lt;T&gt;::addObject(this, t, ownerObjectInfo, name); }
&gt; 
&gt; name -&gt; edgeName
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782080</commentid>
    <comment_count>15</comment_count>
      <attachid>177380</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-12-03 17:54:10 -0800</bug_when>
    <thetext>Comment on attachment 177380
Patch

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

&gt; Source/WTF/wtf/MemoryInstrumentation.cpp:71
&gt; +    memoryObjectInfo.reportObjectInfo(buffer, ownerObjectType, size);

What about assigning nodeName?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782082</commentid>
    <comment_count>16</comment_count>
      <attachid>177380</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-03 17:57:39 -0800</bug_when>
    <thetext>Comment on attachment 177380
Patch

Attachment 177380 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15135001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782095</commentid>
    <comment_count>17</comment_count>
      <attachid>177380</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-12-03 18:13:02 -0800</bug_when>
    <thetext>Comment on attachment 177380
Patch

otherwise looks good</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782103</commentid>
    <comment_count>18</comment_count>
      <attachid>177388</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-03 18:20:02 -0800</bug_when>
    <thetext>Created attachment 177388
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782165</commentid>
    <comment_count>19</comment_count>
      <attachid>177388</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-03 20:17:42 -0800</bug_when>
    <thetext>Comment on attachment 177388
Patch

Attachment 177388 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15098851</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782906</commentid>
    <comment_count>20</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-04 14:03:15 -0800</bug_when>
    <thetext>Committed r136563: &lt;http://trac.webkit.org/changeset/136563&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175966</attachid>
            <date>2012-11-26 04:04:46 -0800</date>
            <delta_ts>2012-12-03 10:29:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103232-20121126160224.patch</filename>
            <type>text/plain</type>
            <size>25917</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVkZDBlOWI4MmFjNzgyZjE0YWVhZGUz
MTA5MWY3YmFlMzQ2ZjNlMDYuLmFiYmViMWY4Y2Q2ZTM1MjY1ZmNhMWE1M2U2Y2Y4N2UxM2E0MDE5
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTItMTEtMjYgIElseWEgVGlraG9ub3Zza3kgIDxs
b2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5NSSBpbnRyb2R1
Y2UgaGVhcCBncmFwaCByZWNvcmRpbmcgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMyMzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICByZXBvcnROb2RlLCByZXBvcnRFZGdlIGFuZCByZXBvcnRBc3Nv
Y2lhdGlvbiB3ZXJlIGFkZGVkIHRvIHRoZSBjbGllbnQgQVBJCisKKyAgICAgICAgSW5zdHJ1bWVu
dGVkUG9pbnRlckJhc2UgYW5kIEluc3RydW1lbnRlZFBvaW50ZXI8VD4gd2VyIHJlbmFtZWQgdG8g
UG9pbnRlckJhc2UKKyAgICAgICAgYW5kIFBvaW50ZXI8VD4gYmVjYXVzZSB0aGV5IGNhbiB3b3Jr
IGV2ZW4gd2l0aCBub3QgaW5zdHJ1bWVudGVkIHBvaW50ZXJzLgorCisgICAgICAgIFBvaW50ZXI8
VD46Om1fcG9pbnRlciB3YXMgdXBzdHJlYW1lZCB0byBQb2ludGVyQmFzZSBiZWNhdXNlIGl0IG5l
ZWRzIHRvIFBvaW50ZXJCYXNlOjpwcm9jZXNzIG1ldGhvZC4KKworICAgICAgICBQb2ludGVyPFQ+
Ojpwcm9jZXNzIG1ldGhvZCB3YXMgcmV1c2VkIGZvciBwcm9jZXNzaW5nIHRoZSBvYmplY3RzIHZp
c2l0ZWQgYnlSZWZlcmVuY2UuCisKKyAgICAgICAgVGhlIGNvZGUgd2hpY2ggY292ZXJzIG11bHRp
cGxlIGluaGVyaXRhbmNlIHdlcmUgbW92ZWQgdG8gTWVtb3J5T2JqZWN0SW5mbzo6cmVwb3J0T2Jq
ZWN0SW5mby4KKworICAgICAgICBNZW1vcnlDbGFzc0luZm86OmFkZE1lbWJlciBza2lwcyBvYmpl
Y3QgbWVtYmVycyBpZiB0aGUgb2JqZWN0IGl0c2VsZiBoYXMgYmVlbiB2aXNpdGVkIGJlZm9yZQor
ICAgICAgICB2aWEgcG9pbnRlciB0byBkZXJpdmVkIGNsYXNzIG9iamVjdC4KKworICAgICAgICBD
b3ZlcmVkIGJ5IFRlc3RXZWJLaXRBUEkgdGVzdHMuCisKKyAgICAgICAgKiB3dGYvTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpN
ZW1vcnlJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV1RGOjpNZW1vcnlJbnN0cnVtZW50YXRp
b246OlBvaW50ZXJCYXNlOjpQb2ludGVyQmFzZSk6CisgICAgICAgIChXVEY6Ok1lbW9yeUluc3Ry
dW1lbnRhdGlvbjo6UG9pbnRlckJhc2U6OnByb2Nlc3MpOgorICAgICAgICAoV1RGOjpNZW1vcnlD
bGFzc0luZm86OmluaXQpOgorICAgICAgICAoV1RGOjpNZW1vcnlDbGFzc0luZm86OmFkZFJhd0J1
ZmZlcik6CisgICAgICAgIChXVEY6Ok1lbW9yeUNsYXNzSW5mbzo6YWRkUHJpdmF0ZUJ1ZmZlcik6
CisgICAgICAgICogd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoTWVtb3J5
SW5zdHJ1bWVudGF0aW9uQ2xpZW50KToKKyAgICAgICAgKFdURjo6TWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjphZGRSb290T2JqZWN0KToKKyAgICAgICAgKFBvaW50ZXJCYXNlKToKKyAgICAgICAgKFdU
Rjo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpQb2ludGVyQmFzZTo6flBvaW50ZXJCYXNlKToKKyAg
ICAgICAgKFdURjo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpyZXBvcnRFZGdlKToKKyAgICAgICAg
KFdURjo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpyZXBvcnROb2RlKToKKyAgICAgICAgKFdURjo6
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpyZXBvcnRUcmFuc2xhdGlvbik6CisgICAgICAgIChNZW1v
cnlJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoUG9pbnRlcik6CisgICAgICAgIChXVEY6Ok1l
bW9yeUluc3RydW1lbnRhdGlvbjo6YWRkUmF3QnVmZmVyKToKKyAgICAgICAgKFdURjo6TWVtb3J5
Q2xhc3NJbmZvOjpNZW1vcnlDbGFzc0luZm8pOgorICAgICAgICAoTWVtb3J5Q2xhc3NJbmZvKToK
KyAgICAgICAgKFdURjo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRPYmplY3RJbXBsKToKKyAg
ICAgICAgKFdURjo6OjpQb2ludGVyKToKKyAgICAgICAgKFdURjo6OjpjYWxsUmVwb3J0TWVtb3J5
VXNhZ2UpOgorICAgICAgICAqIHd0Zi9NZW1vcnlPYmplY3RJbmZvLmg6CisgICAgICAgIChXVEY6
Ok1lbW9yeU9iamVjdEluZm86Ok1lbW9yeU9iamVjdEluZm8pOgorICAgICAgICAoV1RGOjpNZW1v
cnlPYmplY3RJbmZvOjppc1Zpc2l0ZWQpOgorICAgICAgICAoV1RGOjpNZW1vcnlPYmplY3RJbmZv
OjpyZXBvcnRPYmplY3RJbmZvKToKKyAgICAgICAgKE1lbW9yeU9iamVjdEluZm8pOgorCiAyMDEy
LTExLTI0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ2hyb21p
dW0gc2hvdWxkIHVzZSBUQ01hbGxvYyBvbiBNYWMgdG8gZ28gZmFzdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGZl
YTFlNjM2YjEzY2VlM2FjMmQ5YTk3YmQwYjBmMDQxOTI0YzJlMzcuLmM4MjJkNDQ5MDhkMWNjYjk0
ZDE2MjZjZDQ4MGZkYWVhOGQ0ZjYyMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAx
Mi0xMS0yNiAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgV2ViIEluc3BlY3RvcjogTk1JIGludHJvZHVjZSBoZWFwIGdyYXBoIHJlY29yZGluZyBBUEkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzIzMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGwgY2xh
c3NlcyB3ZXJlIGFkanVzdGVkIGFjY29yZGluZyB0byB0aGUgY2hhbmdlcyBpbiB3dGYvTWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmgKKworICAgICAgICBFbXB0eSBoZWFwIGdyYXBoIHJlY29yZGluZyBB
UEkgbWV0aG9kcyB3ZXJlIGludHJvZHVjZWQuCisKKyAgICAgICAgQ292ZXJlZCBieSBUZXN0V2Vi
S2l0QVBJIHRlc3RzLgorCisgICAgICAgICogaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlv
bkltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50
SW1wbDo6cmVwb3J0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGw6OnJlcG9ydEVkZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbDo6cmVwb3J0VHJhbnNsYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbDo6cHJvY2Vz
c0RlZmVycmVkUG9pbnRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0
aW9uSW1wbDo6ZGVmZXJQb2ludGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1l
bnRhdGlvbkltcGw6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTWVt
b3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5oOgorICAgICAgICAoTWVtb3J5SW5zdHJ1bWVudGF0aW9u
Q2xpZW50SW1wbCk6CisgICAgICAgIChNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsKToKKwogMjAx
Mi0xMS0yNiAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W1Y4XSBSZW1vdmUgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dURi93dGYvTWVt
b3J5SW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBkNGJlMmI2ZGNmYjQ2NmY1MjE2ZDk3MWM3MTNm
MmEzOTE5MTI1ZTM2Li43YzE5M2ZmYzQ3ZTBjMDk2NWFkYzE2MWZlYjcyZmZjMTc2MzFiZmEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTQyLDcgKzQyLDcg
QEAgbmFtZXNwYWNlIFdURiB7CiAKIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6TWVtb3J5SW5zdHJ1
bWVudGF0aW9uKE1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudCogY2xpZW50KQogICAgIDogbV9j
bGllbnQoY2xpZW50KQotICAgICwgbV9yb290T2JqZWN0SW5mbyhhZG9wdFB0cihuZXcgTWVtb3J5
T2JqZWN0SW5mbyh0aGlzLCAwKSkpCisgICAgLCBtX3Jvb3RPYmplY3RJbmZvKGFkb3B0UHRyKG5l
dyBNZW1vcnlPYmplY3RJbmZvKHRoaXMsIDAsIGNsaWVudCwgYnlQb2ludGVyKSkpCiB7CiB9CiAK
QEAgLTYwLDggKzYwLDEwIEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpjYWxsUmVwb3J0
T2JqZWN0SW5mbyhNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJCiAgICAgbWVtb3J5T2Jq
ZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyhwb2ludGVyLCBvYmplY3RUeXBlLCBvYmplY3RTaXpl
KTsKIH0KIAotTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpJbnN0cnVtZW50ZWRQb2ludGVyQmFzZTo6
SW5zdHJ1bWVudGVkUG9pbnRlckJhc2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5m
bykKLSAgICA6IG1fb3duZXJPYmplY3RUeXBlKG1lbW9yeU9iamVjdEluZm8tPm9iamVjdFR5cGUo
KSkKK01lbW9yeUluc3RydW1lbnRhdGlvbjo6UG9pbnRlckJhc2U6OlBvaW50ZXJCYXNlKGNvbnN0
IHZvaWQqIHBvaW50ZXIsIE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8sIE1lbW9y
eU93bmluZ1R5cGUgb3duaW5nVHlwZSkKKyAgICA6IG1fcG9pbnRlcihwb2ludGVyKQorICAgICwg
bV9vd25lck9iamVjdFR5cGUobWVtb3J5T2JqZWN0SW5mby0+b2JqZWN0VHlwZSgpKQorICAgICwg
bV9vd25pbmdUeXBlKG93bmluZ1R5cGUpCiB7CiAjaWYgREVCVUdfUE9JTlRFUl9JTlNUUlVNRU5U
QVRJT04KICAgICBtX2NhbGxTdGFja1NpemUgPSBzX21heENhbGxTdGFja1NpemU7CkBAIC02OSwx
NyArNzEsMjAgQEAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpJbnN0cnVtZW50ZWRQb2ludGVyQmFz
ZTo6SW5zdHJ1bWVudGVkUG9pbnRlckJhc2UoTWVtb3J5T2IKICNlbmRpZgogfQogCi12b2lkIE1l
bW9yeUluc3RydW1lbnRhdGlvbjo6SW5zdHJ1bWVudGVkUG9pbnRlckJhc2U6OnByb2Nlc3MoTWVt
b3J5SW5zdHJ1bWVudGF0aW9uKiBtZW1vcnlJbnN0cnVtZW50YXRpb24pCit2b2lkIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6UG9pbnRlckJhc2U6OnByb2Nlc3MoTWVtb3J5SW5zdHJ1bWVudGF0aW9u
KiBtZW1vcnlJbnN0cnVtZW50YXRpb24pCiB7Ci0gICAgTWVtb3J5T2JqZWN0SW5mbyBtZW1vcnlP
YmplY3RJbmZvKG1lbW9yeUluc3RydW1lbnRhdGlvbiwgbV9vd25lck9iamVjdFR5cGUpOwotICAg
IGNvbnN0IHZvaWQqIG9yaWdpbmFsUG9pbnRlciA9IGNhbGxSZXBvcnRNZW1vcnlVc2FnZSgmbWVt
b3J5T2JqZWN0SW5mbyk7CisgICAgTWVtb3J5T2JqZWN0SW5mbyBtZW1vcnlPYmplY3RJbmZvKG1l
bW9yeUluc3RydW1lbnRhdGlvbiwgbV9vd25lck9iamVjdFR5cGUsIG1fcG9pbnRlciwgbV9vd25p
bmdUeXBlKTsKKyAgICBjYWxsUmVwb3J0TWVtb3J5VXNhZ2UoJm1lbW9yeU9iamVjdEluZm8pOwog
Ci0gICAgY29uc3Qgdm9pZCogcG9pbnRlciA9IG1lbW9yeU9iamVjdEluZm8ucmVwb3J0ZWRQb2lu
dGVyKCk7Ci0gICAgQVNTRVJUKHBvaW50ZXIpOwotICAgIGlmIChwb2ludGVyICE9IG9yaWdpbmFs
UG9pbnRlciAmJiBtZW1vcnlJbnN0cnVtZW50YXRpb24tPnZpc2l0ZWQocG9pbnRlcikpCisgICAg
Ly8gSWYgdGhlIG9iamVjdCBpcyBvd25lZCBieSByZWZlcmVuY2UgdGhlIG9ubHkgdGhpbmcgd2Ug
bmVlZCBpcyB0byBncmFiIGl0cyBtZW1iZXJzLgorICAgIGlmIChtX293bmluZ1R5cGUgPT0gYnlS
ZWZlcmVuY2UpCiAgICAgICAgIHJldHVybjsKLSAgICBtZW1vcnlJbnN0cnVtZW50YXRpb24tPmNv
dW50T2JqZWN0U2l6ZShwb2ludGVyLCBtZW1vcnlPYmplY3RJbmZvLm9iamVjdFR5cGUoKSwgbWVt
b3J5T2JqZWN0SW5mby5vYmplY3RTaXplKCkpOwotICAgIGlmICghbWVtb3J5SW5zdHJ1bWVudGF0
aW9uLT5jaGVja0NvdW50ZWRPYmplY3QocG9pbnRlcikpIHsKKworICAgIGlmIChtZW1vcnlPYmpl
Y3RJbmZvLmlzVmlzaXRlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtZW1vcnlJbnN0cnVt
ZW50YXRpb24tPmNvdW50T2JqZWN0U2l6ZShtX3BvaW50ZXIsIG1lbW9yeU9iamVjdEluZm8ub2Jq
ZWN0VHlwZSgpLCBtZW1vcnlPYmplY3RJbmZvLm9iamVjdFNpemUoKSk7CisgICAgaWYgKCFtZW1v
cnlJbnN0cnVtZW50YXRpb24tPmNoZWNrQ291bnRlZE9iamVjdChtX3BvaW50ZXIpKSB7CiAjaWYg
REVCVUdfUE9JTlRFUl9JTlNUUlVNRU5UQVRJT04KICAgICAgICAgZnB1dHMoIlVua25vd24gb2Jq
ZWN0IGNvdW50ZWQ6XG4iLCBzdGRlcnIpOwogICAgICAgICBXVEZQcmludEJhY2t0cmFjZShtX2Nh
bGxTdGFjaywgbV9jYWxsU3RhY2tTaXplKTsKQEAgLTg5LDE4ICs5NCwyMiBAQCB2b2lkIE1lbW9y
eUluc3RydW1lbnRhdGlvbjo6SW5zdHJ1bWVudGVkUG9pbnRlckJhc2U6OnByb2Nlc3MoTWVtb3J5
SW5zdHJ1bWVudGF0aQogCiB2b2lkIE1lbW9yeUNsYXNzSW5mbzo6aW5pdChjb25zdCB2b2lkKiBw
b2ludGVyLCBNZW1vcnlPYmplY3RUeXBlIG9iamVjdFR5cGUsIHNpemVfdCBhY3R1YWxTaXplKQog
ewotICAgIG1fbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyhwb2ludGVyLCBvYmpl
Y3RUeXBlLCBhY3R1YWxTaXplKTsKKyAgICBtX3Zpc2l0ZWQgPSBtX21lbW9yeU9iamVjdEluZm8t
PnJlcG9ydE9iamVjdEluZm8ocG9pbnRlciwgb2JqZWN0VHlwZSwgYWN0dWFsU2l6ZSk7CiAgICAg
bV9tZW1vcnlJbnN0cnVtZW50YXRpb24gPSBtX21lbW9yeU9iamVjdEluZm8tPm1lbW9yeUluc3Ry
dW1lbnRhdGlvbigpOwogICAgIG1fb2JqZWN0VHlwZSA9IG1fbWVtb3J5T2JqZWN0SW5mby0+b2Jq
ZWN0VHlwZSgpOwogfQogCiB2b2lkIE1lbW9yeUNsYXNzSW5mbzo6YWRkUmF3QnVmZmVyKGNvbnN0
IHZvaWQqIGNvbnN0JiBidWZmZXIsIHNpemVfdCBzaXplKQogewotICAgIG1fbWVtb3J5SW5zdHJ1
bWVudGF0aW9uLT5hZGRSYXdCdWZmZXIoYnVmZmVyLCBtX29iamVjdFR5cGUsIHNpemUpOworICAg
IGlmIChtX3Zpc2l0ZWQpCisgICAgICAgIHJldHVybjsKKyAgICBtX21lbW9yeUluc3RydW1lbnRh
dGlvbi0+YWRkUmF3QnVmZmVyKGJ1ZmZlciwgbV9tZW1vcnlPYmplY3RJbmZvLCBzaXplKTsKIH0K
IAogdm9pZCBNZW1vcnlDbGFzc0luZm86OmFkZFByaXZhdGVCdWZmZXIoc2l6ZV90IHNpemUsIE1l
bW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlKQogeworICAgIGlmIChtX3Zpc2l0ZWQpCisg
ICAgICAgIHJldHVybjsKICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAo
IW93bmVyT2JqZWN0VHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3Ry
dW1lbnRhdGlvbi5oIGIvU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKaW5k
ZXggMmE2ODMyYjcxZjZjZTczZGZiMzU2ZDZjNjc4OTUwZjk3NDQ4YzAyYy4uODMyYWY0NzZlNGMz
NTk0NjM5ODgyYjdkMjFmMzA3NDNiNjFjNDM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
TWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmgKQEAgLTU1LDYgKzU1LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQg
cmVwb3J0TWVtb3J5VXNhZ2UoY29uc3QgVCogY29uc3QmLCBNZW1vcnlPYmplY3RJbmZvKik7CiBj
bGFzcyBNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwg
fk1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHJl
cG9ydE5vZGUoTWVtb3J5T2JqZWN0SW5mbyopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0
RWRnZShNZW1vcnlPYmplY3RJbmZvKiwgY29uc3Qgdm9pZCopID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVwb3J0VHJhbnNsYXRpb24oY29uc3Qgdm9pZCogZnJvbSwgY29uc3Qgdm9pZCogdG8pID0g
MDsKKwogICAgIHZpcnR1YWwgdm9pZCBjb3VudE9iamVjdFNpemUoY29uc3Qgdm9pZCosIE1lbW9y
eU9iamVjdFR5cGUsIHNpemVfdCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCB2aXNpdGVkKGNvbnN0
IHZvaWQqKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGNoZWNrQ291bnRlZE9iamVjdChjb25zdCB2
b2lkKikgPSAwOwpAQCAtNjgsMjEgKzczLDIzIEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gdm9pZCBhZGRSb290T2JqZWN0KGNvbnN0IFQmIHQpCiAgICAgewogICAgICAgICBh
ZGRPYmplY3QodCwgbV9yb290T2JqZWN0SW5mby5nZXQoKSk7Ci0gICAgICAgIHByb2Nlc3NEZWZl
cnJlZEluc3RydW1lbnRlZFBvaW50ZXJzKCk7CisgICAgICAgIHByb2Nlc3NEZWZlcnJlZFBvaW50
ZXJzKCk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgY2xhc3MgSW5zdHJ1bWVudGVkUG9pbnRl
ckJhc2UgeworICAgIGNsYXNzIFBvaW50ZXJCYXNlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBleHBsaWNpdCBJbnN0cnVtZW50ZWRQb2ludGVyQmFzZShNZW1vcnlP
YmplY3RJbmZvKik7Ci0gICAgICAgIHZpcnR1YWwgfkluc3RydW1lbnRlZFBvaW50ZXJCYXNlKCkg
eyB9CisgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSBleHBsaWNpdCBQb2ludGVyQmFzZShjb25z
dCB2b2lkKiwgTWVtb3J5T2JqZWN0SW5mbyosIGNvbnN0IE1lbW9yeU93bmluZ1R5cGUpOworICAg
ICAgICB2aXJ0dWFsIH5Qb2ludGVyQmFzZSgpIHsgfQogICAgICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBwcm9jZXNzKE1lbW9yeUluc3RydW1lbnRhdGlvbiopOwogCiAgICAgcHJvdGVjdGVk
OgotICAgICAgICB2aXJ0dWFsIGNvbnN0IHZvaWQqIGNhbGxSZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgY2FsbFJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSA9IDA7CiAKKyAgICAgICAgY29uc3Qgdm9pZCogbV9w
b2ludGVyOwogICAgIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IE1lbW9yeU9iamVjdFR5cGUgbV9v
d25lck9iamVjdFR5cGU7CisgICAgICAgIGNvbnN0IE1lbW9yeU93bmluZ1R5cGUgbV9vd25pbmdU
eXBlOwogI2lmIERFQlVHX1BPSU5URVJfSU5TVFJVTUVOVEFUSU9OCiAgICAgICAgIHN0YXRpYyBj
b25zdCBpbnQgc19tYXhDYWxsU3RhY2tTaXplID0gMzI7CiAgICAgICAgIHZvaWQqIG1fY2FsbFN0
YWNrW3NfbWF4Q2FsbFN0YWNrU2l6ZV07CkBAIC05MiwxNSArOTksMTkgQEAgcHJvdGVjdGVkOgog
CiBwcml2YXRlOgogICAgIHZvaWQgY291bnRPYmplY3RTaXplKGNvbnN0IHZvaWQqIG9iamVjdCwg
TWVtb3J5T2JqZWN0VHlwZSBvYmplY3RUeXBlLCBzaXplX3Qgc2l6ZSkgeyBtX2NsaWVudC0+Y291
bnRPYmplY3RTaXplKG9iamVjdCwgb2JqZWN0VHlwZSwgc2l6ZSk7IH0KKyAgICB2b2lkIHJlcG9y
dEVkZ2UoTWVtb3J5T2JqZWN0SW5mbyogcGFyZW50T2JqZWN0SW5mbywgY29uc3Qgdm9pZCogdG9P
YmplY3QpIHsgbV9jbGllbnQtPnJlcG9ydEVkZ2UocGFyZW50T2JqZWN0SW5mbywgdG9PYmplY3Qp
OyB9CisgICAgdm9pZCByZXBvcnROb2RlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIHsgbV9jbGllbnQtPnJlcG9ydE5vZGUobWVtb3J5T2JqZWN0SW5mbyk7IH0KKyAgICB2b2lk
IHJlcG9ydFRyYW5zbGF0aW9uKGNvbnN0IHZvaWQqIGZyb20sIGNvbnN0IHZvaWQqIHRvKSB7IG1f
Y2xpZW50LT5yZXBvcnRUcmFuc2xhdGlvbihmcm9tLCB0byk7IH0KICAgICBib29sIHZpc2l0ZWQo
Y29uc3Qgdm9pZCogcG9pbnRlcikgeyByZXR1cm4gbV9jbGllbnQtPnZpc2l0ZWQocG9pbnRlcik7
IH0KICAgICBib29sIGNoZWNrQ291bnRlZE9iamVjdChjb25zdCB2b2lkKiBwb2ludGVyKSB7IHJl
dHVybiBtX2NsaWVudC0+Y2hlY2tDb3VudGVkT2JqZWN0KHBvaW50ZXIpOyB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZGVmZXJJbnN0cnVtZW50ZWRQb2ludGVyKFBhc3NPd25QdHI8SW5zdHJ1bWVudGVk
UG9pbnRlckJhc2U+KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEZWZlcnJlZEluc3Ry
dW1lbnRlZFBvaW50ZXJzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWZlclBvaW50ZXIoUGFz
c093blB0cjxQb2ludGVyQmFzZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RlZmVy
cmVkUG9pbnRlcnMoKSA9IDA7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIE1lbW9y
eU9iamVjdFR5cGUgZ2V0T2JqZWN0VHlwZShNZW1vcnlPYmplY3RJbmZvKik7CiAKICAgICBmcmll
bmQgY2xhc3MgTWVtb3J5Q2xhc3NJbmZvOworICAgIGZyaWVuZCBjbGFzcyBNZW1vcnlPYmplY3RJ
bmZvOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGZyaWVuZCB2b2lkIHJlcG9ydE1lbW9yeVVz
YWdlKGNvbnN0IFQqIGNvbnN0JiwgTWVtb3J5T2JqZWN0SW5mbyopOwogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RhdGljIHZvaWQgc2VsZWN0SW5zdHJ1bWVudGF0aW9uTWV0aG9kKGNvbnN0
IFQqIGNvbnN0JiBvYmplY3QsIE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pCkBA
IC0xMjQsMjMgKzEzNSwyNiBAQCBwcml2YXRlOgogICAgIH0KICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQgY2FsbFJlcG9ydE9iamVjdEluZm8oTWVtb3J5T2JqZWN0SW5mbyosIGNv
bnN0IHZvaWQqIHBvaW50ZXIsIE1lbW9yeU9iamVjdFR5cGUsIHNpemVfdCBvYmplY3RTaXplKTsK
IAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIEluc3RydW1lbnRlZFBvaW50ZXIgOiBw
dWJsaWMgSW5zdHJ1bWVudGVkUG9pbnRlckJhc2UgeworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CisgICAgY2xhc3MgUG9pbnRlciA6IHB1YmxpYyBQb2ludGVyQmFzZSB7CiAgICAgcHVibGljOgot
ICAgICAgICBJbnN0cnVtZW50ZWRQb2ludGVyKGNvbnN0IFQqIHBvaW50ZXIsIE1lbW9yeU9iamVj
dEluZm8qIG93bmVyT2JqZWN0SW5mbyk7CisgICAgICAgIFBvaW50ZXIoY29uc3QgVCogcG9pbnRl
ciwgTWVtb3J5T2JqZWN0SW5mbyogb3duZXJPYmplY3RJbmZvLCBjb25zdCBNZW1vcnlPd25pbmdU
eXBlKTsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCBjb25zdCB2b2lkKiBjYWxs
UmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIE9WRVJSSURFOwotCi0gICAgcHJp
dmF0ZToKLSAgICAgICAgY29uc3QgVCogbV9wb2ludGVyOworICAgICAgICB2aXJ0dWFsIHZvaWQg
Y2FsbFJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBPVkVSUklERTsKICAgICB9
OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmplY3QoY29uc3QgVCYgdCwg
TWVtb3J5T2JqZWN0SW5mbyogb3duZXJPYmplY3RJbmZvKSB7IE93bmluZ1RyYWl0czxUPjo6YWRk
T2JqZWN0KHRoaXMsIHQsIG93bmVyT2JqZWN0SW5mbyk7IH0KLSAgICB2b2lkIGFkZFJhd0J1ZmZl
cihjb25zdCB2b2lkKiBjb25zdCYgYnVmZmVyLCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0
VHlwZSwgc2l6ZV90IHNpemUpCisKKyAgICB2b2lkIGFkZFJhd0J1ZmZlcihjb25zdCB2b2lkKiBj
b25zdCYgYnVmZmVyLCBNZW1vcnlPYmplY3RJbmZvKiBwYXJlbnRPYmplY3RJbmZvLCBzaXplX3Qg
c2l6ZSkKICAgICB7Ci0gICAgICAgIGlmICghYnVmZmVyIHx8IHZpc2l0ZWQoYnVmZmVyKSkKKyAg
ICAgICAgaWYgKCFidWZmZXIpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHJlcG9ydEVk
Z2UocGFyZW50T2JqZWN0SW5mbywgIGJ1ZmZlcik7CisKKyAgICAgICAgaWYgKHZpc2l0ZWQoYnVm
ZmVyKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY291bnRPYmplY3RTaXplKGJ1ZmZl
ciwgb3duZXJPYmplY3RUeXBlLCBzaXplKTsKKyAgICAgICAgY291bnRPYmplY3RTaXplKGJ1ZmZl
ciwgZ2V0T2JqZWN0VHlwZShwYXJlbnRPYmplY3RJbmZvKSwgc2l6ZSk7CiAgICAgfQogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTE3NCw2ICsxODgsNyBAQCBwdWJsaWM6CiAgICAgICAg
IDogbV9tZW1vcnlPYmplY3RJbmZvKG1lbW9yeU9iamVjdEluZm8pCiAgICAgICAgICwgbV9tZW1v
cnlJbnN0cnVtZW50YXRpb24oMCkKICAgICAgICAgLCBtX29iamVjdFR5cGUoMCkKKyAgICAgICAg
LCBtX3Zpc2l0ZWQoZmFsc2UpCiAgICAgewogICAgICAgICBpbml0KHBvaW50ZXIsIG9iamVjdFR5
cGUsIGFjdHVhbFNpemUpOwogICAgIH0KQEAgLTE5MCw2ICsyMDUsNyBAQCBwcml2YXRlOgogICAg
IE1lbW9yeU9iamVjdEluZm8qIG1fbWVtb3J5T2JqZWN0SW5mbzsKICAgICBNZW1vcnlJbnN0cnVt
ZW50YXRpb24qIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uOwogICAgIE1lbW9yeU9iamVjdFR5cGUg
bV9vYmplY3RUeXBlOworICAgIGJvb2wgbV92aXNpdGVkOwogfTsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgVD4KQEAgLTIwMSw0MyArMjE3LDQ2IEBAIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoY29uc3Qg
VCogY29uc3QmIG9iamVjdCwgTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgogdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVjdElt
cGwoY29uc3QgVCogY29uc3QmIG9iamVjdCwgTWVtb3J5T2JqZWN0SW5mbyogb3duZXJPYmplY3RJ
bmZvLCBNZW1vcnlPd25pbmdUeXBlIG93bmluZ1R5cGUpCiB7Ci0gICAgaWYgKG93bmluZ1R5cGUg
PT0gYnlSZWZlcmVuY2UpCi0gICAgICAgIHJlcG9ydE1lbW9yeVVzYWdlKG9iamVjdCwgb3duZXJP
YmplY3RJbmZvKTsKLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKCFvYmplY3QgfHwgdmlzaXRlZChv
YmplY3QpKQorICAgIGlmIChvd25pbmdUeXBlID09IGJ5UmVmZXJlbmNlKSB7CisgICAgICAgIFBv
aW50ZXI8VD4gcG9pbnRlcihvYmplY3QsIG93bmVyT2JqZWN0SW5mbywgYnlSZWZlcmVuY2UpOwor
ICAgICAgICBwb2ludGVyLnByb2Nlc3ModGhpcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYg
KCFvYmplY3QpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHJlcG9ydEVkZ2Uob3duZXJP
YmplY3RJbmZvLCBvYmplY3QpOworCisgICAgICAgIGlmICh2aXNpdGVkKG9iamVjdCkpCiAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIGRlZmVySW5zdHJ1bWVudGVkUG9pbnRlcihhZG9wdFB0
cihuZXcgSW5zdHJ1bWVudGVkUG9pbnRlcjxUPihvYmplY3QsIG93bmVyT2JqZWN0SW5mbykpKTsK
KyAgICAgICAgZGVmZXJQb2ludGVyKGFkb3B0UHRyKG5ldyBQb2ludGVyPFQ+KG9iamVjdCwgb3du
ZXJPYmplY3RJbmZvLCBieVBvaW50ZXIpKSk7CiAgICAgfQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgogdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVjdEltcGwoY29uc3QgT3du
UHRyPFQ+KiBjb25zdCYgb2JqZWN0LCBNZW1vcnlPYmplY3RJbmZvKiBvd25lck9iamVjdEluZm8s
IE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSkKIHsKLSAgICBpZiAob3duaW5nVHlwZSA9PSBi
eVBvaW50ZXIgJiYgIXZpc2l0ZWQob2JqZWN0KSkKLSAgICAgICAgY291bnRPYmplY3RTaXplKG9i
amVjdCwgZ2V0T2JqZWN0VHlwZShvd25lck9iamVjdEluZm8pLCBzaXplb2YoKm9iamVjdCkpOwor
ICAgIGlmIChvd25pbmdUeXBlID09IGJ5UG9pbnRlcikKKyAgICAgICAgYWRkUmF3QnVmZmVyKG9i
amVjdCwgb3duZXJPYmplY3RJbmZvLCBzaXplb2YoKm9iamVjdCkpOwogICAgIGFkZE9iamVjdElt
cGwob2JqZWN0LT5nZXQoKSwgb3duZXJPYmplY3RJbmZvLCBieVBvaW50ZXIpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgogdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVjdElt
cGwoY29uc3QgUmVmUHRyPFQ+KiBjb25zdCYgb2JqZWN0LCBNZW1vcnlPYmplY3RJbmZvKiBvd25l
ck9iamVjdEluZm8sIE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSkKIHsKLSAgICBpZiAob3du
aW5nVHlwZSA9PSBieVBvaW50ZXIgJiYgIXZpc2l0ZWQob2JqZWN0KSkKLSAgICAgICAgY291bnRP
YmplY3RTaXplKG9iamVjdCwgZ2V0T2JqZWN0VHlwZShvd25lck9iamVjdEluZm8pLCBzaXplb2Yo
Km9iamVjdCkpOworICAgIGlmIChvd25pbmdUeXBlID09IGJ5UG9pbnRlcikKKyAgICAgICAgYWRk
UmF3QnVmZmVyKG9iamVjdCwgb3duZXJPYmplY3RJbmZvLCBzaXplb2YoKm9iamVjdCkpOwogICAg
IGFkZE9iamVjdEltcGwob2JqZWN0LT5nZXQoKSwgb3duZXJPYmplY3RJbmZvLCBieVBvaW50ZXIp
OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpJbnN0
cnVtZW50ZWRQb2ludGVyPFQ+OjpJbnN0cnVtZW50ZWRQb2ludGVyKGNvbnN0IFQqIHBvaW50ZXIs
IE1lbW9yeU9iamVjdEluZm8qIG93bmVyT2JqZWN0SW5mbykKLSAgICA6IEluc3RydW1lbnRlZFBv
aW50ZXJCYXNlKG93bmVyT2JqZWN0SW5mbykKLSAgICAsIG1fcG9pbnRlcihwb2ludGVyKQorTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpQb2ludGVyPFQ+OjpQb2ludGVyKGNvbnN0IFQqIHBvaW50ZXIs
IE1lbW9yeU9iamVjdEluZm8qIG93bmVyT2JqZWN0SW5mbywgY29uc3QgTWVtb3J5T3duaW5nVHlw
ZSBvd25pbmdUeXBlKQorICAgIDogUG9pbnRlckJhc2UocG9pbnRlciwgb3duZXJPYmplY3RJbmZv
LCBvd25pbmdUeXBlKQogewogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3Qgdm9pZCog
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpJbnN0cnVtZW50ZWRQb2ludGVyPFQ+OjpjYWxsUmVwb3J0
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykKK3ZvaWQgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpQb2ludGVyPFQ+OjpjYWxsUmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykKIHsKLSAgICByZXBvcnRNZW1vcnlVc2Fn
ZShtX3BvaW50ZXIsIG1lbW9yeU9iamVjdEluZm8pOwotICAgIHJldHVybiBtX3BvaW50ZXI7Cisg
ICAgcmVwb3J0TWVtb3J5VXNhZ2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4obV9wb2ludGVy
KSwgbWVtb3J5T2JqZWN0SW5mbyk7CiB9CiAKIC8vIExpbmsgdGltZSBndWFyZCBmb3IgY2xhc3Nl
cyB3aXRoIGV4dGVybmFsIG1lbW9yeSBpbnN0cnVtZW50YXRpb24uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9NZW1vcnlPYmplY3RJbmZvLmggYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlPYmpl
Y3RJbmZvLmgKaW5kZXggMWM3ZmU2YzgzNjJjMWE0ZjE1MjRiZDVhMzkyODc1YTg2YWJkODIzNS4u
NDkwODU5ZDNiOTVkMzBkNGViNWM5ZTZkZThiNTIxYzkwYTdlOGVkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvTWVtb3J5T2JqZWN0SW5mby5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lbW9y
eU9iamVjdEluZm8uaApAQCAtNDAsMTcgKzQwLDIwIEBAIHR5cGVkZWYgY29uc3QgY2hhciogTWVt
b3J5T2JqZWN0VHlwZTsKIAogY2xhc3MgTWVtb3J5T2JqZWN0SW5mbyB7CiBwdWJsaWM6Ci0gICAg
TWVtb3J5T2JqZWN0SW5mbyhNZW1vcnlJbnN0cnVtZW50YXRpb24qIG1lbW9yeUluc3RydW1lbnRh
dGlvbiwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpCisgICAgTWVtb3J5T2JqZWN0
SW5mbyhNZW1vcnlJbnN0cnVtZW50YXRpb24qIG1lbW9yeUluc3RydW1lbnRhdGlvbiwgTWVtb3J5
T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIGNvbnN0IHZvaWQqIHBvaW50ZXIsIE1lbW9yeU93
bmluZ1R5cGUgb3duaW5nVHlwZSkKICAgICAgICAgOiBtX21lbW9yeUluc3RydW1lbnRhdGlvbiht
ZW1vcnlJbnN0cnVtZW50YXRpb24pCiAgICAgICAgICwgbV9vYmplY3RUeXBlKG93bmVyT2JqZWN0
VHlwZSkKICAgICAgICAgLCBtX29iamVjdFNpemUoMCkKLSAgICAgICAgLCBtX3BvaW50ZXIoMCkK
KyAgICAgICAgLCBtX3BvaW50ZXIocG9pbnRlcikKKyAgICAgICAgLCBtX3Zpc2l0ZWQoZmFsc2Up
CisgICAgICAgICwgbV9vd25pbmdUeXBlKG93bmluZ1R5cGUpCiAgICAgeyB9CiAKICAgICB0eXBl
ZGVmIE1lbW9yeUNsYXNzSW5mbyBDbGFzc0luZm87CiAKICAgICBNZW1vcnlPYmplY3RUeXBlIG9i
amVjdFR5cGUoKSBjb25zdCB7IHJldHVybiBtX29iamVjdFR5cGU7IH0KICAgICBzaXplX3Qgb2Jq
ZWN0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0U2l6ZTsgfQorICAgIGJvb2wgaXNWaXNp
dGVkKCkgY29uc3QgeyByZXR1cm4gbV92aXNpdGVkOyB9CiAgICAgY29uc3Qgdm9pZCogcmVwb3J0
ZWRQb2ludGVyKCkgY29uc3QgeyByZXR1cm4gbV9wb2ludGVyOyB9CiAKICAgICBNZW1vcnlJbnN0
cnVtZW50YXRpb24qIG1lbW9yeUluc3RydW1lbnRhdGlvbigpIHsgcmV0dXJuIG1fbWVtb3J5SW5z
dHJ1bWVudGF0aW9uOyB9CkBAIC01OSwyMCArNjIsNDIgQEAgcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgTWVtb3J5Q2xhc3NJbmZvOwogICAgIGZyaWVuZCBjbGFzcyBNZW1vcnlJbnN0cnVtZW50
YXRpb247CiAKLSAgICB2b2lkIHJlcG9ydE9iamVjdEluZm8oY29uc3Qgdm9pZCogcG9pbnRlciwg
TWVtb3J5T2JqZWN0VHlwZSBvYmplY3RUeXBlLCBzaXplX3Qgb2JqZWN0U2l6ZSkKKyAgICBib29s
IHJlcG9ydE9iamVjdEluZm8oY29uc3Qgdm9pZCogYWN0dWFsUG9pbnRlciwgTWVtb3J5T2JqZWN0
VHlwZSBvYmplY3RUeXBlLCBzaXplX3Qgb2JqZWN0U2l6ZSkKICAgICB7Ci0gICAgICAgIGlmICgh
bV9vYmplY3RTaXplKSB7Ci0gICAgICAgICAgICBtX3BvaW50ZXIgPSBwb2ludGVyOwotICAgICAg
ICAgICAgbV9vYmplY3RTaXplID0gb2JqZWN0U2l6ZTsKLSAgICAgICAgICAgIGlmIChvYmplY3RU
eXBlKQotICAgICAgICAgICAgICAgIG1fb2JqZWN0VHlwZSA9IG9iamVjdFR5cGU7CisgICAgICAg
IC8vIEVhY2ggY2xhc3MgaW4gdGhlIG9iamVjdCBjbGFzcyBoaWVyYXJjaHkgaW5kaXJlY3RseSBj
YWxscyB0aGlzIGZ1bmN0aW9uCisgICAgICAgIC8vIHdoZW4gaXQgZGVjbGFyZXMgTWVtb3J5Q2xh
c3NJbmZvIGxvY2FsIHZhcmlhYmxlIGluIENsYXNzTmFtZTo6cmVwb3J0TWVtb3J5VXNhZ2UgbWV0
aG9kLgorCisgICAgICAgIC8vIFdlIGFjY2VwdCBvbmx5IGZpcnN0IGNhbGwgZnJvbSB0aGUgdG9w
bW9zdCBjbGFzcy4KKyAgICAgICAgaWYgKG1fb2JqZWN0U2l6ZSkKKyAgICAgICAgICAgIHJldHVy
biBtX3Zpc2l0ZWQ7CisgICAgICAgIG1fb2JqZWN0U2l6ZSA9IG9iamVjdFNpemU7CisKKyAgICAg
ICAgLy8gVGhlIHRvcG1vc3QgY2xhc3MgaW4gdGhlIG9iamVjdCBjbGFzcyBoaWVyYXJjeSBtYXkg
aGF2ZSBkaWZmZXJlbnQgdGhpcyBwb2ludGVyIGR1ZSB0byBtdWx0aXBsZSBpbmhlcml0YW5jZQor
ICAgICAgICAvLyBhbmQgaXQgbWlnaHQgYmUgYWxyZWFkeSB2aXNpdGVkLgorICAgICAgICBpZiAo
bV9wb2ludGVyICE9IGFjdHVhbFBvaW50ZXIpIHsKKyAgICAgICAgICAgIG1fbWVtb3J5SW5zdHJ1
bWVudGF0aW9uLT5yZXBvcnRUcmFuc2xhdGlvbihtX3BvaW50ZXIsIGFjdHVhbFBvaW50ZXIpOwor
ICAgICAgICAgICAgbV92aXNpdGVkID0gbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPnZpc2l0ZWQo
YWN0dWFsUG9pbnRlcik7CisgICAgICAgICAgICBpZiAobV92aXNpdGVkKQorICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CisgICAgICAgIG1fcG9pbnRlciA9IGFjdHVhbFBv
aW50ZXI7CisKKyAgICAgICAgLy8gT3ZlcnJpZGUgb3duZXIgdHlwZSBpZiB0aGUgdG9wbW9zdCBj
bGFzcyBoYXMgaXRzIG93bi4KKyAgICAgICAgaWYgKG9iamVjdFR5cGUpCisgICAgICAgICAgICBt
X29iamVjdFR5cGUgPSBvYmplY3RUeXBlOworCisgICAgICAgIGlmIChtX293bmluZ1R5cGUgPT0g
YnlQb2ludGVyKQorICAgICAgICAgICAgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPnJlcG9ydE5v
ZGUodGhpcyk7CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIE1lbW9yeUlu
c3RydW1lbnRhdGlvbiogbV9tZW1vcnlJbnN0cnVtZW50YXRpb247CiAgICAgTWVtb3J5T2JqZWN0
VHlwZSBtX29iamVjdFR5cGU7CiAgICAgc2l6ZV90IG1fb2JqZWN0U2l6ZTsKICAgICBjb25zdCB2
b2lkKiBtX3BvaW50ZXI7CisgICAgYm9vbCBtX3Zpc2l0ZWQ7CisgICAgTWVtb3J5T3duaW5nVHlw
ZSBtX293bmluZ1R5cGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmNwcAppbmRl
eCBhM2Q2MjEzNTIxN2U1YWZhNzgxMWEzMTA1ODMwYjQ4NDU2OGViZjcwLi4yY2EzYWJhODZiNTkz
ZmVmYTdmN2U3M2VkYWRhZWM2YThhYTc2YjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuY3BwCkBAIC0xMDMsMjcgKzEw
MywzOCBAQCB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGw6OnJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeQogICAgIGluZm8uYWRkTWVtYmVyKG1fY291
bnRlZE9iamVjdHMpOwogfQogCi12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGw6OnByb2Nl
c3NEZWZlcnJlZEluc3RydW1lbnRlZFBvaW50ZXJzKCkKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uQ2xpZW50SW1wbDo6cmVwb3J0Tm9kZShNZW1vcnlPYmplY3RJbmZvKikKIHsKLSAgICB3aGls
ZSAoIW1fZGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVycy5pc0VtcHR5KCkpIHsKLSAgICAgICAg
T3duUHRyPEluc3RydW1lbnRlZFBvaW50ZXJCYXNlPiBwb2ludGVyID0gbV9kZWZlcnJlZEluc3Ry
dW1lbnRlZFBvaW50ZXJzLmxhc3QoKS5yZWxlYXNlKCk7Ci0gICAgICAgIG1fZGVmZXJyZWRJbnN0
cnVtZW50ZWRQb2ludGVycy5yZW1vdmVMYXN0KCk7Cit9CisKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uQ2xpZW50SW1wbDo6cmVwb3J0RWRnZShNZW1vcnlPYmplY3RJbmZvKiwgY29uc3Qgdm9p
ZCopCit7Cit9CisKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbDo6cmVwb3J0
VHJhbnNsYXRpb24oY29uc3Qgdm9pZCogZnJvbSwgY29uc3Qgdm9pZCogdG8pCit7Cit9CisKK3Zv
aWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbDo6cHJvY2Vzc0RlZmVycmVkUG9pbnRlcnMoKQor
eworICAgIHdoaWxlICghbV9kZWZlcnJlZFBvaW50ZXJzLmlzRW1wdHkoKSkgeworICAgICAgICBP
d25QdHI8UG9pbnRlckJhc2U+IHBvaW50ZXIgPSBtX2RlZmVycmVkUG9pbnRlcnMubGFzdCgpLnJl
bGVhc2UoKTsKKyAgICAgICAgbV9kZWZlcnJlZFBvaW50ZXJzLnJlbW92ZUxhc3QoKTsKICAgICAg
ICAgcG9pbnRlci0+cHJvY2Vzcyh0aGlzKTsKICAgICB9CiB9CiAKLXZvaWQgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uSW1wbDo6ZGVmZXJJbnN0cnVtZW50ZWRQb2ludGVyKFBhc3NPd25QdHI8SW5zdHJ1
bWVudGVkUG9pbnRlckJhc2U+IHBvaW50ZXIpCit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbklt
cGw6OmRlZmVyUG9pbnRlcihQYXNzT3duUHRyPFBvaW50ZXJCYXNlPiBwb2ludGVyKQogewotICAg
IG1fZGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVycy5hcHBlbmQocG9pbnRlcik7CisgICAgbV9k
ZWZlcnJlZFBvaW50ZXJzLmFwcGVuZChwb2ludGVyKTsKIH0KIAogdm9pZCBNZW1vcnlJbnN0cnVt
ZW50YXRpb25JbXBsOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlP
YmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVj
dEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6SW5zcGVjdG9yTWVtb3J5QWdlbnQpOwot
ICAgIGluZm8uYWRkTWVtYmVyKG1fZGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVycyk7CisgICAg
aW5mby5hZGRNZW1iZXIobV9kZWZlcnJlZFBvaW50ZXJzKTsKIH0KIAotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmgKaW5kZXggOWVl
ZGNlZDY0OTIzMDUwMWNjYmFkMmVhNTNiMDg1MjFlZGVmMTkzNy4uOTI5NDI2YTUyMTdiZTM0MTU3
MzlhNDU1ODJhYjQ3YTM1Zjk1MjFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5oCkBAIC03OCw2ICs3OCwxMCBAQCBwdWJs
aWM6CiAgICAgc2l6ZV90IHRvdGFsQ291bnRlZE9iamVjdHMoKSBjb25zdCB7IHJldHVybiBtX3Rv
dGFsQ291bnRlZE9iamVjdHM7IH0KICAgICBzaXplX3QgdG90YWxPYmplY3RzTm90SW5BbGxvY2F0
ZWRTZXQoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsT2JqZWN0c05vdEluQWxsb2NhdGVkU2V0OyB9
CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0Tm9kZShNZW1vcnlPYmplY3RJbmZvKikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHJlcG9ydEVkZ2UoTWVtb3J5T2JqZWN0SW5mbyosIGNvbnN0
IHZvaWQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0VHJhbnNsYXRpb24oY29u
c3Qgdm9pZCogZnJvbSwgY29uc3Qgdm9pZCogdG8pIE9WRVJSSURFOworCiAgICAgdmlydHVhbCB2
b2lkIGNvdW50T2JqZWN0U2l6ZShjb25zdCB2b2lkKiwgTWVtb3J5T2JqZWN0VHlwZSwgc2l6ZV90
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgdmlzaXRlZChjb25zdCB2b2lkKikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBib29sIGNoZWNrQ291bnRlZE9iamVjdChjb25zdCB2b2lkKikgT1ZF
UlJJREU7CkBAIC0xMDYsMTAgKzExMCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXBvcnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVh
bCB2b2lkIGRlZmVySW5zdHJ1bWVudGVkUG9pbnRlcihQYXNzT3duUHRyPEluc3RydW1lbnRlZFBv
aW50ZXJCYXNlPikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEZWZlcnJlZElu
c3RydW1lbnRlZFBvaW50ZXJzKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlZmVyUG9p
bnRlcihQYXNzT3duUHRyPFBvaW50ZXJCYXNlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHByb2Nlc3NEZWZlcnJlZFBvaW50ZXJzKCkgT1ZFUlJJREU7CiAKLSAgICBWZWN0b3I8T3duUHRy
PEluc3RydW1lbnRlZFBvaW50ZXJCYXNlPiA+IG1fZGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVy
czsKKyAgICBWZWN0b3I8T3duUHRyPFBvaW50ZXJCYXNlPiA+IG1fZGVmZXJyZWRQb2ludGVyczsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzY2M5Yzc4MDdjMGFkNWI4NDBkNGQyNmEyMWY1Y2U4
ZTFiZDY5YWVjLi4xMzA3NzZhYjkwNDA1MmVjMjU1NGM3OTA5OTNjNjIzOWU1NGNlOWVkIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTItMTEtMjYgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5NSSBpbnRyb2R1Y2UgaGVhcCBncmFwaCByZWNv
cmRpbmcgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDMyMzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsIGNsYXNzZXMgd2VyZSBhZGp1c3RlZCBhY2NvcmRpbmcgdG8gdGhlIGNoYW5nZXMgaW4g
d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCisKKyAgICAgICAgRW1wdHkgaGVhcCBncmFwaCBy
ZWNvcmRpbmcgQVBJIG1ldGhvZHMgd2VyZSBpbnRyb2R1Y2VkLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdC5jcHA6CisKIDIwMTIt
MTEtMjYgIEphZWh1biBMaW0gIDxsamFlaHVuLmxpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBU
ZXh0IEF1dG9zaXppbmc6IEFkZCBUZXh0IEF1dG9zaXppbmcgQVBJcyBmb3IgV0syCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZW1vcnlJbnN0cnVtZW50YXRpb25U
ZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01lbW9yeUluc3RydW1lbnRh
dGlvblRlc3QuY3BwCmluZGV4IGRhZDA4ZGRhNDVkNzJlY2ZkZTg3NGI2M2QzMzAxNGZiNzkyOTA1
ZWUuLjYzNTkxOTQ5MDQ2MTRlMThlYjcxMjY4YzI0OGNmYzVjNzVjNWEwNTcgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01lbW9yeUluc3RydW1lbnRhdGlvblRlc3Qu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01lbW9yeUluc3RydW1lbnRh
dGlvblRlc3QuY3BwCkBAIC04NCwxMyArODQsMjIgQEAgTWVtb3J5T2JqZWN0VHlwZSBUZXN0VHlw
ZSA9ICJUZXN0VHlwZSI7CiAKIGNsYXNzIE1lbW9yeUluc3RydW1lbnRhdGlvblRlc3RDbGllbnQg
OiBwdWJsaWMgV1RGOjpNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnQgewogcHVibGljOgorICAg
IHZpcnR1YWwgdm9pZCByZXBvcnROb2RlKE1lbW9yeU9iamVjdEluZm8qKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgcmVwb3J0RWRnZShNZW1vcnlPYmplY3RJbmZvKiwgY29uc3Qgdm9pZCopIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCByZXBvcnRUcmFuc2xhdGlvbihjb25zdCB2b2lkKiBmcm9tLCBjb25z
dCB2b2lkKiB0bykgeyB9CisKICAgICB2aXJ0dWFsIHZvaWQgY291bnRPYmplY3RTaXplKGNvbnN0
IHZvaWQqLCBNZW1vcnlPYmplY3RUeXBlIG9iamVjdFR5cGUsIHNpemVfdCBzaXplKQogICAgIHsK
ICAgICAgICAgVHlwZVRvU2l6ZU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fdG90YWxTaXplcy5h
ZGQob2JqZWN0VHlwZSwgc2l6ZSk7CiAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAg
ICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlICs9IHNpemU7CiAgICAgfQotICAgIHZp
cnR1YWwgYm9vbCB2aXNpdGVkKGNvbnN0IHZvaWQqIG9iamVjdCkgeyByZXR1cm4gIW1fdmlzaXRl
ZE9iamVjdHMuYWRkKG9iamVjdCkuaXNOZXdFbnRyeTsgfQorICAgIHZpcnR1YWwgYm9vbCB2aXNp
dGVkKGNvbnN0IHZvaWQqIG9iamVjdCkKKyAgICB7CisgICAgICAgIGlmIChvYmplY3QgPT0gdGhp
cykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuICFtX3Zpc2l0ZWRP
YmplY3RzLmFkZChvYmplY3QpLmlzTmV3RW50cnk7CisgICAgfQogICAgIHZpcnR1YWwgYm9vbCBj
aGVja0NvdW50ZWRPYmplY3QoY29uc3Qgdm9pZCopIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHNp
emVfdCB2aXNpdGVkT2JqZWN0cygpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaXRlZE9iamVjdHMuc2l6
ZSgpOyB9CkBAIC0xMjAsOCArMTI5LDggQEAgcHVibGljOgogICAgICAgICA6IE1lbW9yeUluc3Ry
dW1lbnRhdGlvbihjbGllbnQpCiAgICAgICAgICwgbV9jbGllbnQoY2xpZW50KSB7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBwcm9jZXNzRGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVycygpOwotICAg
IHZpcnR1YWwgdm9pZCBkZWZlckluc3RydW1lbnRlZFBvaW50ZXIoUGFzc093blB0cjxJbnN0cnVt
ZW50ZWRQb2ludGVyQmFzZT4pOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGVmZXJyZWRQb2lu
dGVycygpOworICAgIHZpcnR1YWwgdm9pZCBkZWZlclBvaW50ZXIoUGFzc093blB0cjxQb2ludGVy
QmFzZT4pOwogCiAgICAgc2l6ZV90IHZpc2l0ZWRPYmplY3RzKCkgY29uc3QgeyByZXR1cm4gbV9j
bGllbnQtPnZpc2l0ZWRPYmplY3RzKCk7IH0KICAgICBzaXplX3QgcmVwb3J0ZWRTaXplRm9yQWxs
VHlwZXMoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudC0+cmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMo
KTsgfQpAQCAtMTI5LDcgKzEzOCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBNZW1vcnlJ
bnN0cnVtZW50YXRpb25UZXN0Q2xpZW50KiBtX2NsaWVudDsKLSAgICBWZWN0b3I8T3duUHRyPElu
c3RydW1lbnRlZFBvaW50ZXJCYXNlPiA+IG1fZGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVyczsK
KyAgICBWZWN0b3I8T3duUHRyPFBvaW50ZXJCYXNlPiA+IG1fZGVmZXJyZWRQb2ludGVyczsKIH07
CiAKIGNsYXNzIEluc3RydW1lbnRhdGlvblRlc3RIZWxwZXIgOiBwdWJsaWMgSW5zdHJ1bWVudGF0
aW9uVGVzdEltcGwgewpAQCAtMTQwLDE4ICsxNDksMTggQEAgcHJpdmF0ZToKICAgICBNZW1vcnlJ
bnN0cnVtZW50YXRpb25UZXN0Q2xpZW50IG1fY2xpZW50OwogfTsKIAotdm9pZCBJbnN0cnVtZW50
YXRpb25UZXN0SW1wbDo6cHJvY2Vzc0RlZmVycmVkSW5zdHJ1bWVudGVkUG9pbnRlcnMoKQordm9p
ZCBJbnN0cnVtZW50YXRpb25UZXN0SW1wbDo6cHJvY2Vzc0RlZmVycmVkUG9pbnRlcnMoKQogewot
ICAgIHdoaWxlICghbV9kZWZlcnJlZEluc3RydW1lbnRlZFBvaW50ZXJzLmlzRW1wdHkoKSkgewot
ICAgICAgICBPd25QdHI8SW5zdHJ1bWVudGVkUG9pbnRlckJhc2U+IHBvaW50ZXIgPSBtX2RlZmVy
cmVkSW5zdHJ1bWVudGVkUG9pbnRlcnMubGFzdCgpLnJlbGVhc2UoKTsKLSAgICAgICAgbV9kZWZl
cnJlZEluc3RydW1lbnRlZFBvaW50ZXJzLnJlbW92ZUxhc3QoKTsKKyAgICB3aGlsZSAoIW1fZGVm
ZXJyZWRQb2ludGVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgT3duUHRyPFBvaW50ZXJCYXNlPiBw
b2ludGVyID0gbV9kZWZlcnJlZFBvaW50ZXJzLmxhc3QoKS5yZWxlYXNlKCk7CisgICAgICAgIG1f
ZGVmZXJyZWRQb2ludGVycy5yZW1vdmVMYXN0KCk7CiAgICAgICAgIHBvaW50ZXItPnByb2Nlc3Mo
dGhpcyk7CiAgICAgfQogfQogCi12b2lkIEluc3RydW1lbnRhdGlvblRlc3RJbXBsOjpkZWZlcklu
c3RydW1lbnRlZFBvaW50ZXIoUGFzc093blB0cjxJbnN0cnVtZW50ZWRQb2ludGVyQmFzZT4gcG9p
bnRlcikKK3ZvaWQgSW5zdHJ1bWVudGF0aW9uVGVzdEltcGw6OmRlZmVyUG9pbnRlcihQYXNzT3du
UHRyPFBvaW50ZXJCYXNlPiBwb2ludGVyKQogewotICAgIG1fZGVmZXJyZWRJbnN0cnVtZW50ZWRQ
b2ludGVycy5hcHBlbmQocG9pbnRlcik7CisgICAgbV9kZWZlcnJlZFBvaW50ZXJzLmFwcGVuZChw
b2ludGVyKTsKIH0KIAogY2xhc3MgTm90SW5zdHJ1bWVudGVkIHsK
</data>
<flag name="commit-queue"
          id="191610"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177282</attachid>
            <date>2012-12-03 10:29:23 -0800</date>
            <delta_ts>2012-12-03 16:43:08 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>report-graph.patch</filename>
            <type>text/plain</type>
            <size>9134</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IGQ0YmUyYjYuLjM4
ZGJmZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtNTAs
NiArNTAsMTEgQEAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjp+TWVtb3J5SW5zdHJ1bWVudGF0aW9u
KCkKIHsKIH0KIAordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydEVkZ2UoTWVtb3J5
T2JqZWN0SW5mbyogb3duZXJPYmplY3RJbmZvLCBjb25zdCB2b2lkKiB0YXJnZXQsIGNvbnN0IGNo
YXIqIG5hbWUpCit7CisgICAgbV9jbGllbnQtPnJlcG9ydEVkZ2Uob3duZXJPYmplY3RJbmZvLT5y
ZXBvcnRlZFBvaW50ZXIoKSwgdGFyZ2V0LCBuYW1lKTsKK30KKwogTWVtb3J5T2JqZWN0VHlwZSBN
ZW1vcnlJbnN0cnVtZW50YXRpb246OmdldE9iamVjdFR5cGUoTWVtb3J5T2JqZWN0SW5mbyogb2Jq
ZWN0SW5mbykKIHsKICAgICByZXR1cm4gb2JqZWN0SW5mby0+b2JqZWN0VHlwZSgpOwpAQCAtNzYs
OSArODEsMTMgQEAgdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246Okluc3RydW1lbnRlZFBvaW50
ZXJCYXNlOjpwcm9jZXNzKE1lbW9yeUluc3RydW1lbnRhdGkKIAogICAgIGNvbnN0IHZvaWQqIHBv
aW50ZXIgPSBtZW1vcnlPYmplY3RJbmZvLnJlcG9ydGVkUG9pbnRlcigpOwogICAgIEFTU0VSVChw
b2ludGVyKTsKLSAgICBpZiAocG9pbnRlciAhPSBvcmlnaW5hbFBvaW50ZXIgJiYgbWVtb3J5SW5z
dHJ1bWVudGF0aW9uLT52aXNpdGVkKHBvaW50ZXIpKQotICAgICAgICByZXR1cm47CisgICAgaWYg
KHBvaW50ZXIgIT0gb3JpZ2luYWxQb2ludGVyKSB7CisgICAgICAgIG1lbW9yeUluc3RydW1lbnRh
dGlvbi0+bV9jbGllbnQtPnJlcG9ydEJhc2VBZGRyZXNzKG9yaWdpbmFsUG9pbnRlciwgcG9pbnRl
cik7CisgICAgICAgIGlmIChtZW1vcnlJbnN0cnVtZW50YXRpb24tPnZpc2l0ZWQocG9pbnRlcikp
CisgICAgICAgICAgICByZXR1cm47CisgICAgfQogICAgIG1lbW9yeUluc3RydW1lbnRhdGlvbi0+
Y291bnRPYmplY3RTaXplKHBvaW50ZXIsIG1lbW9yeU9iamVjdEluZm8ub2JqZWN0VHlwZSgpLCBt
ZW1vcnlPYmplY3RJbmZvLm9iamVjdFNpemUoKSk7CisgICAgbWVtb3J5SW5zdHJ1bWVudGF0aW9u
LT5tX2NsaWVudC0+cmVwb3J0SGVhcE9iamVjdChtZW1vcnlPYmplY3RJbmZvKTsKICAgICBpZiAo
IW1lbW9yeUluc3RydW1lbnRhdGlvbi0+Y2hlY2tDb3VudGVkT2JqZWN0KHBvaW50ZXIpKSB7CiAj
aWYgREVCVUdfUE9JTlRFUl9JTlNUUlVNRU5UQVRJT04KICAgICAgICAgZnB1dHMoIlVua25vd24g
b2JqZWN0IGNvdW50ZWQ6XG4iLCBzdGRlcnIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
TWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50
YXRpb24uaAppbmRleCAyYTY4MzJiLi45ZTg3YjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0
cnVtZW50YXRpb24uaApAQCAtNDIsNiArNDIsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1l
bW9yeUNsYXNzSW5mbzsKIGNsYXNzIE1lbW9yeU9iamVjdEluZm87CiBjbGFzcyBNZW1vcnlJbnN0
cnVtZW50YXRpb247CitjbGFzcyBTdHJpbmc7CiAKIHR5cGVkZWYgY29uc3QgY2hhciogTWVtb3J5
T2JqZWN0VHlwZTsKIApAQCAtNTgsNiArNTksMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBjb3VudE9iamVjdFNpemUoY29uc3Qgdm9pZCosIE1lbW9yeU9iamVjdFR5cGUsIHNpemVfdCkg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCB2aXNpdGVkKGNvbnN0IHZvaWQqKSA9IDA7CiAgICAgdmly
dHVhbCBib29sIGNoZWNrQ291bnRlZE9iamVjdChjb25zdCB2b2lkKikgPSAwOworCisgICAgdmly
dHVhbCB2b2lkIHJlcG9ydEhlYXBPYmplY3QoY29uc3QgTWVtb3J5T2JqZWN0SW5mbyYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFZGdlKGNvbnN0IHZvaWQqIHNvdXJjZSwgY29uc3Qgdm9p
ZCogdGFyZ2V0LCBjb25zdCBjaGFyKiBuYW1lKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0
QmFzZUFkZHJlc3MoY29uc3Qgdm9pZCogYmFzZSwgY29uc3Qgdm9pZCogcmVhbCkgeyB9CiB9Owog
CiBjbGFzcyBNZW1vcnlJbnN0cnVtZW50YXRpb24gewpAQCAtNjcsNyArNzIsNyBAQCBwdWJsaWM6
CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRSb290T2JqZWN0KGNvbnN0IFQm
IHQpCiAgICAgewotICAgICAgICBhZGRPYmplY3QodCwgbV9yb290T2JqZWN0SW5mby5nZXQoKSk7
CisgICAgICAgIGFkZE9iamVjdCh0LCBtX3Jvb3RPYmplY3RJbmZvLmdldCgpLCAwKTsKICAgICAg
ICAgcHJvY2Vzc0RlZmVycmVkSW5zdHJ1bWVudGVkUG9pbnRlcnMoKTsKICAgICB9CiAKQEAgLTk0
LDYgKzk5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvdW50T2JqZWN0U2l6ZShjb25zdCB2b2lk
KiBvYmplY3QsIE1lbW9yeU9iamVjdFR5cGUgb2JqZWN0VHlwZSwgc2l6ZV90IHNpemUpIHsgbV9j
bGllbnQtPmNvdW50T2JqZWN0U2l6ZShvYmplY3QsIG9iamVjdFR5cGUsIHNpemUpOyB9CiAgICAg
Ym9vbCB2aXNpdGVkKGNvbnN0IHZvaWQqIHBvaW50ZXIpIHsgcmV0dXJuIG1fY2xpZW50LT52aXNp
dGVkKHBvaW50ZXIpOyB9CiAgICAgYm9vbCBjaGVja0NvdW50ZWRPYmplY3QoY29uc3Qgdm9pZCog
cG9pbnRlcikgeyByZXR1cm4gbV9jbGllbnQtPmNoZWNrQ291bnRlZE9iamVjdChwb2ludGVyKTsg
fQorICAgIAorICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlcG9ydEVkZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyogb3duZXJPYmplY3RJbmZvLCBjb25zdCB2b2lkKiB0YXJnZXQsIGNvbnN0IGNoYXIq
IG5hbWUpOwogCiAgICAgdmlydHVhbCB2b2lkIGRlZmVySW5zdHJ1bWVudGVkUG9pbnRlcihQYXNz
T3duUHRyPEluc3RydW1lbnRlZFBvaW50ZXJCYXNlPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBw
cm9jZXNzRGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVycygpID0gMDsKQEAgLTEzNSw3ICsxNDIs
NyBAQCBwcml2YXRlOgogICAgICAgICBjb25zdCBUKiBtX3BvaW50ZXI7CiAgICAgfTsKIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0KGNvbnN0IFQmIHQsIE1lbW9yeU9i
amVjdEluZm8qIG93bmVyT2JqZWN0SW5mbykgeyBPd25pbmdUcmFpdHM8VD46OmFkZE9iamVjdCh0
aGlzLCB0LCBvd25lck9iamVjdEluZm8pOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9p
ZCBhZGRPYmplY3QoY29uc3QgVCYgdCwgTWVtb3J5T2JqZWN0SW5mbyogb3duZXJPYmplY3RJbmZv
LCBjb25zdCBjaGFyKiBuYW1lKSB7IE93bmluZ1RyYWl0czxUPjo6YWRkT2JqZWN0KHRoaXMsIHQs
IG93bmVyT2JqZWN0SW5mbywgbmFtZSk7IH0KICAgICB2b2lkIGFkZFJhd0J1ZmZlcihjb25zdCB2
b2lkKiBjb25zdCYgYnVmZmVyLCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgc2l6
ZV90IHNpemUpCiAgICAgewogICAgICAgICBpZiAoIWJ1ZmZlciB8fCB2aXNpdGVkKGJ1ZmZlcikp
CkBAIC0xNDUsMjMgKzE1MiwyMyBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KICAgICBzdHJ1Y3QgT3duaW5nVHJhaXRzIHsgLy8gRGVmYXVsdCBieVJlZmVyZW5jZSBpbXBs
ZW1lbnRhdGlvbi4KLSAgICAgICAgc3RhdGljIHZvaWQgYWRkT2JqZWN0KE1lbW9yeUluc3RydW1l
bnRhdGlvbiogaW5zdHJ1bWVudGF0aW9uLCBjb25zdCBUJiB0LCBNZW1vcnlPYmplY3RJbmZvKiBv
d25lck9iamVjdEluZm8pCisgICAgICAgIHN0YXRpYyB2b2lkIGFkZE9iamVjdChNZW1vcnlJbnN0
cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgVCYgdCwgTWVtb3J5T2JqZWN0SW5m
byogb3duZXJPYmplY3RJbmZvLCBjb25zdCBjaGFyKiBuYW1lKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBpbnN0cnVtZW50YXRpb24tPmFkZE9iamVjdEltcGwoJnQsIG93bmVyT2JqZWN0SW5mbywg
YnlSZWZlcmVuY2UpOworICAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLT5hZGRPYmplY3RJbXBs
KCZ0LCBvd25lck9iamVjdEluZm8sIGJ5UmVmZXJlbmNlLCBuYW1lKTsKICAgICAgICAgfQogICAg
IH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0cnVjdCBPd25pbmdUcmFpdHM8
VCo+IHsgLy8gQ3VzdG9tIGJ5UG9pbnRlciBpbXBsZW1lbnRhdGlvbi4KLSAgICAgICAgc3RhdGlj
IHZvaWQgYWRkT2JqZWN0KE1lbW9yeUluc3RydW1lbnRhdGlvbiogaW5zdHJ1bWVudGF0aW9uLCBj
b25zdCBUKiBjb25zdCYgdCwgTWVtb3J5T2JqZWN0SW5mbyogb3duZXJPYmplY3RJbmZvKQorICAg
ICAgICBzdGF0aWMgdm9pZCBhZGRPYmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBpbnN0cnVt
ZW50YXRpb24sIGNvbnN0IFQqIGNvbnN0JiB0LCBNZW1vcnlPYmplY3RJbmZvKiBvd25lck9iamVj
dEluZm8sIGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGluc3RydW1l
bnRhdGlvbi0+YWRkT2JqZWN0SW1wbCh0LCBvd25lck9iamVjdEluZm8sIGJ5UG9pbnRlcik7Cisg
ICAgICAgICAgICBpbnN0cnVtZW50YXRpb24tPmFkZE9iamVjdEltcGwodCwgb3duZXJPYmplY3RJ
bmZvLCBieVBvaW50ZXIsIG5hbWUpOwogICAgICAgICB9CiAgICAgfTsKIAotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0SW1wbChjb25zdCBUKiBjb25zdCYsIE1lbW9yeU9i
amVjdEluZm8qLCBNZW1vcnlPd25pbmdUeXBlKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2
b2lkIGFkZE9iamVjdEltcGwoY29uc3QgT3duUHRyPFQ+KiBjb25zdCYsIE1lbW9yeU9iamVjdElu
Zm8qLCBNZW1vcnlPd25pbmdUeXBlKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGFk
ZE9iamVjdEltcGwoY29uc3QgUmVmUHRyPFQ+KiBjb25zdCYsIE1lbW9yeU9iamVjdEluZm8qLCBN
ZW1vcnlPd25pbmdUeXBlKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGFkZE9iamVj
dEltcGwoY29uc3QgVCogY29uc3QmLCBNZW1vcnlPYmplY3RJbmZvKiwgTWVtb3J5T3duaW5nVHlw
ZSwgY29uc3QgY2hhciogbmFtZSk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZGRP
YmplY3RJbXBsKGNvbnN0IE93blB0cjxUPiogY29uc3QmLCBNZW1vcnlPYmplY3RJbmZvKiwgTWVt
b3J5T3duaW5nVHlwZSwgY29uc3QgY2hhciogbmFtZSk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gdm9pZCBhZGRPYmplY3RJbXBsKGNvbnN0IFJlZlB0cjxUPiogY29uc3QmLCBNZW1vcnlPYmpl
Y3RJbmZvKiwgTWVtb3J5T3duaW5nVHlwZSwgY29uc3QgY2hhciogbmFtZSk7CiAKICAgICBNZW1v
cnlJbnN0cnVtZW50YXRpb25DbGllbnQqIG1fY2xpZW50OwogICAgIE93blB0cjxNZW1vcnlPYmpl
Y3RJbmZvPiBtX3Jvb3RPYmplY3RJbmZvOwpAQCAtMTc4LDcgKzE4NSwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIGluaXQocG9pbnRlciwgb2JqZWN0VHlwZSwgYWN0dWFsU2l6ZSk7CiAgICAgfQogCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgTT4gdm9pZCBhZGRNZW1iZXIoY29uc3QgTSYgbWVtYmVyKSB7
IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRPYmplY3QobWVtYmVyLCBtX21lbW9yeU9iamVj
dEluZm8pOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTT4gdm9pZCBhZGRNZW1iZXIoY29uc3Qg
TSYgbWVtYmVyLCBjb25zdCBjaGFyKiBuYW1lID0gMCkKKyAgICB7CisgICAgICAgIG1fbWVtb3J5
SW5zdHJ1bWVudGF0aW9uLT5hZGRPYmplY3QobWVtYmVyLCBtX21lbW9yeU9iamVjdEluZm8sIG5h
bWUpOworICAgIH0KICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRSYXdCdWZmZXIoY29u
c3Qgdm9pZCogY29uc3QmIGJ1ZmZlciwgc2l6ZV90KTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCBhZGRQcml2YXRlQnVmZmVyKHNpemVfdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVj
dFR5cGUgPSAwKTsKIApAQCAtMTk5LDExICsyMDksMTIgQEAgdm9pZCByZXBvcnRNZW1vcnlVc2Fn
ZShjb25zdCBUKiBjb25zdCYgb2JqZWN0LCBNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJ
bmYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjphZGRPYmplY3RJbXBsKGNvbnN0IFQqIGNvbnN0JiBvYmplY3QsIE1lbW9yeU9iamVjdEluZm8q
IG93bmVyT2JqZWN0SW5mbywgTWVtb3J5T3duaW5nVHlwZSBvd25pbmdUeXBlKQordm9pZCBNZW1v
cnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVjdEltcGwoY29uc3QgVCogY29uc3QmIG9iamVjdCwg
TWVtb3J5T2JqZWN0SW5mbyogb3duZXJPYmplY3RJbmZvLCBNZW1vcnlPd25pbmdUeXBlIG93bmlu
Z1R5cGUsIGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgaWYgKG93bmluZ1R5cGUgPT0gYnlSZWZl
cmVuY2UpCiAgICAgICAgIHJlcG9ydE1lbW9yeVVzYWdlKG9iamVjdCwgb3duZXJPYmplY3RJbmZv
KTsKICAgICBlbHNlIHsKKyAgICAgICAgcmVwb3J0RWRnZShvd25lck9iamVjdEluZm8sIG9iamVj
dCwgbmFtZSk7CiAgICAgICAgIGlmICghb2JqZWN0IHx8IHZpc2l0ZWQob2JqZWN0KSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgZGVmZXJJbnN0cnVtZW50ZWRQb2ludGVyKGFkb3B0UHRy
KG5ldyBJbnN0cnVtZW50ZWRQb2ludGVyPFQ+KG9iamVjdCwgb3duZXJPYmplY3RJbmZvKSkpOwpA
QCAtMjExLDE5ICsyMjIsMTkgQEAgdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVj
dEltcGwoY29uc3QgVCogY29uc3QmIG9iamVjdCwgTWVtb3J5T2JqZWN0SW4KIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLXZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRPYmplY3RJbXBs
KGNvbnN0IE93blB0cjxUPiogY29uc3QmIG9iamVjdCwgTWVtb3J5T2JqZWN0SW5mbyogb3duZXJP
YmplY3RJbmZvLCBNZW1vcnlPd25pbmdUeXBlIG93bmluZ1R5cGUpCit2b2lkIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25zdCBPd25QdHI8VD4qIGNvbnN0JiBvYmplY3Qs
IE1lbW9yeU9iamVjdEluZm8qIG93bmVyT2JqZWN0SW5mbywgTWVtb3J5T3duaW5nVHlwZSBvd25p
bmdUeXBlLCBjb25zdCBjaGFyKiBuYW1lKQogewogICAgIGlmIChvd25pbmdUeXBlID09IGJ5UG9p
bnRlciAmJiAhdmlzaXRlZChvYmplY3QpKQogICAgICAgICBjb3VudE9iamVjdFNpemUob2JqZWN0
LCBnZXRPYmplY3RUeXBlKG93bmVyT2JqZWN0SW5mbyksIHNpemVvZigqb2JqZWN0KSk7Ci0gICAg
YWRkT2JqZWN0SW1wbChvYmplY3QtPmdldCgpLCBvd25lck9iamVjdEluZm8sIGJ5UG9pbnRlcik7
CisgICAgYWRkT2JqZWN0SW1wbChvYmplY3QtPmdldCgpLCBvd25lck9iamVjdEluZm8sIGJ5UG9p
bnRlciwgbmFtZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25zdCBSZWZQdHI8VD4qIGNvbnN0JiBvYmplY3Qs
IE1lbW9yeU9iamVjdEluZm8qIG93bmVyT2JqZWN0SW5mbywgTWVtb3J5T3duaW5nVHlwZSBvd25p
bmdUeXBlKQordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVjdEltcGwoY29uc3Qg
UmVmUHRyPFQ+KiBjb25zdCYgb2JqZWN0LCBNZW1vcnlPYmplY3RJbmZvKiBvd25lck9iamVjdElu
Zm8sIE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSwgY29uc3QgY2hhciogbmFtZSkKIHsKICAg
ICBpZiAob3duaW5nVHlwZSA9PSBieVBvaW50ZXIgJiYgIXZpc2l0ZWQob2JqZWN0KSkKICAgICAg
ICAgY291bnRPYmplY3RTaXplKG9iamVjdCwgZ2V0T2JqZWN0VHlwZShvd25lck9iamVjdEluZm8p
LCBzaXplb2YoKm9iamVjdCkpOwotICAgIGFkZE9iamVjdEltcGwob2JqZWN0LT5nZXQoKSwgb3du
ZXJPYmplY3RJbmZvLCBieVBvaW50ZXIpOworICAgIGFkZE9iamVjdEltcGwob2JqZWN0LT5nZXQo
KSwgb3duZXJPYmplY3RJbmZvLCBieVBvaW50ZXIsIG5hbWUpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5T2JqZWN0SW5mby5oIGIv
U291cmNlL1dURi93dGYvTWVtb3J5T2JqZWN0SW5mby5oCmluZGV4IDFjN2ZlNmMuLjk0MGFkOGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeU9iamVjdEluZm8uaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9NZW1vcnlPYmplY3RJbmZvLmgKQEAgLTMxLDYgKzMxLDggQEAKICNpZm5kZWYg
TWVtb3J5T2JqZWN0SW5mb19oCiAjZGVmaW5lIE1lbW9yeU9iamVjdEluZm9faAogCisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKIG5hbWVzcGFjZSBXVEYgewogCiBjbGFzcyBNZW1v
cnlDbGFzc0luZm87CkBAIC01Myw2ICs1NSw5IEBAIHB1YmxpYzoKICAgICBzaXplX3Qgb2JqZWN0
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0U2l6ZTsgfQogICAgIGNvbnN0IHZvaWQqIHJl
cG9ydGVkUG9pbnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRlcjsgfQogCisgICAgdm9pZCBz
ZXRDbGFzc05hbWUoY29uc3QgU3RyaW5nJiBjbGFzc05hbWUpIHsgbV9jbGFzc05hbWUgPSBjbGFz
c05hbWU7IH0KKyAgICB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKSB7IG1fbmFtZSA9
IG5hbWU7IH0KKwogICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbiogbWVtb3J5SW5zdHJ1bWVudGF0
aW9uKCkgeyByZXR1cm4gbV9tZW1vcnlJbnN0cnVtZW50YXRpb247IH0KIAogcHJpdmF0ZToKQEAg
LTczLDYgKzc4LDggQEAgcHJpdmF0ZToKICAgICBNZW1vcnlPYmplY3RUeXBlIG1fb2JqZWN0VHlw
ZTsKICAgICBzaXplX3QgbV9vYmplY3RTaXplOwogICAgIGNvbnN0IHZvaWQqIG1fcG9pbnRlcjsK
KyAgICBTdHJpbmcgbV9jbGFzc05hbWU7CisgICAgU3RyaW5nIG1fbmFtZTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdURgo=
</data>
<flag name="commit-queue"
          id="193372"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177371</attachid>
            <date>2012-12-03 16:43:08 -0800</date>
            <delta_ts>2012-12-03 17:17:51 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>report-graph.patch</filename>
            <type>text/plain</type>
            <size>10935</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IGQ0YmUyYjYuLmU1
ODk0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtNTAs
NiArNTAsMTEgQEAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjp+TWVtb3J5SW5zdHJ1bWVudGF0aW9u
KCkKIHsKIH0KIAordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydEVkZ2UoTWVtb3J5
T2JqZWN0SW5mbyogb3duZXJPYmplY3RJbmZvLCBjb25zdCB2b2lkKiB0YXJnZXQsIGNvbnN0IGNo
YXIqIG5hbWUpCit7CisgICAgbV9jbGllbnQtPnJlcG9ydEVkZ2Uob3duZXJPYmplY3RJbmZvLT5y
ZXBvcnRlZFBvaW50ZXIoKSwgdGFyZ2V0LCBuYW1lKTsKK30KKwogTWVtb3J5T2JqZWN0VHlwZSBN
ZW1vcnlJbnN0cnVtZW50YXRpb246OmdldE9iamVjdFR5cGUoTWVtb3J5T2JqZWN0SW5mbyogb2Jq
ZWN0SW5mbykKIHsKICAgICByZXR1cm4gb2JqZWN0SW5mby0+b2JqZWN0VHlwZSgpOwpAQCAtNjAs
NiArNjUsMTMgQEAgdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmNhbGxSZXBvcnRPYmplY3RJ
bmZvKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEkKICAgICBtZW1vcnlPYmplY3RJbmZv
LT5yZXBvcnRPYmplY3RJbmZvKHBvaW50ZXIsIG9iamVjdFR5cGUsIG9iamVjdFNpemUpOwogfQog
Cit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6cmVwb3J0TGlua1RvQnVmZmVyKGNvbnN0IHZv
aWQqIG93bmVyLCBjb25zdCB2b2lkKiBidWZmZXIsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmpl
Y3RUeXBlLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBNZW1vcnlPYmplY3RJbmZvIG1lbW9yeU9iamVj
dEluZm8odGhpcywgb3duZXJPYmplY3RUeXBlKTsKKyAgICBtZW1vcnlPYmplY3RJbmZvLnJlcG9y
dE9iamVjdEluZm8oYnVmZmVyLCBvd25lck9iamVjdFR5cGUsIHNpemUpOworICAgIG1fY2xpZW50
LT5yZXBvcnRMZWFmKG93bmVyLCBtZW1vcnlPYmplY3RJbmZvKTsKK30KKwogTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpJbnN0cnVtZW50ZWRQb2ludGVyQmFzZTo6SW5zdHJ1bWVudGVkUG9pbnRlckJh
c2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykKICAgICA6IG1fb3duZXJPYmpl
Y3RUeXBlKG1lbW9yeU9iamVjdEluZm8tPm9iamVjdFR5cGUoKSkKIHsKQEAgLTc2LDkgKzg4LDEz
IEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpJbnN0cnVtZW50ZWRQb2ludGVyQmFzZTo6
cHJvY2VzcyhNZW1vcnlJbnN0cnVtZW50YXRpCiAKICAgICBjb25zdCB2b2lkKiBwb2ludGVyID0g
bWVtb3J5T2JqZWN0SW5mby5yZXBvcnRlZFBvaW50ZXIoKTsKICAgICBBU1NFUlQocG9pbnRlcik7
Ci0gICAgaWYgKHBvaW50ZXIgIT0gb3JpZ2luYWxQb2ludGVyICYmIG1lbW9yeUluc3RydW1lbnRh
dGlvbi0+dmlzaXRlZChwb2ludGVyKSkKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChwb2ludGVy
ICE9IG9yaWdpbmFsUG9pbnRlcikgeworICAgICAgICBtZW1vcnlJbnN0cnVtZW50YXRpb24tPm1f
Y2xpZW50LT5yZXBvcnRCYXNlQWRkcmVzcyhvcmlnaW5hbFBvaW50ZXIsIHBvaW50ZXIpOworICAg
ICAgICBpZiAobWVtb3J5SW5zdHJ1bWVudGF0aW9uLT52aXNpdGVkKHBvaW50ZXIpKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgIH0KICAgICBtZW1vcnlJbnN0cnVtZW50YXRpb24tPmNvdW50T2Jq
ZWN0U2l6ZShwb2ludGVyLCBtZW1vcnlPYmplY3RJbmZvLm9iamVjdFR5cGUoKSwgbWVtb3J5T2Jq
ZWN0SW5mby5vYmplY3RTaXplKCkpOworICAgIG1lbW9yeUluc3RydW1lbnRhdGlvbi0+bV9jbGll
bnQtPnJlcG9ydE5vZGUobWVtb3J5T2JqZWN0SW5mbyk7CiAgICAgaWYgKCFtZW1vcnlJbnN0cnVt
ZW50YXRpb24tPmNoZWNrQ291bnRlZE9iamVjdChwb2ludGVyKSkgewogI2lmIERFQlVHX1BPSU5U
RVJfSU5TVFJVTUVOVEFUSU9OCiAgICAgICAgIGZwdXRzKCJVbmtub3duIG9iamVjdCBjb3VudGVk
OlxuIiwgc3RkZXJyKTsKQEAgLTk2LDcgKzExMiw3IEBAIHZvaWQgTWVtb3J5Q2xhc3NJbmZvOjpp
bml0KGNvbnN0IHZvaWQqIHBvaW50ZXIsIE1lbW9yeU9iamVjdFR5cGUgb2JqZWN0VHlwZSwgc2l6
CiAKIHZvaWQgTWVtb3J5Q2xhc3NJbmZvOjphZGRSYXdCdWZmZXIoY29uc3Qgdm9pZCogY29uc3Qm
IGJ1ZmZlciwgc2l6ZV90IHNpemUpCiB7Ci0gICAgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFk
ZFJhd0J1ZmZlcihidWZmZXIsIG1fb2JqZWN0VHlwZSwgc2l6ZSk7CisgICAgbV9tZW1vcnlJbnN0
cnVtZW50YXRpb24tPmFkZFJhd0J1ZmZlcihtX21lbW9yeU9iamVjdEluZm8tPnJlcG9ydGVkUG9p
bnRlcigpLCBidWZmZXIsIG1fb2JqZWN0VHlwZSwgc2l6ZSk7CiB9CiAKIHZvaWQgTWVtb3J5Q2xh
c3NJbmZvOjphZGRQcml2YXRlQnVmZmVyKHNpemVfdCBzaXplLCBNZW1vcnlPYmplY3RUeXBlIG93
bmVyT2JqZWN0VHlwZSkKQEAgLTEwNiw2ICsxMjIsNyBAQCB2b2lkIE1lbW9yeUNsYXNzSW5mbzo6
YWRkUHJpdmF0ZUJ1ZmZlcihzaXplX3Qgc2l6ZSwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVj
dAogICAgIGlmICghb3duZXJPYmplY3RUeXBlKQogICAgICAgICBvd25lck9iamVjdFR5cGUgPSBt
X29iamVjdFR5cGU7CiAgICAgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmNvdW50T2JqZWN0U2l6
ZSgwLCBvd25lck9iamVjdFR5cGUsIHNpemUpOworICAgIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9u
LT5yZXBvcnRMaW5rVG9CdWZmZXIobV9tZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRlZFBvaW50ZXIo
KSwgMCwgb3duZXJPYmplY3RUeXBlLCBzaXplKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJj
ZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCmluZGV4IDJhNjgzMmIuLjllOWNiMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCkBAIC00Miw2ICs0Miw3IEBA
IG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWVtb3J5Q2xhc3NJbmZvOwogY2xhc3MgTWVtb3J5T2Jq
ZWN0SW5mbzsKIGNsYXNzIE1lbW9yeUluc3RydW1lbnRhdGlvbjsKK2NsYXNzIFN0cmluZzsKIAog
dHlwZWRlZiBjb25zdCBjaGFyKiBNZW1vcnlPYmplY3RUeXBlOwogCkBAIC01OCw2ICs1OSwxMSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvdW50T2JqZWN0U2l6ZShjb25zdCB2b2lkKiwg
TWVtb3J5T2JqZWN0VHlwZSwgc2l6ZV90KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHZpc2l0ZWQo
Y29uc3Qgdm9pZCopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY2hlY2tDb3VudGVkT2JqZWN0KGNv
bnN0IHZvaWQqKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0Tm9kZShjb25zdCBNZW1v
cnlPYmplY3RJbmZvJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlcG9ydEVkZ2UoY29uc3Qgdm9p
ZCogc291cmNlLCBjb25zdCB2b2lkKiB0YXJnZXQsIGNvbnN0IGNoYXIqIG5hbWUpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCByZXBvcnRMZWFmKGNvbnN0IHZvaWQqIHNvdXJjZSwgY29uc3QgTWVtb3J5
T2JqZWN0SW5mbyYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRCYXNlQWRkcmVzcyhjb25z
dCB2b2lkKiBiYXNlLCBjb25zdCB2b2lkKiByZWFsKSB7IH0KIH07CiAKIGNsYXNzIE1lbW9yeUlu
c3RydW1lbnRhdGlvbiB7CkBAIC02Nyw3ICs3Myw3IEBAIHB1YmxpYzoKIAogICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiB2b2lkIGFkZFJvb3RPYmplY3QoY29uc3QgVCYgdCkKICAgICB7Ci0gICAg
ICAgIGFkZE9iamVjdCh0LCBtX3Jvb3RPYmplY3RJbmZvLmdldCgpKTsKKyAgICAgICAgYWRkT2Jq
ZWN0KHQsIG1fcm9vdE9iamVjdEluZm8uZ2V0KCksIDApOwogICAgICAgICBwcm9jZXNzRGVmZXJy
ZWRJbnN0cnVtZW50ZWRQb2ludGVycygpOwogICAgIH0KIApAQCAtOTUsNiArMTAxLDggQEAgcHJp
dmF0ZToKICAgICBib29sIHZpc2l0ZWQoY29uc3Qgdm9pZCogcG9pbnRlcikgeyByZXR1cm4gbV9j
bGllbnQtPnZpc2l0ZWQocG9pbnRlcik7IH0KICAgICBib29sIGNoZWNrQ291bnRlZE9iamVjdChj
b25zdCB2b2lkKiBwb2ludGVyKSB7IHJldHVybiBtX2NsaWVudC0+Y2hlY2tDb3VudGVkT2JqZWN0
KHBvaW50ZXIpOyB9CiAKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXBvcnRFZGdlKE1l
bW9yeU9iamVjdEluZm8qIG93bmVyT2JqZWN0SW5mbywgY29uc3Qgdm9pZCogdGFyZ2V0LCBjb25z
dCBjaGFyKiBuYW1lKTsKKwogICAgIHZpcnR1YWwgdm9pZCBkZWZlckluc3RydW1lbnRlZFBvaW50
ZXIoUGFzc093blB0cjxJbnN0cnVtZW50ZWRQb2ludGVyQmFzZT4pID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcHJvY2Vzc0RlZmVycmVkSW5zdHJ1bWVudGVkUG9pbnRlcnMoKSA9IDA7CiAKQEAgLTEz
NSwzMyArMTQzLDM1IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IFQqIG1fcG9pbnRlcjsKICAg
ICB9OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmplY3QoY29uc3QgVCYg
dCwgTWVtb3J5T2JqZWN0SW5mbyogb3duZXJPYmplY3RJbmZvKSB7IE93bmluZ1RyYWl0czxUPjo6
YWRkT2JqZWN0KHRoaXMsIHQsIG93bmVyT2JqZWN0SW5mbyk7IH0KLSAgICB2b2lkIGFkZFJhd0J1
ZmZlcihjb25zdCB2b2lkKiBjb25zdCYgYnVmZmVyLCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2Jq
ZWN0VHlwZSwgc2l6ZV90IHNpemUpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZGRP
YmplY3QoY29uc3QgVCYgdCwgTWVtb3J5T2JqZWN0SW5mbyogb3duZXJPYmplY3RJbmZvLCBjb25z
dCBjaGFyKiBuYW1lKSB7IE93bmluZ1RyYWl0czxUPjo6YWRkT2JqZWN0KHRoaXMsIHQsIG93bmVy
T2JqZWN0SW5mbywgbmFtZSk7IH0KKyAgICB2b2lkIGFkZFJhd0J1ZmZlcihjb25zdCB2b2lkKiBv
d25lciwgY29uc3Qgdm9pZCogYnVmZmVyLCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlw
ZSwgc2l6ZV90IHNpemUpCiAgICAgewogICAgICAgICBpZiAoIWJ1ZmZlciB8fCB2aXNpdGVkKGJ1
ZmZlcikpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNvdW50T2JqZWN0U2l6ZShidWZm
ZXIsIG93bmVyT2JqZWN0VHlwZSwgc2l6ZSk7CisgICAgICAgIHJlcG9ydExpbmtUb0J1ZmZlcihv
d25lciwgYnVmZmVyLCBvd25lck9iamVjdFR5cGUsIHNpemUpOwogICAgIH0KKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCByZXBvcnRMaW5rVG9CdWZmZXIoY29uc3Qgdm9pZCogb3duZXIsIGNv
bnN0IHZvaWQqIGJ1ZmZlciwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIHNpemVf
dCBzaXplKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RydWN0IE93bmluZ1Ry
YWl0cyB7IC8vIERlZmF1bHQgYnlSZWZlcmVuY2UgaW1wbGVtZW50YXRpb24uCi0gICAgICAgIHN0
YXRpYyB2b2lkIGFkZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlv
biwgY29uc3QgVCYgdCwgTWVtb3J5T2JqZWN0SW5mbyogb3duZXJPYmplY3RJbmZvKQorICAgICAg
ICBzdGF0aWMgdm9pZCBhZGRPYmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50
YXRpb24sIGNvbnN0IFQmIHQsIE1lbW9yeU9iamVjdEluZm8qIG93bmVyT2JqZWN0SW5mbywgY29u
c3QgY2hhciogbmFtZSkKICAgICAgICAgewotICAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLT5h
ZGRPYmplY3RJbXBsKCZ0LCBvd25lck9iamVjdEluZm8sIGJ5UmVmZXJlbmNlKTsKKyAgICAgICAg
ICAgIGluc3RydW1lbnRhdGlvbi0+YWRkT2JqZWN0SW1wbCgmdCwgb3duZXJPYmplY3RJbmZvLCBi
eVJlZmVyZW5jZSwgbmFtZSk7CiAgICAgICAgIH0KICAgICB9OwogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KICAgICBzdHJ1Y3QgT3duaW5nVHJhaXRzPFQqPiB7IC8vIEN1c3RvbSBieVBvaW50
ZXIgaW1wbGVtZW50YXRpb24uCi0gICAgICAgIHN0YXRpYyB2b2lkIGFkZE9iamVjdChNZW1vcnlJ
bnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgVCogY29uc3QmIHQsIE1lbW9y
eU9iamVjdEluZm8qIG93bmVyT2JqZWN0SW5mbykKKyAgICAgICAgc3RhdGljIHZvaWQgYWRkT2Jq
ZWN0KE1lbW9yeUluc3RydW1lbnRhdGlvbiogaW5zdHJ1bWVudGF0aW9uLCBjb25zdCBUKiBjb25z
dCYgdCwgTWVtb3J5T2JqZWN0SW5mbyogb3duZXJPYmplY3RJbmZvLCBjb25zdCBjaGFyKiBuYW1l
KQogICAgICAgICB7Ci0gICAgICAgICAgICBpbnN0cnVtZW50YXRpb24tPmFkZE9iamVjdEltcGwo
dCwgb3duZXJPYmplY3RJbmZvLCBieVBvaW50ZXIpOworICAgICAgICAgICAgaW5zdHJ1bWVudGF0
aW9uLT5hZGRPYmplY3RJbXBsKHQsIG93bmVyT2JqZWN0SW5mbywgYnlQb2ludGVyLCBuYW1lKTsK
ICAgICAgICAgfQogICAgIH07CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGFkZE9i
amVjdEltcGwoY29uc3QgVCogY29uc3QmLCBNZW1vcnlPYmplY3RJbmZvKiwgTWVtb3J5T3duaW5n
VHlwZSk7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmplY3RJbXBsKGNvbnN0
IE93blB0cjxUPiogY29uc3QmLCBNZW1vcnlPYmplY3RJbmZvKiwgTWVtb3J5T3duaW5nVHlwZSk7
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmplY3RJbXBsKGNvbnN0IFJlZlB0
cjxUPiogY29uc3QmLCBNZW1vcnlPYmplY3RJbmZvKiwgTWVtb3J5T3duaW5nVHlwZSk7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmplY3RJbXBsKGNvbnN0IFQqIGNvbnN0Jiwg
TWVtb3J5T2JqZWN0SW5mbyosIE1lbW9yeU93bmluZ1R5cGUsIGNvbnN0IGNoYXIqIG5hbWUpOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0SW1wbChjb25zdCBPd25QdHI8
VD4qIGNvbnN0JiwgTWVtb3J5T2JqZWN0SW5mbyosIE1lbW9yeU93bmluZ1R5cGUsIGNvbnN0IGNo
YXIqIG5hbWUpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0SW1wbChj
b25zdCBSZWZQdHI8VD4qIGNvbnN0JiwgTWVtb3J5T2JqZWN0SW5mbyosIE1lbW9yeU93bmluZ1R5
cGUsIGNvbnN0IGNoYXIqIG5hbWUpOwogCiAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50
KiBtX2NsaWVudDsKICAgICBPd25QdHI8TWVtb3J5T2JqZWN0SW5mbz4gbV9yb290T2JqZWN0SW5m
bzsKQEAgLTE3OCw3ICsxODgsMTAgQEAgcHVibGljOgogICAgICAgICBpbml0KHBvaW50ZXIsIG9i
amVjdFR5cGUsIGFjdHVhbFNpemUpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE0+
IHZvaWQgYWRkTWVtYmVyKGNvbnN0IE0mIG1lbWJlcikgeyBtX21lbW9yeUluc3RydW1lbnRhdGlv
bi0+YWRkT2JqZWN0KG1lbWJlciwgbV9tZW1vcnlPYmplY3RJbmZvKTsgfQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE0+IHZvaWQgYWRkTWVtYmVyKGNvbnN0IE0mIG1lbWJlciwgY29uc3QgY2hhciog
bmFtZSA9IDApCisgICAgeworICAgICAgICBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkT2Jq
ZWN0KG1lbWJlciwgbV9tZW1vcnlPYmplY3RJbmZvLCBuYW1lKTsKKyAgICB9CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgYWRkUmF3QnVmZmVyKGNvbnN0IHZvaWQqIGNvbnN0JiBidWZmZXIs
IHNpemVfdCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkUHJpdmF0ZUJ1ZmZlcihz
aXplX3QsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlID0gMCk7CiAKQEAgLTE5OSwx
MSArMjEyLDEyIEBAIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoY29uc3QgVCogY29uc3QmIG9iamVj
dCwgTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mCiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+Ci12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25zdCBU
KiBjb25zdCYgb2JqZWN0LCBNZW1vcnlPYmplY3RJbmZvKiBvd25lck9iamVjdEluZm8sIE1lbW9y
eU93bmluZ1R5cGUgb3duaW5nVHlwZSkKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRP
YmplY3RJbXBsKGNvbnN0IFQqIGNvbnN0JiBvYmplY3QsIE1lbW9yeU9iamVjdEluZm8qIG93bmVy
T2JqZWN0SW5mbywgTWVtb3J5T3duaW5nVHlwZSBvd25pbmdUeXBlLCBjb25zdCBjaGFyKiBuYW1l
KQogewogICAgIGlmIChvd25pbmdUeXBlID09IGJ5UmVmZXJlbmNlKQogICAgICAgICByZXBvcnRN
ZW1vcnlVc2FnZShvYmplY3QsIG93bmVyT2JqZWN0SW5mbyk7CiAgICAgZWxzZSB7CisgICAgICAg
IHJlcG9ydEVkZ2Uob3duZXJPYmplY3RJbmZvLCBvYmplY3QsIG5hbWUpOwogICAgICAgICBpZiAo
IW9iamVjdCB8fCB2aXNpdGVkKG9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGRlZmVySW5zdHJ1bWVudGVkUG9pbnRlcihhZG9wdFB0cihuZXcgSW5zdHJ1bWVudGVkUG9pbnRl
cjxUPihvYmplY3QsIG93bmVyT2JqZWN0SW5mbykpKTsKQEAgLTIxMSwxOSArMjI1LDE5IEBAIHZv
aWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRPYmplY3RJbXBsKGNvbnN0IFQqIGNvbnN0JiBv
YmplY3QsIE1lbW9yeU9iamVjdEluCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIE1l
bW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25zdCBPd25QdHI8VD4qIGNvbnN0
JiBvYmplY3QsIE1lbW9yeU9iamVjdEluZm8qIG93bmVyT2JqZWN0SW5mbywgTWVtb3J5T3duaW5n
VHlwZSBvd25pbmdUeXBlKQordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVjdElt
cGwoY29uc3QgT3duUHRyPFQ+KiBjb25zdCYgb2JqZWN0LCBNZW1vcnlPYmplY3RJbmZvKiBvd25l
ck9iamVjdEluZm8sIE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSwgY29uc3QgY2hhciogbmFt
ZSkKIHsKICAgICBpZiAob3duaW5nVHlwZSA9PSBieVBvaW50ZXIgJiYgIXZpc2l0ZWQob2JqZWN0
KSkKICAgICAgICAgY291bnRPYmplY3RTaXplKG9iamVjdCwgZ2V0T2JqZWN0VHlwZShvd25lck9i
amVjdEluZm8pLCBzaXplb2YoKm9iamVjdCkpOwotICAgIGFkZE9iamVjdEltcGwob2JqZWN0LT5n
ZXQoKSwgb3duZXJPYmplY3RJbmZvLCBieVBvaW50ZXIpOworICAgIGFkZE9iamVjdEltcGwob2Jq
ZWN0LT5nZXQoKSwgb3duZXJPYmplY3RJbmZvLCBieVBvaW50ZXIsIG5hbWUpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVjdElt
cGwoY29uc3QgUmVmUHRyPFQ+KiBjb25zdCYgb2JqZWN0LCBNZW1vcnlPYmplY3RJbmZvKiBvd25l
ck9iamVjdEluZm8sIE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSkKK3ZvaWQgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjphZGRPYmplY3RJbXBsKGNvbnN0IFJlZlB0cjxUPiogY29uc3QmIG9iamVj
dCwgTWVtb3J5T2JqZWN0SW5mbyogb3duZXJPYmplY3RJbmZvLCBNZW1vcnlPd25pbmdUeXBlIG93
bmluZ1R5cGUsIGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgaWYgKG93bmluZ1R5cGUgPT0gYnlQ
b2ludGVyICYmICF2aXNpdGVkKG9iamVjdCkpCiAgICAgICAgIGNvdW50T2JqZWN0U2l6ZShvYmpl
Y3QsIGdldE9iamVjdFR5cGUob3duZXJPYmplY3RJbmZvKSwgc2l6ZW9mKCpvYmplY3QpKTsKLSAg
ICBhZGRPYmplY3RJbXBsKG9iamVjdC0+Z2V0KCksIG93bmVyT2JqZWN0SW5mbywgYnlQb2ludGVy
KTsKKyAgICBhZGRPYmplY3RJbXBsKG9iamVjdC0+Z2V0KCksIG93bmVyT2JqZWN0SW5mbywgYnlQ
b2ludGVyLCBuYW1lKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL01lbW9yeU9iamVjdEluZm8uaCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeU9i
amVjdEluZm8uaAppbmRleCAxYzdmZTZjLi45NDBhZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9NZW1vcnlPYmplY3RJbmZvLmgKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5T2JqZWN0
SW5mby5oCkBAIC0zMSw2ICszMSw4IEBACiAjaWZuZGVmIE1lbW9yeU9iamVjdEluZm9faAogI2Rl
ZmluZSBNZW1vcnlPYmplY3RJbmZvX2gKIAorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCiBuYW1lc3BhY2UgV1RGIHsKIAogY2xhc3MgTWVtb3J5Q2xhc3NJbmZvOwpAQCAtNTMsNiAr
NTUsOSBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IG9iamVjdFNpemUoKSBjb25zdCB7IHJldHVybiBt
X29iamVjdFNpemU7IH0KICAgICBjb25zdCB2b2lkKiByZXBvcnRlZFBvaW50ZXIoKSBjb25zdCB7
IHJldHVybiBtX3BvaW50ZXI7IH0KIAorICAgIHZvaWQgc2V0Q2xhc3NOYW1lKGNvbnN0IFN0cmlu
ZyYgY2xhc3NOYW1lKSB7IG1fY2xhc3NOYW1lID0gY2xhc3NOYW1lOyB9CisgICAgdm9pZCBzZXRO
YW1lKGNvbnN0IFN0cmluZyYgbmFtZSkgeyBtX25hbWUgPSBuYW1lOyB9CisKICAgICBNZW1vcnlJ
bnN0cnVtZW50YXRpb24qIG1lbW9yeUluc3RydW1lbnRhdGlvbigpIHsgcmV0dXJuIG1fbWVtb3J5
SW5zdHJ1bWVudGF0aW9uOyB9CiAKIHByaXZhdGU6CkBAIC03Myw2ICs3OCw4IEBAIHByaXZhdGU6
CiAgICAgTWVtb3J5T2JqZWN0VHlwZSBtX29iamVjdFR5cGU7CiAgICAgc2l6ZV90IG1fb2JqZWN0
U2l6ZTsKICAgICBjb25zdCB2b2lkKiBtX3BvaW50ZXI7CisgICAgU3RyaW5nIG1fY2xhc3NOYW1l
OworICAgIFN0cmluZyBtX25hbWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177380</attachid>
            <date>2012-12-03 17:17:58 -0800</date>
            <delta_ts>2012-12-03 18:19:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103232-20121204051523.patch</filename>
            <type>text/plain</type>
            <size>14377</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDBlNTNhMjgyY2M4MDllMzNhZDNjZjRk
NjE1YzM4ZWZhNjMzMDg2YWEuLjJjZjMyMzI5NjIwYmEwYTYyNTcwNDliYmI2ZjRlN2NjYjRmMTNk
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTItMTItMDMgIFl1cnkgU2VtaWtoYXRza3kgIDx5
dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTk1JIGludHJvZHVj
ZSBoZWFwIGdyYXBoIHJlY29yZGluZyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMzIzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudCBpcyBleHRlbmRl
ZCB3aXRoIHNldmVyYWwgbWV0aG9kcyBmb3IgcmVwb3J0aW5nCisgICAgICAgIGhlYXAgZ3JhcGgg
dmVydGljZXMgYW5kIGVkZ2VzLiBFZGdlIHNvdXJjZSBpcyBhbHdheXMgaWRlbmZpZWQgYnkgaGVh
cCBvYmplY3QKKyAgICAgICAgYWRkcmVzcy4gVGFyZ2V0IG5vZGUgbWlnaHQgYmUgZWl0aGVyIGEg
ZGVzdGluYXRpb24gb2JqZWN0IGFkZHJlc3MoZWl0aGVyIHJlYWwKKyAgICAgICAgb3IgYWRqdXN0
ZWQgaWYgdGhlIGVkZ2Ugd2FzIHJldHJpZXZlZCBmcm9tIGEgcG9pbnRlciB0byBhIGJhc2UgY2xh
c3MpIG9yIGEKKyAgICAgICAgTWVtb3J5T2JqZWN0SW5mbyBpbiBjYXNlIG9mIGludGVybmFsIGJ1
ZmZlcnMuCisKKyAgICAgICAgKiB3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAg
ICAgKFdURjo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpyZXBvcnRFZGdlKToKKyAgICAgICAgKFdU
Rik6CisgICAgICAgIChXVEY6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6cmVwb3J0TGlua1RvQnVm
ZmVyKTogcmVwb3J0IGVkZ2UgYmV0d2VlbiB0aGUgb2JqZWN0CisgICAgICAgIGFuZCBhIGJ1ZmZl
ciB3aGljaCBpdCBvd25zLgorICAgICAgICAoV1RGOjpNZW1vcnlJbnN0cnVtZW50YXRpb246Oklu
c3RydW1lbnRlZFBvaW50ZXJCYXNlOjpwcm9jZXNzKToKKyAgICAgICAgKFdURjo6TWVtb3J5Q2xh
c3NJbmZvOjphZGRSYXdCdWZmZXIpOgorICAgICAgICAoV1RGOjpNZW1vcnlDbGFzc0luZm86OmFk
ZFByaXZhdGVCdWZmZXIpOgorICAgICAgICAqIHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaDoK
KyAgICAgICAgKE1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudCk6CisgICAgICAgIChXVEY6Ok1l
bW9yeUluc3RydW1lbnRhdGlvbkNsaWVudDo6cmVwb3J0Tm9kZSk6CisgICAgICAgIChXVEY6Ok1l
bW9yeUluc3RydW1lbnRhdGlvbkNsaWVudDo6cmVwb3J0RWRnZSk6CisgICAgICAgIChXVEY6Ok1l
bW9yeUluc3RydW1lbnRhdGlvbkNsaWVudDo6cmVwb3J0TGVhZik6CisgICAgICAgIChXVEY6Ok1l
bW9yeUluc3RydW1lbnRhdGlvbkNsaWVudDo6cmVwb3J0QmFzZUFkZHJlc3MpOiBpZiB3ZSBmb3Vu
ZCBhbiBvYmplY3QgYnkgYSBwb2ludGVyCisgICAgICAgIHRvIGJhc2UgY2xhc3MgaXQgbWF5IGhh
dmUgZGlmZmVyZW50IHZhbHVlIHRoYW4gcmVhbCBvYmplY3QgYWRkcmVzcy4gUmVwb3J0IGJvdGgg
cmVhbCBhbmQKKyAgICAgICAgYWRqdXN0ZWQgYWRkcmVzc2VzIHNvIHRoYXQgdGhleSBib3RoIGNh
biBiZSB1c2VkIGZvciBpZGVudGlmeWluZyBjb3JyZXNwb25kaW5nIGhlYXAgZ3JhcGgKKyAgICAg
ICAgbm9kZS4KKyAgICAgICAgKFdURjo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRSb290T2Jq
ZWN0KToKKyAgICAgICAgKE1lbW9yeUluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChXVEY6Ok1l
bW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0KToKKyAgICAgICAgKFdURjo6TWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjphZGRSYXdCdWZmZXIpOgorICAgICAgICAoV1RGOjpNZW1vcnlJbnN0cnVt
ZW50YXRpb246Ok93bmluZ1RyYWl0czo6YWRkT2JqZWN0KToKKyAgICAgICAgKFdURjo6TWVtb3J5
Q2xhc3NJbmZvOjphZGRNZW1iZXIpOgorICAgICAgICAoTWVtb3J5Q2xhc3NJbmZvKToKKyAgICAg
ICAgKFdURjo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRPYmplY3RJbXBsKToKKyAgICAgICAg
KiB3dGYvTWVtb3J5T2JqZWN0SW5mby5oOiBhZGRlZCBtZXRob2RzIGZvciByZXBvdGluZyBjbGFz
cyBuYW1lIGFuZCBzb21lIG5hbWUgc3RyaW5nLgorICAgICAgICAoV1RGOjpNZW1vcnlPYmplY3RJ
bmZvOjpzZXRDbGFzc05hbWUpOgorICAgICAgICAoV1RGOjpNZW1vcnlPYmplY3RJbmZvOjpzZXRO
YW1lKToKKyAgICAgICAgKE1lbW9yeU9iamVjdEluZm8pOgorCiAyMDEyLTEyLTAyICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgSXQgc2hvdWxkIGJlIHBvc3NpYmxl
IHRvIGJ1aWxkIGFuZCBydW4gd2l0aCBERkdfRU5BQkxFKFBST1BBR0FUSU9OX1ZFUkJPU0UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwIGIvU291
cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBkNGJlMmI2ZGNmYjQ2
NmY1MjE2ZDk3MWM3MTNmMmEzOTE5MTI1ZTM2Li5mMmM1ZGQyZjJhNDI5NGMwNzUxMTg2ZTNhNDFk
MjBkOTZjY2IyZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAK
QEAgLTUwLDYgKzUwLDExIEBAIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6fk1lbW9yeUluc3RydW1l
bnRhdGlvbigpCiB7CiB9CiAKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpyZXBvcnRFZGdl
KE1lbW9yeU9iamVjdEluZm8qIG93bmVyT2JqZWN0SW5mbywgY29uc3Qgdm9pZCogdGFyZ2V0LCBj
b25zdCBjaGFyKiBuYW1lKQoreworICAgIG1fY2xpZW50LT5yZXBvcnRFZGdlKG93bmVyT2JqZWN0
SW5mby0+cmVwb3J0ZWRQb2ludGVyKCksIHRhcmdldCwgbmFtZSk7Cit9CisKIE1lbW9yeU9iamVj
dFR5cGUgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpnZXRPYmplY3RUeXBlKE1lbW9yeU9iamVjdElu
Zm8qIG9iamVjdEluZm8pCiB7CiAgICAgcmV0dXJuIG9iamVjdEluZm8tPm9iamVjdFR5cGUoKTsK
QEAgLTYwLDYgKzY1LDEzIEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpjYWxsUmVwb3J0
T2JqZWN0SW5mbyhNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJCiAgICAgbWVtb3J5T2Jq
ZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyhwb2ludGVyLCBvYmplY3RUeXBlLCBvYmplY3RTaXpl
KTsKIH0KIAordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydExpbmtUb0J1ZmZlcihj
b25zdCB2b2lkKiBvd25lciwgY29uc3Qgdm9pZCogYnVmZmVyLCBNZW1vcnlPYmplY3RUeXBlIG93
bmVyT2JqZWN0VHlwZSwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiBlZGdl
TmFtZSkKK3sKKyAgICBNZW1vcnlPYmplY3RJbmZvIG1lbW9yeU9iamVjdEluZm8odGhpcywgb3du
ZXJPYmplY3RUeXBlKTsKKyAgICBtZW1vcnlPYmplY3RJbmZvLnJlcG9ydE9iamVjdEluZm8oYnVm
ZmVyLCBvd25lck9iamVjdFR5cGUsIHNpemUpOworICAgIG1fY2xpZW50LT5yZXBvcnRMZWFmKG93
bmVyLCBtZW1vcnlPYmplY3RJbmZvLCBlZGdlTmFtZSk7Cit9CisKIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6SW5zdHJ1bWVudGVkUG9pbnRlckJhc2U6Okluc3RydW1lbnRlZFBvaW50ZXJCYXNlKE1l
bW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pCiAgICAgOiBtX293bmVyT2JqZWN0VHlw
ZShtZW1vcnlPYmplY3RJbmZvLT5vYmplY3RUeXBlKCkpCiB7CkBAIC03Niw5ICs4OCwxMyBAQCB2
b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6SW5zdHJ1bWVudGVkUG9pbnRlckJhc2U6OnByb2Nl
c3MoTWVtb3J5SW5zdHJ1bWVudGF0aQogCiAgICAgY29uc3Qgdm9pZCogcG9pbnRlciA9IG1lbW9y
eU9iamVjdEluZm8ucmVwb3J0ZWRQb2ludGVyKCk7CiAgICAgQVNTRVJUKHBvaW50ZXIpOwotICAg
IGlmIChwb2ludGVyICE9IG9yaWdpbmFsUG9pbnRlciAmJiBtZW1vcnlJbnN0cnVtZW50YXRpb24t
PnZpc2l0ZWQocG9pbnRlcikpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAocG9pbnRlciAhPSBv
cmlnaW5hbFBvaW50ZXIpIHsKKyAgICAgICAgbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5tX2NsaWVu
dC0+cmVwb3J0QmFzZUFkZHJlc3Mob3JpZ2luYWxQb2ludGVyLCBwb2ludGVyKTsKKyAgICAgICAg
aWYgKG1lbW9yeUluc3RydW1lbnRhdGlvbi0+dmlzaXRlZChwb2ludGVyKSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICB9CiAgICAgbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5jb3VudE9iamVjdFNp
emUocG9pbnRlciwgbWVtb3J5T2JqZWN0SW5mby5vYmplY3RUeXBlKCksIG1lbW9yeU9iamVjdElu
Zm8ub2JqZWN0U2l6ZSgpKTsKKyAgICBtZW1vcnlJbnN0cnVtZW50YXRpb24tPm1fY2xpZW50LT5y
ZXBvcnROb2RlKG1lbW9yeU9iamVjdEluZm8pOwogICAgIGlmICghbWVtb3J5SW5zdHJ1bWVudGF0
aW9uLT5jaGVja0NvdW50ZWRPYmplY3QocG9pbnRlcikpIHsKICNpZiBERUJVR19QT0lOVEVSX0lO
U1RSVU1FTlRBVElPTgogICAgICAgICBmcHV0cygiVW5rbm93biBvYmplY3QgY291bnRlZDpcbiIs
IHN0ZGVycik7CkBAIC05NCwxOCArMTEwLDE5IEBAIHZvaWQgTWVtb3J5Q2xhc3NJbmZvOjppbml0
KGNvbnN0IHZvaWQqIHBvaW50ZXIsIE1lbW9yeU9iamVjdFR5cGUgb2JqZWN0VHlwZSwgc2l6CiAg
ICAgbV9vYmplY3RUeXBlID0gbV9tZW1vcnlPYmplY3RJbmZvLT5vYmplY3RUeXBlKCk7CiB9CiAK
LXZvaWQgTWVtb3J5Q2xhc3NJbmZvOjphZGRSYXdCdWZmZXIoY29uc3Qgdm9pZCogY29uc3QmIGJ1
ZmZlciwgc2l6ZV90IHNpemUpCit2b2lkIE1lbW9yeUNsYXNzSW5mbzo6YWRkUmF3QnVmZmVyKGNv
bnN0IHZvaWQqIGNvbnN0JiBidWZmZXIsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiBub2RlTmFt
ZSwgY29uc3QgY2hhciogZWRnZU5hbWUpCiB7Ci0gICAgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24t
PmFkZFJhd0J1ZmZlcihidWZmZXIsIG1fb2JqZWN0VHlwZSwgc2l6ZSk7CisgICAgbV9tZW1vcnlJ
bnN0cnVtZW50YXRpb24tPmFkZFJhd0J1ZmZlcihtX21lbW9yeU9iamVjdEluZm8tPnJlcG9ydGVk
UG9pbnRlcigpLCBidWZmZXIsIG1fb2JqZWN0VHlwZSwgc2l6ZSwgbm9kZU5hbWUsIGVkZ2VOYW1l
KTsKIH0KIAotdm9pZCBNZW1vcnlDbGFzc0luZm86OmFkZFByaXZhdGVCdWZmZXIoc2l6ZV90IHNp
emUsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlKQordm9pZCBNZW1vcnlDbGFzc0lu
Zm86OmFkZFByaXZhdGVCdWZmZXIoc2l6ZV90IHNpemUsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJP
YmplY3RUeXBlLCBjb25zdCBjaGFyKiBub2RlTmFtZSwgY29uc3QgY2hhciogZWRnZU5hbWUpCiB7
CiAgICAgaWYgKCFzaXplKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFvd25lck9iamVjdFR5
cGUpCiAgICAgICAgIG93bmVyT2JqZWN0VHlwZSA9IG1fb2JqZWN0VHlwZTsKICAgICBtX21lbW9y
eUluc3RydW1lbnRhdGlvbi0+Y291bnRPYmplY3RTaXplKDAsIG93bmVyT2JqZWN0VHlwZSwgc2l6
ZSk7CisgICAgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPnJlcG9ydExpbmtUb0J1ZmZlcihtX21l
bW9yeU9iamVjdEluZm8tPnJlcG9ydGVkUG9pbnRlcigpLCAwLCBvd25lck9iamVjdFR5cGUsIHNp
emUsIG5vZGVOYW1lLCBlZGdlTmFtZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV1RG
L3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaAppbmRleCAyYTY4MzJiNzFmNmNlNzNkZmIzNTZk
NmM2Nzg5NTBmOTc0NDhjMDJjLi42ZGE1ODhmNjIyMGMxZWJhMTNhNmY5MDVhNDQ3MjY4YTNlOWNh
NDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaApAQCAtNTgsNiArNTgs
MTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb3VudE9iamVjdFNpemUoY29uc3Qgdm9p
ZCosIE1lbW9yeU9iamVjdFR5cGUsIHNpemVfdCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCB2aXNp
dGVkKGNvbnN0IHZvaWQqKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGNoZWNrQ291bnRlZE9iamVj
dChjb25zdCB2b2lkKikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHJlcG9ydE5vZGUoY29uc3Qg
TWVtb3J5T2JqZWN0SW5mbyYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFZGdlKGNvbnN0
IHZvaWQqIHNvdXJjZSwgY29uc3Qgdm9pZCogdGFyZ2V0LCBjb25zdCBjaGFyKiBlZGdlTmFtZSkg
eyB9CisgICAgdmlydHVhbCB2b2lkIHJlcG9ydExlYWYoY29uc3Qgdm9pZCogc291cmNlLCBjb25z
dCBNZW1vcnlPYmplY3RJbmZvJiwgY29uc3QgY2hhciogZWRnZU5hbWUpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCByZXBvcnRCYXNlQWRkcmVzcyhjb25zdCB2b2lkKiBiYXNlLCBjb25zdCB2b2lkKiBy
ZWFsKSB7IH0KIH07CiAKIGNsYXNzIE1lbW9yeUluc3RydW1lbnRhdGlvbiB7CkBAIC02Nyw3ICs3
Miw3IEBAIHB1YmxpYzoKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZFJvb3RP
YmplY3QoY29uc3QgVCYgdCkKICAgICB7Ci0gICAgICAgIGFkZE9iamVjdCh0LCBtX3Jvb3RPYmpl
Y3RJbmZvLmdldCgpKTsKKyAgICAgICAgYWRkT2JqZWN0KHQsIG1fcm9vdE9iamVjdEluZm8uZ2V0
KCksIDApOwogICAgICAgICBwcm9jZXNzRGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVycygpOwog
ICAgIH0KIApAQCAtOTUsNiArMTAwLDggQEAgcHJpdmF0ZToKICAgICBib29sIHZpc2l0ZWQoY29u
c3Qgdm9pZCogcG9pbnRlcikgeyByZXR1cm4gbV9jbGllbnQtPnZpc2l0ZWQocG9pbnRlcik7IH0K
ICAgICBib29sIGNoZWNrQ291bnRlZE9iamVjdChjb25zdCB2b2lkKiBwb2ludGVyKSB7IHJldHVy
biBtX2NsaWVudC0+Y2hlY2tDb3VudGVkT2JqZWN0KHBvaW50ZXIpOyB9CiAKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCByZXBvcnRFZGdlKE1lbW9yeU9iamVjdEluZm8qIG93bmVyT2JqZWN0
SW5mbywgY29uc3Qgdm9pZCogdGFyZ2V0LCBjb25zdCBjaGFyKiBlZGdlTmFtZSk7CisKICAgICB2
aXJ0dWFsIHZvaWQgZGVmZXJJbnN0cnVtZW50ZWRQb2ludGVyKFBhc3NPd25QdHI8SW5zdHJ1bWVu
dGVkUG9pbnRlckJhc2U+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEZWZlcnJlZElu
c3RydW1lbnRlZFBvaW50ZXJzKCkgPSAwOwogCkBAIC0xMzUsMzMgKzE0MiwzNSBAQCBwcml2YXRl
OgogICAgICAgICBjb25zdCBUKiBtX3BvaW50ZXI7CiAgICAgfTsKIAotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0KGNvbnN0IFQmIHQsIE1lbW9yeU9iamVjdEluZm8qIG93
bmVyT2JqZWN0SW5mbykgeyBPd25pbmdUcmFpdHM8VD46OmFkZE9iamVjdCh0aGlzLCB0LCBvd25l
ck9iamVjdEluZm8pOyB9Ci0gICAgdm9pZCBhZGRSYXdCdWZmZXIoY29uc3Qgdm9pZCogY29uc3Qm
IGJ1ZmZlciwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIHNpemVfdCBzaXplKQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0KGNvbnN0IFQmIHQsIE1lbW9y
eU9iamVjdEluZm8qIG93bmVyT2JqZWN0SW5mbywgY29uc3QgY2hhciogZWRnZU5hbWUpIHsgT3du
aW5nVHJhaXRzPFQ+OjphZGRPYmplY3QodGhpcywgdCwgb3duZXJPYmplY3RJbmZvLCBlZGdlTmFt
ZSk7IH0KKyAgICB2b2lkIGFkZFJhd0J1ZmZlcihjb25zdCB2b2lkKiBvd25lciwgY29uc3Qgdm9p
ZCogYnVmZmVyLCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgc2l6ZV90IHNpemUs
IGNvbnN0IGNoYXIqIG5vZGVOYW1lID0gMCwgY29uc3QgY2hhciogZWRnZU5hbWUgPSAwKQogICAg
IHsKICAgICAgICAgaWYgKCFidWZmZXIgfHwgdmlzaXRlZChidWZmZXIpKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBjb3VudE9iamVjdFNpemUoYnVmZmVyLCBvd25lck9iamVjdFR5cGUs
IHNpemUpOworICAgICAgICByZXBvcnRMaW5rVG9CdWZmZXIob3duZXIsIGJ1ZmZlciwgb3duZXJP
YmplY3RUeXBlLCBzaXplLCBub2RlTmFtZSwgZWRnZU5hbWUpOwogICAgIH0KKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCByZXBvcnRMaW5rVG9CdWZmZXIoY29uc3Qgdm9pZCogb3duZXIsIGNv
bnN0IHZvaWQqIGJ1ZmZlciwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIHNpemVf
dCwgY29uc3QgY2hhciogbm9kZU5hbWUsIGNvbnN0IGNoYXIqIGVkZ2VOYW1lKTsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RydWN0IE93bmluZ1RyYWl0cyB7IC8vIERlZmF1bHQg
YnlSZWZlcmVuY2UgaW1wbGVtZW50YXRpb24uCi0gICAgICAgIHN0YXRpYyB2b2lkIGFkZE9iamVj
dChNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgVCYgdCwgTWVt
b3J5T2JqZWN0SW5mbyogb3duZXJPYmplY3RJbmZvKQorICAgICAgICBzdGF0aWMgdm9pZCBhZGRP
YmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50YXRpb24sIGNvbnN0IFQmIHQs
IE1lbW9yeU9iamVjdEluZm8qIG93bmVyT2JqZWN0SW5mbywgY29uc3QgY2hhciogZWRnZU5hbWUp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGluc3RydW1lbnRhdGlvbi0+YWRkT2JqZWN0SW1wbCgm
dCwgb3duZXJPYmplY3RJbmZvLCBieVJlZmVyZW5jZSk7CisgICAgICAgICAgICBpbnN0cnVtZW50
YXRpb24tPmFkZE9iamVjdEltcGwoJnQsIG93bmVyT2JqZWN0SW5mbywgYnlSZWZlcmVuY2UsIGVk
Z2VOYW1lKTsKICAgICAgICAgfQogICAgIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgog
ICAgIHN0cnVjdCBPd25pbmdUcmFpdHM8VCo+IHsgLy8gQ3VzdG9tIGJ5UG9pbnRlciBpbXBsZW1l
bnRhdGlvbi4KLSAgICAgICAgc3RhdGljIHZvaWQgYWRkT2JqZWN0KE1lbW9yeUluc3RydW1lbnRh
dGlvbiogaW5zdHJ1bWVudGF0aW9uLCBjb25zdCBUKiBjb25zdCYgdCwgTWVtb3J5T2JqZWN0SW5m
byogb3duZXJPYmplY3RJbmZvKQorICAgICAgICBzdGF0aWMgdm9pZCBhZGRPYmplY3QoTWVtb3J5
SW5zdHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50YXRpb24sIGNvbnN0IFQqIGNvbnN0JiB0LCBNZW1v
cnlPYmplY3RJbmZvKiBvd25lck9iamVjdEluZm8sIGNvbnN0IGNoYXIqIGVkZ2VOYW1lKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBpbnN0cnVtZW50YXRpb24tPmFkZE9iamVjdEltcGwodCwgb3du
ZXJPYmplY3RJbmZvLCBieVBvaW50ZXIpOworICAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLT5h
ZGRPYmplY3RJbXBsKHQsIG93bmVyT2JqZWN0SW5mbywgYnlQb2ludGVyLCBlZGdlTmFtZSk7CiAg
ICAgICAgIH0KICAgICB9OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmpl
Y3RJbXBsKGNvbnN0IFQqIGNvbnN0JiwgTWVtb3J5T2JqZWN0SW5mbyosIE1lbW9yeU93bmluZ1R5
cGUpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0SW1wbChjb25zdCBP
d25QdHI8VD4qIGNvbnN0JiwgTWVtb3J5T2JqZWN0SW5mbyosIE1lbW9yeU93bmluZ1R5cGUpOwot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0SW1wbChjb25zdCBSZWZQdHI8
VD4qIGNvbnN0JiwgTWVtb3J5T2JqZWN0SW5mbyosIE1lbW9yeU93bmluZ1R5cGUpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0SW1wbChjb25zdCBUKiBjb25zdCYsIE1l
bW9yeU9iamVjdEluZm8qLCBNZW1vcnlPd25pbmdUeXBlLCBjb25zdCBjaGFyKiBlZGdlTmFtZSk7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmplY3RJbXBsKGNvbnN0IE93blB0
cjxUPiogY29uc3QmLCBNZW1vcnlPYmplY3RJbmZvKiwgTWVtb3J5T3duaW5nVHlwZSwgY29uc3Qg
Y2hhciogZWRnZU5hbWUpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0
SW1wbChjb25zdCBSZWZQdHI8VD4qIGNvbnN0JiwgTWVtb3J5T2JqZWN0SW5mbyosIE1lbW9yeU93
bmluZ1R5cGUsIGNvbnN0IGNoYXIqIGVkZ2VOYW1lKTsKIAogICAgIE1lbW9yeUluc3RydW1lbnRh
dGlvbkNsaWVudCogbV9jbGllbnQ7CiAgICAgT3duUHRyPE1lbW9yeU9iamVjdEluZm8+IG1fcm9v
dE9iamVjdEluZm87CkBAIC0xNzgsOSArMTg3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgaW5pdChw
b2ludGVyLCBvYmplY3RUeXBlLCBhY3R1YWxTaXplKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBNPiB2b2lkIGFkZE1lbWJlcihjb25zdCBNJiBtZW1iZXIpIHsgbV9tZW1vcnlJbnN0
cnVtZW50YXRpb24tPmFkZE9iamVjdChtZW1iZXIsIG1fbWVtb3J5T2JqZWN0SW5mbyk7IH0KLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRSYXdCdWZmZXIoY29uc3Qgdm9pZCogY29uc3Qm
IGJ1ZmZlciwgc2l6ZV90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRQcml2YXRl
QnVmZmVyKHNpemVfdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUgPSAwKTsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBNPiB2b2lkIGFkZE1lbWJlcihjb25zdCBNJiBtZW1iZXIsIGNv
bnN0IGNoYXIqIGVkZ2VOYW1lID0gMCkKKyAgICB7CisgICAgICAgIG1fbWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLT5hZGRPYmplY3QobWVtYmVyLCBtX21lbW9yeU9iamVjdEluZm8sIGVkZ2VOYW1lKTsK
KyAgICB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkUmF3QnVmZmVyKGNvbnN0IHZv
aWQqIGNvbnN0JiBidWZmZXIsIHNpemVfdCwgY29uc3QgY2hhciogbm9kZU5hbWUgPSAwLCBjb25z
dCBjaGFyKiBlZGdlTmFtZSA9IDApOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFkZFBy
aXZhdGVCdWZmZXIoc2l6ZV90LCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSA9IDAs
IGNvbnN0IGNoYXIqIG5vZGVOYW1lID0gMCwgY29uc3QgY2hhciogZWRnZU5hbWUgPSAwKTsKIAog
ICAgIHZvaWQgYWRkV2Vha1BvaW50ZXIodm9pZCopIHsgfQogCkBAIC0xOTksMTEgKzIxMSwxMiBA
QCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKGNvbnN0IFQqIGNvbnN0JiBvYmplY3QsIE1lbW9yeU9i
amVjdEluZm8qIG1lbW9yeU9iamVjdEluZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9p
ZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVjdEltcGwoY29uc3QgVCogY29uc3QmIG9i
amVjdCwgTWVtb3J5T2JqZWN0SW5mbyogb3duZXJPYmplY3RJbmZvLCBNZW1vcnlPd25pbmdUeXBl
IG93bmluZ1R5cGUpCit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChj
b25zdCBUKiBjb25zdCYgb2JqZWN0LCBNZW1vcnlPYmplY3RJbmZvKiBvd25lck9iamVjdEluZm8s
IE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSwgY29uc3QgY2hhciogZWRnZU5hbWUpCiB7CiAg
ICAgaWYgKG93bmluZ1R5cGUgPT0gYnlSZWZlcmVuY2UpCiAgICAgICAgIHJlcG9ydE1lbW9yeVVz
YWdlKG9iamVjdCwgb3duZXJPYmplY3RJbmZvKTsKICAgICBlbHNlIHsKKyAgICAgICAgcmVwb3J0
RWRnZShvd25lck9iamVjdEluZm8sIG9iamVjdCwgZWRnZU5hbWUpOwogICAgICAgICBpZiAoIW9i
amVjdCB8fCB2aXNpdGVkKG9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGRl
ZmVySW5zdHJ1bWVudGVkUG9pbnRlcihhZG9wdFB0cihuZXcgSW5zdHJ1bWVudGVkUG9pbnRlcjxU
PihvYmplY3QsIG93bmVyT2JqZWN0SW5mbykpKTsKQEAgLTIxMSwxOSArMjI0LDE5IEBAIHZvaWQg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRPYmplY3RJbXBsKGNvbnN0IFQqIGNvbnN0JiBvYmpl
Y3QsIE1lbW9yeU9iamVjdEluCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIE1lbW9y
eUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25zdCBPd25QdHI8VD4qIGNvbnN0JiBv
YmplY3QsIE1lbW9yeU9iamVjdEluZm8qIG93bmVyT2JqZWN0SW5mbywgTWVtb3J5T3duaW5nVHlw
ZSBvd25pbmdUeXBlKQordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVjdEltcGwo
Y29uc3QgT3duUHRyPFQ+KiBjb25zdCYgb2JqZWN0LCBNZW1vcnlPYmplY3RJbmZvKiBvd25lck9i
amVjdEluZm8sIE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSwgY29uc3QgY2hhciogZWRnZU5h
bWUpCiB7CiAgICAgaWYgKG93bmluZ1R5cGUgPT0gYnlQb2ludGVyICYmICF2aXNpdGVkKG9iamVj
dCkpCiAgICAgICAgIGNvdW50T2JqZWN0U2l6ZShvYmplY3QsIGdldE9iamVjdFR5cGUob3duZXJP
YmplY3RJbmZvKSwgc2l6ZW9mKCpvYmplY3QpKTsKLSAgICBhZGRPYmplY3RJbXBsKG9iamVjdC0+
Z2V0KCksIG93bmVyT2JqZWN0SW5mbywgYnlQb2ludGVyKTsKKyAgICBhZGRPYmplY3RJbXBsKG9i
amVjdC0+Z2V0KCksIG93bmVyT2JqZWN0SW5mbywgYnlQb2ludGVyLCBlZGdlTmFtZSk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2Jq
ZWN0SW1wbChjb25zdCBSZWZQdHI8VD4qIGNvbnN0JiBvYmplY3QsIE1lbW9yeU9iamVjdEluZm8q
IG93bmVyT2JqZWN0SW5mbywgTWVtb3J5T3duaW5nVHlwZSBvd25pbmdUeXBlKQordm9pZCBNZW1v
cnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVjdEltcGwoY29uc3QgUmVmUHRyPFQ+KiBjb25zdCYg
b2JqZWN0LCBNZW1vcnlPYmplY3RJbmZvKiBvd25lck9iamVjdEluZm8sIE1lbW9yeU93bmluZ1R5
cGUgb3duaW5nVHlwZSwgY29uc3QgY2hhciogZWRnZU5hbWUpCiB7CiAgICAgaWYgKG93bmluZ1R5
cGUgPT0gYnlQb2ludGVyICYmICF2aXNpdGVkKG9iamVjdCkpCiAgICAgICAgIGNvdW50T2JqZWN0
U2l6ZShvYmplY3QsIGdldE9iamVjdFR5cGUob3duZXJPYmplY3RJbmZvKSwgc2l6ZW9mKCpvYmpl
Y3QpKTsKLSAgICBhZGRPYmplY3RJbXBsKG9iamVjdC0+Z2V0KCksIG93bmVyT2JqZWN0SW5mbywg
YnlQb2ludGVyKTsKKyAgICBhZGRPYmplY3RJbXBsKG9iamVjdC0+Z2V0KCksIG93bmVyT2JqZWN0
SW5mbywgYnlQb2ludGVyLCBlZGdlTmFtZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlPYmplY3RJbmZvLmggYi9Tb3VyY2UvV1RG
L3d0Zi9NZW1vcnlPYmplY3RJbmZvLmgKaW5kZXggMWM3ZmU2YzgzNjJjMWE0ZjE1MjRiZDVhMzky
ODc1YTg2YWJkODIzNS4uOTQwYWQ4YmMwZWE5MzZjNGFkNzkzNmExN2I3NDhlMjFmYjNkODkzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5T2JqZWN0SW5mby5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL01lbW9yeU9iamVjdEluZm8uaApAQCAtMzEsNiArMzEsOCBAQAogI2lmbmRlZiBN
ZW1vcnlPYmplY3RJbmZvX2gKICNkZWZpbmUgTWVtb3J5T2JqZWN0SW5mb19oCiAKKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIE1lbW9y
eUNsYXNzSW5mbzsKQEAgLTUzLDYgKzU1LDkgQEAgcHVibGljOgogICAgIHNpemVfdCBvYmplY3RT
aXplKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RTaXplOyB9CiAgICAgY29uc3Qgdm9pZCogcmVw
b3J0ZWRQb2ludGVyKCkgY29uc3QgeyByZXR1cm4gbV9wb2ludGVyOyB9CiAKKyAgICB2b2lkIHNl
dENsYXNzTmFtZShjb25zdCBTdHJpbmcmIGNsYXNzTmFtZSkgeyBtX2NsYXNzTmFtZSA9IGNsYXNz
TmFtZTsgfQorICAgIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0g
bmFtZTsgfQorCiAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBtZW1vcnlJbnN0cnVtZW50YXRp
b24oKSB7IHJldHVybiBtX21lbW9yeUluc3RydW1lbnRhdGlvbjsgfQogCiBwcml2YXRlOgpAQCAt
NzMsNiArNzgsOCBAQCBwcml2YXRlOgogICAgIE1lbW9yeU9iamVjdFR5cGUgbV9vYmplY3RUeXBl
OwogICAgIHNpemVfdCBtX29iamVjdFNpemU7CiAgICAgY29uc3Qgdm9pZCogbV9wb2ludGVyOwor
ICAgIFN0cmluZyBtX2NsYXNzTmFtZTsKKyAgICBTdHJpbmcgbV9uYW1lOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV1RGCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177388</attachid>
            <date>2012-12-03 18:20:02 -0800</date>
            <delta_ts>2012-12-04 10:36:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103232-20121204061727.patch</filename>
            <type>text/plain</type>
            <size>16374</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDBlNTNhMjgyY2M4MDllMzNhZDNjZjRk
NjE1YzM4ZWZhNjMzMDg2YWEuLjJjZjMyMzI5NjIwYmEwYTYyNTcwNDliYmI2ZjRlN2NjYjRmMTNk
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTItMTItMDMgIFl1cnkgU2VtaWtoYXRza3kgIDx5
dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTk1JIGludHJvZHVj
ZSBoZWFwIGdyYXBoIHJlY29yZGluZyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMzIzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudCBpcyBleHRlbmRl
ZCB3aXRoIHNldmVyYWwgbWV0aG9kcyBmb3IgcmVwb3J0aW5nCisgICAgICAgIGhlYXAgZ3JhcGgg
dmVydGljZXMgYW5kIGVkZ2VzLiBFZGdlIHNvdXJjZSBpcyBhbHdheXMgaWRlbmZpZWQgYnkgaGVh
cCBvYmplY3QKKyAgICAgICAgYWRkcmVzcy4gVGFyZ2V0IG5vZGUgbWlnaHQgYmUgZWl0aGVyIGEg
ZGVzdGluYXRpb24gb2JqZWN0IGFkZHJlc3MoZWl0aGVyIHJlYWwKKyAgICAgICAgb3IgYWRqdXN0
ZWQgaWYgdGhlIGVkZ2Ugd2FzIHJldHJpZXZlZCBmcm9tIGEgcG9pbnRlciB0byBhIGJhc2UgY2xh
c3MpIG9yIGEKKyAgICAgICAgTWVtb3J5T2JqZWN0SW5mbyBpbiBjYXNlIG9mIGludGVybmFsIGJ1
ZmZlcnMuCisKKyAgICAgICAgKiB3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAg
ICAgKFdURjo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpyZXBvcnRFZGdlKToKKyAgICAgICAgKFdU
Rik6CisgICAgICAgIChXVEY6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6cmVwb3J0TGlua1RvQnVm
ZmVyKTogcmVwb3J0IGVkZ2UgYmV0d2VlbiB0aGUgb2JqZWN0CisgICAgICAgIGFuZCBhIGJ1ZmZl
ciB3aGljaCBpdCBvd25zLgorICAgICAgICAoV1RGOjpNZW1vcnlJbnN0cnVtZW50YXRpb246Oklu
c3RydW1lbnRlZFBvaW50ZXJCYXNlOjpwcm9jZXNzKToKKyAgICAgICAgKFdURjo6TWVtb3J5Q2xh
c3NJbmZvOjphZGRSYXdCdWZmZXIpOgorICAgICAgICAoV1RGOjpNZW1vcnlDbGFzc0luZm86OmFk
ZFByaXZhdGVCdWZmZXIpOgorICAgICAgICAqIHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaDoK
KyAgICAgICAgKE1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudCk6CisgICAgICAgIChXVEY6Ok1l
bW9yeUluc3RydW1lbnRhdGlvbkNsaWVudDo6cmVwb3J0Tm9kZSk6CisgICAgICAgIChXVEY6Ok1l
bW9yeUluc3RydW1lbnRhdGlvbkNsaWVudDo6cmVwb3J0RWRnZSk6CisgICAgICAgIChXVEY6Ok1l
bW9yeUluc3RydW1lbnRhdGlvbkNsaWVudDo6cmVwb3J0TGVhZik6CisgICAgICAgIChXVEY6Ok1l
bW9yeUluc3RydW1lbnRhdGlvbkNsaWVudDo6cmVwb3J0QmFzZUFkZHJlc3MpOiBpZiB3ZSBmb3Vu
ZCBhbiBvYmplY3QgYnkgYSBwb2ludGVyCisgICAgICAgIHRvIGJhc2UgY2xhc3MgaXQgbWF5IGhh
dmUgZGlmZmVyZW50IHZhbHVlIHRoYW4gcmVhbCBvYmplY3QgYWRkcmVzcy4gUmVwb3J0IGJvdGgg
cmVhbCBhbmQKKyAgICAgICAgYWRqdXN0ZWQgYWRkcmVzc2VzIHNvIHRoYXQgdGhleSBib3RoIGNh
biBiZSB1c2VkIGZvciBpZGVudGlmeWluZyBjb3JyZXNwb25kaW5nIGhlYXAgZ3JhcGgKKyAgICAg
ICAgbm9kZS4KKyAgICAgICAgKFdURjo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRSb290T2Jq
ZWN0KToKKyAgICAgICAgKE1lbW9yeUluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChXVEY6Ok1l
bW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0KToKKyAgICAgICAgKFdURjo6TWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjphZGRSYXdCdWZmZXIpOgorICAgICAgICAoV1RGOjpNZW1vcnlJbnN0cnVt
ZW50YXRpb246Ok93bmluZ1RyYWl0czo6YWRkT2JqZWN0KToKKyAgICAgICAgKFdURjo6TWVtb3J5
Q2xhc3NJbmZvOjphZGRNZW1iZXIpOgorICAgICAgICAoTWVtb3J5Q2xhc3NJbmZvKToKKyAgICAg
ICAgKFdURjo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRPYmplY3RJbXBsKToKKyAgICAgICAg
KiB3dGYvTWVtb3J5T2JqZWN0SW5mby5oOiBhZGRlZCBtZXRob2RzIGZvciByZXBvdGluZyBjbGFz
cyBuYW1lIGFuZCBzb21lIG5hbWUgc3RyaW5nLgorICAgICAgICAoV1RGOjpNZW1vcnlPYmplY3RJ
bmZvOjpzZXRDbGFzc05hbWUpOgorICAgICAgICAoV1RGOjpNZW1vcnlPYmplY3RJbmZvOjpzZXRO
YW1lKToKKyAgICAgICAgKE1lbW9yeU9iamVjdEluZm8pOgorCiAyMDEyLTEyLTAyICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgSXQgc2hvdWxkIGJlIHBvc3NpYmxl
IHRvIGJ1aWxkIGFuZCBydW4gd2l0aCBERkdfRU5BQkxFKFBST1BBR0FUSU9OX1ZFUkJPU0UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwIGIvU291
cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBkNGJlMmI2ZGNmYjQ2
NmY1MjE2ZDk3MWM3MTNmMmEzOTE5MTI1ZTM2Li40YTU5OWM2NzJhZmQ5OTY1ODdmOTRlZWM4YmI1
MTE5YTZlOTZlNTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAK
QEAgLTUwLDYgKzUwLDExIEBAIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6fk1lbW9yeUluc3RydW1l
bnRhdGlvbigpCiB7CiB9CiAKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpyZXBvcnRFZGdl
KE1lbW9yeU9iamVjdEluZm8qIG93bmVyT2JqZWN0SW5mbywgY29uc3Qgdm9pZCogdGFyZ2V0LCBj
b25zdCBjaGFyKiBuYW1lKQoreworICAgIG1fY2xpZW50LT5yZXBvcnRFZGdlKG93bmVyT2JqZWN0
SW5mby0+cmVwb3J0ZWRQb2ludGVyKCksIHRhcmdldCwgbmFtZSk7Cit9CisKIE1lbW9yeU9iamVj
dFR5cGUgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpnZXRPYmplY3RUeXBlKE1lbW9yeU9iamVjdElu
Zm8qIG9iamVjdEluZm8pCiB7CiAgICAgcmV0dXJuIG9iamVjdEluZm8tPm9iamVjdFR5cGUoKTsK
QEAgLTYwLDYgKzY1LDE0IEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpjYWxsUmVwb3J0
T2JqZWN0SW5mbyhNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJCiAgICAgbWVtb3J5T2Jq
ZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyhwb2ludGVyLCBvYmplY3RUeXBlLCBvYmplY3RTaXpl
KTsKIH0KIAordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydExpbmtUb0J1ZmZlcihj
b25zdCB2b2lkKiBvd25lciwgY29uc3Qgdm9pZCogYnVmZmVyLCBNZW1vcnlPYmplY3RUeXBlIG93
bmVyT2JqZWN0VHlwZSwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIG5vZGVOYW1lLCBjb25zdCBj
aGFyKiBlZGdlTmFtZSkKK3sKKyAgICBNZW1vcnlPYmplY3RJbmZvIG1lbW9yeU9iamVjdEluZm8o
dGhpcywgb3duZXJPYmplY3RUeXBlKTsKKyAgICBtZW1vcnlPYmplY3RJbmZvLnJlcG9ydE9iamVj
dEluZm8oYnVmZmVyLCBvd25lck9iamVjdFR5cGUsIHNpemUpOworICAgIG1lbW9yeU9iamVjdElu
Zm8uc2V0TmFtZShub2RlTmFtZSk7CisgICAgbV9jbGllbnQtPnJlcG9ydExlYWYob3duZXIsIG1l
bW9yeU9iamVjdEluZm8sIGVkZ2VOYW1lKTsKK30KKwogTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpJ
bnN0cnVtZW50ZWRQb2ludGVyQmFzZTo6SW5zdHJ1bWVudGVkUG9pbnRlckJhc2UoTWVtb3J5T2Jq
ZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykKICAgICA6IG1fb3duZXJPYmplY3RUeXBlKG1lbW9y
eU9iamVjdEluZm8tPm9iamVjdFR5cGUoKSkKIHsKQEAgLTc2LDkgKzg5LDEzIEBAIHZvaWQgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpJbnN0cnVtZW50ZWRQb2ludGVyQmFzZTo6cHJvY2VzcyhNZW1v
cnlJbnN0cnVtZW50YXRpCiAKICAgICBjb25zdCB2b2lkKiBwb2ludGVyID0gbWVtb3J5T2JqZWN0
SW5mby5yZXBvcnRlZFBvaW50ZXIoKTsKICAgICBBU1NFUlQocG9pbnRlcik7Ci0gICAgaWYgKHBv
aW50ZXIgIT0gb3JpZ2luYWxQb2ludGVyICYmIG1lbW9yeUluc3RydW1lbnRhdGlvbi0+dmlzaXRl
ZChwb2ludGVyKSkKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChwb2ludGVyICE9IG9yaWdpbmFs
UG9pbnRlcikgeworICAgICAgICBtZW1vcnlJbnN0cnVtZW50YXRpb24tPm1fY2xpZW50LT5yZXBv
cnRCYXNlQWRkcmVzcyhvcmlnaW5hbFBvaW50ZXIsIHBvaW50ZXIpOworICAgICAgICBpZiAobWVt
b3J5SW5zdHJ1bWVudGF0aW9uLT52aXNpdGVkKHBvaW50ZXIpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgIH0KICAgICBtZW1vcnlJbnN0cnVtZW50YXRpb24tPmNvdW50T2JqZWN0U2l6ZShwb2lu
dGVyLCBtZW1vcnlPYmplY3RJbmZvLm9iamVjdFR5cGUoKSwgbWVtb3J5T2JqZWN0SW5mby5vYmpl
Y3RTaXplKCkpOworICAgIG1lbW9yeUluc3RydW1lbnRhdGlvbi0+bV9jbGllbnQtPnJlcG9ydE5v
ZGUobWVtb3J5T2JqZWN0SW5mbyk7CiAgICAgaWYgKCFtZW1vcnlJbnN0cnVtZW50YXRpb24tPmNo
ZWNrQ291bnRlZE9iamVjdChwb2ludGVyKSkgewogI2lmIERFQlVHX1BPSU5URVJfSU5TVFJVTUVO
VEFUSU9OCiAgICAgICAgIGZwdXRzKCJVbmtub3duIG9iamVjdCBjb3VudGVkOlxuIiwgc3RkZXJy
KTsKQEAgLTk0LDE4ICsxMTEsMTkgQEAgdm9pZCBNZW1vcnlDbGFzc0luZm86OmluaXQoY29uc3Qg
dm9pZCogcG9pbnRlciwgTWVtb3J5T2JqZWN0VHlwZSBvYmplY3RUeXBlLCBzaXoKICAgICBtX29i
amVjdFR5cGUgPSBtX21lbW9yeU9iamVjdEluZm8tPm9iamVjdFR5cGUoKTsKIH0KIAotdm9pZCBN
ZW1vcnlDbGFzc0luZm86OmFkZFJhd0J1ZmZlcihjb25zdCB2b2lkKiBjb25zdCYgYnVmZmVyLCBz
aXplX3Qgc2l6ZSkKK3ZvaWQgTWVtb3J5Q2xhc3NJbmZvOjphZGRSYXdCdWZmZXIoY29uc3Qgdm9p
ZCogY29uc3QmIGJ1ZmZlciwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIG5vZGVOYW1lLCBjb25z
dCBjaGFyKiBlZGdlTmFtZSkKIHsKLSAgICBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkUmF3
QnVmZmVyKGJ1ZmZlciwgbV9vYmplY3RUeXBlLCBzaXplKTsKKyAgICBtX21lbW9yeUluc3RydW1l
bnRhdGlvbi0+YWRkUmF3QnVmZmVyKG1fbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0ZWRQb2ludGVy
KCksIGJ1ZmZlciwgbV9vYmplY3RUeXBlLCBzaXplLCBub2RlTmFtZSwgZWRnZU5hbWUpOwogfQog
Ci12b2lkIE1lbW9yeUNsYXNzSW5mbzo6YWRkUHJpdmF0ZUJ1ZmZlcihzaXplX3Qgc2l6ZSwgTWVt
b3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpCit2b2lkIE1lbW9yeUNsYXNzSW5mbzo6YWRk
UHJpdmF0ZUJ1ZmZlcihzaXplX3Qgc2l6ZSwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5
cGUsIGNvbnN0IGNoYXIqIG5vZGVOYW1lLCBjb25zdCBjaGFyKiBlZGdlTmFtZSkKIHsKICAgICBp
ZiAoIXNpemUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW93bmVyT2JqZWN0VHlwZSkKICAg
ICAgICAgb3duZXJPYmplY3RUeXBlID0gbV9vYmplY3RUeXBlOwogICAgIG1fbWVtb3J5SW5zdHJ1
bWVudGF0aW9uLT5jb3VudE9iamVjdFNpemUoMCwgb3duZXJPYmplY3RUeXBlLCBzaXplKTsKKyAg
ICBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0TGlua1RvQnVmZmVyKG1fbWVtb3J5T2Jq
ZWN0SW5mby0+cmVwb3J0ZWRQb2ludGVyKCksIDAsIG93bmVyT2JqZWN0VHlwZSwgc2l6ZSwgbm9k
ZU5hbWUsIGVkZ2VOYW1lKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XVEYvd3RmL01l
bW9yeUluc3RydW1lbnRhdGlvbi5oCmluZGV4IDJhNjgzMmI3MWY2Y2U3M2RmYjM1NmQ2YzY3ODk1
MGY5NzQ0OGMwMmMuLjI3N2ExMjc4MWEyOGEwZTBkNjE3Y2JkYzc3MGEzY2ZlYjUxZTM4NzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCkBAIC01OCw2ICs1OCwxMSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvdW50T2JqZWN0U2l6ZShjb25zdCB2b2lkKiwgTWVt
b3J5T2JqZWN0VHlwZSwgc2l6ZV90KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHZpc2l0ZWQoY29u
c3Qgdm9pZCopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY2hlY2tDb3VudGVkT2JqZWN0KGNvbnN0
IHZvaWQqKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0Tm9kZShjb25zdCBNZW1vcnlP
YmplY3RJbmZvJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFZGdlKGNvbnN0IHZvaWQq
IHNvdXJjZSwgY29uc3Qgdm9pZCogdGFyZ2V0LCBjb25zdCBjaGFyKiBlZGdlTmFtZSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCByZXBvcnRMZWFmKGNvbnN0IHZvaWQqIHNvdXJjZSwgY29uc3QgTWVt
b3J5T2JqZWN0SW5mbyYsIGNvbnN0IGNoYXIqIGVkZ2VOYW1lKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHJlcG9ydEJhc2VBZGRyZXNzKGNvbnN0IHZvaWQqIGJhc2UsIGNvbnN0IHZvaWQqIHJlYWwp
ID0gMDsKIH07CiAKIGNsYXNzIE1lbW9yeUluc3RydW1lbnRhdGlvbiB7CkBAIC02Nyw3ICs3Miw3
IEBAIHB1YmxpYzoKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZFJvb3RPYmpl
Y3QoY29uc3QgVCYgdCkKICAgICB7Ci0gICAgICAgIGFkZE9iamVjdCh0LCBtX3Jvb3RPYmplY3RJ
bmZvLmdldCgpKTsKKyAgICAgICAgYWRkT2JqZWN0KHQsIG1fcm9vdE9iamVjdEluZm8uZ2V0KCks
IDApOwogICAgICAgICBwcm9jZXNzRGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVycygpOwogICAg
IH0KIApAQCAtOTUsNiArMTAwLDggQEAgcHJpdmF0ZToKICAgICBib29sIHZpc2l0ZWQoY29uc3Qg
dm9pZCogcG9pbnRlcikgeyByZXR1cm4gbV9jbGllbnQtPnZpc2l0ZWQocG9pbnRlcik7IH0KICAg
ICBib29sIGNoZWNrQ291bnRlZE9iamVjdChjb25zdCB2b2lkKiBwb2ludGVyKSB7IHJldHVybiBt
X2NsaWVudC0+Y2hlY2tDb3VudGVkT2JqZWN0KHBvaW50ZXIpOyB9CiAKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCByZXBvcnRFZGdlKE1lbW9yeU9iamVjdEluZm8qIG93bmVyT2JqZWN0SW5m
bywgY29uc3Qgdm9pZCogdGFyZ2V0LCBjb25zdCBjaGFyKiBlZGdlTmFtZSk7CisKICAgICB2aXJ0
dWFsIHZvaWQgZGVmZXJJbnN0cnVtZW50ZWRQb2ludGVyKFBhc3NPd25QdHI8SW5zdHJ1bWVudGVk
UG9pbnRlckJhc2U+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEZWZlcnJlZEluc3Ry
dW1lbnRlZFBvaW50ZXJzKCkgPSAwOwogCkBAIC0xMzUsMzMgKzE0MiwzNSBAQCBwcml2YXRlOgog
ICAgICAgICBjb25zdCBUKiBtX3BvaW50ZXI7CiAgICAgfTsKIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHZvaWQgYWRkT2JqZWN0KGNvbnN0IFQmIHQsIE1lbW9yeU9iamVjdEluZm8qIG93bmVy
T2JqZWN0SW5mbykgeyBPd25pbmdUcmFpdHM8VD46OmFkZE9iamVjdCh0aGlzLCB0LCBvd25lck9i
amVjdEluZm8pOyB9Ci0gICAgdm9pZCBhZGRSYXdCdWZmZXIoY29uc3Qgdm9pZCogY29uc3QmIGJ1
ZmZlciwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIHNpemVfdCBzaXplKQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0KGNvbnN0IFQmIHQsIE1lbW9yeU9i
amVjdEluZm8qIG93bmVyT2JqZWN0SW5mbywgY29uc3QgY2hhciogZWRnZU5hbWUpIHsgT3duaW5n
VHJhaXRzPFQ+OjphZGRPYmplY3QodGhpcywgdCwgb3duZXJPYmplY3RJbmZvLCBlZGdlTmFtZSk7
IH0KKyAgICB2b2lkIGFkZFJhd0J1ZmZlcihjb25zdCB2b2lkKiBvd25lciwgY29uc3Qgdm9pZCog
YnVmZmVyLCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgc2l6ZV90IHNpemUsIGNv
bnN0IGNoYXIqIG5vZGVOYW1lID0gMCwgY29uc3QgY2hhciogZWRnZU5hbWUgPSAwKQogICAgIHsK
ICAgICAgICAgaWYgKCFidWZmZXIgfHwgdmlzaXRlZChidWZmZXIpKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBjb3VudE9iamVjdFNpemUoYnVmZmVyLCBvd25lck9iamVjdFR5cGUsIHNp
emUpOworICAgICAgICByZXBvcnRMaW5rVG9CdWZmZXIob3duZXIsIGJ1ZmZlciwgb3duZXJPYmpl
Y3RUeXBlLCBzaXplLCBub2RlTmFtZSwgZWRnZU5hbWUpOwogICAgIH0KKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCByZXBvcnRMaW5rVG9CdWZmZXIoY29uc3Qgdm9pZCogb3duZXIsIGNvbnN0
IHZvaWQqIGJ1ZmZlciwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIHNpemVfdCwg
Y29uc3QgY2hhciogbm9kZU5hbWUsIGNvbnN0IGNoYXIqIGVkZ2VOYW1lKTsKIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RydWN0IE93bmluZ1RyYWl0cyB7IC8vIERlZmF1bHQgYnlS
ZWZlcmVuY2UgaW1wbGVtZW50YXRpb24uCi0gICAgICAgIHN0YXRpYyB2b2lkIGFkZE9iamVjdChN
ZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgVCYgdCwgTWVtb3J5
T2JqZWN0SW5mbyogb3duZXJPYmplY3RJbmZvKQorICAgICAgICBzdGF0aWMgdm9pZCBhZGRPYmpl
Y3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50YXRpb24sIGNvbnN0IFQmIHQsIE1l
bW9yeU9iamVjdEluZm8qIG93bmVyT2JqZWN0SW5mbywgY29uc3QgY2hhciogZWRnZU5hbWUpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGluc3RydW1lbnRhdGlvbi0+YWRkT2JqZWN0SW1wbCgmdCwg
b3duZXJPYmplY3RJbmZvLCBieVJlZmVyZW5jZSk7CisgICAgICAgICAgICBpbnN0cnVtZW50YXRp
b24tPmFkZE9iamVjdEltcGwoJnQsIG93bmVyT2JqZWN0SW5mbywgYnlSZWZlcmVuY2UsIGVkZ2VO
YW1lKTsKICAgICAgICAgfQogICAgIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAg
IHN0cnVjdCBPd25pbmdUcmFpdHM8VCo+IHsgLy8gQ3VzdG9tIGJ5UG9pbnRlciBpbXBsZW1lbnRh
dGlvbi4KLSAgICAgICAgc3RhdGljIHZvaWQgYWRkT2JqZWN0KE1lbW9yeUluc3RydW1lbnRhdGlv
biogaW5zdHJ1bWVudGF0aW9uLCBjb25zdCBUKiBjb25zdCYgdCwgTWVtb3J5T2JqZWN0SW5mbyog
b3duZXJPYmplY3RJbmZvKQorICAgICAgICBzdGF0aWMgdm9pZCBhZGRPYmplY3QoTWVtb3J5SW5z
dHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50YXRpb24sIGNvbnN0IFQqIGNvbnN0JiB0LCBNZW1vcnlP
YmplY3RJbmZvKiBvd25lck9iamVjdEluZm8sIGNvbnN0IGNoYXIqIGVkZ2VOYW1lKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBpbnN0cnVtZW50YXRpb24tPmFkZE9iamVjdEltcGwodCwgb3duZXJP
YmplY3RJbmZvLCBieVBvaW50ZXIpOworICAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLT5hZGRP
YmplY3RJbXBsKHQsIG93bmVyT2JqZWN0SW5mbywgYnlQb2ludGVyLCBlZGdlTmFtZSk7CiAgICAg
ICAgIH0KICAgICB9OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmplY3RJ
bXBsKGNvbnN0IFQqIGNvbnN0JiwgTWVtb3J5T2JqZWN0SW5mbyosIE1lbW9yeU93bmluZ1R5cGUp
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0SW1wbChjb25zdCBPd25Q
dHI8VD4qIGNvbnN0JiwgTWVtb3J5T2JqZWN0SW5mbyosIE1lbW9yeU93bmluZ1R5cGUpOwotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0SW1wbChjb25zdCBSZWZQdHI8VD4q
IGNvbnN0JiwgTWVtb3J5T2JqZWN0SW5mbyosIE1lbW9yeU93bmluZ1R5cGUpOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0SW1wbChjb25zdCBUKiBjb25zdCYsIE1lbW9y
eU9iamVjdEluZm8qLCBNZW1vcnlPd25pbmdUeXBlLCBjb25zdCBjaGFyKiBlZGdlTmFtZSk7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmplY3RJbXBsKGNvbnN0IE93blB0cjxU
PiogY29uc3QmLCBNZW1vcnlPYmplY3RJbmZvKiwgTWVtb3J5T3duaW5nVHlwZSwgY29uc3QgY2hh
ciogZWRnZU5hbWUpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0SW1w
bChjb25zdCBSZWZQdHI8VD4qIGNvbnN0JiwgTWVtb3J5T2JqZWN0SW5mbyosIE1lbW9yeU93bmlu
Z1R5cGUsIGNvbnN0IGNoYXIqIGVkZ2VOYW1lKTsKIAogICAgIE1lbW9yeUluc3RydW1lbnRhdGlv
bkNsaWVudCogbV9jbGllbnQ7CiAgICAgT3duUHRyPE1lbW9yeU9iamVjdEluZm8+IG1fcm9vdE9i
amVjdEluZm87CkBAIC0xNzgsOSArMTg3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgaW5pdChwb2lu
dGVyLCBvYmplY3RUeXBlLCBhY3R1YWxTaXplKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBNPiB2b2lkIGFkZE1lbWJlcihjb25zdCBNJiBtZW1iZXIpIHsgbV9tZW1vcnlJbnN0cnVt
ZW50YXRpb24tPmFkZE9iamVjdChtZW1iZXIsIG1fbWVtb3J5T2JqZWN0SW5mbyk7IH0KLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRSYXdCdWZmZXIoY29uc3Qgdm9pZCogY29uc3QmIGJ1
ZmZlciwgc2l6ZV90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRQcml2YXRlQnVm
ZmVyKHNpemVfdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUgPSAwKTsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBNPiB2b2lkIGFkZE1lbWJlcihjb25zdCBNJiBtZW1iZXIsIGNvbnN0
IGNoYXIqIGVkZ2VOYW1lID0gMCkKKyAgICB7CisgICAgICAgIG1fbWVtb3J5SW5zdHJ1bWVudGF0
aW9uLT5hZGRPYmplY3QobWVtYmVyLCBtX21lbW9yeU9iamVjdEluZm8sIGVkZ2VOYW1lKTsKKyAg
ICB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkUmF3QnVmZmVyKGNvbnN0IHZvaWQq
IGNvbnN0JiBidWZmZXIsIHNpemVfdCwgY29uc3QgY2hhciogbm9kZU5hbWUgPSAwLCBjb25zdCBj
aGFyKiBlZGdlTmFtZSA9IDApOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFkZFByaXZh
dGVCdWZmZXIoc2l6ZV90LCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSA9IDAsIGNv
bnN0IGNoYXIqIG5vZGVOYW1lID0gMCwgY29uc3QgY2hhciogZWRnZU5hbWUgPSAwKTsKIAogICAg
IHZvaWQgYWRkV2Vha1BvaW50ZXIodm9pZCopIHsgfQogCkBAIC0xOTksMTEgKzIxMSwxMiBAQCB2
b2lkIHJlcG9ydE1lbW9yeVVzYWdlKGNvbnN0IFQqIGNvbnN0JiBvYmplY3QsIE1lbW9yeU9iamVj
dEluZm8qIG1lbW9yeU9iamVjdEluZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBN
ZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVjdEltcGwoY29uc3QgVCogY29uc3QmIG9iamVj
dCwgTWVtb3J5T2JqZWN0SW5mbyogb3duZXJPYmplY3RJbmZvLCBNZW1vcnlPd25pbmdUeXBlIG93
bmluZ1R5cGUpCit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25z
dCBUKiBjb25zdCYgb2JqZWN0LCBNZW1vcnlPYmplY3RJbmZvKiBvd25lck9iamVjdEluZm8sIE1l
bW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSwgY29uc3QgY2hhciogZWRnZU5hbWUpCiB7CiAgICAg
aWYgKG93bmluZ1R5cGUgPT0gYnlSZWZlcmVuY2UpCiAgICAgICAgIHJlcG9ydE1lbW9yeVVzYWdl
KG9iamVjdCwgb3duZXJPYmplY3RJbmZvKTsKICAgICBlbHNlIHsKKyAgICAgICAgcmVwb3J0RWRn
ZShvd25lck9iamVjdEluZm8sIG9iamVjdCwgZWRnZU5hbWUpOwogICAgICAgICBpZiAoIW9iamVj
dCB8fCB2aXNpdGVkKG9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGRlZmVy
SW5zdHJ1bWVudGVkUG9pbnRlcihhZG9wdFB0cihuZXcgSW5zdHJ1bWVudGVkUG9pbnRlcjxUPihv
YmplY3QsIG93bmVyT2JqZWN0SW5mbykpKTsKQEAgLTIxMSwxOSArMjI0LDE5IEBAIHZvaWQgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjphZGRPYmplY3RJbXBsKGNvbnN0IFQqIGNvbnN0JiBvYmplY3Qs
IE1lbW9yeU9iamVjdEluCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25zdCBPd25QdHI8VD4qIGNvbnN0JiBvYmpl
Y3QsIE1lbW9yeU9iamVjdEluZm8qIG93bmVyT2JqZWN0SW5mbywgTWVtb3J5T3duaW5nVHlwZSBv
d25pbmdUeXBlKQordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVjdEltcGwoY29u
c3QgT3duUHRyPFQ+KiBjb25zdCYgb2JqZWN0LCBNZW1vcnlPYmplY3RJbmZvKiBvd25lck9iamVj
dEluZm8sIE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSwgY29uc3QgY2hhciogZWRnZU5hbWUp
CiB7CiAgICAgaWYgKG93bmluZ1R5cGUgPT0gYnlQb2ludGVyICYmICF2aXNpdGVkKG9iamVjdCkp
CiAgICAgICAgIGNvdW50T2JqZWN0U2l6ZShvYmplY3QsIGdldE9iamVjdFR5cGUob3duZXJPYmpl
Y3RJbmZvKSwgc2l6ZW9mKCpvYmplY3QpKTsKLSAgICBhZGRPYmplY3RJbXBsKG9iamVjdC0+Z2V0
KCksIG93bmVyT2JqZWN0SW5mbywgYnlQb2ludGVyKTsKKyAgICBhZGRPYmplY3RJbXBsKG9iamVj
dC0+Z2V0KCksIG93bmVyT2JqZWN0SW5mbywgYnlQb2ludGVyLCBlZGdlTmFtZSk7CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0
SW1wbChjb25zdCBSZWZQdHI8VD4qIGNvbnN0JiBvYmplY3QsIE1lbW9yeU9iamVjdEluZm8qIG93
bmVyT2JqZWN0SW5mbywgTWVtb3J5T3duaW5nVHlwZSBvd25pbmdUeXBlKQordm9pZCBNZW1vcnlJ
bnN0cnVtZW50YXRpb246OmFkZE9iamVjdEltcGwoY29uc3QgUmVmUHRyPFQ+KiBjb25zdCYgb2Jq
ZWN0LCBNZW1vcnlPYmplY3RJbmZvKiBvd25lck9iamVjdEluZm8sIE1lbW9yeU93bmluZ1R5cGUg
b3duaW5nVHlwZSwgY29uc3QgY2hhciogZWRnZU5hbWUpCiB7CiAgICAgaWYgKG93bmluZ1R5cGUg
PT0gYnlQb2ludGVyICYmICF2aXNpdGVkKG9iamVjdCkpCiAgICAgICAgIGNvdW50T2JqZWN0U2l6
ZShvYmplY3QsIGdldE9iamVjdFR5cGUob3duZXJPYmplY3RJbmZvKSwgc2l6ZW9mKCpvYmplY3Qp
KTsKLSAgICBhZGRPYmplY3RJbXBsKG9iamVjdC0+Z2V0KCksIG93bmVyT2JqZWN0SW5mbywgYnlQ
b2ludGVyKTsKKyAgICBhZGRPYmplY3RJbXBsKG9iamVjdC0+Z2V0KCksIG93bmVyT2JqZWN0SW5m
bywgYnlQb2ludGVyLCBlZGdlTmFtZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlPYmplY3RJbmZvLmggYi9Tb3VyY2UvV1RGL3d0
Zi9NZW1vcnlPYmplY3RJbmZvLmgKaW5kZXggMWM3ZmU2YzgzNjJjMWE0ZjE1MjRiZDVhMzkyODc1
YTg2YWJkODIzNS4uOTQwYWQ4YmMwZWE5MzZjNGFkNzkzNmExN2I3NDhlMjFmYjNkODkzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5T2JqZWN0SW5mby5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL01lbW9yeU9iamVjdEluZm8uaApAQCAtMzEsNiArMzEsOCBAQAogI2lmbmRlZiBNZW1v
cnlPYmplY3RJbmZvX2gKICNkZWZpbmUgTWVtb3J5T2JqZWN0SW5mb19oCiAKKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIE1lbW9yeUNs
YXNzSW5mbzsKQEAgLTUzLDYgKzU1LDkgQEAgcHVibGljOgogICAgIHNpemVfdCBvYmplY3RTaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RTaXplOyB9CiAgICAgY29uc3Qgdm9pZCogcmVwb3J0
ZWRQb2ludGVyKCkgY29uc3QgeyByZXR1cm4gbV9wb2ludGVyOyB9CiAKKyAgICB2b2lkIHNldENs
YXNzTmFtZShjb25zdCBTdHJpbmcmIGNsYXNzTmFtZSkgeyBtX2NsYXNzTmFtZSA9IGNsYXNzTmFt
ZTsgfQorICAgIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0gbmFt
ZTsgfQorCiAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBtZW1vcnlJbnN0cnVtZW50YXRpb24o
KSB7IHJldHVybiBtX21lbW9yeUluc3RydW1lbnRhdGlvbjsgfQogCiBwcml2YXRlOgpAQCAtNzMs
NiArNzgsOCBAQCBwcml2YXRlOgogICAgIE1lbW9yeU9iamVjdFR5cGUgbV9vYmplY3RUeXBlOwog
ICAgIHNpemVfdCBtX29iamVjdFNpemU7CiAgICAgY29uc3Qgdm9pZCogbV9wb2ludGVyOworICAg
IFN0cmluZyBtX2NsYXNzTmFtZTsKKyAgICBTdHJpbmcgbV9uYW1lOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5z
dHJ1bWVudGF0aW9uSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3Ry
dW1lbnRhdGlvbkltcGwuaAppbmRleCA5ZWVkY2VkNjQ5MjMwNTAxY2NiYWQyZWE1M2IwODUyMWVk
ZWYxOTM3Li5lOWNkNDQ1NjJhNTliZWY0OTY5NTE1MGZkNjgwMmJhYjY2Yzg1ZWRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBs
LmgKQEAgLTgxLDYgKzgxLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY291bnRPYmpl
Y3RTaXplKGNvbnN0IHZvaWQqLCBNZW1vcnlPYmplY3RUeXBlLCBzaXplX3QpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgYm9vbCB2aXNpdGVkKGNvbnN0IHZvaWQqKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIGJvb2wgY2hlY2tDb3VudGVkT2JqZWN0KGNvbnN0IHZvaWQqKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVwb3J0Tm9kZShjb25zdCBNZW1vcnlPYmplY3RJbmZvJikgT1ZFUlJJREUg
eyB9CisgICAgdmlydHVhbCB2b2lkIHJlcG9ydEVkZ2UoY29uc3Qgdm9pZCosIGNvbnN0IHZvaWQq
LCBjb25zdCBjaGFyKikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlcG9ydExlYWYo
Y29uc3Qgdm9pZCosIGNvbnN0IE1lbW9yeU9iamVjdEluZm8mLCBjb25zdCBjaGFyKikgT1ZFUlJJ
REUgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlcG9ydEJhc2VBZGRyZXNzKGNvbnN0IHZvaWQqLCBj
b25zdCB2b2lkKikgT1ZFUlJJREUgeyB9CiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdC5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9NZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LmNwcAppbmRleCBkYWQw
OGRkYTQ1ZDcyZWNmZGU4NzRiNjNkMzMwMTRmYjc5MjkwNWVlLi5hOGRkNzljMzVmYzRmNTJkZmQ5
Zjg1ZjM3Y2FmZjBmYzI0MmUwNWY4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9NZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9NZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LmNwcApAQCAtOTIsNiAr
OTIsMTAgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIGJvb2wgdmlzaXRlZChjb25zdCB2
b2lkKiBvYmplY3QpIHsgcmV0dXJuICFtX3Zpc2l0ZWRPYmplY3RzLmFkZChvYmplY3QpLmlzTmV3
RW50cnk7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2hlY2tDb3VudGVkT2JqZWN0KGNvbnN0IHZvaWQq
KSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIHJlcG9ydE5vZGUoY29uc3QgTWVt
b3J5T2JqZWN0SW5mbyYpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFZGdl
KGNvbnN0IHZvaWQqLCBjb25zdCB2b2lkKiwgY29uc3QgY2hhciopIE9WRVJSSURFIHsgfQorICAg
IHZpcnR1YWwgdm9pZCByZXBvcnRMZWFmKGNvbnN0IHZvaWQqLCBjb25zdCBNZW1vcnlPYmplY3RJ
bmZvJiwgY29uc3QgY2hhciopIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRC
YXNlQWRkcmVzcyhjb25zdCB2b2lkKiwgY29uc3Qgdm9pZCopIE9WRVJSSURFIHsgfQogCiAgICAg
c2l6ZV90IHZpc2l0ZWRPYmplY3RzKCkgY29uc3QgeyByZXR1cm4gbV92aXNpdGVkT2JqZWN0cy5z
aXplKCk7IH0KICAgICBzaXplX3QgdG90YWxTaXplKGNvbnN0IE1lbW9yeU9iamVjdFR5cGUgb2Jq
ZWN0VHlwZSkgY29uc3QK
</data>
<flag name="review"
          id="193517"
          type_id="1"
          status="+"
          setter="vsevik"
    />
    <flag name="commit-queue"
          id="193532"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>