<?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>105752</bug_id>
          
          <creation_ts>2012-12-25 20:33:32 -0800</creation_ts>
          <short_desc>Move visited link-checking (and caching) code out of SelectorChecker.</short_desc>
          <delta_ts>2012-12-27 19:20:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>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>
          <dependson>105806</dependson>
          <blocked>89879</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>797221</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-12-25 20:33:32 -0800</bug_when>
    <thetext>Move visited link-checking (and caching) code out of SelectorChecker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797222</commentid>
    <comment_count>1</comment_count>
      <attachid>180725</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-12-25 20:44:55 -0800</bug_when>
    <thetext>Created attachment 180725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797223</commentid>
    <comment_count>2</comment_count>
      <attachid>180726</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-12-25 21:07:36 -0800</bug_when>
    <thetext>Created attachment 180726
Moved cache to document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797224</commentid>
    <comment_count>3</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-12-25 21:08:58 -0800</bug_when>
    <thetext>Sorry, I chickened out and decided to move visited-link cache to Document, which is where it was (life/scope-wise) before. This change now has no behavior changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797249</commentid>
    <comment_count>4</comment_count>
      <attachid>180726</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-12-26 00:35:14 -0800</bug_when>
    <thetext>Comment on attachment 180726
Moved cache to document.

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

This doesn&apos;t seem like a progression to me. The code get spread out and the already bloaty Document grows further.

 Why not factor this into a type? LinkStyleInvalidator or similar.

&gt; Source/WebCore/html/HTMLAnchorElement.h:107
&gt; +    static EInsideLink determineLinkState(Element*);
&gt; +    static LinkHash linkHashForElement(Element*);

Hanging generic Element functions to HTMLAnchorElement is confusing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797338</commentid>
    <comment_count>5</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-12-26 10:19:19 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 180726 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=180726&amp;action=review
&gt; 
&gt; This doesn&apos;t seem like a progression to me. The code get spread out and the already bloaty Document grows further.
&gt; 
&gt;  Why not factor this into a type? LinkStyleInvalidator or similar.

Okay. How about dom/VisitedLinkState? I&apos;ll also move the determineLinkState, et al. there, so now it will truly represent the visited link state for the Document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797441</commentid>
    <comment_count>6</comment_count>
      <attachid>180773</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-12-26 18:21:51 -0800</bug_when>
    <thetext>Created attachment 180773
Introduced VistedLinkState.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797498</commentid>
    <comment_count>7</comment_count>
      <attachid>180773</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-12-27 03:35:54 -0800</bug_when>
    <thetext>Comment on attachment 180773
Introduced VistedLinkState.

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

&gt; Source/WebCore/html/HTMLAnchorElement.h:101
&gt; -    
&gt; +

Please try to not include this change in the patch, since it would record the file as changed when it is otherwise not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797583</commentid>
    <comment_count>8</comment_count>
      <attachid>180773</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-12-27 09:23:39 -0800</bug_when>
    <thetext>Comment on attachment 180773
Introduced VistedLinkState.

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

Looks good.

&gt; Source/WebCore/dom/VisitedLinkState.h:49
&gt; +    void invalidateStylesForAllLinks();
&gt; +    void invalidateStylesForLink(LinkHash);

Maybe singular Style?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797596</commentid>
    <comment_count>9</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-12-27 10:03:40 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 180773 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=180773&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLAnchorElement.h:101
&gt; &gt; -    
&gt; &gt; +
&gt; 
&gt; Please try to not include this change in the patch, since it would record the file as changed when it is otherwise not.

Will remove when landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797597</commentid>
    <comment_count>10</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-12-27 10:03:52 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 180773 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=180773&amp;action=review
&gt; 
&gt; Looks good.
&gt; 
&gt; &gt; Source/WebCore/dom/VisitedLinkState.h:49
&gt; &gt; +    void invalidateStylesForAllLinks();
&gt; &gt; +    void invalidateStylesForLink(LinkHash);
&gt; 
&gt; Maybe singular Style?

Sure thing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797603</commentid>
    <comment_count>11</comment_count>
      <attachid>180807</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-12-27 10:11:38 -0800</bug_when>
    <thetext>Created attachment 180807
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797622</commentid>
    <comment_count>12</comment_count>
      <attachid>180807</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-27 10:42:29 -0800</bug_when>
    <thetext>Comment on attachment 180807
Patch for landing

Clearing flags on attachment: 180807

Committed r138509: &lt;http://trac.webkit.org/changeset/138509&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797623</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-27 10:42:34 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797627</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-27 10:55:08 -0800</bug_when>
    <thetext>Thank you again Dimitri. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797655</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-27 12:56:12 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 105806</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797673</commentid>
    <comment_count>16</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-12-27 14:38:35 -0800</bug_when>
    <thetext>My bad. Got a bit too happy with moving ptrs. Relanding with a fix shortly...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797679</commentid>
    <comment_count>17</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-12-27 14:58:07 -0800</bug_when>
    <thetext>Committed r138515: &lt;http://trac.webkit.org/changeset/138515&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797719</commentid>
    <comment_count>18</comment_count>
      <attachid>180807</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-12-27 18:05:45 -0800</bug_when>
    <thetext>Comment on attachment 180807
Patch for landing

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

&gt; Source/WebCore/dom/VisitedLinkState.cpp:48
&gt; +inline static const AtomicString* linkAttribute(Element* element)

A little strange to use &quot;inline static&quot; rather than the usual &quot;static inline&quot; that we use elsewhere.

&gt; Source/WebCore/dom/VisitedLinkState.cpp:66
&gt; +VisitedLinkState::VisitedLinkState(Document* document)
&gt; +    :m_document(document)
&gt; +{ }

Two formatting errors:

1) Missing space after colon.
2) Braces should not be on a single line.

&gt; Source/WebCore/dom/VisitedLinkState.cpp:83
&gt; +    if (const AtomicString* attr = linkAttribute(element))
&gt; +        return WebCore::visitedLinkHash(document-&gt;baseURL(), *attr);

Would be better to use the word &quot;attribute&quot; instead of the abbreviation &quot;attr&quot;.

&gt; Source/WebCore/dom/VisitedLinkState.cpp:108
&gt; +    // An empty href refers to the document itself which is always visited. It is useful to check this explicitly so
&gt; +    // that visited links can be tested in platform independent manner, without explicit support in the test harness.
&gt; +    if (attribute-&gt;isEmpty())
&gt; +        return InsideVisitedLink;

What about an href that consists only of whitespace? Does the visitedLinkHash function trim whitespace when resolving the URL?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797727</commentid>
    <comment_count>19</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-12-27 19:20:41 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 180807 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=180807&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/VisitedLinkState.cpp:48
&gt; &gt; +inline static const AtomicString* linkAttribute(Element* element)
&gt; 
&gt; A little strange to use &quot;inline static&quot; rather than the usual &quot;static inline&quot; that we use elsewhere.
&gt; 
&gt; &gt; Source/WebCore/dom/VisitedLinkState.cpp:66
&gt; &gt; +VisitedLinkState::VisitedLinkState(Document* document)
&gt; &gt; +    :m_document(document)
&gt; &gt; +{ }
&gt; 
&gt; Two formatting errors:
&gt; 
&gt; 1) Missing space after colon.
&gt; 2) Braces should not be on a single line.
&gt; 
&gt; &gt; Source/WebCore/dom/VisitedLinkState.cpp:83
&gt; &gt; +    if (const AtomicString* attr = linkAttribute(element))
&gt; &gt; +        return WebCore::visitedLinkHash(document-&gt;baseURL(), *attr);
&gt; 
&gt; Would be better to use the word &quot;attribute&quot; instead of the abbreviation &quot;attr&quot;.
&gt;

Thank you for spotting these! Fixed in http://trac.webkit.org/changeset/138519.

&gt; &gt; Source/WebCore/dom/VisitedLinkState.cpp:108
&gt; &gt; +    // An empty href refers to the document itself which is always visited. It is useful to check this explicitly so
&gt; &gt; +    // that visited links can be tested in platform independent manner, without explicit support in the test harness.
&gt; &gt; +    if (attribute-&gt;isEmpty())
&gt; &gt; +        return InsideVisitedLink;
&gt; 
&gt; What about an href that consists only of whitespace? Does the visitedLinkHash function trim whitespace when resolving the URL?

I don&apos;t know. I was just moving the pipes around.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180725</attachid>
            <date>2012-12-25 20:44:55 -0800</date>
            <delta_ts>2012-12-25 21:07:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105752-20121225204208.patch</filename>
            <type>text/plain</type>
            <size>21981</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2E5N2FiOTIwYTg2Nzhl
