<?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>66849</bug_id>
          
          <creation_ts>2011-08-24 04:20:29 -0700</creation_ts>
          <short_desc>The GC does not have a facility for profiling the kinds of objects that occupy the heap</short_desc>
          <delta_ts>2011-08-26 15:24:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>456048</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-24 04:20:29 -0700</bug_when>
    <thetext>A good GC will have optimizations for common objects.  Two areas where optimizations are particularly useful are marking and sweeping.  But the GC does not currently have a way of profiling what kinds of objects are encountered during either of these two phases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456051</commentid>
    <comment_count>1</comment_count>
      <attachid>104980</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-24 04:26:22 -0700</bug_when>
    <thetext>Created attachment 104980
the patch

I&apos;m pretty sure I have not yet taken care of the VC++/GNU/qmake side of the build yet.  I&apos;ve also not verified that my changes don&apos;t perturb performance if profiling is disabled - which is a real risk given some subtle changes.  But other than that, it&apos;s in good shape to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456296</commentid>
    <comment_count>2</comment_count>
      <attachid>104980</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-08-24 12:15:04 -0700</bug_when>
    <thetext>Comment on attachment 104980
the patch

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

As you say, needs more build foo, plus perf testing. Review comments below.

&gt; Source/JavaScriptCore/heap/VTableSpectrum.cpp:56
&gt; +    HashMap&lt;void*, uintptr_t&gt;::iterator iter = m_map.find(vTablePointer);
&gt; +    if (iter == m_map.end())
&gt; +        m_map.add(vTablePointer, 1);
&gt; +    else
&gt; +        iter-&gt;second++;

Our idiom for this kind of operation is:

pair&lt;HashMap&lt;void*, uintptr_t&gt;::iterator, bool&gt; result = m_map.add(vTablePointer, 1);
if (!result.second) // pre-existing item in the table
    ++result.first-&gt;second;

This avoids a double hash lookup in the case of the first entry in the table. (This isn&apos;t performance-critical code, but it&apos;s good to use the right idioms everywhere.)

&gt; Source/JavaScriptCore/heap/VTableSpectrum.cpp:66
&gt; +    uintptr_t count;

uintptr_t is only needed if you&apos;re going to cast between unsigned and a pointer type. I think this should just be unsigned long, since that&apos;s how count is used, and then you can remove the cast from printf.

&gt; Source/JavaScriptCore/runtime/JSCell.h:218
&gt; +        visitor.noticeAnthracite(this);
&gt;          visitor.append(&amp;m_structure);

Slightly better to put this operation inside SlotVisitor::visitChildren. That way, when we optimize to skip calling visitChildren on some cells, this will still work. Also, you can then remove the noticeAnthracite API altogether, which is nice, since I looked up &quot;anthracite&quot; and got &quot;a hard, compact variety of mineral coal that has a high luster&quot;. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456385</commentid>
    <comment_count>3</comment_count>
      <attachid>105062</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-24 13:48:11 -0700</bug_when>
    <thetext>Created attachment 105062
the patch (fix review, build, conflicts)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456387</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-24 13:51:00 -0700</bug_when>
    <thetext>Attachment 105062 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/heap/VTableSpectrum.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456393</commentid>
    <comment_count>5</comment_count>
      <attachid>105063</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-24 13:54:58 -0700</bug_when>
    <thetext>Created attachment 105063
the patch (fix style)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456404</commentid>
    <comment_count>6</comment_count>
      <attachid>105063</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-08-24 14:15:52 -0700</bug_when>
    <thetext>Comment on attachment 105063
the patch (fix style)

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

r=me

&gt; Source/JavaScriptCore/heap/VTableSpectrum.cpp:109
&gt; +            fprintf(output, &quot;    %s:%s(%p): %lu\n&quot;, strippedFileName, info.dli_sname, item.vtable, (long unsigned)item.count);

I think you can remove this &quot;(long unsigned)&quot; cast now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456408</commentid>
    <comment_count>7</comment_count>
      <attachid>105066</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-24 14:25:27 -0700</bug_when>
    <thetext>Created attachment 105066
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456436</commentid>
    <comment_count>8</comment_count>
      <attachid>105066</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-08-24 14:54:21 -0700</bug_when>
    <thetext>Comment on attachment 105066
the patch

Attachment 105066 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9502015</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456472</commentid>
    <comment_count>9</comment_count>
      <attachid>105066</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-24 15:32:54 -0700</bug_when>
    <thetext>Comment on attachment 105066
the patch

Attachment 105066 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9498024</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456484</commentid>
    <comment_count>10</comment_count>
      <attachid>105087</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-24 15:49:37 -0700</bug_when>
    <thetext>Created attachment 105087
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456488</commentid>
    <comment_count>11</comment_count>
      <attachid>105087</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-24 15:51:44 -0700</bug_when>
    <thetext>Comment on attachment 105087
the patch

Going to wait with commit until I&apos;m sure that all of the build bots are happy with the #include&apos;s in VTableSpectrum.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457810</commentid>
    <comment_count>12</comment_count>
      <attachid>105087</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-26 15:23:57 -0700</bug_when>
    <thetext>Comment on attachment 105087
the patch

Clearing flags on attachment: 105087

Committed r93918: &lt;http://trac.webkit.org/changeset/93918&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457811</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-26 15:24:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104980</attachid>
            <date>2011-08-24 04:26:22 -0700</date>
            <delta_ts>2011-08-24 13:48:11 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>heapprofile_patch_1.diff</filename>
            <type>text/plain</type>
            <size>17354</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTM3MDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAK
KzIwMTEtMDgtMjQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBU
aGUgR0MgZG9lcyBub3QgaGF2ZSBhIGZhY2lsaXR5IGZvciBwcm9maWxpbmcgdGhlIGtpbmRzIG9m
IG9iamVjdHMKKyAgICAgICAgdGhhdCBvY2N1cHkgdGhlIGhlYXAKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2ODQ5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBEZXN0cnVjdG9yIGNhbGxzIGFu
ZCBvYmplY3Qgc2NhbnMgYXJlIG5vdyBvcHRpb25hbGx5IGNvdW50ZWQsIHBlcgorICAgICAgICB2
dGFibGUuIFdoZW4gdGhlIGhlYXAgaXMgZGVzdHJveWVkIGFuZCBwcm9maWxpbmcgaXMgZW5hYmxl
ZCwgdGhlCisgICAgICAgIGNvdW50cyBhcmUgZHVtcGVkLCB3aXRoIGNhcmUgdGFrZW4gdG8gcHJp
bnQgdGhlIG5hbWVzIG9mIGNsYXNzZXMKKyAgICAgICAgKG1vZHVsbyBDKysgbWFuZ2xpbmcpIHNv
cnRlZCBpbiBkZXNjZW5kaW5nIGNvbW1vbmFsaXR5LgorCisgICAgICAgICogSmF2YVNjcmlwdENv
cmUuZXhwOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGVzdHJv
eSk6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suaDoK
KyAgICAgICAgKEpTQzo6TWFya1N0YWNrOjpub3RpY2VBbnRocmFjaXRlKToKKyAgICAgICAgKiBo
ZWFwL01hcmtlZEJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmNhbGxEZXN0
cnVjdG9yKToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgICogaGVhcC9W
VGFibGVTcGVjdHJ1bS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpWVGFibGVTcGVjdHJ1bTo6
VlRhYmxlU3BlY3RydW0pOgorICAgICAgICAoSlNDOjpWVGFibGVTcGVjdHJ1bTo6flZUYWJsZVNw
ZWN0cnVtKToKKyAgICAgICAgKEpTQzo6VlRhYmxlU3BlY3RydW06OmNvdW50VlB0cik6CisgICAg
ICAgIChKU0M6OlZUYWJsZVNwZWN0cnVtOjpjb3VudCk6CisgICAgICAgIChKU0M6OlZUYWJsZUFu
ZENvdW50OjpWVGFibGVBbmRDb3VudCk6CisgICAgICAgIChKU0M6OlZUYWJsZUFuZENvdW50Ojpv
cGVyYXRvcjwpOgorICAgICAgICAoSlNDOjpWVGFibGVTcGVjdHJ1bTo6ZHVtcCk6CisgICAgICAg
ICogaGVhcC9WVGFibGVTcGVjdHJ1bS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTQ2Vs
bC5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OkpTQ2VsbDo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTEtMDgtMjQgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KIAogICAgICAgICBUaGVyZSBpcyBubyBmYWNpbGl0eSBmb3IgcHJvZmlsaW5n
IGhvdyB0aGUgd3JpdGUgYmFycmllciBpcyB1c2VkCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDkzNjk2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDYgKzE3NCw3
IEBAIF9fWk4zSlNDMTRTYW1wbGluZ1RocmVhZDVzdGFydEVqCiBfX1pOM0pTQzE0U2NvcGVDaGFp
bk5vZGU2c19pbmZvRQogX19aTjNKU0MxNFRpbWVvdXRDaGVja2VyMTBkaWRUaW1lT3V0RVBOU185
RXhlY1N0YXRlRQogX19aTjNKU0MxNFRpbWVvdXRDaGVja2VyNXJlc2V0RXYKK19fWk4zSlNDMTRW
VGFibGVTcGVjdHJ1bTVjb3VudEVQTlNfNkpTQ2VsbEUKIF9fWk4zSlNDMTR0aHJvd1R5cGVFcnJv
ckVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDMTVKU1dyYXBwZXJPYmplY3QxM3Zpc2l0Q2hpbGRy
ZW5FUk5TXzExU2xvdFZpc2l0b3JFCiBfX1pOM0pTQzE1V2Vha0hhbmRsZU93bmVyMjZpc1JlYWNo
YWJsZUZyb21PcGFxdWVSb290c0VOU182SGFuZGxlSU5TXzdVbmtub3duRUVFUHZSTlNfMTFTbG90
VmlzaXRvckUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA5MzY5
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw4IEBACiAJCTBGNzcwMDkw
MTQwMkZERTQwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzcwMDhFMTQwMkZERDYwMDc4RUIzOSAvKiBT
YW1wbGluZ0NvdW50ZXIuaCAqLzsgfTsKIAkJMEY3NzAwOTIxNDAyRkYzQzAwNzhFQjM5IC8qIFNh
bXBsaW5nQ291bnRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjc3MDA5MTE0MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCAq
LzsgfTsKIAkJMEY5NjNCMzgxM0ZDNkZFOTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5NjNCMzYxM0ZDNkZE
RTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGQzgxNTE1MTQwNTExOUIwMENGQTYwMyAvKiBWVGFibGVT
cGVjdHJ1bS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZDODE1MTQxNDA1MTE4RDAwQ0ZBNjAzIC8qIFZUYWJsZVNwZWN0cnVtLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZDODE1MTYxNDA1MTFCNTAw
Q0ZBNjAzIC8qIFZUYWJsZVNwZWN0cnVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzgxNTEyMTQwNTExODYwMENGQTYwMyAvKiBWVGFibGVTcGVj
dHJ1bS5jcHAgKi87IH07CiAJCTE0MDAwNjc3MTJBNkY3ODMwMDY0RDEyMyAvKiBPU0FsbG9jYXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwMDA2
NzYxMkE2Rjc4MzAwNjREMTIzIC8qIE9TQWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQwMDA2OTMxMkE2RjlFMTAwNjREMTIzIC8q
IE9TQWxsb2NhdG9yUG9zaXguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTQwMDA2OTIxMkE2RjlFMTAwNjREMTIzIC8qIE9TQWxsb2NhdG9yUG9zaXgu
Y3BwICovOyB9OwogCQkxNDA1NjZDNDEwN0VDMjU1MDA1REJDOEQgLyogSlNBUElWYWx1ZVdyYXBw
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMw
ODk0RDUwRkFGQkEyRDAwMDAxODY1IC8qIEpTQVBJVmFsdWVXcmFwcGVyLmNwcCAqLzsgfTsKQEAg
LTczNSw2ICs3MzcsOCBAQAogCQkwRjc3MDA4RTE0MDJGREQ2MDA3OEVCMzkgLyogU2FtcGxpbmdD
b3VudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhbXBsaW5nQ291bnRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjc3MDA5MTE0MDJGRjI4MDA3OEVC
MzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNhbXBsaW5nQ291bnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGOTYzQjM2MTNGQzZGREUwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsdWVQcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGQzgxNTEyMTQwNTExODYwMENGQTYwMyAvKiBWVGFibGVTcGVjdHJ1bS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWVGFibGVTcGVjdHJ1bS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzgxNTE0MTQwNTExOEQwMENGQTYwMyAv
KiBWVGFibGVTcGVjdHJ1bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWVGFi
bGVTcGVjdHJ1bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDAwMDY3NjEyQTZG
NzgzMDA2NEQxMjMgLyogT1NBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gT1NBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQwMDA2
OTIxMkE2RjlFMTAwNjREMTIzIC8qIE9TQWxsb2NhdG9yUG9zaXguY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT1NBbGxvY2F0b3JQb3NpeC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTE0MEQxN0Q2MEU4QUQ0QTkwMDBDRDE3RCAvKiBKU0Jhc2VQcml2
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQmFzZVByaXZhdGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MDUsNiArMTUwOSw4IEBACiAJCTE0MkUz
MTJBMTM0RkYwQTYwMEFGQURCNSAvKiBoZWFwICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQkwRkM4MTUxNDE0MDUxMThEMDBDRkE2MDMgLyogVlRhYmxlU3Bl
Y3RydW0uaCAqLywKKwkJCQkwRkM4MTUxMjE0MDUxMTg2MDBDRkE2MDMgLyogVlRhYmxlU3BlY3Ry
dW0uY3BwICovLAogCQkJCTE0NkIxNERCMTJFQjVCMTIwMDFCRUMxQiAvKiBDb25zZXJ2YXRpdmVS
b290cy5jcHAgKi8sCiAJCQkJMTQ5REFBRjIxMkVCNTU5RDAwODNCMTJCIC8qIENvbnNlcnZhdGl2
ZVJvb3RzLmggKi8sCiAJCQkJMTQyRTMxMkIxMzRGRjBBNjAwQUZBREI1IC8qIEhhbmRsZS5oICov
LApAQCAtMjIzOSw2ICsyMjQ1LDcgQEAKIAkJCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyog
QVJNQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkFERDE0NTBGRERFQTk4MDAwNkVF
QzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U2MEUxNkY1
Q0QwMEIzNDQ2MCAvKiBBcnJheUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkM4
MTUxNTE0MDUxMTlCMDBDRkE2MDMgLyogVlRhYmxlU3BlY3RydW0uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGOTYzQjM4MTNGQzZGRTkwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDM0U3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM1MjQwRTE2RkM4QTAwQjM0NDYwIC8qIEFycmF5UHJvdG90
eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODQ4LDYgKzI4NTUsNyBAQAogCQkJaXNhID0g
UEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owog
CQkJZmlsZXMgPSAoCisJCQkJMEZDODE1MTYxNDA1MTFCNTAwQ0ZBNjAzIC8qIFZUYWJsZVNwZWN0
cnVtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzcwMDkyMTQwMkZGM0MwMDc4RUIzOSAvKiBT
YW1wbGluZ0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QkQxMDdFQzM3NjAw
NDI3QTQ4IC8qIEFyZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QkUxMDdFQzM3
NjAwNDI3QTQ4IC8qIEFyZ3VtZW50cy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiA5MzY5NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsNiArMzEyLDExIEBA
IHZvaWQgSGVhcDo6ZGVzdHJveSgpCiAgICAgc2hyaW5rKCk7CiAgICAgQVNTRVJUKCFzaXplKCkp
OwogICAgIAorI2lmIEVOQUJMRShTSU1QTEVfSEVBUF9QUk9GSUxJTkcpCisgICAgbV9zbG90Vmlz
aXRvci5tX3Zpc2l0ZWRUeXBlQ291bnRzLmR1bXAoc3RkZXJyLCAiVmlzaXRlZCBUeXBlIENvdW50
cyIpOworICAgIG1fZGVzdHJveWVkVHlwZUNvdW50cy5kdW1wKHN0ZGVyciwgIkRlc3Ryb3llZCBU
eXBlIENvdW50cyIpOworI2VuZGlmCisgICAgCiAjaWYgRU5BQkxFKExBWllfQkxPQ0tfRlJFRUlO
RykKICAgICByZWxlYXNlRnJlZUJsb2NrcygpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5oCShyZXZpc2lvbiA5MzY5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDYgKzEyMyw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB2b2lkIGdldENvbnNlcnZhdGl2ZVJlZ2lzdGVyUm9vdHMoSGFzaFNldDxK
U0NlbGwqPiYgcm9vdHMpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIE1h
cmtlZEJsb2NrOworICAgICAgICAKICAgICAgICAgdHlwZWRlZiBIYXNoU2V0PE1hcmtlZEJsb2Nr
Kj46Oml0ZXJhdG9yIEJsb2NrSXRlcmF0b3I7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBtaW5FeHRyYUNvc3QgPSAyNTY7CkBAIC0xODAsNiArMTgyLDEwIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBib29sIG1fYmxvY2tGcmVlaW5nVGhyZWFkU2hvdWxkUXVpdDsKICNlbmRpZgog
CisjaWYgRU5BQkxFKFNJTVBMRV9IRUFQX1BST0ZJTElORykKKyAgICAgICAgVlRhYmxlU3BlY3Ry
dW0gbV9kZXN0cm95ZWRUeXBlQ291bnRzOworI2VuZGlmCisKICAgICAgICAgc2l6ZV90IG1fZXh0
cmFDb3N0OwogCiAgICAgICAgIFByb3RlY3RDb3VudFNldCBtX3Byb3RlY3RlZFZhbHVlczsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCShyZXZpc2lvbiA5MzY5NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiSGFuZGxlVHlwZXMuaCIKICNpbmNsdWRlICJK
U1ZhbHVlLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXIuaCIKKyNpbmNsdWRlICJWVGFibGVTcGVjdHJ1
bS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBA
IC05Nyw2ICs5OSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIHJlc2V0KCk7
CiAKKyAgICAgICAgLy8gQW4gYW50aHJhY2l0ZSBvYmplY3QgaXMgYW4gb2JqZWN0IHRoYXQgaXMg
Y3VycmVudGx5IGluIHRoZSBwcm9jZXNzIG9mCisgICAgICAgIC8vIGJlaW5nIHNjYW5uZWQgZm9y
IHJlZmVyZW5jZXMuCisgICAgICAgIHZvaWQgbm90aWNlQW50aHJhY2l0ZShKU0NlbGwqIGNlbGwp
CisgICAgICAgIHsKKyNpZiBFTkFCTEUoU0lNUExFX0hFQVBfUFJPRklMSU5HKQorICAgICAgICAg
ICAgbV92aXNpdGVkVHlwZUNvdW50cy5jb3VudChjZWxsKTsKKyNlbmRpZgorICAgICAgICB9CisK
KyNpZiBFTkFCTEUoU0lNUExFX0hFQVBfUFJPRklMSU5HKQorICAgICAgICBWVGFibGVTcGVjdHJ1
bSBtX3Zpc2l0ZWRUeXBlQ291bnRzOworI2VuZGlmCisKICAgICBwcm90ZWN0ZWQ6CiAjaWYgRU5B
QkxFKEdDX1ZBTElEQVRJT04pCiAgICAgICAgIHN0YXRpYyB2b2lkIHZhbGlkYXRlU2V0KEpTVmFs
dWUqLCBzaXplX3QpOwpAQCAtMTE0LDcgKzEyOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBNYXJrU3RhY2tBcnJheTxNYXJrU2V0PiBtX21hcmtTZXRzOwogICAgICAgICBNYXJrU3RhY2tB
cnJheTxKU0NlbGwqPiBtX3ZhbHVlczsKICAgICAgICAgSGFzaFNldDx2b2lkKj4gbV9vcGFxdWVS
b290czsgLy8gSGFuZGxlLW93bmluZyBkYXRhIHN0cnVjdHVyZXMgbm90IHZpc2libGUgdG8gdGhl
IGdhcmJhZ2UgY29sbGVjdG9yLgotCisgICAgICAgIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAg
ICBwdWJsaWM6CiAgICAgICAgIGJvb2wgbV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRp
b247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCShy
ZXZpc2lvbiA5MzY5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsOSBAQCB2b2lkIE1hcmtlZEJsb2NrOjpj
YWxsRGVzdHJ1Y3RvcihKU0NlbGwqCiAgICAgICAgIHJldHVybjsKICAgICB2b2lkKiB2cHRyID0g
Y2VsbC0+dnB0cigpOwogICAgIGlmIChzcGVjaWFsaXplZERlc3RydWN0b3JTdGF0ZSA9PSBBbGxG
cmVlQ2VsbHNIYXZlT2JqZWN0cyB8fCB2cHRyKSB7CisjaWYgRU5BQkxFKFNJTVBMRV9IRUFQX1BS
T0ZJTElORykKKyAgICAgICAgbV9oZWFwLT5tX2Rlc3Ryb3llZFR5cGVDb3VudHMuY291bnRWUHRy
KHZwdHIpOworI2VuZGlmCiAgICAgICAgIGlmICh2cHRyID09IGpzRmluYWxPYmplY3RWUHRyKSB7
CiAgICAgICAgICAgICBKU0ZpbmFsT2JqZWN0KiBvYmplY3QgPSByZWludGVycHJldF9jYXN0PEpT
RmluYWxPYmplY3QqPihjZWxsKTsKICAgICAgICAgICAgIG9iamVjdC0+SlNGaW5hbE9iamVjdDo6
fkpTRmluYWxPYmplY3QoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QmxvY2suaAkocmV2aXNpb24gOTM2OTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNyArMTcyLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHNpemVfdCBvd25lclNldE51bWJlcihjb25zdCBKU0NlbGwqKTsKICAg
ICAgICAgCiAgICAgICAgIHRlbXBsYXRlPERlc3RydWN0b3JTdGF0ZSBkZXN0cnVjdG9yU3RhdGU+
Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNhbGxEZXN0cnVjdG9yKEpTQ2VsbCosIHZvaWQqIGpzRmlu
YWxPYmplY3RWUHRyKTsKKyAgICAgICAgdm9pZCBjYWxsRGVzdHJ1Y3RvcihKU0NlbGwqLCB2b2lk
KiBqc0ZpbmFsT2JqZWN0VlB0cik7CiAgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVj
dG9yU3RhdGUgZGVzdHJ1Y3RvclN0YXRlPgogICAgICAgICB2b2lkIHNwZWNpYWxpemVkUmVzZXQo
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ZUYWJsZVNwZWN0cnVtLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9WVGFibGVTcGVjdHJ1bS5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9WVGFibGVTcGVj
dHJ1bS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJWVGFibGVTcGVjdHJ1bS5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUg
IkpTQ2VsbC5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+Cisj
aW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCisjaWYg
UExBVEZPUk0oTUFDKQorI2luY2x1ZGUgPGRsZmNuLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIEpT
QyB7CisKK1ZUYWJsZVNwZWN0cnVtOjpWVGFibGVTcGVjdHJ1bSgpCit7Cit9CisKK1ZUYWJsZVNw
ZWN0cnVtOjp+VlRhYmxlU3BlY3RydW0oKQoreworfQorCit2b2lkIFZUYWJsZVNwZWN0cnVtOjpj
b3VudFZQdHIodm9pZCogdlRhYmxlUG9pbnRlcikKK3sKKyAgICBIYXNoTWFwPHZvaWQqLCB1aW50
cHRyX3Q+OjppdGVyYXRvciBpdGVyID0gbV9tYXAuZmluZCh2VGFibGVQb2ludGVyKTsKKyAgICBp
ZiAoaXRlciA9PSBtX21hcC5lbmQoKSkKKyAgICAgICAgbV9tYXAuYWRkKHZUYWJsZVBvaW50ZXIs
IDEpOworICAgIGVsc2UKKyAgICAgICAgaXRlci0+c2Vjb25kKys7Cit9CisKK3ZvaWQgVlRhYmxl
U3BlY3RydW06OmNvdW50KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBjb3VudFZQdHIoY2VsbC0+dnB0
cigpKTsKK30KKworc3RydWN0IFZUYWJsZUFuZENvdW50IHsKKyAgICB2b2lkKiB2dGFibGU7Cisg
ICAgdWludHB0cl90IGNvdW50OworICAgIAorICAgIFZUYWJsZUFuZENvdW50KCkgeyB9CisgICAg
CisgICAgVlRhYmxlQW5kQ291bnQodm9pZCogdnRhYmxlLCB1aW50cHRyX3QgY291bnQpCisgICAg
ICAgIDogdnRhYmxlKHZ0YWJsZSkKKyAgICAgICAgLCBjb3VudChjb3VudCkKKyAgICB7CisgICAg
fQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFZUYWJsZUFuZENvdW50JiBvdGhlcikg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjb3VudCA8IG90aGVyLmNvdW50OworICAgIH0K
K307CisKK3ZvaWQgVlRhYmxlU3BlY3RydW06OmR1bXAoRklMRSogb3V0cHV0LCBjb25zdCBjaGFy
KiBjb21tZW50KQoreworICAgIGZwcmludGYob3V0cHV0LCAiJXM6XG4iLCBjb21tZW50KTsKKyAg
ICAKKyAgICBIYXNoTWFwPHZvaWQqLCB1aW50cHRyX3Q+OjppdGVyYXRvciBiZWdpbiA9IG1fbWFw
LmJlZ2luKCk7CisgICAgSGFzaE1hcDx2b2lkKiwgdWludHB0cl90Pjo6aXRlcmF0b3IgZW5kID0g
bV9tYXAuZW5kKCk7CisgICAgCisgICAgVmVjdG9yPFZUYWJsZUFuZENvdW50LCAwPiBsaXN0Owor
ICAgIAorICAgIGZvciAoSGFzaE1hcDx2b2lkKiwgdWludHB0cl90Pjo6aXRlcmF0b3IgaXRlciA9
IGJlZ2luOyBpdGVyICE9IGVuZDsgKytpdGVyKQorICAgICAgICBsaXN0LmFwcGVuZChWVGFibGVB
bmRDb3VudChpdGVyLT5maXJzdCwgaXRlci0+c2Vjb25kKSk7CisgICAgCisgICAgc3RkOjpzb3J0
KGxpc3QuYmVnaW4oKSwgbGlzdC5lbmQoKSk7CisgICAgCisgICAgZm9yIChzaXplX3QgaW5kZXgg
PSBsaXN0LnNpemUoKTsgaW5kZXgtLSA+IDA7KSB7CisgICAgICAgIFZUYWJsZUFuZENvdW50IGl0
ZW0gPSBsaXN0LmF0KGluZGV4KTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIERsX2luZm8g
aW5mbzsKKyAgICAgICAgaWYgKGRsYWRkcihpdGVtLnZ0YWJsZSwgJmluZm8pKSB7CisgICAgICAg
ICAgICBmcHJpbnRmKG91dHB1dCwgIiAgICAlczolcyglcCk6ICVsdVxuIiwgaW5mby5kbGlfZm5h
bWUsIGluZm8uZGxpX3NuYW1lLCBpdGVtLnZ0YWJsZSwgKGxvbmcgdW5zaWduZWQpaXRlbS5jb3Vu
dCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIGZw
cmludGYob3V0cHV0LCAiICAgICVwOiAlbHVcbiIsIGl0ZW0udnRhYmxlLCAobG9uZyB1bnNpZ25l
ZClpdGVtLmNvdW50KTsKKyAgICB9CisgICAgCisgICAgZmZsdXNoKG91dHB1dCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvVlRhYmxl
U3BlY3RydW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9WVGFi
bGVTcGVjdHJ1bS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
VlRhYmxlU3BlY3RydW0uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFZUYWJsZVNwZWN0
cnVtX2gKKyNkZWZpbmUgVlRhYmxlU3BlY3RydW1faAorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNDZWxs
OworCitjbGFzcyBWVGFibGVTcGVjdHJ1bSB7CitwdWJsaWM6CisgICAgVlRhYmxlU3BlY3RydW0o
KTsKKyAgICB+VlRhYmxlU3BlY3RydW0oKTsKKyAgICAKKyAgICB2b2lkIGNvdW50VlB0cih2b2lk
Kik7CisgICAgdm9pZCBjb3VudChKU0NlbGwqKTsKKyAgICAKKyAgICB2b2lkIGR1bXAoRklMRSog
b3V0cHV0LCBjb25zdCBjaGFyKiBjb21tZW50KTsKKyAgICAKK3ByaXZhdGU6CisgICAgSGFzaE1h
cDx2b2lkKiwgdWludHB0cl90PiBtX21hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gVlRhYmxlU3BlY3RydW1faApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmgJKHJldmlzaW9uIDkzNjk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNCw2ICsyMTQsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGlubGluZSB2b2lkIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbihTbG90Vmlz
aXRvciYgdmlzaXRvcikKICAgICB7CisgICAgICAgIHZpc2l0b3Iubm90aWNlQW50aHJhY2l0ZSh0
aGlzKTsKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fc3RydWN0dXJlKTsKICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDkzNjk2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC05
NjMsNiArOTYzLDEwIEBACiAjZGVmaW5lIEVOQUJMRV9WRVJCT1NFX1ZBTFVFX1BST0ZJTEUgMAog
I2VuZGlmCiAKKyNpZiAhZGVmaW5lZChFTkFCTEVfU0lNUExFX0hFQVBfUFJPRklMSU5HKQorI2Rl
ZmluZSBFTkFCTEVfU0lNUExFX0hFQVBfUFJPRklMSU5HIDAKKyNlbmRpZgorCiAvKiBFbnN1cmUg
dGhhdCBlaXRoZXIgdGhlIEpJVCBvciB0aGUgaW50ZXJwcmV0ZXIgaGFzIGJlZW4gZW5hYmxlZC4g
Ki8KICNpZiAhZGVmaW5lZChFTkFCTEVfSU5URVJQUkVURVIpICYmICFFTkFCTEUoSklUKQogI2Rl
ZmluZSBFTkFCTEVfSU5URVJQUkVURVIgMQo=
</data>
<flag name="review"
          id="100996"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105062</attachid>
            <date>2011-08-24 13:48:11 -0700</date>
            <delta_ts>2011-08-24 13:54:58 -0700</delta_ts>
            <desc>the patch (fix review, build, conflicts)</desc>
            <filename>heapprofile_patch_2.diff</filename>
            <type>text/plain</type>
            <size>20463</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTM3MzMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAK
KzIwMTEtMDgtMjQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBU
aGUgR0MgZG9lcyBub3QgaGF2ZSBhIGZhY2lsaXR5IGZvciBwcm9maWxpbmcgdGhlIGtpbmRzIG9m
IG9iamVjdHMKKyAgICAgICAgdGhhdCBvY2N1cHkgdGhlIGhlYXAKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2ODQ5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBEZXN0cnVjdG9yIGNhbGxzIGFu
ZCBvYmplY3Qgc2NhbnMgYXJlIG5vdyBvcHRpb25hbGx5IGNvdW50ZWQsIHBlcgorICAgICAgICB2
dGFibGUuIFdoZW4gdGhlIGhlYXAgaXMgZGVzdHJveWVkIGFuZCBwcm9maWxpbmcgaXMgZW5hYmxl
ZCwgdGhlCisgICAgICAgIGNvdW50cyBhcmUgZHVtcGVkLCB3aXRoIGNhcmUgdGFrZW4gdG8gcHJp
bnQgdGhlIG5hbWVzIG9mIGNsYXNzZXMKKyAgICAgICAgKG1vZHVsbyBDKysgbWFuZ2xpbmcpIHNv
cnRlZCBpbiBkZXNjZW5kaW5nIGNvbW1vbmFsaXR5LgorCisgICAgICAgICogR05VbWFrZWZpbGUu
bGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUucHJvOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAg
ICAoSlNDOjpIZWFwOjpkZXN0cm95KToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAg
KiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmRyYWluKToKKyAgICAgICAgKiBo
ZWFwL01hcmtTdGFjay5oOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suY3BwOgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6Y2FsbERlc3RydWN0b3IpOgorICAgICAgICAqIGhlYXAvTWFy
a2VkQmxvY2suaDoKKyAgICAgICAgKiBoZWFwL1ZUYWJsZVNwZWN0cnVtLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OlZUYWJsZVNwZWN0cnVtOjpWVGFibGVTcGVjdHJ1bSk6CisgICAgICAgIChK
U0M6OlZUYWJsZVNwZWN0cnVtOjp+VlRhYmxlU3BlY3RydW0pOgorICAgICAgICAoSlNDOjpWVGFi
bGVTcGVjdHJ1bTo6Y291bnRWUHRyKToKKyAgICAgICAgKEpTQzo6VlRhYmxlU3BlY3RydW06OmNv
dW50KToKKyAgICAgICAgKEpTQzo6VlRhYmxlQW5kQ291bnQ6OlZUYWJsZUFuZENvdW50KToKKyAg
ICAgICAgKEpTQzo6VlRhYmxlQW5kQ291bnQ6Om9wZXJhdG9yPCk6CisgICAgICAgIChKU0M6OlZU
YWJsZVNwZWN0cnVtOjpkdW1wKToKKyAgICAgICAgKiBoZWFwL1ZUYWJsZVNwZWN0cnVtLmg6IEFk
ZGVkLgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDExLTA4LTI0ICBGaWxpcCBQaXps
byAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlIHNv
bWV0aW1lcyBoYXMgdHdvIGhlYXAgb2JqZWN0IGNvbnN0cnVjdGlvbnMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiA5MzcyNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDksNiArMTQ5LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvT2xkU3BhY2UuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9PbGRTcGFjZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdHJvbmcuaCBc
CisJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvVlRhYmxlU3BlY3RydW0uY3BwIFwKKwlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9WVGFibGVTcGVjdHJ1bS5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9XZWFrLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dyaXRl
QmFycmllclN1cHBvcnQuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Xcml0ZUJh
cnJpZXJTdXBwb3J0LmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZXhwCShyZXZpc2lvbiA5MzcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw2ICsxNzQsNyBAQCBfX1pOM0pTQzE0
U2FtcGxpbmdUaHJlYWQ1c3RhcnRFagogX19aTjNKU0MxNFNjb3BlQ2hhaW5Ob2RlNnNfaW5mb0UK
IF9fWk4zSlNDMTRUaW1lb3V0Q2hlY2tlcjEwZGlkVGltZU91dEVQTlNfOUV4ZWNTdGF0ZUUKIF9f
Wk4zSlNDMTRUaW1lb3V0Q2hlY2tlcjVyZXNldEV2CitfX1pOM0pTQzE0VlRhYmxlU3BlY3RydW01
Y291bnRFUE5TXzZKU0NlbGxFCiBfX1pOM0pTQzE0dGhyb3dUeXBlRXJyb3JFUE5TXzlFeGVjU3Rh
dGVFCiBfX1pOM0pTQzE1SlNXcmFwcGVyT2JqZWN0MTN2aXNpdENoaWxkcmVuRVJOU18xMVNsb3RW
aXNpdG9yRQogX19aTjNKU0MxNVdlYWtIYW5kbGVPd25lcjI2aXNSZWFjaGFibGVGcm9tT3BhcXVl
Um9vdHNFTlNfNkhhbmRsZUlOU183VW5rbm93bkVFRVB2Uk5TXzExU2xvdFZpc2l0b3JFCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8JKHJldmlzaW9uIDkzNzI1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwkod29ya2luZyBj
b3B5KQpAQCAtNzksNiArNzksNyBAQCBTT1VSQ0VTICs9IFwKICAgICBoZWFwL01hcmtlZEJsb2Nr
LmNwcCBcCiAgICAgaGVhcC9OZXdTcGFjZS5jcHAgXAogICAgIGhlYXAvT2xkU3BhY2UuY3BwIFwK
KyAgICBoZWFwL1ZUYWJsZVNwZWN0cnVtLmNwcCBcCiAgICAgaGVhcC9Xcml0ZUJhcnJpZXJTdXBw
b3J0LmNwcCBcCiAgICAgZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcCBcCiAgICAgZGVi
dWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiA5Mzcy
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTY2LDYg
KzE5NjYsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPEZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0
aD0iLi5cLi5caGVhcFxWVGFibGVTcGVjdHJ1bS5oIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmlsZT4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8RmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXFZUYWJsZVNwZWN0cnVtLmNwcCIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGUKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cLi5caGVhcFxX
ZWFrLmgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPC9GaWxlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDkzNzI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUy
LDggQEAKIAkJMEY3NzAwOTAxNDAyRkRFNDAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NzAwOEUxNDAy
RkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNzcwMDkyMTQwMkZGM0MwMDc4RUIzOSAvKiBT
YW1wbGluZ0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAg
Ki87IH07CiAJCTBGOTYzQjM4MTNGQzZGRTkwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTYzQjM2MTNGQzZG
REUwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRkM4MTUxNTE0MDUxMTlCMDBDRkE2MDMgLyogVlRhYmxl
U3BlY3RydW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQzgxNTE0MTQwNTExOEQwMENGQTYwMyAvKiBWVGFibGVTcGVjdHJ1bS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQzgxNTE2MTQwNTExQjUw
MENGQTYwMyAvKiBWVGFibGVTcGVjdHJ1bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM4MTUxMjE0MDUxMTg2MDBDRkE2MDMgLyogVlRhYmxlU3Bl
Y3RydW0uY3BwICovOyB9OwogCQkwRkM4MTUwQTE0MDQzQkY1MDBDRkE2MDMgLyogV3JpdGVCYXJy
aWVyU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZDODE1MDkxNDA0M0JEMjAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkM4MTUwQjE0
MDQzQzBFMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM4MTUwODE0MDQzQkNBMDBDRkE2MDMg
LyogV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgKi87IH07CiAJCTE0MDAwNjc3MTJBNkY3ODMwMDY0
RDEyMyAvKiBPU0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTQwMDA2NzYxMkE2Rjc4MzAwNjREMTIzIC8qIE9TQWxsb2NhdG9yLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTczNyw2ICs3
MzksOCBAQAogCQkwRjc3MDA4RTE0MDJGREQ2MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhbXBsaW5nQ291bnRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjc3MDA5MTE0MDJGRjI4MDA3OEVCMzkgLyogU2Ft
cGxpbmdDb3VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNh
bXBsaW5nQ291bnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTYzQjM2
MTNGQzZGREUwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVmFsdWVQcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGQzgxNTEyMTQwNTExODYwMENGQTYwMyAvKiBWVGFibGVTcGVjdHJ1bS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWVGFibGVTcGVjdHJ1bS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzgxNTE0MTQwNTExOEQwMENGQTYwMyAvKiBWVGFibGVT
cGVjdHJ1bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWVGFibGVTcGVjdHJ1
bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkM4MTUwODE0MDQzQkNBMDBDRkE2
MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZDODE1MDkxNDA0M0JEMjAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGVCYXJyaWVyU3VwcG9ydC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDAwMDY3NjEyQTZGNzgzMDA2NEQxMjMg
LyogT1NBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT1NBbGxv
Y2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MDksNiArMTUxMyw4IEBA
CiAJCTE0MkUzMTJBMTM0RkYwQTYwMEFGQURCNSAvKiBoZWFwICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRkM4MTUxNDE0MDUxMThEMDBDRkE2MDMgLyog
VlRhYmxlU3BlY3RydW0uaCAqLywKKwkJCQkwRkM4MTUxMjE0MDUxMTg2MDBDRkE2MDMgLyogVlRh
YmxlU3BlY3RydW0uY3BwICovLAogCQkJCTBGQzgxNTA5MTQwNDNCRDIwMENGQTYwMyAvKiBXcml0
ZUJhcnJpZXJTdXBwb3J0LmggKi8sCiAJCQkJMEZDODE1MDgxNDA0M0JDQTAwQ0ZBNjAzIC8qIFdy
aXRlQmFycmllclN1cHBvcnQuY3BwICovLAogCQkJCTE0NkIxNERCMTJFQjVCMTIwMDFCRUMxQiAv
KiBDb25zZXJ2YXRpdmVSb290cy5jcHAgKi8sCkBAIC0yMjQ1LDYgKzIyNTEsNyBAQAogCQkJCTg2
RDNCMkM0MTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEMzRTYwRTE2RjVDRDAwQjM0NDYwIC8qIEFycmF5Q29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGQzgxNTE1MTQwNTExOUIwMENGQTYwMyAvKiBWVGFibGVT
cGVjdHJ1bS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDODE1MEExNDA0M0JGNTAwQ0ZBNjAzIC8q
IFdyaXRlQmFycmllclN1cHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTYzQjM4MTNGQzZG
RTkwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U3
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
ODU1LDYgKzI4NjIsNyBAQAogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJMEZDODE1MTYxNDA1
MTFCNTAwQ0ZBNjAzIC8qIFZUYWJsZVNwZWN0cnVtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
QzgxNTBCMTQwNDNDMEUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGNzcwMDkyMTQwMkZGM0MwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QkQxMDdFQzM3NjAwNDI3QTQ4IC8qIEFyZ0xp
c3QuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAkocmV2aXNpb24gOTM3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzEyLDYgKzMxMiwxMSBAQCB2b2lkIEhlYXA6OmRlc3Ryb3ko
KQogICAgIHNocmluaygpOwogICAgIEFTU0VSVCghc2l6ZSgpKTsKICAgICAKKyNpZiBFTkFCTEUo
U0lNUExFX0hFQVBfUFJPRklMSU5HKQorICAgIG1fc2xvdFZpc2l0b3IubV92aXNpdGVkVHlwZUNv
dW50cy5kdW1wKHN0ZGVyciwgIlZpc2l0ZWQgVHlwZSBDb3VudHMiKTsKKyAgICBtX2Rlc3Ryb3ll
ZFR5cGVDb3VudHMuZHVtcChzdGRlcnIsICJEZXN0cm95ZWQgVHlwZSBDb3VudHMiKTsKKyNlbmRp
ZgorICAgIAogI2lmIEVOQUJMRShMQVpZX0JMT0NLX0ZSRUVJTkcpCiAgICAgcmVsZWFzZUZyZWVC
bG9ja3MoKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNp
b24gOTM3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNCw2ICsxMjQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBn
ZXRDb25zZXJ2YXRpdmVSZWdpc3RlclJvb3RzKEhhc2hTZXQ8SlNDZWxsKj4mIHJvb3RzKTsKIAog
ICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKKyAgICAgICAg
CiAgICAgICAgIHR5cGVkZWYgSGFzaFNldDxNYXJrZWRCbG9jayo+OjppdGVyYXRvciBCbG9ja0l0
ZXJhdG9yOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWluRXh0cmFDb3N0ID0gMjU2
OwpAQCAtMTg1LDYgKzE4NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX2Js
b2NrRnJlZWluZ1RocmVhZFNob3VsZFF1aXQ7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTSU1QTEVf
SEVBUF9QUk9GSUxJTkcpCisgICAgICAgIFZUYWJsZVNwZWN0cnVtIG1fZGVzdHJveWVkVHlwZUNv
dW50czsKKyNlbmRpZgorCiAgICAgICAgIHNpemVfdCBtX2V4dHJhQ29zdDsKIAogICAgICAgICBQ
cm90ZWN0Q291bnRTZXQgbV9wcm90ZWN0ZWRWYWx1ZXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHJldmlzaW9uIDkzNzI1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMs
MTAgQEAgdm9pZCBNYXJrU3RhY2s6OmFwcGVuZChDb25zZXJ2YXRpdmVSb290cwogCiBpbmxpbmUg
dm9pZCBTbG90VmlzaXRvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwpCiB7CisjaWYgRU5B
QkxFKFNJTVBMRV9IRUFQX1BST0ZJTElORykKKyAgICBtX3Zpc2l0ZWRUeXBlQ291bnRzLmNvdW50
KGNlbGwpOworI2VuZGlmCisKICAgICBBU1NFUlQoSGVhcDo6aXNNYXJrZWQoY2VsbCkpOwogICAg
IGlmIChjZWxsLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPCBDb21wb3VuZFR5cGUp
IHsKICAgICAgICAgY2VsbC0+SlNDZWxsOjp2aXNpdENoaWxkcmVuKCp0aGlzKTsKQEAgLTEwOCw2
ICsxMTIsOSBAQCB2b2lkIFNsb3RWaXNpdG9yOjpkcmFpbigpCiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGlmIChjZWxsLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPCBDb21w
b3VuZFR5cGUpIHsKKyNpZiBFTkFCTEUoU0lNUExFX0hFQVBfUFJPRklMSU5HKQorICAgICAgICAg
ICAgICAgIG1fdmlzaXRlZFR5cGVDb3VudHMuY291bnQoY2VsbCk7CisjZW5kaWYKICAgICAgICAg
ICAgICAgICBjZWxsLT5KU0NlbGw6OnZpc2l0Q2hpbGRyZW4oKnRoaXMpOwogICAgICAgICAgICAg
ICAgIGlmIChjdXJyZW50Lm1fdmFsdWVzID09IGVuZCkgewogICAgICAgICAgICAgICAgICAgICBt
X21hcmtTZXRzLnJlbW92ZUxhc3QoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtTdGFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtTdGFjay5oCShyZXZpc2lvbiA5MzcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtTdGFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAi
SGFuZGxlVHlwZXMuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXIu
aCIKKyNpbmNsdWRlICJWVGFibGVTcGVjdHJ1bS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC05Nyw2ICs5OSwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICB2b2lkIHJlc2V0KCk7CiAKKyNpZiBFTkFCTEUoU0lNUExFX0hFQVBfUFJP
RklMSU5HKQorICAgICAgICBWVGFibGVTcGVjdHJ1bSBtX3Zpc2l0ZWRUeXBlQ291bnRzOworI2Vu
ZGlmCisKICAgICBwcm90ZWN0ZWQ6CiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCiAgICAgICAg
IHN0YXRpYyB2b2lkIHZhbGlkYXRlU2V0KEpTVmFsdWUqLCBzaXplX3QpOwpAQCAtMTE0LDcgKzEy
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYXJrU3RhY2tBcnJheTxNYXJrU2V0PiBt
X21hcmtTZXRzOwogICAgICAgICBNYXJrU3RhY2tBcnJheTxKU0NlbGwqPiBtX3ZhbHVlczsKICAg
ICAgICAgSGFzaFNldDx2b2lkKj4gbV9vcGFxdWVSb290czsgLy8gSGFuZGxlLW93bmluZyBkYXRh
IHN0cnVjdHVyZXMgbm90IHZpc2libGUgdG8gdGhlIGdhcmJhZ2UgY29sbGVjdG9yLgotCisgICAg
ICAgIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBwdWJsaWM6CiAgICAgICAgIGJvb2wgbV9p
c0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCShyZXZpc2lvbiA5MzcyNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcs
NiArNjcsOSBAQCB2b2lkIE1hcmtlZEJsb2NrOjpjYWxsRGVzdHJ1Y3RvcihKU0NlbGwqCiAgICAg
ICAgIHJldHVybjsKICAgICB2b2lkKiB2cHRyID0gY2VsbC0+dnB0cigpOwogICAgIGlmIChzcGVj
aWFsaXplZERlc3RydWN0b3JTdGF0ZSA9PSBBbGxGcmVlQ2VsbHNIYXZlT2JqZWN0cyB8fCB2cHRy
KSB7CisjaWYgRU5BQkxFKFNJTVBMRV9IRUFQX1BST0ZJTElORykKKyAgICAgICAgbV9oZWFwLT5t
X2Rlc3Ryb3llZFR5cGVDb3VudHMuY291bnRWUHRyKHZwdHIpOworI2VuZGlmCiAgICAgICAgIGlm
ICh2cHRyID09IGpzRmluYWxPYmplY3RWUHRyKSB7CiAgICAgICAgICAgICBKU0ZpbmFsT2JqZWN0
KiBvYmplY3QgPSByZWludGVycHJldF9jYXN0PEpTRmluYWxPYmplY3QqPihjZWxsKTsKICAgICAg
ICAgICAgIG9iamVjdC0+SlNGaW5hbE9iamVjdDo6fkpTRmluYWxPYmplY3QoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gOTM3MjUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzIsNyArMTcyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHNpemVfdCBvd25l
clNldE51bWJlcihjb25zdCBKU0NlbGwqKTsKICAgICAgICAgCiAgICAgICAgIHRlbXBsYXRlPERl
c3RydWN0b3JTdGF0ZSBkZXN0cnVjdG9yU3RhdGU+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNhbGxE
ZXN0cnVjdG9yKEpTQ2VsbCosIHZvaWQqIGpzRmluYWxPYmplY3RWUHRyKTsKKyAgICAgICAgdm9p
ZCBjYWxsRGVzdHJ1Y3RvcihKU0NlbGwqLCB2b2lkKiBqc0ZpbmFsT2JqZWN0VlB0cik7CiAgICAg
ICAgIAogICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdG9yU3RhdGUgZGVzdHJ1Y3RvclN0YXRlPgog
ICAgICAgICB2b2lkIHNwZWNpYWxpemVkUmVzZXQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1ZUYWJsZVNwZWN0cnVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9WVGFibGVTcGVjdHJ1bS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9WVGFibGVTcGVjdHJ1bS5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWVGFibGVTcGVjdHJ1bS5oIgorCisj
aW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIlN0cnVj
dHVyZS5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgPGRs
ZmNuLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIEpTQyB7CisKK1ZUYWJsZVNwZWN0cnVtOjpWVGFi
bGVTcGVjdHJ1bSgpCit7Cit9CisKK1ZUYWJsZVNwZWN0cnVtOjp+VlRhYmxlU3BlY3RydW0oKQor
eworfQorCit2b2lkIFZUYWJsZVNwZWN0cnVtOjpjb3VudFZQdHIodm9pZCogdlRhYmxlUG9pbnRl
cikKK3sKKyAgICBzdGQ6OnBhaXI8SGFzaE1hcDx2b2lkKiwgdW5zaWduZWQgbG9uZz46Oml0ZXJh
dG9yLCBib29sPiByZXN1bHQgPSBtX21hcC5hZGQodlRhYmxlUG9pbnRlciwgMSk7CisgICAgaWYg
KCFyZXN1bHQuc2Vjb25kKQorICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCsrOworfQorCit2
b2lkIFZUYWJsZVNwZWN0cnVtOjpjb3VudChKU0NlbGwqIGNlbGwpCit7CisgICAgY291bnRWUHRy
KGNlbGwtPnZwdHIoKSk7Cit9CisKK3N0cnVjdCBWVGFibGVBbmRDb3VudCB7CisgICAgdm9pZCog
dnRhYmxlOworICAgIHVuc2lnbmVkIGxvbmcgY291bnQ7CisgICAgCisgICAgVlRhYmxlQW5kQ291
bnQoKSB7IH0KKyAgICAKKyAgICBWVGFibGVBbmRDb3VudCh2b2lkKiB2dGFibGUsIHVuc2lnbmVk
IGxvbmcgY291bnQpCisgICAgICAgIDogdnRhYmxlKHZ0YWJsZSkKKyAgICAgICAgLCBjb3VudChj
b3VudCkKKyAgICB7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFZUYWJs
ZUFuZENvdW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChjb3VudCAhPSBvdGhl
ci5jb3VudCkKKyAgICAgICAgICAgIHJldHVybiBjb3VudCA8IG90aGVyLmNvdW50OworICAgICAg
ICByZXR1cm4gdnRhYmxlID4gb3RoZXIudnRhYmxlOyAvLyB0aGlzIHJlc3VsdHMgaW4gbG93ZXIt
YWRkcmVzc2VkIHZ0YWJsZXMgYmVpbmcgcHJpbnRlZCBmaXJzdAorICAgIH0KK307CisKK3ZvaWQg
VlRhYmxlU3BlY3RydW06OmR1bXAoRklMRSogb3V0cHV0LCBjb25zdCBjaGFyKiBjb21tZW50KQor
eworICAgIGZwcmludGYob3V0cHV0LCAiJXM6XG4iLCBjb21tZW50KTsKKyAgICAKKyAgICBIYXNo
TWFwPHZvaWQqLCB1bnNpZ25lZCBsb25nPjo6aXRlcmF0b3IgYmVnaW4gPSBtX21hcC5iZWdpbigp
OworICAgIEhhc2hNYXA8dm9pZCosIHVuc2lnbmVkIGxvbmc+OjppdGVyYXRvciBlbmQgPSBtX21h
cC5lbmQoKTsKKyAgICAKKyAgICBWZWN0b3I8VlRhYmxlQW5kQ291bnQsIDA+IGxpc3Q7CisgICAg
CisgICAgZm9yIChIYXNoTWFwPHZvaWQqLCB1bnNpZ25lZCBsb25nPjo6aXRlcmF0b3IgaXRlciA9
IGJlZ2luOyBpdGVyICE9IGVuZDsgKytpdGVyKQorICAgICAgICBsaXN0LmFwcGVuZChWVGFibGVB
bmRDb3VudChpdGVyLT5maXJzdCwgaXRlci0+c2Vjb25kKSk7CisgICAgCisgICAgc3RkOjpzb3J0
KGxpc3QuYmVnaW4oKSwgbGlzdC5lbmQoKSk7CisgICAgCisgICAgZm9yIChzaXplX3QgaW5kZXgg
PSBsaXN0LnNpemUoKTsgaW5kZXgtLSA+IDA7KSB7CisgICAgICAgIFZUYWJsZUFuZENvdW50IGl0
ZW0gPSBsaXN0LmF0KGluZGV4KTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIERsX2luZm8g
aW5mbzsKKyAgICAgICAgaWYgKGRsYWRkcihpdGVtLnZ0YWJsZSwgJmluZm8pKSB7CisgICAgICAg
ICAgICBjaGFyKiBmaW5kUmVzdWx0ID0gc3RycmNocihpbmZvLmRsaV9mbmFtZSwgJy8nKTsKKyAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHN0cmlwcGVkRmlsZU5hbWU7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGlmIChmaW5kUmVzdWx0KQorICAgICAgICAgICAgICAgIHN0cmlwcGVkRmlsZU5h
bWUgPSBmaW5kUmVzdWx0ICsgMTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBz
dHJpcHBlZEZpbGVOYW1lID0gaW5mby5kbGlfZm5hbWU7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGZwcmludGYob3V0cHV0LCAiICAgICVzOiVzKCVwKTogJWx1XG4iLCBzdHJpcHBlZEZpbGVO
YW1lLCBpbmZvLmRsaV9zbmFtZSwgaXRlbS52dGFibGUsIChsb25nIHVuc2lnbmVkKWl0ZW0uY291
bnQpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBm
cHJpbnRmKG91dHB1dCwgIiAgICAlcDogJWx1XG4iLCBpdGVtLnZ0YWJsZSwgaXRlbS5jb3VudCk7
CisgICAgfQorICAgIAorICAgIGZmbHVzaChvdXRwdXQpOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ZUYWJsZVNwZWN0cnVtLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvVlRhYmxlU3BlY3RydW0uaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ZUYWJsZVNwZWN0cnVt
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBWVGFibGVTcGVjdHJ1bV9oCisjZGVmaW5l
IFZUYWJsZVNwZWN0cnVtX2gKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTQ2VsbDsKKworY2xhc3MgVlRh
YmxlU3BlY3RydW0geworcHVibGljOgorICAgIFZUYWJsZVNwZWN0cnVtKCk7CisgICAgflZUYWJs
ZVNwZWN0cnVtKCk7CisgICAgCisgICAgdm9pZCBjb3VudFZQdHIodm9pZCopOworICAgIHZvaWQg
Y291bnQoSlNDZWxsKik7CisgICAgCisgICAgdm9pZCBkdW1wKEZJTEUqIG91dHB1dCwgY29uc3Qg
Y2hhciogY29tbWVudCk7CisgICAgCitwcml2YXRlOgorICAgIEhhc2hNYXA8dm9pZCosIHVuc2ln
bmVkIGxvbmc+IG1fbWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBW
VGFibGVTcGVjdHJ1bV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3Jt
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShy
ZXZpc2lvbiA5MzcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAko
d29ya2luZyBjb3B5KQpAQCAtOTYzLDYgKzk2MywxMCBAQAogI2RlZmluZSBFTkFCTEVfVkVSQk9T
RV9WQUxVRV9QUk9GSUxFIDAKICNlbmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX1NJTVBMRV9I
RUFQX1BST0ZJTElORykKKyNkZWZpbmUgRU5BQkxFX1NJTVBMRV9IRUFQX1BST0ZJTElORyAwCisj
ZW5kaWYKKwogLyogQ291bnRzIHVzZXMgb2Ygd3JpdGUgYmFycmllcnMgdXNpbmcgc2FtcGxpbmcg
Y291bnRlcnMuIEJlIHN1cmUgdG8gYWxzbwogICAgc2V0IEVOQUJMRV9TQU1QTElOR19DT1VOVEVS
UyB0byAxLiAqLwogI2lmICFkZWZpbmVkKEVOQUJMRV9XUklURV9CQVJSSUVSX1BST0ZJTElORykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105063</attachid>
            <date>2011-08-24 13:54:58 -0700</date>
            <delta_ts>2011-08-24 14:25:27 -0700</delta_ts>
            <desc>the patch (fix style)</desc>
            <filename>heapprofile_patch_3.diff</filename>
            <type>text/plain</type>
            <size>20463</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTM3MzMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAK
KzIwMTEtMDgtMjQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBU
aGUgR0MgZG9lcyBub3QgaGF2ZSBhIGZhY2lsaXR5IGZvciBwcm9maWxpbmcgdGhlIGtpbmRzIG9m
IG9iamVjdHMKKyAgICAgICAgdGhhdCBvY2N1cHkgdGhlIGhlYXAKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2ODQ5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBEZXN0cnVjdG9yIGNhbGxzIGFu
ZCBvYmplY3Qgc2NhbnMgYXJlIG5vdyBvcHRpb25hbGx5IGNvdW50ZWQsIHBlcgorICAgICAgICB2
dGFibGUuIFdoZW4gdGhlIGhlYXAgaXMgZGVzdHJveWVkIGFuZCBwcm9maWxpbmcgaXMgZW5hYmxl
ZCwgdGhlCisgICAgICAgIGNvdW50cyBhcmUgZHVtcGVkLCB3aXRoIGNhcmUgdGFrZW4gdG8gcHJp
bnQgdGhlIG5hbWVzIG9mIGNsYXNzZXMKKyAgICAgICAgKG1vZHVsbyBDKysgbWFuZ2xpbmcpIHNv
cnRlZCBpbiBkZXNjZW5kaW5nIGNvbW1vbmFsaXR5LgorCisgICAgICAgICogR05VbWFrZWZpbGUu
bGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUucHJvOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAg
ICAoSlNDOjpIZWFwOjpkZXN0cm95KToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAg
KiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmRyYWluKToKKyAgICAgICAgKiBo
ZWFwL01hcmtTdGFjay5oOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suY3BwOgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6Y2FsbERlc3RydWN0b3IpOgorICAgICAgICAqIGhlYXAvTWFy
a2VkQmxvY2suaDoKKyAgICAgICAgKiBoZWFwL1ZUYWJsZVNwZWN0cnVtLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OlZUYWJsZVNwZWN0cnVtOjpWVGFibGVTcGVjdHJ1bSk6CisgICAgICAgIChK
U0M6OlZUYWJsZVNwZWN0cnVtOjp+VlRhYmxlU3BlY3RydW0pOgorICAgICAgICAoSlNDOjpWVGFi
bGVTcGVjdHJ1bTo6Y291bnRWUHRyKToKKyAgICAgICAgKEpTQzo6VlRhYmxlU3BlY3RydW06OmNv
dW50KToKKyAgICAgICAgKEpTQzo6VlRhYmxlQW5kQ291bnQ6OlZUYWJsZUFuZENvdW50KToKKyAg
ICAgICAgKEpTQzo6VlRhYmxlQW5kQ291bnQ6Om9wZXJhdG9yPCk6CisgICAgICAgIChKU0M6OlZU
YWJsZVNwZWN0cnVtOjpkdW1wKToKKyAgICAgICAgKiBoZWFwL1ZUYWJsZVNwZWN0cnVtLmg6IEFk
ZGVkLgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDExLTA4LTI0ICBGaWxpcCBQaXps
byAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlIHNv
bWV0aW1lcyBoYXMgdHdvIGhlYXAgb2JqZWN0IGNvbnN0cnVjdGlvbnMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiA5MzcyNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDksNiArMTQ5LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvT2xkU3BhY2UuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9PbGRTcGFjZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdHJvbmcuaCBc
CisJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvVlRhYmxlU3BlY3RydW0uY3BwIFwKKwlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9WVGFibGVTcGVjdHJ1bS5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9XZWFrLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dyaXRl
QmFycmllclN1cHBvcnQuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Xcml0ZUJh
cnJpZXJTdXBwb3J0LmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZXhwCShyZXZpc2lvbiA5MzcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw2ICsxNzQsNyBAQCBfX1pOM0pTQzE0
U2FtcGxpbmdUaHJlYWQ1c3RhcnRFagogX19aTjNKU0MxNFNjb3BlQ2hhaW5Ob2RlNnNfaW5mb0UK
IF9fWk4zSlNDMTRUaW1lb3V0Q2hlY2tlcjEwZGlkVGltZU91dEVQTlNfOUV4ZWNTdGF0ZUUKIF9f
Wk4zSlNDMTRUaW1lb3V0Q2hlY2tlcjVyZXNldEV2CitfX1pOM0pTQzE0VlRhYmxlU3BlY3RydW01
Y291bnRFUE5TXzZKU0NlbGxFCiBfX1pOM0pTQzE0dGhyb3dUeXBlRXJyb3JFUE5TXzlFeGVjU3Rh
dGVFCiBfX1pOM0pTQzE1SlNXcmFwcGVyT2JqZWN0MTN2aXNpdENoaWxkcmVuRVJOU18xMVNsb3RW
aXNpdG9yRQogX19aTjNKU0MxNVdlYWtIYW5kbGVPd25lcjI2aXNSZWFjaGFibGVGcm9tT3BhcXVl
Um9vdHNFTlNfNkhhbmRsZUlOU183VW5rbm93bkVFRVB2Uk5TXzExU2xvdFZpc2l0b3JFCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8JKHJldmlzaW9uIDkzNzI1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwkod29ya2luZyBj
b3B5KQpAQCAtNzksNiArNzksNyBAQCBTT1VSQ0VTICs9IFwKICAgICBoZWFwL01hcmtlZEJsb2Nr
LmNwcCBcCiAgICAgaGVhcC9OZXdTcGFjZS5jcHAgXAogICAgIGhlYXAvT2xkU3BhY2UuY3BwIFwK
KyAgICBoZWFwL1ZUYWJsZVNwZWN0cnVtLmNwcCBcCiAgICAgaGVhcC9Xcml0ZUJhcnJpZXJTdXBw
b3J0LmNwcCBcCiAgICAgZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcCBcCiAgICAgZGVi
dWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiA5Mzcy
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTY2LDYg
KzE5NjYsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPEZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0
aD0iLi5cLi5caGVhcFxWVGFibGVTcGVjdHJ1bS5oIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmlsZT4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8RmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXFZUYWJsZVNwZWN0cnVtLmNwcCIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGUKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cLi5caGVhcFxX
ZWFrLmgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPC9GaWxlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDkzNzI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUy
LDggQEAKIAkJMEY3NzAwOTAxNDAyRkRFNDAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NzAwOEUxNDAy
RkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNzcwMDkyMTQwMkZGM0MwMDc4RUIzOSAvKiBT
YW1wbGluZ0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAg
Ki87IH07CiAJCTBGOTYzQjM4MTNGQzZGRTkwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTYzQjM2MTNGQzZG
REUwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRkM4MTUxNTE0MDUxMTlCMDBDRkE2MDMgLyogVlRhYmxl
U3BlY3RydW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQzgxNTE0MTQwNTExOEQwMENGQTYwMyAvKiBWVGFibGVTcGVjdHJ1bS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQzgxNTE2MTQwNTExQjUw
MENGQTYwMyAvKiBWVGFibGVTcGVjdHJ1bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM4MTUxMjE0MDUxMTg2MDBDRkE2MDMgLyogVlRhYmxlU3Bl
Y3RydW0uY3BwICovOyB9OwogCQkwRkM4MTUwQTE0MDQzQkY1MDBDRkE2MDMgLyogV3JpdGVCYXJy
aWVyU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZDODE1MDkxNDA0M0JEMjAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkM4MTUwQjE0
MDQzQzBFMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM4MTUwODE0MDQzQkNBMDBDRkE2MDMg
LyogV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgKi87IH07CiAJCTE0MDAwNjc3MTJBNkY3ODMwMDY0
RDEyMyAvKiBPU0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTQwMDA2NzYxMkE2Rjc4MzAwNjREMTIzIC8qIE9TQWxsb2NhdG9yLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTczNyw2ICs3
MzksOCBAQAogCQkwRjc3MDA4RTE0MDJGREQ2MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhbXBsaW5nQ291bnRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjc3MDA5MTE0MDJGRjI4MDA3OEVCMzkgLyogU2Ft
cGxpbmdDb3VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNh
bXBsaW5nQ291bnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTYzQjM2
MTNGQzZGREUwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVmFsdWVQcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGQzgxNTEyMTQwNTExODYwMENGQTYwMyAvKiBWVGFibGVTcGVjdHJ1bS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWVGFibGVTcGVjdHJ1bS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzgxNTE0MTQwNTExOEQwMENGQTYwMyAvKiBWVGFibGVT
cGVjdHJ1bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWVGFibGVTcGVjdHJ1
bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkM4MTUwODE0MDQzQkNBMDBDRkE2
MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZDODE1MDkxNDA0M0JEMjAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGVCYXJyaWVyU3VwcG9ydC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDAwMDY3NjEyQTZGNzgzMDA2NEQxMjMg
LyogT1NBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT1NBbGxv
Y2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MDksNiArMTUxMyw4IEBA
CiAJCTE0MkUzMTJBMTM0RkYwQTYwMEFGQURCNSAvKiBoZWFwICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRkM4MTUxNDE0MDUxMThEMDBDRkE2MDMgLyog
VlRhYmxlU3BlY3RydW0uaCAqLywKKwkJCQkwRkM4MTUxMjE0MDUxMTg2MDBDRkE2MDMgLyogVlRh
YmxlU3BlY3RydW0uY3BwICovLAogCQkJCTBGQzgxNTA5MTQwNDNCRDIwMENGQTYwMyAvKiBXcml0
ZUJhcnJpZXJTdXBwb3J0LmggKi8sCiAJCQkJMEZDODE1MDgxNDA0M0JDQTAwQ0ZBNjAzIC8qIFdy
aXRlQmFycmllclN1cHBvcnQuY3BwICovLAogCQkJCTE0NkIxNERCMTJFQjVCMTIwMDFCRUMxQiAv
KiBDb25zZXJ2YXRpdmVSb290cy5jcHAgKi8sCkBAIC0yMjQ1LDYgKzIyNTEsNyBAQAogCQkJCTg2
RDNCMkM0MTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEMzRTYwRTE2RjVDRDAwQjM0NDYwIC8qIEFycmF5Q29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGQzgxNTE1MTQwNTExOUIwMENGQTYwMyAvKiBWVGFibGVT
cGVjdHJ1bS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDODE1MEExNDA0M0JGNTAwQ0ZBNjAzIC8q
IFdyaXRlQmFycmllclN1cHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTYzQjM4MTNGQzZG
RTkwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U3
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
ODU1LDYgKzI4NjIsNyBAQAogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJMEZDODE1MTYxNDA1
MTFCNTAwQ0ZBNjAzIC8qIFZUYWJsZVNwZWN0cnVtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
QzgxNTBCMTQwNDNDMEUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGNzcwMDkyMTQwMkZGM0MwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QkQxMDdFQzM3NjAwNDI3QTQ4IC8qIEFyZ0xp
c3QuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAkocmV2aXNpb24gOTM3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzEyLDYgKzMxMiwxMSBAQCB2b2lkIEhlYXA6OmRlc3Ryb3ko
KQogICAgIHNocmluaygpOwogICAgIEFTU0VSVCghc2l6ZSgpKTsKICAgICAKKyNpZiBFTkFCTEUo
U0lNUExFX0hFQVBfUFJPRklMSU5HKQorICAgIG1fc2xvdFZpc2l0b3IubV92aXNpdGVkVHlwZUNv
dW50cy5kdW1wKHN0ZGVyciwgIlZpc2l0ZWQgVHlwZSBDb3VudHMiKTsKKyAgICBtX2Rlc3Ryb3ll
ZFR5cGVDb3VudHMuZHVtcChzdGRlcnIsICJEZXN0cm95ZWQgVHlwZSBDb3VudHMiKTsKKyNlbmRp
ZgorICAgIAogI2lmIEVOQUJMRShMQVpZX0JMT0NLX0ZSRUVJTkcpCiAgICAgcmVsZWFzZUZyZWVC
bG9ja3MoKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNp
b24gOTM3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNCw2ICsxMjQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBn
ZXRDb25zZXJ2YXRpdmVSZWdpc3RlclJvb3RzKEhhc2hTZXQ8SlNDZWxsKj4mIHJvb3RzKTsKIAog
ICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKKyAgICAgICAg
CiAgICAgICAgIHR5cGVkZWYgSGFzaFNldDxNYXJrZWRCbG9jayo+OjppdGVyYXRvciBCbG9ja0l0
ZXJhdG9yOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWluRXh0cmFDb3N0ID0gMjU2
OwpAQCAtMTg1LDYgKzE4NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX2Js
b2NrRnJlZWluZ1RocmVhZFNob3VsZFF1aXQ7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTSU1QTEVf
SEVBUF9QUk9GSUxJTkcpCisgICAgICAgIFZUYWJsZVNwZWN0cnVtIG1fZGVzdHJveWVkVHlwZUNv
dW50czsKKyNlbmRpZgorCiAgICAgICAgIHNpemVfdCBtX2V4dHJhQ29zdDsKIAogICAgICAgICBQ
cm90ZWN0Q291bnRTZXQgbV9wcm90ZWN0ZWRWYWx1ZXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHJldmlzaW9uIDkzNzI1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMs
MTAgQEAgdm9pZCBNYXJrU3RhY2s6OmFwcGVuZChDb25zZXJ2YXRpdmVSb290cwogCiBpbmxpbmUg
dm9pZCBTbG90VmlzaXRvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwpCiB7CisjaWYgRU5B
QkxFKFNJTVBMRV9IRUFQX1BST0ZJTElORykKKyAgICBtX3Zpc2l0ZWRUeXBlQ291bnRzLmNvdW50
KGNlbGwpOworI2VuZGlmCisKICAgICBBU1NFUlQoSGVhcDo6aXNNYXJrZWQoY2VsbCkpOwogICAg
IGlmIChjZWxsLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPCBDb21wb3VuZFR5cGUp
IHsKICAgICAgICAgY2VsbC0+SlNDZWxsOjp2aXNpdENoaWxkcmVuKCp0aGlzKTsKQEAgLTEwOCw2
ICsxMTIsOSBAQCB2b2lkIFNsb3RWaXNpdG9yOjpkcmFpbigpCiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGlmIChjZWxsLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPCBDb21w
b3VuZFR5cGUpIHsKKyNpZiBFTkFCTEUoU0lNUExFX0hFQVBfUFJPRklMSU5HKQorICAgICAgICAg
ICAgICAgIG1fdmlzaXRlZFR5cGVDb3VudHMuY291bnQoY2VsbCk7CisjZW5kaWYKICAgICAgICAg
ICAgICAgICBjZWxsLT5KU0NlbGw6OnZpc2l0Q2hpbGRyZW4oKnRoaXMpOwogICAgICAgICAgICAg
ICAgIGlmIChjdXJyZW50Lm1fdmFsdWVzID09IGVuZCkgewogICAgICAgICAgICAgICAgICAgICBt
X21hcmtTZXRzLnJlbW92ZUxhc3QoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtTdGFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtTdGFjay5oCShyZXZpc2lvbiA5MzcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtTdGFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAi
SGFuZGxlVHlwZXMuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXIu
aCIKKyNpbmNsdWRlICJWVGFibGVTcGVjdHJ1bS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC05Nyw2ICs5OSwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICB2b2lkIHJlc2V0KCk7CiAKKyNpZiBFTkFCTEUoU0lNUExFX0hFQVBfUFJP
RklMSU5HKQorICAgICAgICBWVGFibGVTcGVjdHJ1bSBtX3Zpc2l0ZWRUeXBlQ291bnRzOworI2Vu
ZGlmCisKICAgICBwcm90ZWN0ZWQ6CiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCiAgICAgICAg
IHN0YXRpYyB2b2lkIHZhbGlkYXRlU2V0KEpTVmFsdWUqLCBzaXplX3QpOwpAQCAtMTE0LDcgKzEy
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYXJrU3RhY2tBcnJheTxNYXJrU2V0PiBt
X21hcmtTZXRzOwogICAgICAgICBNYXJrU3RhY2tBcnJheTxKU0NlbGwqPiBtX3ZhbHVlczsKICAg
ICAgICAgSGFzaFNldDx2b2lkKj4gbV9vcGFxdWVSb290czsgLy8gSGFuZGxlLW93bmluZyBkYXRh
IHN0cnVjdHVyZXMgbm90IHZpc2libGUgdG8gdGhlIGdhcmJhZ2UgY29sbGVjdG9yLgotCisgICAg
ICAgIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBwdWJsaWM6CiAgICAgICAgIGJvb2wgbV9p
c0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCShyZXZpc2lvbiA5MzcyNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcs
NiArNjcsOSBAQCB2b2lkIE1hcmtlZEJsb2NrOjpjYWxsRGVzdHJ1Y3RvcihKU0NlbGwqCiAgICAg
ICAgIHJldHVybjsKICAgICB2b2lkKiB2cHRyID0gY2VsbC0+dnB0cigpOwogICAgIGlmIChzcGVj
aWFsaXplZERlc3RydWN0b3JTdGF0ZSA9PSBBbGxGcmVlQ2VsbHNIYXZlT2JqZWN0cyB8fCB2cHRy
KSB7CisjaWYgRU5BQkxFKFNJTVBMRV9IRUFQX1BST0ZJTElORykKKyAgICAgICAgbV9oZWFwLT5t
X2Rlc3Ryb3llZFR5cGVDb3VudHMuY291bnRWUHRyKHZwdHIpOworI2VuZGlmCiAgICAgICAgIGlm
ICh2cHRyID09IGpzRmluYWxPYmplY3RWUHRyKSB7CiAgICAgICAgICAgICBKU0ZpbmFsT2JqZWN0
KiBvYmplY3QgPSByZWludGVycHJldF9jYXN0PEpTRmluYWxPYmplY3QqPihjZWxsKTsKICAgICAg
ICAgICAgIG9iamVjdC0+SlNGaW5hbE9iamVjdDo6fkpTRmluYWxPYmplY3QoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gOTM3MjUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzIsNyArMTcyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHNpemVfdCBvd25l
clNldE51bWJlcihjb25zdCBKU0NlbGwqKTsKICAgICAgICAgCiAgICAgICAgIHRlbXBsYXRlPERl
c3RydWN0b3JTdGF0ZSBkZXN0cnVjdG9yU3RhdGU+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNhbGxE
ZXN0cnVjdG9yKEpTQ2VsbCosIHZvaWQqIGpzRmluYWxPYmplY3RWUHRyKTsKKyAgICAgICAgdm9p
ZCBjYWxsRGVzdHJ1Y3RvcihKU0NlbGwqLCB2b2lkKiBqc0ZpbmFsT2JqZWN0VlB0cik7CiAgICAg
ICAgIAogICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdG9yU3RhdGUgZGVzdHJ1Y3RvclN0YXRlPgog
ICAgICAgICB2b2lkIHNwZWNpYWxpemVkUmVzZXQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1ZUYWJsZVNwZWN0cnVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9WVGFibGVTcGVjdHJ1bS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9WVGFibGVTcGVjdHJ1bS5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWVGFibGVTcGVjdHJ1bS5oIgorCisj
aW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSA8YWxn
b3JpdGhtPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgPGRs
ZmNuLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIEpTQyB7CisKK1ZUYWJsZVNwZWN0cnVtOjpWVGFi
bGVTcGVjdHJ1bSgpCit7Cit9CisKK1ZUYWJsZVNwZWN0cnVtOjp+VlRhYmxlU3BlY3RydW0oKQor
eworfQorCit2b2lkIFZUYWJsZVNwZWN0cnVtOjpjb3VudFZQdHIodm9pZCogdlRhYmxlUG9pbnRl
cikKK3sKKyAgICBzdGQ6OnBhaXI8SGFzaE1hcDx2b2lkKiwgdW5zaWduZWQgbG9uZz46Oml0ZXJh
dG9yLCBib29sPiByZXN1bHQgPSBtX21hcC5hZGQodlRhYmxlUG9pbnRlciwgMSk7CisgICAgaWYg
KCFyZXN1bHQuc2Vjb25kKQorICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCsrOworfQorCit2
b2lkIFZUYWJsZVNwZWN0cnVtOjpjb3VudChKU0NlbGwqIGNlbGwpCit7CisgICAgY291bnRWUHRy
KGNlbGwtPnZwdHIoKSk7Cit9CisKK3N0cnVjdCBWVGFibGVBbmRDb3VudCB7CisgICAgdm9pZCog
dnRhYmxlOworICAgIHVuc2lnbmVkIGxvbmcgY291bnQ7CisgICAgCisgICAgVlRhYmxlQW5kQ291
bnQoKSB7IH0KKyAgICAKKyAgICBWVGFibGVBbmRDb3VudCh2b2lkKiB2dGFibGUsIHVuc2lnbmVk
IGxvbmcgY291bnQpCisgICAgICAgIDogdnRhYmxlKHZ0YWJsZSkKKyAgICAgICAgLCBjb3VudChj
b3VudCkKKyAgICB7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFZUYWJs
ZUFuZENvdW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChjb3VudCAhPSBvdGhl
ci5jb3VudCkKKyAgICAgICAgICAgIHJldHVybiBjb3VudCA8IG90aGVyLmNvdW50OworICAgICAg
ICByZXR1cm4gdnRhYmxlID4gb3RoZXIudnRhYmxlOyAvLyB0aGlzIHJlc3VsdHMgaW4gbG93ZXIt
YWRkcmVzc2VkIHZ0YWJsZXMgYmVpbmcgcHJpbnRlZCBmaXJzdAorICAgIH0KK307CisKK3ZvaWQg
VlRhYmxlU3BlY3RydW06OmR1bXAoRklMRSogb3V0cHV0LCBjb25zdCBjaGFyKiBjb21tZW50KQor
eworICAgIGZwcmludGYob3V0cHV0LCAiJXM6XG4iLCBjb21tZW50KTsKKyAgICAKKyAgICBIYXNo
TWFwPHZvaWQqLCB1bnNpZ25lZCBsb25nPjo6aXRlcmF0b3IgYmVnaW4gPSBtX21hcC5iZWdpbigp
OworICAgIEhhc2hNYXA8dm9pZCosIHVuc2lnbmVkIGxvbmc+OjppdGVyYXRvciBlbmQgPSBtX21h
cC5lbmQoKTsKKyAgICAKKyAgICBWZWN0b3I8VlRhYmxlQW5kQ291bnQsIDA+IGxpc3Q7CisgICAg
CisgICAgZm9yIChIYXNoTWFwPHZvaWQqLCB1bnNpZ25lZCBsb25nPjo6aXRlcmF0b3IgaXRlciA9
IGJlZ2luOyBpdGVyICE9IGVuZDsgKytpdGVyKQorICAgICAgICBsaXN0LmFwcGVuZChWVGFibGVB
bmRDb3VudChpdGVyLT5maXJzdCwgaXRlci0+c2Vjb25kKSk7CisgICAgCisgICAgc3RkOjpzb3J0
KGxpc3QuYmVnaW4oKSwgbGlzdC5lbmQoKSk7CisgICAgCisgICAgZm9yIChzaXplX3QgaW5kZXgg
PSBsaXN0LnNpemUoKTsgaW5kZXgtLSA+IDA7KSB7CisgICAgICAgIFZUYWJsZUFuZENvdW50IGl0
ZW0gPSBsaXN0LmF0KGluZGV4KTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIERsX2luZm8g
aW5mbzsKKyAgICAgICAgaWYgKGRsYWRkcihpdGVtLnZ0YWJsZSwgJmluZm8pKSB7CisgICAgICAg
ICAgICBjaGFyKiBmaW5kUmVzdWx0ID0gc3RycmNocihpbmZvLmRsaV9mbmFtZSwgJy8nKTsKKyAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHN0cmlwcGVkRmlsZU5hbWU7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGlmIChmaW5kUmVzdWx0KQorICAgICAgICAgICAgICAgIHN0cmlwcGVkRmlsZU5h
bWUgPSBmaW5kUmVzdWx0ICsgMTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBz
dHJpcHBlZEZpbGVOYW1lID0gaW5mby5kbGlfZm5hbWU7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGZwcmludGYob3V0cHV0LCAiICAgICVzOiVzKCVwKTogJWx1XG4iLCBzdHJpcHBlZEZpbGVO
YW1lLCBpbmZvLmRsaV9zbmFtZSwgaXRlbS52dGFibGUsIChsb25nIHVuc2lnbmVkKWl0ZW0uY291
bnQpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBm
cHJpbnRmKG91dHB1dCwgIiAgICAlcDogJWx1XG4iLCBpdGVtLnZ0YWJsZSwgaXRlbS5jb3VudCk7
CisgICAgfQorICAgIAorICAgIGZmbHVzaChvdXRwdXQpOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ZUYWJsZVNwZWN0cnVtLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvVlRhYmxlU3BlY3RydW0uaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ZUYWJsZVNwZWN0cnVt
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBWVGFibGVTcGVjdHJ1bV9oCisjZGVmaW5l
IFZUYWJsZVNwZWN0cnVtX2gKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTQ2VsbDsKKworY2xhc3MgVlRh
YmxlU3BlY3RydW0geworcHVibGljOgorICAgIFZUYWJsZVNwZWN0cnVtKCk7CisgICAgflZUYWJs
ZVNwZWN0cnVtKCk7CisgICAgCisgICAgdm9pZCBjb3VudFZQdHIodm9pZCopOworICAgIHZvaWQg
Y291bnQoSlNDZWxsKik7CisgICAgCisgICAgdm9pZCBkdW1wKEZJTEUqIG91dHB1dCwgY29uc3Qg
Y2hhciogY29tbWVudCk7CisgICAgCitwcml2YXRlOgorICAgIEhhc2hNYXA8dm9pZCosIHVuc2ln
bmVkIGxvbmc+IG1fbWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBW
VGFibGVTcGVjdHJ1bV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3Jt
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShy
ZXZpc2lvbiA5MzcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAko
d29ya2luZyBjb3B5KQpAQCAtOTYzLDYgKzk2MywxMCBAQAogI2RlZmluZSBFTkFCTEVfVkVSQk9T
RV9WQUxVRV9QUk9GSUxFIDAKICNlbmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX1NJTVBMRV9I
RUFQX1BST0ZJTElORykKKyNkZWZpbmUgRU5BQkxFX1NJTVBMRV9IRUFQX1BST0ZJTElORyAwCisj
ZW5kaWYKKwogLyogQ291bnRzIHVzZXMgb2Ygd3JpdGUgYmFycmllcnMgdXNpbmcgc2FtcGxpbmcg
Y291bnRlcnMuIEJlIHN1cmUgdG8gYWxzbwogICAgc2V0IEVOQUJMRV9TQU1QTElOR19DT1VOVEVS
UyB0byAxLiAqLwogI2lmICFkZWZpbmVkKEVOQUJMRV9XUklURV9CQVJSSUVSX1BST0ZJTElORykK
</data>
<flag name="review"
          id="101109"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105066</attachid>
            <date>2011-08-24 14:25:27 -0700</date>
            <delta_ts>2011-08-24 15:49:37 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>heapprofile_patch_4.diff</filename>
            <type>text/plain</type>
            <size>20448</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTM3MzMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAK
KzIwMTEtMDgtMjQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBU
aGUgR0MgZG9lcyBub3QgaGF2ZSBhIGZhY2lsaXR5IGZvciBwcm9maWxpbmcgdGhlIGtpbmRzIG9m
IG9iamVjdHMKKyAgICAgICAgdGhhdCBvY2N1cHkgdGhlIGhlYXAKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2ODQ5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgR2VvZmZyZXkgR2FyZW4uCisgICAgICAgIAorICAgICAgICBEZXN0cnVjdG9yIGNhbGxzIGFu
ZCBvYmplY3Qgc2NhbnMgYXJlIG5vdyBvcHRpb25hbGx5IGNvdW50ZWQsIHBlcgorICAgICAgICB2
dGFibGUuIFdoZW4gdGhlIGhlYXAgaXMgZGVzdHJveWVkIGFuZCBwcm9maWxpbmcgaXMgZW5hYmxl
ZCwgdGhlCisgICAgICAgIGNvdW50cyBhcmUgZHVtcGVkLCB3aXRoIGNhcmUgdGFrZW4gdG8gcHJp
bnQgdGhlIG5hbWVzIG9mIGNsYXNzZXMKKyAgICAgICAgKG1vZHVsbyBDKysgbWFuZ2xpbmcpIHNv
cnRlZCBpbiBkZXNjZW5kaW5nIGNvbW1vbmFsaXR5LgorCisgICAgICAgICogR05VbWFrZWZpbGUu
bGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUucHJvOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAg
ICAoSlNDOjpIZWFwOjpkZXN0cm95KToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAg
KiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmRyYWluKToKKyAgICAgICAgKiBo
ZWFwL01hcmtTdGFjay5oOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suY3BwOgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6Y2FsbERlc3RydWN0b3IpOgorICAgICAgICAqIGhlYXAvTWFy
a2VkQmxvY2suaDoKKyAgICAgICAgKiBoZWFwL1ZUYWJsZVNwZWN0cnVtLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OlZUYWJsZVNwZWN0cnVtOjpWVGFibGVTcGVjdHJ1bSk6CisgICAgICAgIChK
U0M6OlZUYWJsZVNwZWN0cnVtOjp+VlRhYmxlU3BlY3RydW0pOgorICAgICAgICAoSlNDOjpWVGFi
bGVTcGVjdHJ1bTo6Y291bnRWUHRyKToKKyAgICAgICAgKEpTQzo6VlRhYmxlU3BlY3RydW06OmNv
dW50KToKKyAgICAgICAgKEpTQzo6VlRhYmxlQW5kQ291bnQ6OlZUYWJsZUFuZENvdW50KToKKyAg
ICAgICAgKEpTQzo6VlRhYmxlQW5kQ291bnQ6Om9wZXJhdG9yPCk6CisgICAgICAgIChKU0M6OlZU
YWJsZVNwZWN0cnVtOjpkdW1wKToKKyAgICAgICAgKiBoZWFwL1ZUYWJsZVNwZWN0cnVtLmg6IEFk
ZGVkLgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDExLTA4LTI0ICBGaWxpcCBQaXps
byAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlIHNv
bWV0aW1lcyBoYXMgdHdvIGhlYXAgb2JqZWN0IGNvbnN0cnVjdGlvbnMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiA5MzcyNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDksNiArMTQ5LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvT2xkU3BhY2UuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9PbGRTcGFjZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdHJvbmcuaCBc
CisJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvVlRhYmxlU3BlY3RydW0uY3BwIFwKKwlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9WVGFibGVTcGVjdHJ1bS5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9XZWFrLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dyaXRl
QmFycmllclN1cHBvcnQuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Xcml0ZUJh
cnJpZXJTdXBwb3J0LmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZXhwCShyZXZpc2lvbiA5MzcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw2ICsxNzQsNyBAQCBfX1pOM0pTQzE0
U2FtcGxpbmdUaHJlYWQ1c3RhcnRFagogX19aTjNKU0MxNFNjb3BlQ2hhaW5Ob2RlNnNfaW5mb0UK
IF9fWk4zSlNDMTRUaW1lb3V0Q2hlY2tlcjEwZGlkVGltZU91dEVQTlNfOUV4ZWNTdGF0ZUUKIF9f
Wk4zSlNDMTRUaW1lb3V0Q2hlY2tlcjVyZXNldEV2CitfX1pOM0pTQzE0VlRhYmxlU3BlY3RydW01
Y291bnRFUE5TXzZKU0NlbGxFCiBfX1pOM0pTQzE0dGhyb3dUeXBlRXJyb3JFUE5TXzlFeGVjU3Rh
dGVFCiBfX1pOM0pTQzE1SlNXcmFwcGVyT2JqZWN0MTN2aXNpdENoaWxkcmVuRVJOU18xMVNsb3RW
aXNpdG9yRQogX19aTjNKU0MxNVdlYWtIYW5kbGVPd25lcjI2aXNSZWFjaGFibGVGcm9tT3BhcXVl
Um9vdHNFTlNfNkhhbmRsZUlOU183VW5rbm93bkVFRVB2Uk5TXzExU2xvdFZpc2l0b3JFCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8JKHJldmlzaW9uIDkzNzI1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwkod29ya2luZyBj
b3B5KQpAQCAtNzksNiArNzksNyBAQCBTT1VSQ0VTICs9IFwKICAgICBoZWFwL01hcmtlZEJsb2Nr
LmNwcCBcCiAgICAgaGVhcC9OZXdTcGFjZS5jcHAgXAogICAgIGhlYXAvT2xkU3BhY2UuY3BwIFwK
KyAgICBoZWFwL1ZUYWJsZVNwZWN0cnVtLmNwcCBcCiAgICAgaGVhcC9Xcml0ZUJhcnJpZXJTdXBw
b3J0LmNwcCBcCiAgICAgZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcCBcCiAgICAgZGVi
dWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiA5Mzcy
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTY2LDYg
KzE5NjYsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPEZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0
aD0iLi5cLi5caGVhcFxWVGFibGVTcGVjdHJ1bS5oIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmlsZT4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8RmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXFZUYWJsZVNwZWN0cnVtLmNwcCIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGUKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cLi5caGVhcFxX
ZWFrLmgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPC9GaWxlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDkzNzI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUy
LDggQEAKIAkJMEY3NzAwOTAxNDAyRkRFNDAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NzAwOEUxNDAy
RkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNzcwMDkyMTQwMkZGM0MwMDc4RUIzOSAvKiBT
YW1wbGluZ0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAg
Ki87IH07CiAJCTBGOTYzQjM4MTNGQzZGRTkwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTYzQjM2MTNGQzZG
REUwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRkM4MTUxNTE0MDUxMTlCMDBDRkE2MDMgLyogVlRhYmxl
U3BlY3RydW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQzgxNTE0MTQwNTExOEQwMENGQTYwMyAvKiBWVGFibGVTcGVjdHJ1bS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQzgxNTE2MTQwNTExQjUw
MENGQTYwMyAvKiBWVGFibGVTcGVjdHJ1bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM4MTUxMjE0MDUxMTg2MDBDRkE2MDMgLyogVlRhYmxlU3Bl
Y3RydW0uY3BwICovOyB9OwogCQkwRkM4MTUwQTE0MDQzQkY1MDBDRkE2MDMgLyogV3JpdGVCYXJy
aWVyU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZDODE1MDkxNDA0M0JEMjAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkM4MTUwQjE0
MDQzQzBFMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM4MTUwODE0MDQzQkNBMDBDRkE2MDMg
LyogV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgKi87IH07CiAJCTE0MDAwNjc3MTJBNkY3ODMwMDY0
RDEyMyAvKiBPU0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTQwMDA2NzYxMkE2Rjc4MzAwNjREMTIzIC8qIE9TQWxsb2NhdG9yLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTczNyw2ICs3
MzksOCBAQAogCQkwRjc3MDA4RTE0MDJGREQ2MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhbXBsaW5nQ291bnRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjc3MDA5MTE0MDJGRjI4MDA3OEVCMzkgLyogU2Ft
cGxpbmdDb3VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNh
bXBsaW5nQ291bnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTYzQjM2
MTNGQzZGREUwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVmFsdWVQcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGQzgxNTEyMTQwNTExODYwMENGQTYwMyAvKiBWVGFibGVTcGVjdHJ1bS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWVGFibGVTcGVjdHJ1bS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzgxNTE0MTQwNTExOEQwMENGQTYwMyAvKiBWVGFibGVT
cGVjdHJ1bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWVGFibGVTcGVjdHJ1
bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkM4MTUwODE0MDQzQkNBMDBDRkE2
MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZDODE1MDkxNDA0M0JEMjAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGVCYXJyaWVyU3VwcG9ydC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDAwMDY3NjEyQTZGNzgzMDA2NEQxMjMg
LyogT1NBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT1NBbGxv
Y2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MDksNiArMTUxMyw4IEBA
CiAJCTE0MkUzMTJBMTM0RkYwQTYwMEFGQURCNSAvKiBoZWFwICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRkM4MTUxNDE0MDUxMThEMDBDRkE2MDMgLyog
VlRhYmxlU3BlY3RydW0uaCAqLywKKwkJCQkwRkM4MTUxMjE0MDUxMTg2MDBDRkE2MDMgLyogVlRh
YmxlU3BlY3RydW0uY3BwICovLAogCQkJCTBGQzgxNTA5MTQwNDNCRDIwMENGQTYwMyAvKiBXcml0
ZUJhcnJpZXJTdXBwb3J0LmggKi8sCiAJCQkJMEZDODE1MDgxNDA0M0JDQTAwQ0ZBNjAzIC8qIFdy
aXRlQmFycmllclN1cHBvcnQuY3BwICovLAogCQkJCTE0NkIxNERCMTJFQjVCMTIwMDFCRUMxQiAv
KiBDb25zZXJ2YXRpdmVSb290cy5jcHAgKi8sCkBAIC0yMjQ1LDYgKzIyNTEsNyBAQAogCQkJCTg2
RDNCMkM0MTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEMzRTYwRTE2RjVDRDAwQjM0NDYwIC8qIEFycmF5Q29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGQzgxNTE1MTQwNTExOUIwMENGQTYwMyAvKiBWVGFibGVT
cGVjdHJ1bS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDODE1MEExNDA0M0JGNTAwQ0ZBNjAzIC8q
IFdyaXRlQmFycmllclN1cHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTYzQjM4MTNGQzZG
RTkwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U3
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
ODU1LDYgKzI4NjIsNyBAQAogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJMEZDODE1MTYxNDA1
MTFCNTAwQ0ZBNjAzIC8qIFZUYWJsZVNwZWN0cnVtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
QzgxNTBCMTQwNDNDMEUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGNzcwMDkyMTQwMkZGM0MwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QkQxMDdFQzM3NjAwNDI3QTQ4IC8qIEFyZ0xp
c3QuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAkocmV2aXNpb24gOTM3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzEyLDYgKzMxMiwxMSBAQCB2b2lkIEhlYXA6OmRlc3Ryb3ko
KQogICAgIHNocmluaygpOwogICAgIEFTU0VSVCghc2l6ZSgpKTsKICAgICAKKyNpZiBFTkFCTEUo
U0lNUExFX0hFQVBfUFJPRklMSU5HKQorICAgIG1fc2xvdFZpc2l0b3IubV92aXNpdGVkVHlwZUNv
dW50cy5kdW1wKHN0ZGVyciwgIlZpc2l0ZWQgVHlwZSBDb3VudHMiKTsKKyAgICBtX2Rlc3Ryb3ll
ZFR5cGVDb3VudHMuZHVtcChzdGRlcnIsICJEZXN0cm95ZWQgVHlwZSBDb3VudHMiKTsKKyNlbmRp
ZgorICAgIAogI2lmIEVOQUJMRShMQVpZX0JMT0NLX0ZSRUVJTkcpCiAgICAgcmVsZWFzZUZyZWVC
bG9ja3MoKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNp
b24gOTM3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNCw2ICsxMjQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBn
ZXRDb25zZXJ2YXRpdmVSZWdpc3RlclJvb3RzKEhhc2hTZXQ8SlNDZWxsKj4mIHJvb3RzKTsKIAog
ICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKKyAgICAgICAg
CiAgICAgICAgIHR5cGVkZWYgSGFzaFNldDxNYXJrZWRCbG9jayo+OjppdGVyYXRvciBCbG9ja0l0
ZXJhdG9yOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWluRXh0cmFDb3N0ID0gMjU2
OwpAQCAtMTg1LDYgKzE4NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX2Js
b2NrRnJlZWluZ1RocmVhZFNob3VsZFF1aXQ7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTSU1QTEVf
SEVBUF9QUk9GSUxJTkcpCisgICAgICAgIFZUYWJsZVNwZWN0cnVtIG1fZGVzdHJveWVkVHlwZUNv
dW50czsKKyNlbmRpZgorCiAgICAgICAgIHNpemVfdCBtX2V4dHJhQ29zdDsKIAogICAgICAgICBQ
cm90ZWN0Q291bnRTZXQgbV9wcm90ZWN0ZWRWYWx1ZXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHJldmlzaW9uIDkzNzI1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMs
MTAgQEAgdm9pZCBNYXJrU3RhY2s6OmFwcGVuZChDb25zZXJ2YXRpdmVSb290cwogCiBpbmxpbmUg
dm9pZCBTbG90VmlzaXRvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwpCiB7CisjaWYgRU5B
QkxFKFNJTVBMRV9IRUFQX1BST0ZJTElORykKKyAgICBtX3Zpc2l0ZWRUeXBlQ291bnRzLmNvdW50
KGNlbGwpOworI2VuZGlmCisKICAgICBBU1NFUlQoSGVhcDo6aXNNYXJrZWQoY2VsbCkpOwogICAg
IGlmIChjZWxsLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPCBDb21wb3VuZFR5cGUp
IHsKICAgICAgICAgY2VsbC0+SlNDZWxsOjp2aXNpdENoaWxkcmVuKCp0aGlzKTsKQEAgLTEwOCw2
ICsxMTIsOSBAQCB2b2lkIFNsb3RWaXNpdG9yOjpkcmFpbigpCiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGlmIChjZWxsLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPCBDb21w
b3VuZFR5cGUpIHsKKyNpZiBFTkFCTEUoU0lNUExFX0hFQVBfUFJPRklMSU5HKQorICAgICAgICAg
ICAgICAgIG1fdmlzaXRlZFR5cGVDb3VudHMuY291bnQoY2VsbCk7CisjZW5kaWYKICAgICAgICAg
ICAgICAgICBjZWxsLT5KU0NlbGw6OnZpc2l0Q2hpbGRyZW4oKnRoaXMpOwogICAgICAgICAgICAg
ICAgIGlmIChjdXJyZW50Lm1fdmFsdWVzID09IGVuZCkgewogICAgICAgICAgICAgICAgICAgICBt
X21hcmtTZXRzLnJlbW92ZUxhc3QoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtTdGFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtTdGFjay5oCShyZXZpc2lvbiA5MzcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtTdGFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAi
SGFuZGxlVHlwZXMuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXIu
aCIKKyNpbmNsdWRlICJWVGFibGVTcGVjdHJ1bS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC05Nyw2ICs5OSwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICB2b2lkIHJlc2V0KCk7CiAKKyNpZiBFTkFCTEUoU0lNUExFX0hFQVBfUFJP
RklMSU5HKQorICAgICAgICBWVGFibGVTcGVjdHJ1bSBtX3Zpc2l0ZWRUeXBlQ291bnRzOworI2Vu
ZGlmCisKICAgICBwcm90ZWN0ZWQ6CiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCiAgICAgICAg
IHN0YXRpYyB2b2lkIHZhbGlkYXRlU2V0KEpTVmFsdWUqLCBzaXplX3QpOwpAQCAtMTE0LDcgKzEy
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYXJrU3RhY2tBcnJheTxNYXJrU2V0PiBt
X21hcmtTZXRzOwogICAgICAgICBNYXJrU3RhY2tBcnJheTxKU0NlbGwqPiBtX3ZhbHVlczsKICAg
ICAgICAgSGFzaFNldDx2b2lkKj4gbV9vcGFxdWVSb290czsgLy8gSGFuZGxlLW93bmluZyBkYXRh
IHN0cnVjdHVyZXMgbm90IHZpc2libGUgdG8gdGhlIGdhcmJhZ2UgY29sbGVjdG9yLgotCisgICAg
ICAgIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBwdWJsaWM6CiAgICAgICAgIGJvb2wgbV9p
c0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCShyZXZpc2lvbiA5MzcyNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcs
NiArNjcsOSBAQCB2b2lkIE1hcmtlZEJsb2NrOjpjYWxsRGVzdHJ1Y3RvcihKU0NlbGwqCiAgICAg
ICAgIHJldHVybjsKICAgICB2b2lkKiB2cHRyID0gY2VsbC0+dnB0cigpOwogICAgIGlmIChzcGVj
aWFsaXplZERlc3RydWN0b3JTdGF0ZSA9PSBBbGxGcmVlQ2VsbHNIYXZlT2JqZWN0cyB8fCB2cHRy
KSB7CisjaWYgRU5BQkxFKFNJTVBMRV9IRUFQX1BST0ZJTElORykKKyAgICAgICAgbV9oZWFwLT5t
X2Rlc3Ryb3llZFR5cGVDb3VudHMuY291bnRWUHRyKHZwdHIpOworI2VuZGlmCiAgICAgICAgIGlm
ICh2cHRyID09IGpzRmluYWxPYmplY3RWUHRyKSB7CiAgICAgICAgICAgICBKU0ZpbmFsT2JqZWN0
KiBvYmplY3QgPSByZWludGVycHJldF9jYXN0PEpTRmluYWxPYmplY3QqPihjZWxsKTsKICAgICAg
ICAgICAgIG9iamVjdC0+SlNGaW5hbE9iamVjdDo6fkpTRmluYWxPYmplY3QoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gOTM3MjUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzIsNyArMTcyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHNpemVfdCBvd25l
clNldE51bWJlcihjb25zdCBKU0NlbGwqKTsKICAgICAgICAgCiAgICAgICAgIHRlbXBsYXRlPERl
c3RydWN0b3JTdGF0ZSBkZXN0cnVjdG9yU3RhdGU+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNhbGxE
ZXN0cnVjdG9yKEpTQ2VsbCosIHZvaWQqIGpzRmluYWxPYmplY3RWUHRyKTsKKyAgICAgICAgdm9p
ZCBjYWxsRGVzdHJ1Y3RvcihKU0NlbGwqLCB2b2lkKiBqc0ZpbmFsT2JqZWN0VlB0cik7CiAgICAg
ICAgIAogICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdG9yU3RhdGUgZGVzdHJ1Y3RvclN0YXRlPgog
ICAgICAgICB2b2lkIHNwZWNpYWxpemVkUmVzZXQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1ZUYWJsZVNwZWN0cnVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9WVGFibGVTcGVjdHJ1bS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9WVGFibGVTcGVjdHJ1bS5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWVGFibGVTcGVjdHJ1bS5oIgorCisj
aW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSA8YWxn
b3JpdGhtPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgPGRs
ZmNuLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIEpTQyB7CisKK1ZUYWJsZVNwZWN0cnVtOjpWVGFi
bGVTcGVjdHJ1bSgpCit7Cit9CisKK1ZUYWJsZVNwZWN0cnVtOjp+VlRhYmxlU3BlY3RydW0oKQor
eworfQorCit2b2lkIFZUYWJsZVNwZWN0cnVtOjpjb3VudFZQdHIodm9pZCogdlRhYmxlUG9pbnRl
cikKK3sKKyAgICBzdGQ6OnBhaXI8SGFzaE1hcDx2b2lkKiwgdW5zaWduZWQgbG9uZz46Oml0ZXJh
dG9yLCBib29sPiByZXN1bHQgPSBtX21hcC5hZGQodlRhYmxlUG9pbnRlciwgMSk7CisgICAgaWYg
KCFyZXN1bHQuc2Vjb25kKQorICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCsrOworfQorCit2
b2lkIFZUYWJsZVNwZWN0cnVtOjpjb3VudChKU0NlbGwqIGNlbGwpCit7CisgICAgY291bnRWUHRy
KGNlbGwtPnZwdHIoKSk7Cit9CisKK3N0cnVjdCBWVGFibGVBbmRDb3VudCB7CisgICAgdm9pZCog
dnRhYmxlOworICAgIHVuc2lnbmVkIGxvbmcgY291bnQ7CisgICAgCisgICAgVlRhYmxlQW5kQ291
bnQoKSB7IH0KKyAgICAKKyAgICBWVGFibGVBbmRDb3VudCh2b2lkKiB2dGFibGUsIHVuc2lnbmVk
IGxvbmcgY291bnQpCisgICAgICAgIDogdnRhYmxlKHZ0YWJsZSkKKyAgICAgICAgLCBjb3VudChj
b3VudCkKKyAgICB7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFZUYWJs
ZUFuZENvdW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChjb3VudCAhPSBvdGhl
ci5jb3VudCkKKyAgICAgICAgICAgIHJldHVybiBjb3VudCA8IG90aGVyLmNvdW50OworICAgICAg
ICByZXR1cm4gdnRhYmxlID4gb3RoZXIudnRhYmxlOyAvLyB0aGlzIHJlc3VsdHMgaW4gbG93ZXIt
YWRkcmVzc2VkIHZ0YWJsZXMgYmVpbmcgcHJpbnRlZCBmaXJzdAorICAgIH0KK307CisKK3ZvaWQg
VlRhYmxlU3BlY3RydW06OmR1bXAoRklMRSogb3V0cHV0LCBjb25zdCBjaGFyKiBjb21tZW50KQor
eworICAgIGZwcmludGYob3V0cHV0LCAiJXM6XG4iLCBjb21tZW50KTsKKyAgICAKKyAgICBIYXNo
TWFwPHZvaWQqLCB1bnNpZ25lZCBsb25nPjo6aXRlcmF0b3IgYmVnaW4gPSBtX21hcC5iZWdpbigp
OworICAgIEhhc2hNYXA8dm9pZCosIHVuc2lnbmVkIGxvbmc+OjppdGVyYXRvciBlbmQgPSBtX21h
cC5lbmQoKTsKKyAgICAKKyAgICBWZWN0b3I8VlRhYmxlQW5kQ291bnQsIDA+IGxpc3Q7CisgICAg
CisgICAgZm9yIChIYXNoTWFwPHZvaWQqLCB1bnNpZ25lZCBsb25nPjo6aXRlcmF0b3IgaXRlciA9
IGJlZ2luOyBpdGVyICE9IGVuZDsgKytpdGVyKQorICAgICAgICBsaXN0LmFwcGVuZChWVGFibGVB
bmRDb3VudChpdGVyLT5maXJzdCwgaXRlci0+c2Vjb25kKSk7CisgICAgCisgICAgc3RkOjpzb3J0
KGxpc3QuYmVnaW4oKSwgbGlzdC5lbmQoKSk7CisgICAgCisgICAgZm9yIChzaXplX3QgaW5kZXgg
PSBsaXN0LnNpemUoKTsgaW5kZXgtLSA+IDA7KSB7CisgICAgICAgIFZUYWJsZUFuZENvdW50IGl0
ZW0gPSBsaXN0LmF0KGluZGV4KTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIERsX2luZm8g
aW5mbzsKKyAgICAgICAgaWYgKGRsYWRkcihpdGVtLnZ0YWJsZSwgJmluZm8pKSB7CisgICAgICAg
ICAgICBjaGFyKiBmaW5kUmVzdWx0ID0gc3RycmNocihpbmZvLmRsaV9mbmFtZSwgJy8nKTsKKyAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHN0cmlwcGVkRmlsZU5hbWU7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGlmIChmaW5kUmVzdWx0KQorICAgICAgICAgICAgICAgIHN0cmlwcGVkRmlsZU5h
bWUgPSBmaW5kUmVzdWx0ICsgMTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBz
dHJpcHBlZEZpbGVOYW1lID0gaW5mby5kbGlfZm5hbWU7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGZwcmludGYob3V0cHV0LCAiICAgICVzOiVzKCVwKTogJWx1XG4iLCBzdHJpcHBlZEZpbGVO
YW1lLCBpbmZvLmRsaV9zbmFtZSwgaXRlbS52dGFibGUsIGl0ZW0uY291bnQpOworICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBmcHJpbnRmKG91dHB1dCwg
IiAgICAlcDogJWx1XG4iLCBpdGVtLnZ0YWJsZSwgaXRlbS5jb3VudCk7CisgICAgfQorICAgIAor
ICAgIGZmbHVzaChvdXRwdXQpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ZUYWJsZVNwZWN0cnVtLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvVlRhYmxlU3BlY3RydW0uaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ZUYWJsZVNwZWN0cnVtLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBWVGFibGVTcGVjdHJ1bV9oCisjZGVmaW5lIFZUYWJsZVNwZWN0cnVt
X2gKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTQ2VsbDsKKworY2xhc3MgVlRhYmxlU3BlY3RydW0gewor
cHVibGljOgorICAgIFZUYWJsZVNwZWN0cnVtKCk7CisgICAgflZUYWJsZVNwZWN0cnVtKCk7Cisg
ICAgCisgICAgdm9pZCBjb3VudFZQdHIodm9pZCopOworICAgIHZvaWQgY291bnQoSlNDZWxsKik7
CisgICAgCisgICAgdm9pZCBkdW1wKEZJTEUqIG91dHB1dCwgY29uc3QgY2hhciogY29tbWVudCk7
CisgICAgCitwcml2YXRlOgorICAgIEhhc2hNYXA8dm9pZCosIHVuc2lnbmVkIGxvbmc+IG1fbWFw
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBWVGFibGVTcGVjdHJ1bV9o
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiA5MzcyNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpA
QCAtOTYzLDYgKzk2MywxMCBAQAogI2RlZmluZSBFTkFCTEVfVkVSQk9TRV9WQUxVRV9QUk9GSUxF
IDAKICNlbmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX1NJTVBMRV9IRUFQX1BST0ZJTElORykK
KyNkZWZpbmUgRU5BQkxFX1NJTVBMRV9IRUFQX1BST0ZJTElORyAwCisjZW5kaWYKKwogLyogQ291
bnRzIHVzZXMgb2Ygd3JpdGUgYmFycmllcnMgdXNpbmcgc2FtcGxpbmcgY291bnRlcnMuIEJlIHN1
cmUgdG8gYWxzbwogICAgc2V0IEVOQUJMRV9TQU1QTElOR19DT1VOVEVSUyB0byAxLiAqLwogI2lm
ICFkZWZpbmVkKEVOQUJMRV9XUklURV9CQVJSSUVSX1BST0ZJTElORykK
</data>
<flag name="commit-queue"
          id="101115"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105087</attachid>
            <date>2011-08-24 15:49:37 -0700</date>
            <delta_ts>2011-08-26 15:23:57 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>heapprofile_patch_6.diff</filename>
            <type>text/plain</type>
            <size>20450</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTM3NDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAK
KzIwMTEtMDgtMjQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBU
aGUgR0MgZG9lcyBub3QgaGF2ZSBhIGZhY2lsaXR5IGZvciBwcm9maWxpbmcgdGhlIGtpbmRzIG9m
IG9iamVjdHMKKyAgICAgICAgdGhhdCBvY2N1cHkgdGhlIGhlYXAKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2ODQ5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgR2VvZmZyZXkgR2FyZW4uCisgICAgICAgIAorICAgICAgICBEZXN0cnVjdG9yIGNhbGxzIGFu
ZCBvYmplY3Qgc2NhbnMgYXJlIG5vdyBvcHRpb25hbGx5IGNvdW50ZWQsIHBlcgorICAgICAgICB2
dGFibGUuIFdoZW4gdGhlIGhlYXAgaXMgZGVzdHJveWVkIGFuZCBwcm9maWxpbmcgaXMgZW5hYmxl
ZCwgdGhlCisgICAgICAgIGNvdW50cyBhcmUgZHVtcGVkLCB3aXRoIGNhcmUgdGFrZW4gdG8gcHJp
bnQgdGhlIG5hbWVzIG9mIGNsYXNzZXMKKyAgICAgICAgKG1vZHVsbyBDKysgbWFuZ2xpbmcpIHNv
cnRlZCBpbiBkZXNjZW5kaW5nIGNvbW1vbmFsaXR5LgorCisgICAgICAgICogR05VbWFrZWZpbGUu
bGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUucHJvOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAg
ICAoSlNDOjpIZWFwOjpkZXN0cm95KToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAg
KiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmRyYWluKToKKyAgICAgICAgKiBo
ZWFwL01hcmtTdGFjay5oOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suY3BwOgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6Y2FsbERlc3RydWN0b3IpOgorICAgICAgICAqIGhlYXAvTWFy
a2VkQmxvY2suaDoKKyAgICAgICAgKiBoZWFwL1ZUYWJsZVNwZWN0cnVtLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OlZUYWJsZVNwZWN0cnVtOjpWVGFibGVTcGVjdHJ1bSk6CisgICAgICAgIChK
U0M6OlZUYWJsZVNwZWN0cnVtOjp+VlRhYmxlU3BlY3RydW0pOgorICAgICAgICAoSlNDOjpWVGFi
bGVTcGVjdHJ1bTo6Y291bnRWUHRyKToKKyAgICAgICAgKEpTQzo6VlRhYmxlU3BlY3RydW06OmNv
dW50KToKKyAgICAgICAgKEpTQzo6VlRhYmxlQW5kQ291bnQ6OlZUYWJsZUFuZENvdW50KToKKyAg
ICAgICAgKEpTQzo6VlRhYmxlQW5kQ291bnQ6Om9wZXJhdG9yPCk6CisgICAgICAgIChKU0M6OlZU
YWJsZVNwZWN0cnVtOjpkdW1wKToKKyAgICAgICAgKiBoZWFwL1ZUYWJsZVNwZWN0cnVtLmg6IEFk
ZGVkLgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDExLTA4LTI0ICBGaWxpcCBQaXps
byAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlIHNv
bWV0aW1lcyBoYXMgdHdvIGhlYXAgb2JqZWN0IGNvbnN0cnVjdGlvbnMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiA5Mzc0NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDksNiArMTQ5LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvT2xkU3BhY2UuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9PbGRTcGFjZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdHJvbmcuaCBc
CisJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvVlRhYmxlU3BlY3RydW0uY3BwIFwKKwlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9WVGFibGVTcGVjdHJ1bS5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9XZWFrLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dyaXRl
QmFycmllclN1cHBvcnQuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Xcml0ZUJh
cnJpZXJTdXBwb3J0LmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZXhwCShyZXZpc2lvbiA5Mzc0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw2ICsxNzQsNyBAQCBfX1pOM0pTQzE0
U2FtcGxpbmdUaHJlYWQ1c3RhcnRFagogX19aTjNKU0MxNFNjb3BlQ2hhaW5Ob2RlNnNfaW5mb0UK
IF9fWk4zSlNDMTRUaW1lb3V0Q2hlY2tlcjEwZGlkVGltZU91dEVQTlNfOUV4ZWNTdGF0ZUUKIF9f
Wk4zSlNDMTRUaW1lb3V0Q2hlY2tlcjVyZXNldEV2CitfX1pOM0pTQzE0VlRhYmxlU3BlY3RydW01
Y291bnRFUE5TXzZKU0NlbGxFCiBfX1pOM0pTQzE0dGhyb3dUeXBlRXJyb3JFUE5TXzlFeGVjU3Rh
dGVFCiBfX1pOM0pTQzE1SlNXcmFwcGVyT2JqZWN0MTN2aXNpdENoaWxkcmVuRVJOU18xMVNsb3RW
aXNpdG9yRQogX19aTjNKU0MxNVdlYWtIYW5kbGVPd25lcjI2aXNSZWFjaGFibGVGcm9tT3BhcXVl
Um9vdHNFTlNfNkhhbmRsZUlOU183VW5rbm93bkVFRVB2Uk5TXzExU2xvdFZpc2l0b3JFCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8JKHJldmlzaW9uIDkzNzQ1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwkod29ya2luZyBj
b3B5KQpAQCAtNzksNiArNzksNyBAQCBTT1VSQ0VTICs9IFwKICAgICBoZWFwL01hcmtlZEJsb2Nr
LmNwcCBcCiAgICAgaGVhcC9OZXdTcGFjZS5jcHAgXAogICAgIGhlYXAvT2xkU3BhY2UuY3BwIFwK
KyAgICBoZWFwL1ZUYWJsZVNwZWN0cnVtLmNwcCBcCiAgICAgaGVhcC9Xcml0ZUJhcnJpZXJTdXBw
b3J0LmNwcCBcCiAgICAgZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcCBcCiAgICAgZGVi
dWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiA5Mzc0
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTY2LDYg
KzE5NjYsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPEZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0
aD0iLi5cLi5caGVhcFxWVGFibGVTcGVjdHJ1bS5oIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmlsZT4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8RmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXFZUYWJsZVNwZWN0cnVtLmNwcCIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGUKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cLi5caGVhcFxX
ZWFrLmgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPC9GaWxlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDkzNzQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUy
LDggQEAKIAkJMEY3NzAwOTAxNDAyRkRFNDAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NzAwOEUxNDAy
RkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNzcwMDkyMTQwMkZGM0MwMDc4RUIzOSAvKiBT
YW1wbGluZ0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAg
Ki87IH07CiAJCTBGOTYzQjM4MTNGQzZGRTkwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTYzQjM2MTNGQzZG
REUwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRkM4MTUxNTE0MDUxMTlCMDBDRkE2MDMgLyogVlRhYmxl
U3BlY3RydW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQzgxNTE0MTQwNTExOEQwMENGQTYwMyAvKiBWVGFibGVTcGVjdHJ1bS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQzgxNTE2MTQwNTExQjUw
MENGQTYwMyAvKiBWVGFibGVTcGVjdHJ1bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM4MTUxMjE0MDUxMTg2MDBDRkE2MDMgLyogVlRhYmxlU3Bl
Y3RydW0uY3BwICovOyB9OwogCQkwRkM4MTUwQTE0MDQzQkY1MDBDRkE2MDMgLyogV3JpdGVCYXJy
aWVyU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZDODE1MDkxNDA0M0JEMjAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkM4MTUwQjE0
MDQzQzBFMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM4MTUwODE0MDQzQkNBMDBDRkE2MDMg
LyogV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgKi87IH07CiAJCTE0MDAwNjc3MTJBNkY3ODMwMDY0
RDEyMyAvKiBPU0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTQwMDA2NzYxMkE2Rjc4MzAwNjREMTIzIC8qIE9TQWxsb2NhdG9yLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTczNyw2ICs3
MzksOCBAQAogCQkwRjc3MDA4RTE0MDJGREQ2MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhbXBsaW5nQ291bnRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjc3MDA5MTE0MDJGRjI4MDA3OEVCMzkgLyogU2Ft
cGxpbmdDb3VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNh
bXBsaW5nQ291bnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTYzQjM2
MTNGQzZGREUwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVmFsdWVQcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGQzgxNTEyMTQwNTExODYwMENGQTYwMyAvKiBWVGFibGVTcGVjdHJ1bS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWVGFibGVTcGVjdHJ1bS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzgxNTE0MTQwNTExOEQwMENGQTYwMyAvKiBWVGFibGVT
cGVjdHJ1bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWVGFibGVTcGVjdHJ1
bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkM4MTUwODE0MDQzQkNBMDBDRkE2
MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZDODE1MDkxNDA0M0JEMjAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGVCYXJyaWVyU3VwcG9ydC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDAwMDY3NjEyQTZGNzgzMDA2NEQxMjMg
LyogT1NBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT1NBbGxv
Y2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MDksNiArMTUxMyw4IEBA
CiAJCTE0MkUzMTJBMTM0RkYwQTYwMEFGQURCNSAvKiBoZWFwICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRkM4MTUxNDE0MDUxMThEMDBDRkE2MDMgLyog
VlRhYmxlU3BlY3RydW0uaCAqLywKKwkJCQkwRkM4MTUxMjE0MDUxMTg2MDBDRkE2MDMgLyogVlRh
YmxlU3BlY3RydW0uY3BwICovLAogCQkJCTBGQzgxNTA5MTQwNDNCRDIwMENGQTYwMyAvKiBXcml0
ZUJhcnJpZXJTdXBwb3J0LmggKi8sCiAJCQkJMEZDODE1MDgxNDA0M0JDQTAwQ0ZBNjAzIC8qIFdy
aXRlQmFycmllclN1cHBvcnQuY3BwICovLAogCQkJCTE0NkIxNERCMTJFQjVCMTIwMDFCRUMxQiAv
KiBDb25zZXJ2YXRpdmVSb290cy5jcHAgKi8sCkBAIC0yMjQ1LDYgKzIyNTEsNyBAQAogCQkJCTg2
RDNCMkM0MTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEMzRTYwRTE2RjVDRDAwQjM0NDYwIC8qIEFycmF5Q29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGQzgxNTE1MTQwNTExOUIwMENGQTYwMyAvKiBWVGFibGVT
cGVjdHJ1bS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDODE1MEExNDA0M0JGNTAwQ0ZBNjAzIC8q
IFdyaXRlQmFycmllclN1cHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTYzQjM4MTNGQzZG
RTkwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U3
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
ODU1LDYgKzI4NjIsNyBAQAogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJMEZDODE1MTYxNDA1
MTFCNTAwQ0ZBNjAzIC8qIFZUYWJsZVNwZWN0cnVtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
QzgxNTBCMTQwNDNDMEUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGNzcwMDkyMTQwMkZGM0MwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QkQxMDdFQzM3NjAwNDI3QTQ4IC8qIEFyZ0xp
c3QuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAkocmV2aXNpb24gOTM3NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzEyLDYgKzMxMiwxMSBAQCB2b2lkIEhlYXA6OmRlc3Ryb3ko
KQogICAgIHNocmluaygpOwogICAgIEFTU0VSVCghc2l6ZSgpKTsKICAgICAKKyNpZiBFTkFCTEUo
U0lNUExFX0hFQVBfUFJPRklMSU5HKQorICAgIG1fc2xvdFZpc2l0b3IubV92aXNpdGVkVHlwZUNv
dW50cy5kdW1wKHN0ZGVyciwgIlZpc2l0ZWQgVHlwZSBDb3VudHMiKTsKKyAgICBtX2Rlc3Ryb3ll
ZFR5cGVDb3VudHMuZHVtcChzdGRlcnIsICJEZXN0cm95ZWQgVHlwZSBDb3VudHMiKTsKKyNlbmRp
ZgorICAgIAogI2lmIEVOQUJMRShMQVpZX0JMT0NLX0ZSRUVJTkcpCiAgICAgcmVsZWFzZUZyZWVC
bG9ja3MoKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNp
b24gOTM3NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNCw2ICsxMjQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBn
ZXRDb25zZXJ2YXRpdmVSZWdpc3RlclJvb3RzKEhhc2hTZXQ8SlNDZWxsKj4mIHJvb3RzKTsKIAog
ICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKKyAgICAgICAg
CiAgICAgICAgIHR5cGVkZWYgSGFzaFNldDxNYXJrZWRCbG9jayo+OjppdGVyYXRvciBCbG9ja0l0
ZXJhdG9yOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWluRXh0cmFDb3N0ID0gMjU2
OwpAQCAtMTg1LDYgKzE4NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX2Js
b2NrRnJlZWluZ1RocmVhZFNob3VsZFF1aXQ7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTSU1QTEVf
SEVBUF9QUk9GSUxJTkcpCisgICAgICAgIFZUYWJsZVNwZWN0cnVtIG1fZGVzdHJveWVkVHlwZUNv
dW50czsKKyNlbmRpZgorCiAgICAgICAgIHNpemVfdCBtX2V4dHJhQ29zdDsKIAogICAgICAgICBQ
cm90ZWN0Q291bnRTZXQgbV9wcm90ZWN0ZWRWYWx1ZXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHJldmlzaW9uIDkzNzQ1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMs
MTAgQEAgdm9pZCBNYXJrU3RhY2s6OmFwcGVuZChDb25zZXJ2YXRpdmVSb290cwogCiBpbmxpbmUg
dm9pZCBTbG90VmlzaXRvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwpCiB7CisjaWYgRU5B
QkxFKFNJTVBMRV9IRUFQX1BST0ZJTElORykKKyAgICBtX3Zpc2l0ZWRUeXBlQ291bnRzLmNvdW50
KGNlbGwpOworI2VuZGlmCisKICAgICBBU1NFUlQoSGVhcDo6aXNNYXJrZWQoY2VsbCkpOwogICAg
IGlmIChjZWxsLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPCBDb21wb3VuZFR5cGUp
IHsKICAgICAgICAgY2VsbC0+SlNDZWxsOjp2aXNpdENoaWxkcmVuKCp0aGlzKTsKQEAgLTEwOCw2
ICsxMTIsOSBAQCB2b2lkIFNsb3RWaXNpdG9yOjpkcmFpbigpCiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGlmIChjZWxsLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPCBDb21w
b3VuZFR5cGUpIHsKKyNpZiBFTkFCTEUoU0lNUExFX0hFQVBfUFJPRklMSU5HKQorICAgICAgICAg
ICAgICAgIG1fdmlzaXRlZFR5cGVDb3VudHMuY291bnQoY2VsbCk7CisjZW5kaWYKICAgICAgICAg
ICAgICAgICBjZWxsLT5KU0NlbGw6OnZpc2l0Q2hpbGRyZW4oKnRoaXMpOwogICAgICAgICAgICAg
ICAgIGlmIChjdXJyZW50Lm1fdmFsdWVzID09IGVuZCkgewogICAgICAgICAgICAgICAgICAgICBt
X21hcmtTZXRzLnJlbW92ZUxhc3QoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtTdGFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtTdGFjay5oCShyZXZpc2lvbiA5Mzc0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtTdGFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAi
SGFuZGxlVHlwZXMuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXIu
aCIKKyNpbmNsdWRlICJWVGFibGVTcGVjdHJ1bS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC05Nyw2ICs5OSwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICB2b2lkIHJlc2V0KCk7CiAKKyNpZiBFTkFCTEUoU0lNUExFX0hFQVBfUFJP
RklMSU5HKQorICAgICAgICBWVGFibGVTcGVjdHJ1bSBtX3Zpc2l0ZWRUeXBlQ291bnRzOworI2Vu
ZGlmCisKICAgICBwcm90ZWN0ZWQ6CiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCiAgICAgICAg
IHN0YXRpYyB2b2lkIHZhbGlkYXRlU2V0KEpTVmFsdWUqLCBzaXplX3QpOwpAQCAtMTE0LDcgKzEy
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYXJrU3RhY2tBcnJheTxNYXJrU2V0PiBt
X21hcmtTZXRzOwogICAgICAgICBNYXJrU3RhY2tBcnJheTxKU0NlbGwqPiBtX3ZhbHVlczsKICAg
ICAgICAgSGFzaFNldDx2b2lkKj4gbV9vcGFxdWVSb290czsgLy8gSGFuZGxlLW93bmluZyBkYXRh
IHN0cnVjdHVyZXMgbm90IHZpc2libGUgdG8gdGhlIGdhcmJhZ2UgY29sbGVjdG9yLgotCisgICAg
ICAgIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBwdWJsaWM6CiAgICAgICAgIGJvb2wgbV9p
c0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCShyZXZpc2lvbiA5Mzc0NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcs
NiArNjcsOSBAQCB2b2lkIE1hcmtlZEJsb2NrOjpjYWxsRGVzdHJ1Y3RvcihKU0NlbGwqCiAgICAg
ICAgIHJldHVybjsKICAgICB2b2lkKiB2cHRyID0gY2VsbC0+dnB0cigpOwogICAgIGlmIChzcGVj
aWFsaXplZERlc3RydWN0b3JTdGF0ZSA9PSBBbGxGcmVlQ2VsbHNIYXZlT2JqZWN0cyB8fCB2cHRy
KSB7CisjaWYgRU5BQkxFKFNJTVBMRV9IRUFQX1BST0ZJTElORykKKyAgICAgICAgbV9oZWFwLT5t
X2Rlc3Ryb3llZFR5cGVDb3VudHMuY291bnRWUHRyKHZwdHIpOworI2VuZGlmCiAgICAgICAgIGlm
ICh2cHRyID09IGpzRmluYWxPYmplY3RWUHRyKSB7CiAgICAgICAgICAgICBKU0ZpbmFsT2JqZWN0
KiBvYmplY3QgPSByZWludGVycHJldF9jYXN0PEpTRmluYWxPYmplY3QqPihjZWxsKTsKICAgICAg
ICAgICAgIG9iamVjdC0+SlNGaW5hbE9iamVjdDo6fkpTRmluYWxPYmplY3QoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gOTM3NDUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzIsNyArMTcyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHNpemVfdCBvd25l
clNldE51bWJlcihjb25zdCBKU0NlbGwqKTsKICAgICAgICAgCiAgICAgICAgIHRlbXBsYXRlPERl
c3RydWN0b3JTdGF0ZSBkZXN0cnVjdG9yU3RhdGU+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNhbGxE
ZXN0cnVjdG9yKEpTQ2VsbCosIHZvaWQqIGpzRmluYWxPYmplY3RWUHRyKTsKKyAgICAgICAgdm9p
ZCBjYWxsRGVzdHJ1Y3RvcihKU0NlbGwqLCB2b2lkKiBqc0ZpbmFsT2JqZWN0VlB0cik7CiAgICAg
ICAgIAogICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdG9yU3RhdGUgZGVzdHJ1Y3RvclN0YXRlPgog
ICAgICAgICB2b2lkIHNwZWNpYWxpemVkUmVzZXQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1ZUYWJsZVNwZWN0cnVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9WVGFibGVTcGVjdHJ1bS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9WVGFibGVTcGVjdHJ1bS5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWVGFibGVTcGVjdHJ1bS5oIgorCisj
aW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlIDxh
bGdvcml0aG0+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSA8
ZGxmY24uaD4KKyNlbmRpZgorCituYW1lc3BhY2UgSlNDIHsKKworVlRhYmxlU3BlY3RydW06OlZU
YWJsZVNwZWN0cnVtKCkKK3sKK30KKworVlRhYmxlU3BlY3RydW06On5WVGFibGVTcGVjdHJ1bSgp
Cit7Cit9CisKK3ZvaWQgVlRhYmxlU3BlY3RydW06OmNvdW50VlB0cih2b2lkKiB2VGFibGVQb2lu
dGVyKQoreworICAgIHN0ZDo6cGFpcjxIYXNoTWFwPHZvaWQqLCB1bnNpZ25lZCBsb25nPjo6aXRl
cmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fbWFwLmFkZCh2VGFibGVQb2ludGVyLCAxKTsKKyAgICBp
ZiAoIXJlc3VsdC5zZWNvbmQpCisgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kKys7Cit9CisK
K3ZvaWQgVlRhYmxlU3BlY3RydW06OmNvdW50KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBjb3VudFZQ
dHIoY2VsbC0+dnB0cigpKTsKK30KKworc3RydWN0IFZUYWJsZUFuZENvdW50IHsKKyAgICB2b2lk
KiB2dGFibGU7CisgICAgdW5zaWduZWQgbG9uZyBjb3VudDsKKyAgICAKKyAgICBWVGFibGVBbmRD
b3VudCgpIHsgfQorICAgIAorICAgIFZUYWJsZUFuZENvdW50KHZvaWQqIHZ0YWJsZSwgdW5zaWdu
ZWQgbG9uZyBjb3VudCkKKyAgICAgICAgOiB2dGFibGUodnRhYmxlKQorICAgICAgICAsIGNvdW50
KGNvdW50KQorICAgIHsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgVlRh
YmxlQW5kQ291bnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGNvdW50ICE9IG90
aGVyLmNvdW50KQorICAgICAgICAgICAgcmV0dXJuIGNvdW50IDwgb3RoZXIuY291bnQ7CisgICAg
ICAgIHJldHVybiB2dGFibGUgPiBvdGhlci52dGFibGU7IC8vIHRoaXMgcmVzdWx0cyBpbiBsb3dl
ci1hZGRyZXNzZWQgdnRhYmxlcyBiZWluZyBwcmludGVkIGZpcnN0CisgICAgfQorfTsKKwordm9p
ZCBWVGFibGVTcGVjdHJ1bTo6ZHVtcChGSUxFKiBvdXRwdXQsIGNvbnN0IGNoYXIqIGNvbW1lbnQp
Cit7CisgICAgZnByaW50ZihvdXRwdXQsICIlczpcbiIsIGNvbW1lbnQpOworICAgIAorICAgIEhh
c2hNYXA8dm9pZCosIHVuc2lnbmVkIGxvbmc+OjppdGVyYXRvciBiZWdpbiA9IG1fbWFwLmJlZ2lu
KCk7CisgICAgSGFzaE1hcDx2b2lkKiwgdW5zaWduZWQgbG9uZz46Oml0ZXJhdG9yIGVuZCA9IG1f
bWFwLmVuZCgpOworICAgIAorICAgIFZlY3RvcjxWVGFibGVBbmRDb3VudCwgMD4gbGlzdDsKKyAg
ICAKKyAgICBmb3IgKEhhc2hNYXA8dm9pZCosIHVuc2lnbmVkIGxvbmc+OjppdGVyYXRvciBpdGVy
ID0gYmVnaW47IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCisgICAgICAgIGxpc3QuYXBwZW5kKFZUYWJs
ZUFuZENvdW50KGl0ZXItPmZpcnN0LCBpdGVyLT5zZWNvbmQpKTsKKyAgICAKKyAgICBzdGQ6OnNv
cnQobGlzdC5iZWdpbigpLCBsaXN0LmVuZCgpKTsKKyAgICAKKyAgICBmb3IgKHNpemVfdCBpbmRl
eCA9IGxpc3Quc2l6ZSgpOyBpbmRleC0tID4gMDspIHsKKyAgICAgICAgVlRhYmxlQW5kQ291bnQg
aXRlbSA9IGxpc3QuYXQoaW5kZXgpOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgRGxfaW5m
byBpbmZvOworICAgICAgICBpZiAoZGxhZGRyKGl0ZW0udnRhYmxlLCAmaW5mbykpIHsKKyAgICAg
ICAgICAgIGNoYXIqIGZpbmRSZXN1bHQgPSBzdHJyY2hyKGluZm8uZGxpX2ZuYW1lLCAnLycpOwor
ICAgICAgICAgICAgY29uc3QgY2hhciogc3RyaXBwZWRGaWxlTmFtZTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgaWYgKGZpbmRSZXN1bHQpCisgICAgICAgICAgICAgICAgc3RyaXBwZWRGaWxl
TmFtZSA9IGZpbmRSZXN1bHQgKyAxOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHN0cmlwcGVkRmlsZU5hbWUgPSBpbmZvLmRsaV9mbmFtZTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgZnByaW50ZihvdXRwdXQsICIgICAgJXM6JXMoJXApOiAlbHVcbiIsIHN0cmlwcGVkRmls
ZU5hbWUsIGluZm8uZGxpX3NuYW1lLCBpdGVtLnZ0YWJsZSwgaXRlbS5jb3VudCk7CisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIGZwcmludGYob3V0cHV0
LCAiICAgICVwOiAlbHVcbiIsIGl0ZW0udnRhYmxlLCBpdGVtLmNvdW50KTsKKyAgICB9CisgICAg
CisgICAgZmZsdXNoKG91dHB1dCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvVlRhYmxlU3BlY3RydW0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9WVGFibGVTcGVjdHJ1bS5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvVlRhYmxlU3BlY3RydW0uaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIFZUYWJsZVNwZWN0cnVtX2gKKyNkZWZpbmUgVlRhYmxlU3BlY3Ry
dW1faAorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNDZWxsOworCitjbGFzcyBWVGFibGVTcGVjdHJ1bSB7
CitwdWJsaWM6CisgICAgVlRhYmxlU3BlY3RydW0oKTsKKyAgICB+VlRhYmxlU3BlY3RydW0oKTsK
KyAgICAKKyAgICB2b2lkIGNvdW50VlB0cih2b2lkKik7CisgICAgdm9pZCBjb3VudChKU0NlbGwq
KTsKKyAgICAKKyAgICB2b2lkIGR1bXAoRklMRSogb3V0cHV0LCBjb25zdCBjaGFyKiBjb21tZW50
KTsKKyAgICAKK3ByaXZhdGU6CisgICAgSGFzaE1hcDx2b2lkKiwgdW5zaWduZWQgbG9uZz4gbV9t
YXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFZUYWJsZVNwZWN0cnVt
X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDkzNzQ1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkp
CkBAIC05NjMsNiArOTYzLDEwIEBACiAjZGVmaW5lIEVOQUJMRV9WRVJCT1NFX1ZBTFVFX1BST0ZJ
TEUgMAogI2VuZGlmCiAKKyNpZiAhZGVmaW5lZChFTkFCTEVfU0lNUExFX0hFQVBfUFJPRklMSU5H
KQorI2RlZmluZSBFTkFCTEVfU0lNUExFX0hFQVBfUFJPRklMSU5HIDAKKyNlbmRpZgorCiAvKiBD
b3VudHMgdXNlcyBvZiB3cml0ZSBiYXJyaWVycyB1c2luZyBzYW1wbGluZyBjb3VudGVycy4gQmUg
c3VyZSB0byBhbHNvCiAgICBzZXQgRU5BQkxFX1NBTVBMSU5HX0NPVU5URVJTIHRvIDEuICovCiAj
aWYgIWRlZmluZWQoRU5BQkxFX1dSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>