<?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>114987</bug_id>
          
          <creation_ts>2013-04-22 13:03:03 -0700</creation_ts>
          <short_desc>fourthTier: Create an equivalent of Structure::get() that can work from a compilation thread</short_desc>
          <delta_ts>2013-04-22 17:15:51 -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>
          
          <blocked>112839</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>879396</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-22 13:03:03 -0700</bug_when>
    <thetext>r148570 sort of did most of this, but we need to finish it.  Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879400</commentid>
    <comment_count>1</comment_count>
      <attachid>199095</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-22 13:10:39 -0700</bug_when>
    <thetext>Created attachment 199095
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879403</commentid>
    <comment_count>2</comment_count>
      <attachid>199095</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-04-22 13:19:24 -0700</bug_when>
    <thetext>Comment on attachment 199095
the patch

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

&gt; Source/JavaScriptCore/ChangeLog:73
&gt; +2013-04-22  Filip Pizlo  &lt;fpizlo@apple.com&gt;
&gt; +
&gt; +        * bytecode/GetByIdStatus.cpp:
&gt; +        (JSC::GetByIdStatus::computeFromLLInt):
&gt; +        (JSC::GetByIdStatus::computeForChain):
&gt; +        (JSC::GetByIdStatus::computeFor):
&gt; +        * bytecode/PutByIdStatus.cpp:
&gt; +        (JSC::PutByIdStatus::computeFromLLInt):
&gt; +        (JSC::PutByIdStatus::computeFor):
&gt; +        * runtime/PropertyMapHashTable.h:
&gt; +        (PropertyTable):
&gt; +        (JSC::PropertyTable::findConcurrently):
&gt; +        (JSC):
&gt; +        (JSC::PropertyTable::add):
&gt; +        (JSC::PropertyTable::remove):
&gt; +        (JSC::PropertyTable::reinsert):
&gt; +        (JSC::PropertyTable::rehash):
&gt; +        * runtime/PropertyTable.cpp:
&gt; +        (JSC::PropertyTable::PropertyTable):
&gt; +        * runtime/Structure.cpp:
&gt; +        (JSC::Structure::findStructuresAndMapForMaterialization):
&gt; +        (JSC::Structure::getConcurrently):
&gt; +        * runtime/Structure.h:

Duplicate changelog

&gt; Source/JavaScriptCore/runtime/PropertyMapHashTable.h:366
&gt; +    Locker locker(m_lock);

So add() locks, what about delete?  Do we need that to lock?

&gt; Source/WTF/wtf/Locker.h:43
&gt; +    Locker(AssumeLockedTag)
&gt; +        : m_lockable(0)
&gt; +    {
&gt; +    }

I wonder if there&apos;s someway we could add an assertion to make sure this is the case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879404</commentid>
    <comment_count>3</comment_count>
      <attachid>199095</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-22 13:20:10 -0700</bug_when>
    <thetext>Comment on attachment 199095
the patch

As discussed in person, there is a race here between the compiler doing a lookup and the mutator stealing a property table from one structure and giving it to another.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879410</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-22 13:32:40 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 199095 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=199095&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:73
&gt; &gt; +2013-04-22  Filip Pizlo  &lt;fpizlo@apple.com&gt;
&gt; &gt; +
&gt; &gt; +        * bytecode/GetByIdStatus.cpp:
&gt; &gt; +        (JSC::GetByIdStatus::computeFromLLInt):
&gt; &gt; +        (JSC::GetByIdStatus::computeForChain):
&gt; &gt; +        (JSC::GetByIdStatus::computeFor):
&gt; &gt; +        * bytecode/PutByIdStatus.cpp:
&gt; &gt; +        (JSC::PutByIdStatus::computeFromLLInt):
&gt; &gt; +        (JSC::PutByIdStatus::computeFor):
&gt; &gt; +        * runtime/PropertyMapHashTable.h:
&gt; &gt; +        (PropertyTable):
&gt; &gt; +        (JSC::PropertyTable::findConcurrently):
&gt; &gt; +        (JSC):
&gt; &gt; +        (JSC::PropertyTable::add):
&gt; &gt; +        (JSC::PropertyTable::remove):
&gt; &gt; +        (JSC::PropertyTable::reinsert):
&gt; &gt; +        (JSC::PropertyTable::rehash):
&gt; &gt; +        * runtime/PropertyTable.cpp:
&gt; &gt; +        (JSC::PropertyTable::PropertyTable):
&gt; &gt; +        * runtime/Structure.cpp:
&gt; &gt; +        (JSC::Structure::findStructuresAndMapForMaterialization):
&gt; &gt; +        (JSC::Structure::getConcurrently):
&gt; &gt; +        * runtime/Structure.h:
&gt; 
&gt; Duplicate changelog
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/PropertyMapHashTable.h:366
&gt; &gt; +    Locker locker(m_lock);
&gt; 
&gt; So add() locks, what about delete?  Do we need that to lock?
&gt; 
&gt; &gt; Source/WTF/wtf/Locker.h:43
&gt; &gt; +    Locker(AssumeLockedTag)
&gt; &gt; +        : m_lockable(0)
&gt; &gt; +    {
&gt; &gt; +    }
&gt; 
&gt; I wonder if there&apos;s someway we could add an assertion to make sure this is the case

I don&apos;t think there is.  The point is that you would use this in constructors, for example: you just allocated an object and you want to tell it &quot;no, I didn&apos;t grab a lock, and yes, that is correct&quot; because you know that since you just allocated it, it could not have escaped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879423</commentid>
    <comment_count>5</comment_count>
      <attachid>199102</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-22 13:54:09 -0700</bug_when>
    <thetext>Created attachment 199102
the patch

Not yet ready for review because I want to rerun perf tests and such.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879452</commentid>
    <comment_count>6</comment_count>
      <attachid>199113</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-22 15:03:50 -0700</bug_when>
    <thetext>Created attachment 199113
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879471</commentid>
    <comment_count>7</comment_count>
      <attachid>199113</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-04-22 15:26:40 -0700</bug_when>
    <thetext>Comment on attachment 199113
the patch

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

&gt; Source/JavaScriptCore/runtime/Structure.cpp:274
&gt; +        createPropertyMap(AssumeLocked, vm, numberOfSlotsForLastOffset(m_offset, m_inlineCapacity));

You need to have a lock here through the end of the function in the create case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879472</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-22 15:28:48 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 199113 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=199113&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/Structure.cpp:274
&gt; &gt; +        createPropertyMap(AssumeLocked, vm, numberOfSlotsForLastOffset(m_offset, m_inlineCapacity));
&gt; 
&gt; You need to have a lock here through the end of the function in the create case.

Threads, man.  How do they work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879474</commentid>
    <comment_count>9</comment_count>
      <attachid>199118</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-22 15:34:20 -0700</bug_when>
    <thetext>Created attachment 199118
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879506</commentid>
    <comment_count>10</comment_count>
      <attachid>199118</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-22 16:18:30 -0700</bug_when>
    <thetext>Comment on attachment 199118
the patch

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

If we use findStructuresAndMapForMaterialization in more places, let&apos;s add a helper object that unlocks automatically for you when it goes out of scope.

&gt; Source/JavaScriptCore/ChangeLog:45
&gt; +2013-04-22  Filip Pizlo  &lt;fpizlo@apple.com&gt;

M-x Delete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879509</commentid>
    <comment_count>11</comment_count>
      <attachid>199127</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-22 16:21:22 -0700</bug_when>
    <thetext>Created attachment 199127
patch for landing

Deleted the part of the ChangeLog that needed deleting.  Still running LayoutTests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879539</commentid>
    <comment_count>12</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-22 17:15:51 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/148936</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199095</attachid>
            <date>2013-04-22 13:10:39 -0700</date>
            <delta_ts>2013-04-22 13:54:09 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>20915</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ4OTA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBA
CisyMDEzLTA0LTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogQ3JlYXRlIGFuIGVxdWl2YWxlbnQgb2YgU3RydWN0dXJlOjpnZXQoKSB0aGF0
IGNhbiB3b3JrIGZyb20gYSBjb21waWxhdGlvbiB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDk4NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjb21wbGV0ZXMgdGhlIHdv
cmsgc3RhcnRlZCBieSByMTQ4NTcwLiBUaGF0IHBhdGNoIG1hZGUgaXQgcG9zc2libGUgdG8gZG8K
KyAgICAgICAgU3RydWN0dXJlOjpnZXQoKSB3aXRob3V0IG1vZGlmeWluZyBTdHJ1Y3R1cmUuIFRo
aXMgcGF0Y2ggdGFrZXMgdGhpcyBmdXJ0aGVyLCBhbmQKKyAgICAgICAgbWFrZXMgUHJvcGVydHlU
YWJsZSB0aHJlYWQtc2FmZSAoZm9yIG5vbi11bmNhY2hlYWJsZS1kaWN0aW9uYXJpZXMpIGFuZCBj
cmVhdGVzCisgICAgICAgIFN0cnVjdHVyZTo6Z2V0Q29uY3VycmVudGx5KCksIHdoaWNoIG5vdCBv
bmx5IGRvZXNuJ3QgbW9kaWZ5IHN0cnVjdHVyZSBidXQgaXMKKyAgICAgICAgdG90YWxseSBzYWZl
IHRvIGNhbGwgZnJvbSBhIHRocmVhZC4gQWxzbyBtYWtlcyBzdXJlIHRoYXQgYWxsIG9mIHRoZSBw
bGFjZXMgd2hlcmUKKyAgICAgICAgdGhlIERGRyB3b3VsZCBjYWxsIFN0cnVjdHVyZTo6Z2V0KCks
IGl0IG5vdyBjYWxscyBTdHJ1Y3R1cmU6OmdldENvbmN1cnJlbnRseSgpLgorCisgICAgICAgIE9u
IHRoZSBTdHJ1Y3R1cmUgc2lkZSwgdGhpcyBtZWFucyB0aGF0IFByb3BlcnR5VGFibGU6OmFkZCgp
IG5vdyBuZWVkcyBsb2NraW5nLgorICAgICAgICBQZXJmb3JtYW5jZSB0ZXN0cyBzaG93IHRoaXMg
dG8gYmUgbmV1dHJhbC4gUHJvcGVydHlUYWJsZTo6cmVtb3ZlKCkgZG9lcyBub3QgbmVlZAorICAg
ICAgICBsb2NraW5nLCBzaW5jZSB3ZSBqdXN0IGRpc2FsbG93IGNhbGxzIHRvIFN0cnVjdHVyZTo6
Z2V0Q29uY3VycmVudGx5KCkgZm9yCisgICAgICAgIHVuY2FjaGVhYmxlIGRpY3Rpb25hcmllcy4g
Tm90ZSB0aGF0IHdlIHdvdWxkIG5vdCBoYXZlIHRvIHJldmlzaXQgdGhpcyBldmVuIGlmIHdlCisg
ICAgICAgIGRpZCBtYWtlIGRlbGV0ZSdzIGxlYXZlIHN0cnVjdHVyZXMgaW4gYSBjYWNoZWFibGUg
c3RhdGUgLS0gc2luY2UgaWYgd2UgZGlkIHRoYXQsCisgICAgICAgIHdlIHdvdWxkIGNyZWF0ZSBh
IG5ldyBQcm9wZXJ0eVRhYmxlLiBUaGUgb25seSByZWFzb24gd2h5IFByb3BlcnR5VGFibGU6OmFk
ZCgpCisgICAgICAgIG5lZWRzIGxvY2tpbmcgaXMgdGhhdCB3ZSBtaWdodCBiZSB0cnlpbmcgdG8g
Y2FjaGUgYSByZWFkIGZyb20gYW4gb2JqZWN0IHRoYXQKKyAgICAgICAgYWxyZWFkeSBiZWNhbWUg
YSBkaWN0aW9uYXJ5LiBJdCdzIHJhcmUsIGJ1dCBpdCBkb2VzIGhhcHBlbi4KKworICAgICAgICAq
IGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVz
Ojpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0
ZUZvckNoYWluKToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6Cisg
ICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5
SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVz
Ojpjb21wdXRlRm9yKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6aXNTdHJpbmdQcm90b3R5cGVNZXRob2RTYW5lKToKKyAg
ICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmg6CisgICAgICAgIChQcm9wZXJ0
eVRhYmxlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6ZmluZENvbmN1cnJlbnRseSk6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjphZGQpOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpyZW1vdmUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eVRhYmxlOjpyZWluc2VydCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OnJlaGFzaCk6
CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJv
cGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmZpbmRTdHJ1Y3R1cmVzQW5kTWFwRm9yTWF0
ZXJpYWxpemF0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXRDb25jdXJyZW50bHkp
OgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OmdldENvbmN1cnJlbnRseSk6CisKKzIwMTMtMDQtMjIgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KKworICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgor
ICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAg
KEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvckNoYWluKToKKyAgICAgICAgKEpTQzo6R2V0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgor
ICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBydW50
aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmg6CisgICAgICAgIChQcm9wZXJ0eVRhYmxlKToKKyAg
ICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6ZmluZENvbmN1cnJlbnRseSk6CisgICAgICAgIChK
U0MpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjphZGQpOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eVRhYmxlOjpyZW1vdmUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpyZWlu
c2VydCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OnJlaGFzaCk6CisgICAgICAgICog
cnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6
UHJvcGVydHlUYWJsZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6OmZpbmRTdHJ1Y3R1cmVzQW5kTWFwRm9yTWF0ZXJpYWxpemF0aW9u
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXRDb25jdXJyZW50bHkpOgorICAgICAgICAq
IHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldENv
bmN1cnJlbnRseSk6CisKIDIwMTMtMDQtMjEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBmb3VydGhUaWVyOiBXZWJLaXQncyBidWlsZCBzeXN0ZW0gc2hvdWxkIHJl
bGluayBKYXZhU2NyaXB0Q29yZSBpZiBMTFZNJ3MgbGlicmFyaWVzIGNoYW5nZWQgYnV0IGl0cyBo
ZWFkZXJzIGRpZG4ndApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9HZXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTQ4ODUzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3
ICs1MSw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20KICAgICAK
ICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzSWdub3JlZDsKICAgICBKU0NlbGwqIHNwZWNpZmljVmFs
dWU7Ci0gICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCisgICAgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkoCiAgICAgICAg
ICpwcm9maWxlZEJsb2NrLT52bSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQsIHNwZWNpZmlj
VmFsdWUpOwogICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQogICAgICAgICBzcGVj
aWZpY1ZhbHVlID0gMDsKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBHZXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yQ2hhaW4oR2V0QgogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXNJZ25vcmVkOwogICAgIEpT
Q2VsbCogc3BlY2lmaWNWYWx1ZTsKICAgICAgICAgCi0gICAgcmVzdWx0Lm1fb2Zmc2V0ID0gY3Vy
cmVudFN0cnVjdHVyZS0+Z2V0KAorICAgIHJlc3VsdC5tX29mZnNldCA9IGN1cnJlbnRTdHJ1Y3R1
cmUtPmdldENvbmN1cnJlbnRseSgKICAgICAgICAgKnByb2ZpbGVkQmxvY2stPnZtKCksIGlkZW50
LCBhdHRyaWJ1dGVzSWdub3JlZCwgc3BlY2lmaWNWYWx1ZSk7CiAgICAgaWYgKGN1cnJlbnRTdHJ1
Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQogICAgICAgICBzcGVjaWZpY1ZhbHVlID0gMDsKQEAgLTE2
Myw3ICsxNjMsNyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAg
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3R1YkluZm8udS5nZXRCeUlkU2VsZi5iYXNl
T2JqZWN0U3RydWN0dXJlLmdldCgpOwogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzSWdub3Jl
ZDsKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgICAgICByZXN1bHQubV9vZmZz
ZXQgPSBzdHJ1Y3R1cmUtPmdldFdpdGhvdXRNYXRlcmlhbGl6aW5nKAorICAgICAgICByZXN1bHQu
bV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSgKICAgICAgICAgICAgICpwcm9m
aWxlZEJsb2NrLT52bSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQsIHNwZWNpZmljVmFsdWUp
OwogICAgICAgICBpZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAgICAgIHNw
ZWNpZmljVmFsdWUgPSAwOwpAQCAtMTg4LDcgKzE4OCw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJ
ZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgIAogICAgICAgICAgICAgdW5zaWduZWQg
YXR0cmlidXRlc0lnbm9yZWQ7CiAgICAgICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0g
ICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBteU9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0V2l0aG91
dE1hdGVyaWFsaXppbmcoCisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBteU9mZnNldCA9IHN0
cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KAogICAgICAgICAgICAgICAgICpwcm9maWxlZEJsb2Nr
LT52bSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQsIHNwZWNpZmljVmFsdWUpOwogICAgICAg
ICAgICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgICAgICAgICAgc3Bl
Y2lmaWNWYWx1ZSA9IDA7CkBAIC0yNzMsNyArMjczLDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKAogICAgIHJlc3VsdC5tX3dhc1NlZW5JbkpJVCA9IGZhbHNlOyAv
LyBUbyBteSBrbm93bGVkZ2Ugbm9ib2R5IHRoYXQgdXNlcyBjb21wdXRlRm9yKFZNJiwgU3RydWN0
dXJlKiwgSWRlbnRpZmllciYpIHJlYWRzIHRoaXMgZmllbGQsIGJ1dCBJIG1pZ2h0IGFzIHdlbGwg
YmUgaG9uZXN0OiBubywgaXQgd2Fzbid0IHNlZW4gaW4gdGhlIEpJVCwgc2luY2UgSSBjb21wdXRl
ZCBpdCBzdGF0aWNhbGx5LgogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgSlNDZWxsKiBz
cGVjaWZpY1ZhbHVlOwotICAgIHJlc3VsdC5tX29mZnNldCA9IHN0cnVjdHVyZS0+Z2V0V2l0aG91
dE1hdGVyaWFsaXppbmcodm0sIGlkZW50LCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAg
ICByZXN1bHQubV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSh2bSwgaWRlbnQs
IGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwogICAgIGlmICghaXNWYWxpZE9mZnNldChyZXN1
bHQubV9vZmZzZXQpKQogICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRo
KTsgLy8gSXQncyBwcm9iYWJseSBhIHByb3RvdHlwZSBsb29rdXAuIEdpdmUgdXAgb24gbGlmZSBm
b3Igbm93LCBldmVuIHRob3VnaCB3ZSBjb3VsZCB0b3RhbGx5IGJlIHdheSBzbWFydGVyIGFib3V0
IGl0LgogICAgIGlmIChhdHRyaWJ1dGVzICYgQWNjZXNzb3IpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxNDg4
NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3Rh
dHVzOjpjb21wdXRlRnJvbQogICAgIAogICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9
PSBMTEludDo6Z2V0T3Bjb2RlKGxsaW50X29wX3B1dF9ieV9pZCkKICAgICAgICAgfHwgaW5zdHJ1
Y3Rpb25bMF0udS5vcGNvZGUgPT0gTExJbnQ6OmdldE9wY29kZShsbGludF9vcF9wdXRfYnlfaWRf
b3V0X29mX2xpbmUpKSB7Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVy
ZS0+Z2V0V2l0aG91dE1hdGVyaWFsaXppbmcoKnByb2ZpbGVkQmxvY2stPnZtKCksIGlkZW50KTsK
KyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25jdXJyZW50
bHkoKnByb2ZpbGVkQmxvY2stPnZtKCksIGlkZW50KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zm
c2V0KG9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0
aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICAgICAgCkBAIC02OCw3ICs2OCw3IEBA
IFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20KICAgICBBU1NFUlQobmV3
U3RydWN0dXJlKTsKICAgICBBU1NFUlQoY2hhaW4pOwogICAgIAotICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCA9IG5ld1N0cnVjdHVyZS0+Z2V0V2l0aG91dE1hdGVyaWFsaXppbmcoKnByb2ZpbGVk
QmxvY2stPnZtKCksIGlkZW50KTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBuZXdTdHJ1
Y3R1cmUtPmdldENvbmN1cnJlbnRseSgqcHJvZmlsZWRCbG9jay0+dm0oKSwgaWRlbnQpOwogICAg
IGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKQogICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1
cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICAKQEAgLTEwMiw3
ICsxMDIsNyBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAg
ICAgIAogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF9yZXBsYWNlOiB7CiAgICAgICAgIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCA9Ci0gICAgICAgICAgICBzdHViSW5mby51LnB1dEJ5SWRSZXBsYWNl
LmJhc2VPYmplY3RTdHJ1Y3R1cmUtPmdldFdpdGhvdXRNYXRlcmlhbGl6aW5nKAorICAgICAgICAg
ICAgc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5nZXRDb25j
dXJyZW50bHkoCiAgICAgICAgICAgICAgICAgKnByb2ZpbGVkQmxvY2stPnZtKCksIGlkZW50KTsK
ICAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewogICAgICAgICAgICAgcmV0dXJu
IFB1dEJ5SWRTdGF0dXMoCkBAIC0xMTgsNyArMTE4LDcgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKAogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF90cmFuc2l0aW9u
X2RpcmVjdDogewogICAgICAgICBBU1NFUlQoc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5w
cmV2aW91c1N0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0
ZWQoKSk7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IAotICAgICAgICAgICAgc3R1
YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1Y3R1cmUtPmdldFdpdGhvdXRNYXRlcmlhbGl6
aW5nKAorICAgICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1Y3R1cmUt
PmdldENvbmN1cnJlbnRseSgKICAgICAgICAgICAgICAgICAqcHJvZmlsZWRCbG9jay0+dm0oKSwg
aWRlbnQpOwogICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7CiAgICAgICAgICAg
ICByZXR1cm4gUHV0QnlJZFN0YXR1cygKQEAgLTE1Miw3ICsxNTIsNyBAQCBQdXRCeUlkU3RhdHVz
IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgCiAgICAgdW5zaWduZWQgYXR0cmlidXRl
czsKICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWVJZ25vcmVkOwotICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0V2l0aG91dE1hdGVyaWFsaXppbmcoCisgICAgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkoCiAgICAgICAgIHZt
LCBpZGVudCwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZUlnbm9yZWQpOwogICAgIGlmIChpc1Zh
bGlkT2Zmc2V0KG9mZnNldCkpIHsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiAoQWNjZXNzb3Ig
fCBSZWFkT25seSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAJKHJldmlzaW9uIDE0ODg1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjEsNyArMTAyMSw3IEBAIHBy
aXZhdGU6CiAgICAgewogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzVW51c2VkOwogICAgICAg
ICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9
IHN0cmluZ1Byb3RvdHlwZVN0cnVjdHVyZS0+Z2V0KAorICAgICAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQgPSBzdHJpbmdQcm90b3R5cGVTdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSgKICAgICAg
ICAgICAgIHZtKCksIGlkZW50LCBhdHRyaWJ1dGVzVW51c2VkLCBzcGVjaWZpY1ZhbHVlKTsKICAg
ICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hU
YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5TWFwSGFzaFRhYmxlLmgJKHJldmlzaW9uIDE0ODg1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVk
ZSAiUHJvcGVydHlPZmZzZXQuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJX
cml0ZUJhcnJpZXIuaCIKKyNpbmNsdWRlIDx3dGYvQnl0ZVNwaW5Mb2NrLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hUYWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTg3LDcgKzg4LDExIEBAIHN0cnVjdCBQcm9wZXJ0eU1hcEVu
dHJ5IHsKIH07CiAKIGNsYXNzIFByb3BlcnR5VGFibGUgOiBwdWJsaWMgSlNDZWxsIHsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIEJ5dGVTcGluTG9jayBMb2NrOworICAgIHR5cGVkZWYgQnl0ZVNwaW5M
b2NrZXIgTG9ja2VyOwogCitwcml2YXRlOgogICAgIC8vIFRoaXMgaXMgdGhlIGltcGxlbWVudGF0
aW9uIGZvciAnaXRlcmF0b3InIGFuZCAnY29uc3RfaXRlcmF0b3InLAogICAgIC8vIHVzZWQgZm9y
IGl0ZXJhdGluZyBvdmVyIHRoZSB0YWJsZSBpbiBpbnNlcnRpb24gb3JkZXIuCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KQEAgLTE2OCw2ICsxNzMsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBGaW5k
IGEgdmFsdWUgaW4gdGhlIHRhYmxlLgogICAgIGZpbmRfaXRlcmF0b3IgZmluZChjb25zdCBLZXlU
eXBlJik7CisgICAgYm9vbCBmaW5kQ29uY3VycmVudGx5KGNvbnN0IEtleVR5cGUmLCBQcm9wZXJ0
eU9mZnNldCYsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsK
ICAgICBmaW5kX2l0ZXJhdG9yIGZpbmRXaXRoU3RyaW5nKGNvbnN0IEtleVR5cGUmKTsKICAgICAv
LyBBZGQgYSB2YWx1ZSB0byB0aGUgdGFibGUKICAgICBlbnVtIEVmZmVjdE9uUHJvcGVydHlPZmZz
ZXQgeyBQcm9wZXJ0eU9mZnNldE1heUNoYW5nZSwgUHJvcGVydHlPZmZzZXRNdXN0Tm90Q2hhbmdl
IH07CkBAIC0yMDgsMTAgKzIxNCwxMCBAQCBwcml2YXRlOgogCiAgICAgUHJvcGVydHlUYWJsZShj
b25zdCBQcm9wZXJ0eVRhYmxlJik7CiAgICAgLy8gVXNlZCB0byBpbnNlcnQgYSB2YWx1ZSBrbm93
biBub3QgdG8gYmUgaW4gdGhlIHRhYmxlLCBhbmQgd2hlcmUgd2Uga25vdyBjYXBhY2l0eSB0byBi
ZSBhdmFpbGFibGUuCi0gICAgdm9pZCByZWluc2VydChjb25zdCBWYWx1ZVR5cGUmIGVudHJ5KTsK
KyAgICB2b2lkIHJlaW5zZXJ0KGNvbnN0IExvY2tlciYsIGNvbnN0IFZhbHVlVHlwZSYgZW50cnkp
OwogCiAgICAgLy8gUmVoYXNoIHRoZSB0YWJsZS4gIFVzZWQgdG8gZ3Jvdywgb3IgdG8gcmVjb3Zl
ciBkZWxldGVkIHNsb3RzLgotICAgIHZvaWQgcmVoYXNoKHVuc2lnbmVkIG5ld0NhcGFjaXR5KTsK
KyAgICB2b2lkIHJlaGFzaChjb25zdCBMb2NrZXImLCB1bnNpZ25lZCBuZXdDYXBhY2l0eSk7CiAK
ICAgICAvLyBUaGUgY2FwYWNpdHkgb2YgdGhlIHRhYmxlIG9mIHZhbHVlcyBpcyBoYWxmIG9mIHRo
ZSBzaXplIG9mIHRoZSBpbmRleC4KICAgICB1bnNpZ25lZCB0YWJsZUNhcGFjaXR5KCkgY29uc3Q7
CkBAIC0yNTAsNiArMjU2LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCogbV9pbmRleDsKICAg
ICB1bnNpZ25lZCBtX2tleUNvdW50OwogICAgIHVuc2lnbmVkIG1fZGVsZXRlZENvdW50OworICAg
IEJ5dGVTcGluTG9jayBtX2xvY2s7CiAgICAgT3duUHRyPCBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+
ID4gbV9kZWxldGVkT2Zmc2V0czsKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBNaW5pbXVt
VGFibGVTaXplID0gODsKQEAgLTMwOCw2ICszMTUsMTkgQEAgaW5saW5lIFByb3BlcnR5VGFibGU6
OmZpbmRfaXRlcmF0b3IgUHJvcAogICAgIH0KIH0KIAoraW5saW5lIGJvb2wgUHJvcGVydHlUYWJs
ZTo6ZmluZENvbmN1cnJlbnRseShjb25zdCBLZXlUeXBlJiBrZXksIFByb3BlcnR5T2Zmc2V0JiBv
ZmZzZXQsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQorewor
ICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9
IGZpbmQoa2V5KS5maXJzdDsKKyAgICBpZiAoIWVudHJ5KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgCisgICAgb2Zmc2V0ID0gZW50cnktPm9mZnNldDsKKyAgICBhdHRyaWJ1dGVzID0gZW50
cnktPmF0dHJpYnV0ZXM7CisgICAgc3BlY2lmaWNWYWx1ZSA9IGVudHJ5LT5zcGVjaWZpY1ZhbHVl
LmdldCgpOworICAgIHJldHVybiB0cnVlOworfQorCiBpbmxpbmUgUHJvcGVydHlUYWJsZTo6Zmlu
ZF9pdGVyYXRvciBQcm9wZXJ0eVRhYmxlOjpmaW5kV2l0aFN0cmluZyhjb25zdCBLZXlUeXBlJiBr
ZXkpCiB7CiAgICAgQVNTRVJUKGtleSk7CkBAIC0zNDMsNiArMzYzLDggQEAgaW5saW5lIFByb3Bl
cnR5VGFibGU6OmZpbmRfaXRlcmF0b3IgUHJvcAogCiBpbmxpbmUgc3RkOjpwYWlyPFByb3BlcnR5
VGFibGU6OmZpbmRfaXRlcmF0b3IsIGJvb2w+IFByb3BlcnR5VGFibGU6OmFkZChjb25zdCBWYWx1
ZVR5cGUmIGVudHJ5LCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0LCBFZmZlY3RPblByb3BlcnR5T2Zm
c2V0IG9mZnNldEVmZmVjdCkKIHsKKyAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCiAg
ICAgLy8gTG9vayBmb3IgYSB2YWx1ZSB3aXRoIGEgbWF0Y2hpbmcga2V5IGFscmVhZHkgaW4gdGhl
IGFycmF5LgogICAgIGZpbmRfaXRlcmF0b3IgaXRlciA9IGZpbmQoZW50cnkua2V5KTsKICAgICBp
ZiAoaXRlci5maXJzdCkgewpAQCAtMzU1LDcgKzM3Nyw3IEBAIGlubGluZSBzdGQ6OnBhaXI8UHJv
cGVydHlUYWJsZTo6ZmluZF9pdGUKIAogICAgIC8vIGVuc3VyZSBjYXBhY2l0eSBpcyBhdmFpbGFi
bGUuCiAgICAgaWYgKCFjYW5JbnNlcnQoKSkgewotICAgICAgICByZWhhc2gobV9rZXlDb3VudCAr
IDEpOworICAgICAgICByZWhhc2gobG9ja2VyLCBtX2tleUNvdW50ICsgMSk7CiAgICAgICAgIGl0
ZXIgPSBmaW5kKGVudHJ5LmtleSk7CiAgICAgICAgIEFTU0VSVCghaXRlci5maXJzdCk7CiAgICAg
fQpAQCAtMzk3LDcgKzQxOSw3IEBAIGlubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OnJlbW92ZShj
b25zdCAKICAgICArK21fZGVsZXRlZENvdW50OwogCiAgICAgaWYgKG1fZGVsZXRlZENvdW50ICog
NCA+PSBtX2luZGV4U2l6ZSkKLSAgICAgICAgcmVoYXNoKG1fa2V5Q291bnQpOworICAgICAgICBy
ZWhhc2goQXNzdW1lTG9ja2VkLCBtX2tleUNvdW50KTsKIH0KIAogaW5saW5lIHZvaWQgUHJvcGVy
dHlUYWJsZTo6cmVtb3ZlKGNvbnN0IEtleVR5cGUmIGtleSkKQEAgLTQ3NCw3ICs0OTYsNyBAQCBp
bmxpbmUgc2l6ZV90IFByb3BlcnR5VGFibGU6OnNpemVJbk1lbW9yCiB9CiAjZW5kaWYKIAotaW5s
aW5lIHZvaWQgUHJvcGVydHlUYWJsZTo6cmVpbnNlcnQoY29uc3QgVmFsdWVUeXBlJiBlbnRyeSkK
K2lubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OnJlaW5zZXJ0KGNvbnN0IExvY2tlciYsIGNvbnN0
IFZhbHVlVHlwZSYgZW50cnkpCiB7CiAgICAgLy8gVXNlZCB0byBpbnNlcnQgYSB2YWx1ZSBrbm93
biBub3QgdG8gYmUgaW4gdGhlIHRhYmxlLCBhbmQgd2hlcmUKICAgICAvLyB3ZSBrbm93IGNhcGFj
aXR5IHRvIGJlIGF2YWlsYWJsZS4KQEAgLTQ4OSw3ICs1MTEsNyBAQCBpbmxpbmUgdm9pZCBQcm9w
ZXJ0eVRhYmxlOjpyZWluc2VydChjb25zCiAgICAgKyttX2tleUNvdW50OwogfQogCi1pbmxpbmUg
dm9pZCBQcm9wZXJ0eVRhYmxlOjpyZWhhc2godW5zaWduZWQgbmV3Q2FwYWNpdHkpCitpbmxpbmUg
dm9pZCBQcm9wZXJ0eVRhYmxlOjpyZWhhc2goY29uc3QgTG9ja2VyJiBsb2NrZXIsIHVuc2lnbmVk
IG5ld0NhcGFjaXR5KQogewogICAgIHVuc2lnbmVkKiBvbGRFbnRyeUluZGljZXMgPSBtX2luZGV4
OwogICAgIGl0ZXJhdG9yIGl0ZXIgPSB0aGlzLT5iZWdpbigpOwpAQCAtNTAzLDcgKzUyNSw3IEBA
IGlubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OnJlaGFzaCh1bnNpZ24KIAogICAgIGZvciAoOyBp
dGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIEFTU0VSVChjYW5JbnNlcnQoKSk7Ci0gICAg
ICAgIHJlaW5zZXJ0KCppdGVyKTsKKyAgICAgICAgcmVpbnNlcnQobG9ja2VyLCAqaXRlcik7CiAg
ICAgfQogCiAgICAgZmFzdEZyZWUob2xkRW50cnlJbmRpY2VzKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuY3BwCShyZXZpc2lvbiAxNDg4
NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw3IEBAIFByb3BlcnR5VGFibGU6OlByb3BlcnR5
VGFibGUoVk0mIHZtLCBKU0MKICAgICBjb25zdF9pdGVyYXRvciBlbmQgPSBvdGhlci5lbmQoKTsK
ICAgICBmb3IgKGNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBvdGhlci5iZWdpbigpOyBpdGVyICE9IGVu
ZDsgKytpdGVyKSB7CiAgICAgICAgIEFTU0VSVChjYW5JbnNlcnQoKSk7Ci0gICAgICAgIHJlaW5z
ZXJ0KCppdGVyKTsKKyAgICAgICAgcmVpbnNlcnQoQXNzdW1lTG9ja2VkLCAqaXRlcik7CiAgICAg
ICAgIGl0ZXItPmtleS0+cmVmKCk7CiAgICAgICAgIEhlYXA6OndyaXRlQmFycmllcihvd25lciwg
aXRlci0+c3BlY2lmaWNWYWx1ZS5nZXQoKSk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAxNDg4NTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNDIsMTAgKzI0Miw5IEBAIHZvaWQgU3RydWN0dXJlOjpmaW5kU3RydWN0dXJlc0FuZE1hcEZv
ck0KICAgICB0YWJsZSA9IDA7CiAKICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhp
czsgc3RydWN0dXJlOyBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSkgewotICAg
ICAgICBpZiAoc3RydWN0dXJlLT5wcm9wZXJ0eVRhYmxlKCkpIHsKLSAgICAgICAgICAgIHRhYmxl
ID0gc3RydWN0dXJlLT5wcm9wZXJ0eVRhYmxlKCkuZ2V0KCk7CisgICAgICAgIHRhYmxlID0gc3Ry
dWN0dXJlLT5wcm9wZXJ0eVRhYmxlKCkuZ2V0KCk7CisgICAgICAgIGlmICh0YWJsZSkKICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQogICAgICAgICAKICAgICAgICAgc3RydWN0dXJlcy5h
cHBlbmQoc3RydWN0dXJlKTsKICAgICB9CkBAIC03NDcsMjAgKzc0NiwyMSBAQCBQcm9wZXJ0eVRh
YmxlKiBTdHJ1Y3R1cmU6OmNvcHlQcm9wZXJ0eVRhCiAgICAgcmV0dXJuIFByb3BlcnR5VGFibGU6
OmNyZWF0ZSh2bSwgbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1faW5saW5l
Q2FwYWNpdHkpKTsKIH0KIAotUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXRXaXRob3V0TWF0
ZXJpYWxpemluZyhWTSYsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRy
aWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQorUHJvcGVydHlPZmZzZXQgU3RydWN0dXJl
OjpnZXRDb25jdXJyZW50bHkoVk0mLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25l
ZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkKIHsKKyAgICAvLyBXZSBjYW4n
dCBoYW5kbGUgdW5jYWNoZWFibGUgZGljdGlvbmFyaWVzIGJlY2F1c2Ugd2UgY2FuJ3QgaGFuZGxl
IGNvbmN1cnJlbnQgcmVtb3ZlJ3MKKyAgICAvLyBmcm9tIHRoZSBwcm9wZXJ0eSBtYXBzLgorICAg
IFJFTEVBU0VfQVNTRVJUKCFpc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKKyAgICAKICAgICBW
ZWN0b3I8U3RydWN0dXJlKiwgOD4gc3RydWN0dXJlczsKICAgICBQcm9wZXJ0eVRhYmxlKiB0YWJs
ZTsKICAgICAKICAgICBmaW5kU3RydWN0dXJlc0FuZE1hcEZvck1hdGVyaWFsaXphdGlvbihzdHJ1
Y3R1cmVzLCB0YWJsZSk7CiAgICAgCiAgICAgaWYgKHRhYmxlKSB7Ci0gICAgICAgIFByb3BlcnR5
TWFwRW50cnkqIGVudHJ5ID0gdGFibGUtPmZpbmQocHJvcGVydHlOYW1lLnVpZCgpKS5maXJzdDsK
LSAgICAgICAgaWYgKGVudHJ5KSB7Ci0gICAgICAgICAgICBhdHRyaWJ1dGVzID0gZW50cnktPmF0
dHJpYnV0ZXM7Ci0gICAgICAgICAgICBzcGVjaWZpY1ZhbHVlID0gZW50cnktPnNwZWNpZmljVmFs
dWUuZ2V0KCk7Ci0gICAgICAgICAgICByZXR1cm4gZW50cnktPm9mZnNldDsKLSAgICAgICAgfQor
ICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7CisgICAgICAgIGlmICh0YWJsZS0+ZmluZENv
bmN1cnJlbnRseShwcm9wZXJ0eU5hbWUudWlkKCksIG9mZnNldCwgYXR0cmlidXRlcywgc3BlY2lm
aWNWYWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gb2Zmc2V0OwogICAgIH0KICAgICAKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBzdHJ1Y3R1cmVzLnNpemUoKTsgaS0tOykgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDE0ODg1MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMzYsOCArMjM2LDggQEAgcHVibGljOgogICAgIFByb3BlcnR5T2Zmc2V0IGdldChWTSYs
IGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBQcm9wZXJ0
eU9mZnNldCBnZXQoVk0mLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0Nl
bGwqJiBzcGVjaWZpY1ZhbHVlKTsKIAotICAgIFByb3BlcnR5T2Zmc2V0IGdldFdpdGhvdXRNYXRl
cmlhbGl6aW5nKFZNJiwgUHJvcGVydHlOYW1lKTsKLSAgICBQcm9wZXJ0eU9mZnNldCBnZXRXaXRo
b3V0TWF0ZXJpYWxpemluZyhWTSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMs
IEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOworICAgIFByb3BlcnR5T2Zmc2V0IGdldENvbmN1cnJl
bnRseShWTSYsIFByb3BlcnR5TmFtZSk7CisgICAgUHJvcGVydHlPZmZzZXQgZ2V0Q29uY3VycmVu
dGx5KFZNJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3Bl
Y2lmaWNWYWx1ZSk7CiAKICAgICBib29sIGhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSBjb25z
dCB7IHJldHVybiBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXM7IH0KICAgICBib29sIGhhc1Jl
YWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8oKSBjb25zdCB7IHJl
dHVybiBtX2hhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG87
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJ
bmxpbmVzLmgJKHJldmlzaW9uIDE0ODg1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsMTEgKzc4LDExIEBA
IGlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChWTSYKICAgICByZXR1cm4gZW50
cnkgPyBlbnRyeS0+b2Zmc2V0IDogaW52YWxpZE9mZnNldDsKIH0KICAgICAKLWlubGluZSBQcm9w
ZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldFdpdGhvdXRNYXRlcmlhbGl6aW5nKFZNJiB2bSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6
OmdldENvbmN1cnJlbnRseShWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgdW5zaWduZWQgYXR0cmlidXRlc0lnbm9yZWQ7CiAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVl
SWdub3JlZDsKLSAgICByZXR1cm4gZ2V0V2l0aG91dE1hdGVyaWFsaXppbmcoCisgICAgcmV0dXJu
IGdldENvbmN1cnJlbnRseSgKICAgICAgICAgdm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlc0ln
bm9yZWQsIHNwZWNpZmljVmFsdWVJZ25vcmVkKTsKIH0KIApJbmRleDogU291cmNlL1dURi9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0ODkw
NikKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTMtMDQtMjIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAg
ICBmb3VydGhUaWVyOiBDcmVhdGUgYW4gZXF1aXZhbGVudCBvZiBTdHJ1Y3R1cmU6OmdldCgpIHRo
YXQgY2FuIHdvcmsgZnJvbSBhIGNvbXBpbGF0aW9uIHRocmVhZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0OTg3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUbyBhaWQgdGhlIGlkaW9tIHdo
ZXJlIHdlIHBhc3MgYSBMb2NrZXIgYXMgYW4gYXJndW1lbnQgdG8gZnVuY3Rpb25zIHRoYXQgcmVx
dWlyZSB0aGUKKyAgICAgICAgb2JqZWN0IHRvIGJlIGxvY2tlZCwgSSBjaGFuZ2VkIExvY2tlciB0
byBoYXZlIGFuIGltcGxpY2l0IGNvbnN0cnVjdG9yIGZvcgorICAgICAgICBBc3N1bWVMb2NrZWQu
IFRoaXMgaXMgdXNlZnVsIGluIGNhc2VzIHdoZXJlIHlvdSBrbm93IHRoYXQgZm9yIHNvbWUgb3Ro
ZXIgcmVhc29uLAorICAgICAgICBsb2NraW5nIGlzIHJlYWxseSBub3QgcmVxdWlyZWQsIGZvciBl
eGFtcGxlIHdoZW4geW91J3JlIGNvbnN0cnVjdGluZyBhbiBvYmplY3QgeW91CisgICAgICAgIGp1
c3QgY3JlYXRlZC4gSXQgYWxzbyBtYWtlcyB0aG9zZSBjYXNlcyBleHBsaWNpdDogZm9yIGV4YW1w
bGUgUHJvcGVydHlUYWJsZSBoYXMgYQorICAgICAgICBjYWxsIHRvICJyZWluc2VydChBc3N1bWVM
b2NrZWQsICppdGVyKSIgaW4gb25lIG9mIGl0cyBjb25zdHJ1Y3RvcnMuCisKKyAgICAgICAgKiB3
dGYvTG9ja2VyLmg6CisgICAgICAgIChXVEY6OkxvY2tlcjo6TG9ja2VyKToKKyAgICAgICAgKExv
Y2tlcik6CisgICAgICAgIChXVEY6OkxvY2tlcjo6fkxvY2tlcik6CisKIDIwMTMtMDQtMjEgIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBmb3VydGhUaWVyOiBJdCBz
aG91bGQgYmUgcG9zc2libGUgdG8gcXVlcnkgV2F0Y2hwb2ludFNldHMsIGFuZCBhZGQgV2F0Y2hw
b2ludHMsIGV2ZW4gaWYgdGhlIGNvbXBpbGVyIGlzIHJ1bm5pbmcgaW4gYW5vdGhlciB0aHJlYWQK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL0xvY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL0xvY2tlci5oCShyZXZpc2lvbiAxNDg4NTMpCisrKyBTb3VyY2UvV1RGL3d0Zi9Mb2NrZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTcgKzMyLDM0IEBACiAKIG5hbWVzcGFjZSBXVEYgewog
CitlbnVtIEFzc3VtZUxvY2tlZFRhZyB7IEFzc3VtZUxvY2tlZCB9OworCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gY2xhc3MgTG9ja2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMb2NrZXIp
OwogcHVibGljOgotICAgIExvY2tlcihUJiBsb2NrYWJsZSkgOiBtX2xvY2thYmxlKGxvY2thYmxl
KSB7IG1fbG9ja2FibGUubG9jaygpOyB9Ci0gICAgfkxvY2tlcigpIHsgbV9sb2NrYWJsZS51bmxv
Y2soKTsgfQorICAgIExvY2tlcihBc3N1bWVMb2NrZWRUYWcpCisgICAgICAgIDogbV9sb2NrYWJs
ZSgwKQorICAgIHsKKyAgICB9CisgICAgCisgICAgTG9ja2VyKFQmIGxvY2thYmxlKQorICAgICAg
ICA6IG1fbG9ja2FibGUoJmxvY2thYmxlKQorICAgIHsKKyAgICAgICAgbV9sb2NrYWJsZS0+bG9j
aygpOworICAgIH0KKyAgICAKKyAgICB+TG9ja2VyKCkKKyAgICB7CisgICAgICAgIGlmIChtX2xv
Y2thYmxlKQorICAgICAgICAgICAgbV9sb2NrYWJsZS0+dW5sb2NrKCk7CisgICAgfQogcHJpdmF0
ZToKLSAgICBUJiBtX2xvY2thYmxlOworICAgIFQqIG1fbG9ja2FibGU7CiB9OwogCiB9CiAKK3Vz
aW5nIFdURjo6QXNzdW1lTG9ja2VkOwogdXNpbmcgV1RGOjpMb2NrZXI7CiAKICNlbmRpZgo=
</data>
<flag name="review"
          id="220763"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199102</attachid>
            <date>2013-04-22 13:54:09 -0700</date>
            <delta_ts>2013-04-22 15:03:50 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>20997</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ4OTA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBA
CisyMDEzLTA0LTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogQ3JlYXRlIGFuIGVxdWl2YWxlbnQgb2YgU3RydWN0dXJlOjpnZXQoKSB0aGF0
IGNhbiB3b3JrIGZyb20gYSBjb21waWxhdGlvbiB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDk4NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjb21wbGV0ZXMgdGhlIHdv
cmsgc3RhcnRlZCBieSByMTQ4NTcwLiBUaGF0IHBhdGNoIG1hZGUgaXQgcG9zc2libGUgdG8gZG8K
KyAgICAgICAgU3RydWN0dXJlOjpnZXQoKSB3aXRob3V0IG1vZGlmeWluZyBTdHJ1Y3R1cmUuIFRo
aXMgcGF0Y2ggdGFrZXMgdGhpcyBmdXJ0aGVyLCBhbmQKKyAgICAgICAgbWFrZXMgdGhpcyB0aHJl
YWQtc2FmZSAoZm9yIG5vbi11bmNhY2hlYWJsZS1kaWN0aW9uYXJpZXMpIHZpYQorICAgICAgICBT
dHJ1Y3R1cmU6OmdldENvbmN1cnJlbnRseSgpLiBUaGlzIG1ldGhvZCBub3Qgb25seSBkb2Vzbid0
IG1vZGlmeSBTdHJ1Y3R1cmUsIGJ1dAorICAgICAgICBhbHNvIGVuc3VyZXMgdGhhdCBhbnkgY29u
Y3VycmVudCBhdHRlbXB0cyB0byBhZGQgdG8sIHJlbW92ZSBmcm9tLCBvciBzdGVhbCB0aGUKKyAg
ICAgICAgdGFibGUgZnJvbSB0aGF0IHN0cnVjdHVyZSBkb2Vzbid0IG1lc3MgdXAgdGhlIHJlc3Vs
dCBvZiB0aGUgY2FsbC4gVGhlIGNhbGwgbWF5CisgICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0
IGV2ZW4gaWYgYSBwcm9wZXJ0eSBpcyAqanVzdCogYWJvdXQgdG8gYmUgYWRkZWQsIGJ1dCBpdCB3
aWxsCisgICAgICAgIG5ldmVyIGRvIHRoZSByZXZlcnNlOiBpZiBpdCByZXR1cm5zIGEgcHJvcGVy
dHkgdGhlbiB5b3UgY2FuIGJlIHN1cmUgdGhhdCB0aGUKKyAgICAgICAgc3RydWN0dXJlIHJlYWxs
eSBkb2VzIGhhdmUgdGhhdCBwcm9wZXJ0eSBhbmQgYWx3YXlzIHdpbGwgaGF2ZSBpdC4KKworICAg
ICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6
Y29tcHV0ZUZvckNoYWluKToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZv
cik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6
OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlNDOjpQdXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6aXNTdHJpbmdQcm90b3R5cGVNZXRob2RTYW5l
KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmg6CisgICAgICAgIChQ
cm9wZXJ0eVRhYmxlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6ZmluZENvbmN1cnJl
bnRseSk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjphZGQp
OgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpyZW1vdmUpOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eVRhYmxlOjpyZWluc2VydCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OnJl
aGFzaCk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmZpbmRTdHJ1Y3R1cmVzQW5kTWFw
Rm9yTWF0ZXJpYWxpemF0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXRDb25jdXJy
ZW50bHkpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1
cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6OmdldENvbmN1cnJlbnRseSk6CisKKzIwMTMtMDQtMjIgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
Y3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAg
ICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvckNoYWluKToKKyAgICAgICAgKEpT
Qzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJ
ZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJ
bnQpOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAg
KiBydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmg6CisgICAgICAgIChQcm9wZXJ0eVRhYmxl
KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6ZmluZENvbmN1cnJlbnRseSk6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjphZGQpOgorICAgICAgICAo
SlNDOjpQcm9wZXJ0eVRhYmxlOjpyZW1vdmUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxl
OjpyZWluc2VydCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OnJlaGFzaCk6CisgICAg
ICAgICogcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlU
YWJsZTo6UHJvcGVydHlUYWJsZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmZpbmRTdHJ1Y3R1cmVzQW5kTWFwRm9yTWF0ZXJpYWxp
emF0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXRDb25jdXJyZW50bHkpOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmdldENvbmN1cnJlbnRseSk6CisKIDIwMTMtMDQtMjEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBmb3VydGhUaWVyOiBXZWJLaXQncyBidWlsZCBzeXN0ZW0gc2hv
dWxkIHJlbGluayBKYXZhU2NyaXB0Q29yZSBpZiBMTFZNJ3MgbGlicmFyaWVzIGNoYW5nZWQgYnV0
IGl0cyBoZWFkZXJzIGRpZG4ndApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0dldEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTQ4ODUzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MSw3ICs1MSw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20K
ICAgICAKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzSWdub3JlZDsKICAgICBKU0NlbGwqIHNwZWNp
ZmljVmFsdWU7Ci0gICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCisg
ICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkoCiAg
ICAgICAgICpwcm9maWxlZEJsb2NrLT52bSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQsIHNw
ZWNpZmljVmFsdWUpOwogICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQogICAgICAg
ICBzcGVjaWZpY1ZhbHVlID0gMDsKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBHZXRCeUlkU3RhdHVz
Ojpjb21wdXRlRm9yQ2hhaW4oR2V0QgogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXNJZ25vcmVkOwog
ICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKICAgICAgICAgCi0gICAgcmVzdWx0Lm1fb2Zmc2V0
ID0gY3VycmVudFN0cnVjdHVyZS0+Z2V0KAorICAgIHJlc3VsdC5tX29mZnNldCA9IGN1cnJlbnRT
dHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSgKICAgICAgICAgKnByb2ZpbGVkQmxvY2stPnZtKCks
IGlkZW50LCBhdHRyaWJ1dGVzSWdub3JlZCwgc3BlY2lmaWNWYWx1ZSk7CiAgICAgaWYgKGN1cnJl
bnRTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQogICAgICAgICBzcGVjaWZpY1ZhbHVlID0gMDsK
QEAgLTE2Myw3ICsxNjMsNyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVG
b3IoCiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3R1YkluZm8udS5nZXRCeUlkU2Vs
Zi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpOwogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVz
SWdub3JlZDsKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgICAgICByZXN1bHQu
bV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldFdpdGhvdXRNYXRlcmlhbGl6aW5nKAorICAgICAgICBy
ZXN1bHQubV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSgKICAgICAgICAgICAg
ICpwcm9maWxlZEJsb2NrLT52bSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQsIHNwZWNpZmlj
VmFsdWUpOwogICAgICAgICBpZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAg
ICAgIHNwZWNpZmljVmFsdWUgPSAwOwpAQCAtMTg4LDcgKzE4OCw3IEBAIEdldEJ5SWRTdGF0dXMg
R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgIAogICAgICAgICAgICAgdW5z
aWduZWQgYXR0cmlidXRlc0lnbm9yZWQ7CiAgICAgICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFs
dWU7Ci0gICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBteU9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0
V2l0aG91dE1hdGVyaWFsaXppbmcoCisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBteU9mZnNl
dCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KAogICAgICAgICAgICAgICAgICpwcm9maWxl
ZEJsb2NrLT52bSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQsIHNwZWNpZmljVmFsdWUpOwog
ICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgICAgICAg
ICAgc3BlY2lmaWNWYWx1ZSA9IDA7CkBAIC0yNzMsNyArMjczLDcgQEAgR2V0QnlJZFN0YXR1cyBH
ZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIHJlc3VsdC5tX3dhc1NlZW5JbkpJVCA9IGZh
bHNlOyAvLyBUbyBteSBrbm93bGVkZ2Ugbm9ib2R5IHRoYXQgdXNlcyBjb21wdXRlRm9yKFZNJiwg
U3RydWN0dXJlKiwgSWRlbnRpZmllciYpIHJlYWRzIHRoaXMgZmllbGQsIGJ1dCBJIG1pZ2h0IGFz
IHdlbGwgYmUgaG9uZXN0OiBubywgaXQgd2Fzbid0IHNlZW4gaW4gdGhlIEpJVCwgc2luY2UgSSBj
b21wdXRlZCBpdCBzdGF0aWNhbGx5LgogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgSlND
ZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgIHJlc3VsdC5tX29mZnNldCA9IHN0cnVjdHVyZS0+Z2V0
V2l0aG91dE1hdGVyaWFsaXppbmcodm0sIGlkZW50LCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVl
KTsKKyAgICByZXN1bHQubV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSh2bSwg
aWRlbnQsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwogICAgIGlmICghaXNWYWxpZE9mZnNl
dChyZXN1bHQubV9vZmZzZXQpKQogICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhUYWtlc1Ns
b3dQYXRoKTsgLy8gSXQncyBwcm9iYWJseSBhIHByb3RvdHlwZSBsb29rdXAuIEdpdmUgdXAgb24g
bGlmZSBmb3Igbm93LCBldmVuIHRob3VnaCB3ZSBjb3VsZCB0b3RhbGx5IGJlIHdheSBzbWFydGVy
IGFib3V0IGl0LgogICAgIGlmIChhdHRyaWJ1dGVzICYgQWNjZXNzb3IpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lv
biAxNDg4NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgUHV0QnlJZFN0YXR1cyBQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRnJvbQogICAgIAogICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9w
Y29kZSA9PSBMTEludDo6Z2V0T3Bjb2RlKGxsaW50X29wX3B1dF9ieV9pZCkKICAgICAgICAgfHwg
aW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gTExJbnQ6OmdldE9wY29kZShsbGludF9vcF9wdXRf
YnlfaWRfb3V0X29mX2xpbmUpKSB7Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0
cnVjdHVyZS0+Z2V0V2l0aG91dE1hdGVyaWFsaXppbmcoKnByb2ZpbGVkQmxvY2stPnZtKCksIGlk
ZW50KTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25j
dXJyZW50bHkoKnByb2ZpbGVkQmxvY2stPnZtKCksIGlkZW50KTsKICAgICAgICAgaWYgKCFpc1Zh
bGlkT2Zmc2V0KG9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0lu
Zm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICAgICAgCkBAIC02OCw3ICs2
OCw3IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20KICAgICBBU1NF
UlQobmV3U3RydWN0dXJlKTsKICAgICBBU1NFUlQoY2hhaW4pOwogICAgIAotICAgIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCA9IG5ld1N0cnVjdHVyZS0+Z2V0V2l0aG91dE1hdGVyaWFsaXppbmcoKnBy
b2ZpbGVkQmxvY2stPnZtKCksIGlkZW50KTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBu
ZXdTdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSgqcHJvZmlsZWRCbG9jay0+dm0oKSwgaWRlbnQp
OwogICAgIGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKQogICAgICAgICByZXR1cm4gUHV0QnlJ
ZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICAKQEAg
LTEwMiw3ICsxMDIsNyBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3Io
CiAgICAgICAgIAogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF9yZXBsYWNlOiB7CiAgICAgICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9Ci0gICAgICAgICAgICBzdHViSW5mby51LnB1dEJ5SWRS
ZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPmdldFdpdGhvdXRNYXRlcmlhbGl6aW5nKAorICAg
ICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5n
ZXRDb25jdXJyZW50bHkoCiAgICAgICAgICAgICAgICAgKnByb2ZpbGVkQmxvY2stPnZtKCksIGlk
ZW50KTsKICAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewogICAgICAgICAgICAg
cmV0dXJuIFB1dEJ5SWRTdGF0dXMoCkBAIC0xMTgsNyArMTE4LDcgQEAgUHV0QnlJZFN0YXR1cyBQ
dXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF90cmFu
c2l0aW9uX2RpcmVjdDogewogICAgICAgICBBU1NFUlQoc3R1YkluZm8udS5wdXRCeUlkVHJhbnNp
dGlvbi5wcmV2aW91c1N0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52
YWxpZGF0ZWQoKSk7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IAotICAgICAgICAg
ICAgc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1Y3R1cmUtPmdldFdpdGhvdXRNYXRl
cmlhbGl6aW5nKAorICAgICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1
Y3R1cmUtPmdldENvbmN1cnJlbnRseSgKICAgICAgICAgICAgICAgICAqcHJvZmlsZWRCbG9jay0+
dm0oKSwgaWRlbnQpOwogICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7CiAgICAg
ICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cygKQEAgLTE1Miw3ICsxNTIsNyBAQCBQdXRCeUlk
U3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgCiAgICAgdW5zaWduZWQgYXR0
cmlidXRlczsKICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWVJZ25vcmVkOwotICAgIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0V2l0aG91dE1hdGVyaWFsaXppbmcoCisgICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkoCiAgICAg
ICAgIHZtLCBpZGVudCwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZUlnbm9yZWQpOwogICAgIGlm
IChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiAoQWNj
ZXNzb3IgfCBSZWFkT25seSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE0ODg1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjEsNyArMTAyMSw3
IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzVW51c2VkOwog
ICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IHN0cmluZ1Byb3RvdHlwZVN0cnVjdHVyZS0+Z2V0KAorICAgICAgICBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQgPSBzdHJpbmdQcm90b3R5cGVTdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSgK
ICAgICAgICAgICAgIHZtKCksIGlkZW50LCBhdHRyaWJ1dGVzVW51c2VkLCBzcGVjaWZpY1ZhbHVl
KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAJKHJldmlzaW9uIDE0ODg1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNiwxOSArMjM2LDI3IEBAIHZvaWQg
U3RydWN0dXJlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKICAgICBzdGF0aWNfY2FzdDxTdHJ1Y3R1
cmUqPihjZWxsKS0+U3RydWN0dXJlOjp+U3RydWN0dXJlKCk7CiB9CiAKLXZvaWQgU3RydWN0dXJl
OjpmaW5kU3RydWN0dXJlc0FuZE1hcEZvck1hdGVyaWFsaXphdGlvbihWZWN0b3I8U3RydWN0dXJl
KiwgOD4mIHN0cnVjdHVyZXMsIFByb3BlcnR5VGFibGUqJiB0YWJsZSkKK3ZvaWQgU3RydWN0dXJl
OjpmaW5kU3RydWN0dXJlc0FuZE1hcEZvck1hdGVyaWFsaXphdGlvbihWZWN0b3I8U3RydWN0dXJl
KiwgOD4mIHN0cnVjdHVyZXMsIFN0cnVjdHVyZSomIHN0cnVjdHVyZSwgUHJvcGVydHlUYWJsZSom
IHRhYmxlKQogewogICAgIEFTU0VSVChzdHJ1Y3R1cmVzLmlzRW1wdHkoKSk7CiAgICAgdGFibGUg
PSAwOwogCi0gICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXM7IHN0cnVjdHVyZTsg
c3RydWN0dXJlID0gc3RydWN0dXJlLT5wcmV2aW91c0lEKCkpIHsKLSAgICAgICAgaWYgKHN0cnVj
dHVyZS0+cHJvcGVydHlUYWJsZSgpKSB7Ci0gICAgICAgICAgICB0YWJsZSA9IHN0cnVjdHVyZS0+
cHJvcGVydHlUYWJsZSgpLmdldCgpOworICAgIGZvciAoc3RydWN0dXJlID0gdGhpczsgc3RydWN0
dXJlOyBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSkgeworICAgICAgICBzdHJ1
Y3R1cmUtPm1fbG9jay5sb2NrKCk7CisgICAgICAgIAorICAgICAgICB0YWJsZSA9IHN0cnVjdHVy
ZS0+cHJvcGVydHlUYWJsZSgpLmdldCgpOworICAgICAgICBpZiAodGFibGUpIHsKKyAgICAgICAg
ICAgIC8vIExlYXZlIHRoZSBzdHJ1Y3R1cmUgbG9ja2VkLCBzbyB0aGF0IHRoZSBjYWxsZXIgY2Fu
IGRvIHRoaW5ncyB0byBpdCBhdG9taWNhbGx5CisgICAgICAgICAgICAvLyBiZWZvcmUgaXQgbG9z
ZXMgaXRzIHByb3BlcnR5IHRhYmxlLgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICBzdHJ1Y3R1cmVzLmFwcGVuZChzdHJ1Y3R1cmUpOworICAgICAgICBz
dHJ1Y3R1cmUtPm1fbG9jay51bmxvY2soKTsKICAgICB9CisgICAgCisgICAgQVNTRVJUKCFzdHJ1
Y3R1cmUpOworICAgIEFTU0VSVCghdGFibGUpOwogfQogCiB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJp
YWxpemVQcm9wZXJ0eU1hcChWTSYgdm0pCkBAIC0yNTcsMTcgKzI2NSwyMCBAQCB2b2lkIFN0cnVj
dHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChWCiAgICAgQVNTRVJUKCFwcm9wZXJ0eVRhYmxl
KCkpOwogCiAgICAgVmVjdG9yPFN0cnVjdHVyZSosIDg+IHN0cnVjdHVyZXM7CisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmU7CiAgICAgUHJvcGVydHlUYWJsZSogdGFibGU7CiAgICAgCi0gICAgZmlu
ZFN0cnVjdHVyZXNBbmRNYXBGb3JNYXRlcmlhbGl6YXRpb24oc3RydWN0dXJlcywgdGFibGUpOwor
ICAgIGZpbmRTdHJ1Y3R1cmVzQW5kTWFwRm9yTWF0ZXJpYWxpemF0aW9uKHN0cnVjdHVyZXMsIHN0
cnVjdHVyZSwgdGFibGUpOwogICAgIAogICAgIGlmICghdGFibGUpCi0gICAgICAgIGNyZWF0ZVBy
b3BlcnR5TWFwKHZtLCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV9pbmxp
bmVDYXBhY2l0eSkpOwotICAgIGVsc2UKKyAgICAgICAgY3JlYXRlUHJvcGVydHlNYXAoQXNzdW1l
TG9ja2VkLCB2bSwgbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1faW5saW5l
Q2FwYWNpdHkpKTsKKyAgICBlbHNlIHsKICAgICAgICAgcHJvcGVydHlUYWJsZSgpLnNldCh2bSwg
dGhpcywgdGFibGUtPmNvcHkodm0sIDAsIG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zm
c2V0LCBtX2lubGluZUNhcGFjaXR5KSkpOworICAgICAgICBzdHJ1Y3R1cmUtPm1fbG9jay51bmxv
Y2soKTsKKyAgICB9CiAKICAgICBmb3IgKHNpemVfdCBpID0gc3RydWN0dXJlcy5zaXplKCk7IGkt
LTspIHsKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVzW2ldOworICAg
ICAgICBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVzW2ldOwogICAgICAgICBpZiAoIXN0cnVjdHVyZS0+
bV9uYW1lSW5QcmV2aW91cykKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBQcm9wZXJ0
eU1hcEVudHJ5IGVudHJ5KHZtLCB0aGlzLCBzdHJ1Y3R1cmUtPm1fbmFtZUluUHJldmlvdXMuZ2V0
KCksIHN0cnVjdHVyZS0+bV9vZmZzZXQsIHN0cnVjdHVyZS0+bV9hdHRyaWJ1dGVzSW5QcmV2aW91
cywgc3RydWN0dXJlLT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3VzLmdldCgpKTsKQEAgLTU0NCw4
ICs1NTUsMTQgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnByZXZlbnRFeHRlbnNpb25zVAogUHJv
cGVydHlUYWJsZSogU3RydWN0dXJlOjp0YWtlUHJvcGVydHlUYWJsZU9yQ2xvbmVJZlBpbm5lZChW
TSYgdm0sIFN0cnVjdHVyZSogb3duZXIpCiB7CiAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElm
TmVjZXNzYXJ5Rm9yUGlubmluZyh2bSk7CisgICAgCiAgICAgaWYgKG1faXNQaW5uZWRQcm9wZXJ0
eVRhYmxlKQogICAgICAgICByZXR1cm4gcHJvcGVydHlUYWJsZSgpLT5jb3B5KHZtLCBvd25lciwg
cHJvcGVydHlUYWJsZSgpLT5zaXplKCkgKyAxKTsKKyAgICAKKyAgICAvLyBIb2xkIHRoZSBsb2Nr
IHdoaWxlIHN0ZWFsaW5nIHRoZSB0YWJsZSAtIHNvIHRoYXQgZ2V0Q29uY3VycmVudGx5KCkgb24g
YW5vdGhlciB0aHJlYWQKKyAgICAvLyB3aWxsIGVpdGhlciBoYXZlIHRvIGJ5cGFzcyB0aGlzIHN0
cnVjdHVyZSwgb3Igd2lsbCBnZXQgdG8gdXNlIHRoZSBwcm9wZXJ0eSB0YWJsZQorICAgIC8vIGJl
Zm9yZSBpdCBpcyBzdG9sZW4uCisgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgIFByb3Bl
cnR5VGFibGUqIHRha2VuUHJvcGVydHlUYWJsZSA9IHByb3BlcnR5VGFibGUoKS5nZXQoKTsKICAg
ICBwcm9wZXJ0eVRhYmxlKCkuY2xlYXIoKTsKICAgICByZXR1cm4gdGFrZW5Qcm9wZXJ0eVRhYmxl
OwpAQCAtNzQ3LDI0ICs3NjQsMzIgQEAgUHJvcGVydHlUYWJsZSogU3RydWN0dXJlOjpjb3B5UHJv
cGVydHlUYQogICAgIHJldHVybiBQcm9wZXJ0eVRhYmxlOjpjcmVhdGUodm0sIG51bWJlck9mU2xv
dHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0LCBtX2lubGluZUNhcGFjaXR5KSk7CiB9CiAKLVByb3Bl
cnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0V2l0aG91dE1hdGVyaWFsaXppbmcoVk0mLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lm
aWNWYWx1ZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0Q29uY3VycmVudGx5KFZNJiwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbCom
IHNwZWNpZmljVmFsdWUpCiB7CisgICAgLy8gV2UgY2FuJ3QgaGFuZGxlIHVuY2FjaGVhYmxlIGRp
Y3Rpb25hcmllcyBiZWNhdXNlIHdlIGNhbid0IGhhbmRsZSBjb25jdXJyZW50IHJlbW92ZSdzCisg
ICAgLy8gZnJvbSB0aGUgcHJvcGVydHkgbWFwcy4KKyAgICBSRUxFQVNFX0FTU0VSVCghaXNVbmNh
Y2hlYWJsZURpY3Rpb25hcnkoKSk7CisgICAgCiAgICAgVmVjdG9yPFN0cnVjdHVyZSosIDg+IHN0
cnVjdHVyZXM7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7CiAgICAgUHJvcGVydHlUYWJsZSog
dGFibGU7CiAgICAgCi0gICAgZmluZFN0cnVjdHVyZXNBbmRNYXBGb3JNYXRlcmlhbGl6YXRpb24o
c3RydWN0dXJlcywgdGFibGUpOworICAgIGZpbmRTdHJ1Y3R1cmVzQW5kTWFwRm9yTWF0ZXJpYWxp
emF0aW9uKHN0cnVjdHVyZXMsIHN0cnVjdHVyZSwgdGFibGUpOwogICAgIAogICAgIGlmICh0YWJs
ZSkgewogICAgICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IHRhYmxlLT5maW5kKHByb3Bl
cnR5TmFtZS51aWQoKSkuZmlyc3Q7CiAgICAgICAgIGlmIChlbnRyeSkgewogICAgICAgICAgICAg
YXR0cmlidXRlcyA9IGVudHJ5LT5hdHRyaWJ1dGVzOwogICAgICAgICAgICAgc3BlY2lmaWNWYWx1
ZSA9IGVudHJ5LT5zcGVjaWZpY1ZhbHVlLmdldCgpOwotICAgICAgICAgICAgcmV0dXJuIGVudHJ5
LT5vZmZzZXQ7CisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCByZXN1bHQgPSBlbnRyeS0+b2Zm
c2V0OworICAgICAgICAgICAgc3RydWN0dXJlLT5tX2xvY2sudW5sb2NrKCk7CisgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CisgICAgICAgIHN0cnVjdHVyZS0+bV9sb2NrLnVu
bG9jaygpOwogICAgIH0KICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBzdHJ1Y3R1cmVzLnNp
emUoKTsgaS0tOykgewotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0cnVjdHVyZXNb
aV07CisgICAgICAgIHN0cnVjdHVyZSA9IHN0cnVjdHVyZXNbaV07CiAgICAgICAgIGlmIChzdHJ1
Y3R1cmUtPm1fbmFtZUluUHJldmlvdXMuZ2V0KCkgIT0gcHJvcGVydHlOYW1lLnVpZCgpKQogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIApAQCAtODIxLDYgKzg0Niw4IEBAIHZvaWQgU3Ry
dWN0dXJlOjpkZXNwZWNpZnlBbGxGdW5jdGlvbnMoVk0KIAogUHJvcGVydHlPZmZzZXQgU3RydWN0
dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQogeworICAgIExvY2tl
ciBsb2NrZXIobV9sb2NrKTsKKyAgICAKICAgICBBU1NFUlQoIUpTQzo6aXNWYWxpZE9mZnNldChn
ZXQodm0sIHByb3BlcnR5TmFtZSkpKTsKIAogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTgz
MCw3ICs4NTcsNyBAQCBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsCiAg
ICAgU3RyaW5nSW1wbCogcmVwID0gcHJvcGVydHlOYW1lLnVpZCgpOwogCiAgICAgaWYgKCFwcm9w
ZXJ0eVRhYmxlKCkpCi0gICAgICAgIGNyZWF0ZVByb3BlcnR5TWFwKHZtKTsKKyAgICAgICAgY3Jl
YXRlUHJvcGVydHlNYXAobG9ja2VyLCB2bSk7CiAKICAgICBQcm9wZXJ0eU9mZnNldCBuZXdPZmZz
ZXQgPSBwcm9wZXJ0eVRhYmxlKCktPm5leHRPZmZzZXQobV9pbmxpbmVDYXBhY2l0eSk7CiAKQEAg
LTg0Miw2ICs4NjksOCBAQCBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFs
CiAKIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6cmVtb3ZlKFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCiB7CisgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIAogICAgIGNoZWNrQ29u
c2lzdGVuY3koKTsKIAogICAgIFN0cmluZ0ltcGwqIHJlcCA9IHByb3BlcnR5TmFtZS51aWQoKTsK
QEAgLTg2Miw3ICs4OTEsNyBAQCBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnJlbW92ZShQcm9w
ZXJ0CiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotdm9pZCBTdHJ1Y3R1cmU6OmNyZWF0ZVByb3Bl
cnR5TWFwKFZNJiB2bSwgdW5zaWduZWQgY2FwYWNpdHkpCit2b2lkIFN0cnVjdHVyZTo6Y3JlYXRl
UHJvcGVydHlNYXAoY29uc3QgTG9ja2VyJiwgVk0mIHZtLCB1bnNpZ25lZCBjYXBhY2l0eSkKIHsK
ICAgICBBU1NFUlQoIXByb3BlcnR5VGFibGUoKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxNDg4NTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiAr
NDAsNyBAQAogI2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKICNpbmNsdWRlICJXYXRjaHBvaW50Lmgi
CiAjaW5jbHVkZSAiV2Vhay5oIgorI2luY2x1ZGUgPHd0Zi9CeXRlU3BpbkxvY2suaD4KICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgpAQCAtNjksNiArNzAsOSBAQCBwdWJsaWM6CiAg
ICAgZnJpZW5kIGNsYXNzIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTsKIAogICAgIHR5cGVkZWYg
SlNDZWxsIEJhc2U7CisgICAgCisgICAgdHlwZWRlZiBCeXRlU3BpbkxvY2sgTG9jazsKKyAgICB0
eXBlZGVmIEJ5dGVTcGluTG9ja2VyIExvY2tlcjsKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJ
bmZvJiwgY29uc3QgQ2xhc3NJbmZvKiwgSW5kZXhpbmdUeXBlID0gTm9uQXJyYXksIHVuc2lnbmVk
IGlubGluZUNhcGFjaXR5ID0gMCk7CiAKQEAgLTIzNiw4ICsyNDAsOCBAQCBwdWJsaWM6CiAgICAg
UHJvcGVydHlPZmZzZXQgZ2V0KFZNJiwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUpOwogICAgIEpT
X0VYUE9SVF9QUklWQVRFIFByb3BlcnR5T2Zmc2V0IGdldChWTSYsIFByb3BlcnR5TmFtZSwgdW5z
aWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOwogCi0gICAgUHJvcGVy
dHlPZmZzZXQgZ2V0V2l0aG91dE1hdGVyaWFsaXppbmcoVk0mLCBQcm9wZXJ0eU5hbWUpOwotICAg
IFByb3BlcnR5T2Zmc2V0IGdldFdpdGhvdXRNYXRlcmlhbGl6aW5nKFZNJiwgUHJvcGVydHlOYW1l
LCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CisgICAgUHJv
cGVydHlPZmZzZXQgZ2V0Q29uY3VycmVudGx5KFZNJiwgUHJvcGVydHlOYW1lKTsKKyAgICBQcm9w
ZXJ0eU9mZnNldCBnZXRDb25jdXJyZW50bHkoVk0mLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBh
dHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKIAogICAgIGJvb2wgaGFzR2V0dGVy
U2V0dGVyUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVy
dGllczsgfQogICAgIGJvb2wgaGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNs
dWRpbmdQcm90bygpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmVhZE9ubHlPckdldHRlclNldHRlclBy
b3BlcnRpZXNFeGNsdWRpbmdQcm90bzsgfQpAQCAtMzYxLDggKzM2NSwxMiBAQCBwcml2YXRlOgog
ICAgIFN0cnVjdHVyZShWTSYsIGNvbnN0IFN0cnVjdHVyZSopOwogCiAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlKFZNJiwgY29uc3QgU3RydWN0dXJlKik7Ci0gICAgICAgIAotICAgIHZvaWQg
ZmluZFN0cnVjdHVyZXNBbmRNYXBGb3JNYXRlcmlhbGl6YXRpb24oVmVjdG9yPFN0cnVjdHVyZSos
IDg+JiBzdHJ1Y3R1cmVzLCBQcm9wZXJ0eVRhYmxlKiYpOworICAgIAorICAgIC8vIFRoaXMgd2ls
bCByZXR1cm4gdGhlIHN0cnVjdHVyZSB0aGF0IGhhcyBhIHVzYWJsZSBwcm9wZXJ0eSB0YWJsZSwg
dGhhdCBwcm9wZXJ0eSB0YWJsZSwKKyAgICAvLyBhbmQgdGhlIGxpc3Qgb2Ygc3RydWN0dXJlcyB0
aGF0IHdlIHZpc2l0ZWQgYmVmb3JlIHdlIGdvdCB0byBpdC4gSWYgaXQgcmV0dXJucyBhCisgICAg
Ly8gbm9uLW51bGwgc3RydWN0dXJlLCBpdCB3aWxsIGFsc28gbG9jayB0aGUgc3RydWN0dXJlIHRo
YXQgaXQgcmV0dXJuczsgaXQgaXMgeW91ciBqb2IKKyAgICAvLyB0byB1bmxvY2sgaXQuCisgICAg
dm9pZCBmaW5kU3RydWN0dXJlc0FuZE1hcEZvck1hdGVyaWFsaXphdGlvbihWZWN0b3I8U3RydWN0
dXJlKiwgOD4mIHN0cnVjdHVyZXMsIFN0cnVjdHVyZSomLCBQcm9wZXJ0eVRhYmxlKiYpOwogICAg
IAogICAgIHR5cGVkZWYgZW51bSB7IAogICAgICAgICBOb25lRGljdGlvbmFyeUtpbmQgPSAwLApA
QCAtMzc0LDcgKzM4Miw3IEBAIHByaXZhdGU6CiAgICAgUHJvcGVydHlPZmZzZXQgcHV0U3BlY2lm
aWNWYWx1ZShWTSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBz
cGVjaWZpY1ZhbHVlKTsKICAgICBQcm9wZXJ0eU9mZnNldCByZW1vdmUoUHJvcGVydHlOYW1lKTsK
IAotICAgIHZvaWQgY3JlYXRlUHJvcGVydHlNYXAoVk0mLCB1bnNpZ25lZCBrZXlDb3VudCA9IDAp
OworICAgIHZvaWQgY3JlYXRlUHJvcGVydHlNYXAoY29uc3QgTG9ja2VyJiwgVk0mLCB1bnNpZ25l
ZCBrZXlDb3VudCA9IDApOwogICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpOwogCiAgICAgYm9v
bCBkZXNwZWNpZnlGdW5jdGlvbihWTSYsIFByb3BlcnR5TmFtZSk7CkBAIC00NzMsOCArNDgxLDEw
IEBAIHByaXZhdGU6CiAKICAgICBUeXBlSW5mbyBtX3R5cGVJbmZvOwogICAgIEluZGV4aW5nVHlw
ZSBtX2luZGV4aW5nVHlwZTsKLQogICAgIHVpbnQ4X3QgbV9pbmxpbmVDYXBhY2l0eTsKKyAgICAK
KyAgICBMb2NrIG1fbG9jazsKKyAgICAKICAgICB1bnNpZ25lZCBtX2RpY3Rpb25hcnlLaW5kIDog
MjsKICAgICBib29sIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlIDogMTsKICAgICBib29sIG1faGFz
R2V0dGVyU2V0dGVyUHJvcGVydGllcyA6IDE7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCShyZXZpc2lvbiAxNDg4NTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc4LDExICs3OCwxMSBAQCBpbmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJl
OjpnZXQoVk0mCiAgICAgcmV0dXJuIGVudHJ5ID8gZW50cnktPm9mZnNldCA6IGludmFsaWRPZmZz
ZXQ7CiB9CiAgICAgCi1pbmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXRXaXRob3V0
TWF0ZXJpYWxpemluZyhWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitpbmxpbmUg
UHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXRDb25jdXJyZW50bHkoVk0mIHZtLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXNJZ25vcmVkOwog
ICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZUlnbm9yZWQ7Ci0gICAgcmV0dXJuIGdldFdpdGhvdXRN
YXRlcmlhbGl6aW5nKAorICAgIHJldHVybiBnZXRDb25jdXJyZW50bHkoCiAgICAgICAgIHZtLCBw
cm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZpY1ZhbHVlSWdub3JlZCk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxNDg5MDYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEzLTA0LTIyICBGaWxpcCBQaXpsbyAgPGZw
aXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgZm91cnRoVGllcjogQ3JlYXRlIGFuIGVxdWl2YWxl
bnQgb2YgU3RydWN0dXJlOjpnZXQoKSB0aGF0IGNhbiB3b3JrIGZyb20gYSBjb21waWxhdGlvbiB0
aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
NDk4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAg
ICAgICAgVG8gYWlkIHRoZSBpZGlvbSB3aGVyZSB3ZSBwYXNzIGEgTG9ja2VyIGFzIGFuIGFyZ3Vt
ZW50IHRvIGZ1bmN0aW9ucyB0aGF0IHJlcXVpcmUgdGhlCisgICAgICAgIG9iamVjdCB0byBiZSBs
b2NrZWQsIEkgY2hhbmdlZCBMb2NrZXIgdG8gaGF2ZSBhbiBpbXBsaWNpdCBjb25zdHJ1Y3RvciBm
b3IKKyAgICAgICAgQXNzdW1lTG9ja2VkLiBUaGlzIGlzIHVzZWZ1bCBpbiBjYXNlcyB3aGVyZSB5
b3Uga25vdyB0aGF0IGZvciBzb21lIG90aGVyIHJlYXNvbiwKKyAgICAgICAgbG9ja2luZyBpcyBy
ZWFsbHkgbm90IHJlcXVpcmVkLCBmb3IgZXhhbXBsZSB3aGVuIHlvdSdyZSBjb25zdHJ1Y3Rpbmcg
YW4gb2JqZWN0IHlvdQorICAgICAgICBqdXN0IGNyZWF0ZWQuIEl0IGFsc28gbWFrZXMgdGhvc2Ug
Y2FzZXMgZXhwbGljaXQ6IGZvciBleGFtcGxlIFByb3BlcnR5VGFibGUgaGFzIGEKKyAgICAgICAg
Y2FsbCB0byAicmVpbnNlcnQoQXNzdW1lTG9ja2VkLCAqaXRlcikiIGluIG9uZSBvZiBpdHMgY29u
c3RydWN0b3JzLgorCisgICAgICAgICogd3RmL0xvY2tlci5oOgorICAgICAgICAoV1RGOjpMb2Nr
ZXI6OkxvY2tlcik6CisgICAgICAgIChMb2NrZXIpOgorICAgICAgICAoV1RGOjpMb2NrZXI6On5M
b2NrZXIpOgorCiAyMDEzLTA0LTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgZm91cnRoVGllcjogSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHF1ZXJ5IFdhdGNo
cG9pbnRTZXRzLCBhbmQgYWRkIFdhdGNocG9pbnRzLCBldmVuIGlmIHRoZSBjb21waWxlciBpcyBy
dW5uaW5nIGluIGFub3RoZXIgdGhyZWFkCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Mb2NrZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Mb2NrZXIuaAkocmV2aXNpb24gMTQ4ODUzKQor
KysgU291cmNlL1dURi93dGYvTG9ja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE3ICszMiwz
NCBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAorZW51bSBBc3N1bWVMb2NrZWRUYWcgeyBBc3N1bWVM
b2NrZWQgfTsKKwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIExvY2tlciB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoTG9ja2VyKTsKIHB1YmxpYzoKLSAgICBMb2NrZXIoVCYgbG9ja2Fi
bGUpIDogbV9sb2NrYWJsZShsb2NrYWJsZSkgeyBtX2xvY2thYmxlLmxvY2soKTsgfQotICAgIH5M
b2NrZXIoKSB7IG1fbG9ja2FibGUudW5sb2NrKCk7IH0KKyAgICBMb2NrZXIoQXNzdW1lTG9ja2Vk
VGFnKQorICAgICAgICA6IG1fbG9ja2FibGUoMCkKKyAgICB7CisgICAgfQorICAgIAorICAgIExv
Y2tlcihUJiBsb2NrYWJsZSkKKyAgICAgICAgOiBtX2xvY2thYmxlKCZsb2NrYWJsZSkKKyAgICB7
CisgICAgICAgIG1fbG9ja2FibGUtPmxvY2soKTsKKyAgICB9CisgICAgCisgICAgfkxvY2tlcigp
CisgICAgeworICAgICAgICBpZiAobV9sb2NrYWJsZSkKKyAgICAgICAgICAgIG1fbG9ja2FibGUt
PnVubG9jaygpOworICAgIH0KIHByaXZhdGU6Ci0gICAgVCYgbV9sb2NrYWJsZTsKKyAgICBUKiBt
X2xvY2thYmxlOwogfTsKIAogfQogCit1c2luZyBXVEY6OkFzc3VtZUxvY2tlZDsKIHVzaW5nIFdU
Rjo6TG9ja2VyOwogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199113</attachid>
            <date>2013-04-22 15:03:50 -0700</date>
            <delta_ts>2013-04-22 15:34:20 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>20899</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ4OTA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBA
CisyMDEzLTA0LTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogQ3JlYXRlIGFuIGVxdWl2YWxlbnQgb2YgU3RydWN0dXJlOjpnZXQoKSB0aGF0
IGNhbiB3b3JrIGZyb20gYSBjb21waWxhdGlvbiB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDk4NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjb21wbGV0ZXMgdGhlIHdv
cmsgc3RhcnRlZCBieSByMTQ4NTcwLiBUaGF0IHBhdGNoIG1hZGUgaXQgcG9zc2libGUgdG8gZG8K
KyAgICAgICAgU3RydWN0dXJlOjpnZXQoKSB3aXRob3V0IG1vZGlmeWluZyBTdHJ1Y3R1cmUuIFRo
aXMgcGF0Y2ggdGFrZXMgdGhpcyBmdXJ0aGVyLCBhbmQKKyAgICAgICAgbWFrZXMgdGhpcyB0aHJl
YWQtc2FmZSAoZm9yIG5vbi11bmNhY2hlYWJsZS1kaWN0aW9uYXJpZXMpIHZpYQorICAgICAgICBT
dHJ1Y3R1cmU6OmdldENvbmN1cnJlbnRseSgpLiBUaGlzIG1ldGhvZCBub3Qgb25seSBkb2Vzbid0
IG1vZGlmeSBTdHJ1Y3R1cmUsIGJ1dAorICAgICAgICBhbHNvIGVuc3VyZXMgdGhhdCBhbnkgY29u
Y3VycmVudCBhdHRlbXB0cyB0byBhZGQgdG8sIHJlbW92ZSBmcm9tLCBvciBzdGVhbCB0aGUKKyAg
ICAgICAgdGFibGUgZnJvbSB0aGF0IHN0cnVjdHVyZSBkb2Vzbid0IG1lc3MgdXAgdGhlIHJlc3Vs
dCBvZiB0aGUgY2FsbC4gVGhlIGNhbGwgbWF5CisgICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0
IGV2ZW4gaWYgYSBwcm9wZXJ0eSBpcyAqanVzdCogYWJvdXQgdG8gYmUgYWRkZWQsIGJ1dCBpdCB3
aWxsCisgICAgICAgIG5ldmVyIGRvIHRoZSByZXZlcnNlOiBpZiBpdCByZXR1cm5zIGEgcHJvcGVy
dHkgdGhlbiB5b3UgY2FuIGJlIHN1cmUgdGhhdCB0aGUKKyAgICAgICAgc3RydWN0dXJlIHJlYWxs
eSBkb2VzIGhhdmUgdGhhdCBwcm9wZXJ0eSBhbmQgYWx3YXlzIHdpbGwgaGF2ZSBpdC4KKworICAg
ICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6
Y29tcHV0ZUZvckNoYWluKToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZv
cik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6
OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlNDOjpQdXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6aXNTdHJpbmdQcm90b3R5cGVNZXRob2RTYW5l
KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmg6CisgICAgICAgIChQ
cm9wZXJ0eVRhYmxlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6ZmluZENvbmN1cnJl
bnRseSk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjphZGQp
OgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpyZW1vdmUpOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eVRhYmxlOjpyZWluc2VydCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OnJl
aGFzaCk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmZpbmRTdHJ1Y3R1cmVzQW5kTWFw
Rm9yTWF0ZXJpYWxpemF0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXRDb25jdXJy
ZW50bHkpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1
cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6OmdldENvbmN1cnJlbnRseSk6CisKKzIwMTMtMDQtMjIgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
Y3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAg
ICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvckNoYWluKToKKyAgICAgICAgKEpT
Qzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJ
ZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJ
bnQpOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAg
KiBydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmg6CisgICAgICAgIChQcm9wZXJ0eVRhYmxl
KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6ZmluZENvbmN1cnJlbnRseSk6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjphZGQpOgorICAgICAgICAo
SlNDOjpQcm9wZXJ0eVRhYmxlOjpyZW1vdmUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxl
OjpyZWluc2VydCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OnJlaGFzaCk6CisgICAg
ICAgICogcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlU
YWJsZTo6UHJvcGVydHlUYWJsZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmZpbmRTdHJ1Y3R1cmVzQW5kTWFwRm9yTWF0ZXJpYWxp
emF0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXRDb25jdXJyZW50bHkpOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmdldENvbmN1cnJlbnRseSk6CisKIDIwMTMtMDQtMjEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBmb3VydGhUaWVyOiBXZWJLaXQncyBidWlsZCBzeXN0ZW0gc2hv
dWxkIHJlbGluayBKYXZhU2NyaXB0Q29yZSBpZiBMTFZNJ3MgbGlicmFyaWVzIGNoYW5nZWQgYnV0
IGl0cyBoZWFkZXJzIGRpZG4ndApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0dldEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTQ4ODUzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MSw3ICs1MSw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20K
ICAgICAKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzSWdub3JlZDsKICAgICBKU0NlbGwqIHNwZWNp
ZmljVmFsdWU7Ci0gICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCisg
ICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkoCiAg
ICAgICAgICpwcm9maWxlZEJsb2NrLT52bSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQsIHNw
ZWNpZmljVmFsdWUpOwogICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQogICAgICAg
ICBzcGVjaWZpY1ZhbHVlID0gMDsKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBHZXRCeUlkU3RhdHVz
Ojpjb21wdXRlRm9yQ2hhaW4oR2V0QgogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXNJZ25vcmVkOwog
ICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKICAgICAgICAgCi0gICAgcmVzdWx0Lm1fb2Zmc2V0
ID0gY3VycmVudFN0cnVjdHVyZS0+Z2V0KAorICAgIHJlc3VsdC5tX29mZnNldCA9IGN1cnJlbnRT
dHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSgKICAgICAgICAgKnByb2ZpbGVkQmxvY2stPnZtKCks
IGlkZW50LCBhdHRyaWJ1dGVzSWdub3JlZCwgc3BlY2lmaWNWYWx1ZSk7CiAgICAgaWYgKGN1cnJl
bnRTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQogICAgICAgICBzcGVjaWZpY1ZhbHVlID0gMDsK
QEAgLTE2Myw3ICsxNjMsNyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVG
b3IoCiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3R1YkluZm8udS5nZXRCeUlkU2Vs
Zi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpOwogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVz
SWdub3JlZDsKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgICAgICByZXN1bHQu
bV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldFdpdGhvdXRNYXRlcmlhbGl6aW5nKAorICAgICAgICBy
ZXN1bHQubV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSgKICAgICAgICAgICAg
ICpwcm9maWxlZEJsb2NrLT52bSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQsIHNwZWNpZmlj
VmFsdWUpOwogICAgICAgICBpZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAg
ICAgIHNwZWNpZmljVmFsdWUgPSAwOwpAQCAtMTg4LDcgKzE4OCw3IEBAIEdldEJ5SWRTdGF0dXMg
R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgIAogICAgICAgICAgICAgdW5z
aWduZWQgYXR0cmlidXRlc0lnbm9yZWQ7CiAgICAgICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFs
dWU7Ci0gICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBteU9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0
V2l0aG91dE1hdGVyaWFsaXppbmcoCisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBteU9mZnNl
dCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KAogICAgICAgICAgICAgICAgICpwcm9maWxl
ZEJsb2NrLT52bSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQsIHNwZWNpZmljVmFsdWUpOwog
ICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgICAgICAg
ICAgc3BlY2lmaWNWYWx1ZSA9IDA7CkBAIC0yNzMsNyArMjczLDcgQEAgR2V0QnlJZFN0YXR1cyBH
ZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIHJlc3VsdC5tX3dhc1NlZW5JbkpJVCA9IGZh
bHNlOyAvLyBUbyBteSBrbm93bGVkZ2Ugbm9ib2R5IHRoYXQgdXNlcyBjb21wdXRlRm9yKFZNJiwg
U3RydWN0dXJlKiwgSWRlbnRpZmllciYpIHJlYWRzIHRoaXMgZmllbGQsIGJ1dCBJIG1pZ2h0IGFz
IHdlbGwgYmUgaG9uZXN0OiBubywgaXQgd2Fzbid0IHNlZW4gaW4gdGhlIEpJVCwgc2luY2UgSSBj
b21wdXRlZCBpdCBzdGF0aWNhbGx5LgogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgSlND
ZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgIHJlc3VsdC5tX29mZnNldCA9IHN0cnVjdHVyZS0+Z2V0
V2l0aG91dE1hdGVyaWFsaXppbmcodm0sIGlkZW50LCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVl
KTsKKyAgICByZXN1bHQubV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSh2bSwg
aWRlbnQsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwogICAgIGlmICghaXNWYWxpZE9mZnNl
dChyZXN1bHQubV9vZmZzZXQpKQogICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhUYWtlc1Ns
b3dQYXRoKTsgLy8gSXQncyBwcm9iYWJseSBhIHByb3RvdHlwZSBsb29rdXAuIEdpdmUgdXAgb24g
bGlmZSBmb3Igbm93LCBldmVuIHRob3VnaCB3ZSBjb3VsZCB0b3RhbGx5IGJlIHdheSBzbWFydGVy
IGFib3V0IGl0LgogICAgIGlmIChhdHRyaWJ1dGVzICYgQWNjZXNzb3IpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lv
biAxNDg4NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgUHV0QnlJZFN0YXR1cyBQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRnJvbQogICAgIAogICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9w
Y29kZSA9PSBMTEludDo6Z2V0T3Bjb2RlKGxsaW50X29wX3B1dF9ieV9pZCkKICAgICAgICAgfHwg
aW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gTExJbnQ6OmdldE9wY29kZShsbGludF9vcF9wdXRf
YnlfaWRfb3V0X29mX2xpbmUpKSB7Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0
cnVjdHVyZS0+Z2V0V2l0aG91dE1hdGVyaWFsaXppbmcoKnByb2ZpbGVkQmxvY2stPnZtKCksIGlk
ZW50KTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25j
dXJyZW50bHkoKnByb2ZpbGVkQmxvY2stPnZtKCksIGlkZW50KTsKICAgICAgICAgaWYgKCFpc1Zh
bGlkT2Zmc2V0KG9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0lu
Zm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICAgICAgCkBAIC02OCw3ICs2
OCw3IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20KICAgICBBU1NF
UlQobmV3U3RydWN0dXJlKTsKICAgICBBU1NFUlQoY2hhaW4pOwogICAgIAotICAgIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCA9IG5ld1N0cnVjdHVyZS0+Z2V0V2l0aG91dE1hdGVyaWFsaXppbmcoKnBy
b2ZpbGVkQmxvY2stPnZtKCksIGlkZW50KTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBu
ZXdTdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSgqcHJvZmlsZWRCbG9jay0+dm0oKSwgaWRlbnQp
OwogICAgIGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKQogICAgICAgICByZXR1cm4gUHV0QnlJ
ZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICAKQEAg
LTEwMiw3ICsxMDIsNyBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3Io
CiAgICAgICAgIAogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF9yZXBsYWNlOiB7CiAgICAgICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9Ci0gICAgICAgICAgICBzdHViSW5mby51LnB1dEJ5SWRS
ZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPmdldFdpdGhvdXRNYXRlcmlhbGl6aW5nKAorICAg
ICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5n
ZXRDb25jdXJyZW50bHkoCiAgICAgICAgICAgICAgICAgKnByb2ZpbGVkQmxvY2stPnZtKCksIGlk
ZW50KTsKICAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewogICAgICAgICAgICAg
cmV0dXJuIFB1dEJ5SWRTdGF0dXMoCkBAIC0xMTgsNyArMTE4LDcgQEAgUHV0QnlJZFN0YXR1cyBQ
dXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF90cmFu
c2l0aW9uX2RpcmVjdDogewogICAgICAgICBBU1NFUlQoc3R1YkluZm8udS5wdXRCeUlkVHJhbnNp
dGlvbi5wcmV2aW91c1N0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52
YWxpZGF0ZWQoKSk7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IAotICAgICAgICAg
ICAgc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1Y3R1cmUtPmdldFdpdGhvdXRNYXRl
cmlhbGl6aW5nKAorICAgICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1
Y3R1cmUtPmdldENvbmN1cnJlbnRseSgKICAgICAgICAgICAgICAgICAqcHJvZmlsZWRCbG9jay0+
dm0oKSwgaWRlbnQpOwogICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7CiAgICAg
ICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cygKQEAgLTE1Miw3ICsxNTIsNyBAQCBQdXRCeUlk
U3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgCiAgICAgdW5zaWduZWQgYXR0
cmlidXRlczsKICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWVJZ25vcmVkOwotICAgIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0V2l0aG91dE1hdGVyaWFsaXppbmcoCisgICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkoCiAgICAg
ICAgIHZtLCBpZGVudCwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZUlnbm9yZWQpOwogICAgIGlm
IChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiAoQWNj
ZXNzb3IgfCBSZWFkT25seSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE0ODg1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjEsNyArMTAyMSw3
IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzVW51c2VkOwog
ICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IHN0cmluZ1Byb3RvdHlwZVN0cnVjdHVyZS0+Z2V0KAorICAgICAgICBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQgPSBzdHJpbmdQcm90b3R5cGVTdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSgK
ICAgICAgICAgICAgIHZtKCksIGlkZW50LCBhdHRyaWJ1dGVzVW51c2VkLCBzcGVjaWZpY1ZhbHVl
KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAJKHJldmlzaW9uIDE0ODg1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNiwxOSArMjM2LDI3IEBAIHZvaWQg
U3RydWN0dXJlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKICAgICBzdGF0aWNfY2FzdDxTdHJ1Y3R1
cmUqPihjZWxsKS0+U3RydWN0dXJlOjp+U3RydWN0dXJlKCk7CiB9CiAKLXZvaWQgU3RydWN0dXJl
OjpmaW5kU3RydWN0dXJlc0FuZE1hcEZvck1hdGVyaWFsaXphdGlvbihWZWN0b3I8U3RydWN0dXJl
KiwgOD4mIHN0cnVjdHVyZXMsIFByb3BlcnR5VGFibGUqJiB0YWJsZSkKK3ZvaWQgU3RydWN0dXJl
OjpmaW5kU3RydWN0dXJlc0FuZE1hcEZvck1hdGVyaWFsaXphdGlvbihWZWN0b3I8U3RydWN0dXJl
KiwgOD4mIHN0cnVjdHVyZXMsIFN0cnVjdHVyZSomIHN0cnVjdHVyZSwgUHJvcGVydHlUYWJsZSom
IHRhYmxlKQogewogICAgIEFTU0VSVChzdHJ1Y3R1cmVzLmlzRW1wdHkoKSk7CiAgICAgdGFibGUg
PSAwOwogCi0gICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXM7IHN0cnVjdHVyZTsg
c3RydWN0dXJlID0gc3RydWN0dXJlLT5wcmV2aW91c0lEKCkpIHsKLSAgICAgICAgaWYgKHN0cnVj
dHVyZS0+cHJvcGVydHlUYWJsZSgpKSB7Ci0gICAgICAgICAgICB0YWJsZSA9IHN0cnVjdHVyZS0+
cHJvcGVydHlUYWJsZSgpLmdldCgpOworICAgIGZvciAoc3RydWN0dXJlID0gdGhpczsgc3RydWN0
dXJlOyBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSkgeworICAgICAgICBzdHJ1
Y3R1cmUtPm1fbG9jay5sb2NrKCk7CisgICAgICAgIAorICAgICAgICB0YWJsZSA9IHN0cnVjdHVy
ZS0+cHJvcGVydHlUYWJsZSgpLmdldCgpOworICAgICAgICBpZiAodGFibGUpIHsKKyAgICAgICAg
ICAgIC8vIExlYXZlIHRoZSBzdHJ1Y3R1cmUgbG9ja2VkLCBzbyB0aGF0IHRoZSBjYWxsZXIgY2Fu
IGRvIHRoaW5ncyB0byBpdCBhdG9taWNhbGx5CisgICAgICAgICAgICAvLyBiZWZvcmUgaXQgbG9z
ZXMgaXRzIHByb3BlcnR5IHRhYmxlLgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICBzdHJ1Y3R1cmVzLmFwcGVuZChzdHJ1Y3R1cmUpOworICAgICAgICBz
dHJ1Y3R1cmUtPm1fbG9jay51bmxvY2soKTsKICAgICB9CisgICAgCisgICAgQVNTRVJUKCFzdHJ1
Y3R1cmUpOworICAgIEFTU0VSVCghdGFibGUpOwogfQogCiB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJp
YWxpemVQcm9wZXJ0eU1hcChWTSYgdm0pCkBAIC0yNTcsMTcgKzI2NSwyMCBAQCB2b2lkIFN0cnVj
dHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChWCiAgICAgQVNTRVJUKCFwcm9wZXJ0eVRhYmxl
KCkpOwogCiAgICAgVmVjdG9yPFN0cnVjdHVyZSosIDg+IHN0cnVjdHVyZXM7CisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmU7CiAgICAgUHJvcGVydHlUYWJsZSogdGFibGU7CiAgICAgCi0gICAgZmlu
ZFN0cnVjdHVyZXNBbmRNYXBGb3JNYXRlcmlhbGl6YXRpb24oc3RydWN0dXJlcywgdGFibGUpOwor
ICAgIGZpbmRTdHJ1Y3R1cmVzQW5kTWFwRm9yTWF0ZXJpYWxpemF0aW9uKHN0cnVjdHVyZXMsIHN0
cnVjdHVyZSwgdGFibGUpOwogICAgIAogICAgIGlmICghdGFibGUpCi0gICAgICAgIGNyZWF0ZVBy
b3BlcnR5TWFwKHZtLCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV9pbmxp
bmVDYXBhY2l0eSkpOwotICAgIGVsc2UKKyAgICAgICAgY3JlYXRlUHJvcGVydHlNYXAoQXNzdW1l
TG9ja2VkLCB2bSwgbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1faW5saW5l
Q2FwYWNpdHkpKTsKKyAgICBlbHNlIHsKICAgICAgICAgcHJvcGVydHlUYWJsZSgpLnNldCh2bSwg
dGhpcywgdGFibGUtPmNvcHkodm0sIDAsIG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zm
c2V0LCBtX2lubGluZUNhcGFjaXR5KSkpOworICAgICAgICBzdHJ1Y3R1cmUtPm1fbG9jay51bmxv
Y2soKTsKKyAgICB9CiAKICAgICBmb3IgKHNpemVfdCBpID0gc3RydWN0dXJlcy5zaXplKCk7IGkt
LTspIHsKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVzW2ldOworICAg
ICAgICBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVzW2ldOwogICAgICAgICBpZiAoIXN0cnVjdHVyZS0+
bV9uYW1lSW5QcmV2aW91cykKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBQcm9wZXJ0
eU1hcEVudHJ5IGVudHJ5KHZtLCB0aGlzLCBzdHJ1Y3R1cmUtPm1fbmFtZUluUHJldmlvdXMuZ2V0
KCksIHN0cnVjdHVyZS0+bV9vZmZzZXQsIHN0cnVjdHVyZS0+bV9hdHRyaWJ1dGVzSW5QcmV2aW91
cywgc3RydWN0dXJlLT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3VzLmdldCgpKTsKQEAgLTU0NCw4
ICs1NTUsMTQgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnByZXZlbnRFeHRlbnNpb25zVAogUHJv
cGVydHlUYWJsZSogU3RydWN0dXJlOjp0YWtlUHJvcGVydHlUYWJsZU9yQ2xvbmVJZlBpbm5lZChW
TSYgdm0sIFN0cnVjdHVyZSogb3duZXIpCiB7CiAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElm
TmVjZXNzYXJ5Rm9yUGlubmluZyh2bSk7CisgICAgCiAgICAgaWYgKG1faXNQaW5uZWRQcm9wZXJ0
eVRhYmxlKQogICAgICAgICByZXR1cm4gcHJvcGVydHlUYWJsZSgpLT5jb3B5KHZtLCBvd25lciwg
cHJvcGVydHlUYWJsZSgpLT5zaXplKCkgKyAxKTsKKyAgICAKKyAgICAvLyBIb2xkIHRoZSBsb2Nr
IHdoaWxlIHN0ZWFsaW5nIHRoZSB0YWJsZSAtIHNvIHRoYXQgZ2V0Q29uY3VycmVudGx5KCkgb24g
YW5vdGhlciB0aHJlYWQKKyAgICAvLyB3aWxsIGVpdGhlciBoYXZlIHRvIGJ5cGFzcyB0aGlzIHN0
cnVjdHVyZSwgb3Igd2lsbCBnZXQgdG8gdXNlIHRoZSBwcm9wZXJ0eSB0YWJsZQorICAgIC8vIGJl
Zm9yZSBpdCBpcyBzdG9sZW4uCisgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgIFByb3Bl
cnR5VGFibGUqIHRha2VuUHJvcGVydHlUYWJsZSA9IHByb3BlcnR5VGFibGUoKS5nZXQoKTsKICAg
ICBwcm9wZXJ0eVRhYmxlKCkuY2xlYXIoKTsKICAgICByZXR1cm4gdGFrZW5Qcm9wZXJ0eVRhYmxl
OwpAQCAtNzQ3LDI0ICs3NjQsMzIgQEAgUHJvcGVydHlUYWJsZSogU3RydWN0dXJlOjpjb3B5UHJv
cGVydHlUYQogICAgIHJldHVybiBQcm9wZXJ0eVRhYmxlOjpjcmVhdGUodm0sIG51bWJlck9mU2xv
dHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0LCBtX2lubGluZUNhcGFjaXR5KSk7CiB9CiAKLVByb3Bl
cnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0V2l0aG91dE1hdGVyaWFsaXppbmcoVk0mLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lm
aWNWYWx1ZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0Q29uY3VycmVudGx5KFZNJiwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbCom
IHNwZWNpZmljVmFsdWUpCiB7CisgICAgLy8gV2UgY2FuJ3QgaGFuZGxlIHVuY2FjaGVhYmxlIGRp
Y3Rpb25hcmllcyBiZWNhdXNlIHdlIGNhbid0IGhhbmRsZSBjb25jdXJyZW50IHJlbW92ZSdzCisg
ICAgLy8gZnJvbSB0aGUgcHJvcGVydHkgbWFwcy4KKyAgICBSRUxFQVNFX0FTU0VSVCghaXNVbmNh
Y2hlYWJsZURpY3Rpb25hcnkoKSk7CisgICAgCiAgICAgVmVjdG9yPFN0cnVjdHVyZSosIDg+IHN0
cnVjdHVyZXM7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7CiAgICAgUHJvcGVydHlUYWJsZSog
dGFibGU7CiAgICAgCi0gICAgZmluZFN0cnVjdHVyZXNBbmRNYXBGb3JNYXRlcmlhbGl6YXRpb24o
c3RydWN0dXJlcywgdGFibGUpOworICAgIGZpbmRTdHJ1Y3R1cmVzQW5kTWFwRm9yTWF0ZXJpYWxp
emF0aW9uKHN0cnVjdHVyZXMsIHN0cnVjdHVyZSwgdGFibGUpOwogICAgIAogICAgIGlmICh0YWJs
ZSkgewogICAgICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IHRhYmxlLT5maW5kKHByb3Bl
cnR5TmFtZS51aWQoKSkuZmlyc3Q7CiAgICAgICAgIGlmIChlbnRyeSkgewogICAgICAgICAgICAg
YXR0cmlidXRlcyA9IGVudHJ5LT5hdHRyaWJ1dGVzOwogICAgICAgICAgICAgc3BlY2lmaWNWYWx1
ZSA9IGVudHJ5LT5zcGVjaWZpY1ZhbHVlLmdldCgpOwotICAgICAgICAgICAgcmV0dXJuIGVudHJ5
LT5vZmZzZXQ7CisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCByZXN1bHQgPSBlbnRyeS0+b2Zm
c2V0OworICAgICAgICAgICAgc3RydWN0dXJlLT5tX2xvY2sudW5sb2NrKCk7CisgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CisgICAgICAgIHN0cnVjdHVyZS0+bV9sb2NrLnVu
bG9jaygpOwogICAgIH0KICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBzdHJ1Y3R1cmVzLnNp
emUoKTsgaS0tOykgewotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0cnVjdHVyZXNb
aV07CisgICAgICAgIHN0cnVjdHVyZSA9IHN0cnVjdHVyZXNbaV07CiAgICAgICAgIGlmIChzdHJ1
Y3R1cmUtPm1fbmFtZUluUHJldmlvdXMuZ2V0KCkgIT0gcHJvcGVydHlOYW1lLnVpZCgpKQogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIApAQCAtODIxLDYgKzg0Niw4IEBAIHZvaWQgU3Ry
dWN0dXJlOjpkZXNwZWNpZnlBbGxGdW5jdGlvbnMoVk0KIAogUHJvcGVydHlPZmZzZXQgU3RydWN0
dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQogeworICAgIExvY2tl
ciBsb2NrZXIobV9sb2NrKTsKKyAgICAKICAgICBBU1NFUlQoIUpTQzo6aXNWYWxpZE9mZnNldChn
ZXQodm0sIHByb3BlcnR5TmFtZSkpKTsKIAogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTgz
MCw3ICs4NTcsNyBAQCBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsCiAg
ICAgU3RyaW5nSW1wbCogcmVwID0gcHJvcGVydHlOYW1lLnVpZCgpOwogCiAgICAgaWYgKCFwcm9w
ZXJ0eVRhYmxlKCkpCi0gICAgICAgIGNyZWF0ZVByb3BlcnR5TWFwKHZtKTsKKyAgICAgICAgY3Jl
YXRlUHJvcGVydHlNYXAobG9ja2VyLCB2bSk7CiAKICAgICBQcm9wZXJ0eU9mZnNldCBuZXdPZmZz
ZXQgPSBwcm9wZXJ0eVRhYmxlKCktPm5leHRPZmZzZXQobV9pbmxpbmVDYXBhY2l0eSk7CiAKQEAg
LTg0Miw2ICs4NjksOCBAQCBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFs
CiAKIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6cmVtb3ZlKFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCiB7CisgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIAogICAgIGNoZWNrQ29u
c2lzdGVuY3koKTsKIAogICAgIFN0cmluZ0ltcGwqIHJlcCA9IHByb3BlcnR5TmFtZS51aWQoKTsK
QEAgLTg2Miw3ICs4OTEsNyBAQCBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnJlbW92ZShQcm9w
ZXJ0CiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotdm9pZCBTdHJ1Y3R1cmU6OmNyZWF0ZVByb3Bl
cnR5TWFwKFZNJiB2bSwgdW5zaWduZWQgY2FwYWNpdHkpCit2b2lkIFN0cnVjdHVyZTo6Y3JlYXRl
UHJvcGVydHlNYXAoY29uc3QgTG9ja2VyJiwgVk0mIHZtLCB1bnNpZ25lZCBjYXBhY2l0eSkKIHsK
ICAgICBBU1NFUlQoIXByb3BlcnR5VGFibGUoKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxNDg4NTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiAr
NDAsNyBAQAogI2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKICNpbmNsdWRlICJXYXRjaHBvaW50Lmgi
CiAjaW5jbHVkZSAiV2Vhay5oIgorI2luY2x1ZGUgPHd0Zi9CeXRlU3BpbkxvY2suaD4KICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgpAQCAtNjksNiArNzAsOSBAQCBwdWJsaWM6CiAg
ICAgZnJpZW5kIGNsYXNzIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTsKIAogICAgIHR5cGVkZWYg
SlNDZWxsIEJhc2U7CisgICAgCisgICAgdHlwZWRlZiBCeXRlU3BpbkxvY2sgTG9jazsKKyAgICB0
eXBlZGVmIEJ5dGVTcGluTG9ja2VyIExvY2tlcjsKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJ
bmZvJiwgY29uc3QgQ2xhc3NJbmZvKiwgSW5kZXhpbmdUeXBlID0gTm9uQXJyYXksIHVuc2lnbmVk
IGlubGluZUNhcGFjaXR5ID0gMCk7CiAKQEAgLTIzNiw4ICsyNDAsOCBAQCBwdWJsaWM6CiAgICAg
UHJvcGVydHlPZmZzZXQgZ2V0KFZNJiwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUpOwogICAgIEpT
X0VYUE9SVF9QUklWQVRFIFByb3BlcnR5T2Zmc2V0IGdldChWTSYsIFByb3BlcnR5TmFtZSwgdW5z
aWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOwogCi0gICAgUHJvcGVy
dHlPZmZzZXQgZ2V0V2l0aG91dE1hdGVyaWFsaXppbmcoVk0mLCBQcm9wZXJ0eU5hbWUpOwotICAg
IFByb3BlcnR5T2Zmc2V0IGdldFdpdGhvdXRNYXRlcmlhbGl6aW5nKFZNJiwgUHJvcGVydHlOYW1l
LCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CisgICAgUHJv
cGVydHlPZmZzZXQgZ2V0Q29uY3VycmVudGx5KFZNJiwgUHJvcGVydHlOYW1lKTsKKyAgICBQcm9w
ZXJ0eU9mZnNldCBnZXRDb25jdXJyZW50bHkoVk0mLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBh
dHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKIAogICAgIGJvb2wgaGFzR2V0dGVy
U2V0dGVyUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVy
dGllczsgfQogICAgIGJvb2wgaGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNs
dWRpbmdQcm90bygpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmVhZE9ubHlPckdldHRlclNldHRlclBy
b3BlcnRpZXNFeGNsdWRpbmdQcm90bzsgfQpAQCAtMzYxLDggKzM2NSwxMiBAQCBwcml2YXRlOgog
ICAgIFN0cnVjdHVyZShWTSYsIGNvbnN0IFN0cnVjdHVyZSopOwogCiAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlKFZNJiwgY29uc3QgU3RydWN0dXJlKik7Ci0gICAgICAgIAotICAgIHZvaWQg
ZmluZFN0cnVjdHVyZXNBbmRNYXBGb3JNYXRlcmlhbGl6YXRpb24oVmVjdG9yPFN0cnVjdHVyZSos
IDg+JiBzdHJ1Y3R1cmVzLCBQcm9wZXJ0eVRhYmxlKiYpOworICAgIAorICAgIC8vIFRoaXMgd2ls
bCByZXR1cm4gdGhlIHN0cnVjdHVyZSB0aGF0IGhhcyBhIHVzYWJsZSBwcm9wZXJ0eSB0YWJsZSwg
dGhhdCBwcm9wZXJ0eSB0YWJsZSwKKyAgICAvLyBhbmQgdGhlIGxpc3Qgb2Ygc3RydWN0dXJlcyB0
aGF0IHdlIHZpc2l0ZWQgYmVmb3JlIHdlIGdvdCB0byBpdC4gSWYgaXQgcmV0dXJucyBhCisgICAg
Ly8gbm9uLW51bGwgc3RydWN0dXJlLCBpdCB3aWxsIGFsc28gbG9jayB0aGUgc3RydWN0dXJlIHRo
YXQgaXQgcmV0dXJuczsgaXQgaXMgeW91ciBqb2IKKyAgICAvLyB0byB1bmxvY2sgaXQuCisgICAg
dm9pZCBmaW5kU3RydWN0dXJlc0FuZE1hcEZvck1hdGVyaWFsaXphdGlvbihWZWN0b3I8U3RydWN0
dXJlKiwgOD4mIHN0cnVjdHVyZXMsIFN0cnVjdHVyZSomLCBQcm9wZXJ0eVRhYmxlKiYpOwogICAg
IAogICAgIHR5cGVkZWYgZW51bSB7IAogICAgICAgICBOb25lRGljdGlvbmFyeUtpbmQgPSAwLApA
QCAtMzc0LDcgKzM4Miw3IEBAIHByaXZhdGU6CiAgICAgUHJvcGVydHlPZmZzZXQgcHV0U3BlY2lm
aWNWYWx1ZShWTSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBz
cGVjaWZpY1ZhbHVlKTsKICAgICBQcm9wZXJ0eU9mZnNldCByZW1vdmUoUHJvcGVydHlOYW1lKTsK
IAotICAgIHZvaWQgY3JlYXRlUHJvcGVydHlNYXAoVk0mLCB1bnNpZ25lZCBrZXlDb3VudCA9IDAp
OworICAgIHZvaWQgY3JlYXRlUHJvcGVydHlNYXAoY29uc3QgTG9ja2VyJiwgVk0mLCB1bnNpZ25l
ZCBrZXlDb3VudCA9IDApOwogICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpOwogCiAgICAgYm9v
bCBkZXNwZWNpZnlGdW5jdGlvbihWTSYsIFByb3BlcnR5TmFtZSk7CkBAIC00NzMsOCArNDgxLDEw
IEBAIHByaXZhdGU6CiAKICAgICBUeXBlSW5mbyBtX3R5cGVJbmZvOwogICAgIEluZGV4aW5nVHlw
ZSBtX2luZGV4aW5nVHlwZTsKLQogICAgIHVpbnQ4X3QgbV9pbmxpbmVDYXBhY2l0eTsKKyAgICAK
KyAgICBMb2NrIG1fbG9jazsKKyAgICAKICAgICB1bnNpZ25lZCBtX2RpY3Rpb25hcnlLaW5kIDog
MjsKICAgICBib29sIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlIDogMTsKICAgICBib29sIG1faGFz
R2V0dGVyU2V0dGVyUHJvcGVydGllcyA6IDE7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCShyZXZpc2lvbiAxNDg4NTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc4LDExICs3OCwxMSBAQCBpbmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJl
OjpnZXQoVk0mCiAgICAgcmV0dXJuIGVudHJ5ID8gZW50cnktPm9mZnNldCA6IGludmFsaWRPZmZz
ZXQ7CiB9CiAgICAgCi1pbmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXRXaXRob3V0
TWF0ZXJpYWxpemluZyhWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitpbmxpbmUg
UHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXRDb25jdXJyZW50bHkoVk0mIHZtLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXNJZ25vcmVkOwog
ICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZUlnbm9yZWQ7Ci0gICAgcmV0dXJuIGdldFdpdGhvdXRN
YXRlcmlhbGl6aW5nKAorICAgIHJldHVybiBnZXRDb25jdXJyZW50bHkoCiAgICAgICAgIHZtLCBw
cm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZpY1ZhbHVlSWdub3JlZCk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxNDg5MDYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEzLTA0LTIyICBGaWxpcCBQaXpsbyAgPGZw
aXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgZm91cnRoVGllcjogQ3JlYXRlIGFuIGVxdWl2YWxl
bnQgb2YgU3RydWN0dXJlOjpnZXQoKSB0aGF0IGNhbiB3b3JrIGZyb20gYSBjb21waWxhdGlvbiB0
aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
NDk4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAg
ICAgICAgVG8gYWlkIHRoZSBpZGlvbSB3aGVyZSB3ZSBwYXNzIGEgTG9ja2VyIGFzIGFuIGFyZ3Vt
ZW50IHRvIGZ1bmN0aW9ucyB0aGF0IHJlcXVpcmUgdGhlCisgICAgICAgIG9iamVjdCB0byBiZSBs
b2NrZWQsIEkgY2hhbmdlZCBMb2NrZXIgdG8gaGF2ZSBhbiBpbXBsaWNpdCBjb25zdHJ1Y3RvciBm
b3IKKyAgICAgICAgQXNzdW1lTG9ja2VkLiBUaGlzIGlzIHVzZWZ1bCBpbiBjYXNlcyB3aGVyZSB5
b3Uga25vdyB0aGF0IGZvciBzb21lIG90aGVyIHJlYXNvbiwKKyAgICAgICAgbG9ja2luZyBpcyBy
ZWFsbHkgbm90IHJlcXVpcmVkLCBmb3IgZXhhbXBsZSB3aGVuIHlvdSdyZSBjb25zdHJ1Y3Rpbmcg
YW4gb2JqZWN0IHlvdQorICAgICAgICBqdXN0IGNyZWF0ZWQsIG9yIGJlY2F1c2UgeW91IGFyZSB1
c2luZyB1bnN0cnVjdHVyZWQgbG9ja2luZy4KKworICAgICAgICAqIHd0Zi9Mb2NrZXIuaDoKKyAg
ICAgICAgKFdURjo6TG9ja2VyOjpMb2NrZXIpOgorICAgICAgICAoTG9ja2VyKToKKyAgICAgICAg
KFdURjo6TG9ja2VyOjp+TG9ja2VyKToKKwogMjAxMy0wNC0yMSAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIGZvdXJ0aFRpZXI6IEl0IHNob3VsZCBiZSBwb3NzaWJs
ZSB0byBxdWVyeSBXYXRjaHBvaW50U2V0cywgYW5kIGFkZCBXYXRjaHBvaW50cywgZXZlbiBpZiB0
aGUgY29tcGlsZXIgaXMgcnVubmluZyBpbiBhbm90aGVyIHRocmVhZApJbmRleDogU291cmNlL1dU
Ri93dGYvTG9ja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTG9ja2VyLmgJKHJl
dmlzaW9uIDE0ODg1MykKKysrIFNvdXJjZS9XVEYvd3RmL0xvY2tlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiwxNyArMzIsMzQgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKK2VudW0gQXNzdW1lTG9j
a2VkVGFnIHsgQXNzdW1lTG9ja2VkIH07CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBM
b2NrZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExvY2tlcik7CiBwdWJsaWM6Ci0gICAg
TG9ja2VyKFQmIGxvY2thYmxlKSA6IG1fbG9ja2FibGUobG9ja2FibGUpIHsgbV9sb2NrYWJsZS5s
b2NrKCk7IH0KLSAgICB+TG9ja2VyKCkgeyBtX2xvY2thYmxlLnVubG9jaygpOyB9CisgICAgTG9j
a2VyKEFzc3VtZUxvY2tlZFRhZykKKyAgICAgICAgOiBtX2xvY2thYmxlKDApCisgICAgeworICAg
IH0KKyAgICAKKyAgICBMb2NrZXIoVCYgbG9ja2FibGUpCisgICAgICAgIDogbV9sb2NrYWJsZSgm
bG9ja2FibGUpCisgICAgeworICAgICAgICBtX2xvY2thYmxlLT5sb2NrKCk7CisgICAgfQorICAg
IAorICAgIH5Mb2NrZXIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fbG9ja2FibGUpCisgICAgICAg
ICAgICBtX2xvY2thYmxlLT51bmxvY2soKTsKKyAgICB9CiBwcml2YXRlOgotICAgIFQmIG1fbG9j
a2FibGU7CisgICAgVCogbV9sb2NrYWJsZTsKIH07CiAKIH0KIAordXNpbmcgV1RGOjpBc3N1bWVM
b2NrZWQ7CiB1c2luZyBXVEY6OkxvY2tlcjsKIAogI2VuZGlmCg==
</data>
<flag name="review"
          id="220782"
          type_id="1"
          status="-"
          setter="msaboff"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199118</attachid>
            <date>2013-04-22 15:34:20 -0700</date>
            <delta_ts>2013-04-22 16:21:22 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>19243</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ4OTA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBA
CisyMDEzLTA0LTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogQ3JlYXRlIGFuIGVxdWl2YWxlbnQgb2YgU3RydWN0dXJlOjpnZXQoKSB0aGF0
IGNhbiB3b3JrIGZyb20gYSBjb21waWxhdGlvbiB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDk4NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjb21wbGV0ZXMgdGhlIHdv
cmsgc3RhcnRlZCBieSByMTQ4NTcwLiBUaGF0IHBhdGNoIG1hZGUgaXQgcG9zc2libGUgdG8gZG8K
KyAgICAgICAgU3RydWN0dXJlOjpnZXQoKSB3aXRob3V0IG1vZGlmeWluZyBTdHJ1Y3R1cmUuIFRo
aXMgcGF0Y2ggdGFrZXMgdGhpcyBmdXJ0aGVyLCBhbmQKKyAgICAgICAgbWFrZXMgdGhpcyB0aHJl
YWQtc2FmZSAoZm9yIG5vbi11bmNhY2hlYWJsZS1kaWN0aW9uYXJpZXMpIHZpYQorICAgICAgICBT
dHJ1Y3R1cmU6OmdldENvbmN1cnJlbnRseSgpLiBUaGlzIG1ldGhvZCBub3Qgb25seSBkb2Vzbid0
IG1vZGlmeSBTdHJ1Y3R1cmUsIGJ1dAorICAgICAgICBhbHNvIGVuc3VyZXMgdGhhdCBhbnkgY29u
Y3VycmVudCBhdHRlbXB0cyB0byBhZGQgdG8sIHJlbW92ZSBmcm9tLCBvciBzdGVhbCB0aGUKKyAg
ICAgICAgdGFibGUgZnJvbSB0aGF0IHN0cnVjdHVyZSBkb2Vzbid0IG1lc3MgdXAgdGhlIHJlc3Vs
dCBvZiB0aGUgY2FsbC4gVGhlIGNhbGwgbWF5CisgICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0
IGV2ZW4gaWYgYSBwcm9wZXJ0eSBpcyAqanVzdCogYWJvdXQgdG8gYmUgYWRkZWQsIGJ1dCBpdCB3
aWxsCisgICAgICAgIG5ldmVyIGRvIHRoZSByZXZlcnNlOiBpZiBpdCByZXR1cm5zIGEgcHJvcGVy
dHkgdGhlbiB5b3UgY2FuIGJlIHN1cmUgdGhhdCB0aGUKKyAgICAgICAgc3RydWN0dXJlIHJlYWxs
eSBkb2VzIGhhdmUgdGhhdCBwcm9wZXJ0eSBhbmQgYWx3YXlzIHdpbGwgaGF2ZSBpdC4KKworICAg
ICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6
Y29tcHV0ZUZvckNoYWluKToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZv
cik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6
OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlNDOjpQdXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6aXNTdHJpbmdQcm90b3R5cGVNZXRob2RTYW5l
KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmg6CisgICAgICAgIChQ
cm9wZXJ0eVRhYmxlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6ZmluZENvbmN1cnJl
bnRseSk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjphZGQp
OgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpyZW1vdmUpOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eVRhYmxlOjpyZWluc2VydCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OnJl
aGFzaCk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmZpbmRTdHJ1Y3R1cmVzQW5kTWFw
Rm9yTWF0ZXJpYWxpemF0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXRDb25jdXJy
ZW50bHkpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1
cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6OmdldENvbmN1cnJlbnRseSk6CisKKzIwMTMtMDQtMjIgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
Y3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAg
ICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvckNoYWluKToKKyAgICAgICAgKEpT
Qzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJ
ZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJ
bnQpOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAg
KiBydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmg6CisgICAgICAgIChQcm9wZXJ0eVRhYmxl
KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6ZmluZENvbmN1cnJlbnRseSk6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjphZGQpOgorICAgICAgICAo
SlNDOjpQcm9wZXJ0eVRhYmxlOjpyZW1vdmUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxl
OjpyZWluc2VydCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OnJlaGFzaCk6CisgICAg
ICAgICogcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlU
YWJsZTo6UHJvcGVydHlUYWJsZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmZpbmRTdHJ1Y3R1cmVzQW5kTWFwRm9yTWF0ZXJpYWxp
emF0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXRDb25jdXJyZW50bHkpOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmdldENvbmN1cnJlbnRseSk6CisKIDIwMTMtMDQtMjEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBmb3VydGhUaWVyOiBXZWJLaXQncyBidWlsZCBzeXN0ZW0gc2hv
dWxkIHJlbGluayBKYXZhU2NyaXB0Q29yZSBpZiBMTFZNJ3MgbGlicmFyaWVzIGNoYW5nZWQgYnV0
IGl0cyBoZWFkZXJzIGRpZG4ndApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0dldEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTQ4ODUzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MSw3ICs1MSw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20K
ICAgICAKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzSWdub3JlZDsKICAgICBKU0NlbGwqIHNwZWNp
ZmljVmFsdWU7Ci0gICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCisg
ICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkoCiAg
ICAgICAgICpwcm9maWxlZEJsb2NrLT52bSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQsIHNw
ZWNpZmljVmFsdWUpOwogICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQogICAgICAg
ICBzcGVjaWZpY1ZhbHVlID0gMDsKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBHZXRCeUlkU3RhdHVz
Ojpjb21wdXRlRm9yQ2hhaW4oR2V0QgogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXNJZ25vcmVkOwog
ICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKICAgICAgICAgCi0gICAgcmVzdWx0Lm1fb2Zmc2V0
ID0gY3VycmVudFN0cnVjdHVyZS0+Z2V0KAorICAgIHJlc3VsdC5tX29mZnNldCA9IGN1cnJlbnRT
dHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSgKICAgICAgICAgKnByb2ZpbGVkQmxvY2stPnZtKCks
IGlkZW50LCBhdHRyaWJ1dGVzSWdub3JlZCwgc3BlY2lmaWNWYWx1ZSk7CiAgICAgaWYgKGN1cnJl
bnRTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQogICAgICAgICBzcGVjaWZpY1ZhbHVlID0gMDsK
QEAgLTE2Myw3ICsxNjMsNyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVG
b3IoCiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3R1YkluZm8udS5nZXRCeUlkU2Vs
Zi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpOwogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVz
SWdub3JlZDsKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgICAgICByZXN1bHQu
bV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldFdpdGhvdXRNYXRlcmlhbGl6aW5nKAorICAgICAgICBy
ZXN1bHQubV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSgKICAgICAgICAgICAg
ICpwcm9maWxlZEJsb2NrLT52bSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQsIHNwZWNpZmlj
VmFsdWUpOwogICAgICAgICBpZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAg
ICAgIHNwZWNpZmljVmFsdWUgPSAwOwpAQCAtMTg4LDcgKzE4OCw3IEBAIEdldEJ5SWRTdGF0dXMg
R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgIAogICAgICAgICAgICAgdW5z
aWduZWQgYXR0cmlidXRlc0lnbm9yZWQ7CiAgICAgICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFs
dWU7Ci0gICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBteU9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0
V2l0aG91dE1hdGVyaWFsaXppbmcoCisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBteU9mZnNl
dCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KAogICAgICAgICAgICAgICAgICpwcm9maWxl
ZEJsb2NrLT52bSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQsIHNwZWNpZmljVmFsdWUpOwog
ICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgICAgICAg
ICAgc3BlY2lmaWNWYWx1ZSA9IDA7CkBAIC0yNzMsNyArMjczLDcgQEAgR2V0QnlJZFN0YXR1cyBH
ZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIHJlc3VsdC5tX3dhc1NlZW5JbkpJVCA9IGZh
bHNlOyAvLyBUbyBteSBrbm93bGVkZ2Ugbm9ib2R5IHRoYXQgdXNlcyBjb21wdXRlRm9yKFZNJiwg
U3RydWN0dXJlKiwgSWRlbnRpZmllciYpIHJlYWRzIHRoaXMgZmllbGQsIGJ1dCBJIG1pZ2h0IGFz
IHdlbGwgYmUgaG9uZXN0OiBubywgaXQgd2Fzbid0IHNlZW4gaW4gdGhlIEpJVCwgc2luY2UgSSBj
b21wdXRlZCBpdCBzdGF0aWNhbGx5LgogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgSlND
ZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgIHJlc3VsdC5tX29mZnNldCA9IHN0cnVjdHVyZS0+Z2V0
V2l0aG91dE1hdGVyaWFsaXppbmcodm0sIGlkZW50LCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVl
KTsKKyAgICByZXN1bHQubV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSh2bSwg
aWRlbnQsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwogICAgIGlmICghaXNWYWxpZE9mZnNl
dChyZXN1bHQubV9vZmZzZXQpKQogICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhUYWtlc1Ns
b3dQYXRoKTsgLy8gSXQncyBwcm9iYWJseSBhIHByb3RvdHlwZSBsb29rdXAuIEdpdmUgdXAgb24g
bGlmZSBmb3Igbm93LCBldmVuIHRob3VnaCB3ZSBjb3VsZCB0b3RhbGx5IGJlIHdheSBzbWFydGVy
IGFib3V0IGl0LgogICAgIGlmIChhdHRyaWJ1dGVzICYgQWNjZXNzb3IpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lv
biAxNDg4NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgUHV0QnlJZFN0YXR1cyBQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRnJvbQogICAgIAogICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9w
Y29kZSA9PSBMTEludDo6Z2V0T3Bjb2RlKGxsaW50X29wX3B1dF9ieV9pZCkKICAgICAgICAgfHwg
aW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gTExJbnQ6OmdldE9wY29kZShsbGludF9vcF9wdXRf
YnlfaWRfb3V0X29mX2xpbmUpKSB7Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0
cnVjdHVyZS0+Z2V0V2l0aG91dE1hdGVyaWFsaXppbmcoKnByb2ZpbGVkQmxvY2stPnZtKCksIGlk
ZW50KTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25j
dXJyZW50bHkoKnByb2ZpbGVkQmxvY2stPnZtKCksIGlkZW50KTsKICAgICAgICAgaWYgKCFpc1Zh
bGlkT2Zmc2V0KG9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0lu
Zm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICAgICAgCkBAIC02OCw3ICs2
OCw3IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20KICAgICBBU1NF
UlQobmV3U3RydWN0dXJlKTsKICAgICBBU1NFUlQoY2hhaW4pOwogICAgIAotICAgIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCA9IG5ld1N0cnVjdHVyZS0+Z2V0V2l0aG91dE1hdGVyaWFsaXppbmcoKnBy
b2ZpbGVkQmxvY2stPnZtKCksIGlkZW50KTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBu
ZXdTdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSgqcHJvZmlsZWRCbG9jay0+dm0oKSwgaWRlbnQp
OwogICAgIGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKQogICAgICAgICByZXR1cm4gUHV0QnlJ
ZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICAKQEAg
LTEwMiw3ICsxMDIsNyBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3Io
CiAgICAgICAgIAogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF9yZXBsYWNlOiB7CiAgICAgICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9Ci0gICAgICAgICAgICBzdHViSW5mby51LnB1dEJ5SWRS
ZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPmdldFdpdGhvdXRNYXRlcmlhbGl6aW5nKAorICAg
ICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5n
ZXRDb25jdXJyZW50bHkoCiAgICAgICAgICAgICAgICAgKnByb2ZpbGVkQmxvY2stPnZtKCksIGlk
ZW50KTsKICAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewogICAgICAgICAgICAg
cmV0dXJuIFB1dEJ5SWRTdGF0dXMoCkBAIC0xMTgsNyArMTE4LDcgQEAgUHV0QnlJZFN0YXR1cyBQ
dXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF90cmFu
c2l0aW9uX2RpcmVjdDogewogICAgICAgICBBU1NFUlQoc3R1YkluZm8udS5wdXRCeUlkVHJhbnNp
dGlvbi5wcmV2aW91c1N0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52
YWxpZGF0ZWQoKSk7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IAotICAgICAgICAg
ICAgc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1Y3R1cmUtPmdldFdpdGhvdXRNYXRl
cmlhbGl6aW5nKAorICAgICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1
Y3R1cmUtPmdldENvbmN1cnJlbnRseSgKICAgICAgICAgICAgICAgICAqcHJvZmlsZWRCbG9jay0+
dm0oKSwgaWRlbnQpOwogICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7CiAgICAg
ICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cygKQEAgLTE1Miw3ICsxNTIsNyBAQCBQdXRCeUlk
U3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgCiAgICAgdW5zaWduZWQgYXR0
cmlidXRlczsKICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWVJZ25vcmVkOwotICAgIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0V2l0aG91dE1hdGVyaWFsaXppbmcoCisgICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkoCiAgICAg
ICAgIHZtLCBpZGVudCwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZUlnbm9yZWQpOwogICAgIGlm
IChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiAoQWNj
ZXNzb3IgfCBSZWFkT25seSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE0ODg1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjEsNyArMTAyMSw3
IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzVW51c2VkOwog
ICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IHN0cmluZ1Byb3RvdHlwZVN0cnVjdHVyZS0+Z2V0KAorICAgICAgICBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQgPSBzdHJpbmdQcm90b3R5cGVTdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSgK
ICAgICAgICAgICAgIHZtKCksIGlkZW50LCBhdHRyaWJ1dGVzVW51c2VkLCBzcGVjaWZpY1ZhbHVl
KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAJKHJldmlzaW9uIDE0ODg1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNiwxOSArMjM2LDI3IEBAIHZvaWQg
U3RydWN0dXJlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKICAgICBzdGF0aWNfY2FzdDxTdHJ1Y3R1
cmUqPihjZWxsKS0+U3RydWN0dXJlOjp+U3RydWN0dXJlKCk7CiB9CiAKLXZvaWQgU3RydWN0dXJl
OjpmaW5kU3RydWN0dXJlc0FuZE1hcEZvck1hdGVyaWFsaXphdGlvbihWZWN0b3I8U3RydWN0dXJl
KiwgOD4mIHN0cnVjdHVyZXMsIFByb3BlcnR5VGFibGUqJiB0YWJsZSkKK3ZvaWQgU3RydWN0dXJl
OjpmaW5kU3RydWN0dXJlc0FuZE1hcEZvck1hdGVyaWFsaXphdGlvbihWZWN0b3I8U3RydWN0dXJl
KiwgOD4mIHN0cnVjdHVyZXMsIFN0cnVjdHVyZSomIHN0cnVjdHVyZSwgUHJvcGVydHlUYWJsZSom
IHRhYmxlKQogewogICAgIEFTU0VSVChzdHJ1Y3R1cmVzLmlzRW1wdHkoKSk7CiAgICAgdGFibGUg
PSAwOwogCi0gICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXM7IHN0cnVjdHVyZTsg
c3RydWN0dXJlID0gc3RydWN0dXJlLT5wcmV2aW91c0lEKCkpIHsKLSAgICAgICAgaWYgKHN0cnVj
dHVyZS0+cHJvcGVydHlUYWJsZSgpKSB7Ci0gICAgICAgICAgICB0YWJsZSA9IHN0cnVjdHVyZS0+
cHJvcGVydHlUYWJsZSgpLmdldCgpOworICAgIGZvciAoc3RydWN0dXJlID0gdGhpczsgc3RydWN0
dXJlOyBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSkgeworICAgICAgICBzdHJ1
Y3R1cmUtPm1fbG9jay5sb2NrKCk7CisgICAgICAgIAorICAgICAgICB0YWJsZSA9IHN0cnVjdHVy
ZS0+cHJvcGVydHlUYWJsZSgpLmdldCgpOworICAgICAgICBpZiAodGFibGUpIHsKKyAgICAgICAg
ICAgIC8vIExlYXZlIHRoZSBzdHJ1Y3R1cmUgbG9ja2VkLCBzbyB0aGF0IHRoZSBjYWxsZXIgY2Fu
IGRvIHRoaW5ncyB0byBpdCBhdG9taWNhbGx5CisgICAgICAgICAgICAvLyBiZWZvcmUgaXQgbG9z
ZXMgaXRzIHByb3BlcnR5IHRhYmxlLgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICBzdHJ1Y3R1cmVzLmFwcGVuZChzdHJ1Y3R1cmUpOworICAgICAgICBz
dHJ1Y3R1cmUtPm1fbG9jay51bmxvY2soKTsKICAgICB9CisgICAgCisgICAgQVNTRVJUKCFzdHJ1
Y3R1cmUpOworICAgIEFTU0VSVCghdGFibGUpOwogfQogCiB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJp
YWxpemVQcm9wZXJ0eU1hcChWTSYgdm0pCkBAIC0yNTcsMTcgKzI2NSwyNyBAQCB2b2lkIFN0cnVj
dHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChWCiAgICAgQVNTRVJUKCFwcm9wZXJ0eVRhYmxl
KCkpOwogCiAgICAgVmVjdG9yPFN0cnVjdHVyZSosIDg+IHN0cnVjdHVyZXM7CisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmU7CiAgICAgUHJvcGVydHlUYWJsZSogdGFibGU7CiAgICAgCi0gICAgZmlu
ZFN0cnVjdHVyZXNBbmRNYXBGb3JNYXRlcmlhbGl6YXRpb24oc3RydWN0dXJlcywgdGFibGUpOwor
ICAgIGZpbmRTdHJ1Y3R1cmVzQW5kTWFwRm9yTWF0ZXJpYWxpemF0aW9uKHN0cnVjdHVyZXMsIHN0
cnVjdHVyZSwgdGFibGUpOworICAgIAorICAgIGlmICh0YWJsZSkgeworICAgICAgICB0YWJsZSA9
IHRhYmxlLT5jb3B5KHZtLCAwLCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwg
bV9pbmxpbmVDYXBhY2l0eSkpOworICAgICAgICBzdHJ1Y3R1cmUtPm1fbG9jay51bmxvY2soKTsK
KyAgICB9CiAgICAgCisgICAgLy8gTXVzdCBob2xkIHRoZSBsb2NrIG9uIHRoaXMgc3RydWN0dXJl
LCBzaW5jZSB3ZSB3aWxsIGJlIG1vZGlmeWluZyB0aGlzIHN0cnVjdHVyZSdzCisgICAgLy8gcHJv
cGVydHkgbWFwLiBXZSBkb24ndCB3YW50IGdldENvbmN1cnJlbnRseSgpIHRvIHNlZSB0aGUgcHJv
cGVydHkgbWFwIGluIGEgaGFsZi1iYWtlZAorICAgIC8vIHN0YXRlLgorICAgIExvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKICAgICBpZiAoIXRhYmxlKQotICAgICAgICBjcmVhdGVQcm9wZXJ0eU1hcCh2
bSwgbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1faW5saW5lQ2FwYWNpdHkp
KTsKKyAgICAgICAgY3JlYXRlUHJvcGVydHlNYXAobG9ja2VyLCB2bSwgbnVtYmVyT2ZTbG90c0Zv
ckxhc3RPZmZzZXQobV9vZmZzZXQsIG1faW5saW5lQ2FwYWNpdHkpKTsKICAgICBlbHNlCi0gICAg
ICAgIHByb3BlcnR5VGFibGUoKS5zZXQodm0sIHRoaXMsIHRhYmxlLT5jb3B5KHZtLCAwLCBudW1i
ZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV9pbmxpbmVDYXBhY2l0eSkpKTsKKyAg
ICAgICAgcHJvcGVydHlUYWJsZSgpLnNldCh2bSwgdGhpcywgdGFibGUpOwogCiAgICAgZm9yIChz
aXplX3QgaSA9IHN0cnVjdHVyZXMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gc3RydWN0dXJlc1tpXTsKKyAgICAgICAgc3RydWN0dXJlID0gc3RydWN0dXJl
c1tpXTsKICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPm1fbmFtZUluUHJldmlvdXMpCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgUHJvcGVydHlNYXBFbnRyeSBlbnRyeSh2bSwgdGhpcywg
c3RydWN0dXJlLT5tX25hbWVJblByZXZpb3VzLmdldCgpLCBzdHJ1Y3R1cmUtPm1fb2Zmc2V0LCBz
dHJ1Y3R1cmUtPm1fYXR0cmlidXRlc0luUHJldmlvdXMsIHN0cnVjdHVyZS0+bV9zcGVjaWZpY1Zh
bHVlSW5QcmV2aW91cy5nZXQoKSk7CkBAIC01NDQsOCArNTYyLDE0IEBAIFN0cnVjdHVyZSogU3Ry
dWN0dXJlOjpwcmV2ZW50RXh0ZW5zaW9uc1QKIFByb3BlcnR5VGFibGUqIFN0cnVjdHVyZTo6dGFr
ZVByb3BlcnR5VGFibGVPckNsb25lSWZQaW5uZWQoVk0mIHZtLCBTdHJ1Y3R1cmUqIG93bmVyKQog
ewogICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeUZvclBpbm5pbmcodm0pOwor
ICAgIAogICAgIGlmIChtX2lzUGlubmVkUHJvcGVydHlUYWJsZSkKICAgICAgICAgcmV0dXJuIHBy
b3BlcnR5VGFibGUoKS0+Y29weSh2bSwgb3duZXIsIHByb3BlcnR5VGFibGUoKS0+c2l6ZSgpICsg
MSk7CisgICAgCisgICAgLy8gSG9sZCB0aGUgbG9jayB3aGlsZSBzdGVhbGluZyB0aGUgdGFibGUg
LSBzbyB0aGF0IGdldENvbmN1cnJlbnRseSgpIG9uIGFub3RoZXIgdGhyZWFkCisgICAgLy8gd2ls
bCBlaXRoZXIgaGF2ZSB0byBieXBhc3MgdGhpcyBzdHJ1Y3R1cmUsIG9yIHdpbGwgZ2V0IHRvIHVz
ZSB0aGUgcHJvcGVydHkgdGFibGUKKyAgICAvLyBiZWZvcmUgaXQgaXMgc3RvbGVuLgorICAgIExv
Y2tlciBsb2NrZXIobV9sb2NrKTsKICAgICBQcm9wZXJ0eVRhYmxlKiB0YWtlblByb3BlcnR5VGFi
bGUgPSBwcm9wZXJ0eVRhYmxlKCkuZ2V0KCk7CiAgICAgcHJvcGVydHlUYWJsZSgpLmNsZWFyKCk7
CiAgICAgcmV0dXJuIHRha2VuUHJvcGVydHlUYWJsZTsKQEAgLTc0NywyNCArNzcxLDMyIEBAIFBy
b3BlcnR5VGFibGUqIFN0cnVjdHVyZTo6Y29weVByb3BlcnR5VGEKICAgICByZXR1cm4gUHJvcGVy
dHlUYWJsZTo6Y3JlYXRlKHZtLCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwg
bV9pbmxpbmVDYXBhY2l0eSkpOwogfQogCi1Qcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldFdp
dGhvdXRNYXRlcmlhbGl6aW5nKFZNJiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpCitQcm9wZXJ0eU9mZnNldCBT
dHJ1Y3R1cmU6OmdldENvbmN1cnJlbnRseShWTSYsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQogeworICAgIC8v
IFdlIGNhbid0IGhhbmRsZSB1bmNhY2hlYWJsZSBkaWN0aW9uYXJpZXMgYmVjYXVzZSB3ZSBjYW4n
dCBoYW5kbGUgY29uY3VycmVudCByZW1vdmUncworICAgIC8vIGZyb20gdGhlIHByb3BlcnR5IG1h
cHMuCisgICAgUkVMRUFTRV9BU1NFUlQoIWlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOworICAg
IAogICAgIFZlY3RvcjxTdHJ1Y3R1cmUqLCA4PiBzdHJ1Y3R1cmVzOworICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlOwogICAgIFByb3BlcnR5VGFibGUqIHRhYmxlOwogICAgIAotICAgIGZpbmRTdHJ1
Y3R1cmVzQW5kTWFwRm9yTWF0ZXJpYWxpemF0aW9uKHN0cnVjdHVyZXMsIHRhYmxlKTsKKyAgICBm
aW5kU3RydWN0dXJlc0FuZE1hcEZvck1hdGVyaWFsaXphdGlvbihzdHJ1Y3R1cmVzLCBzdHJ1Y3R1
cmUsIHRhYmxlKTsKICAgICAKICAgICBpZiAodGFibGUpIHsKICAgICAgICAgUHJvcGVydHlNYXBF
bnRyeSogZW50cnkgPSB0YWJsZS0+ZmluZChwcm9wZXJ0eU5hbWUudWlkKCkpLmZpcnN0OwogICAg
ICAgICBpZiAoZW50cnkpIHsKICAgICAgICAgICAgIGF0dHJpYnV0ZXMgPSBlbnRyeS0+YXR0cmli
dXRlczsKICAgICAgICAgICAgIHNwZWNpZmljVmFsdWUgPSBlbnRyeS0+c3BlY2lmaWNWYWx1ZS5n
ZXQoKTsKLSAgICAgICAgICAgIHJldHVybiBlbnRyeS0+b2Zmc2V0OworICAgICAgICAgICAgUHJv
cGVydHlPZmZzZXQgcmVzdWx0ID0gZW50cnktPm9mZnNldDsKKyAgICAgICAgICAgIHN0cnVjdHVy
ZS0+bV9sb2NrLnVubG9jaygpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAg
fQorICAgICAgICBzdHJ1Y3R1cmUtPm1fbG9jay51bmxvY2soKTsKICAgICB9CiAgICAgCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gc3RydWN0dXJlcy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVzW2ldOworICAgICAgICBzdHJ1Y3R1cmUgPSBz
dHJ1Y3R1cmVzW2ldOwogICAgICAgICBpZiAoc3RydWN0dXJlLT5tX25hbWVJblByZXZpb3VzLmdl
dCgpICE9IHByb3BlcnR5TmFtZS51aWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAKQEAgLTgyMSw2ICs4NTMsOCBAQCB2b2lkIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5QWxsRnVuY3Rp
b25zKFZNCiAKIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6cHV0U3BlY2lmaWNWYWx1ZShWTSYg
dm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2Vs
bCogc3BlY2lmaWNWYWx1ZSkKIHsKKyAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCiAg
ICAgQVNTRVJUKCFKU0M6OmlzVmFsaWRPZmZzZXQoZ2V0KHZtLCBwcm9wZXJ0eU5hbWUpKSk7CiAK
ICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CkBAIC04MzAsNyArODY0LDcgQEAgUHJvcGVydHlPZmZz
ZXQgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbAogICAgIFN0cmluZ0ltcGwqIHJlcCA9IHByb3Bl
cnR5TmFtZS51aWQoKTsKIAogICAgIGlmICghcHJvcGVydHlUYWJsZSgpKQotICAgICAgICBjcmVh
dGVQcm9wZXJ0eU1hcCh2bSk7CisgICAgICAgIGNyZWF0ZVByb3BlcnR5TWFwKGxvY2tlciwgdm0p
OwogCiAgICAgUHJvcGVydHlPZmZzZXQgbmV3T2Zmc2V0ID0gcHJvcGVydHlUYWJsZSgpLT5uZXh0
T2Zmc2V0KG1faW5saW5lQ2FwYWNpdHkpOwogCkBAIC04NDIsNiArODc2LDggQEAgUHJvcGVydHlP
ZmZzZXQgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbAogCiBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1
cmU6OnJlbW92ZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogeworICAgIExvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKKyAgICAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAKICAgICBTdHJpbmdJ
bXBsKiByZXAgPSBwcm9wZXJ0eU5hbWUudWlkKCk7CkBAIC04NjIsNyArODk4LDcgQEAgUHJvcGVy
dHlPZmZzZXQgU3RydWN0dXJlOjpyZW1vdmUoUHJvcGVydAogICAgIHJldHVybiBvZmZzZXQ7CiB9
CiAKLXZvaWQgU3RydWN0dXJlOjpjcmVhdGVQcm9wZXJ0eU1hcChWTSYgdm0sIHVuc2lnbmVkIGNh
cGFjaXR5KQordm9pZCBTdHJ1Y3R1cmU6OmNyZWF0ZVByb3BlcnR5TWFwKGNvbnN0IExvY2tlciYs
IFZNJiB2bSwgdW5zaWduZWQgY2FwYWNpdHkpCiB7CiAgICAgQVNTRVJUKCFwcm9wZXJ0eVRhYmxl
KCkpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAko
cmV2aXNpb24gMTQ4ODUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJKU1R5cGVJ
bmZvLmgiCiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgIldlYWsuaCIKKyNpbmNs
dWRlIDx3dGYvQnl0ZVNwaW5Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwu
aD4KQEAgLTY5LDYgKzcwLDkgQEAgcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBTdHJ1Y3R1cmVU
cmFuc2l0aW9uVGFibGU7CiAKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworICAgIAorICAgIHR5
cGVkZWYgQnl0ZVNwaW5Mb2NrIExvY2s7CisgICAgdHlwZWRlZiBCeXRlU3BpbkxvY2tlciBMb2Nr
ZXI7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyosIElu
ZGV4aW5nVHlwZSA9IE5vbkFycmF5LCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSA9IDApOwogCkBA
IC0yMzYsOCArMjQwLDggQEAgcHVibGljOgogICAgIFByb3BlcnR5T2Zmc2V0IGdldChWTSYsIGNv
bnN0IFdURjo6U3RyaW5nJiBuYW1lKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBQcm9wZXJ0eU9m
ZnNldCBnZXQoVk0mLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwq
JiBzcGVjaWZpY1ZhbHVlKTsKIAotICAgIFByb3BlcnR5T2Zmc2V0IGdldFdpdGhvdXRNYXRlcmlh
bGl6aW5nKFZNJiwgUHJvcGVydHlOYW1lKTsKLSAgICBQcm9wZXJ0eU9mZnNldCBnZXRXaXRob3V0
TWF0ZXJpYWxpemluZyhWTSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpT
Q2VsbComIHNwZWNpZmljVmFsdWUpOworICAgIFByb3BlcnR5T2Zmc2V0IGdldENvbmN1cnJlbnRs
eShWTSYsIFByb3BlcnR5TmFtZSk7CisgICAgUHJvcGVydHlPZmZzZXQgZ2V0Q29uY3VycmVudGx5
KFZNJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lm
aWNWYWx1ZSk7CiAKICAgICBib29sIGhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSBjb25zdCB7
IHJldHVybiBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXM7IH0KICAgICBib29sIGhhc1JlYWRP
bmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8oKSBjb25zdCB7IHJldHVy
biBtX2hhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG87IH0K
QEAgLTM2MSw4ICszNjUsMTIgQEAgcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmUoVk0mLCBjb25zdCBT
dHJ1Y3R1cmUqKTsKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZShWTSYsIGNvbnN0IFN0
cnVjdHVyZSopOwotICAgICAgICAKLSAgICB2b2lkIGZpbmRTdHJ1Y3R1cmVzQW5kTWFwRm9yTWF0
ZXJpYWxpemF0aW9uKFZlY3RvcjxTdHJ1Y3R1cmUqLCA4PiYgc3RydWN0dXJlcywgUHJvcGVydHlU
YWJsZSomKTsKKyAgICAKKyAgICAvLyBUaGlzIHdpbGwgcmV0dXJuIHRoZSBzdHJ1Y3R1cmUgdGhh
dCBoYXMgYSB1c2FibGUgcHJvcGVydHkgdGFibGUsIHRoYXQgcHJvcGVydHkgdGFibGUsCisgICAg
Ly8gYW5kIHRoZSBsaXN0IG9mIHN0cnVjdHVyZXMgdGhhdCB3ZSB2aXNpdGVkIGJlZm9yZSB3ZSBn
b3QgdG8gaXQuIElmIGl0IHJldHVybnMgYQorICAgIC8vIG5vbi1udWxsIHN0cnVjdHVyZSwgaXQg
d2lsbCBhbHNvIGxvY2sgdGhlIHN0cnVjdHVyZSB0aGF0IGl0IHJldHVybnM7IGl0IGlzIHlvdXIg
am9iCisgICAgLy8gdG8gdW5sb2NrIGl0LgorICAgIHZvaWQgZmluZFN0cnVjdHVyZXNBbmRNYXBG
b3JNYXRlcmlhbGl6YXRpb24oVmVjdG9yPFN0cnVjdHVyZSosIDg+JiBzdHJ1Y3R1cmVzLCBTdHJ1
Y3R1cmUqJiwgUHJvcGVydHlUYWJsZSomKTsKICAgICAKICAgICB0eXBlZGVmIGVudW0geyAKICAg
ICAgICAgTm9uZURpY3Rpb25hcnlLaW5kID0gMCwKQEAgLTM3NCw3ICszODIsNyBAQCBwcml2YXRl
OgogICAgIFByb3BlcnR5T2Zmc2V0IHB1dFNwZWNpZmljVmFsdWUoVk0mLCBQcm9wZXJ0eU5hbWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7CiAgICAgUHJvcGVy
dHlPZmZzZXQgcmVtb3ZlKFByb3BlcnR5TmFtZSk7CiAKLSAgICB2b2lkIGNyZWF0ZVByb3BlcnR5
TWFwKFZNJiwgdW5zaWduZWQga2V5Q291bnQgPSAwKTsKKyAgICB2b2lkIGNyZWF0ZVByb3BlcnR5
TWFwKGNvbnN0IExvY2tlciYsIFZNJiwgdW5zaWduZWQga2V5Q291bnQgPSAwKTsKICAgICB2b2lk
IGNoZWNrQ29uc2lzdGVuY3koKTsKIAogICAgIGJvb2wgZGVzcGVjaWZ5RnVuY3Rpb24oVk0mLCBQ
cm9wZXJ0eU5hbWUpOwpAQCAtNDczLDggKzQ4MSwxMCBAQCBwcml2YXRlOgogCiAgICAgVHlwZUlu
Zm8gbV90eXBlSW5mbzsKICAgICBJbmRleGluZ1R5cGUgbV9pbmRleGluZ1R5cGU7Ci0KICAgICB1
aW50OF90IG1faW5saW5lQ2FwYWNpdHk7CisgICAgCisgICAgTG9jayBtX2xvY2s7CisgICAgCiAg
ICAgdW5zaWduZWQgbV9kaWN0aW9uYXJ5S2luZCA6IDI7CiAgICAgYm9vbCBtX2lzUGlubmVkUHJv
cGVydHlUYWJsZSA6IDE7CiAgICAgYm9vbCBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMgOiAx
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlu
bGluZXMuaAkocmV2aXNpb24gMTQ4ODUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCwxMSArNzgsMTEgQEAg
aW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0KFZNJgogICAgIHJldHVybiBlbnRy
eSA/IGVudHJ5LT5vZmZzZXQgOiBpbnZhbGlkT2Zmc2V0OwogfQogICAgIAotaW5saW5lIFByb3Bl
cnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0V2l0aG91dE1hdGVyaWFsaXppbmcoVk0mIHZtLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQoraW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6
Z2V0Q29uY3VycmVudGx5KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAg
ICB1bnNpZ25lZCBhdHRyaWJ1dGVzSWdub3JlZDsKICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWVJ
Z25vcmVkOwotICAgIHJldHVybiBnZXRXaXRob3V0TWF0ZXJpYWxpemluZygKKyAgICByZXR1cm4g
Z2V0Q29uY3VycmVudGx5KAogICAgICAgICB2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzSWdu
b3JlZCwgc3BlY2lmaWNWYWx1ZUlnbm9yZWQpOwogfQogCg==
</data>
<flag name="review"
          id="220788"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199127</attachid>
            <date>2013-04-22 16:21:22 -0700</date>
            <delta_ts>2013-04-22 16:21:22 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>18229</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ4OTA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBA
CisyMDEzLTA0LTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogQ3JlYXRlIGFuIGVxdWl2YWxlbnQgb2YgU3RydWN0dXJlOjpnZXQoKSB0aGF0
IGNhbiB3b3JrIGZyb20gYSBjb21waWxhdGlvbiB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDk4NworCisgICAgICAgIFJldmlld2VkIGJ5
IEdlb2ZmcmV5IEdhcmVuLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjb21wbGV0ZXMgdGhlIHdv
cmsgc3RhcnRlZCBieSByMTQ4NTcwLiBUaGF0IHBhdGNoIG1hZGUgaXQgcG9zc2libGUgdG8gZG8K
KyAgICAgICAgU3RydWN0dXJlOjpnZXQoKSB3aXRob3V0IG1vZGlmeWluZyBTdHJ1Y3R1cmUuIFRo
aXMgcGF0Y2ggdGFrZXMgdGhpcyBmdXJ0aGVyLCBhbmQKKyAgICAgICAgbWFrZXMgdGhpcyB0aHJl
YWQtc2FmZSAoZm9yIG5vbi11bmNhY2hlYWJsZS1kaWN0aW9uYXJpZXMpIHZpYQorICAgICAgICBT
dHJ1Y3R1cmU6OmdldENvbmN1cnJlbnRseSgpLiBUaGlzIG1ldGhvZCBub3Qgb25seSBkb2Vzbid0
IG1vZGlmeSBTdHJ1Y3R1cmUsIGJ1dAorICAgICAgICBhbHNvIGVuc3VyZXMgdGhhdCBhbnkgY29u
Y3VycmVudCBhdHRlbXB0cyB0byBhZGQgdG8sIHJlbW92ZSBmcm9tLCBvciBzdGVhbCB0aGUKKyAg
ICAgICAgdGFibGUgZnJvbSB0aGF0IHN0cnVjdHVyZSBkb2Vzbid0IG1lc3MgdXAgdGhlIHJlc3Vs
dCBvZiB0aGUgY2FsbC4gVGhlIGNhbGwgbWF5CisgICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0
IGV2ZW4gaWYgYSBwcm9wZXJ0eSBpcyAqanVzdCogYWJvdXQgdG8gYmUgYWRkZWQsIGJ1dCBpdCB3
aWxsCisgICAgICAgIG5ldmVyIGRvIHRoZSByZXZlcnNlOiBpZiBpdCByZXR1cm5zIGEgcHJvcGVy
dHkgdGhlbiB5b3UgY2FuIGJlIHN1cmUgdGhhdCB0aGUKKyAgICAgICAgc3RydWN0dXJlIHJlYWxs
eSBkb2VzIGhhdmUgdGhhdCBwcm9wZXJ0eSBhbmQgYWx3YXlzIHdpbGwgaGF2ZSBpdC4KKworICAg
ICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6
Y29tcHV0ZUZvckNoYWluKToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZv
cik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6
OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlNDOjpQdXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6aXNTdHJpbmdQcm90b3R5cGVNZXRob2RTYW5l
KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmg6CisgICAgICAgIChQ
cm9wZXJ0eVRhYmxlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6ZmluZENvbmN1cnJl
bnRseSk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjphZGQp
OgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpyZW1vdmUpOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eVRhYmxlOjpyZWluc2VydCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OnJl
aGFzaCk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmZpbmRTdHJ1Y3R1cmVzQW5kTWFw
Rm9yTWF0ZXJpYWxpemF0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXRDb25jdXJy
ZW50bHkpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1
cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6OmdldENvbmN1cnJlbnRseSk6CisKIDIwMTMtMDQtMjEgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBmb3VydGhUaWVyOiBXZWJLaXQncyBidWls
ZCBzeXN0ZW0gc2hvdWxkIHJlbGluayBKYXZhU2NyaXB0Q29yZSBpZiBMTFZNJ3MgbGlicmFyaWVz
IGNoYW5nZWQgYnV0IGl0cyBoZWFkZXJzIGRpZG4ndApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTQ4ODUzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6
Y29tcHV0ZUZyb20KICAgICAKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzSWdub3JlZDsKICAgICBK
U0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0
dXJlLT5nZXQoCisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25j
dXJyZW50bHkoCiAgICAgICAgICpwcm9maWxlZEJsb2NrLT52bSgpLCBpZGVudCwgYXR0cmlidXRl
c0lnbm9yZWQsIHNwZWNpZmljVmFsdWUpOwogICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFy
eSgpKQogICAgICAgICBzcGVjaWZpY1ZhbHVlID0gMDsKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBH
ZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yQ2hhaW4oR2V0QgogICAgIHVuc2lnbmVkIGF0dHJpYnV0
ZXNJZ25vcmVkOwogICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKICAgICAgICAgCi0gICAgcmVz
dWx0Lm1fb2Zmc2V0ID0gY3VycmVudFN0cnVjdHVyZS0+Z2V0KAorICAgIHJlc3VsdC5tX29mZnNl
dCA9IGN1cnJlbnRTdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSgKICAgICAgICAgKnByb2ZpbGVk
QmxvY2stPnZtKCksIGlkZW50LCBhdHRyaWJ1dGVzSWdub3JlZCwgc3BlY2lmaWNWYWx1ZSk7CiAg
ICAgaWYgKGN1cnJlbnRTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQogICAgICAgICBzcGVjaWZp
Y1ZhbHVlID0gMDsKQEAgLTE2Myw3ICsxNjMsNyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3R1YkluZm8u
dS5nZXRCeUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpOwogICAgICAgICB1bnNpZ25l
ZCBhdHRyaWJ1dGVzSWdub3JlZDsKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAg
ICAgICByZXN1bHQubV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldFdpdGhvdXRNYXRlcmlhbGl6aW5n
KAorICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSgK
ICAgICAgICAgICAgICpwcm9maWxlZEJsb2NrLT52bSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9y
ZWQsIHNwZWNpZmljVmFsdWUpOwogICAgICAgICBpZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnko
KSkKICAgICAgICAgICAgIHNwZWNpZmljVmFsdWUgPSAwOwpAQCAtMTg4LDcgKzE4OCw3IEBAIEdl
dEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlc0lnbm9yZWQ7CiAgICAgICAgICAgICBKU0NlbGwq
IHNwZWNpZmljVmFsdWU7Ci0gICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBteU9mZnNldCA9IHN0
cnVjdHVyZS0+Z2V0V2l0aG91dE1hdGVyaWFsaXppbmcoCisgICAgICAgICAgICBQcm9wZXJ0eU9m
ZnNldCBteU9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KAogICAgICAgICAgICAg
ICAgICpwcm9maWxlZEJsb2NrLT52bSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQsIHNwZWNp
ZmljVmFsdWUpOwogICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCiAg
ICAgICAgICAgICAgICAgc3BlY2lmaWNWYWx1ZSA9IDA7CkBAIC0yNzMsNyArMjczLDcgQEAgR2V0
QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIHJlc3VsdC5tX3dhc1Nl
ZW5JbkpJVCA9IGZhbHNlOyAvLyBUbyBteSBrbm93bGVkZ2Ugbm9ib2R5IHRoYXQgdXNlcyBjb21w
dXRlRm9yKFZNJiwgU3RydWN0dXJlKiwgSWRlbnRpZmllciYpIHJlYWRzIHRoaXMgZmllbGQsIGJ1
dCBJIG1pZ2h0IGFzIHdlbGwgYmUgaG9uZXN0OiBubywgaXQgd2Fzbid0IHNlZW4gaW4gdGhlIEpJ
VCwgc2luY2UgSSBjb21wdXRlZCBpdCBzdGF0aWNhbGx5LgogICAgIHVuc2lnbmVkIGF0dHJpYnV0
ZXM7CiAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgIHJlc3VsdC5tX29mZnNldCA9IHN0
cnVjdHVyZS0+Z2V0V2l0aG91dE1hdGVyaWFsaXppbmcodm0sIGlkZW50LCBhdHRyaWJ1dGVzLCBz
cGVjaWZpY1ZhbHVlKTsKKyAgICByZXN1bHQubV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1
cnJlbnRseSh2bSwgaWRlbnQsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwogICAgIGlmICgh
aXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKQogICAgICAgICByZXR1cm4gR2V0QnlJZFN0
YXR1cyhUYWtlc1Nsb3dQYXRoKTsgLy8gSXQncyBwcm9iYWJseSBhIHByb3RvdHlwZSBsb29rdXAu
IEdpdmUgdXAgb24gbGlmZSBmb3Igbm93LCBldmVuIHRob3VnaCB3ZSBjb3VsZCB0b3RhbGx5IGJl
IHdheSBzbWFydGVyIGFib3V0IGl0LgogICAgIGlmIChhdHRyaWJ1dGVzICYgQWNjZXNzb3IpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
Y3BwCShyZXZpc2lvbiAxNDg4NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgUHV0QnlJ
ZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbQogICAgIAogICAgIGlmIChpbnN0cnVj
dGlvblswXS51Lm9wY29kZSA9PSBMTEludDo6Z2V0T3Bjb2RlKGxsaW50X29wX3B1dF9ieV9pZCkK
ICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gTExJbnQ6OmdldE9wY29kZShs
bGludF9vcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUpKSB7Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0V2l0aG91dE1hdGVyaWFsaXppbmcoKnByb2ZpbGVkQmxv
Y2stPnZtKCksIGlkZW50KTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0
dXJlLT5nZXRDb25jdXJyZW50bHkoKnByb2ZpbGVkQmxvY2stPnZtKCksIGlkZW50KTsKICAgICAg
ICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gUHV0QnlJ
ZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICAgICAg
CkBAIC02OCw3ICs2OCw3IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZy
b20KICAgICBBU1NFUlQobmV3U3RydWN0dXJlKTsKICAgICBBU1NFUlQoY2hhaW4pOwogICAgIAot
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG5ld1N0cnVjdHVyZS0+Z2V0V2l0aG91dE1hdGVy
aWFsaXppbmcoKnByb2ZpbGVkQmxvY2stPnZtKCksIGlkZW50KTsKKyAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQgPSBuZXdTdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSgqcHJvZmlsZWRCbG9jay0+
dm0oKSwgaWRlbnQpOwogICAgIGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKQogICAgICAgICBy
ZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0
KTsKICAgICAKQEAgLTEwMiw3ICsxMDIsNyBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6
OmNvbXB1dGVGb3IoCiAgICAgICAgIAogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF9yZXBsYWNl
OiB7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9Ci0gICAgICAgICAgICBzdHViSW5m
by51LnB1dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPmdldFdpdGhvdXRNYXRlcmlh
bGl6aW5nKAorICAgICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0
U3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkoCiAgICAgICAgICAgICAgICAgKnByb2ZpbGVkQmxv
Y2stPnZtKCksIGlkZW50KTsKICAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewog
ICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoCkBAIC0xMTgsNyArMTE4LDcgQEAgUHV0
QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIGNhc2UgYWNjZXNzX3B1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDogewogICAgICAgICBBU1NFUlQoc3R1YkluZm8udS5w
dXRCeUlkVHJhbnNpdGlvbi5wcmV2aW91c1N0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRT
ZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9
IAotICAgICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1Y3R1cmUtPmdl
dFdpdGhvdXRNYXRlcmlhbGl6aW5nKAorICAgICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlkVHJh
bnNpdGlvbi5zdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSgKICAgICAgICAgICAgICAgICAqcHJv
ZmlsZWRCbG9jay0+dm0oKSwgaWRlbnQpOwogICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChvZmZz
ZXQpKSB7CiAgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cygKQEAgLTE1Miw3ICsxNTIs
NyBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgCiAgICAg
dW5zaWduZWQgYXR0cmlidXRlczsKICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWVJZ25vcmVkOwot
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0V2l0aG91dE1hdGVyaWFs
aXppbmcoCisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25jdXJy
ZW50bHkoCiAgICAgICAgIHZtLCBpZGVudCwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZUlnbm9y
ZWQpOwogICAgIGlmIChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKICAgICAgICAgaWYgKGF0dHJp
YnV0ZXMgJiAoQWNjZXNzb3IgfCBSZWFkT25seSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE0ODg1MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
MjEsNyArMTAyMSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1
dGVzVW51c2VkOwogICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgICAgIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCA9IHN0cmluZ1Byb3RvdHlwZVN0cnVjdHVyZS0+Z2V0KAorICAgICAg
ICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJpbmdQcm90b3R5cGVTdHJ1Y3R1cmUtPmdldENv
bmN1cnJlbnRseSgKICAgICAgICAgICAgIHZtKCksIGlkZW50LCBhdHRyaWJ1dGVzVW51c2VkLCBz
cGVjaWZpY1ZhbHVlKTsKICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAJKHJldmlzaW9uIDE0ODg1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNiwxOSArMjM2
LDI3IEBAIHZvaWQgU3RydWN0dXJlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKICAgICBzdGF0aWNf
Y2FzdDxTdHJ1Y3R1cmUqPihjZWxsKS0+U3RydWN0dXJlOjp+U3RydWN0dXJlKCk7CiB9CiAKLXZv
aWQgU3RydWN0dXJlOjpmaW5kU3RydWN0dXJlc0FuZE1hcEZvck1hdGVyaWFsaXphdGlvbihWZWN0
b3I8U3RydWN0dXJlKiwgOD4mIHN0cnVjdHVyZXMsIFByb3BlcnR5VGFibGUqJiB0YWJsZSkKK3Zv
aWQgU3RydWN0dXJlOjpmaW5kU3RydWN0dXJlc0FuZE1hcEZvck1hdGVyaWFsaXphdGlvbihWZWN0
b3I8U3RydWN0dXJlKiwgOD4mIHN0cnVjdHVyZXMsIFN0cnVjdHVyZSomIHN0cnVjdHVyZSwgUHJv
cGVydHlUYWJsZSomIHRhYmxlKQogewogICAgIEFTU0VSVChzdHJ1Y3R1cmVzLmlzRW1wdHkoKSk7
CiAgICAgdGFibGUgPSAwOwogCi0gICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXM7
IHN0cnVjdHVyZTsgc3RydWN0dXJlID0gc3RydWN0dXJlLT5wcmV2aW91c0lEKCkpIHsKLSAgICAg
ICAgaWYgKHN0cnVjdHVyZS0+cHJvcGVydHlUYWJsZSgpKSB7Ci0gICAgICAgICAgICB0YWJsZSA9
IHN0cnVjdHVyZS0+cHJvcGVydHlUYWJsZSgpLmdldCgpOworICAgIGZvciAoc3RydWN0dXJlID0g
dGhpczsgc3RydWN0dXJlOyBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSkgewor
ICAgICAgICBzdHJ1Y3R1cmUtPm1fbG9jay5sb2NrKCk7CisgICAgICAgIAorICAgICAgICB0YWJs
ZSA9IHN0cnVjdHVyZS0+cHJvcGVydHlUYWJsZSgpLmdldCgpOworICAgICAgICBpZiAodGFibGUp
IHsKKyAgICAgICAgICAgIC8vIExlYXZlIHRoZSBzdHJ1Y3R1cmUgbG9ja2VkLCBzbyB0aGF0IHRo
ZSBjYWxsZXIgY2FuIGRvIHRoaW5ncyB0byBpdCBhdG9taWNhbGx5CisgICAgICAgICAgICAvLyBi
ZWZvcmUgaXQgbG9zZXMgaXRzIHByb3BlcnR5IHRhYmxlLgogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdHJ1Y3R1cmVzLmFwcGVuZChzdHJ1Y3R1cmUp
OworICAgICAgICBzdHJ1Y3R1cmUtPm1fbG9jay51bmxvY2soKTsKICAgICB9CisgICAgCisgICAg
QVNTRVJUKCFzdHJ1Y3R1cmUpOworICAgIEFTU0VSVCghdGFibGUpOwogfQogCiB2b2lkIFN0cnVj
dHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChWTSYgdm0pCkBAIC0yNTcsMTcgKzI2NSwyNyBA
QCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChWCiAgICAgQVNTRVJUKCFw
cm9wZXJ0eVRhYmxlKCkpOwogCiAgICAgVmVjdG9yPFN0cnVjdHVyZSosIDg+IHN0cnVjdHVyZXM7
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7CiAgICAgUHJvcGVydHlUYWJsZSogdGFibGU7CiAg
ICAgCi0gICAgZmluZFN0cnVjdHVyZXNBbmRNYXBGb3JNYXRlcmlhbGl6YXRpb24oc3RydWN0dXJl
cywgdGFibGUpOworICAgIGZpbmRTdHJ1Y3R1cmVzQW5kTWFwRm9yTWF0ZXJpYWxpemF0aW9uKHN0
cnVjdHVyZXMsIHN0cnVjdHVyZSwgdGFibGUpOworICAgIAorICAgIGlmICh0YWJsZSkgeworICAg
ICAgICB0YWJsZSA9IHRhYmxlLT5jb3B5KHZtLCAwLCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNl
dChtX29mZnNldCwgbV9pbmxpbmVDYXBhY2l0eSkpOworICAgICAgICBzdHJ1Y3R1cmUtPm1fbG9j
ay51bmxvY2soKTsKKyAgICB9CiAgICAgCisgICAgLy8gTXVzdCBob2xkIHRoZSBsb2NrIG9uIHRo
aXMgc3RydWN0dXJlLCBzaW5jZSB3ZSB3aWxsIGJlIG1vZGlmeWluZyB0aGlzIHN0cnVjdHVyZSdz
CisgICAgLy8gcHJvcGVydHkgbWFwLiBXZSBkb24ndCB3YW50IGdldENvbmN1cnJlbnRseSgpIHRv
IHNlZSB0aGUgcHJvcGVydHkgbWFwIGluIGEgaGFsZi1iYWtlZAorICAgIC8vIHN0YXRlLgorICAg
IExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICBpZiAoIXRhYmxlKQotICAgICAgICBjcmVhdGVQ
cm9wZXJ0eU1hcCh2bSwgbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1faW5s
aW5lQ2FwYWNpdHkpKTsKKyAgICAgICAgY3JlYXRlUHJvcGVydHlNYXAobG9ja2VyLCB2bSwgbnVt
YmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1faW5saW5lQ2FwYWNpdHkpKTsKICAg
ICBlbHNlCi0gICAgICAgIHByb3BlcnR5VGFibGUoKS5zZXQodm0sIHRoaXMsIHRhYmxlLT5jb3B5
KHZtLCAwLCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV9pbmxpbmVDYXBh
Y2l0eSkpKTsKKyAgICAgICAgcHJvcGVydHlUYWJsZSgpLnNldCh2bSwgdGhpcywgdGFibGUpOwog
CiAgICAgZm9yIChzaXplX3QgaSA9IHN0cnVjdHVyZXMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3RydWN0dXJlc1tpXTsKKyAgICAgICAgc3RydWN0dXJl
ID0gc3RydWN0dXJlc1tpXTsKICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPm1fbmFtZUluUHJldmlv
dXMpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgUHJvcGVydHlNYXBFbnRyeSBlbnRy
eSh2bSwgdGhpcywgc3RydWN0dXJlLT5tX25hbWVJblByZXZpb3VzLmdldCgpLCBzdHJ1Y3R1cmUt
Pm1fb2Zmc2V0LCBzdHJ1Y3R1cmUtPm1fYXR0cmlidXRlc0luUHJldmlvdXMsIHN0cnVjdHVyZS0+
bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cy5nZXQoKSk7CkBAIC01NDQsOCArNTYyLDE0IEBAIFN0
cnVjdHVyZSogU3RydWN0dXJlOjpwcmV2ZW50RXh0ZW5zaW9uc1QKIFByb3BlcnR5VGFibGUqIFN0
cnVjdHVyZTo6dGFrZVByb3BlcnR5VGFibGVPckNsb25lSWZQaW5uZWQoVk0mIHZtLCBTdHJ1Y3R1
cmUqIG93bmVyKQogewogICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeUZvclBp
bm5pbmcodm0pOworICAgIAogICAgIGlmIChtX2lzUGlubmVkUHJvcGVydHlUYWJsZSkKICAgICAg
ICAgcmV0dXJuIHByb3BlcnR5VGFibGUoKS0+Y29weSh2bSwgb3duZXIsIHByb3BlcnR5VGFibGUo
KS0+c2l6ZSgpICsgMSk7CisgICAgCisgICAgLy8gSG9sZCB0aGUgbG9jayB3aGlsZSBzdGVhbGlu
ZyB0aGUgdGFibGUgLSBzbyB0aGF0IGdldENvbmN1cnJlbnRseSgpIG9uIGFub3RoZXIgdGhyZWFk
CisgICAgLy8gd2lsbCBlaXRoZXIgaGF2ZSB0byBieXBhc3MgdGhpcyBzdHJ1Y3R1cmUsIG9yIHdp
bGwgZ2V0IHRvIHVzZSB0aGUgcHJvcGVydHkgdGFibGUKKyAgICAvLyBiZWZvcmUgaXQgaXMgc3Rv
bGVuLgorICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICBQcm9wZXJ0eVRhYmxlKiB0YWtl
blByb3BlcnR5VGFibGUgPSBwcm9wZXJ0eVRhYmxlKCkuZ2V0KCk7CiAgICAgcHJvcGVydHlUYWJs
ZSgpLmNsZWFyKCk7CiAgICAgcmV0dXJuIHRha2VuUHJvcGVydHlUYWJsZTsKQEAgLTc0NywyNCAr
NzcxLDMyIEBAIFByb3BlcnR5VGFibGUqIFN0cnVjdHVyZTo6Y29weVByb3BlcnR5VGEKICAgICBy
ZXR1cm4gUHJvcGVydHlUYWJsZTo6Y3JlYXRlKHZtLCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNl
dChtX29mZnNldCwgbV9pbmxpbmVDYXBhY2l0eSkpOwogfQogCi1Qcm9wZXJ0eU9mZnNldCBTdHJ1
Y3R1cmU6OmdldFdpdGhvdXRNYXRlcmlhbGl6aW5nKFZNJiwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpCitQcm9w
ZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldENvbmN1cnJlbnRseShWTSYsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVl
KQogeworICAgIC8vIFdlIGNhbid0IGhhbmRsZSB1bmNhY2hlYWJsZSBkaWN0aW9uYXJpZXMgYmVj
YXVzZSB3ZSBjYW4ndCBoYW5kbGUgY29uY3VycmVudCByZW1vdmUncworICAgIC8vIGZyb20gdGhl
IHByb3BlcnR5IG1hcHMuCisgICAgUkVMRUFTRV9BU1NFUlQoIWlzVW5jYWNoZWFibGVEaWN0aW9u
YXJ5KCkpOworICAgIAogICAgIFZlY3RvcjxTdHJ1Y3R1cmUqLCA4PiBzdHJ1Y3R1cmVzOworICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlOwogICAgIFByb3BlcnR5VGFibGUqIHRhYmxlOwogICAgIAot
ICAgIGZpbmRTdHJ1Y3R1cmVzQW5kTWFwRm9yTWF0ZXJpYWxpemF0aW9uKHN0cnVjdHVyZXMsIHRh
YmxlKTsKKyAgICBmaW5kU3RydWN0dXJlc0FuZE1hcEZvck1hdGVyaWFsaXphdGlvbihzdHJ1Y3R1
cmVzLCBzdHJ1Y3R1cmUsIHRhYmxlKTsKICAgICAKICAgICBpZiAodGFibGUpIHsKICAgICAgICAg
UHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSB0YWJsZS0+ZmluZChwcm9wZXJ0eU5hbWUudWlkKCkp
LmZpcnN0OwogICAgICAgICBpZiAoZW50cnkpIHsKICAgICAgICAgICAgIGF0dHJpYnV0ZXMgPSBl
bnRyeS0+YXR0cmlidXRlczsKICAgICAgICAgICAgIHNwZWNpZmljVmFsdWUgPSBlbnRyeS0+c3Bl
Y2lmaWNWYWx1ZS5nZXQoKTsKLSAgICAgICAgICAgIHJldHVybiBlbnRyeS0+b2Zmc2V0OworICAg
ICAgICAgICAgUHJvcGVydHlPZmZzZXQgcmVzdWx0ID0gZW50cnktPm9mZnNldDsKKyAgICAgICAg
ICAgIHN0cnVjdHVyZS0+bV9sb2NrLnVubG9jaygpOworICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgfQorICAgICAgICBzdHJ1Y3R1cmUtPm1fbG9jay51bmxvY2soKTsKICAgICB9
CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gc3RydWN0dXJlcy5zaXplKCk7IGktLTspIHsK
LSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVzW2ldOworICAgICAgICBz
dHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVzW2ldOwogICAgICAgICBpZiAoc3RydWN0dXJlLT5tX25hbWVJ
blByZXZpb3VzLmdldCgpICE9IHByb3BlcnR5TmFtZS51aWQoKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAKQEAgLTgyMSw2ICs4NTMsOCBAQCB2b2lkIFN0cnVjdHVyZTo6ZGVzcGVj
aWZ5QWxsRnVuY3Rpb25zKFZNCiAKIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6cHV0U3BlY2lm
aWNWYWx1ZShWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKIHsKKyAgICBMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7CisgICAgCiAgICAgQVNTRVJUKCFKU0M6OmlzVmFsaWRPZmZzZXQoZ2V0KHZtLCBwcm9wZXJ0
eU5hbWUpKSk7CiAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CkBAIC04MzAsNyArODY0LDcgQEAg
UHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbAogICAgIFN0cmluZ0ltcGwq
IHJlcCA9IHByb3BlcnR5TmFtZS51aWQoKTsKIAogICAgIGlmICghcHJvcGVydHlUYWJsZSgpKQot
ICAgICAgICBjcmVhdGVQcm9wZXJ0eU1hcCh2bSk7CisgICAgICAgIGNyZWF0ZVByb3BlcnR5TWFw
KGxvY2tlciwgdm0pOwogCiAgICAgUHJvcGVydHlPZmZzZXQgbmV3T2Zmc2V0ID0gcHJvcGVydHlU
YWJsZSgpLT5uZXh0T2Zmc2V0KG1faW5saW5lQ2FwYWNpdHkpOwogCkBAIC04NDIsNiArODc2LDgg
QEAgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbAogCiBQcm9wZXJ0eU9m
ZnNldCBTdHJ1Y3R1cmU6OnJlbW92ZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogeworICAg
IExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAK
ICAgICBTdHJpbmdJbXBsKiByZXAgPSBwcm9wZXJ0eU5hbWUudWlkKCk7CkBAIC04NjIsNyArODk4
LDcgQEAgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpyZW1vdmUoUHJvcGVydAogICAgIHJldHVy
biBvZmZzZXQ7CiB9CiAKLXZvaWQgU3RydWN0dXJlOjpjcmVhdGVQcm9wZXJ0eU1hcChWTSYgdm0s
IHVuc2lnbmVkIGNhcGFjaXR5KQordm9pZCBTdHJ1Y3R1cmU6OmNyZWF0ZVByb3BlcnR5TWFwKGNv
bnN0IExvY2tlciYsIFZNJiB2bSwgdW5zaWduZWQgY2FwYWNpdHkpCiB7CiAgICAgQVNTRVJUKCFw
cm9wZXJ0eVRhYmxlKCkpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuaAkocmV2aXNpb24gMTQ4ODUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNs
dWRlICJKU1R5cGVJbmZvLmgiCiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgIldl
YWsuaCIKKyNpbmNsdWRlIDx3dGYvQnl0ZVNwaW5Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0ltcGwuaD4KQEAgLTY5LDYgKzcwLDkgQEAgcHVibGljOgogICAgIGZyaWVuZCBjbGFz
cyBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU7CiAKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwor
ICAgIAorICAgIHR5cGVkZWYgQnl0ZVNwaW5Mb2NrIExvY2s7CisgICAgdHlwZWRlZiBCeXRlU3Bp
bkxvY2tlciBMb2NrZXI7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENs
YXNzSW5mbyosIEluZGV4aW5nVHlwZSA9IE5vbkFycmF5LCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0
eSA9IDApOwogCkBAIC0yMzYsOCArMjQwLDggQEAgcHVibGljOgogICAgIFByb3BlcnR5T2Zmc2V0
IGdldChWTSYsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKTsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBQcm9wZXJ0eU9mZnNldCBnZXQoVk0mLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1
dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKIAotICAgIFByb3BlcnR5T2Zmc2V0IGdldFdp
dGhvdXRNYXRlcmlhbGl6aW5nKFZNJiwgUHJvcGVydHlOYW1lKTsKLSAgICBQcm9wZXJ0eU9mZnNl
dCBnZXRXaXRob3V0TWF0ZXJpYWxpemluZyhWTSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0
dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOworICAgIFByb3BlcnR5T2Zmc2V0IGdl
dENvbmN1cnJlbnRseShWTSYsIFByb3BlcnR5TmFtZSk7CisgICAgUHJvcGVydHlPZmZzZXQgZ2V0
Q29uY3VycmVudGx5KFZNJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlND
ZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CiAKICAgICBib29sIGhhc0dldHRlclNldHRlclByb3BlcnRp
ZXMoKSBjb25zdCB7IHJldHVybiBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXM7IH0KICAgICBi
b29sIGhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8oKSBj
b25zdCB7IHJldHVybiBtX2hhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVk
aW5nUHJvdG87IH0KQEAgLTM2MSw4ICszNjUsMTIgQEAgcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmUo
Vk0mLCBjb25zdCBTdHJ1Y3R1cmUqKTsKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZShW
TSYsIGNvbnN0IFN0cnVjdHVyZSopOwotICAgICAgICAKLSAgICB2b2lkIGZpbmRTdHJ1Y3R1cmVz
QW5kTWFwRm9yTWF0ZXJpYWxpemF0aW9uKFZlY3RvcjxTdHJ1Y3R1cmUqLCA4PiYgc3RydWN0dXJl
cywgUHJvcGVydHlUYWJsZSomKTsKKyAgICAKKyAgICAvLyBUaGlzIHdpbGwgcmV0dXJuIHRoZSBz
dHJ1Y3R1cmUgdGhhdCBoYXMgYSB1c2FibGUgcHJvcGVydHkgdGFibGUsIHRoYXQgcHJvcGVydHkg
dGFibGUsCisgICAgLy8gYW5kIHRoZSBsaXN0IG9mIHN0cnVjdHVyZXMgdGhhdCB3ZSB2aXNpdGVk
IGJlZm9yZSB3ZSBnb3QgdG8gaXQuIElmIGl0IHJldHVybnMgYQorICAgIC8vIG5vbi1udWxsIHN0
cnVjdHVyZSwgaXQgd2lsbCBhbHNvIGxvY2sgdGhlIHN0cnVjdHVyZSB0aGF0IGl0IHJldHVybnM7
IGl0IGlzIHlvdXIgam9iCisgICAgLy8gdG8gdW5sb2NrIGl0LgorICAgIHZvaWQgZmluZFN0cnVj
dHVyZXNBbmRNYXBGb3JNYXRlcmlhbGl6YXRpb24oVmVjdG9yPFN0cnVjdHVyZSosIDg+JiBzdHJ1
Y3R1cmVzLCBTdHJ1Y3R1cmUqJiwgUHJvcGVydHlUYWJsZSomKTsKICAgICAKICAgICB0eXBlZGVm
IGVudW0geyAKICAgICAgICAgTm9uZURpY3Rpb25hcnlLaW5kID0gMCwKQEAgLTM3NCw3ICszODIs
NyBAQCBwcml2YXRlOgogICAgIFByb3BlcnR5T2Zmc2V0IHB1dFNwZWNpZmljVmFsdWUoVk0mLCBQ
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7
CiAgICAgUHJvcGVydHlPZmZzZXQgcmVtb3ZlKFByb3BlcnR5TmFtZSk7CiAKLSAgICB2b2lkIGNy
ZWF0ZVByb3BlcnR5TWFwKFZNJiwgdW5zaWduZWQga2V5Q291bnQgPSAwKTsKKyAgICB2b2lkIGNy
ZWF0ZVByb3BlcnR5TWFwKGNvbnN0IExvY2tlciYsIFZNJiwgdW5zaWduZWQga2V5Q291bnQgPSAw
KTsKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKTsKIAogICAgIGJvb2wgZGVzcGVjaWZ5RnVu
Y3Rpb24oVk0mLCBQcm9wZXJ0eU5hbWUpOwpAQCAtNDczLDggKzQ4MSwxMCBAQCBwcml2YXRlOgog
CiAgICAgVHlwZUluZm8gbV90eXBlSW5mbzsKICAgICBJbmRleGluZ1R5cGUgbV9pbmRleGluZ1R5
cGU7Ci0KICAgICB1aW50OF90IG1faW5saW5lQ2FwYWNpdHk7CisgICAgCisgICAgTG9jayBtX2xv
Y2s7CisgICAgCiAgICAgdW5zaWduZWQgbV9kaWN0aW9uYXJ5S2luZCA6IDI7CiAgICAgYm9vbCBt
X2lzUGlubmVkUHJvcGVydHlUYWJsZSA6IDE7CiAgICAgYm9vbCBtX2hhc0dldHRlclNldHRlclBy
b3BlcnRpZXMgOiAxOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlubGluZXMuaAkocmV2aXNpb24gMTQ4ODUzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCwx
MSArNzgsMTEgQEAgaW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0KFZNJgogICAg
IHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBpbnZhbGlkT2Zmc2V0OwogfQogICAgIAot
aW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0V2l0aG91dE1hdGVyaWFsaXppbmco
Vk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQoraW5saW5lIFByb3BlcnR5T2Zmc2V0
IFN0cnVjdHVyZTo6Z2V0Q29uY3VycmVudGx5KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKIHsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzSWdub3JlZDsKICAgICBKU0NlbGwqIHNw
ZWNpZmljVmFsdWVJZ25vcmVkOwotICAgIHJldHVybiBnZXRXaXRob3V0TWF0ZXJpYWxpemluZygK
KyAgICByZXR1cm4gZ2V0Q29uY3VycmVudGx5KAogICAgICAgICB2bSwgcHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzSWdub3JlZCwgc3BlY2lmaWNWYWx1ZUlnbm9yZWQpOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>