YjUwMWUwYmQ5ZmM1ZGNmZGU3NmFjMTk3Yy4uMzk3ODI2NTAzNDkyOGUwZjE3ZDJlYzUwZjZhMzg4
MTVkMDY1ZDdjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTEyLTI1ICBEaW1p
dHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTW92ZSB2aXNp
dGVkIGxpbmstY2hlY2tpbmcgKGFuZCBjYWNoaW5nKSBjb2RlIG91dCBvZiBTZWxlY3RvckNoZWNr
ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3
NTIKKworICAgICAgICBTZWxlY3RvckNoZWNrZXIga25ldyB0b28gbXVjaCBhYm91dCB2aXNpdGVk
IGxpbmtzIGFuZCBob3cgbGlua3MgYXJlIHN0b3JlZCBpbiBET00uIFRoaXMgY2hhbmdlCisgICAg
ICAgIG1vdmVzIHRoZSBjb2RlIHRvIHByb3BlciBsb2NhdGlvbnMgYW5kIG1vdmVzIHRoZSB2aXNp
dGVkIGxpbmtzIGNhY2hlIGFsbCB0aGUgd2F5IHVwIHRvIFBhZ2UgbGV2ZWwsCisgICAgICAgIHNp
bmNlIHRoaXMgY2FjaGUgY291bGQgYmUgZHVwbGljYXRlZCBhY3Jvc3MgZWxlbWVudHMgYW5kIGF0
IG1vc3Qgd291bGQgYmUgdGhlIHNhbWUgc2l6ZSBpbiBjYXNlCisgICAgICAgIG9mIG5vIGR1cGxp
Y2F0ZXMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Q292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNr
ZXIuY3BwOiBZYW5rZWQgYWxsIG9mIHRoZSB2aXNpdGVkLWxpbmsgbG9naWMgb3V0dGEgaGVyZS4K
KyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6IERpdHRvLgorICAgICAgICAqIGNzcy9T
dHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmluaXRF
bGVtZW50KTogQ2hhbmdlZCBjYWxsc2l0ZSB0byByZWZsZWN0IG5ldyBjb2RlIGxvY2F0aW9uLgor
ICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChTdHlsZVJlc29sdmVyKTog
UmVtb3ZlZCBkZWNscyBmb3IgcGx1bWJpbmcgdGhhdCdzIG5vIGxvbmdlciBuZWNlc3NhcnkuCisg
ICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpp
bnZhbGlkYXRlU3R5bGVzRm9yQWxsTGlua3MpOiBNb3ZlZCBlbGVtZW50IHRyYXZlcnNhbCBhbmQg
c3R5bGUgaW52YWxpZGF0aW9uIGNvZGUgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjppbnZhbGlkYXRlU3R5bGVzRm9yTGluayk6IERpdHRvLgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5oOgorICAgICAgICAoRG9jdW1lbnQpOiBBZGRlZCBkZWNscyBmb3IgMiBuZXcgZnVuY3Rpb25z
LgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRQYWdlOjpyZXN0b3JlKTogQ2hhbmdlZCB0byB1c2UgbmV3IGZ1bmN0aW9ucyBpbiBEb2N1
bWVudC4KKyAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmxpbmtBdHRyaWJ1dGUpOiBNb3ZlZCBoZXJlIGZyb20gU2VsZWN0b3JDaGVja2VyLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OmxpbmtIYXNoRm9yRWxlbWVudCk6
IEFkZGVkIGEgaGVscGVyLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OmRl
dGVybWluZUxpbmtTdGF0ZVNsb3dDYXNlKTogTW92ZWQgaGVyZSBmcm9tIFNlbGVjdG9yQ2hlY2tl
ci4KKyAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQW5jaG9yRWxlbWVudDo6ZGV0ZXJtaW5lTGlua1N0YXRlKTogRGl0dG8uCisgICAgICAg
ICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFsbFZpc2l0ZWRTdGF0
ZUNoYW5nZWQpOiBDaGFuZ2VkIHRvIHVzZSBuZXcgZnVuY3Rpb25zIGluIERvY3VtZW50LgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZTo6dmlzaXRlZFN0YXRlQ2hhbmdlZCk6IERpdHRvLgorICAgICAg
ICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoUGFnZSk6IE1vdmVkIHZpc2l0ZWQtbGluayBjYWNo
ZSBoZXJlIGZyb20gU2VsZWN0b3JDaGVja2VyLgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZGlk
Q2hlY2tWaXNpdGVkTGluayk6IEFkZGVkIGhlbHBlciB0byBwb3B1bGF0ZSBjYWNoZS4KKwogMjAx
Mi0xMi0yNCAgTGFzemxvIEdvbWJvcyAgPGwuZ29tYm9zQHNhbXN1bmcuY29tPgogCiAgICAgICAg
IFJlbW92ZSB3dGYvUGxhdGZvcm0uaCBpbmNsdWRlcyBmcm9tIHtjfGNwcH0gZmlsZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggNDIxZWE5MGFiNDA3NmFjOTZiZDJj
OWU4ZDJhMmQxNzcyMTI1ZGY3Ni4uYjJkOWI5MjllZTgzZjg4ZTYyMTRlMWY5NzY3NmQ5YzU0MWZi
MTczNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAgLTM1LDcgKzM1
LDYgQEAKICNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgog
I2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCi0jaW5jbHVkZSAiSFRNTEFuY2hvckVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVtZW50QmFzZS5oIgogI2luY2x1ZGUgIkhUTUxJbnB1
dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAgLTQ0LDkgKzQzLDcgQEAKICNp
bmNsdWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCi0jaW5jbHVkZSAiTm9kZVRy
YXZlcnNhbC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNp
bmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJTY3JvbGxiYXIuaCIKICNp
bmNsdWRlICJSZW5kZXJTdHlsZS5oIgpAQCAtNTYsMTIgKzUzLDYgQEAKICNpbmNsdWRlICJTaWJs
aW5nVHJhdmVyc2FsU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKICNp
bmNsdWRlICJUZXh0LmgiCi0jaW5jbHVkZSAiWExpbmtOYW1lcy5oIgotCi0jaWYgVVNFKFBMQVRG
T1JNX1NUUkFURUdJRVMpCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCi0jaW5jbHVk
ZSAiVmlzaXRlZExpbmtTdHJhdGVneS5oIgotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNzcsNTYgKzY4LDYgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNrZXIoRG9j
dW1lbnQqIGRvY3VtZW50LCBib29sIHN0cmljdFBhcnNpbmcpCiB7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgY29uc3QgQXRvbWljU3RyaW5nKiBsaW5rQXR0cmlidXRlKEVsZW1lbnQqIGVsZW1lbnQpCi17
Ci0gICAgaWYgKCFlbGVtZW50LT5pc0xpbmsoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYg
KGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuICZlbGVtZW50LT5mYXN0
R2V0QXR0cmlidXRlKGhyZWZBdHRyKTsKLSAgICBpZiAoZWxlbWVudC0+aXNTVkdFbGVtZW50KCkp
Ci0gICAgICAgIHJldHVybiAmZWxlbWVudC0+Z2V0QXR0cmlidXRlKFhMaW5rTmFtZXM6OmhyZWZB
dHRyKTsKLSAgICByZXR1cm4gMDsKLX0KLQotRUluc2lkZUxpbmsgU2VsZWN0b3JDaGVja2VyOjpk
ZXRlcm1pbmVMaW5rU3RhdGVTbG93Q2FzZShFbGVtZW50KiBlbGVtZW50KSBjb25zdAotewotICAg
IEFTU0VSVChlbGVtZW50LT5pc0xpbmsoKSk7Ci0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcqIGF0
dHJpYnV0ZSA9IGxpbmtBdHRyaWJ1dGUoZWxlbWVudCk7Ci0gICAgaWYgKCFhdHRyaWJ1dGUgfHwg
YXR0cmlidXRlLT5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIE5vdEluc2lkZUxpbms7Ci0KLSAg
ICAvLyBBbiBlbXB0eSBocmVmIHJlZmVycyB0byB0aGUgZG9jdW1lbnQgaXRzZWxmIHdoaWNoIGlz
IGFsd2F5cyB2aXNpdGVkLiBJdCBpcyB1c2VmdWwgdG8gY2hlY2sgdGhpcyBleHBsaWNpdGx5IHNv
Ci0gICAgLy8gdGhhdCB2aXNpdGVkIGxpbmtzIGNhbiBiZSB0ZXN0ZWQgaW4gcGxhdGZvcm0gaW5k
ZXBlbmRlbnQgbWFubmVyLCB3aXRob3V0IGV4cGxpY2l0IHN1cHBvcnQgaW4gdGhlIHRlc3QgaGFy
bmVzcy4KLSAgICBpZiAoYXR0cmlidXRlLT5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBJbnNp
ZGVWaXNpdGVkTGluazsKLSAgICAKLSAgICBMaW5rSGFzaCBoYXNoOwotICAgIGlmIChlbGVtZW50
LT5oYXNUYWdOYW1lKGFUYWcpKSAKLSAgICAgICAgaGFzaCA9IHN0YXRpY19jYXN0PEhUTUxBbmNo
b3JFbGVtZW50Kj4oZWxlbWVudCktPnZpc2l0ZWRMaW5rSGFzaCgpOwotICAgIGVsc2UKLSAgICAg
ICAgaGFzaCA9IHZpc2l0ZWRMaW5rSGFzaChtX2RvY3VtZW50LT5iYXNlVVJMKCksICphdHRyaWJ1
dGUpOwotCi0gICAgaWYgKCFoYXNoKQotICAgICAgICByZXR1cm4gSW5zaWRlVW52aXNpdGVkTGlu
azsKLQotICAgIEZyYW1lKiBmcmFtZSA9IG1fZG9jdW1lbnQtPmZyYW1lKCk7Ci0gICAgaWYgKCFm
cmFtZSkKLSAgICAgICAgcmV0dXJuIEluc2lkZVVudmlzaXRlZExpbms7Ci0KLSAgICBQYWdlKiBw
YWdlID0gZnJhbWUtPnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiBJbnNp
ZGVVbnZpc2l0ZWRMaW5rOwotCi0gICAgbV9saW5rc0NoZWNrZWRGb3JWaXNpdGVkU3RhdGUuYWRk
KGhhc2gpOwotCi0jaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCi0gICAgcmV0dXJuIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT52aXNpdGVkTGlua1N0cmF0ZWd5KCktPmlzTGlua1Zpc2l0ZWQocGFn
ZSwgaGFzaCwgbV9kb2N1bWVudC0+YmFzZVVSTCgpLCAqYXR0cmlidXRlKSA/IEluc2lkZVZpc2l0
ZWRMaW5rIDogSW5zaWRlVW52aXNpdGVkTGluazsKLSNlbHNlCi0gICAgcmV0dXJuIHBhZ2UtPmdy
b3VwKCkuaXNMaW5rVmlzaXRlZChoYXNoKSA/IEluc2lkZVZpc2l0ZWRMaW5rIDogSW5zaWRlVW52
aXNpdGVkTGluazsKLSNlbmRpZgotfQotCiBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxl
Y3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlbGVtZW50LCBib29sIGlzRmFzdENoZWNr
YWJsZVNlbGVjdG9yKSBjb25zdAogewogICAgIGlmIChpc0Zhc3RDaGVja2FibGVTZWxlY3RvciAm
JiAhZWxlbWVudC0+aXNTVkdFbGVtZW50KCkpIHsKQEAgLTExMDEsMzEgKzEwNDIsNiBAQCBib29s
IFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTY3JvbGxiYXJQc2V1ZG9DbGFzcyhDU1NTZWxlY3Rvciog
c2VsKSBjb25zdAogICAgIH0KIH0KIAotdm9pZCBTZWxlY3RvckNoZWNrZXI6OmFsbFZpc2l0ZWRT
dGF0ZUNoYW5nZWQoKQotewotICAgIGlmIChtX2xpbmtzQ2hlY2tlZEZvclZpc2l0ZWRTdGF0ZS5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBmb3IgKEVsZW1lbnQqIGVsZW1lbnQgPSBF
bGVtZW50VHJhdmVyc2FsOjpmaXJzdFdpdGhpbihtX2RvY3VtZW50KTsgZWxlbWVudDsgZWxlbWVu
dCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHQoZWxlbWVudCkpIHsKLSAgICAgICAgaWYgKGVsZW1l
bnQtPmlzTGluaygpKQotICAgICAgICAgICAgZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYygp
OwotICAgIH0KLX0KLQotdm9pZCBTZWxlY3RvckNoZWNrZXI6OnZpc2l0ZWRTdGF0ZUNoYW5nZWQo
TGlua0hhc2ggdmlzaXRlZEhhc2gpCi17Ci0gICAgaWYgKCFtX2xpbmtzQ2hlY2tlZEZvclZpc2l0
ZWRTdGF0ZS5jb250YWlucyh2aXNpdGVkSGFzaCkpCi0gICAgICAgIHJldHVybjsKLSAgICBmb3Ig
KEVsZW1lbnQqIGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdFdpdGhpbihtX2RvY3Vt
ZW50KTsgZWxlbWVudDsgZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHQoZWxlbWVudCkp
IHsKLSAgICAgICAgTGlua0hhc2ggaGFzaCA9IDA7Ci0gICAgICAgIGlmIChlbGVtZW50LT5oYXNU
YWdOYW1lKGFUYWcpKQotICAgICAgICAgICAgaGFzaCA9IHN0YXRpY19jYXN0PEhUTUxBbmNob3JF
bGVtZW50Kj4oZWxlbWVudCktPnZpc2l0ZWRMaW5rSGFzaCgpOwotICAgICAgICBlbHNlIGlmIChj
b25zdCBBdG9taWNTdHJpbmcqIGF0dHIgPSBsaW5rQXR0cmlidXRlKGVsZW1lbnQpKQotICAgICAg
ICAgICAgaGFzaCA9IHZpc2l0ZWRMaW5rSGFzaChtX2RvY3VtZW50LT5iYXNlVVJMKCksICphdHRy
KTsKLSAgICAgICAgaWYgKGhhc2ggPT0gdmlzaXRlZEhhc2gpCi0gICAgICAgICAgICBlbGVtZW50
LT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7Ci0gICAgfQotfQotCiBib29sIFNlbGVjdG9yQ2hlY2tl
cjo6Y29tbW9uUHNldWRvQ2xhc3NTZWxlY3Rvck1hdGNoZXMoY29uc3QgRWxlbWVudCogZWxlbWVu
dCwgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCBWaXNpdGVkTWF0Y2hUeXBlIHZpc2l0ZWRN
YXRjaFR5cGUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzQ29tbW9uUHNldWRvQ2xhc3NTZWxlY3Rv
cihzZWxlY3RvcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hl
Y2tlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCmluZGV4IDg0NDVj
NjI1YzAyMDc3YzFjNjYzNWZkODZhYzI4ZjVjYzY3ZWYwZGEuLmMyOGNmMDZjN2EwNGVjOTM5YmQ1
ODVjYzg1ODVjZDZiNzM1ZGIyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxl
Y3RvckNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgK
QEAgLTMxLDggKzMxLDYgQEAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJDU1NT
ZWxlY3Rvci5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1
ZGUgIkxpbmtIYXNoLmgiCi0jaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKICNpbmNs
dWRlICJTcGFjZVNwbGl0U3RyaW5nLmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC04OCwxMCArODYsNiBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqKTsKICAg
ICBib29sIGZhc3RDaGVja1NlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiwgY29uc3QgRWxlbWVu
dCopIGNvbnN0OwogCi0gICAgRUluc2lkZUxpbmsgZGV0ZXJtaW5lTGlua1N0YXRlKEVsZW1lbnQq
KSBjb25zdDsKLSAgICB2b2lkIGFsbFZpc2l0ZWRTdGF0ZUNoYW5nZWQoKTsKLSAgICB2b2lkIHZp
c2l0ZWRTdGF0ZUNoYW5nZWQoTGlua0hhc2ggdmlzaXRlZEhhc2gpOwotCiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudDsgfQogICAgIGJvb2wgc3RyaWN0
UGFyc2luZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaWN0UGFyc2luZzsgfQogCkBAIC0xMTUsMjIg
KzEwOSwxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgZmFzdENoZWNrUmlnaHRtb3N0U2VsZWN0b3Io
Y29uc3QgQ1NTU2VsZWN0b3IqLCBjb25zdCBFbGVtZW50KiwgVmlzaXRlZE1hdGNoVHlwZSkgY29u
c3Q7CiAgICAgYm9vbCBjb21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9yTWF0Y2hlcyhjb25zdCBFbGVt
ZW50KiwgY29uc3QgQ1NTU2VsZWN0b3IqLCBWaXNpdGVkTWF0Y2hUeXBlKSBjb25zdDsKIAotICAg
IEVJbnNpZGVMaW5rIGRldGVybWluZUxpbmtTdGF0ZVNsb3dDYXNlKEVsZW1lbnQqKSBjb25zdDsK
LQogICAgIERvY3VtZW50KiBtX2RvY3VtZW50OwogICAgIGJvb2wgbV9zdHJpY3RQYXJzaW5nOwog
ICAgIGJvb2wgbV9kb2N1bWVudElzSFRNTDsKICAgICBNb2RlIG1fbW9kZTsKLSAgICBtdXRhYmxl
IEhhc2hTZXQ8TGlua0hhc2gsIExpbmtIYXNoSGFzaD4gbV9saW5rc0NoZWNrZWRGb3JWaXNpdGVk
U3RhdGU7CiB9OwogCi1pbmxpbmUgRUluc2lkZUxpbmsgU2VsZWN0b3JDaGVja2VyOjpkZXRlcm1p
bmVMaW5rU3RhdGUoRWxlbWVudCogZWxlbWVudCkgY29uc3QKLXsKLSAgICBpZiAoIWVsZW1lbnQg
fHwgIWVsZW1lbnQtPmlzTGluaygpKQotICAgICAgICByZXR1cm4gTm90SW5zaWRlTGluazsKLSAg
ICByZXR1cm4gZGV0ZXJtaW5lTGlua1N0YXRlU2xvd0Nhc2UoZWxlbWVudCk7Ci19Ci0KIGlubGlu
ZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6aXNDb21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9yKGNvbnN0
IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKIHsKICAgICBpZiAoc2VsZWN0b3ItPm1fbWF0Y2ggIT0g
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
CmluZGV4IDI4ZDhlZGJjN2RmMWQ2NTUxNTI0ZWVhMDljNzA4ZDRjYjIzZWJkMzUuLjVmNGI2Mjlk
YzM2MGE1NDM0MGM0ZTE2ZjNkNDUyNGYzOWFjYTQ4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKQEAgLTY3LDYgKzY3LDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAi
SFRNTEFuY2hvckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MSUZyYW1lRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKQEAg
LTg4LDcgKzg5LDYgQEAKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJO
b2RlUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJQYWdl
R3JvdXAuaCIKICNpbmNsdWRlICJQYWlyLmgiCiAjaW5jbHVkZSAiUGVyc3BlY3RpdmVUcmFuc2Zv
cm1PcGVyYXRpb24uaCIKICNpbmNsdWRlICJRdW90ZXNEYXRhLmgiCkBAIC05NjQsNyArOTY0LDcg
QEAgaW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6aW5pdEVsZW1lbnQoRWxlbWVudCogZSkKICAg
ICBpZiAobV9lbGVtZW50ICE9IGUpIHsKICAgICAgICAgbV9lbGVtZW50ID0gZTsKICAgICAgICAg
bV9zdHlsZWRFbGVtZW50ID0gbV9lbGVtZW50ICYmIG1fZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50
KCkgPyBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4obV9lbGVtZW50KSA6IDA7Ci0gICAgICAg
IG1fZWxlbWVudExpbmtTdGF0ZSA9IG1fY2hlY2tlci5kZXRlcm1pbmVMaW5rU3RhdGUobV9lbGVt
ZW50KTsKKyAgICAgICAgbV9lbGVtZW50TGlua1N0YXRlID0gSFRNTEFuY2hvckVsZW1lbnQ6OmRl
dGVybWluZUxpbmtTdGF0ZShtX2VsZW1lbnQpOwogICAgICAgICBpZiAoZSAmJiBlID09IGUtPmRv
Y3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpKSB7CiAgICAgICAgICAgICBlLT5kb2N1bWVudCgp
LT5zZXREaXJlY3Rpb25TZXRPbkRvY3VtZW50RWxlbWVudChmYWxzZSk7CiAgICAgICAgICAgICBl
LT5kb2N1bWVudCgpLT5zZXRXcml0aW5nTW9kZVNldE9uRG9jdW1lbnRFbGVtZW50KGZhbHNlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IGFjOTE1MDk5YTJlZmVlOGI1YmQ5NTQ4
MGJjMDU4MzRiM2UzMmVlZGQuLjJiZjMyZGFjYjM4ZTE3NjcwYmQxMjRkMzUyNmNjYzg1NmRlMTYx
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAtMjYzLDkgKzI2Myw2IEBAIHB1
YmxpYzoKICAgICBib29sIGhhc1ZpZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVyaWVzKCkgY29uc3Qg
eyByZXR1cm4gIW1fdmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0cy5pc0VtcHR5KCk7
IH0KICAgICBib29sIGFmZmVjdGVkQnlWaWV3cG9ydENoYW5nZSgpIGNvbnN0OwogCi0gICAgdm9p
ZCBhbGxWaXNpdGVkU3RhdGVDaGFuZ2VkKCkgeyBtX2NoZWNrZXIuYWxsVmlzaXRlZFN0YXRlQ2hh
bmdlZCgpOyB9Ci0gICAgdm9pZCB2aXNpdGVkU3RhdGVDaGFuZ2VkKExpbmtIYXNoIHZpc2l0ZWRI
YXNoKSB7IG1fY2hlY2tlci52aXNpdGVkU3RhdGVDaGFuZ2VkKHZpc2l0ZWRIYXNoKTsgfQotCiAg
ICAgdm9pZCBhZGRLZXlmcmFtZVN0eWxlKFBhc3NSZWZQdHI8U3R5bGVSdWxlS2V5ZnJhbWVzPik7
CiAKICAgICBib29sIGNoZWNrUmVnaW9uU3R5bGUoRWxlbWVudCogcmVnaW9uRWxlbWVudCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA1NmM3NDNmYjY2YjM3YmRhZDY0Y2I2Y2E1YTdkMjE3
MGQzN2UwMWQxLi5hMjlmYTYxNjhjODczZTJmYzZiOWM0M2M2NTkxNGFlYmY0ODE4ZmYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTgxNSw2ICs4MTUsMjIgQEAgdm9pZCBEb2N1bWVudDo6
cmVzZXRBY3RpdmVMaW5rQ29sb3IoKQogICAgIG1fYWN0aXZlTGlua0NvbG9yLnNldE5hbWVkQ29s
b3IoInJlZCIpOwogfQogCit2b2lkIERvY3VtZW50OjppbnZhbGlkYXRlU3R5bGVzRm9yQWxsTGlu
a3MoKQoreworICAgIGZvciAoRWxlbWVudCogZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZp
cnN0V2l0aGluKHRoaXMpOyBlbGVtZW50OyBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4
dChlbGVtZW50KSkgeworICAgICAgICBpZiAoZWxlbWVudC0+aXNMaW5rKCkpCisgICAgICAgICAg
ICBlbGVtZW50LT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgfQorfQorCit2b2lkIERvY3Vt
ZW50OjppbnZhbGlkYXRlU3R5bGVzRm9yTGluayhMaW5rSGFzaCBsaW5rSGFzaCkKK3sKKyAgICBm
b3IgKEVsZW1lbnQqIGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdFdpdGhpbih0aGlz
KTsgZWxlbWVudDsgZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHQoZWxlbWVudCkpIHsK
KyAgICAgICAgaWYgKEhUTUxBbmNob3JFbGVtZW50OjpsaW5rSGFzaEZvckVsZW1lbnQoZWxlbWVu
dCkgPT0gbGlua0hhc2gpCisgICAgICAgICAgICBlbGVtZW50LT5zZXROZWVkc1N0eWxlUmVjYWxj
KCk7CisgICAgfQorfQorCiB2b2lkIERvY3VtZW50OjpzZXREb2NUeXBlKFBhc3NSZWZQdHI8RG9j
dW1lbnRUeXBlPiBkb2NUeXBlKQogewogICAgIC8vIFRoaXMgc2hvdWxkIG5ldmVyIGJlIGNhbGxl
ZCBtb3JlIHRoYW4gb25jZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNWIxOTRiOWNiNDFmMzE2
ZDM4OWYyZjRlY2YxMDQ2MmY4NDg3MTc3YS4uOGFiMTVlNjM4ZjQ1ODQ1NzAyMGQyMmMwZGIwNmRk
Y2Y0ZTk1NzcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTIwOCw2ICsyMDgsNyBAQCBlbnVt
IE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSB7CiBjb25zdCBpbnQgbnVtTm9kZUxpc3RJbnZhbGlk
YXRpb25UeXBlcyA9IEludmFsaWRhdGVPbkFueUF0dHJDaGFuZ2UgKyAxOwogCiB0eXBlZGVmIEhh
c2hDb3VudGVkU2V0PE5vZGUqPiBUb3VjaEV2ZW50VGFyZ2V0U2V0OwordHlwZWRlZiB1aW50NjRf
dCBMaW5rSGFzaDsKIAogY2xhc3MgRG9jdW1lbnQgOiBwdWJsaWMgQ29udGFpbmVyTm9kZSwgcHVi
bGljIFRyZWVTY29wZSwgcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgewogcHVibGljOgpA
QCAtNjcyLDcgKzY3MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldExpbmtDb2xvcigpOwog
ICAgIHZvaWQgcmVzZXRWaXNpdGVkTGlua0NvbG9yKCk7CiAgICAgdm9pZCByZXNldEFjdGl2ZUxp
bmtDb2xvcigpOwotICAgIAorCisgICAgdm9pZCBpbnZhbGlkYXRlU3R5bGVzRm9yQWxsTGlua3Mo
KTsKKyAgICB2b2lkIGludmFsaWRhdGVTdHlsZXNGb3JMaW5rKExpbmtIYXNoKTsKKwogICAgIE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgcHJlcGFyZU1vdXNlRXZlbnQoY29uc3QgSGl0VGVz
dFJlcXVlc3QmLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYp
OwogCiAgICAgLyogTmV3bHkgcHJvcG9zZWQgQ1NTMyBtZWNoYW5pc20gZm9yIHNlbGVjdGluZyBh
bHRlcm5hdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCmluZGV4IGE4MTY5MDJl
MGI2NTMwZGViZWZhMTQ5MGI1NDNmMjEyNGZhZjBjOWEuLjExNDQ4MDY4Yjk0NzE4ZDgwNjg3NTAx
ZDYwZDQ5ODA0NGIwZDk0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2Fj
aGVkUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcApA
QCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIk5vZGUu
aCIKICNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1
ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50
ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC04NywxMCArODYsOCBAQCB2
b2lkIENhY2hlZFBhZ2U6OnJlc3RvcmUoUGFnZSogcGFnZSkKICAgICB9CiAKICAgICBpZiAobV9u
ZWVkU3R5bGVSZWNhbGNGb3JWaXNpdGVkTGlua3MpIHsKLSAgICAgICAgZm9yIChGcmFtZSogZnJh
bWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJh
dmVyc2VOZXh0KCkpIHsKLSAgICAgICAgICAgIGlmIChTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29s
dmVyID0gZnJhbWUtPmRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXIoKSkKLSAgICAgICAgICAgICAg
ICBzdHlsZVJlc29sdmVyLT5hbGxWaXNpdGVkU3RhdGVDaGFuZ2VkKCk7Ci0gICAgICAgIH0KKyAg
ICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1l
ID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCisgICAgICAgICAgICBmcmFtZS0+ZG9j
dW1lbnQoKS0+aW52YWxpZGF0ZVN0eWxlc0ZvckFsbExpbmtzKCk7CiAgICAgfQogCiAgICAgaWYg
KG1fbmVlZHNGdWxsU3R5bGVSZWNhbGMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVs
ZW1lbnQuY3BwCmluZGV4IGQ1NzFhNGFiMTA3M2VkYWE4ZDAxMDAwYTY0NTMwNzI2NWQwZjBkM2Iu
LmVhNjQ4OWU0ODRiZWExNzNjODJmMmU0OWJjODhlZmVhZjJlODU0NGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC0zNiw2ICszNiw5IEBACiAjaW5jbHVk
ZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKICNpbmNs
dWRlICJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgorI2luY2x1ZGUg
IlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQaW5nTG9hZGVyLmgi
CiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgpA
QCAtNDMsMTAgKzQ2LDI2IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKKyNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKKyNp
bmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKKyNpbmNsdWRlICJWaXNpdGVkTGlua1N0cmF0
ZWd5LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwogCitpbmxpbmUgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyogbGlua0F0dHJp
YnV0ZShFbGVtZW50KiBlbGVtZW50KQoreworICAgIGlmICghZWxlbWVudC0+aXNMaW5rKCkpCisg
ICAgICAgIHJldHVybiAwOworICAgIGlmIChlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkpCisgICAg
ICAgIHJldHVybiAmZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmhyZWZBdHRy
KTsKKyAgICBpZiAoZWxlbWVudC0+aXNTVkdFbGVtZW50KCkpCisgICAgICAgIHJldHVybiAmZWxl
bWVudC0+Z2V0QXR0cmlidXRlKFhMaW5rTmFtZXM6OmhyZWZBdHRyKTsKKyAgICByZXR1cm4gMDsK
K30KKwogSFRNTEFuY2hvckVsZW1lbnQ6OkhUTUxBbmNob3JFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IEhUTUxFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50KQogICAgICwgbV9oYXNSb290RWRpdGFibGVFbGVtZW50Rm9yU2VsZWN0
aW9uT25Nb3VzZURvd24oZmFsc2UpCkBAIC02MjUsNCArNjQ0LDUyIEBAIHZvaWQgSFRNTEFuY2hv
ckVsZW1lbnQ6OnNldFJvb3RFZGl0YWJsZUVsZW1lbnRGb3JTZWxlY3Rpb25Pbk1vdXNlRG93bihF
bGVtZW50KiBlCiAgICAgbV9oYXNSb290RWRpdGFibGVFbGVtZW50Rm9yU2VsZWN0aW9uT25Nb3Vz
ZURvd24gPSB0cnVlOwogfQogCitMaW5rSGFzaCBIVE1MQW5jaG9yRWxlbWVudDo6bGlua0hhc2hG
b3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05h
bWUoYVRhZykpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MQW5jaG9yRWxlbWVudCo+
KGVsZW1lbnQpLT52aXNpdGVkTGlua0hhc2goKTsKKyAgICBpZiAoY29uc3QgQXRvbWljU3RyaW5n
KiBhdHRyID0gbGlua0F0dHJpYnV0ZShlbGVtZW50KSkKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6
OnZpc2l0ZWRMaW5rSGFzaChlbGVtZW50LT5kb2N1bWVudCgpLT5iYXNlVVJMKCksICphdHRyKTsK
KyAgICByZXR1cm4gMDsKK30KKworRUluc2lkZUxpbmsgSFRNTEFuY2hvckVsZW1lbnQ6OmRldGVy
bWluZUxpbmtTdGF0ZVNsb3dDYXNlKEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgQVNTRVJUKGVs
ZW1lbnQtPmlzTGluaygpKTsKKworICAgIGNvbnN0IEF0b21pY1N0cmluZyogYXR0cmlidXRlID0g
bGlua0F0dHJpYnV0ZShlbGVtZW50KTsKKyAgICBpZiAoIWF0dHJpYnV0ZSB8fCBhdHRyaWJ1dGUt
PmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gTm90SW5zaWRlTGluazsKKworICAgIC8vIEFuIGVt
cHR5IGhyZWYgcmVmZXJzIHRvIHRoZSBkb2N1bWVudCBpdHNlbGYgd2hpY2ggaXMgYWx3YXlzIHZp
c2l0ZWQuIEl0IGlzIHVzZWZ1bCB0byBjaGVjayB0aGlzIGV4cGxpY2l0bHkgc28KKyAgICAvLyB0
aGF0IHZpc2l0ZWQgbGlua3MgY2FuIGJlIHRlc3RlZCBpbiBwbGF0Zm9ybSBpbmRlcGVuZGVudCBt
YW5uZXIsIHdpdGhvdXQgZXhwbGljaXQgc3VwcG9ydCBpbiB0aGUgdGVzdCBoYXJuZXNzLgorICAg
IGlmIChhdHRyaWJ1dGUtPmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEluc2lkZVZpc2l0ZWRM
aW5rOworCisgICAgTGlua0hhc2ggaGFzaDsKKyAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShh
VGFnKSkKKyAgICAgICAgaGFzaCA9IHN0YXRpY19jYXN0PEhUTUxBbmNob3JFbGVtZW50Kj4oZWxl
bWVudCktPnZpc2l0ZWRMaW5rSGFzaCgpOworICAgIGVsc2UKKyAgICAgICAgaGFzaCA9IFdlYkNv
cmU6OnZpc2l0ZWRMaW5rSGFzaChlbGVtZW50LT5kb2N1bWVudCgpLT5iYXNlVVJMKCksICphdHRy
aWJ1dGUpOworCisgICAgaWYgKCFoYXNoKQorICAgICAgICByZXR1cm4gSW5zaWRlVW52aXNpdGVk
TGluazsKKworICAgIEZyYW1lKiBmcmFtZSA9IGVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCk7
CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIEluc2lkZVVudmlzaXRlZExpbms7CisK
KyAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAg
IHJldHVybiBJbnNpZGVVbnZpc2l0ZWRMaW5rOworCisgICAgcGFnZS0+ZGlkQ2hlY2tWaXNpdGVk
TGluayhoYXNoKTsKKworI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQorICAgIHJldHVybiBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+dmlzaXRlZExpbmtTdHJhdGVneSgpLT5pc0xpbmtWaXNpdGVk
KHBhZ2UsIGhhc2gsIGVsZW1lbnQtPmRvY3VtZW50KCktPmJhc2VVUkwoKSwgKmF0dHJpYnV0ZSkg
PyBJbnNpZGVWaXNpdGVkTGluayA6IEluc2lkZVVudmlzaXRlZExpbms7CisjZWxzZQorICAgIHJl
dHVybiBwYWdlLT5ncm91cCgpLmlzTGlua1Zpc2l0ZWQoaGFzaCkgPyBJbnNpZGVWaXNpdGVkTGlu
ayA6IEluc2lkZVVudmlzaXRlZExpbms7CisjZW5kaWYKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQW5jaG9yRWxlbWVudC5oCmluZGV4IDAzM2U5YzI0MDI2NGRiM2NlZGVjNTE3ZTk1ZDA3
ZjM2YzczMDdlZmMuLmJmMjhkMTcwZDc5ZGUzZmQ0YzFjNTUxZmQwMTlmNjlmMjVjMmEwODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmgKQEAgLTI3LDYgKzI3LDggQEAK
ICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1
ZGUgIkxpbmtIYXNoLmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKKyNpbmNs
dWRlICJYTGlua05hbWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtOTgsMTAgKzEw
MCwxMiBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc1JlbCh1aW50MzJfdCByZWxhdGlvbikgY29u
c3Q7CiAgICAgdm9pZCBzZXRSZWwoY29uc3QgU3RyaW5nJik7Ci0gICAgCi0gICAgTGlua0hhc2gg
dmlzaXRlZExpbmtIYXNoKCkgY29uc3Q7CisKICAgICB2b2lkIGludmFsaWRhdGVDYWNoZWRWaXNp
dGVkTGlua0hhc2goKSB7IG1fY2FjaGVkVmlzaXRlZExpbmtIYXNoID0gMDsgfQogCisgICAgc3Rh
dGljIEVJbnNpZGVMaW5rIGRldGVybWluZUxpbmtTdGF0ZShFbGVtZW50Kik7CisgICAgc3RhdGlj
IExpbmtIYXNoIGxpbmtIYXNoRm9yRWxlbWVudChFbGVtZW50Kik7CisKIHByb3RlY3RlZDoKICAg
ICBIVE1MQW5jaG9yRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIApA
QCAtMTQxLDYgKzE0NSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRSb290RWRpdGFibGVFbGVt
ZW50Rm9yU2VsZWN0aW9uT25Nb3VzZURvd24oRWxlbWVudCopOwogICAgIHZvaWQgY2xlYXJSb290
RWRpdGFibGVFbGVtZW50Rm9yU2VsZWN0aW9uT25Nb3VzZURvd24oKTsKIAorICAgIExpbmtIYXNo
IHZpc2l0ZWRMaW5rSGFzaCgpIGNvbnN0OworICAgIHN0YXRpYyBFSW5zaWRlTGluayBkZXRlcm1p
bmVMaW5rU3RhdGVTbG93Q2FzZShFbGVtZW50Kik7CisKICAgICBib29sIG1faGFzUm9vdEVkaXRh
YmxlRWxlbWVudEZvclNlbGVjdGlvbk9uTW91c2VEb3duIDogMTsKICAgICBib29sIG1fd2FzU2hp
ZnRLZXlEb3duT25Nb3VzZURvd24gOiAxOwogICAgIHVpbnQzMl90IG1fbGlua1JlbGF0aW9ucyA6
IDMwOwpAQCAtMTU0LDYgKzE2MSwxMyBAQCBpbmxpbmUgTGlua0hhc2ggSFRNTEFuY2hvckVsZW1l
bnQ6OnZpc2l0ZWRMaW5rSGFzaCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY2FjaGVkVmlzaXRlZExp
bmtIYXNoOyAKIH0KIAoraW5saW5lIEVJbnNpZGVMaW5rIEhUTUxBbmNob3JFbGVtZW50OjpkZXRl
cm1pbmVMaW5rU3RhdGUoRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBpZiAoIWVsZW1lbnQgfHwg
IWVsZW1lbnQtPmlzTGluaygpKQorICAgICAgICByZXR1cm4gTm90SW5zaWRlTGluazsKKyAgICBy
ZXR1cm4gZGV0ZXJtaW5lTGlua1N0YXRlU2xvd0Nhc2UoZWxlbWVudCk7Cit9CisKIC8vIEZ1bmN0
aW9ucyBzaGFyZWQgd2l0aCB0aGUgb3RoZXIgYW5jaG9yIGVsZW1lbnRzIChpLmUuLCBTVkcpLgog
CiBib29sIGlzRW50ZXJLZXlLZXlkb3duRXZlbnQoRXZlbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmlu
ZGV4IGVhMDhkZTZkMmZjMDFhZDI4M2VmYzFmZDAzYWFkNzQ2OTNiNmE5YTYuLmU3ODllYzBhMDY2
YWE4Mjg3MGJlNGY0NmJkNmEzMzAwNmRkYjZjZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNjks
NyArNjksNiBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VB
cmVhLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZS5oIgotI2luY2x1ZGUgIlN0eWxlUmVz
b2x2ZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVm9p
ZENhbGxiYWNrLmgiCiAjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgpA
QCAtOTQwLDE0ICs5MzksMTQgQEAgdm9pZCBQYWdlOjphbGxWaXNpdGVkU3RhdGVDaGFuZ2VkKFBh
Z2VHcm91cCogZ3JvdXApCiAgICAgICAgIFBhZ2UqIHBhZ2UgPSAqaXQ7CiAgICAgICAgIGlmIChw
YWdlLT5tX2dyb3VwICE9IGdyb3VwKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGZv
ciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgICAgICBpZiAoU3R5bGVS
ZXNvbHZlciogc3R5bGVSZXNvbHZlciA9IGZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVJlc29sdmVy
KCkpCi0gICAgICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+YWxsVmlzaXRlZFN0YXRlQ2hhbmdl
ZCgpOwotICAgICAgICB9CisgICAgICAgIGlmIChwYWdlLT5tX2xpbmtzQ2hlY2tlZEZvclZpc2l0
ZWRTdGF0ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZvciAoRnJh
bWUqIGZyYW1lID0gcGFnZS0+bV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKQorICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCkt
PmludmFsaWRhdGVTdHlsZXNGb3JBbGxMaW5rcygpOwogICAgIH0KIH0KIAotdm9pZCBQYWdlOjp2
aXNpdGVkU3RhdGVDaGFuZ2VkKFBhZ2VHcm91cCogZ3JvdXAsIExpbmtIYXNoIHZpc2l0ZWRMaW5r
SGFzaCkKK3ZvaWQgUGFnZTo6dmlzaXRlZFN0YXRlQ2hhbmdlZChQYWdlR3JvdXAqIGdyb3VwLCBM
aW5rSGFzaCBsaW5rSGFzaCkKIHsKICAgICBBU1NFUlQoZ3JvdXApOwogICAgIGlmICghYWxsUGFn
ZXMpCkBAIC05NTgsMTAgKzk1NywxMCBAQCB2b2lkIFBhZ2U6OnZpc2l0ZWRTdGF0ZUNoYW5nZWQo
UGFnZUdyb3VwKiBncm91cCwgTGlua0hhc2ggdmlzaXRlZExpbmtIYXNoKQogICAgICAgICBQYWdl
KiBwYWdlID0gKml0OwogICAgICAgICBpZiAocGFnZS0+bV9ncm91cCAhPSBncm91cCkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1fbWFp
bkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQo
KSkgewotICAgICAgICAgICAgaWYgKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIgPSBmcmFt
ZS0+ZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpKQotICAgICAgICAgICAgICAgIHN0eWxlUmVz
b2x2ZXItPnZpc2l0ZWRTdGF0ZUNoYW5nZWQodmlzaXRlZExpbmtIYXNoKTsKLSAgICAgICAgfQor
ICAgICAgICBpZiAoIXBhZ2UtPm1fbGlua3NDaGVja2VkRm9yVmlzaXRlZFN0YXRlLmNvbnRhaW5z
KGxpbmtIYXNoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZm9yIChGcmFtZSogZnJh
bWUgPSBwYWdlLT5tX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS0+dHJhdmVyc2VOZXh0KCkpCisgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+aW52YWxp
ZGF0ZVN0eWxlc0ZvckxpbmsobGlua0hhc2gpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRl
eCAyYzBiOGI4YzVlZDJmOWM4MWVmZjc4YTRiMDhhNjIzNDMyMDNmMGM0Li45ZTkzYTMzMmIxMDk1
NjZhNTE0NGFhNzZmYzZmOTQzN2UxYmQ5MjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMjYsNiArMjYs
NyBAQAogI2luY2x1ZGUgIkZpbmRPcHRpb25zLmgiCiAjaW5jbHVkZSAiTGF5b3V0TWlsZXN0b25l
cy5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKKyNpbmNsdWRlICJMaW5rSGFzaC5oIgogI2lu
Y2x1ZGUgIlBhZ2VWaXNpYmlsaXR5U3RhdGUuaCIKICNpbmNsdWRlICJQYWdpbmF0aW9uLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKQEAgLTkxLDggKzkyLDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2U7CiAgICAgY2xhc3MgVmFsaWRhdGlv
bk1lc3NhZ2VDbGllbnQ7CiAKLSAgICB0eXBlZGVmIHVpbnQ2NF90IExpbmtIYXNoOwotCiAgICAg
ZW51bSBGaW5kRGlyZWN0aW9uIHsgRmluZERpcmVjdGlvbkZvcndhcmQsIEZpbmREaXJlY3Rpb25C
YWNrd2FyZCB9OwogCiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoRnJhbWUqKTsKQEAgLTI5
NSw2ICsyOTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0RGVidWdn
ZXIoSlNDOjpEZWJ1Z2dlciopOwogICAgICAgICBKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcigpIGNv
bnN0IHsgcmV0dXJuIG1fZGVidWdnZXI7IH0KIAorICAgICAgICB2b2lkIGRpZENoZWNrVmlzaXRl
ZExpbmsoTGlua0hhc2gpOwogICAgICAgICBzdGF0aWMgdm9pZCByZW1vdmVBbGxWaXNpdGVkTGlu
a3MoKTsKIAogICAgICAgICBzdGF0aWMgdm9pZCBhbGxWaXNpdGVkU3RhdGVDaGFuZ2VkKFBhZ2VH
cm91cCopOwpAQCAtNDgxLDggKzQ4MSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgSGFzaFNldDxTdHJpbmc+IG1fc2VlblBsdWdpbnM7CiAgICAgICAgIEhhc2hTZXQ8U3RyaW5n
PiBtX3NlZW5NZWRpYUVuZ2luZXM7CisKKyAgICAgICAgSGFzaFNldDxMaW5rSGFzaCwgTGlua0hh
c2hIYXNoPiBtX2xpbmtzQ2hlY2tlZEZvclZpc2l0ZWRTdGF0ZTsKICAgICB9OwogCitpbmxpbmUg
dm9pZCBQYWdlOjpkaWRDaGVja1Zpc2l0ZWRMaW5rKExpbmtIYXNoIGhhc2gpCit7CisgICAgbV9s
aW5rc0NoZWNrZWRGb3JWaXNpdGVkU3RhdGUuYWRkKGhhc2gpOworfQorCisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKICAgICAKICNlbmRpZiAvLyBQYWdlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180726</attachid>
            <date>2012-12-25 21:07:36 -0800</date>
            <delta_ts>2012-12-26 18:21:49 -0800</delta_ts>
            <desc>Moved cache to document.</desc>
            <filename>bug-105752-20121225210449.patch</filename>
            <type>text/plain</type>
            <size>20928</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2E5N2FiOTIwYTg2Nzhl
YjUwMWUwYmQ5ZmM1ZGNmZGU3NmFjMTk3Yy4uMWZhYjdhZGJmNGNkMTlhZGZmYTc5MTM2NjhiOWZk
MmE3YjJjZWQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTEyLTI1ICBEaW1p
dHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTW92ZSB2aXNp
dGVkIGxpbmstY2hlY2tpbmcgKGFuZCBjYWNoaW5nKSBjb2RlIG91dCBvZiBTZWxlY3RvckNoZWNr
ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3
NTIKKworICAgICAgICBTZWxlY3RvckNoZWNrZXIga25ldyB0b28gbXVjaCBhYm91dCB2aXNpdGVk
IGxpbmtzIGFuZCBob3cgbGlua3MgYXJlIHN0b3JlZCBpbiBET00uIFRoaXMgY2hhbmdlCisgICAg
ICAgIG1vdmVzIHRoZSBjb2RlIHRvIG1vcmUgcmVsZXZhbnQgbG9jYXRpb25zIGFuZCBtb3ZlcyB0
aGUgdmlzaXRlZCBsaW5rcyBjYWNoZSBhbGwgdGhlIHdheSB1cCB0byBEb2N1bWVudC4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4g
YmVoYXZpb3IsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBjc3MvU2Vs
ZWN0b3JDaGVja2VyLmNwcDogWWFua2VkIGFsbCBvZiB0aGUgdmlzaXRlZC1saW5rIGxvZ2ljIG91
dHRhIGhlcmUuCisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5oOiBEaXR0by4KKyAgICAg
ICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjppbml0RWxlbWVudCk6IENoYW5nZWQgY2FsbHNpdGUgdG8gcmVmbGVjdCBuZXcgY29kZSBs
b2NhdGlvbi4KKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAoU3R5bGVS
ZXNvbHZlcik6IFJlbW92ZWQgZGVjbHMgZm9yIHBsdW1iaW5nIHRoYXQncyBubyBsb25nZXIgbmVj
ZXNzYXJ5LgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6aW52YWxpZGF0ZVN0eWxlc0ZvckFsbExpbmtzKTogTW92ZWQgZWxlbWVudCB0cmF2
ZXJzYWwgYW5kIHN0eWxlIGludmFsaWRhdGlvbiBjb2RlIGhlcmUuCisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6aW52YWxpZGF0ZVN0eWxlc0ZvckxpbmspOiBEaXR0by4KKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuaDoKKyAgICAgICAgKERvY3VtZW50KTogQWRkZWQgZGVjbHMgZm9yIDMgbmV3
IGZ1bmN0aW9ucyBhbmQgdmlzaXRlZC1saW5rIGNhY2hlLgorICAgICAgICAqIGhpc3RvcnkvQ2Fj
aGVkUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRQYWdlOjpyZXN0b3JlKTogQ2hh
bmdlZCB0byB1c2UgbmV3IGZ1bmN0aW9ucyBpbiBEb2N1bWVudC4KKyAgICAgICAgKiBodG1sL0hU
TUxBbmNob3JFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxpbmtBdHRyaWJ1dGUpOiBN
b3ZlZCBoZXJlIGZyb20gU2VsZWN0b3JDaGVja2VyLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFu
Y2hvckVsZW1lbnQ6OmxpbmtIYXNoRm9yRWxlbWVudCk6IEFkZGVkIGEgaGVscGVyLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OmRldGVybWluZUxpbmtTdGF0ZVNsb3dDYXNl
KTogTW92ZWQgaGVyZSBmcm9tIFNlbGVjdG9yQ2hlY2tlci4KKyAgICAgICAgKiBodG1sL0hUTUxB
bmNob3JFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6ZGV0
ZXJtaW5lTGlua1N0YXRlKTogRGl0dG8uCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OmFsbFZpc2l0ZWRTdGF0ZUNoYW5nZWQpOiBDaGFuZ2VkIHRvIHVz
ZSBuZXcgZnVuY3Rpb25zIGluIERvY3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dmlz
aXRlZFN0YXRlQ2hhbmdlZCk6IERpdHRvLgorCiAyMDEyLTEyLTI0ICBMYXN6bG8gR29tYm9zICA8
bC5nb21ib3NAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmVtb3ZlIHd0Zi9QbGF0Zm9ybS5oIGlu
Y2x1ZGVzIGZyb20ge2N8Y3BwfSBmaWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2Vy
LmNwcAppbmRleCA0MjFlYTkwYWI0MDc2YWM5NmJkMmM5ZThkMmEyZDE3NzIxMjVkZjc2Li5iMmQ5
YjkyOWVlODNmODhlNjIxNGUxZjk3Njc2ZDljNTQxZmIxNzM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U2VsZWN0b3JDaGVja2VyLmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkZvY3VzQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24u
aCIKLSNpbmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZUVs
ZW1lbnRCYXNlLmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgpAQCAtNDQsOSArNDMsNyBAQAogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJOb2Rl
UmVuZGVyU3R5bGUuaCIKLSNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgotI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgog
I2luY2x1ZGUgIlJlbmRlclNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCkBA
IC01NiwxMiArNTMsNiBAQAogI2luY2x1ZGUgIlNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVnaWVzLmgi
CiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgogI2luY2x1ZGUgIlRleHQuaCIKLSNpbmNsdWRl
ICJYTGlua05hbWVzLmgiCi0KLSNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKLSNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKLSNpbmNsdWRlICJWaXNpdGVkTGlua1N0cmF0ZWd5Lmgi
Ci0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03Nyw1NiArNjgsNiBAQCBTZWxl
Y3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tlcihEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgc3Ry
aWN0UGFyc2luZykKIHsKIH0KIAotc3RhdGljIGlubGluZSBjb25zdCBBdG9taWNTdHJpbmcqIGxp
bmtBdHRyaWJ1dGUoRWxlbWVudCogZWxlbWVudCkKLXsKLSAgICBpZiAoIWVsZW1lbnQtPmlzTGlu
aygpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgp
KQotICAgICAgICByZXR1cm4gJmVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoaHJlZkF0dHIpOwot
ICAgIGlmIChlbGVtZW50LT5pc1NWR0VsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuICZlbGVtZW50
LT5nZXRBdHRyaWJ1dGUoWExpbmtOYW1lczo6aHJlZkF0dHIpOwotICAgIHJldHVybiAwOwotfQot
Ci1FSW5zaWRlTGluayBTZWxlY3RvckNoZWNrZXI6OmRldGVybWluZUxpbmtTdGF0ZVNsb3dDYXNl
KEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGVsZW1lbnQtPmlzTGluaygp
KTsKLQotICAgIGNvbnN0IEF0b21pY1N0cmluZyogYXR0cmlidXRlID0gbGlua0F0dHJpYnV0ZShl
bGVtZW50KTsKLSAgICBpZiAoIWF0dHJpYnV0ZSB8fCBhdHRyaWJ1dGUtPmlzTnVsbCgpKQotICAg
ICAgICByZXR1cm4gTm90SW5zaWRlTGluazsKLQotICAgIC8vIEFuIGVtcHR5IGhyZWYgcmVmZXJz
IHRvIHRoZSBkb2N1bWVudCBpdHNlbGYgd2hpY2ggaXMgYWx3YXlzIHZpc2l0ZWQuIEl0IGlzIHVz
ZWZ1bCB0byBjaGVjayB0aGlzIGV4cGxpY2l0bHkgc28KLSAgICAvLyB0aGF0IHZpc2l0ZWQgbGlu
a3MgY2FuIGJlIHRlc3RlZCBpbiBwbGF0Zm9ybSBpbmRlcGVuZGVudCBtYW5uZXIsIHdpdGhvdXQg
ZXhwbGljaXQgc3VwcG9ydCBpbiB0aGUgdGVzdCBoYXJuZXNzLgotICAgIGlmIChhdHRyaWJ1dGUt
PmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEluc2lkZVZpc2l0ZWRMaW5rOwotICAgIAotICAg
IExpbmtIYXNoIGhhc2g7Ci0gICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoYVRhZykpIAotICAg
ICAgICBoYXNoID0gc3RhdGljX2Nhc3Q8SFRNTEFuY2hvckVsZW1lbnQqPihlbGVtZW50KS0+dmlz
aXRlZExpbmtIYXNoKCk7Ci0gICAgZWxzZQotICAgICAgICBoYXNoID0gdmlzaXRlZExpbmtIYXNo
KG1fZG9jdW1lbnQtPmJhc2VVUkwoKSwgKmF0dHJpYnV0ZSk7Ci0KLSAgICBpZiAoIWhhc2gpCi0g
ICAgICAgIHJldHVybiBJbnNpZGVVbnZpc2l0ZWRMaW5rOwotCi0gICAgRnJhbWUqIGZyYW1lID0g
bV9kb2N1bWVudC0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gSW5z
aWRlVW52aXNpdGVkTGluazsKLQotICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOwotICAg
IGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuIEluc2lkZVVudmlzaXRlZExpbms7Ci0KLSAgICBt
X2xpbmtzQ2hlY2tlZEZvclZpc2l0ZWRTdGF0ZS5hZGQoaGFzaCk7Ci0KLSNpZiBVU0UoUExBVEZP
Uk1fU1RSQVRFR0lFUykKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnZpc2l0ZWRM
aW5rU3RyYXRlZ3koKS0+aXNMaW5rVmlzaXRlZChwYWdlLCBoYXNoLCBtX2RvY3VtZW50LT5iYXNl
VVJMKCksICphdHRyaWJ1dGUpID8gSW5zaWRlVmlzaXRlZExpbmsgOiBJbnNpZGVVbnZpc2l0ZWRM
aW5rOwotI2Vsc2UKLSAgICByZXR1cm4gcGFnZS0+Z3JvdXAoKS5pc0xpbmtWaXNpdGVkKGhhc2gp
ID8gSW5zaWRlVmlzaXRlZExpbmsgOiBJbnNpZGVVbnZpc2l0ZWRMaW5rOwotI2VuZGlmCi19Ci0K
IGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVs
ZW1lbnQqIGVsZW1lbnQsIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IpIGNvbnN0CiB7CiAg
ICAgaWYgKGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yICYmICFlbGVtZW50LT5pc1NWR0VsZW1lbnQo
KSkgewpAQCAtMTEwMSwzMSArMTA0Miw2IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja1Nj
cm9sbGJhclBzZXVkb0NsYXNzKENTU1NlbGVjdG9yKiBzZWwpIGNvbnN0CiAgICAgfQogfQogCi12
b2lkIFNlbGVjdG9yQ2hlY2tlcjo6YWxsVmlzaXRlZFN0YXRlQ2hhbmdlZCgpCi17Ci0gICAgaWYg
KG1fbGlua3NDaGVja2VkRm9yVmlzaXRlZFN0YXRlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGZvciAoRWxlbWVudCogZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0V2l0
aGluKG1fZG9jdW1lbnQpOyBlbGVtZW50OyBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4
dChlbGVtZW50KSkgewotICAgICAgICBpZiAoZWxlbWVudC0+aXNMaW5rKCkpCi0gICAgICAgICAg
ICBlbGVtZW50LT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7Ci0gICAgfQotfQotCi12b2lkIFNlbGVj
dG9yQ2hlY2tlcjo6dmlzaXRlZFN0YXRlQ2hhbmdlZChMaW5rSGFzaCB2aXNpdGVkSGFzaCkKLXsK
LSAgICBpZiAoIW1fbGlua3NDaGVja2VkRm9yVmlzaXRlZFN0YXRlLmNvbnRhaW5zKHZpc2l0ZWRI
YXNoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGZvciAoRWxlbWVudCogZWxlbWVudCA9IEVsZW1l
bnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKG1fZG9jdW1lbnQpOyBlbGVtZW50OyBlbGVtZW50ID0g
RWxlbWVudFRyYXZlcnNhbDo6bmV4dChlbGVtZW50KSkgewotICAgICAgICBMaW5rSGFzaCBoYXNo
ID0gMDsKLSAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoYVRhZykpCi0gICAgICAgICAg
ICBoYXNoID0gc3RhdGljX2Nhc3Q8SFRNTEFuY2hvckVsZW1lbnQqPihlbGVtZW50KS0+dmlzaXRl
ZExpbmtIYXNoKCk7Ci0gICAgICAgIGVsc2UgaWYgKGNvbnN0IEF0b21pY1N0cmluZyogYXR0ciA9
IGxpbmtBdHRyaWJ1dGUoZWxlbWVudCkpCi0gICAgICAgICAgICBoYXNoID0gdmlzaXRlZExpbmtI
YXNoKG1fZG9jdW1lbnQtPmJhc2VVUkwoKSwgKmF0dHIpOwotICAgICAgICBpZiAoaGFzaCA9PSB2
aXNpdGVkSGFzaCkKLSAgICAgICAgICAgIGVsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsK
LSAgICB9Ci19Ci0KIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjb21tb25Qc2V1ZG9DbGFzc1NlbGVj
dG9yTWF0Y2hlcyhjb25zdCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBDU1NTZWxlY3Rvciogc2Vs
ZWN0b3IsIFZpc2l0ZWRNYXRjaFR5cGUgdmlzaXRlZE1hdGNoVHlwZSkgY29uc3QKIHsKICAgICBB
U1NFUlQoaXNDb21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9yKHNlbGVjdG9yKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU2VsZWN0b3JDaGVja2VyLmgKaW5kZXggODQ0NWM2MjVjMDIwNzdjMWM2NjM1ZmQ4NmFjMjhm
NWNjNjdlZjBkYS4uYzI4Y2YwNmM3YTA0ZWM5MzliZDU4NWNjODU4NWNkNmI3MzVkYjI3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaApAQCAtMzEsOCArMzEsNiBAQAogI2luY2x1
ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiTGlua0hhc2guaCIKLSNpbmNsdWRl
ICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgIlNwYWNlU3BsaXRTdHJpbmcuaCIK
ICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAg
LTg4LDEwICs4Niw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc0Zhc3RDaGVja2FibGVT
ZWxlY3Rvcihjb25zdCBDU1NTZWxlY3RvciopOwogICAgIGJvb2wgZmFzdENoZWNrU2VsZWN0b3Io
Y29uc3QgQ1NTU2VsZWN0b3IqLCBjb25zdCBFbGVtZW50KikgY29uc3Q7CiAKLSAgICBFSW5zaWRl
TGluayBkZXRlcm1pbmVMaW5rU3RhdGUoRWxlbWVudCopIGNvbnN0OwotICAgIHZvaWQgYWxsVmlz
aXRlZFN0YXRlQ2hhbmdlZCgpOwotICAgIHZvaWQgdmlzaXRlZFN0YXRlQ2hhbmdlZChMaW5rSGFz
aCB2aXNpdGVkSGFzaCk7Ci0KICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVy
biBtX2RvY3VtZW50OyB9CiAgICAgYm9vbCBzdHJpY3RQYXJzaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9zdHJpY3RQYXJzaW5nOyB9CiAKQEAgLTExNSwyMiArMTA5LDEyIEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBmYXN0Q2hlY2tSaWdodG1vc3RTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3RvciosIGNvbnN0
IEVsZW1lbnQqLCBWaXNpdGVkTWF0Y2hUeXBlKSBjb25zdDsKICAgICBib29sIGNvbW1vblBzZXVk
b0NsYXNzU2VsZWN0b3JNYXRjaGVzKGNvbnN0IEVsZW1lbnQqLCBjb25zdCBDU1NTZWxlY3Rvcios
IFZpc2l0ZWRNYXRjaFR5cGUpIGNvbnN0OwogCi0gICAgRUluc2lkZUxpbmsgZGV0ZXJtaW5lTGlu
a1N0YXRlU2xvd0Nhc2UoRWxlbWVudCopIGNvbnN0OwotCiAgICAgRG9jdW1lbnQqIG1fZG9jdW1l
bnQ7CiAgICAgYm9vbCBtX3N0cmljdFBhcnNpbmc7CiAgICAgYm9vbCBtX2RvY3VtZW50SXNIVE1M
OwogICAgIE1vZGUgbV9tb2RlOwotICAgIG11dGFibGUgSGFzaFNldDxMaW5rSGFzaCwgTGlua0hh
c2hIYXNoPiBtX2xpbmtzQ2hlY2tlZEZvclZpc2l0ZWRTdGF0ZTsKIH07CiAKLWlubGluZSBFSW5z
aWRlTGluayBTZWxlY3RvckNoZWNrZXI6OmRldGVybWluZUxpbmtTdGF0ZShFbGVtZW50KiBlbGVt
ZW50KSBjb25zdAotewotICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC0+aXNMaW5rKCkpCi0g
ICAgICAgIHJldHVybiBOb3RJbnNpZGVMaW5rOwotICAgIHJldHVybiBkZXRlcm1pbmVMaW5rU3Rh
dGVTbG93Q2FzZShlbGVtZW50KTsKLX0KLQogaW5saW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpp
c0NvbW1vblBzZXVkb0NsYXNzU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQog
ewogICAgIGlmIChzZWxlY3Rvci0+bV9tYXRjaCAhPSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggMjhkOGVkYmM3ZGYxZDY1NTE1
MjRlZWEwOWM3MDhkNGNiMjNlYmQzNS4uNWY0YjYyOWRjMzYwYTU0MzQwYzRlMTZmM2Q0NTI0ZjM5
YWNhNDgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtNjcsNiArNjcs
NyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKICNp
bmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxJRnJhbWVFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgpAQCAtODgsNyArODksNiBAQAogI2luY2x1ZGUg
Ik5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBhaXIu
aCIKICNpbmNsdWRlICJQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUg
IlF1b3Rlc0RhdGEuaCIKQEAgLTk2NCw3ICs5NjQsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZVJlc29s
dmVyOjppbml0RWxlbWVudChFbGVtZW50KiBlKQogICAgIGlmIChtX2VsZW1lbnQgIT0gZSkgewog
ICAgICAgICBtX2VsZW1lbnQgPSBlOwogICAgICAgICBtX3N0eWxlZEVsZW1lbnQgPSBtX2VsZW1l
bnQgJiYgbV9lbGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSA/IHN0YXRpY19jYXN0PFN0eWxlZEVs
ZW1lbnQqPihtX2VsZW1lbnQpIDogMDsKLSAgICAgICAgbV9lbGVtZW50TGlua1N0YXRlID0gbV9j
aGVja2VyLmRldGVybWluZUxpbmtTdGF0ZShtX2VsZW1lbnQpOworICAgICAgICBtX2VsZW1lbnRM
aW5rU3RhdGUgPSBIVE1MQW5jaG9yRWxlbWVudDo6ZGV0ZXJtaW5lTGlua1N0YXRlKG1fZWxlbWVu
dCk7CiAgICAgICAgIGlmIChlICYmIGUgPT0gZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50
KCkpIHsKICAgICAgICAgICAgIGUtPmRvY3VtZW50KCktPnNldERpcmVjdGlvblNldE9uRG9jdW1l
bnRFbGVtZW50KGZhbHNlKTsKICAgICAgICAgICAgIGUtPmRvY3VtZW50KCktPnNldFdyaXRpbmdN
b2RlU2V0T25Eb2N1bWVudEVsZW1lbnQoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmgKaW5kZXggYWM5MTUwOTlhMmVmZWU4YjViZDk1NDgwYmMwNTgzNGIzZTMyZWVkZC4uMmJmMzJk
YWNiMzhlMTc2NzBiZDEyNGQzNTI2Y2NjODU2ZGUxNjFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5oCkBAIC0yNjMsOSArMjYzLDYgQEAgcHVibGljOgogICAgIGJvb2wgaGFzVmlld3Bv
cnREZXBlbmRlbnRNZWRpYVF1ZXJpZXMoKSBjb25zdCB7IHJldHVybiAhbV92aWV3cG9ydERlcGVu
ZGVudE1lZGlhUXVlcnlSZXN1bHRzLmlzRW1wdHkoKTsgfQogICAgIGJvb2wgYWZmZWN0ZWRCeVZp
ZXdwb3J0Q2hhbmdlKCkgY29uc3Q7CiAKLSAgICB2b2lkIGFsbFZpc2l0ZWRTdGF0ZUNoYW5nZWQo
KSB7IG1fY2hlY2tlci5hbGxWaXNpdGVkU3RhdGVDaGFuZ2VkKCk7IH0KLSAgICB2b2lkIHZpc2l0
ZWRTdGF0ZUNoYW5nZWQoTGlua0hhc2ggdmlzaXRlZEhhc2gpIHsgbV9jaGVja2VyLnZpc2l0ZWRT
dGF0ZUNoYW5nZWQodmlzaXRlZEhhc2gpOyB9Ci0KICAgICB2b2lkIGFkZEtleWZyYW1lU3R5bGUo
UGFzc1JlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+KTsKIAogICAgIGJvb2wgY2hlY2tSZWdpb25T
dHlsZShFbGVtZW50KiByZWdpb25FbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4
IDU2Yzc0M2ZiNjZiMzdiZGFkNjRjYjZjYTVhN2QyMTcwZDM3ZTAxZDEuLjMzMDhlYjMzZDdiMWU1
ZGQwNTZkMjE2YTQxYzg3YWQxYzUwZDkxNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAt
ODE1LDYgKzgxNSwyNiBAQCB2b2lkIERvY3VtZW50OjpyZXNldEFjdGl2ZUxpbmtDb2xvcigpCiAg
ICAgbV9hY3RpdmVMaW5rQ29sb3Iuc2V0TmFtZWRDb2xvcigicmVkIik7CiB9CiAKK3ZvaWQgRG9j
dW1lbnQ6OmludmFsaWRhdGVTdHlsZXNGb3JBbGxMaW5rcygpCit7CisgICAgaWYgKG1fbGlua3ND
aGVja2VkRm9yVmlzaXRlZFN0YXRlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGZv
ciAoRWxlbWVudCogZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKHRoaXMp
OyBlbGVtZW50OyBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dChlbGVtZW50KSkgewor
ICAgICAgICBpZiAoZWxlbWVudC0+aXNMaW5rKCkpCisgICAgICAgICAgICBlbGVtZW50LT5zZXRO
ZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgfQorfQorCit2b2lkIERvY3VtZW50OjppbnZhbGlkYXRl
U3R5bGVzRm9yTGluayhMaW5rSGFzaCBsaW5rSGFzaCkKK3sKKyAgICBpZiAoIW1fbGlua3NDaGVj
a2VkRm9yVmlzaXRlZFN0YXRlLmNvbnRhaW5zKGxpbmtIYXNoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGZvciAoRWxlbWVudCogZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGlu
KHRoaXMpOyBlbGVtZW50OyBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dChlbGVtZW50
KSkgeworICAgICAgICBpZiAoSFRNTEFuY2hvckVsZW1lbnQ6OmxpbmtIYXNoRm9yRWxlbWVudChl
bGVtZW50KSA9PSBsaW5rSGFzaCkKKyAgICAgICAgICAgIGVsZW1lbnQtPnNldE5lZWRzU3R5bGVS
ZWNhbGMoKTsKKyAgICB9Cit9CisKIHZvaWQgRG9jdW1lbnQ6OnNldERvY1R5cGUoUGFzc1JlZlB0
cjxEb2N1bWVudFR5cGU+IGRvY1R5cGUpCiB7CiAgICAgLy8gVGhpcyBzaG91bGQgbmV2ZXIgYmUg
Y2FsbGVkIG1vcmUgdGhhbiBvbmNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA1YjE5NGI5Y2I0
MWYzMTZkMzg5ZjJmNGVjZjEwNDYyZjg0ODcxNzdhLi5hYTI4ZDA0NDNjMTE3NjdkOTM1NWYzYTIz
M2Q5ZWM2Y2I5NWU1ODNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzcsNiArMzcsNyBAQAog
I2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb3VudGVycy5oIgogI2lu
Y2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJMaW5rSGFzaC5oIgogI2luY2x1ZGUgIk11dGF0
aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJQYWdlVmlzaWJpbGl0eVN0YXRlLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1TY3JlZW4uaCIKQEAgLTY3Miw3ICs2NzMsMTEgQEAgcHVibGljOgogICAgIHZv
aWQgcmVzZXRMaW5rQ29sb3IoKTsKICAgICB2b2lkIHJlc2V0VmlzaXRlZExpbmtDb2xvcigpOwog
ICAgIHZvaWQgcmVzZXRBY3RpdmVMaW5rQ29sb3IoKTsKLSAgICAKKworICAgIHZvaWQgZGlkQ2hl
Y2tWaXNpdGVkTGluayhMaW5rSGFzaCk7CisgICAgdm9pZCBpbnZhbGlkYXRlU3R5bGVzRm9yQWxs
TGlua3MoKTsKKyAgICB2b2lkIGludmFsaWRhdGVTdHlsZXNGb3JMaW5rKExpbmtIYXNoKTsKKwog
ICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgcHJlcGFyZU1vdXNlRXZlbnQoY29uc3Qg
SGl0VGVzdFJlcXVlc3QmLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYpOwogCiAgICAgLyogTmV3bHkgcHJvcG9zZWQgQ1NTMyBtZWNoYW5pc20gZm9yIHNlbGVj
dGluZyBhbHRlcm5hdGUKQEAgLTEzNjUsNiArMTM3MCw3IEBAIHByaXZhdGU6CiAgICAgQ29sb3Ig
bV9saW5rQ29sb3I7CiAgICAgQ29sb3IgbV92aXNpdGVkTGlua0NvbG9yOwogICAgIENvbG9yIG1f
YWN0aXZlTGlua0NvbG9yOworICAgIEhhc2hTZXQ8TGlua0hhc2gsIExpbmtIYXNoSGFzaD4gbV9s
aW5rc0NoZWNrZWRGb3JWaXNpdGVkU3RhdGU7CiAKICAgICBib29sIG1fbG9hZGluZ1NoZWV0Owog
ICAgIGJvb2wgbV92aXN1YWxseU9yZGVyZWQ7CkBAIC0xNTY3LDYgKzE1NzMsMTEgQEAgaW5saW5l
IHZvaWQgRG9jdW1lbnQ6Om5vdGlmeVJlbW92ZVBlbmRpbmdTaGVldElmTmVlZGVkKCkKICAgICAg
ICAgZGlkUmVtb3ZlQWxsUGVuZGluZ1N0eWxlc2hlZXQoKTsKIH0KIAoraW5saW5lIHZvaWQgRG9j
dW1lbnQ6OmRpZENoZWNrVmlzaXRlZExpbmsoTGlua0hhc2ggaGFzaCkKK3sKKyAgICBtX2xpbmtz
Q2hlY2tlZEZvclZpc2l0ZWRTdGF0ZS5hZGQoaGFzaCk7Cit9CisKIC8vIFB1dCB0aGVzZSBtZXRo
b2RzIGhlcmUsIGJlY2F1c2UgdGhleSByZXF1aXJlIHRoZSBEb2N1bWVudCBkZWZpbml0aW9uLCBi
dXQgd2UgcmVhbGx5IHdhbnQgdG8gaW5saW5lIHRoZW0uCiAKIGlubGluZSBib29sIE5vZGU6Omlz
RG9jdW1lbnROb2RlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
Q2FjaGVkUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCmlu
ZGV4IGE4MTY5MDJlMGI2NTMwZGViZWZhMTQ5MGI1NDNmMjEyNGZhZjBjOWEuLjExNDQ4MDY4Yjk0
NzE4ZDgwNjg3NTAxZDYwZDQ5ODA0NGIwZDk0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNo
ZWRQYWdlLmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2lu
Y2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiU3R5bGVSZXNvbHZl
ci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkTGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC04Nywx
MCArODYsOCBAQCB2b2lkIENhY2hlZFBhZ2U6OnJlc3RvcmUoUGFnZSogcGFnZSkKICAgICB9CiAK
ICAgICBpZiAobV9uZWVkU3R5bGVSZWNhbGNGb3JWaXNpdGVkTGlua3MpIHsKLSAgICAgICAgZm9y
IChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgICAgIGlmIChTdHlsZVJlc29sdmVy
KiBzdHlsZVJlc29sdmVyID0gZnJhbWUtPmRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXIoKSkKLSAg
ICAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5hbGxWaXNpdGVkU3RhdGVDaGFuZ2VkKCk7Ci0g
ICAgICAgIH0KKyAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsg
ZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCisgICAgICAgICAg
ICBmcmFtZS0+ZG9jdW1lbnQoKS0+aW52YWxpZGF0ZVN0eWxlc0ZvckFsbExpbmtzKCk7CiAgICAg
fQogCiAgICAgaWYgKG1fbmVlZHNGdWxsU3R5bGVSZWNhbGMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IGQ1NzFhNGFiMTA3M2VkYWE4ZDAxMDAwYTY0NTMw
NzI2NWQwZjBkM2IuLmQyYzdiMzU5ODc5YjI2YWJjZjlhNTAyOTkxZDU5ZGU5ZjgwOGNiMjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC0zNiw2ICszNiw5
IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZl
bnQuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5o
IgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQ
aW5nTG9hZGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgpAQCAtNDMsMTAgKzQ2LDI2IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKKyNpZiBVU0UoUExBVEZPUk1fU1RS
QVRFR0lFUykKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKKyNpbmNsdWRlICJWaXNp
dGVkTGlua1N0cmF0ZWd5LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCitpbmxpbmUgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyogbGlua0F0dHJpYnV0ZShFbGVtZW50KiBlbGVtZW50KQoreworICAgIGlmICghZWxlbWVudC0+
aXNMaW5rKCkpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChlbGVtZW50LT5pc0hUTUxFbGVt
ZW50KCkpCisgICAgICAgIHJldHVybiAmZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShIVE1MTmFt
ZXM6OmhyZWZBdHRyKTsKKyAgICBpZiAoZWxlbWVudC0+aXNTVkdFbGVtZW50KCkpCisgICAgICAg
IHJldHVybiAmZWxlbWVudC0+Z2V0QXR0cmlidXRlKFhMaW5rTmFtZXM6OmhyZWZBdHRyKTsKKyAg
ICByZXR1cm4gMDsKK30KKwogSFRNTEFuY2hvckVsZW1lbnQ6OkhUTUxBbmNob3JFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IEhU
TUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9oYXNSb290RWRpdGFibGVFbGVt
ZW50Rm9yU2VsZWN0aW9uT25Nb3VzZURvd24oZmFsc2UpCkBAIC02MjUsNCArNjQ0LDUyIEBAIHZv
aWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldFJvb3RFZGl0YWJsZUVsZW1lbnRGb3JTZWxlY3Rpb25P
bk1vdXNlRG93bihFbGVtZW50KiBlCiAgICAgbV9oYXNSb290RWRpdGFibGVFbGVtZW50Rm9yU2Vs
ZWN0aW9uT25Nb3VzZURvd24gPSB0cnVlOwogfQogCitMaW5rSGFzaCBIVE1MQW5jaG9yRWxlbWVu
dDo6bGlua0hhc2hGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgaWYgKGVsZW1l
bnQtPmhhc1RhZ05hbWUoYVRhZykpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MQW5j
aG9yRWxlbWVudCo+KGVsZW1lbnQpLT52aXNpdGVkTGlua0hhc2goKTsKKyAgICBpZiAoY29uc3Qg
QXRvbWljU3RyaW5nKiBhdHRyID0gbGlua0F0dHJpYnV0ZShlbGVtZW50KSkKKyAgICAgICAgcmV0
dXJuIFdlYkNvcmU6OnZpc2l0ZWRMaW5rSGFzaChlbGVtZW50LT5kb2N1bWVudCgpLT5iYXNlVVJM
KCksICphdHRyKTsKKyAgICByZXR1cm4gMDsKK30KKworRUluc2lkZUxpbmsgSFRNTEFuY2hvckVs
ZW1lbnQ6OmRldGVybWluZUxpbmtTdGF0ZVNsb3dDYXNlKEVsZW1lbnQqIGVsZW1lbnQpCit7Cisg
ICAgQVNTRVJUKGVsZW1lbnQtPmlzTGluaygpKTsKKworICAgIGNvbnN0IEF0b21pY1N0cmluZyog
YXR0cmlidXRlID0gbGlua0F0dHJpYnV0ZShlbGVtZW50KTsKKyAgICBpZiAoIWF0dHJpYnV0ZSB8
fCBhdHRyaWJ1dGUtPmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gTm90SW5zaWRlTGluazsKKwor
ICAgIC8vIEFuIGVtcHR5IGhyZWYgcmVmZXJzIHRvIHRoZSBkb2N1bWVudCBpdHNlbGYgd2hpY2gg
aXMgYWx3YXlzIHZpc2l0ZWQuIEl0IGlzIHVzZWZ1bCB0byBjaGVjayB0aGlzIGV4cGxpY2l0bHkg
c28KKyAgICAvLyB0aGF0IHZpc2l0ZWQgbGlua3MgY2FuIGJlIHRlc3RlZCBpbiBwbGF0Zm9ybSBp
bmRlcGVuZGVudCBtYW5uZXIsIHdpdGhvdXQgZXhwbGljaXQgc3VwcG9ydCBpbiB0aGUgdGVzdCBo
YXJuZXNzLgorICAgIGlmIChhdHRyaWJ1dGUtPmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIElu
c2lkZVZpc2l0ZWRMaW5rOworCisgICAgTGlua0hhc2ggaGFzaDsKKyAgICBpZiAoZWxlbWVudC0+
aGFzVGFnTmFtZShhVGFnKSkKKyAgICAgICAgaGFzaCA9IHN0YXRpY19jYXN0PEhUTUxBbmNob3JF
bGVtZW50Kj4oZWxlbWVudCktPnZpc2l0ZWRMaW5rSGFzaCgpOworICAgIGVsc2UKKyAgICAgICAg
aGFzaCA9IFdlYkNvcmU6OnZpc2l0ZWRMaW5rSGFzaChlbGVtZW50LT5kb2N1bWVudCgpLT5iYXNl
VVJMKCksICphdHRyaWJ1dGUpOworCisgICAgaWYgKCFoYXNoKQorICAgICAgICByZXR1cm4gSW5z
aWRlVW52aXNpdGVkTGluazsKKworICAgIEZyYW1lKiBmcmFtZSA9IGVsZW1lbnQtPmRvY3VtZW50
KCktPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIEluc2lkZVVudmlz
aXRlZExpbms7CisKKyAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBh
Z2UpCisgICAgICAgIHJldHVybiBJbnNpZGVVbnZpc2l0ZWRMaW5rOworCisgICAgZWxlbWVudC0+
ZG9jdW1lbnQoKS0+ZGlkQ2hlY2tWaXNpdGVkTGluayhoYXNoKTsKKworI2lmIFVTRShQTEFURk9S
TV9TVFJBVEVHSUVTKQorICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+dmlzaXRlZExp
bmtTdHJhdGVneSgpLT5pc0xpbmtWaXNpdGVkKHBhZ2UsIGhhc2gsIGVsZW1lbnQtPmRvY3VtZW50
KCktPmJhc2VVUkwoKSwgKmF0dHJpYnV0ZSkgPyBJbnNpZGVWaXNpdGVkTGluayA6IEluc2lkZVVu
dmlzaXRlZExpbms7CisjZWxzZQorICAgIHJldHVybiBwYWdlLT5ncm91cCgpLmlzTGlua1Zpc2l0
ZWQoaGFzaCkgPyBJbnNpZGVWaXNpdGVkTGluayA6IEluc2lkZVVudmlzaXRlZExpbms7CisjZW5k
aWYKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oCmluZGV4IDAz
M2U5YzI0MDI2NGRiM2NlZGVjNTE3ZTk1ZDA3ZjM2YzczMDdlZmMuLmJmMjhkMTcwZDc5ZGUzZmQ0
YzFjNTUxZmQwMTlmNjlmMjVjMmEwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFuY2hvckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JF
bGVtZW50LmgKQEAgLTI3LDYgKzI3LDggQEAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkxpbmtIYXNoLmgiCisjaW5jbHVkZSAiUmVu
ZGVyU3R5bGVDb25zdGFudHMuaCIKKyNpbmNsdWRlICJYTGlua05hbWVzLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtOTgsMTAgKzEwMCwxMiBAQCBwdWJsaWM6CiAKICAgICBib29sIGhh
c1JlbCh1aW50MzJfdCByZWxhdGlvbikgY29uc3Q7CiAgICAgdm9pZCBzZXRSZWwoY29uc3QgU3Ry
aW5nJik7Ci0gICAgCi0gICAgTGlua0hhc2ggdmlzaXRlZExpbmtIYXNoKCkgY29uc3Q7CisKICAg
ICB2b2lkIGludmFsaWRhdGVDYWNoZWRWaXNpdGVkTGlua0hhc2goKSB7IG1fY2FjaGVkVmlzaXRl
ZExpbmtIYXNoID0gMDsgfQogCisgICAgc3RhdGljIEVJbnNpZGVMaW5rIGRldGVybWluZUxpbmtT
dGF0ZShFbGVtZW50Kik7CisgICAgc3RhdGljIExpbmtIYXNoIGxpbmtIYXNoRm9yRWxlbWVudChF
bGVtZW50Kik7CisKIHByb3RlY3RlZDoKICAgICBIVE1MQW5jaG9yRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIApAQCAtMTQxLDYgKzE0NSw5IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzZXRSb290RWRpdGFibGVFbGVtZW50Rm9yU2VsZWN0aW9uT25Nb3VzZURvd24oRWxl
bWVudCopOwogICAgIHZvaWQgY2xlYXJSb290RWRpdGFibGVFbGVtZW50Rm9yU2VsZWN0aW9uT25N
b3VzZURvd24oKTsKIAorICAgIExpbmtIYXNoIHZpc2l0ZWRMaW5rSGFzaCgpIGNvbnN0OworICAg
IHN0YXRpYyBFSW5zaWRlTGluayBkZXRlcm1pbmVMaW5rU3RhdGVTbG93Q2FzZShFbGVtZW50Kik7
CisKICAgICBib29sIG1faGFzUm9vdEVkaXRhYmxlRWxlbWVudEZvclNlbGVjdGlvbk9uTW91c2VE
b3duIDogMTsKICAgICBib29sIG1fd2FzU2hpZnRLZXlEb3duT25Nb3VzZURvd24gOiAxOwogICAg
IHVpbnQzMl90IG1fbGlua1JlbGF0aW9ucyA6IDMwOwpAQCAtMTU0LDYgKzE2MSwxMyBAQCBpbmxp
bmUgTGlua0hhc2ggSFRNTEFuY2hvckVsZW1lbnQ6OnZpc2l0ZWRMaW5rSGFzaCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fY2FjaGVkVmlzaXRlZExpbmtIYXNoOyAKIH0KIAoraW5saW5lIEVJbnNpZGVM
aW5rIEhUTUxBbmNob3JFbGVtZW50OjpkZXRlcm1pbmVMaW5rU3RhdGUoRWxlbWVudCogZWxlbWVu
dCkKK3sKKyAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQtPmlzTGluaygpKQorICAgICAgICBy
ZXR1cm4gTm90SW5zaWRlTGluazsKKyAgICByZXR1cm4gZGV0ZXJtaW5lTGlua1N0YXRlU2xvd0Nh
c2UoZWxlbWVudCk7Cit9CisKIC8vIEZ1bmN0aW9ucyBzaGFyZWQgd2l0aCB0aGUgb3RoZXIgYW5j
aG9yIGVsZW1lbnRzIChpLmUuLCBTVkcpLgogCiBib29sIGlzRW50ZXJLZXlLZXlkb3duRXZlbnQo
RXZlbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGVhMDhkZTZkMmZjMDFhZDI4M2VmYzFmZDAz
YWFkNzQ2OTNiNmE5YTYuLjM1NDk0NzMzYWRmOTQxMGYyNjlhMDhlY2M0MjM3NjNmNTNkMzk3YjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNjksNyArNjksNiBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVz
cGFjZS5oIgotI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3Vy
Y2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgpAQCAtOTQwLDE0ICs5MzksMTIgQEAgdm9pZCBQYWdl
OjphbGxWaXNpdGVkU3RhdGVDaGFuZ2VkKFBhZ2VHcm91cCogZ3JvdXApCiAgICAgICAgIFBhZ2Uq
IHBhZ2UgPSAqaXQ7CiAgICAgICAgIGlmIChwYWdlLT5tX2dyb3VwICE9IGdyb3VwKQogICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bV9tYWlu
RnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgp
KSB7Ci0gICAgICAgICAgICBpZiAoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9IGZyYW1l
LT5kb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCkpCi0gICAgICAgICAgICAgICAgc3R5bGVSZXNv
bHZlci0+YWxsVmlzaXRlZFN0YXRlQ2hhbmdlZCgpOwotICAgICAgICB9CisgICAgICAgIGZvciAo
RnJhbWUqIGZyYW1lID0gcGFnZS0+bV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZy
YW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKQorICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50
KCktPmludmFsaWRhdGVTdHlsZXNGb3JBbGxMaW5rcygpOwogICAgIH0KIH0KIAotdm9pZCBQYWdl
Ojp2aXNpdGVkU3RhdGVDaGFuZ2VkKFBhZ2VHcm91cCogZ3JvdXAsIExpbmtIYXNoIHZpc2l0ZWRM
aW5rSGFzaCkKK3ZvaWQgUGFnZTo6dmlzaXRlZFN0YXRlQ2hhbmdlZChQYWdlR3JvdXAqIGdyb3Vw
LCBMaW5rSGFzaCBsaW5rSGFzaCkKIHsKICAgICBBU1NFUlQoZ3JvdXApOwogICAgIGlmICghYWxs
UGFnZXMpCkBAIC05NTgsMTAgKzk1NSw4IEBAIHZvaWQgUGFnZTo6dmlzaXRlZFN0YXRlQ2hhbmdl
ZChQYWdlR3JvdXAqIGdyb3VwLCBMaW5rSGFzaCB2aXNpdGVkTGlua0hhc2gpCiAgICAgICAgIFBh
Z2UqIHBhZ2UgPSAqaXQ7CiAgICAgICAgIGlmIChwYWdlLT5tX2dyb3VwICE9IGdyb3VwKQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bV9t
YWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4
dCgpKSB7Ci0gICAgICAgICAgICBpZiAoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9IGZy
YW1lLT5kb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCkpCi0gICAgICAgICAgICAgICAgc3R5bGVS
ZXNvbHZlci0+dmlzaXRlZFN0YXRlQ2hhbmdlZCh2aXNpdGVkTGlua0hhc2gpOwotICAgICAgICB9
CisgICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bV9tYWluRnJhbWUuZ2V0KCk7IGZy
YW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKQorICAgICAgICAgICAg
ZnJhbWUtPmRvY3VtZW50KCktPmludmFsaWRhdGVTdHlsZXNGb3JMaW5rKGxpbmtIYXNoKTsKICAg
ICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180773</attachid>
            <date>2012-12-26 18:21:51 -0800</date>
            <delta_ts>2012-12-27 10:11:34 -0800</delta_ts>
            <desc>Introduced VistedLinkState.</desc>
            <filename>bug-105752-20121226181903.patch</filename>
            <type>text/plain</type>
            <size>31101</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2E5N2FiOTIwYTg2Nzhl
YjUwMWUwYmQ5ZmM1ZGNmZGU3NmFjMTk3Yy4uNGNmNzA2YTYxNTQyYjBiNzg2ODI5M2UxMmNjZWYw
OWZkZDc3ZDM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTEyLTI2ICBEaW1p
dHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTW92ZSB2aXNp
dGVkIGxpbmstY2hlY2tpbmcgKGFuZCBjYWNoaW5nKSBjb2RlIG91dCBvZiBTZWxlY3RvckNoZWNr
ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3
NTIKKworICAgICAgICBTZWxlY3RvckNoZWNrZXIga25ldyB0b28gbXVjaCBhYm91dCB2aXNpdGVk
IGxpbmtzIGFuZCBob3cgbGlua3MgYXJlIHN0b3JlZCBpbiBET00uIFRoaXMgY2hhbmdlCisgICAg
ICAgIG1vdmVzIHRoZSBjb2RlIHRvIG1vcmUgcmVsZXZhbnQgbG9jYXRpb25zIGFuZCBtb3ZlcyB0
aGUgdmlzaXRlZCBsaW5rcyBjYWNoZSBhbGwgdGhlIHdheSB1cCB0byBEb2N1bWVudCwKKyAgICAg
ICAgaW50cm9kdWNpbmcgVmlzaXRlZExpbmtTdGF0ZSBjbGFzcyB0byBtYW5hZ2UgdGhlIHN0YXRl
IG9mIHZpc2l0ZWQgbGlua3MuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRl
c3RzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGVkIFZpc2l0ZWRMaW5rU3RhdGUg
dG8gYnVpbGQgc3lzdGVtLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IERpdHRvLgor
ICAgICAgICAqIFRhcmdldC5wcmk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogRGl0
dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4K
KyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDogTW92ZWQgdmlzaXRlZC1saW5rIHN0
YXRlIGNvZGUgb3V0IHRvIFZpc2l0ZWRMaW5rU3RhdGUgY2xhc3MuCisgICAgICAgICogY3NzL1Nl
bGVjdG9yQ2hlY2tlci5oOiBEaXR0by4KKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjppbml0RWxlbWVudCk6IENoYW5nZWQg
Y2FsbHNpdGUgdG8gdXNlIFZpc2l0ZWRMaW5rU3RhdGUuCisgICAgICAgICogY3NzL1N0eWxlUmVz
b2x2ZXIuaDogUmVtb3ZlZCBwbHVtYi10aHJvdWdocyB0aGF0IGFyZSBub3cgdW5uZWNlc3Nhcnku
CisgICAgICAgICogZG9tL0RPTUFsbEluT25lLmNwcDogQWRkZWQgVmlzaXRlZExpbmtTdGF0ZSB0
byBidWlsZCBzeXN0ZW0uCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDogQWRkZWQgVmlzaXRl
ZExpbmtTdGF0ZSBpbml0YWxpemVyLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOiBBZGRlZCBW
aXNpdGVkTGlua1N0YXRlIG1lbWJlci4KKyAgICAgICAgKiBkb20vVmlzaXRlZExpbmtTdGF0ZS5j
cHA6IEFkZGVkLgorICAgICAgICAqIGRvbS9WaXNpdGVkTGlua1N0YXRlLmg6IEFkZGVkLgorICAg
ICAgICAqIGhpc3RvcnkvQ2FjaGVkUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRQ
YWdlOjpyZXN0b3JlKTogQ2hhbmdlZCBjYWxsc2l0ZSB0byB1c2UgVmlzaXRlZExpbmtTdGF0ZS4K
KyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWxsVmlz
aXRlZFN0YXRlQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dmlzaXRl
ZFN0YXRlQ2hhbmdlZCk6IERpdHRvLgorCiAyMDEyLTEyLTI0ICBMYXN6bG8gR29tYm9zICA8bC5n
b21ib3NAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmVtb3ZlIHd0Zi9QbGF0Zm9ybS5oIGluY2x1
ZGVzIGZyb20ge2N8Y3BwfSBmaWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA4NGFlOWExZGEz
ZmQ4MWMwZDIxYjA2OTJkMTE5YjI3YjNiYTAxMWY0Li40OTQzZmU2NmUyN2MxZWM5ZmY4MjBmZTAz
YmEzZDZmZTVkM2I1MDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTI0Niw2ICsxMjQ2LDcg
QEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5jcHAK
ICAgICBkb20vVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IuY3BwCiAgICAgZG9tL1ZpZXdwb3J0
QXJndW1lbnRzLmNwcAorICAgIGRvbS9WaXNpdGVkTGlua1N0YXRlLmNwcAogICAgIGRvbS9XZWJD
b3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcAogICAgIGRvbS9XZWJLaXRBbmltYXRpb25FdmVu
dC5jcHAKICAgICBkb20vV2ViS2l0TmFtZWRGbG93LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KaW5kZXggMmY3NGQ4OGZjYjIxZDI3NDEwMTRkNTQ1YzczNDZkNjgyMzdlMjg1Zi4uMzIx
YjY2NjI0MmFiODllNzI3NzY2MWIxN2ExYzY1ZDQ4NWI1ODk3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCkBAIC0yOTg5LDYgKzI5ODksOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9k
b20vVmlld3BvcnRBcmd1bWVudHMuaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1Zpc2l0ZWRMaW5r
U3RhdGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vVmlzaXRlZExpbmtTdGF0ZS5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9kb20vV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9XZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggXAogCVNvdXJj
ZS9XZWJDb3JlL2RvbS9XZWJLaXRBbmltYXRpb25FdmVudC5jcHAgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXgg
MGI3Njg1M2MzYmZjNzkwZjgwNjA4MjI2YmQ0ODk4YjdjNGZkM2RjMS4uYjI0MDY4NzBlZDIwMTE1
ODM2OWZkMjFlYWJlYjk3NGRmNDE2YjUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC00NzEsNiArNDcxLDcg
QEAgU09VUkNFUyArPSBcCiAgICAgZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmNwcCBcCiAgICAg
ZG9tL1VzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmNwcCBcCiAgICAgZG9tL1ZpZXdwb3J0QXJn
dW1lbnRzLmNwcCBcCisgICAgZG9tL1Zpc2l0ZWRMaW5rU3RhdGUuY3BwIFwKICAgICBkb20vV2Vi
Q29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAgXAogICAgIGRvbS9XZWJLaXRBbmltYXRpb25F
dmVudC5jcHAgXAogICAgIGRvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQppbmRleCBjZjliYmExYjlmMDY4MTk3MmZmY2M1MWY5OTY1YzZmMTg3ZDNhYzdkLi5hNWZm
ZWZlYzk1MmQxYjc1OTNiYjQ3YTRlZjEwOThmNTliMjIyNTZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0yOTQ0LDYgKzI5NDQsOCBAQAogICAgICAgICAgICAgJ2RvbS9Vc2VyR2VzdHVyZUluZGljYXRv
ci5jcHAnLAogICAgICAgICAgICAgJ2RvbS9Vc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5jcHAn
LAogICAgICAgICAgICAgJ2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAnLAorICAgICAgICAgICAg
J2RvbS9WaXNpdGVkTGlua1N0YXRlLmNwcCcsCisgICAgICAgICAgICAnZG9tL1Zpc2l0ZWRMaW5r
U3RhdGUuaCcsCiAgICAgICAgICAgICAnZG9tL1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24u
Y3BwJywKICAgICAgICAgICAgICdkb20vV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oJywK
ICAgICAgICAgICAgICdkb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmNmRmZDBh
N2NkNDEzNjE3MTdhMWZlNGIyZDc2YWQ1MzQwYWM4YzliLi5mZTRiOTlhZGMxMGFiMTZiNmY3ZGU5
MTQ5MjMwOWExMTdkYmEwYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDkyLDYgKzEwOTIsOCBAQAogCQk0MThBMDZEMTEz
M0MwNEQ1MDBDRDM3OUMgLyogRXZlbnREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOEEwNkNGMTMzQzA0RDUwMENEMzc5QyAvKiBF
dmVudERpc3BhdGNoZXIuY3BwICovOyB9OwogCQk0MThGODgwNDBGRjk1N0FFMDA4MEYwNDUgLyog
SlNBYnN0cmFjdFdvcmtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MThGODgwMjBGRjk1N0FFMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5j
cHAgKi87IH07CiAJCTQxOEY4ODA1MEZGOTU3QUYwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MThGODgw
MzBGRjk1N0FFMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5oICovOyB9OworCQk0MTlCQzJE
RTE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTlCQzJEQzE2ODUzMjk5MDBENjRENkQg
LyogVmlzaXRlZExpbmtTdGF0ZS5jcHAgKi87IH07CisJCTQxOUJDMkRGMTY4NTMyOTkwMEQ2NEQ2
RCAvKiBWaXNpdGVkTGlua1N0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTlCQzJERDE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0
ZS5oICovOyB9OwogCQk0MUEzRDU4RTEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2Vy
VGhyZWFkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxQTNENThDMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwICov
OyB9OwogCQk0MUEzRDU4RjEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFk
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEzRDU4
RDEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmggKi87IH07CiAJCTQx
QkY3MDBCMEZFODZGNDkwMDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5uZWwuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCRjcwMDkwRkU4NkY0OTAw
NUU4REVDIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAgKi87IH07CkBAIC04MzI2LDYgKzgzMjgs
OCBAQAogCQk0MThBMDZDRjEzM0MwNEQ1MDBDRDM3OUMgLyogRXZlbnREaXNwYXRjaGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50RGlzcGF0Y2hlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOEY4ODAyMEZGOTU3QUUwMDgwRjA0NSAv
KiBKU0Fic3RyYWN0V29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTQWJzdHJhY3RXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MThGODgwMzBGRjk1N0FFMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Fic3RyYWN0V29ya2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxOUJDMkRDMTY4NTMyOTkwMEQ2NEQ2RCAvKiBWaXNpdGVkTGlua1N0
YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpc2l0ZWRMaW5r
U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTlCQzJERDE2ODUzMjk5
MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBWaXNpdGVkTGlua1N0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxQTNENThDMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGVkaWNhdGVkV29ya2VyVGhyZWFk
LmNwcDsgcGF0aCA9IHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFBM0Q1OEQxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRl
ZFdvcmtlclRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEZWRpY2F0
ZWRXb3JrZXJUaHJlYWQuaDsgcGF0aCA9IHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQkY3MDA5MEZFODZGNDkwMDVFOERFQyAv
KiBNZXNzYWdlUG9ydENoYW5uZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTWVzc2FnZVBvcnRDaGFubmVsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTIyMjg1LDYgKzIyMjg5LDggQEAKIAkJCQlCQ0RGMzE3QTExRjhENjgzMDAzQzVCRjggLyog
VXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IuaCAqLywKIAkJCQlDRUY0MThDQzExNzk2NzhDMDA5
RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuY3BwICovLAogCQkJCUNFRjQxOENEMTE3OTY3OEMw
MDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5oICovLAorCQkJCTQxOUJDMkRDMTY4NTMyOTkw
MEQ2NEQ2RCAvKiBWaXNpdGVkTGlua1N0YXRlLmNwcCAqLywKKwkJCQk0MTlCQzJERDE2ODUzMjk5
MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5oICovLAogCQkJCUYzQkZDOUQyMTVDMTc3RUMw
MDQyNDRFNSAvKiBXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcCAqLywKIAkJCQk0RjM3
N0ZGNDE1RkEzNTZBMDBFNUQ2MEQgLyogV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oICov
LAogCQkJCTMxQzBGRjFCMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25FdmVudC5j
cHAgKi8sCkBAIC0yNTk5Miw2ICsyNTk5OCw3IEBACiAJCQkJMEZCODg5MEYxNjdEMzAxNjAwMTBD
REE1IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEz
RUYzNDQxNjg0RUNGNDAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDE1MDcxNTgxNjg1MDY3MzAwQzNDN0IzIC8qIFNlbGVjdG9yRmlsdGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0MTlCQzJERjE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExp
bmtTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yOTExMiw2ICsyOTExOSw3IEBACiAJCQkJMjA5
QjQ1NkIxNjc5NkE3RTAwRTU0RTRFIC8qIEpTQ3J5cHRvQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUUxM0VGMzQ5MTY4NTBDNDcwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25D
Rk5ldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTUwNzE1NzE2ODUwNjczMDBDM0M3QjMgLyog
U2VsZWN0b3JGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDE5QkMyREUxNjg1MzI5OTAw
RDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IDQyMWVhOTBhYjQwNzZhYzk2YmQyYzllOGQy
YTJkMTc3MjEyNWRmNzYuLmIyZDliOTI5ZWU4M2Y4OGU2MjE0ZTFmOTc2NzZkOWM1NDFmYjE3MzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC0zNSw3ICszNSw2IEBA
CiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJGcmFtZVNlbGVjdGlvbi5oIgotI2luY2x1ZGUgIkhUTUxBbmNob3JFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTEZyYW1lRWxlbWVudEJhc2UuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCkBAIC00NCw5ICs0Myw3IEBACiAjaW5jbHVk
ZSAiSFRNTFN0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgotI2luY2x1ZGUgIk5vZGVUcmF2ZXJz
YWwuaCIKICNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyU3R5bGUuaCIKQEAgLTU2LDEyICs1Myw2IEBACiAjaW5jbHVkZSAiU2libGluZ1Ry
YXZlcnNhbFN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiVGV4dC5oIgotI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKLQotI2lmIFVTRShQTEFURk9STV9T
VFJBVEVHSUVTKQotI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgotI2luY2x1ZGUgIlZp
c2l0ZWRMaW5rU3RyYXRlZ3kuaCIKLSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTc3LDU2ICs2OCw2IEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2VyKERvY3VtZW50
KiBkb2N1bWVudCwgYm9vbCBzdHJpY3RQYXJzaW5nKQogewogfQogCi1zdGF0aWMgaW5saW5lIGNv
bnN0IEF0b21pY1N0cmluZyogbGlua0F0dHJpYnV0ZShFbGVtZW50KiBlbGVtZW50KQotewotICAg
IGlmICghZWxlbWVudC0+aXNMaW5rKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmIChlbGVt
ZW50LT5pc0hUTUxFbGVtZW50KCkpCi0gICAgICAgIHJldHVybiAmZWxlbWVudC0+ZmFzdEdldEF0
dHJpYnV0ZShocmVmQXR0cik7Ci0gICAgaWYgKGVsZW1lbnQtPmlzU1ZHRWxlbWVudCgpKQotICAg
ICAgICByZXR1cm4gJmVsZW1lbnQtPmdldEF0dHJpYnV0ZShYTGlua05hbWVzOjpocmVmQXR0cik7
Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLUVJbnNpZGVMaW5rIFNlbGVjdG9yQ2hlY2tlcjo6ZGV0ZXJt
aW5lTGlua1N0YXRlU2xvd0Nhc2UoRWxlbWVudCogZWxlbWVudCkgY29uc3QKLXsKLSAgICBBU1NF
UlQoZWxlbWVudC0+aXNMaW5rKCkpOwotCi0gICAgY29uc3QgQXRvbWljU3RyaW5nKiBhdHRyaWJ1
dGUgPSBsaW5rQXR0cmlidXRlKGVsZW1lbnQpOwotICAgIGlmICghYXR0cmlidXRlIHx8IGF0dHJp
YnV0ZS0+aXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBOb3RJbnNpZGVMaW5rOwotCi0gICAgLy8g
QW4gZW1wdHkgaHJlZiByZWZlcnMgdG8gdGhlIGRvY3VtZW50IGl0c2VsZiB3aGljaCBpcyBhbHdh
eXMgdmlzaXRlZC4gSXQgaXMgdXNlZnVsIHRvIGNoZWNrIHRoaXMgZXhwbGljaXRseSBzbwotICAg
IC8vIHRoYXQgdmlzaXRlZCBsaW5rcyBjYW4gYmUgdGVzdGVkIGluIHBsYXRmb3JtIGluZGVwZW5k
ZW50IG1hbm5lciwgd2l0aG91dCBleHBsaWNpdCBzdXBwb3J0IGluIHRoZSB0ZXN0IGhhcm5lc3Mu
Ci0gICAgaWYgKGF0dHJpYnV0ZS0+aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gSW5zaWRlVmlz
aXRlZExpbms7Ci0gICAgCi0gICAgTGlua0hhc2ggaGFzaDsKLSAgICBpZiAoZWxlbWVudC0+aGFz
VGFnTmFtZShhVGFnKSkgCi0gICAgICAgIGhhc2ggPSBzdGF0aWNfY2FzdDxIVE1MQW5jaG9yRWxl
bWVudCo+KGVsZW1lbnQpLT52aXNpdGVkTGlua0hhc2goKTsKLSAgICBlbHNlCi0gICAgICAgIGhh
c2ggPSB2aXNpdGVkTGlua0hhc2gobV9kb2N1bWVudC0+YmFzZVVSTCgpLCAqYXR0cmlidXRlKTsK
LQotICAgIGlmICghaGFzaCkKLSAgICAgICAgcmV0dXJuIEluc2lkZVVudmlzaXRlZExpbms7Ci0K
LSAgICBGcmFtZSogZnJhbWUgPSBtX2RvY3VtZW50LT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUp
Ci0gICAgICAgIHJldHVybiBJbnNpZGVVbnZpc2l0ZWRMaW5rOwotCi0gICAgUGFnZSogcGFnZSA9
IGZyYW1lLT5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm4gSW5zaWRlVW52
aXNpdGVkTGluazsKLQotICAgIG1fbGlua3NDaGVja2VkRm9yVmlzaXRlZFN0YXRlLmFkZChoYXNo
KTsKLQotI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAgIHJldHVybiBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+dmlzaXRlZExpbmtTdHJhdGVneSgpLT5pc0xpbmtWaXNpdGVkKHBhZ2UsIGhh
c2gsIG1fZG9jdW1lbnQtPmJhc2VVUkwoKSwgKmF0dHJpYnV0ZSkgPyBJbnNpZGVWaXNpdGVkTGlu
ayA6IEluc2lkZVVudmlzaXRlZExpbms7Ci0jZWxzZQotICAgIHJldHVybiBwYWdlLT5ncm91cCgp
LmlzTGlua1Zpc2l0ZWQoaGFzaCkgPyBJbnNpZGVWaXNpdGVkTGluayA6IEluc2lkZVVudmlzaXRl
ZExpbms7Ci0jZW5kaWYKLX0KLQogYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3Io
Q1NTU2VsZWN0b3IqIHNlbCwgRWxlbWVudCogZWxlbWVudCwgYm9vbCBpc0Zhc3RDaGVja2FibGVT
ZWxlY3RvcikgY29uc3QKIHsKICAgICBpZiAoaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IgJiYgIWVs
ZW1lbnQtPmlzU1ZHRWxlbWVudCgpKSB7CkBAIC0xMTAxLDMxICsxMDQyLDYgQEAgYm9vbCBTZWxl
Y3RvckNoZWNrZXI6OmNoZWNrU2Nyb2xsYmFyUHNldWRvQ2xhc3MoQ1NTU2VsZWN0b3IqIHNlbCkg
Y29uc3QKICAgICB9CiB9CiAKLXZvaWQgU2VsZWN0b3JDaGVja2VyOjphbGxWaXNpdGVkU3RhdGVD
aGFuZ2VkKCkKLXsKLSAgICBpZiAobV9saW5rc0NoZWNrZWRGb3JWaXNpdGVkU3RhdGUuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgZm9yIChFbGVtZW50KiBlbGVtZW50ID0gRWxlbWVu
dFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4obV9kb2N1bWVudCk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBF
bGVtZW50VHJhdmVyc2FsOjpuZXh0KGVsZW1lbnQpKSB7Ci0gICAgICAgIGlmIChlbGVtZW50LT5p
c0xpbmsoKSkKLSAgICAgICAgICAgIGVsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKLSAg
ICB9Ci19Ci0KLXZvaWQgU2VsZWN0b3JDaGVja2VyOjp2aXNpdGVkU3RhdGVDaGFuZ2VkKExpbmtI
YXNoIHZpc2l0ZWRIYXNoKQotewotICAgIGlmICghbV9saW5rc0NoZWNrZWRGb3JWaXNpdGVkU3Rh
dGUuY29udGFpbnModmlzaXRlZEhhc2gpKQotICAgICAgICByZXR1cm47Ci0gICAgZm9yIChFbGVt
ZW50KiBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4obV9kb2N1bWVudCk7
IGVsZW1lbnQ7IGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0KGVsZW1lbnQpKSB7Ci0g
ICAgICAgIExpbmtIYXNoIGhhc2ggPSAwOwotICAgICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFt
ZShhVGFnKSkKLSAgICAgICAgICAgIGhhc2ggPSBzdGF0aWNfY2FzdDxIVE1MQW5jaG9yRWxlbWVu
dCo+KGVsZW1lbnQpLT52aXNpdGVkTGlua0hhc2goKTsKLSAgICAgICAgZWxzZSBpZiAoY29uc3Qg
QXRvbWljU3RyaW5nKiBhdHRyID0gbGlua0F0dHJpYnV0ZShlbGVtZW50KSkKLSAgICAgICAgICAg
IGhhc2ggPSB2aXNpdGVkTGlua0hhc2gobV9kb2N1bWVudC0+YmFzZVVSTCgpLCAqYXR0cik7Ci0g
ICAgICAgIGlmIChoYXNoID09IHZpc2l0ZWRIYXNoKQotICAgICAgICAgICAgZWxlbWVudC0+c2V0
TmVlZHNTdHlsZVJlY2FsYygpOwotICAgIH0KLX0KLQogYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNv
bW1vblBzZXVkb0NsYXNzU2VsZWN0b3JNYXRjaGVzKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIGNv
bnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciwgVmlzaXRlZE1hdGNoVHlwZSB2aXNpdGVkTWF0Y2hU
eXBlKSBjb25zdAogewogICAgIEFTU0VSVChpc0NvbW1vblBzZXVkb0NsYXNzU2VsZWN0b3Ioc2Vs
ZWN0b3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAppbmRleCA4NDQ1YzYyNWMw
MjA3N2MxYzY2MzVmZDg2YWMyOGY1Y2M2N2VmMGRhLi5jMjhjZjA2YzdhMDRlYzkzOWJkNTg1Y2M4
NTg1Y2Q2YjczNWRiMjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JD
aGVja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCkBAIC0z
MSw4ICszMSw2IEBACiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0
b3IuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJM
aW5rSGFzaC5oIgotI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAi
U3BhY2VTcGxpdFN0cmluZy5oIgogI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgpAQCAtODgsMTAgKzg2LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBi
b29sIGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKik7CiAgICAgYm9v
bCBmYXN0Q2hlY2tTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3RvciosIGNvbnN0IEVsZW1lbnQqKSBj
b25zdDsKIAotICAgIEVJbnNpZGVMaW5rIGRldGVybWluZUxpbmtTdGF0ZShFbGVtZW50KikgY29u
c3Q7Ci0gICAgdm9pZCBhbGxWaXNpdGVkU3RhdGVDaGFuZ2VkKCk7Ci0gICAgdm9pZCB2aXNpdGVk
U3RhdGVDaGFuZ2VkKExpbmtIYXNoIHZpc2l0ZWRIYXNoKTsKLQogICAgIERvY3VtZW50KiBkb2N1
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQ7IH0KICAgICBib29sIHN0cmljdFBhcnNp
bmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmljdFBhcnNpbmc7IH0KIApAQCAtMTE1LDIyICsxMDks
MTIgQEAgcHJpdmF0ZToKICAgICBib29sIGZhc3RDaGVja1JpZ2h0bW9zdFNlbGVjdG9yKGNvbnN0
IENTU1NlbGVjdG9yKiwgY29uc3QgRWxlbWVudCosIFZpc2l0ZWRNYXRjaFR5cGUpIGNvbnN0Owog
ICAgIGJvb2wgY29tbW9uUHNldWRvQ2xhc3NTZWxlY3Rvck1hdGNoZXMoY29uc3QgRWxlbWVudCos
IGNvbnN0IENTU1NlbGVjdG9yKiwgVmlzaXRlZE1hdGNoVHlwZSkgY29uc3Q7CiAKLSAgICBFSW5z
aWRlTGluayBkZXRlcm1pbmVMaW5rU3RhdGVTbG93Q2FzZShFbGVtZW50KikgY29uc3Q7Ci0KICAg
ICBEb2N1bWVudCogbV9kb2N1bWVudDsKICAgICBib29sIG1fc3RyaWN0UGFyc2luZzsKICAgICBi
b29sIG1fZG9jdW1lbnRJc0hUTUw7CiAgICAgTW9kZSBtX21vZGU7Ci0gICAgbXV0YWJsZSBIYXNo
U2V0PExpbmtIYXNoLCBMaW5rSGFzaEhhc2g+IG1fbGlua3NDaGVja2VkRm9yVmlzaXRlZFN0YXRl
OwogfTsKIAotaW5saW5lIEVJbnNpZGVMaW5rIFNlbGVjdG9yQ2hlY2tlcjo6ZGV0ZXJtaW5lTGlu
a1N0YXRlKEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Ci17Ci0gICAgaWYgKCFlbGVtZW50IHx8ICFl
bGVtZW50LT5pc0xpbmsoKSkKLSAgICAgICAgcmV0dXJuIE5vdEluc2lkZUxpbms7Ci0gICAgcmV0
dXJuIGRldGVybWluZUxpbmtTdGF0ZVNsb3dDYXNlKGVsZW1lbnQpOwotfQotCiBpbmxpbmUgYm9v
bCBTZWxlY3RvckNoZWNrZXI6OmlzQ29tbW9uUHNldWRvQ2xhc3NTZWxlY3Rvcihjb25zdCBDU1NT
ZWxlY3Rvciogc2VsZWN0b3IpCiB7CiAgICAgaWYgKHNlbGVjdG9yLT5tX21hdGNoICE9IENTU1Nl
bGVjdG9yOjpQc2V1ZG9DbGFzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRl
eCAyOGQ4ZWRiYzdkZjFkNjU1MTUyNGVlYTA5YzcwOGQ0Y2IyM2ViZDM1Li4wMjk1OTE0YzIxOTFm
MDJiMTA0YTUwMDU4ZTEyNzU4Mzg4NzJkMDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwCkBAIC04OCw3ICs4OCw2IEBACiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAj
aW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCi0jaW5j
bHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGFpci5oIgogI2luY2x1ZGUgIlBlcnNwZWN0
aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiUXVvdGVzRGF0YS5oIgpAQCAtMTI0
LDYgKzEyMyw3IEBACiAjaW5jbHVkZSAiVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAj
aW5jbHVkZSAiVXNlckFnZW50U3R5bGVTaGVldHMuaCIKICNpbmNsdWRlICJWaWV3cG9ydFN0eWxl
UmVzb2x2ZXIuaCIKKyNpbmNsdWRlICJWaXNpdGVkTGlua1N0YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
Q29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIldlYktpdENTU0tleWZyYW1l
UnVsZS5oIgogI2luY2x1ZGUgIldlYktpdENTU0tleWZyYW1lc1J1bGUuaCIKQEAgLTk2NCw3ICs5
NjQsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjppbml0RWxlbWVudChFbGVtZW50KiBl
KQogICAgIGlmIChtX2VsZW1lbnQgIT0gZSkgewogICAgICAgICBtX2VsZW1lbnQgPSBlOwogICAg
ICAgICBtX3N0eWxlZEVsZW1lbnQgPSBtX2VsZW1lbnQgJiYgbV9lbGVtZW50LT5pc1N0eWxlZEVs
ZW1lbnQoKSA/IHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihtX2VsZW1lbnQpIDogMDsKLSAg
ICAgICAgbV9lbGVtZW50TGlua1N0YXRlID0gbV9jaGVja2VyLmRldGVybWluZUxpbmtTdGF0ZSht
X2VsZW1lbnQpOworICAgICAgICBtX2VsZW1lbnRMaW5rU3RhdGUgPSBlLT5kb2N1bWVudCgpLT52
aXNpdGVkTGlua1N0YXRlKCktPmRldGVybWluZUxpbmtTdGF0ZShtX2VsZW1lbnQpOwogICAgICAg
ICBpZiAoZSAmJiBlID09IGUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpKSB7CiAgICAg
ICAgICAgICBlLT5kb2N1bWVudCgpLT5zZXREaXJlY3Rpb25TZXRPbkRvY3VtZW50RWxlbWVudChm
YWxzZSk7CiAgICAgICAgICAgICBlLT5kb2N1bWVudCgpLT5zZXRXcml0aW5nTW9kZVNldE9uRG9j
dW1lbnRFbGVtZW50KGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IGFj
OTE1MDk5YTJlZmVlOGI1YmQ5NTQ4MGJjMDU4MzRiM2UzMmVlZGQuLjJiZjMyZGFjYjM4ZTE3Njcw
YmQxMjRkMzUyNmNjYzg1NmRlMTYxZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApA
QCAtMjYzLDkgKzI2Myw2IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1ZpZXdwb3J0RGVwZW5kZW50
TWVkaWFRdWVyaWVzKCkgY29uc3QgeyByZXR1cm4gIW1fdmlld3BvcnREZXBlbmRlbnRNZWRpYVF1
ZXJ5UmVzdWx0cy5pc0VtcHR5KCk7IH0KICAgICBib29sIGFmZmVjdGVkQnlWaWV3cG9ydENoYW5n
ZSgpIGNvbnN0OwogCi0gICAgdm9pZCBhbGxWaXNpdGVkU3RhdGVDaGFuZ2VkKCkgeyBtX2NoZWNr
ZXIuYWxsVmlzaXRlZFN0YXRlQ2hhbmdlZCgpOyB9Ci0gICAgdm9pZCB2aXNpdGVkU3RhdGVDaGFu
Z2VkKExpbmtIYXNoIHZpc2l0ZWRIYXNoKSB7IG1fY2hlY2tlci52aXNpdGVkU3RhdGVDaGFuZ2Vk
KHZpc2l0ZWRIYXNoKTsgfQotCiAgICAgdm9pZCBhZGRLZXlmcmFtZVN0eWxlKFBhc3NSZWZQdHI8
U3R5bGVSdWxlS2V5ZnJhbWVzPik7CiAKICAgICBib29sIGNoZWNrUmVnaW9uU3R5bGUoRWxlbWVu
dCogcmVnaW9uRWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxs
SW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAppbmRleCA1OWY1
OWJlYmMxNzkwODkwNTMxNWE0OTJmOGYwYTk2MjE5NzYwYjc2Li43MmU0YTQ4NTVmZmY0Y2RjM2Zj
ZTJmZjkyMTQzMGQyNDg5NzM3Y2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9N
QWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKQEAg
LTE0OSw2ICsxNDksNyBAQAogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmNwcCIKICNp
bmNsdWRlICJVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5jcHAiCiAjaW5jbHVkZSAiVmlld3Bv
cnRBcmd1bWVudHMuY3BwIgorI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3RhdGUuY3BwIgogI2luY2x1
ZGUgIldlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCIKICNpbmNsdWRlICJXZWJLaXROYW1lZEZsb3cu
Y3BwIgogI2luY2x1ZGUgIldlYktpdFRyYW5zaXRpb25FdmVudC5jcHAiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAppbmRleCA1NmM3NDNmYjY2YjM3YmRhZDY0Y2I2Y2E1YTdkMjE3MGQzN2UwMWQxLi5h
ZTU0MmY1NjkxOGU4NTBjYTBjNGUwMGExNzJkMzhlMTJmMmQ3NWJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKQEAgLTE2MSw2ICsxNjEsNyBAQAogI2luY2x1ZGUgIlRyZWVXYWxrZXIuaCIKICNp
bmNsdWRlICJVc2VyQWN0aW9uRWxlbWVudFNldC5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50VVJM
UGF0dGVybi5oIgorI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3RhdGUuaCIKICNpbmNsdWRlICJXZWJD
b3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiV2ViS2l0TmFtZWRGbG93Lmgi
CiAjaW5jbHVkZSAiWE1MRG9jdW1lbnRQYXJzZXIuaCIKQEAgLTQ0OSw2ICs0NTAsNyBAQCBEb2N1
bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRN
TCwgYm9vbCBpc0hUTUwpCiAgICAgLCBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcygwKQogI2VuZGlm
CiAgICAgLCBtX3N0eWxlU2hlZXRDb2xsZWN0aW9uKERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rp
b246OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fdmlzaXRlZExpbmtTdGF0ZShWaXNpdGVkTGlua1N0
YXRlOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX3JlYWR5U3RhdGUoQ29tcGxldGUpCiAgICAgLCBt
X3N0eWxlUmVjYWxjVGltZXIodGhpcywgJkRvY3VtZW50OjpzdHlsZVJlY2FsY1RpbWVyRmlyZWQp
CiAgICAgLCBtX3BlbmRpbmdTdHlsZVJlY2FsY1Nob3VsZEZvcmNlKGZhbHNlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAppbmRleCA1YjE5NGI5Y2I0MWYzMTZkMzg5ZjJmNGVjZjEwNDYyZjg0ODcxNzdhLi5l
MzliMmRkYmI2MWY1ZjgxYTBiNzQyMWY4MWQ5NDYxMjJlZmU5MDFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaApAQCAtMTQwLDYgKzE0MCw3IEBAIGNsYXNzIFN0eWxlU2hlZXRMaXN0OwogY2xhc3MgVGV4
dDsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiBjbGFzcyBUcmVlV2Fsa2VyOworY2xhc3Mg
VmlzaXRlZExpbmtTdGF0ZTsKIGNsYXNzIFdlYktpdE5hbWVkRmxvdzsKIGNsYXNzIFhNTEh0dHBS
ZXF1ZXN0OwogY2xhc3MgWFBhdGhFdmFsdWF0b3I7CkBAIC02NzIsNyArNjczLDggQEAgcHVibGlj
OgogICAgIHZvaWQgcmVzZXRMaW5rQ29sb3IoKTsKICAgICB2b2lkIHJlc2V0VmlzaXRlZExpbmtD
b2xvcigpOwogICAgIHZvaWQgcmVzZXRBY3RpdmVMaW5rQ29sb3IoKTsKLSAgICAKKyAgICBWaXNp
dGVkTGlua1N0YXRlKiB2aXNpdGVkTGlua1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV92aXNpdGVk
TGlua1N0YXRlLmdldCgpOyB9CisKICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIHBy
ZXBhcmVNb3VzZUV2ZW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgY29uc3QgTGF5b3V0UG9pbnQm
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAogICAgIC8qIE5ld2x5IHByb3Bvc2VkIENT
UzMgbWVjaGFuaXNtIGZvciBzZWxlY3RpbmcgYWx0ZXJuYXRlCkBAIC0xMzY1LDYgKzEzNjcsNyBA
QCBwcml2YXRlOgogICAgIENvbG9yIG1fbGlua0NvbG9yOwogICAgIENvbG9yIG1fdmlzaXRlZExp
bmtDb2xvcjsKICAgICBDb2xvciBtX2FjdGl2ZUxpbmtDb2xvcjsKKyAgICBPd25QdHI8VmlzaXRl
ZExpbmtTdGF0ZT4gbV92aXNpdGVkTGlua1N0YXRlOwogCiAgICAgYm9vbCBtX2xvYWRpbmdTaGVl
dDsKICAgICBib29sIG1fdmlzdWFsbHlPcmRlcmVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1Zpc2l0ZWRMaW5rU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Zpc2l0ZWRM
aW5rU3RhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0YTVkZDJjMjI4YzFlMjAxMDZmOWE1MzIyOGVkNGYy
ZTU1Y2NiODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlzaXRlZExp
bmtTdGF0ZS5jcHAKQEAgLTAsMCArMSwxMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkg
TGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwNC0yMDA1IEFs
bGFuIFNhbmRmZWxkIEplbnNlbiAoa2RlQGNhcmV3b2xmLmNvbSkKKyAqIENvcHlyaWdodCAoQykg
MjAwNiwgMjAwNyBOaWNob2xhcyBTaGFua3MgKHdlYmtpdEBuaWNrc2hhbmtzLmNvbSkKKyAqIENv
cHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxleGV5
IFByb3NrdXJ5YWtvdiA8YXBAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAw
OCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAy
MDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRv
cmNobW9iaWxlLmNvbS8pCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEsIENvZGUgQXVyb3JhIEZvcnVt
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rp
b24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJWaXNpdGVkTGlua1N0YXRlLmgiCisKKyNpbmNsdWRlICJGcmFtZS5oIgorI2lu
Y2x1ZGUgIkhUTUxBbmNob3JFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5j
bHVkZSAiTm9kZVRyYXZlcnNhbC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdl
R3JvdXAuaCIKKworI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQorI2luY2x1ZGUgIlBsYXRm
b3JtU3RyYXRlZ2llcy5oIgorI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3RyYXRlZ3kuaCIKKyNlbmRp
ZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisK
K2lubGluZSBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nKiBsaW5rQXR0cmlidXRlKEVsZW1lbnQq
IGVsZW1lbnQpCit7CisgICAgaWYgKCFlbGVtZW50LT5pc0xpbmsoKSkKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgaWYgKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuICZl
bGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aHJlZkF0dHIpOworICAgIGlmIChl
bGVtZW50LT5pc1NWR0VsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuICZlbGVtZW50LT5nZXRBdHRy
aWJ1dGUoWExpbmtOYW1lczo6aHJlZkF0dHIpOworICAgIHJldHVybiAwOworfQorCitQYXNzT3du
UHRyPFZpc2l0ZWRMaW5rU3RhdGU+IFZpc2l0ZWRMaW5rU3RhdGU6OmNyZWF0ZShEb2N1bWVudCog
ZG9jdW1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBWaXNpdGVkTGlua1N0YXRlKGRv
Y3VtZW50KSk7Cit9CisKK1Zpc2l0ZWRMaW5rU3RhdGU6OlZpc2l0ZWRMaW5rU3RhdGUoRG9jdW1l
bnQqIGRvY3VtZW50KQorICAgIDptX2RvY3VtZW50KGRvY3VtZW50KQoreyB9CisKK3ZvaWQgVmlz
aXRlZExpbmtTdGF0ZTo6aW52YWxpZGF0ZVN0eWxlc0ZvckFsbExpbmtzKCkKK3sKKyAgICBpZiAo
bV9saW5rc0NoZWNrZWRGb3JWaXNpdGVkU3RhdGUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisgICAgZm9yIChFbGVtZW50KiBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RXaXRo
aW4obV9kb2N1bWVudCk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0
KGVsZW1lbnQpKSB7CisgICAgICAgIGlmIChlbGVtZW50LT5pc0xpbmsoKSkKKyAgICAgICAgICAg
IGVsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICB9Cit9CisKK2lubGluZSBzdGF0
aWMgTGlua0hhc2ggbGlua0hhc2hGb3JFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgRWxlbWVu
dCogZWxlbWVudCkKK3sKKyAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShhVGFnKSkKKyAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxBbmNob3JFbGVtZW50Kj4oZWxlbWVudCktPnZpc2l0
ZWRMaW5rSGFzaCgpOworICAgIGlmIChjb25zdCBBdG9taWNTdHJpbmcqIGF0dHIgPSBsaW5rQXR0
cmlidXRlKGVsZW1lbnQpKQorICAgICAgICByZXR1cm4gV2ViQ29yZTo6dmlzaXRlZExpbmtIYXNo
KGRvY3VtZW50LT5iYXNlVVJMKCksICphdHRyKTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBW
aXNpdGVkTGlua1N0YXRlOjppbnZhbGlkYXRlU3R5bGVzRm9yTGluayhMaW5rSGFzaCBsaW5rSGFz
aCkKK3sKKyAgICBpZiAoIW1fbGlua3NDaGVja2VkRm9yVmlzaXRlZFN0YXRlLmNvbnRhaW5zKGxp
bmtIYXNoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGZvciAoRWxlbWVudCogZWxlbWVudCA9IEVs
ZW1lbnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKG1fZG9jdW1lbnQpOyBlbGVtZW50OyBlbGVtZW50
ID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dChlbGVtZW50KSkgeworICAgICAgICBpZiAobGlua0hh
c2hGb3JFbGVtZW50KG1fZG9jdW1lbnQsIGVsZW1lbnQpID09IGxpbmtIYXNoKQorICAgICAgICAg
ICAgZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOworICAgIH0KK30KKworRUluc2lkZUxp
bmsgVmlzaXRlZExpbmtTdGF0ZTo6ZGV0ZXJtaW5lTGlua1N0YXRlU2xvd0Nhc2UoRWxlbWVudCog
ZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoZWxlbWVudC0+aXNMaW5rKCkpOworCisgICAgY29uc3Qg
QXRvbWljU3RyaW5nKiBhdHRyaWJ1dGUgPSBsaW5rQXR0cmlidXRlKGVsZW1lbnQpOworICAgIGlm
ICghYXR0cmlidXRlIHx8IGF0dHJpYnV0ZS0+aXNOdWxsKCkpCisgICAgICAgIHJldHVybiBOb3RJ
bnNpZGVMaW5rOworCisgICAgLy8gQW4gZW1wdHkgaHJlZiByZWZlcnMgdG8gdGhlIGRvY3VtZW50
IGl0c2VsZiB3aGljaCBpcyBhbHdheXMgdmlzaXRlZC4gSXQgaXMgdXNlZnVsIHRvIGNoZWNrIHRo
aXMgZXhwbGljaXRseSBzbworICAgIC8vIHRoYXQgdmlzaXRlZCBsaW5rcyBjYW4gYmUgdGVzdGVk
IGluIHBsYXRmb3JtIGluZGVwZW5kZW50IG1hbm5lciwgd2l0aG91dCBleHBsaWNpdCBzdXBwb3J0
IGluIHRoZSB0ZXN0IGhhcm5lc3MuCisgICAgaWYgKGF0dHJpYnV0ZS0+aXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gSW5zaWRlVmlzaXRlZExpbms7CisKKyAgICBMaW5rSGFzaCBoYXNoOworICAg
IGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKGFUYWcpKQorICAgICAgICBoYXNoID0gc3RhdGljX2Nh
c3Q8SFRNTEFuY2hvckVsZW1lbnQqPihlbGVtZW50KS0+dmlzaXRlZExpbmtIYXNoKCk7CisgICAg
ZWxzZQorICAgICAgICBoYXNoID0gV2ViQ29yZTo6dmlzaXRlZExpbmtIYXNoKGVsZW1lbnQtPmRv
Y3VtZW50KCktPmJhc2VVUkwoKSwgKmF0dHJpYnV0ZSk7CisKKyAgICBpZiAoIWhhc2gpCisgICAg
ICAgIHJldHVybiBJbnNpZGVVbnZpc2l0ZWRMaW5rOworCisgICAgRnJhbWUqIGZyYW1lID0gZWxl
bWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1
cm4gSW5zaWRlVW52aXNpdGVkTGluazsKKworICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgp
OworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIEluc2lkZVVudmlzaXRlZExpbms7CisK
KyAgICBtX2xpbmtzQ2hlY2tlZEZvclZpc2l0ZWRTdGF0ZS5hZGQoaGFzaCk7CisKKyNpZiBVU0Uo
UExBVEZPUk1fU1RSQVRFR0lFUykKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnZp
c2l0ZWRMaW5rU3RyYXRlZ3koKS0+aXNMaW5rVmlzaXRlZChwYWdlLCBoYXNoLCBlbGVtZW50LT5k
b2N1bWVudCgpLT5iYXNlVVJMKCksICphdHRyaWJ1dGUpID8gSW5zaWRlVmlzaXRlZExpbmsgOiBJ
bnNpZGVVbnZpc2l0ZWRMaW5rOworI2Vsc2UKKyAgICByZXR1cm4gcGFnZS0+Z3JvdXAoKS5pc0xp
bmtWaXNpdGVkKGhhc2gpID8gSW5zaWRlVmlzaXRlZExpbmsgOiBJbnNpZGVVbnZpc2l0ZWRMaW5r
OworI2VuZGlmCit9CisKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Zpc2l0
ZWRMaW5rU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaXNpdGVkTGlua1N0YXRlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNWEzODViNGQ5OWNkMzBmNDI0ZWIyMmNhNTVhYmU0NzZhOWY0NDNlNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaXNpdGVkTGlua1N0YXRlLmgKQEAgLTAs
MCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBr
ZGUub3JnKQorICogICAgICAgICAgIChDKSAyMDA0LTIwMDUgQWxsYW4gU2FuZGZlbGQgSmVuc2Vu
IChrZGVAY2FyZXdvbGYuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IE5pY2hvbGFz
IFNoYW5rcyAod2Via2l0QG5pY2tzaGFua3MuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDA1LCAy
MDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBBbGV4ZXkgUHJvc2t1cnlha292IDxhcEB3
ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEVyaWMgU2VpZGVsIDxlcmlj
QHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyAq
IENvcHlyaWdodCAoYykgMjAxMSwgQ29kZSBBdXJvcmEgRm9ydW0uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBWaXNpdGVkTGlua1N0YXRlX2gKKyNkZWZpbmUgVmlz
aXRlZExpbmtTdGF0ZV9oCisKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiTGlua0hh
c2guaCIKKyNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgorI2luY2x1ZGUgIlhMaW5r
TmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEb2N1bWVudDsKKworY2xhc3MgVmlz
aXRlZExpbmtTdGF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NPd25QdHI8VmlzaXRlZExpbmtTdGF0ZT4gY3JlYXRlKERvY3VtZW50Kik7
CisKKyAgICB2b2lkIGludmFsaWRhdGVTdHlsZXNGb3JBbGxMaW5rcygpOworICAgIHZvaWQgaW52
YWxpZGF0ZVN0eWxlc0ZvckxpbmsoTGlua0hhc2gpOworICAgIEVJbnNpZGVMaW5rIGRldGVybWlu
ZUxpbmtTdGF0ZShFbGVtZW50Kik7CisKK3ByaXZhdGU6CisgICAgVmlzaXRlZExpbmtTdGF0ZShE
b2N1bWVudCopOworCisgICAgRUluc2lkZUxpbmsgZGV0ZXJtaW5lTGlua1N0YXRlU2xvd0Nhc2Uo
RWxlbWVudCopOworCisgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisgICAgSGFzaFNldDxMaW5r
SGFzaCwgTGlua0hhc2hIYXNoPiBtX2xpbmtzQ2hlY2tlZEZvclZpc2l0ZWRTdGF0ZTsKK307CisK
K2lubGluZSBFSW5zaWRlTGluayBWaXNpdGVkTGlua1N0YXRlOjpkZXRlcm1pbmVMaW5rU3RhdGUo
RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQtPmlzTGlu
aygpKQorICAgICAgICByZXR1cm4gTm90SW5zaWRlTGluazsKKyAgICByZXR1cm4gZGV0ZXJtaW5l
TGlua1N0YXRlU2xvd0Nhc2UoZWxlbWVudCk7Cit9CisKK30KKworI2VuZGlmCisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCmluZGV4IGE4MTY5MDJlMGI2NTMwZGViZWZhMTQ5MGI1
NDNmMjEyNGZhZjBjOWEuLjI2MjAyNmZhNDhlYzllNWU1OTI1NjkyY2IxN2VhYTA4ODBlYmEzZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcApAQCAtMzMsNyArMzMsNyBAQAog
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWdl
LmgiCi0jaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgorI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3Rh
dGUuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZExlYWtDb3VudGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtODcs
MTAgKzg3LDggQEAgdm9pZCBDYWNoZWRQYWdlOjpyZXN0b3JlKFBhZ2UqIHBhZ2UpCiAgICAgfQog
CiAgICAgaWYgKG1fbmVlZFN0eWxlUmVjYWxjRm9yVmlzaXRlZExpbmtzKSB7Ci0gICAgICAgIGZv
ciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgICAgICBpZiAoU3R5bGVSZXNvbHZl
ciogc3R5bGVSZXNvbHZlciA9IGZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCkpCi0g
ICAgICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+YWxsVmlzaXRlZFN0YXRlQ2hhbmdlZCgpOwot
ICAgICAgICB9CisgICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7
IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKQorICAgICAgICAg
ICAgZnJhbWUtPmRvY3VtZW50KCktPnZpc2l0ZWRMaW5rU3RhdGUoKS0+aW52YWxpZGF0ZVN0eWxl
c0ZvckFsbExpbmtzKCk7CiAgICAgfQogCiAgICAgaWYgKG1fbmVlZHNGdWxsU3R5bGVSZWNhbGMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmgKaW5kZXggMDMzZTljMjQwMjY0
ZGIzY2VkZWM1MTdlOTVkMDdmMzZjNzMwN2VmYy4uZjBhZDViMDhlMGVkNzJlZGEwMWEzMzBmZjMz
OWJkNDllOTllNTBkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9y
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaApA
QCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc1JlbCh1aW50MzJfdCByZWxh
dGlvbikgY29uc3Q7CiAgICAgdm9pZCBzZXRSZWwoY29uc3QgU3RyaW5nJik7Ci0gICAgCisKICAg
ICBMaW5rSGFzaCB2aXNpdGVkTGlua0hhc2goKSBjb25zdDsKICAgICB2b2lkIGludmFsaWRhdGVD
YWNoZWRWaXNpdGVkTGlua0hhc2goKSB7IG1fY2FjaGVkVmlzaXRlZExpbmtIYXNoID0gMDsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAppbmRleCBlYTA4ZGU2ZDJmYzAxYWQyODNlZmMxZmQwM2FhZDc0Njkz
YjZhOWE2Li5mZmMyZmU5MDU4NmYwNzk4YTM5MTQ5MWUxNzBhY2UyYjEzNDFkY2UyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKQEAgLTY5LDggKzY5LDggQEAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
ICNpbmNsdWRlICJTdG9yYWdlQXJlYS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2UuaCIK
LSNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rl
ci5oIgorI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3RhdGUuaCIKICNpbmNsdWRlICJWb2lkQ2FsbGJh
Y2suaCIKICNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVk
ZSAiV2lkZ2V0LmgiCkBAIC05NDAsMTQgKzk0MCwxMiBAQCB2b2lkIFBhZ2U6OmFsbFZpc2l0ZWRT
dGF0ZUNoYW5nZWQoUGFnZUdyb3VwKiBncm91cCkKICAgICAgICAgUGFnZSogcGFnZSA9ICppdDsK
ICAgICAgICAgaWYgKHBhZ2UtPm1fZ3JvdXAgIT0gZ3JvdXApCiAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tX21haW5GcmFtZS5nZXQoKTsg
ZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAg
ICAgIGlmIChTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyID0gZnJhbWUtPmRvY3VtZW50KCkt
PnN0eWxlUmVzb2x2ZXIoKSkKLSAgICAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5hbGxWaXNp
dGVkU3RhdGVDaGFuZ2VkKCk7Ci0gICAgICAgIH0KKyAgICAgICAgZm9yIChGcmFtZSogZnJhbWUg
PSBwYWdlLT5tX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+
dHJhdmVyc2VOZXh0KCkpCisgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+dmlzaXRlZExp
bmtTdGF0ZSgpLT5pbnZhbGlkYXRlU3R5bGVzRm9yQWxsTGlua3MoKTsKICAgICB9CiB9CiAKLXZv
aWQgUGFnZTo6dmlzaXRlZFN0YXRlQ2hhbmdlZChQYWdlR3JvdXAqIGdyb3VwLCBMaW5rSGFzaCB2
aXNpdGVkTGlua0hhc2gpCit2b2lkIFBhZ2U6OnZpc2l0ZWRTdGF0ZUNoYW5nZWQoUGFnZUdyb3Vw
KiBncm91cCwgTGlua0hhc2ggbGlua0hhc2gpCiB7CiAgICAgQVNTRVJUKGdyb3VwKTsKICAgICBp
ZiAoIWFsbFBhZ2VzKQpAQCAtOTU4LDEwICs5NTYsOCBAQCB2b2lkIFBhZ2U6OnZpc2l0ZWRTdGF0
ZUNoYW5nZWQoUGFnZUdyb3VwKiBncm91cCwgTGlua0hhc2ggdmlzaXRlZExpbmtIYXNoKQogICAg
ICAgICBQYWdlKiBwYWdlID0gKml0OwogICAgICAgICBpZiAocGFnZS0+bV9ncm91cCAhPSBncm91
cCkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBh
Z2UtPm1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2
ZXJzZU5leHQoKSkgewotICAgICAgICAgICAgaWYgKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2
ZXIgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpKQotICAgICAgICAgICAgICAg
IHN0eWxlUmVzb2x2ZXItPnZpc2l0ZWRTdGF0ZUNoYW5nZWQodmlzaXRlZExpbmtIYXNoKTsKLSAg
ICAgICAgfQorICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1fbWFpbkZyYW1lLmdl
dCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkKKyAgICAg
ICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT52aXNpdGVkTGlua1N0YXRlKCktPmludmFsaWRhdGVT
dHlsZXNGb3JMaW5rKGxpbmtIYXNoKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180807</attachid>
            <date>2012-12-27 10:11:38 -0800</date>
            <delta_ts>2012-12-27 18:05:45 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-105752-20121227100850.patch</filename>
            <type>text/plain</type>
            <size>30585</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQxMzNhODNiMmE3OTkw
Nzg0MTI2OTY5NWQ2NGY4YzgyMzBiNjUwMS4uOWEwN2NiMGZmYWY5ZDVlYjA0NWU4NTEyZWNkMmY0
OWNmMGYwOTlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTEyLTI2ICBEaW1p
dHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTW92ZSB2aXNp
dGVkIGxpbmstY2hlY2tpbmcgKGFuZCBjYWNoaW5nKSBjb2RlIG91dCBvZiBTZWxlY3RvckNoZWNr
ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3
NTIKKworICAgICAgICBTZWxlY3RvckNoZWNrZXIga25ldyB0b28gbXVjaCBhYm91dCB2aXNpdGVk
IGxpbmtzIGFuZCBob3cgbGlua3MgYXJlIHN0b3JlZCBpbiBET00uIFRoaXMgY2hhbmdlCisgICAg
ICAgIG1vdmVzIHRoZSBjb2RlIHRvIG1vcmUgcmVsZXZhbnQgbG9jYXRpb25zIGFuZCBtb3ZlcyB0
aGUgdmlzaXRlZCBsaW5rcyBjYWNoZSBhbGwgdGhlIHdheSB1cCB0byBEb2N1bWVudCwKKyAgICAg
ICAgaW50cm9kdWNpbmcgVmlzaXRlZExpbmtTdGF0ZSBjbGFzcyB0byBtYW5hZ2UgdGhlIHN0YXRl
IG9mIHZpc2l0ZWQgbGlua3MuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8u
CisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRl
c3RzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGVkIFZpc2l0ZWRMaW5rU3RhdGUg
dG8gYnVpbGQgc3lzdGVtLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IERpdHRvLgor
ICAgICAgICAqIFRhcmdldC5wcmk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogRGl0
dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4K
KyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDogTW92ZWQgdmlzaXRlZC1saW5rIHN0
YXRlIGNvZGUgb3V0IHRvIFZpc2l0ZWRMaW5rU3RhdGUgY2xhc3MuCisgICAgICAgICogY3NzL1Nl
bGVjdG9yQ2hlY2tlci5oOiBEaXR0by4KKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjppbml0RWxlbWVudCk6IENoYW5nZWQg
Y2FsbHNpdGUgdG8gdXNlIFZpc2l0ZWRMaW5rU3RhdGUuCisgICAgICAgICogY3NzL1N0eWxlUmVz
b2x2ZXIuaDogUmVtb3ZlZCBwbHVtYi10aHJvdWdocyB0aGF0IGFyZSBub3cgdW5uZWNlc3Nhcnku
CisgICAgICAgICogZG9tL0RPTUFsbEluT25lLmNwcDogQWRkZWQgVmlzaXRlZExpbmtTdGF0ZSB0
byBidWlsZCBzeXN0ZW0uCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDogQWRkZWQgVmlzaXRl
ZExpbmtTdGF0ZSBpbml0YWxpemVyLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOiBBZGRlZCBW
aXNpdGVkTGlua1N0YXRlIG1lbWJlci4KKyAgICAgICAgKiBkb20vVmlzaXRlZExpbmtTdGF0ZS5j
cHA6IEFkZGVkLgorICAgICAgICAqIGRvbS9WaXNpdGVkTGlua1N0YXRlLmg6IEFkZGVkLgorICAg
ICAgICAqIGhpc3RvcnkvQ2FjaGVkUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRQ
YWdlOjpyZXN0b3JlKTogQ2hhbmdlZCBjYWxsc2l0ZSB0byB1c2UgVmlzaXRlZExpbmtTdGF0ZS4K
KyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWxsVmlz
aXRlZFN0YXRlQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dmlzaXRl
ZFN0YXRlQ2hhbmdlZCk6IERpdHRvLgorCiAyMDEyLTEyLTI3ICBIdWFuZyBEb25nc3VuZyAgPGx1
eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFtUZXhNYXBdIE1pbm9yIHJlZmFjdG9y
aW5nIG9mIFRleHR1cmVNYXBwZXJMYXllci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggODRhZTlh
MWRhM2ZkODFjMGQyMWIwNjkyZDExOWIyN2IzYmEwMTFmNC4uNDk0M2ZlNjZlMjdjMWVjOWZmODIw
ZmUwM2JhM2Q2ZmU1ZDNiNTA2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEyNDYsNiArMTI0
Niw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vVXNlckdlc3R1cmVJbmRpY2F0b3Iu
Y3BwCiAgICAgZG9tL1VzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmNwcAogICAgIGRvbS9WaWV3
cG9ydEFyZ3VtZW50cy5jcHAKKyAgICBkb20vVmlzaXRlZExpbmtTdGF0ZS5jcHAKICAgICBkb20v
V2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAKICAgICBkb20vV2ViS2l0QW5pbWF0aW9u
RXZlbnQuY3BwCiAgICAgZG9tL1dlYktpdE5hbWVkRmxvdy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCmluZGV4IDJmNzRkODhmY2IyMWQyNzQxMDE0ZDU0NWM3MzQ2ZDY4MjM3ZTI4NWYu
LjMyMWI2NjYyNDJhYjg5ZTcyNzc2NjFiMTdhMWM2NWQ0ODViNTg5N2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQpAQCAtMjk4OSw2ICsyOTg5LDggQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IuaCBcCiAJ
U291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9WaXNpdGVk
TGlua1N0YXRlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1Zpc2l0ZWRMaW5rU3RhdGUuaCBc
CiAJU291cmNlL1dlYkNvcmUvZG9tL1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9kb20vV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmlu
ZGV4IDBiNzY4NTNjM2JmYzc5MGY4MDYwODIyNmJkNDg5OGI3YzRmZDNkYzEuLmIyNDA2ODcwZWQy
MDExNTgzNjlmZDIxZWFiZWI5NzRkZjQxNmI1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNDcxLDYgKzQ3
MSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGRvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5jcHAgXAog
ICAgIGRvbS9Vc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5jcHAgXAogICAgIGRvbS9WaWV3cG9y
dEFyZ3VtZW50cy5jcHAgXAorICAgIGRvbS9WaXNpdGVkTGlua1N0YXRlLmNwcCBcCiAgICAgZG9t
L1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwIFwKICAgICBkb20vV2ViS2l0QW5pbWF0
aW9uRXZlbnQuY3BwIFwKICAgICBkb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggNmU2YWUyYjExMGI4NDg1YTQ1NDg0YzE3MzExMGU5Y2QzYzMxMjM4NS4u
NzM5YmMwYmM5NDJiZWI0NmI0OGQ4NmQ5ZjFhMjAwMzdkZWE5M2Y1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtMjk0NCw2ICsyOTQ0LDggQEAKICAgICAgICAgICAgICdkb20vVXNlckdlc3R1cmVJbmRp
Y2F0b3IuY3BwJywKICAgICAgICAgICAgICdkb20vVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3Iu
Y3BwJywKICAgICAgICAgICAgICdkb20vVmlld3BvcnRBcmd1bWVudHMuY3BwJywKKyAgICAgICAg
ICAgICdkb20vVmlzaXRlZExpbmtTdGF0ZS5jcHAnLAorICAgICAgICAgICAgJ2RvbS9WaXNpdGVk
TGlua1N0YXRlLmgnLAogICAgICAgICAgICAgJ2RvbS9XZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0
aW9uLmNwcCcsCiAgICAgICAgICAgICAnZG9tL1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24u
aCcsCiAgICAgICAgICAgICAnZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjZk
ZmQwYTdjZDQxMzYxNzE3YTFmZTRiMmQ3NmFkNTM0MGFjOGM5Yi4uZmU0Yjk5YWRjMTBhYjE2YjZm
N2RlOTE0OTIzMDlhMTE3ZGJhMGI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA5Miw2ICsxMDkyLDggQEAKIAkJNDE4QTA2
RDExMzNDMDRENTAwQ0QzNzlDIC8qIEV2ZW50RGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MThBMDZDRjEzM0MwNEQ1MDBDRDM3OUMg
LyogRXZlbnREaXNwYXRjaGVyLmNwcCAqLzsgfTsKIAkJNDE4Rjg4MDQwRkY5NTdBRTAwODBGMDQ1
IC8qIEpTQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE4Rjg4MDIwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3Jr
ZXIuY3BwICovOyB9OwogCQk0MThGODgwNTBGRjk1N0FGMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdv
cmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4
Rjg4MDMwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCAqLzsgfTsKKwkJNDE5
QkMyREUxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QkMyREMxNjg1MzI5OTAwRDY0
RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuY3BwICovOyB9OworCQk0MTlCQzJERjE2ODUzMjk5MDBE
NjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDE5QkMyREQxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5r
U3RhdGUuaCAqLzsgfTsKIAkJNDFBM0Q1OEUxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdv
cmtlclRocmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUEzRDU4QzEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNw
cCAqLzsgfTsKIAkJNDFBM0Q1OEYxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRo
cmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFB
M0Q1OEQxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5oICovOyB9Owog
CQk0MUJGNzAwQjBGRTg2RjQ5MDA1RThERUMgLyogTWVzc2FnZVBvcnRDaGFubmVsLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQkY3MDA5MEZFODZG
NDkwMDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5uZWwuY3BwICovOyB9OwpAQCAtODMyNiw2ICs4
MzI4LDggQEAKIAkJNDE4QTA2Q0YxMzNDMDRENTAwQ0QzNzlDIC8qIEV2ZW50RGlzcGF0Y2hlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudERpc3BhdGNoZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MThGODgwMjBGRjk1N0FFMDA4MEYw
NDUgLyogSlNBYnN0cmFjdFdvcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0Fic3RyYWN0V29ya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDE4Rjg4MDMwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBYnN0cmFjdFdvcmtlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MTlCQzJEQzE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExp
bmtTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaXNpdGVk
TGlua1N0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE5QkMyREQxNjg1
MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVmlzaXRlZExpbmtTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MUEzRDU4QzEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERlZGljYXRlZFdvcmtlclRo
cmVhZC5jcHA7IHBhdGggPSB3b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQTNENThEMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRp
Y2F0ZWRXb3JrZXJUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGVk
aWNhdGVkV29ya2VyVGhyZWFkLmg7IHBhdGggPSB3b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVh
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUJGNzAwOTBGRTg2RjQ5MDA1RThE
RUMgLyogTWVzc2FnZVBvcnRDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yMjI4NSw2ICsyMjI4OSw4IEBACiAJCQkJQkNERjMxN0ExMUY4RDY4MzAwM0M1QkY4
IC8qIFVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmggKi8sCiAJCQkJQ0VGNDE4Q0MxMTc5Njc4
QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRzLmNwcCAqLywKIAkJCQlDRUY0MThDRDExNzk2
NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuaCAqLywKKwkJCQk0MTlCQzJEQzE2ODUz
Mjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5jcHAgKi8sCisJCQkJNDE5QkMyREQxNjg1
MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuaCAqLywKIAkJCQlGM0JGQzlEMjE1QzE3
N0VDMDA0MjQ0RTUgLyogV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAgKi8sCiAJCQkJ
NEYzNzdGRjQxNUZBMzU2QTAwRTVENjBEIC8qIFdlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24u
aCAqLywKIAkJCQkzMUMwRkYxQjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZl
bnQuY3BwICovLApAQCAtMjU5OTIsNiArMjU5OTgsNyBAQAogCQkJCTBGQjg4OTBGMTY3RDMwMTYw
MDEwQ0RBNSAvKiBTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUxM0VGMzQ0MTY4NEVDRjQwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxNTA3MTU4MTY4NTA2NzMwMEMzQzdCMyAvKiBTZWxlY3RvckZpbHRl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE5QkMyREYxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0
ZWRMaW5rU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjkxMTIsNiArMjkxMTksNyBAQAogCQkJ
CTIwOUI0NTZCMTY3OTZBN0UwMEU1NEU0RSAvKiBKU0NyeXB0b0N1c3RvbS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFMTNFRjM0OTE2ODUwQzQ3MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE1MDcxNTcxNjg1MDY3MzAwQzNDN0Iz
IC8qIFNlbGVjdG9yRmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxOUJDMkRFMTY4NTMy
OTkwMEQ2NEQ2RCAvKiBWaXNpdGVkTGlua1N0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCA0MjFlYTkwYWI0MDc2YWM5NmJkMmM5
ZThkMmEyZDE3NzIxMjVkZjc2Li5iMmQ5YjkyOWVlODNmODhlNjIxNGUxZjk3Njc2ZDljNTQxZmIx
NzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAtMzUsNyArMzUs
NiBAQAogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKLSNpbmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxGcmFtZUVsZW1lbnRCYXNlLmgiCiAjaW5jbHVkZSAiSFRNTElucHV0
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtNDQsOSArNDMsNyBAQAogI2lu
Y2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKLSNpbmNsdWRlICJOb2RlVHJh
dmVyc2FsLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2lu
Y2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclNjcm9sbGJhci5oIgogI2lu
Y2x1ZGUgIlJlbmRlclN0eWxlLmgiCkBAIC01NiwxMiArNTMsNiBAQAogI2luY2x1ZGUgIlNpYmxp
bmdUcmF2ZXJzYWxTdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIlRleHQuaCIKLSNpbmNsdWRlICJYTGlua05hbWVzLmgiCi0KLSNpZiBVU0UoUExBVEZP
Uk1fU1RSQVRFR0lFUykKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKLSNpbmNsdWRl
ICJWaXNpdGVkTGlua1N0cmF0ZWd5LmgiCi0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC03Nyw1NiArNjgsNiBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tlcihEb2N1
bWVudCogZG9jdW1lbnQsIGJvb2wgc3RyaWN0UGFyc2luZykKIHsKIH0KIAotc3RhdGljIGlubGlu
ZSBjb25zdCBBdG9taWNTdHJpbmcqIGxpbmtBdHRyaWJ1dGUoRWxlbWVudCogZWxlbWVudCkKLXsK
LSAgICBpZiAoIWVsZW1lbnQtPmlzTGluaygpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAo
ZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpKQotICAgICAgICByZXR1cm4gJmVsZW1lbnQtPmZhc3RH
ZXRBdHRyaWJ1dGUoaHJlZkF0dHIpOwotICAgIGlmIChlbGVtZW50LT5pc1NWR0VsZW1lbnQoKSkK
LSAgICAgICAgcmV0dXJuICZlbGVtZW50LT5nZXRBdHRyaWJ1dGUoWExpbmtOYW1lczo6aHJlZkF0
dHIpOwotICAgIHJldHVybiAwOwotfQotCi1FSW5zaWRlTGluayBTZWxlY3RvckNoZWNrZXI6OmRl
dGVybWluZUxpbmtTdGF0ZVNsb3dDYXNlKEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Ci17Ci0gICAg
QVNTRVJUKGVsZW1lbnQtPmlzTGluaygpKTsKLQotICAgIGNvbnN0IEF0b21pY1N0cmluZyogYXR0
cmlidXRlID0gbGlua0F0dHJpYnV0ZShlbGVtZW50KTsKLSAgICBpZiAoIWF0dHJpYnV0ZSB8fCBh
dHRyaWJ1dGUtPmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gTm90SW5zaWRlTGluazsKLQotICAg
IC8vIEFuIGVtcHR5IGhyZWYgcmVmZXJzIHRvIHRoZSBkb2N1bWVudCBpdHNlbGYgd2hpY2ggaXMg
YWx3YXlzIHZpc2l0ZWQuIEl0IGlzIHVzZWZ1bCB0byBjaGVjayB0aGlzIGV4cGxpY2l0bHkgc28K
LSAgICAvLyB0aGF0IHZpc2l0ZWQgbGlua3MgY2FuIGJlIHRlc3RlZCBpbiBwbGF0Zm9ybSBpbmRl
cGVuZGVudCBtYW5uZXIsIHdpdGhvdXQgZXhwbGljaXQgc3VwcG9ydCBpbiB0aGUgdGVzdCBoYXJu
ZXNzLgotICAgIGlmIChhdHRyaWJ1dGUtPmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEluc2lk
ZVZpc2l0ZWRMaW5rOwotICAgIAotICAgIExpbmtIYXNoIGhhc2g7Ci0gICAgaWYgKGVsZW1lbnQt
Pmhhc1RhZ05hbWUoYVRhZykpIAotICAgICAgICBoYXNoID0gc3RhdGljX2Nhc3Q8SFRNTEFuY2hv
ckVsZW1lbnQqPihlbGVtZW50KS0+dmlzaXRlZExpbmtIYXNoKCk7Ci0gICAgZWxzZQotICAgICAg
ICBoYXNoID0gdmlzaXRlZExpbmtIYXNoKG1fZG9jdW1lbnQtPmJhc2VVUkwoKSwgKmF0dHJpYnV0
ZSk7Ci0KLSAgICBpZiAoIWhhc2gpCi0gICAgICAgIHJldHVybiBJbnNpZGVVbnZpc2l0ZWRMaW5r
OwotCi0gICAgRnJhbWUqIGZyYW1lID0gbV9kb2N1bWVudC0+ZnJhbWUoKTsKLSAgICBpZiAoIWZy
YW1lKQotICAgICAgICByZXR1cm4gSW5zaWRlVW52aXNpdGVkTGluazsKLQotICAgIFBhZ2UqIHBh
Z2UgPSBmcmFtZS0+cGFnZSgpOwotICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuIEluc2lk
ZVVudmlzaXRlZExpbms7Ci0KLSAgICBtX2xpbmtzQ2hlY2tlZEZvclZpc2l0ZWRTdGF0ZS5hZGQo
aGFzaCk7Ci0KLSNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKLSAgICByZXR1cm4gcGxhdGZv
cm1TdHJhdGVnaWVzKCktPnZpc2l0ZWRMaW5rU3RyYXRlZ3koKS0+aXNMaW5rVmlzaXRlZChwYWdl
LCBoYXNoLCBtX2RvY3VtZW50LT5iYXNlVVJMKCksICphdHRyaWJ1dGUpID8gSW5zaWRlVmlzaXRl
ZExpbmsgOiBJbnNpZGVVbnZpc2l0ZWRMaW5rOwotI2Vsc2UKLSAgICByZXR1cm4gcGFnZS0+Z3Jv
dXAoKS5pc0xpbmtWaXNpdGVkKGhhc2gpID8gSW5zaWRlVmlzaXRlZExpbmsgOiBJbnNpZGVVbnZp
c2l0ZWRMaW5rOwotI2VuZGlmCi19Ci0KIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVj
dG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgaXNGYXN0Q2hlY2th
YmxlU2VsZWN0b3IpIGNvbnN0CiB7CiAgICAgaWYgKGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yICYm
ICFlbGVtZW50LT5pc1NWR0VsZW1lbnQoKSkgewpAQCAtMTEwMSwzMSArMTA0Miw2IEBAIGJvb2wg
U2VsZWN0b3JDaGVja2VyOjpjaGVja1Njcm9sbGJhclBzZXVkb0NsYXNzKENTU1NlbGVjdG9yKiBz
ZWwpIGNvbnN0CiAgICAgfQogfQogCi12b2lkIFNlbGVjdG9yQ2hlY2tlcjo6YWxsVmlzaXRlZFN0
YXRlQ2hhbmdlZCgpCi17Ci0gICAgaWYgKG1fbGlua3NDaGVja2VkRm9yVmlzaXRlZFN0YXRlLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGZvciAoRWxlbWVudCogZWxlbWVudCA9IEVs
ZW1lbnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKG1fZG9jdW1lbnQpOyBlbGVtZW50OyBlbGVtZW50
ID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dChlbGVtZW50KSkgewotICAgICAgICBpZiAoZWxlbWVu
dC0+aXNMaW5rKCkpCi0gICAgICAgICAgICBlbGVtZW50LT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7
Ci0gICAgfQotfQotCi12b2lkIFNlbGVjdG9yQ2hlY2tlcjo6dmlzaXRlZFN0YXRlQ2hhbmdlZChM
aW5rSGFzaCB2aXNpdGVkSGFzaCkKLXsKLSAgICBpZiAoIW1fbGlua3NDaGVja2VkRm9yVmlzaXRl
ZFN0YXRlLmNvbnRhaW5zKHZpc2l0ZWRIYXNoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGZvciAo
RWxlbWVudCogZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKG1fZG9jdW1l
bnQpOyBlbGVtZW50OyBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dChlbGVtZW50KSkg
ewotICAgICAgICBMaW5rSGFzaCBoYXNoID0gMDsKLSAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1Rh
Z05hbWUoYVRhZykpCi0gICAgICAgICAgICBoYXNoID0gc3RhdGljX2Nhc3Q8SFRNTEFuY2hvckVs
ZW1lbnQqPihlbGVtZW50KS0+dmlzaXRlZExpbmtIYXNoKCk7Ci0gICAgICAgIGVsc2UgaWYgKGNv
bnN0IEF0b21pY1N0cmluZyogYXR0ciA9IGxpbmtBdHRyaWJ1dGUoZWxlbWVudCkpCi0gICAgICAg
ICAgICBoYXNoID0gdmlzaXRlZExpbmtIYXNoKG1fZG9jdW1lbnQtPmJhc2VVUkwoKSwgKmF0dHIp
OwotICAgICAgICBpZiAoaGFzaCA9PSB2aXNpdGVkSGFzaCkKLSAgICAgICAgICAgIGVsZW1lbnQt
PnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKLSAgICB9Ci19Ci0KIGJvb2wgU2VsZWN0b3JDaGVja2Vy
Ojpjb21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9yTWF0Y2hlcyhjb25zdCBFbGVtZW50KiBlbGVtZW50
LCBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IsIFZpc2l0ZWRNYXRjaFR5cGUgdmlzaXRlZE1h
dGNoVHlwZSkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNDb21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9y
KHNlbGVjdG9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVj
a2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKaW5kZXggODQ0NWM2
MjVjMDIwNzdjMWM2NjM1ZmQ4NmFjMjhmNWNjNjdlZjBkYS4uYzI4Y2YwNmM3YTA0ZWM5MzliZDU4
NWNjODU4NWNkNmI3MzVkYjI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVj
dG9yQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaApA
QCAtMzEsOCArMzEsNiBAQAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkNTU1Nl
bGVjdG9yLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVk
ZSAiTGlua0hhc2guaCIKLSNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1
ZGUgIlNwYWNlU3BsaXRTdHJpbmcuaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTg4LDEwICs4Niw2IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgYm9vbCBpc0Zhc3RDaGVja2FibGVTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3RvciopOwogICAg
IGJvb2wgZmFzdENoZWNrU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqLCBjb25zdCBFbGVtZW50
KikgY29uc3Q7CiAKLSAgICBFSW5zaWRlTGluayBkZXRlcm1pbmVMaW5rU3RhdGUoRWxlbWVudCop
IGNvbnN0OwotICAgIHZvaWQgYWxsVmlzaXRlZFN0YXRlQ2hhbmdlZCgpOwotICAgIHZvaWQgdmlz
aXRlZFN0YXRlQ2hhbmdlZChMaW5rSGFzaCB2aXNpdGVkSGFzaCk7Ci0KICAgICBEb2N1bWVudCog
ZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50OyB9CiAgICAgYm9vbCBzdHJpY3RQ
YXJzaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpY3RQYXJzaW5nOyB9CiAKQEAgLTExNSwyMiAr
MTA5LDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBmYXN0Q2hlY2tSaWdodG1vc3RTZWxlY3Rvcihj
b25zdCBDU1NTZWxlY3RvciosIGNvbnN0IEVsZW1lbnQqLCBWaXNpdGVkTWF0Y2hUeXBlKSBjb25z
dDsKICAgICBib29sIGNvbW1vblBzZXVkb0NsYXNzU2VsZWN0b3JNYXRjaGVzKGNvbnN0IEVsZW1l
bnQqLCBjb25zdCBDU1NTZWxlY3RvciosIFZpc2l0ZWRNYXRjaFR5cGUpIGNvbnN0OwogCi0gICAg
RUluc2lkZUxpbmsgZGV0ZXJtaW5lTGlua1N0YXRlU2xvd0Nhc2UoRWxlbWVudCopIGNvbnN0Owot
CiAgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CiAgICAgYm9vbCBtX3N0cmljdFBhcnNpbmc7CiAg
ICAgYm9vbCBtX2RvY3VtZW50SXNIVE1MOwogICAgIE1vZGUgbV9tb2RlOwotICAgIG11dGFibGUg
SGFzaFNldDxMaW5rSGFzaCwgTGlua0hhc2hIYXNoPiBtX2xpbmtzQ2hlY2tlZEZvclZpc2l0ZWRT
dGF0ZTsKIH07CiAKLWlubGluZSBFSW5zaWRlTGluayBTZWxlY3RvckNoZWNrZXI6OmRldGVybWlu
ZUxpbmtTdGF0ZShFbGVtZW50KiBlbGVtZW50KSBjb25zdAotewotICAgIGlmICghZWxlbWVudCB8
fCAhZWxlbWVudC0+aXNMaW5rKCkpCi0gICAgICAgIHJldHVybiBOb3RJbnNpZGVMaW5rOwotICAg
IHJldHVybiBkZXRlcm1pbmVMaW5rU3RhdGVTbG93Q2FzZShlbGVtZW50KTsKLX0KLQogaW5saW5l
IGJvb2wgU2VsZWN0b3JDaGVja2VyOjppc0NvbW1vblBzZXVkb0NsYXNzU2VsZWN0b3IoY29uc3Qg
Q1NTU2VsZWN0b3IqIHNlbGVjdG9yKQogewogICAgIGlmIChzZWxlY3Rvci0+bV9tYXRjaCAhPSBD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAK
aW5kZXggYzIxODVkYWQxYjMwOTk5NmY1YmMzZTMzNzk1ZTc4YmE2ZmQxYzQyMy4uMWM0MTBkYWNi
ODAzOGM1NjU3MTkwMjdkZmVjYjUxYzQwZGQ2YWIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcApAQCAtODgsNyArODgsNiBAQAogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5o
IgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgot
I2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBhaXIuaCIKICNpbmNsdWRlICJQZXJz
cGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIlF1b3Rlc0RhdGEuaCIKQEAg
LTEyNCw2ICsxMjMsNyBAQAogI2luY2x1ZGUgIlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5o
IgogI2luY2x1ZGUgIlVzZXJBZ2VudFN0eWxlU2hlZXRzLmgiCiAjaW5jbHVkZSAiVmlld3BvcnRT
dHlsZVJlc29sdmVyLmgiCisjaW5jbHVkZSAiVmlzaXRlZExpbmtTdGF0ZS5oIgogI2luY2x1ZGUg
IldlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJXZWJLaXRDU1NLZXlm
cmFtZVJ1bGUuaCIKICNpbmNsdWRlICJXZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmgiCkBAIC05NjQs
NyArOTY0LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6aW5pdEVsZW1lbnQoRWxlbWVu
dCogZSkKICAgICBpZiAobV9lbGVtZW50ICE9IGUpIHsKICAgICAgICAgbV9lbGVtZW50ID0gZTsK
ICAgICAgICAgbV9zdHlsZWRFbGVtZW50ID0gbV9lbGVtZW50ICYmIG1fZWxlbWVudC0+aXNTdHls
ZWRFbGVtZW50KCkgPyBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4obV9lbGVtZW50KSA6IDA7
Ci0gICAgICAgIG1fZWxlbWVudExpbmtTdGF0ZSA9IG1fY2hlY2tlci5kZXRlcm1pbmVMaW5rU3Rh
dGUobV9lbGVtZW50KTsKKyAgICAgICAgbV9lbGVtZW50TGlua1N0YXRlID0gZS0+ZG9jdW1lbnQo
KS0+dmlzaXRlZExpbmtTdGF0ZSgpLT5kZXRlcm1pbmVMaW5rU3RhdGUobV9lbGVtZW50KTsKICAg
ICAgICAgaWYgKGUgJiYgZSA9PSBlLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSkgewog
ICAgICAgICAgICAgZS0+ZG9jdW1lbnQoKS0+c2V0RGlyZWN0aW9uU2V0T25Eb2N1bWVudEVsZW1l
bnQoZmFsc2UpOwogICAgICAgICAgICAgZS0+ZG9jdW1lbnQoKS0+c2V0V3JpdGluZ01vZGVTZXRP
bkRvY3VtZW50RWxlbWVudChmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRl
eCBhYzkxNTA5OWEyZWZlZThiNWJkOTU0ODBiYzA1ODM0YjNlMzJlZWRkLi4yYmYzMmRhY2IzOGUx
NzY3MGJkMTI0ZDM1MjZjY2M4NTZkZTE2MWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmgKQEAgLTI2Myw5ICsyNjMsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNWaWV3cG9ydERlcGVu
ZGVudE1lZGlhUXVlcmllcygpIGNvbnN0IHsgcmV0dXJuICFtX3ZpZXdwb3J0RGVwZW5kZW50TWVk
aWFRdWVyeVJlc3VsdHMuaXNFbXB0eSgpOyB9CiAgICAgYm9vbCBhZmZlY3RlZEJ5Vmlld3BvcnRD
aGFuZ2UoKSBjb25zdDsKIAotICAgIHZvaWQgYWxsVmlzaXRlZFN0YXRlQ2hhbmdlZCgpIHsgbV9j
aGVja2VyLmFsbFZpc2l0ZWRTdGF0ZUNoYW5nZWQoKTsgfQotICAgIHZvaWQgdmlzaXRlZFN0YXRl
Q2hhbmdlZChMaW5rSGFzaCB2aXNpdGVkSGFzaCkgeyBtX2NoZWNrZXIudmlzaXRlZFN0YXRlQ2hh
bmdlZCh2aXNpdGVkSGFzaCk7IH0KLQogICAgIHZvaWQgYWRkS2V5ZnJhbWVTdHlsZShQYXNzUmVm
UHRyPFN0eWxlUnVsZUtleWZyYW1lcz4pOwogCiAgICAgYm9vbCBjaGVja1JlZ2lvblN0eWxlKEVs
ZW1lbnQqIHJlZ2lvbkVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RP
TUFsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKaW5kZXgg
NTlmNTliZWJjMTc5MDg5MDUzMTVhNDkyZjhmMGE5NjIxOTc2MGI3Ni4uNzJlNGE0ODU1ZmZmNGNk
YzNmY2UyZmY5MjE0MzBkMjQ4OTczN2NhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RPTUFsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3Bw
CkBAIC0xNDksNiArMTQ5LDcgQEAKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5jcHAi
CiAjaW5jbHVkZSAiVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IuY3BwIgogI2luY2x1ZGUgIlZp
ZXdwb3J0QXJndW1lbnRzLmNwcCIKKyNpbmNsdWRlICJWaXNpdGVkTGlua1N0YXRlLmNwcCIKICNp
bmNsdWRlICJXZWJLaXRBbmltYXRpb25FdmVudC5jcHAiCiAjaW5jbHVkZSAiV2ViS2l0TmFtZWRG
bG93LmNwcCIKICNpbmNsdWRlICJXZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggNTZjNzQzZmI2NmIzN2JkYWQ2NGNiNmNhNWE3ZDIxNzBkMzdlMDFk
MS4uYWU1NDJmNTY5MThlODUwY2EwYzRlMDBhMTcyZDM4ZTEyZjJkNzViYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCkBAIC0xNjEsNiArMTYxLDcgQEAKICNpbmNsdWRlICJUcmVlV2Fsa2VyLmgi
CiAjaW5jbHVkZSAiVXNlckFjdGlvbkVsZW1lbnRTZXQuaCIKICNpbmNsdWRlICJVc2VyQ29udGVu
dFVSTFBhdHRlcm4uaCIKKyNpbmNsdWRlICJWaXNpdGVkTGlua1N0YXRlLmgiCiAjaW5jbHVkZSAi
V2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIldlYktpdE5hbWVkRmxv
dy5oIgogI2luY2x1ZGUgIlhNTERvY3VtZW50UGFyc2VyLmgiCkBAIC00NDksNiArNDUwLDcgQEAg
RG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlz
WEhUTUwsIGJvb2wgaXNIVE1MKQogICAgICwgbV9tdXRhdGlvbk9ic2VydmVyVHlwZXMoMCkKICNl
bmRpZgogICAgICwgbV9zdHlsZVNoZWV0Q29sbGVjdGlvbihEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uOjpjcmVhdGUodGhpcykpCisgICAgLCBtX3Zpc2l0ZWRMaW5rU3RhdGUoVmlzaXRlZExp
bmtTdGF0ZTo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9yZWFkeVN0YXRlKENvbXBsZXRlKQogICAg
ICwgbV9zdHlsZVJlY2FsY1RpbWVyKHRoaXMsICZEb2N1bWVudDo6c3R5bGVSZWNhbGNUaW1lckZp
cmVkKQogICAgICwgbV9wZW5kaW5nU3R5bGVSZWNhbGNTaG91bGRGb3JjZShmYWxzZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKaW5kZXggNWIxOTRiOWNiNDFmMzE2ZDM4OWYyZjRlY2YxMDQ2MmY4NDg3MTc3
YS4uZTM5YjJkZGJiNjFmNWY4MWEwYjc0MjFmODFkOTQ2MTIyZWZlOTAxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKQEAgLTE0MCw2ICsxNDAsNyBAQCBjbGFzcyBTdHlsZVNoZWV0TGlzdDsKIGNsYXNz
IFRleHQ7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVHJlZVdhbGtlcjsKK2Ns
YXNzIFZpc2l0ZWRMaW5rU3RhdGU7CiBjbGFzcyBXZWJLaXROYW1lZEZsb3c7CiBjbGFzcyBYTUxI
dHRwUmVxdWVzdDsKIGNsYXNzIFhQYXRoRXZhbHVhdG9yOwpAQCAtNjcyLDcgKzY3Myw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlc2V0TGlua0NvbG9yKCk7CiAgICAgdm9pZCByZXNldFZpc2l0ZWRM
aW5rQ29sb3IoKTsKICAgICB2b2lkIHJlc2V0QWN0aXZlTGlua0NvbG9yKCk7Ci0gICAgCisgICAg
VmlzaXRlZExpbmtTdGF0ZSogdmlzaXRlZExpbmtTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlz
aXRlZExpbmtTdGF0ZS5nZXQoKTsgfQorCiAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0
cyBwcmVwYXJlTW91c2VFdmVudChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIGNvbnN0IExheW91dFBv
aW50JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAKICAgICAvKiBOZXdseSBwcm9wb3Nl
ZCBDU1MzIG1lY2hhbmlzbSBmb3Igc2VsZWN0aW5nIGFsdGVybmF0ZQpAQCAtMTM2NSw2ICsxMzY3
LDcgQEAgcHJpdmF0ZToKICAgICBDb2xvciBtX2xpbmtDb2xvcjsKICAgICBDb2xvciBtX3Zpc2l0
ZWRMaW5rQ29sb3I7CiAgICAgQ29sb3IgbV9hY3RpdmVMaW5rQ29sb3I7CisgICAgT3duUHRyPFZp
c2l0ZWRMaW5rU3RhdGU+IG1fdmlzaXRlZExpbmtTdGF0ZTsKIAogICAgIGJvb2wgbV9sb2FkaW5n
U2hlZXQ7CiAgICAgYm9vbCBtX3Zpc3VhbGx5T3JkZXJlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9WaXNpdGVkTGlua1N0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaXNp
dGVkTGlua1N0YXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDUwMjdlZGQ3MDU5ZTkwZTY2Yzk2NTljNjNi
NDE1ZmQzZDUyMTMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Zpc2l0
ZWRMaW5rU3RhdGUuY3BwCkBAIC0wLDAgKzEsMTM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAx
OTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDQtMjAw
NSBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gKGtkZUBjYXJld29sZi5jb20pCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYsIDIwMDcgTmljaG9sYXMgU2hhbmtzICh3ZWJraXRAbmlja3NoYW5rcy5jb20pCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFs
ZXhleSBQcm9za3VyeWFrb3YgPGFwQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcs
IDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAw
OCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3
dy50b3JjaG1vYmlsZS5jb20vKQorICogQ29weXJpZ2h0IChjKSAyMDExLCBDb2RlIEF1cm9yYSBG
b3J1bS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4g
TW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiVmlzaXRlZExpbmtTdGF0ZS5oIgorCisjaW5jbHVkZSAiRnJhbWUuaCIK
KyNpbmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgor
I2luY2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAi
UGFnZUdyb3VwLmgiCisKKyNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKKyNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaCIKKyNpbmNsdWRlICJWaXNpdGVkTGlua1N0cmF0ZWd5LmgiCisj
ZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OworCitpbmxpbmUgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyogbGlua0F0dHJpYnV0ZShFbGVt
ZW50KiBlbGVtZW50KQoreworICAgIGlmICghZWxlbWVudC0+aXNMaW5rKCkpCisgICAgICAgIHJl
dHVybiAwOworICAgIGlmIChlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkpCisgICAgICAgIHJldHVy
biAmZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmhyZWZBdHRyKTsKKyAgICBp
ZiAoZWxlbWVudC0+aXNTVkdFbGVtZW50KCkpCisgICAgICAgIHJldHVybiAmZWxlbWVudC0+Z2V0
QXR0cmlidXRlKFhMaW5rTmFtZXM6OmhyZWZBdHRyKTsKKyAgICByZXR1cm4gMDsKK30KKworUGFz
c093blB0cjxWaXNpdGVkTGlua1N0YXRlPiBWaXNpdGVkTGlua1N0YXRlOjpjcmVhdGUoRG9jdW1l
bnQqIGRvY3VtZW50KQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgVmlzaXRlZExpbmtTdGF0
ZShkb2N1bWVudCkpOworfQorCitWaXNpdGVkTGlua1N0YXRlOjpWaXNpdGVkTGlua1N0YXRlKERv
Y3VtZW50KiBkb2N1bWVudCkKKyAgICA6bV9kb2N1bWVudChkb2N1bWVudCkKK3sgfQorCit2b2lk
IFZpc2l0ZWRMaW5rU3RhdGU6OmludmFsaWRhdGVTdHlsZUZvckFsbExpbmtzKCkKK3sKKyAgICBp
ZiAobV9saW5rc0NoZWNrZWRGb3JWaXNpdGVkU3RhdGUuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisgICAgZm9yIChFbGVtZW50KiBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RX
aXRoaW4obV9kb2N1bWVudCk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpu
ZXh0KGVsZW1lbnQpKSB7CisgICAgICAgIGlmIChlbGVtZW50LT5pc0xpbmsoKSkKKyAgICAgICAg
ICAgIGVsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICB9Cit9CisKK2lubGluZSBz
dGF0aWMgTGlua0hhc2ggbGlua0hhc2hGb3JFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgRWxl
bWVudCogZWxlbWVudCkKK3sKKyAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShhVGFnKSkKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxBbmNob3JFbGVtZW50Kj4oZWxlbWVudCktPnZp
c2l0ZWRMaW5rSGFzaCgpOworICAgIGlmIChjb25zdCBBdG9taWNTdHJpbmcqIGF0dHIgPSBsaW5r
QXR0cmlidXRlKGVsZW1lbnQpKQorICAgICAgICByZXR1cm4gV2ViQ29yZTo6dmlzaXRlZExpbmtI
YXNoKGRvY3VtZW50LT5iYXNlVVJMKCksICphdHRyKTsKKyAgICByZXR1cm4gMDsKK30KKwordm9p
ZCBWaXNpdGVkTGlua1N0YXRlOjppbnZhbGlkYXRlU3R5bGVGb3JMaW5rKExpbmtIYXNoIGxpbmtI
YXNoKQoreworICAgIGlmICghbV9saW5rc0NoZWNrZWRGb3JWaXNpdGVkU3RhdGUuY29udGFpbnMo
bGlua0hhc2gpKQorICAgICAgICByZXR1cm47CisgICAgZm9yIChFbGVtZW50KiBlbGVtZW50ID0g
RWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4obV9kb2N1bWVudCk7IGVsZW1lbnQ7IGVsZW1l
bnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0KGVsZW1lbnQpKSB7CisgICAgICAgIGlmIChsaW5r
SGFzaEZvckVsZW1lbnQobV9kb2N1bWVudCwgZWxlbWVudCkgPT0gbGlua0hhc2gpCisgICAgICAg
ICAgICBlbGVtZW50LT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgfQorfQorCitFSW5zaWRl
TGluayBWaXNpdGVkTGlua1N0YXRlOjpkZXRlcm1pbmVMaW5rU3RhdGVTbG93Q2FzZShFbGVtZW50
KiBlbGVtZW50KQoreworICAgIEFTU0VSVChlbGVtZW50LT5pc0xpbmsoKSk7CisKKyAgICBjb25z
dCBBdG9taWNTdHJpbmcqIGF0dHJpYnV0ZSA9IGxpbmtBdHRyaWJ1dGUoZWxlbWVudCk7CisgICAg
aWYgKCFhdHRyaWJ1dGUgfHwgYXR0cmlidXRlLT5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIE5v
dEluc2lkZUxpbms7CisKKyAgICAvLyBBbiBlbXB0eSBocmVmIHJlZmVycyB0byB0aGUgZG9jdW1l
bnQgaXRzZWxmIHdoaWNoIGlzIGFsd2F5cyB2aXNpdGVkLiBJdCBpcyB1c2VmdWwgdG8gY2hlY2sg
dGhpcyBleHBsaWNpdGx5IHNvCisgICAgLy8gdGhhdCB2aXNpdGVkIGxpbmtzIGNhbiBiZSB0ZXN0
ZWQgaW4gcGxhdGZvcm0gaW5kZXBlbmRlbnQgbWFubmVyLCB3aXRob3V0IGV4cGxpY2l0IHN1cHBv
cnQgaW4gdGhlIHRlc3QgaGFybmVzcy4KKyAgICBpZiAoYXR0cmlidXRlLT5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBJbnNpZGVWaXNpdGVkTGluazsKKworICAgIExpbmtIYXNoIGhhc2g7Cisg
ICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoYVRhZykpCisgICAgICAgIGhhc2ggPSBzdGF0aWNf
Y2FzdDxIVE1MQW5jaG9yRWxlbWVudCo+KGVsZW1lbnQpLT52aXNpdGVkTGlua0hhc2goKTsKKyAg
ICBlbHNlCisgICAgICAgIGhhc2ggPSBXZWJDb3JlOjp2aXNpdGVkTGlua0hhc2goZWxlbWVudC0+
ZG9jdW1lbnQoKS0+YmFzZVVSTCgpLCAqYXR0cmlidXRlKTsKKworICAgIGlmICghaGFzaCkKKyAg
ICAgICAgcmV0dXJuIEluc2lkZVVudmlzaXRlZExpbms7CisKKyAgICBGcmFtZSogZnJhbWUgPSBl
bGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJl
dHVybiBJbnNpZGVVbnZpc2l0ZWRMaW5rOworCisgICAgUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdl
KCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gSW5zaWRlVW52aXNpdGVkTGluazsK
KworICAgIG1fbGlua3NDaGVja2VkRm9yVmlzaXRlZFN0YXRlLmFkZChoYXNoKTsKKworI2lmIFVT
RShQTEFURk9STV9TVFJBVEVHSUVTKQorICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
dmlzaXRlZExpbmtTdHJhdGVneSgpLT5pc0xpbmtWaXNpdGVkKHBhZ2UsIGhhc2gsIGVsZW1lbnQt
PmRvY3VtZW50KCktPmJhc2VVUkwoKSwgKmF0dHJpYnV0ZSkgPyBJbnNpZGVWaXNpdGVkTGluayA6
IEluc2lkZVVudmlzaXRlZExpbms7CisjZWxzZQorICAgIHJldHVybiBwYWdlLT5ncm91cCgpLmlz
TGlua1Zpc2l0ZWQoaGFzaCkgPyBJbnNpZGVWaXNpdGVkTGluayA6IEluc2lkZVVudmlzaXRlZExp
bms7CisjZW5kaWYKK30KKworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlz
aXRlZExpbmtTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Zpc2l0ZWRMaW5rU3RhdGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44ZjY0M2FmNTMwNWI5NmFmNmFiZmJmMDMzOTEwMmUyYmM3MTRlOTM5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Zpc2l0ZWRMaW5rU3RhdGUuaApAQCAt
MCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xs
QGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDQtMjAwNSBBbGxhbiBTYW5kZmVsZCBKZW5z
ZW4gKGtkZUBjYXJld29sZi5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgTmljaG9s
YXMgU2hhbmtzICh3ZWJraXRAbmlja3NoYW5rcy5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUs
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFsZXhleSBQcm9za3VyeWFrb3YgPGFw
QHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggRXJpYyBTZWlkZWwgPGVy
aWNAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQor
ICogQ29weXJpZ2h0IChjKSAyMDExLCBDb2RlIEF1cm9yYSBGb3J1bS4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFZpc2l0ZWRMaW5rU3RhdGVfaAorI2RlZmluZSBW
aXNpdGVkTGlua1N0YXRlX2gKKworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJMaW5r
SGFzaC5oIgorI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCisjaW5jbHVkZSAiWExp
bmtOYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL093blB0
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERvY3VtZW50OworCitjbGFzcyBW
aXNpdGVkTGlua1N0YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc093blB0cjxWaXNpdGVkTGlua1N0YXRlPiBjcmVhdGUoRG9jdW1lbnQq
KTsKKworICAgIHZvaWQgaW52YWxpZGF0ZVN0eWxlRm9yQWxsTGlua3MoKTsKKyAgICB2b2lkIGlu
dmFsaWRhdGVTdHlsZUZvckxpbmsoTGlua0hhc2gpOworICAgIEVJbnNpZGVMaW5rIGRldGVybWlu
ZUxpbmtTdGF0ZShFbGVtZW50Kik7CisKK3ByaXZhdGU6CisgICAgVmlzaXRlZExpbmtTdGF0ZShE
b2N1bWVudCopOworCisgICAgRUluc2lkZUxpbmsgZGV0ZXJtaW5lTGlua1N0YXRlU2xvd0Nhc2Uo
RWxlbWVudCopOworCisgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisgICAgSGFzaFNldDxMaW5r
SGFzaCwgTGlua0hhc2hIYXNoPiBtX2xpbmtzQ2hlY2tlZEZvclZpc2l0ZWRTdGF0ZTsKK307CisK
K2lubGluZSBFSW5zaWRlTGluayBWaXNpdGVkTGlua1N0YXRlOjpkZXRlcm1pbmVMaW5rU3RhdGUo
RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQtPmlzTGlu
aygpKQorICAgICAgICByZXR1cm4gTm90SW5zaWRlTGluazsKKyAgICByZXR1cm4gZGV0ZXJtaW5l
TGlua1N0YXRlU2xvd0Nhc2UoZWxlbWVudCk7Cit9CisKK30KKworI2VuZGlmCisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCmluZGV4IGE4MTY5MDJlMGI2NTMwZGViZWZhMTQ5MGI1
NDNmMjEyNGZhZjBjOWEuLjNkZGI4ZWEzZjEzY2FmZDczMmEwODc2ZDFkOTFiYWRlOTMyYzEyZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcApAQCAtMzMsNyArMzMsNyBAQAog
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWdl
LmgiCi0jaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgorI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3Rh
dGUuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZExlYWtDb3VudGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtODcs
MTAgKzg3LDggQEAgdm9pZCBDYWNoZWRQYWdlOjpyZXN0b3JlKFBhZ2UqIHBhZ2UpCiAgICAgfQog
CiAgICAgaWYgKG1fbmVlZFN0eWxlUmVjYWxjRm9yVmlzaXRlZExpbmtzKSB7Ci0gICAgICAgIGZv
ciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgICAgICBpZiAoU3R5bGVSZXNvbHZl
ciogc3R5bGVSZXNvbHZlciA9IGZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCkpCi0g
ICAgICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+YWxsVmlzaXRlZFN0YXRlQ2hhbmdlZCgpOwot
ICAgICAgICB9CisgICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7
IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKQorICAgICAgICAg
ICAgZnJhbWUtPmRvY3VtZW50KCktPnZpc2l0ZWRMaW5rU3RhdGUoKS0+aW52YWxpZGF0ZVN0eWxl
Rm9yQWxsTGlua3MoKTsKICAgICB9CiAKICAgICBpZiAobV9uZWVkc0Z1bGxTdHlsZVJlY2FsYykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGVhMDhkZTZkMmZjMDFhZDI4M2VmYzFmZDAzYWFkNzQ2OTNi
NmE5YTYuLjQyYzYwZjJjNmRhMjdhODdhMzQzMjM5ZTBhN2ZkYjkwNTFjODMzZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcApAQCAtNjksOCArNjksOCBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgog
I2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZS5oIgot
I2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVy
LmgiCisjaW5jbHVkZSAiVmlzaXRlZExpbmtTdGF0ZS5oIgogI2luY2x1ZGUgIlZvaWRDYWxsYmFj
ay5oIgogI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJXaWRnZXQuaCIKQEAgLTk0MCwxNCArOTQwLDEyIEBAIHZvaWQgUGFnZTo6YWxsVmlzaXRlZFN0
YXRlQ2hhbmdlZChQYWdlR3JvdXAqIGdyb3VwKQogICAgICAgICBQYWdlKiBwYWdlID0gKml0Owog
ICAgICAgICBpZiAocGFnZS0+bV9ncm91cCAhPSBncm91cCkKICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1fbWFpbkZyYW1lLmdldCgpOyBm
cmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgewotICAgICAgICAg
ICAgaWYgKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+
c3R5bGVSZXNvbHZlcigpKQotICAgICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPmFsbFZpc2l0
ZWRTdGF0ZUNoYW5nZWQoKTsKLSAgICAgICAgfQorICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9
IHBhZ2UtPm1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50
cmF2ZXJzZU5leHQoKSkKKyAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT52aXNpdGVkTGlu
a1N0YXRlKCktPmludmFsaWRhdGVTdHlsZUZvckFsbExpbmtzKCk7CiAgICAgfQogfQogCi12b2lk
IFBhZ2U6OnZpc2l0ZWRTdGF0ZUNoYW5nZWQoUGFnZUdyb3VwKiBncm91cCwgTGlua0hhc2ggdmlz
aXRlZExpbmtIYXNoKQordm9pZCBQYWdlOjp2aXNpdGVkU3RhdGVDaGFuZ2VkKFBhZ2VHcm91cCog
Z3JvdXAsIExpbmtIYXNoIGxpbmtIYXNoKQogewogICAgIEFTU0VSVChncm91cCk7CiAgICAgaWYg
KCFhbGxQYWdlcykKQEAgLTk1OCwxMCArOTU2LDggQEAgdm9pZCBQYWdlOjp2aXNpdGVkU3RhdGVD
aGFuZ2VkKFBhZ2VHcm91cCogZ3JvdXAsIExpbmtIYXNoIHZpc2l0ZWRMaW5rSGFzaCkKICAgICAg
ICAgUGFnZSogcGFnZSA9ICppdDsKICAgICAgICAgaWYgKHBhZ2UtPm1fZ3JvdXAgIT0gZ3JvdXAp
CiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdl
LT5tX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVy
c2VOZXh0KCkpIHsKLSAgICAgICAgICAgIGlmIChTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVy
ID0gZnJhbWUtPmRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXIoKSkKLSAgICAgICAgICAgICAgICBz
dHlsZVJlc29sdmVyLT52aXNpdGVkU3RhdGVDaGFuZ2VkKHZpc2l0ZWRMaW5rSGFzaCk7Ci0gICAg
ICAgIH0KKyAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tX21haW5GcmFtZS5nZXQo
KTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCisgICAgICAg
ICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+dmlzaXRlZExpbmtTdGF0ZSgpLT5pbnZhbGlkYXRlU3R5
bGVGb3JMaW5rKGxpbmtIYXNoKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>